Użyłem API OpenCV cv::findHomography
do kaculacji macierzy homograficznej dwóch płaskich obrazów. Dopasowane kluczowe punkty są wyodrębniane przez SIFT i dopasowywane przez BFMatcher. Jak wiem, cv:findHomography
używają iteracji RANSAC do znalezienia najlepszych czterech odpowiadających punktów, aby uzyskać matrycę do homografii. Tak więc rysuję wybrane cztery pary punktów za pomocą obliczonego konturu przy użyciu macierzy homograhy krawędzi obiektu. Rezultatem są jako linki:jak poprawić dokładność homografii?
http://postimg.org/image/5igwvfrx9/
Jak widzimy, wybrany dopasowane punkty RANSAC są poprawne, ale pokazuje, że kontur homography nie jest dokładna.
Ale to badanie pokazuje, że zarówno wybrany dopasowane punkty i homography są poprawne:
http://postimg.org/image/dvjnvtm53/
Domyślam się, że jeśli wybrany dopasowane punkty są zbyt blisko, mały błąd położenia piksela doprowadzi do znaczącego błędu macierzy homografii. Jeśli cztery punkty znajdują się w rogu obrazu, przesunięcie dopasowanych punktów o 4-6 pikseli nadal ma dobrą matrycę do homografii. (zgodnie współrzędne jednorodne, myślę, że jest to uzasadnione, ponieważ mały błąd w najbliższym samolotem będą wzmacniane w daleko)
Moje pytanie brzmi:
1.Czy moje prawo domysły? 2. Ponieważ cztery dopasowane punkty są generowane przez iterację RANSAC, ogólny błąd wszystkich punktów końcowych jest minimalny. Ale jak uzyskać stabilną homografię, przynajmniej sprawić, aby mapowanie konturu było prawidłowe? Teoria udowodniła, że jeśli znaleziono cztery odpowiadające punkty w płaszczyźnie, należy obliczyć macierz homograficzną, ale czy istnieje jakakolwiek sztuczka w pracy inżyniera?
Dziękuję.
znalazłeś jakieś rozwiązanie lub jakieś wyjaśnienie? Mam ten sam problem – MMH