Obliczanie homografii na podstawie wykrytych linii

12

Wiem, że możesz obliczyć homografie od obrazu do płaszczyzny kamery, używając punktów korespondencyjnych między „modelem idealnym” a punktami obrazu.

Robię to na boisku / boisku piłkarskim i wykorzystałem wykrywanie krawędzi, aby znaleźć białe linie na boisku.

Ale kamera nie (zawsze) pokrywa całe boisko, więc nie widzę wszystkich narożników ... a ja tylko narożniki są w 100% znanymi punktami w modelu (żadnych innych wyróżnionych punktów).

Problem polega na tym, że jeśli linia nie przecina się z inną linią i nie tworzy narożnika, znam tylko punkty obrazowe linii, a nie odpowiednie współrzędne „idealne / rzeczywiste” w modelu.

Czy jest jakiś sposób, w jaki mogę użyć wykrytych linii do obliczenia homografii, a nawet tylko zestawu kandydatów , nawet jeśli wykryte linie nie przecinają się ze sobą i nie tworzą rogu?

Przykładowy obraz przedstawiający wysokość tonu, nasze pole widzenia i punkty wysokości, w których mogę poznać odpowiednie współrzędne świata rzeczywistego / modelu (zielone kółka), oraz przykład 2 linii, które mogą być całkowicie bezużyteczne, ponieważ w naszym polu widzenia , Nie mam pojęcia, w którym momencie zaczynają lub kończą w odpowiednim świecie / modelu boiska:

wprowadź opis zdjęcia tutaj Czerwone linie są przykładami linii, których chciałbym użyć, ale nie znam ich współrzędnych w świecie rzeczywistym i trudno jest je oszacować, ponieważ w zależności od pozycji kamery odpowiednie punkty mogą być „w dowolnym miejscu”.

Henrik Kjus Alstad
źródło
2
Czy masz jakieś przykładowe obrazy? A przynajmniej szkic możliwych przypadków wykrywania linii? Myślę, że krótka odpowiedź na twoje pytanie brzmi: „tak, możesz”, ale więcej szczegółów od ciebie pomogłoby dać bardziej szczegółową odpowiedź :)
penelope
2
Czy możesz podać przykładowy obraz? Czy mówisz, że wykryte segmenty linii nie przecinają się, czy próbowałeś rozszerzyć wykryte segmenty na linie, a następnie próbowałeś znaleźć przecięcia?
ppalasek
3
Do pytania dodałem przykładowy obraz
Henrik Kjus Alstad
1
Czy kiedykolwiek to rozgryzłeś? Interesują mnie również wyniki.

Odpowiedzi:

3

Wyjaśnię dwa podejścia do tego:

1) Jedno podejście wymagałoby algorytmu dopasowania linii. Po dopasowaniu linii możesz po prostu użyć punktów końcowych linii w celu obliczenia homografii. Aby to osiągnąć, w OpenCV zaproponowano ostatnio deskryptory oparte na EDLine lub LSD. Zaimplementowane są również skróty i szybkie ich dopasowywanie. Sprawdź filmy tutaj:

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

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

Ostatnie repozytorium opencv_contrib zawiera kod źródłowy tych metod.

W przypadku, gdy punkty końcowe linii są hałaśliwe, możesz następnie bezpośrednio użyć linii do obliczenia homografii. Takie artykuły brzmiałyby wówczas:

Raport wewnętrzny: 2005-V04 Obliczanie homografii z trzech linii lub punktów w parze obrazu G. Lopez-Nicolas, JJ Guerrero, OA Pellejero, C. Sagues

Raport wewnętrzny: 2003-V01 Solidne dopasowanie linii i ocena homografii jednocześnie G. Lopez-Nicolas

Probabilistyczne dopasowanie linii do ich homografii Taemin Kim, Jihwan Woo i In So Kweon

2) Istnieje jedna metoda specyficzna dla pól podanych tutaj:

Korzystanie z funkcji linii i elipsy do naprawy wideo z hokeja na żywo .”, Gupta, Ankur, James J. Little i Robert J. Woodham Computer and Robot Vision (CRV), kanadyjska konferencja 2011 r. IEEE, 2011.

i

Łączenie korespondencji liniowych i punktowych do oceny homografii .”, Dubrofsky, Elan i Robert J. Woodham . Międzynarodowe sympozjum na temat obliczeń wizualnych. Springer Berlin Heidelberg, 2008.

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

li=HTli

W tej formie równanie można podłączyć bezpośrednio do metody DLT:

Ai=[u0uxv0vx10x0uuy0vvy01y]

Jedyną różnicą jest normalizacja, którą znajdziesz w odnośnikach powyżej.

xCxTCx=0

C=HTCH1

Odnośniki powyżej wyjaśniają również, jak wstawić to ograniczenie do algorytmu DLT.

Za pomocą elips i linii można uzyskać solidną relację rzutową.

Tolga Birdal
źródło
„Powyższe odniesienia wyjaśniają również, jak wstawić to ograniczenie do algorytmu DLT.”, Które z nich to wyjaśnia? Cytujesz jak 7 źródeł!
nbro
2

Jeśli linie nie są równoległe, możesz obliczyć punkt ich przecięcia i użyć go jako punktu odniesienia. W swoim obrazie możesz również użyć fioletowych punktów:

wprowadź opis zdjęcia tutaj

Nawiasem mówiąc, przecięcie linii nie musi znajdować się na obrazie. Tak długo, jak linie są równoległe

Jeśli linie są równoległe, możesz ich użyć, aby uzyskać dodatkowe ograniczenia. Na przykład, jeśli masz N <4 punktów i K linii, możesz być w stanie oszacować transformację

Przypomnijmy, że równanie transformacji rzutowej jest następujące:

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

Można go ponownie zapisać jako:

(AxAyABxByBCxCy)(a11a12a13a21a22a23a31a32)=C

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

Dodatkowe odniesienia „ Ocena homografii przez Elana Dubrowskiego ” - Patrz część 2.3.1, ocena homografii z linii.

Andrey Rubshtein
źródło