Czy sift to dobry sposób na wydobycie funkcji z obrazu?

13

Próbuję wyodrębnić funkcje z obrazu, ale nie udało mi się uzyskać punktów, które chcę wyodrębnić, a zatem mój obraz nie pasuje do szablonu.

Czy są jakieś punkty kontrolne, przez które muszę przejść przed zastosowaniem SIFT do mojego obrazu, aby uzyskać dobre wyniki? Na przykład obraz szablonu to;
wprowadź opis zdjęcia tutaj

ukierunkowany obraz; wprowadź opis zdjęcia tutaj

KT Harris
źródło
1
Zależy od rodzaju obrazu i tego, do czego chcesz używać funkcji. Proszę o więcej informacji.

Odpowiedzi:

14

To, co powinieneś zrobić, dopasowując szablon do obrazu za pomocą Sift, to uruchomić Sift na swoim szablonie, a następnie poszukać tych funkcji Sift w tym układzie w twojej scenie.

Ogólna zasada: porównaj lubić lubić.

Sift (szablon) zawarty w Sift (obraz)

Nie można dostroić funkcji Sift, aby wyodrębnić „pożądane funkcje”. Sift * używa niezmiennych miar, aby znaleźć funkcje, które jej zdaniem są najbardziej istotne. (* Chris A)

Jeśli chcesz znaleźć określone funkcje z szablonu, utwórz mniejsze szablony tych funkcji i wyszukaj je.

Tylko sugestia. Nie wiem dokładnie, jaki typ szablonu próbujesz dopasować do jakiego rodzaju sceny lub obrazu.

Totero
źródło
7
+1, zgadzam się. Poza jedną rzeczą. SIFT nie znajduje funkcji, które są najbardziej niezmienne. Wykorzystuje niezmienne miary, aby znaleźć funkcje, które jego zdaniem są najbardziej istotne.
7

Nie jestem pewien, czy chcesz po prostu dopasować dwa obrazy (np. Znaleźć wspólne punkty), czy też chcesz spróbować czegoś takiego jak CBIR (Pobieranie obrazu na podstawie zawartości - przeszukiwanie bazy danych z obrazem szablonu w celu znalezienia wszystkich, które zawierają obiekt).

Obecnie prowadzę badania CBIR, więc jestem na bieżąco z aktualnymi metodami. Tu i tutaj są linki do moich odpowiedzi na podobne do twoich problemy z stackoverflow, powinieneś spojrzeć.

Teraz powiem trochę o SIFT. Gdy Lowe wprowadził je po raz pierwszy , termin SIFT dotyczył zarówno procesu wykrywania cech, jak i deskryptorów cech obliczonych na podstawie wykrytych punktów zainteresowania. Aż do tego dnia, przesiać deskryptory okazały się niewiarygodnie niesamowite. Deskryptory mają kilka fajnych właściwości, o których wspomniał już @Totero.

Z drugiej strony metoda wykrywania SIFT , która jest obecnie coraz częściej określana jako DoG (Różnica Gaussa), nie jest już najnowocześniejsza. Nadal jest szeroko stosowany, ale w procesie wykrywania funkcji jest dziś więcej metod, z których niektóre są lepsze lub ładnie uzupełniają typy niezmiennych kluczowych fragmentów ekstraktów z procesu DoG.

Większość aktualnych artykułów (spójrz na linki w połączonych pytaniach dotyczących przepływu stosów) ma jeszcze jedną dobrą praktykę: łączą wiele sposobów wykrywania cech, a następnie używają deskryptorów SIFT (które nadal działają jako deskryptory), aby obliczyć niezmienne reprezentacje wektorowe. Obecnie pracuję z kombinacją DoG (koncentrują się na narożnych częściach obrazów) i regionami MSER (koncentrują się na wyróżnionych punktowo punktach za pomocą wielu skal). Możesz spróbować poeksperymentować i rzucić tam jeszcze więcej rodzajów detektorów funkcji, jeśli uznasz, że ta kombinacja nie jest satysfakcjonująca w konkretnej bazie danych obrazów.

Ponadto, jeśli jesteś zainteresowany, tutaj jest artykuł, który ocenia wyniki różnych kombinacji wykrywania i deskryptorów. Nie przeczytałem go, ponieważ DoG & MSER + SIFT działa dla mnie dobrze, ale przejrzałem go i papier jest całkiem dobry.

PS: skorzystaj z Google Scholar, jeśli nie masz dostępu do bazy danych IEEEXplore, z którą się łączyłem.

Penelopa
źródło
tylko małe wyjaśnienie: DoG oznacza różnicę Gaussa (różnica między dwiema odpowiedziami filtra gaussowskiego)
Libor
2

Opierając się na poprzednich odpowiedziach:

(1) Możesz użyć SIFT (lub innego ulepszonego wariantu tego lokalnego deskryptora łatki) z gęstym próbkowaniem, zamiast wbudowanego detektora. Możesz wybrać rozmiar lokalnej poprawki i gęstość próbkowania, aby dopasować ją do wymagań dotyczących wydajności i kosztów obliczeniowych.

(2) SIFT jest afinicznym niezmiennym deskryptorem do szerokiego bazowego dopasowania stereo. Oznacza to, że SIFT działa dobrze, gdy wykonujesz zdjęcie i wywołujesz transformację afiniczną, przy czym „szablon” musi być obecny na obrazie docelowym, choć z transformacjami.

Sugestie: (a) Utwórz bazę danych obrazów szablonów (jeśli to możliwe), aby zwiększyć swoje szanse na wykrycie obrazu.

(b) Możesz zastosować model BW jako punkt odniesienia, jeśli zdecydujesz się zastosować podejście CBIR do swojego zadania.

(c) Przytnij obraz szablonu tylko do odpowiedniej części i użyj bardzo gęstego SIFT. http://www.vlfeat.org/overview/dsift.html

(4) Później możesz wypróbować deskryptor w skali mutli, taki jak PHOG (piramidalny histogram gradientów) itp., Który może potencjalnie poprawić wyniki. http://www.vlfeat.org/overview/dsift.html#tut.dsift.phow

Dynamiczny Gwiezdny Pył
źródło