Фільтрація оцінюваних гомографій RANSAC


10

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

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

Червоні лінії є відфільтрованими відповідностями, а чотирикутники ілюструють, як гомографія спотворює перспективу.

Однак іноді трапляється багато поганих випадків, таких як:

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

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

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

У мене вже є простий тест в циклі RANSAC. Він складає простий чотирикутник (одиничний квадрат) і перетворює його на зразок перетворення. Потім виглядає, чи зберегла трансформація свою опуклість.

Однак все ж виходять пучки увігнутих чотирикутників.

Чи маєте ви якесь уявлення, як правильно перевірити гомографію, якщо вона поводиться «красиво» і відфільтрувати неправильні рішення?

Я знайшов якийсь код, де вони перевіряють, що жодна з трьох перетворених точок не є колінеарною. Але це не здається достатнім, оскільки воно не відфільтрує дельтоїди та інші "недійсні" чотирикутники ...

Відповіді:



4

Виникла проблема з перевіркою, чи нормально гомографія.

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

1) Створіть чотирикутник з вершинними координатами (в однорідних координатах):АБDС

А:(-ш/2,-год/2,1,0)Б:(ш/2,-год/2,1,0)С:(-ш/2,год/2,1,0)D:(ш/2,год/2,1,0)

ш,год

А'Б'D'С'С'=НС

уv

г1:А+(D-А)с=А+усг2:Б+(С-Б)т=Б+vт

г1=г2

т=1г[(Бу-Ау)ух-(Бх-Ах)уу]

с=1г[(Ах-Бх)vу-(Ау-Бу)vх]

с,т(0,1)

с,т(λ,1,0-λ)λ=0,01

Старіша проблема, виправлена ​​у наведеному вище алгоритмі:

Я знайшов тут проблему - маючи певну гомографію, тест може пройти для меншого чотирикутника, але не для більшого. Ось чому пройшли деякі «хворі» гомографії.

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

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

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

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

(х,у,ш)хуш

Я відповідно виправив алгоритм.


1

x_i \ sim Hx_i ^ '\ sum_ {j = 1 \ крапки n} \ | x_j - Hx_j ^ '\ |Н ^ 'x ^ '= H ^' x\ sum_ {j = 1 \ крапки n} \ | x_j - Hx_j ^ '\ | + \ | x_j ^ '- H ^' x \ |

Див. Хартлі та Зіссерман - Геометрія множинного перегляду на комп'ютерному зорі, розділ 4.2, а особливо 4.2.3 та рівняння (4.8).


Тут відображаються чотирикутники. Я впевнений, що стосується листувань, оскільки це дуже добре. Я використав нормалізований алгоритм DLT, запропонований Hartley & Zisserman, а потім застосував ітераційне уточнення та керовану відповідність, як ви згадали.
Libor

Але придатність гомографії не може бути такою хорошою, оскільки на першому малюнку є дві групи точок: ті, що стоять у багатоквартирному будинку (які, мабуть, на одній площині) і ті на деревах (яких, мабуть, навіть немає на однакова площина всередині власної групи). Ви впевнені, що не хотіли використовувати фундаментальну матрицю?
buq2

Рядки з'єднують відповідні точки, і я перевіряв їх усі - коли зображення вирівнюються, всі вони відповідають. Коли я виключаю нерівні пари зображень, це призводить до гарної панорами.
Libor

Зображення зроблені за допомогою обертової камери, тому може здатися, що площини змінюються, але оскільки камери обертаються навколо оптичного центру, я впевнений, що оцінюється гомографія. Я навіть можу обчислити фокусну відстань та матрицю обертання. Але проблема в іншому місці, дивак у моєму програмному забезпеченні я мушу знайти ...
Libor

Ах, ви не включили інформацію про те, що між камерами немає перекладу. Тоді ви маєте рацію, і гомографія описує перетворення між образами.
buq2
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.