5

SIFT 및 SURF 감지기를 반복성 기준으로 평가하려고합니다.Opencv 반복성 결과가 좋지 않습니까?

나는 방법 이하 반복성, 대응 결과 중 일부는 다음과 같다 SIFT와 SURF

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

으로 찾을 수 있다는 것을 알 수 :

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 

첫번째 행 반복성로써 계산할 수 - > (correnspond)/min (keypoint1st, keypoint2th) = (140/180) = 0.7777778 다른 행의 경우 값이 위의 수식으로 계산 된 것과 다릅니다.

누군가가 왜 그 일이 일어 났는지 말할 수 있습니까?

감사합니다. Keypoint 1st 또는 Keypoint 2th의 작은 수로 나눈 대응의 수 그래서 난 당신의 오류가 다른 곳에있을 생각입니다

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

: 사실

+0

openCV 버전을 사용 하시나요? – Micka

답변

4

여기에서 문제를 발견했을 수도 있습니다.

반복률은 추출 된 키포인트의 총 수를 고려한 두 이미지 사이의 반복 지점 수입니다. 반복되는 포인트의 수를 측정하려면 관찰 된 장면이 변경된 이미징 조건 (Mikolajczyk 데이터 세트의 경우 관측점, 회전 + 스케일, 흐림 등)으로 인해 서로 다르다는 점을 고려해야합니다. 두 이미지에서 검출되지

키포인트는 손상 반복 측정 때문에, 일반적인 장면에서 거짓말 만 포인트 부분은 반복에 영향을 줄 수 있습니다. 무슨 일이 일어나고 무엇

당신이 모든 키포인트는 반복의 계산을위한 두 번째 이미지에서을 감지하고, 호모 그래피 내에서 실제로 에만 키포인트가을 사용해야 고려하고 있습니다.

희망이 도움이됩니다.

+0

동일한 것을 생각하고 있었지만 확실하지는 않았습니다. 그 경우는 여전히 알 수 없습니다. 하지만 답장을 보내 주셔서 감사합니다. 나는 더 나은 대답을 기다릴 것이다. 아무도 더 좋은 대답을 얻지 못하면 당신을 받아 들일 것입니다. – AMH

+0

두 번째 이미지에 동조 및 키포인트를 그릴 경우이를 확인할 수 있습니다. 호모 그래피의 내부에서만 이미지 2의 키포인트를 감지하고 그렇지 않은 다른 이미지에서 키포인트를 감지하면 문제는 위에서 말한 것과 정확히 같습니다. 제가 어딘가에서 잘 설명하지 못한다면 알려주세요. – zedv

+0

"동조 내의 키포인트 만 사용해야합니까?"를 어떻게 검색 할 수 있습니까? – justHelloWorld

1

는 OpenCV의 2.49 evaluation.cpp에서 코드 줄을 사용합니다. img_1c 등을 설정 한 곳에서 전체 코드를 게시하고 함수를 호출하고 결과를 표시 할 수 있습니까?

+0

OpenCV 2.46을 사용합니다. 내가 찾은 그 opencv 함수 반복성에 의해 이미지를 변경하면 수식을 찾습니다. 그러나 어떻게 든이 문제는 Mikolajczyk Dataset에서 발생합니다. – AMH

+0

예를 들어 GaussianBlur 필터를 사용하면 노이즈를 추가하거나 회전시킬 수 있습니다. opencv 메서드를 사용하면 예상되는 반복성 결과를 얻습니다. 두 데이터 집합 (합성 데이터 집합 및 Mikolajczyk 데이터 집합)에서 이미지 키포인트를 평가하고 찾는 데 동일한 코드를 사용합니다. – AMH