1

이미 계산 된 두 디스크립터 사이의 거리 (유클리드 또는 해밍)를 계산하려고합니다. 문제는 정규 표현식을 사용하고 싶지 않다는 것입니다. 두 디스크립터 사이의 거리를 계산하기 원합니다. 사이두 디스크립터 사이의 거리를 계산하십시오.

Mat descriptors1; 
Mat descriptors2; 

와 (I 이진 디스크립터를 사용하고 있기 때문에, 바람직하게는 해밍 거리) 지금은 단지 거리를 계산하려면 : 내가 OpenCV의 2.4.9을 사용하고 그리고 난 내는 매트 타입에 저장 디스크립터가있다 descriptors1의 row1과 descriptors2의 row1 (예를 들어).

bitwise_xor() 함수를 사용하려고했지만 그 다음에는 유효한 비트 카운트를 얻지 못했습니다. 두 배열 사이의 해밍 거리를 계산하는 함수는 없습니다.

내가 OpenCV에 상당히 익숙하다는 것을 알았지 만 도움을 주셔서 감사합니다. 고마워요

답변

5

당신은 이것을 위해 opencv의 norm 함수를 사용할 수 있습니다.

Mat descriptors1; 
Mat descriptors2; 

double dist_l2 = norm(descriptors1,descriptors2,NORM_L2);  // l2 for surf,sift 
double dist_ham = norm(descriptors1,descriptors2,NORM_HAMMING); // for ORB,BRIEF,etc.