Dlaczego używamy deskryptorów kluczowych?


18

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?


Hej, czy chcesz wiedzieć konkretnie o SURF, czy może twoje pytanie jest bardziej ogólne: „dlaczego potrzebujemy deskryptorów dla kluczowych punktów?” (zainspirowany nauką o SURF)
penelopa

@penelope Moje pytanie jest bardziej ogólne na temat deskryptorów
ARG

3
Mam nadzieję, że nie masz nic przeciwko temu, że udzieliłem ci bardziej ogólnego pytania przed udzieleniem odpowiedzi.
penelopa,

Odpowiedzi:


22

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ż deskryptorywektorami 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,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.


najlepsza odpowiedź i miłe wyjaśnienie, użycie terminu funkcja jest taka sama jak deskryptorów? oba są takie same czy różne? a co oznacza orientacja w surfowaniu?
ARG,

1
Termin „cecha” jest taki sam jak „kluczowy” - jest to znaczący punkt na obrazie. Deskryptor jest wówczas „deskryptorem klucza” lub „deskryptorem funkcji”. Niestety niewiele wiem o SURF, dlatego zapytałem, czy chcesz się dowiedzieć o deskryptorach ogólnie, czy konkretnie o SURF. Wiem, że w przypadku SIFT orientacja jest bardzo ważna.
penelopa

Termin orientacja nie jest konkretnie używany dla SURF, jest również używany w SIFT, chcę tylko o tym wiedzieć, co to jest
ARG

Obliczasz „główną orientację” punktu kluczowego na podstawie lokalnego gradientu. Następnie kierunek ten staje się „w górę” dla punktu kluczowego podczas obliczania gradientu w celu osiągnięcia niezmienności obrotowej. W przypadku SIFT masz ładne wyjaśnienie na wikipedii
penelopa

:) moje pytanie brzmi: czym jest orientacja? nie przesiewać ani surfować
ARG

2

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

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Dlatego twój deskryptor jest potrzebny do poprawnego dopasowania tych samych obiektów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.