Расчет гомографии на основе обнаруженных линий

12

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

Я делаю это для футбольного поля / поля и использую обнаружение краев, чтобы найти белые линии на поле.

Но камера (не всегда) покрывает все поле, поэтому я не могу видеть все углы ... и я только на углах на 100% известных точек в модели (других отличительных точек нет).

Так что проблема в том, что если линия не пересекается с другой линией и не образует угол, я знаю только точки изображения линии, а не соответствующие ей координаты "идеальный / реальный" в модели.

Можно ли каким-то образом использовать обнаруженные линии для вычисления гомографии или даже просто набор кандидатских гомографий , даже если обнаруженные линии не пересекаются друг с другом и создают угол?

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

введите описание изображения здесь Красные линии - примеры линий, которые я хотел бы использовать, но я не знаю их координат в реальном мире, и их довольно сложно оценить, потому что в зависимости от положения камеры соответствующие точки могут быть «где угодно».

Хенрик Кюс Алстад
источник
2
У вас есть примеры изображений? Или хотя бы набросок возможных случаев обнаружения линии? Я думаю, что краткий ответ на ваш вопрос «да, вы можете», но более подробная информация от вас поможет дать более подробный ответ :)
Пенелопа
2
Можете ли вы привести пример изображения? Вы говорите, что обнаруженные сегменты линий не пересекаются, или вы пытались расширить обнаруженные сегменты до линий, а затем пытались найти пересечения?
ppalasek
3
Я добавил пример изображения к вопросу
Хенрик Кьюс Алстад
1
Вы когда-нибудь понимали это? Я тоже заинтересован в результатах.

Ответы:

3

Я объясню два подхода к этому:

1) Один из подходов требует алгоритма сопоставления строк. После сопоставления линий вы можете просто использовать конечные точки линий для вычисления гомографии. Для достижения этого в OpenCV недавно были предложены дескрипторы на основе EDLine или LSD. Также реализовано хеширование и быстрое их сопоставление. Проверьте видео здесь:

http://www.youtube.com/watch?v=MqMjvSkM39k

http://www.youtube.com/watch?v=naSWTlbg3To

Последний репозиторий opencv_contrib содержит исходный код для этих методов.

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

Внутренний отчет: 2005-V04 Вычислительные гомографии из трех линий или точек в паре изображений Дж. Лопес-Николас, Дж. Дж. Герреро, О. А. Пелледжеро, К. Сигс

Внутренний отчет: 2003-V01 Надежное сопоставление линий и оценка гомографий одновременно Г. Лопес-Николас

Вероятностное сопоставление линий для их гомографии Таэмин Ким, Джихван Ву и Ин Со Квеон

2) Здесь есть один метод, специфичный для полей:

« Использование линейных и эллиптических функций для выпрямления трансляционного хоккейного видео », Гупта, Анкур, Джеймс Дж. Литтл и Роберт Дж. Вудхэм Компьютерное и роботизированное видение (CRV), Канадская конференция 2011 года. IEEE, 2011.

и

« Объединение линейных и точечных соответствий для оценки гомографии », Дуброфски, Элан и Роберт Дж. Вудхем . Международный симпозиум по визуальным вычислениям. Springer Berlin Heidelberg, 2008.

li=(u,v,1)Tli=(x,y,1)T

li=HTli

В этой форме уравнение может быть непосредственно включено в метод DLT:

Ai=[u0uxv0vx10x0uuy0vvy01y]

Единственная разница - нормализация, которую вы найдете в ссылках выше.

xCxTCx=0

C=HTCH1

Приведенные выше ссылки также объясняют, как вставить это ограничение в алгоритм DLT.

Используя эллипсы и линии, можно получить устойчивые проективные отношения.

Толга Бердал
источник
2

Если линии не параллельны, вы можете рассчитать точку их пересечения и использовать ее в качестве ориентира. В вашей картине вы также можете использовать фиолетовые точки:

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

Кстати, пересечение линий не обязательно должно быть на изображении. Пока линии параллельны

Если линии параллельны, вы можете использовать их для получения дополнительных ограничений. Например, если у вас N <4 точек и K линий, вы можете оценить преобразование

Напомним, что уравнение проективного преобразования имеет вид:

x=(a11x+a12y+a13)(a31x+a32y+1)y=(a21x+a22y+a23)(a31x+a32y+1)

a11,a12,a13,a21,a22,a23,a31,a32

ax+by+c=0Ax+By+C

Ax+By+C=0A(a21x+a22y+a23)+B(a21x+a22y+a23)+C(a31x+a32y+1)=0

Это может быть переписано как:

(AxAyABxByBCxCy)(a11a12a13a21a22a23a31a32)=C

A,B,C(x,y)ax+by+c=0

Дополнительные ссылки « Оценка гомографии по Элану Дубровскому » - см. Часть 2.3.1, оценка гомографии по линиям.

Андрей Рубштейн
источник