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:
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”.
źródło
Odpowiedzi:
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:
2) Istnieje jedna metoda specyficzna dla pól podanych tutaj:
i
W tej formie równanie można podłączyć bezpośrednio do metody DLT:
Jedyną różnicą jest normalizacja, którą znajdziesz w odnośnikach powyżej.
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ą.
źródło
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:
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:
Można go ponownie zapisać jako:
Dodatkowe odniesienia „ Ocena homografii przez Elana Dubrowskiego ” - Patrz część 2.3.1, ocena homografii z linii.
źródło