13

Używam metody dopasowania szablonu z CV_TM_CCORR_NORMED, aby porównać dwa obrazy ... Chcę zrobić, aby ten rotacji i skali niezmiennicze .. jakieś pomysły?skala i obrót Dopasowanie szablonu

Starałem się używać tej samej metody na transformacji Fouriera obrazu i szablonu, ale nadal wynik po rotacji różni

Odpowiedz

28

Szablon dopasowanie z matchTemplate nie jest dobre, gdy obiekt jest obracany lub skalowany w scenie .

Powinieneś spróbować funkcji openCV z Features2D Framework. Na przykład deskryptory: SIFT lub SURF i FLANN matcher. Ponadto będziesz potrzebować metody findHomography.

Here to dobry przykład znalezienia obróconego obiektu w scenie.

Aktualizacja:

W skrócie, algorytm jest następujący:

  1. Znalezienie keypoints Twojego obiektu obrazu 1.1. Wyodrębnianie deskryptory z tych keypoints

  2. Znalezienie keypoints swojej sceny obrazu 2,1 Wyciąganie deskryptory z keypoints

  3. deskryptory meczowe przez dopasowującego

  4. analizować mecze

Istnieją różne zajęcia FeatureDetectors, DescriptorExtractors i DescriptorMatches, możesz przeczytać o nich i wybrać te, które pasują do twojej ta sks.

+0

** Dziękuję, już użyłem homografii i zamiast surfowania znalazłem rogi jako punkty zainteresowania, czy to zadziała z FLANNEM? surfowanie i przesiewanie może zająć dużo czasu i zmniejszyć wydajność ** – Storm2012

+0

'Points of interest' jest terminem ogólnym. Są to krawędzie i przeważnie rogi. Jak znalazłeś ciekawe miejsca? Możesz użyć dowolnego z 'FeatureDetector 'openCV lub napisać własny. Istnieją na przykład 'FAST',' STAR'. Są proste i szybkie. Ale nie przechowują informacji o kącie punktów użyteczności publicznej. 'SURF' i' SIFT' są wolniejsze, ale ich informacje o punktach zainteresowania są większe (kąty). 'SIFT' i' SURF' umożliwiają wyszukiwanie niezmiennych dopasowań. Ale możesz użyć dowolnych detektorów OpenCV do swojego Matchera. Możesz także wypróbować różne narzędzia (jest ich niewiele w openCV). –

+0

Bardzo dziękuję – Storm2012

6

Obrót niezmienny

Dla każdego kluczowego punktu:

  1. Zajmij obszar wokół kluczowego punktu.
  2. Oblicz kąt orientacji tego obszaru za pomocą gradientu lub innej metody.
  3. Obróć wzór i obszar żądania pod tym kątem do 0.
  4. Oblicz deskryptory dla tych obróconych obszarów i dopasuj do nich.

Skala niezmienna

Zobacz BRISK metoda

2

Są łatwiejsze sposoby dopasowania skali szablon i obrotowo niezmienna niż dzieje poprzez wykrywanie i homographies fabularnego (jeśli znasz jej naprawdę tylko obraca i skale , ale wszystko inne jest stałe). W celu wykrycia prawdziwego obiektu powyższe sugerowane podejścia oparte na keypoint działają lepiej.

Jeśli wiesz, że jest to ten sam szablon i nie ma zmiany perspektywy, to weź piramidę obrazu do wykrywania w przestrzeni skali i dopasuj szablony na różnych poziomach tej piramidy (przez coś prostego, na przykład SSD lub NCC). Będzie tanie znaleźć szorstkie zapałki na wyższych (= niższej rozdzielczości) poziomach piramidy. W rzeczywistości będzie on tak tani, że z grubsza można obrócić szablon na najniższych poziomach rozdzielczości, a po prześledzeniu szablonu z powrotem do wyższych poziomów rozdzielczości użyjesz bardziej precyzyjnego stopniowania obrotu. Jest to dość standardowa technika porównywania szablonów i działa dobrze w praktyce.