2011-03-21 15 views
6

Chcę wykonać zadanie klasyfikacji, w którym mapuję dany obraz obiektu na jedną z listy predefiniowanych konstelacji, w których może znajdować się obiekt (tj. Znajdź najbardziej prawdopodobny odpowiednik). W celu uzyskania deskryptorów obrazu (na którym uruchomię algorytmy uczenia maszynowego) zasugerowano mi użycie SIFT z implementacją VLFeat.Deskryptory obrazu z SIFT/VLFEAT

Przede wszystkim, moje główne pytanie - chciałbym zignorować kluczowy element znajdujący się w systemie przesiewania i używać go tylko dla jego deskryptorów. W samouczku widziałem, że istnieje możliwość zrobić dokładnie to poprzez wywołanie

[f,d] = vl_sift(I,'frames',fc) ;

gdzie fc określa klucz-punkty. Mój problem polega na tym, że chcę jednoznacznie określić pole graniczne , w którym chcę obliczyć deskryptory wokół punktu kluczowego - ale wydaje mi się, że mogę tylko określić parametr skali, który jest teraz dla mnie trochę zagadkowy i nie pozwól mi wyraźnie określić obwiednię. Czy istnieje sposób, aby to osiągnąć?

Drugim pytaniem jest ustawienie skali ręcznie i uzyskanie deskryptorów w ten sposób ma sens? (tzn. uzyskać dobry deskryptor?). Wszelkie inne sugestie dotyczące lepszych sposobów na uzyskanie deskryptorów? (używając SIFT z innymi implementacjami lub innymi deskryptorami nie-SIFT). Powinienem wspomnieć, że mój obiekt jest zawsze jedynym obiektem na obrazie, jest wyśrodkowany, ma stałe oświetlenie i zmienia się przez niektóre rodzaje obrotów jego wewnętrznych części - I dlatego pomyślałem, że SIFT zadziała, ponieważ zrozumiałem, że koncentruje się na gradienty orientacji, które zmieniałyby się odpowiednio wraz z obrotami obiektu.

Dzięki

Odpowiedz

2

Zgoda co do faktu, że skala deskryptor wygląda nieco tajemnicze.

Zobacz trzeci obraz w VLFeat SIFT tutorial gdzie nakładki wyodrębnione deskryptory na obrazie z

h3 = vl_plotsiftdescriptor(d(:,sel),f(:,sel)) ; 
set(h3,'color','g') ; 

Można więc grać ze skalą i sprawdzić, czy region, w którym histogram ekstrahuje jives z czego poniższych poleceń oczekiwałeś.

SIFT brzmi, jakby to była przesada dla twojej aplikacji, jeśli masz taką kontrolę nad środowiskiem obrazowania, ale powinno działać.

0

Hej. może pomóc pominie rozdziale tle tej tezy: http://www.cs.bris.ac.uk/Publications/pub_master.jsp?id=2001260

zajęłoby czas dla mnie, aby wyjaśnić o skali więc spróbuj go czytać i patrz odpowiedni cytat. W tym utworze deskryptory są używane w podstawowej rozdzielczości, tj. W skali ~ 1.

Mam nadzieję, że to pomoże.

0

Może nie zrozumiałem problemu, ale jeśli obraz zapytania musi być dopasowany do bazy danych obrazów pociągów, a zarówno pociąg, jak i obrazy testowe są stałe w świetle, skali, ... może SIFT nie jest konieczne w tutaj. Możesz przyjrzeć się korelacji. Czy używasz Matlaba?

http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html#template-matching "Tutaj" można zobaczyć przykład za pomocą korelacji z opencv.