Фильтрация оценочных гомографий RANSAC

10

Я использую алгоритм RANSAC для оценки гомографии между парами изображений, снятых камерами, которые не имеют никакого перевода между ними (чистое вращение и изменение масштаба / масштабирования). Это хорошо работает в половине случаев. Правильный вывод выглядит так:

введите описание изображения здесь

Красные линии - это фильтрованные соответствия, а четырехугольники показывают, как гомография искажает перспективу.

Однако иногда случается много плохих случаев, например:

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

У меня уже есть простой тест в цикле RANSAC. Он создает простой четырехугольник (единичный квадрат) и преобразует его с помощью примера преобразования. Затем выясняется, сохранилась ли трансформация своей выпуклости.

Тем не менее, однако, пучки вогнутых четырехугольников выходят.

Есть ли у вас какие-либо идеи, как правильно проверить гомографию, если она ведет себя «хорошо» и отфильтровывать неправильные решения?

Я нашел код, в котором они проверяют, что ни одна из трех преобразованных точек не является коллинеарной. Но этого недостаточно, поскольку он не отфильтровывает дельтовидные тела и другие «недействительные» четырехугольники ...

ЛИБОР
источник

Ответы:

4

Существует проблема в проверке, является ли гомография в порядке.

Алгоритм проверки правильности гомографий может кого-то заинтересовать, поэтому я запишу его здесь:

ABDC

A:(w/2,h/2,1.0)B:(w/2,h/2,1.0)C:(w/2,h/2,1.0)D:(w/2,h/2,1.0)

w,h

ABDCC=HC

uv

d1:A+(DA)s=A+usd2:B+(CB)t=B+vt

d1=d2

t=1d[(ByAy)ux(BxAx)uy]

s=1d[(AxBx)vy(AyBy)vx]

s,t(0,1)

s,t(λ,1.0λ)λ=0.01

Старая проблема, исправленная в приведенном выше алгоритме:

Я обнаружил здесь проблему - имея определенную гомографию, тест может пройти для меньшего четырехугольника, но не для большего. Вот почему некоторые "плохие" гомографии прошли.

Зеленый квадрат представляет исходное изображение, оранжевый - преобразованный. Как видите, левая выпуклая, но начинает деформироваться при увеличении источника:

введите описание изображения здесь

Наконец, еще больший источник дает не преобразованный четырехугольник:

введите описание изображения здесь

(x,y,w)xyw

Я исправил алгоритм соответственно.

ЛИБОР
источник
1

x_i \sim Hx_i^'\sum_{j=1\dots n}\|x_j - Hx_j^'\|H^'x^' = H^'x\sum_{j=1\dots n}\|x_j - Hx_j^'\| + \|x_j^' - H^'x\|

См. Хартли и Циссерман - Геометрия множественного обзора в Computer Vision, глава 4.2 и особенно 4.2.3 и уравнение (4.8).

buq2
источник
Отображаемые четырехугольники просто вставлены туда. Я уверен насчет соответствий, так как подгонка очень хорошая. Я использовал нормализованный алгоритм DLT, предложенный Хартли и Циссерманом, а затем использовал итеративное уточнение и согласованное сопоставление, как вы упомянули.
Libor
Но подгонка омографии не может быть , что хорошо , как и в первой картине есть две группы точек: из них на многоквартирном доме (которые, вероятно , в одной плоскости) , и те , на деревьях (которые , вероятно , даже не на один и тот же самолет внутри своей группы). Вы уверены, что не хотели использовать фундаментальную матрицу?
buq2
Линии соединяют соответствующие точки, и я проверил их все - когда изображения выровнены, все они встречаются. Когда я исключаю плохо совпадающие пары изображений, это приводит к хорошей панораме.
Либор
Изображения сделаны с помощью вращающейся камеры, поэтому может показаться, что плоскости меняются, но поскольку камеры вращаются вокруг оптического центра, я почти уверен, что гомография оценена. Я даже могу вычислить фокусное расстояние и матрицу вращения из него. Но проблема где-то еще, причуду в моем программном обеспечении я должен найти ...
Libor
Ааа, вы не включили информацию о том, что между камерами нет перевода. Тогда вы правы и гомография описывает трансформацию между изображениями.
buq2