Jak oszacować oktawę i rozmiar dla elementów wizualnych umieszczonych w rogach Harrisa

9

Obecnie pracuję i porównuję wydajność kilku detektorów funkcji udostępnianych przez OpenCV jako podstawę wizualnego dopasowania funkcji.

Używam deskryptorów SIFT . Osiągnąłem zadowalające dopasowanie (po odrzuceniu złych dopasowań) podczas wykrywania funkcji MSER i DoG (SIFT) .

Obecnie testuję mój kod za pomocą GFTT (Good Features to Track - Harris corners), aby uzyskać porównanie, a także dlatego, że w końcowej aplikacji zestaw funkcji GFTT będzie dostępny z procesu wizualnego śledzenia funkcji.

Używam, cv::FeatureDetector::detect(...)co zapewnia mi std::vector<cv::KeyPoint>pełen wykrytych funkcji / kluczowych punktów / regionów zainteresowania . Struktura cv::KeyPointzawiera podstawowe informacje na temat lokalizacji obiektu, jak również informacje na temat sizei octavew którym został wykryty KeyPoint.

Moje pierwsze wyniki z GFTT były okropne, dopóki nie porównałem typowych sizei octaveparametrów w różnych typach funkcji:

  • MSER ustawia rozmiar (od 10 do 40 pikseli) i pozostawia oktawę na 0
  • DoG (SIFT) ustawia zarówno rozmiar, jak i oktawę ( stosunek wielkości do oktawy między 20 a 40)
  • GFTT parametrami są zawsze : rozmiar = 3 , oktawa = 0

Zakładam, że dzieje się tak, ponieważ głównym celem funkcji GFTT nie było używanie w dopasowywaniu, a jedynie w śledzeniu. To tłumaczy niską jakość dopasowywania wyników, ponieważ deskryptory wyodrębnione z takich drobnych funkcji przestają być dyskryminujące i niezmienne dla wielu rzeczy , w tym małych przesunięć o 1 piksel.

Gdybym ręcznie ustawić sizez GFTT do 10 - 12 , mam dobre wyniki, bardzo podobne do przypadku korzystania MSER lub Dog (przesiać) .

Moje pytanie brzmi: czy istnieje lepszy sposób na określenie, o ile można zwiększyć size(i / lub octave), niż po prostu iść z 10-zobaczyć-jeśli-to-działa ? Chcę uniknąć sizepodwyższenia na sztywno, jeśli to możliwe, i ustalić to programowo, ale twarde kodowanie jest w porządku, o ile mam solidne argumenty potwierdzające mój wybór nowego algorytmusize / sizezwiększenia / sizeoszacowania .

Penelopa
źródło
1
Hej @ penelope: sprawdź ten link, ten facet już wykonał
@ Hej, hej, to wygląda na bardzo dobre ogólne porównanie deskryptorów w ogólnym przypadku i na obiekcie planarnym, ale pracuję nad konkretnymi rodzajami obrazów i muszę wykonać własny test. Poza tym pytanie było o wiele bardziej szczegółowe niż „Potrzebuję materiałów referencyjnych porównujących działanie różnych rodzajów dekryptorów”. Jest to jednak miły link, sprawdzi to.
penelopa

Odpowiedzi:

4

Nie jestem pewien, czy tak naprawdę jest dobra odpowiedź na twoje dokładne pytanie: przestrzeń SIFT i SURF w przestrzeni kosmicznej została faktycznie opracowana w celu automatycznego oszacowania „dobrego” odpowiedniego rozmiaru sąsiedztwa wokół punktu przypominającego narożnik (co jest dobrymi cechami do śledzenia są).

Teraz bardziej pozytywne odpowiedzi brzmiałyby:

  • zbuduj bazę danych kluczowych punktów i dobrych dopasowań (np. używając kwadratowych wzorców kalibracyjnych) i utwórz automatyczną ocenę wydajności w tej bazie danych, aby znaleźć odpowiedni rozmiar. To zadanie można naprawdę zautomatyzować (zobacz pracę Mikołajczyka i Schmida na temat oceny dopasowywania punktów)

  • umieść swoje dobre cechy w piramidzie obrazu, aby mieć z nimi jakąś skalę. Możesz szukać referencji na temat punktów zainteresowania w skali FAST i Harris w wielu skalach, które działają podobnie do tej procedury.

Aby heurystycznie znaleźć maksymalny rozmiar bloku, możesz obliczyć szacunki swoich zdjęć za pomocą rozmycia ramki (co mniej więcej robi operator blockSize) i zobaczyć, kiedy znika narożnik. Zauważ jednak, że więcej rozmycia zabiera kąt z jego prawdziwej lokalizacji.

Jeśli naprawdę szukasz szybkiej i brudnej poprawki, wypróbuj rozmiary od 5x5 do 11x11 (typowe rozmiary stosowane w dopasowywaniu bloków stereo). Jeśli szukasz intelektualnie spełniającego kryterium, spróbuj zmaksymalizować prawdopodobieństwo dobrego dopasowania dwóch punktów charakterystycznych poniżej poziomu hałasu.

sansuiso
źródło
Szukałem rozwiązania, które byłoby trochę szybsze i brudniejsze niż to, co proponujesz. Mogę też określić pogodę, że dopasowanie jest dobre lub złe po tym, jak moje punkty kluczowe zostaną wyodrębnione i dopasowane do czegoś. Nawet jeśli dopasuję je całkowicie losowo, otrzymam kilka dobrych dopasowań - więc twoja pierwsza sugestia nie jest zbyt pomocna. Co do drugiej części, bardziej szybkie i brudne: wiem, że nie ma idealnego parametru, ale jak powiedziałem, pomogło zwiększenie rozmiaru do 12 - jakość była porównywalna z dopasowaniem SIFT i MSER. Po prostu nie mam żadnych argumentów, aby wybrać 12 spośród 100 lub ponad 34 ...
penelopa
0

Aby pomóc Ci określić najlepsze parametry detektorów, OpenCV ma w tym celu AjusterAdapter . Nigdy go nie użyłem, ale prawdopodobnie jest to standardowy sposób programowego określania parametrów. Należy również pamiętać, że chociaż Keypoints mają kilka właściwości, nie wszystkie mają sens dla wszystkich algorytmów. Ponieważ struktura Keypoint jest używana dla różnych algorytmów, zawiera wszystkie te pola, ale czasami nie są one używane, dlatego otrzymujesz te oktawy = 0; IMO.

Rui Marques
źródło
Wiem, że niektóre typy funkcji czasami nie są najlepszym typem do jakiegoś celu, ale ostatnie prace próbują podejść, w których wykorzystują więcej niż 1 typ v. Cech / regionów zainteresowania i osiągają lepsze wyniki z kombinacją niż z jakimkolwiek pojedynczym typem na własną rękę (mogę dodać linki do utworów, jeśli jesteś zainteresowany). Co więcej, robię przynajmniej częściowe badania, więc to, co powinienem zrobić, to wypróbowanie i ocena wyników uzyskanych przy użyciu różnych typów kluczowych punktów, nawet jeśli niektóre z tych wyników nie są tak dobre, jak na razie sztuka. Zajrzę do Adaptera, dziękuję.
penelopa
Właśnie przejrzałem funkcję, którą zapewnia interfejs. Może jedynie zwiększyć lub zmniejszyć liczbę wykrytych detektorów. Poza tym nie mam żadnych problemów z wykrytymi funkcjami. I będzie tak jak sposób, aby dostosować ich rozmiar, aby mogli być lepiej wykorzystane w dobieraniu (zwiększenie wielkości do 10 robi, ale nie mam żadnych konkretnych (wystarczająco) argumentację dla tego wyboru)
Penelope