2013-02-21 4 views
0

나는 2 개의 이미지 sourceImg, refImg를 가지고 있습니다.OpenCV - rigid body point clould의 번역 찾기

는 그래서 같은 기능을 추출했습니다

cv::GoodFeaturesToTrackDetector detector; 
std::vector<cv::KeyPoint> sourceKeyPoints, refKeyPoints; 
detector.detect(sourceImg, sourceKeyPoints); 
detector.detect(refImg, refKeyPoints); 

내가 refImg에서 sourceImg에 개체의 번역을 찾고 싶어요. 회전 또는 원근감 변경이없고 단순한 2 차원 변환 만 가능합니다. 약간의 소음이있을 수 있습니다.

findHomography()는 두 세트의 추출 된 피쳐 수가 같고 노이즈를 아주 잘 처리 할 때도 잘 작동합니다.

제 질문은 기능 수가 다른 경우 어떻게합니까?

누군가 DescriptorExtractor 및 Matching과 관련하여 올바른 방향으로 나를 가리킬 수 있습니까?

참고 : 특허 문제로 SURF/SIFT를 사용할 수 없습니다.

답변

0

FlannBasedMatcher 클래스를 OpenCV에서 시도해 볼 수 있습니다. 이 유형을 사용하여 (모든 유형의) 설명자를 일치시킨 다음 가장 일치하는 것을 사용하여 동질성을 찾습니다.

+0

유용합니다. 감사합니다. 피쳐 추출기가 어떤 디스크립터와 가장 잘 작동하는지에 대한 지침이 있습니까? –

+0

@BillWilliamson 일반적으로 기능 감지/추출 방법은 설명자 계산 방법과 관련되어 있으므로 특정 추출기 (즉, SIFT 감지기를 사용하여 선택한 기능에서 SIFT 설명자를 계산)에 해당 설명자를 사용하는 것이 좋습니다. 또는 각각의 설명자에 어떤 ** 매칭 ** 기법을 사용할지를 묻는다면 불행히도 도움을 줄 수 없을 것입니다. –