Właśnie studiowałem SURF i zamierzam go wdrożyć, ale nadal nie rozumiałem, dlaczego używamy deskryptorów.
Rozumiem, jakie są kluczowe punkty i jakie są ich cele, ale kiedy je wydobywamy, to dlaczego musimy używać deskryptorów? Jakie jest ich znaczenie i rola w uznaniu?
Odpowiedzi:
Jedną ważną rzeczą do zrozumienia jest to, że po wyodrębnieniu punktów kluczowych uzyskujesz tylko informacje o ich położeniu , a czasami o ich obszarze pokrycia (zwykle przybliżonym przez okrąg lub elipsę) na obrazie. Podczas gdy informacja o kluczowej pozycji mogą czasem być przydatne, nie mówią wiele o samych kluczowych punktach.
W zależności od algorytmu użytego do wyodrębnienia punktu kluczowego (SIFT, narożniki Harrisa, MSER) poznasz niektóre ogólne cechy wyodrębnionych punktów kluczowych (np. Są one wyśrodkowane wokół kropek, krawędzi, widocznych narożników ...), ale nie będziesz wiedział, jak różne lub podobny jeden klucz jest inny.
Oto dwa proste przykłady, w których tylko pozycja i obszar klucza nie pomoże nam:
Jeśli masz obraz A (niedźwiedzia na białym tle) i inny obraz B, dokładna kopia A, ale przetłumaczona na kilka pikseli: wyodrębnione punkty kluczowe będą takie same (na tej samej części tego niedźwiedzia). Te dwa obrazy należy rozpoznać jako takie same lub podobne.
Ale jeśli jedyną dostępną nam informacją jest ich pozycja, która zmieniła się z powodu tłumaczenia, nie możesz porównać zdjęć.
Jeśli masz obraz A (powiedzmy, tym razem kaczki) i inny obraz B, dokładnie taka sama kaczka jak w A, z wyjątkiem dwukrotnego rozmiaru: wyodrębnione punkty kluczowe będą takie same (te same części kaczki). Są to również te same (podobne) obrazy.
Ale wszystkie ich rozmiary (obszary) będą różne: wszystkie punkty kluczowe z obrazu B będą dwa razy większe niż te z obrazu A.
A więc nadchodzą deskryptory : są sposobem na porównanie kluczowych punktów. Podsumowują w formacie wektorowym (o stałej długości) pewne cechy charakterystyczne punktów kluczowych. Na przykład może to być ich intensywność w kierunku ich najbardziej wyraźnej orientacji. Przypisuje numeryczny opis do obszaru obrazu, do którego odnosi się punkt kluczowy.
Niektóre ważne rzeczy dotyczące deskryptorów to:
powinny być niezależne od kluczowych pozycji
Jeśli ten sam punkt kluczowy zostanie wyodrębniony w różnych pozycjach (np. Z powodu tłumaczenia), deskryptor powinien być taki sam.
powinny być odporne na transformację obrazu
Niektóre przykłady to zmiany kontrastu (np. Obraz tego samego miejsca w słoneczny i pochmurny dzień) i zmiany perspektywy (obraz budynku ze środkowej prawej i środkowej lewej, nadal chcielibyśmy rozpoznać go jako ten sam budynek) .
Oczywiście żaden deskryptor nie jest całkowicie odporny na wszystkie transformacje (ani na żaden pojedynczy, jeśli jest silny, np. Duża zmiana perspektywy).
Różne deskryptory są zaprojektowane tak, aby były odporne na różne transformacje, co czasami jest sprzeczne z szybkością potrzebną do ich obliczenia.
powinny być niezależne od skali
Deskryptory powinny uwzględniać skalę. Jeśli „widoczna” część jednego klucza jest pionową linią 10 pikseli (wewnątrz okrągłego obszaru o promieniu 8 pikseli), a widoczna część innej pionowej linii 5 pikseli (wewnątrz okrągłego obszaru o promieniu 4 pikseli) - tym kluczowym punktom należy przypisać podobne deskryptory.
Teraz, gdy obliczyłeś deskryptory dla całego keypoinst, masz sposób na porównanie tych kluczowych punktów . Dla prostego przykładu dopasowania obrazu (gdy wiesz, że obrazy są z tego samego obiektu i chciałbyś zidentyfikować części na różnych obrazach, które przedstawiają tę samą część sceny, lub chciałbyś zidentyfikować zmianę perspektywy między dwoma obrazami) , porównywałbyś każdy kluczowy deskryptor jednego obrazu z każdym kluczowym deskryptorem drugiego obrazu. Ponieważ deskryptory są wektorami liczb, można je porównać z czymś tak prostym, jak odległość . Oczywiście istnieją bardziej złożone odległości, które można wykorzystać jako miarę podobieństwa. Ale w końcu powiedziałbyś to dopasowaniakluczowymi punktami, których deskryptory mają najmniejszą odległość między nimi, są np. te same „miejsca” lub „części obiektów” na różnych obrazach.
W celu bardziej złożonego wykorzystania kluczowych punktów / deskryptorów powinieneś przyjrzeć się temu pytaniu - szczególnie „podejściu lokalnemu niskiego poziomu” w mojej odpowiedzi i podejściu „Bag-of-words” w odpowiedzi @Maurits . Przydatne są również linki zawarte w tych odpowiedziach.
źródło
Pomyślmy o idealnym deskryptorze, aby zrozumieć ten pomysł. Idealny deskryptor to funkcja od przestrzeni pikselowej do innej przestrzeni, tak że te same obiekty mają ten sam wynik , podczas gdy różne obiekty mają inny wynik.
Na przykład, jeśli wykonałeś dwa zdjęcia tym samym przedmiotem, ale z innym poziomem ekspozycji, uzyskasz zwielokrotnioną wersję obrazu. Deskryptor, który weźmie piksele i znormalizuje je za pomocą średniej i standardowego poziomu odchylenia, miałby ten sam wynik, mówiąc, że te dwa obiekty są takie same. To dobrze, ponieważ pozwala nam na prawidłowe dopasowanie
Dlatego twój deskryptor jest potrzebny do poprawnego dopasowania tych samych obiektów.
źródło