2014-09-23 10 views
5

Próbuję ocenić detektory SIFT i SURF według kryteriów powtarzalności.Powtarzalność Opencv Wynik nie ma sensu?

i okazuje się, że poniżej metody można znaleźć Powtarzalność korespondencja Sift i fale

cv::evaluateFeatureDetector(img_1c, img_2c, h12, &key_points_1, &key_points_2, repeatability, corrCounter); 

niektóre wyniki zostały wymienione poniżej:

Number Repeatibility Correspond Keypoint 1st Keypoint 2th  
1to2 0.7777778   140  224    180  
1to3 0.7125    114  224    161  
1to4 0.704918    86  224    123  
1to5 0.6853933    61  224    89  
1to6 0.6521739    45  224    69 

w pierwszym rzędzie powtarzalności można obliczyć jako - > (correnspond)/min (keypoint1st, keypoint2th) = (140/180) = 0.7777778 , ale w przypadku innych wierszy jego wartość różni się od wartości obliczanej za pomocą powyższej formuły.

Czy ktoś może powiedzieć, dlaczego tak się dzieje?

Pozdrawiam.

+0

z której wersji OpenCV korzystasz? – Micka

Odpowiedz

4

Myślę, że mogłem znaleźć problem tutaj.

Szybkość powtarzania to liczba powtarzających się punktów między dwoma obrazami, biorąc pod uwagę całkowitą liczbę wyodrębnionych punktów. Aby zmierzyć liczbę powtarzających się punktów, należy wziąć pod uwagę, że obserwowane sceny różnią się od siebie ze względu na zmieniony stan obrazowania (punkt widzenia, obrót + skala, rozmycie itp. W przypadku zbioru danych Mikołajczyk).

keypoints, które nie zostały wykryte w obu obrazów może zaburzyć powtarzalność miarą tak, tylko punkty, które leżą we wspólnym scenie części wpływa na powtarzalność.

Co się dzieje jest to, że bierzesz pod uwagę wszystkie keypoints wykryte w drugim obrazie na obliczeniu powtarzalności i faktycznie tylko keypoints obrębie homography należy stosować.

Mam nadzieję, że to pomoże.

+0

Myślałem o tym samym, ale nie byłem tego pewien, wciąż nie wiem, czy to jest przypadek. ale dzięki za odpowiedź. Będę czekać na lepszą odpowiedź. jeśli nikt nie uzyska lepszej odpowiedzi, przyjmę twoją. – AMH

+0

Możesz to potwierdzić, jeśli narysujesz homografię i punkty kluczowe na drugim obrazie. Jeśli wykryjecie punkty kluczowe w obrazie2 tylko w homografii, a na innych obrazach, których nie macie, problem jest dokładnie taki, jak powiedziałem powyżej. Daj mi znać, jeśli nie wyjaśniam gdzieś dobrze. – zedv

+0

Jak mogę odzyskać "należy używać tylko punktów kluczowych w homografii"? – justHelloWorld

1

W rzeczywistości, OpenCV 2,49 korzysta z tej linii kodu w evaluation.cpp:

repeatability = minCount ? (float)correspondencesCount/minCount : -1; 

który jest liczba korespondencji podzielona przez mniejszą liczbę Keypoint 1st lub Keypoint 2th więc myślę, że twój błąd może być gdzieś indziej. Czy możesz umieścić swój kompletny kod w miejscu, w którym ustawiłeś img_1c, itd. I zadzwonisz do funkcji i wyświetlisz wyniki?

+0

Używam OpenCV 2.46. Dowiaduję się, że jeśli dokonam zmian w obrazie przez powtarzalność funkcji opencv, pasuje do formuły. ale w jakiś sposób na Mikolajczyku Zbiór Danych pojawia się ten problem. – AMH

+0

Na przykład, jeśli używam filtra GaussianBlur, rotacji, dodawania szumu lub ... metodami opencv, otrzymuję oczekiwany wynik powtarzalności. Używam tego samego kodu do oceny i wyszukiwania punktów obrazu w obu zestawach danych (zestaw danych syntezy i zestaw danych Mikołajczyka). – AMH

Powiązane problemy