2013-05-03 3 views
2

bewlow 표시된 코드를 사용하여 일치하는 기능을 찾을 수 있습니다. 두 이미지 사이의 유사성 비율을 계산하고 싶습니다. 나는 OpenCV를 처음 사용합니다. 어떤 종류의 도움도 높게 평가 될 것입니다.OpenCV를 사용하여 두 이미지의 유사성 백분율 계산

FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB); 
    DescriptorExtractor extractor = DescriptorExtractor 
      .create(DescriptorExtractor.ORB); 

    detector.detect(image1, keypoints1); 
    detector.detect(image2, keypoints2); 

    extractor.compute(image1, keypoints1, descriptors1); 
    extractor.compute(image2, keypoints2, descriptors2); 

    DescriptorMatcher matcher = DescriptorMatcher 
      .create(DescriptorMatcher.BRUTEFORCE_HAMMING); 

    MatOfDMatch matches = new MatOfDMatch(); 
    matcher.match(descriptors1, descriptors2, matches); 

다른 용도로 사용할 수있는 라이브러리가 있습니까?

+0

내 대답이 도움이 되었습니까? 더 나은 방법을 찾을 수 있을까요? – JonesV

+0

나는 이미지 프로세싱을하는 초보자이기 때문에 특정 용어를 이해하는 데 시간이 걸렸다. 그러나 나는 이것을 pHash와 pdiff 같은 다른 라이브러리를 탐색하는 동안 구현해야합니다. –

+0

@SorryBoss : 어떻게 이미지를 비교 했습니까? 나는 또한 당신이 안드로이드에서 몇 가지 리드 나 코드를 줄 수있는 동일한 시도를하고있다. –

답변

1

나는 찾고있는 것을 제공하는 pHashpdiff 두 개의 라이브러리를 발견했다. 성능 및 코드와의 호환성을 평가하고 최상의 코드를 선택하겠습니다.

2

특징 점수를 사용하여 그 자체 인을 계산할 수 있다고는 생각하지 않습니다. 그러나 당신은 "유사점 점수"를 계산할 수 있습니다.

우선, 당신은 당신이 가지고있는 나쁜 성냥을 어떤 식 으로든 걸러 내고 싶습니다. (나는 성냥을 기하학적으로 검증하기 위해 동형 변환을 사용할 것입니다). 그런 다음, 당신은이 "점수의 유사점"을 계산하는 자신의 방식을 설정할 수 있습니다.

예를 들어, 일치하는 항목 간의 해밍 거리를 단순히 합할 수 있습니다. 그리고 당신은 또한 특징점의 위치를 ​​사용할 수 있습니다 이미지 에 특징점 아이을 가정하는 것은 이미지 B에 대응 동성 있습니다. 아이의 좌표 (XA 나중에)및 Bi를 그(XB, YB)이다이다. 유사한 이미지를 얻으려면 (Xa, Ya)(Xb, Yb)에 가능한 한 근접시켜야합니다. 점수는 다음과 같이 될 것이다 :

Score = HammingDist/DistanceBetween(Point(Xa, Ya), Point(Xb, Yb)) 

물론, 당신은 HammingDist 또는 DistanceBetween에 무게를 더 넣어 할 수 있습니다; 당신은 실험을해야합니다.

관련 문제