我可以使用bewlow显示的代码找到匹配的功能。我想计算两个图像之间的百分比相似度。我是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 :(得分:2)
我认为您不能使用要素点计算本身的百分比。但是你可以计算出“相似度”。
首先,你想以某种方式过滤掉你所拥有的不良匹配(我会使用单应性转换来几何验证匹配)。然后,您可以建立自己的方法来计算这种“相似度”。
例如,您可以简单地将您所拥有的比赛之间的汉明距离相加。您还可以使用要素点的位置:假设图像 A 上的要素点 Ai 在图像上具有对应关系 Bi 乙。 Ai 的坐标是(Xa,Ya), Bi 的坐标是(Xb,Yb)。为了使您的图像相似,您可能希望(Xa,Ya)尽可能接近(Xb,Yb)。那么得分就像是:
Score = HammingDist / DistanceBetween(Point(Xa, Ya), Point(Xb, Yb))
当然,您可能希望更加重视HammingDist
或DistanceBetween
;你需要试验。
答案 1 :(得分:1)