我是计算机视觉领域的新手,现在我正在开展一个项目来比较两个图像,看看是否有匹配。我已经读过AKAZE与SIFT相比表现更好,但我发现不然。我使用openCV的Java实现,我发现SIFT产生更好的特征点,从而与AKAZE相比更好地匹配。以下是我用于检测关键点,计算描述符和查找匹配项的代码:
MatOfKeyPoint objectKeyPoints1 = new MatOfKeyPoint();
MatOfKeyPoint objectKeyPoints2 = new MatOfKeyPoint();
FeatureDetector featureDetector1 = FeatureDetector.create(FeatureDetector.SIFT);
FeatureDetector featureDetector2 = FeatureDetector.create(FeatureDetector.SIFT);
featureDetector1.detect(image1, objectKeyPoints1);
featureDetector2.detect(image2, objectKeyPoints2);
DescriptorExtractor descriptorExtractor = DescriptorExtractor.create(DescriptorExtractor.SIFT);
MatOfKeyPoint objectDescriptors1 = new MatOfKeyPoint();
descriptorExtractor.compute(image1, objectKeyPoints1, objectDescriptors1);
MatOfKeyPoint objectDescriptors2 = new MatOfKeyPoint();
descriptorExtractor.compute(image2, objectKeyPoints2, objectDescriptors2);
MatOfDMatch mtd=new MatOfDMatch();
DescriptorMatcher descriptorMatcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE)
descriptorMatcher.match(objectDescriptors1,objectDescriptors2 , mtd);
AKAZE的代码也是一样的,只是我用代码中的AKAZE代替SIFT。在900个关键点中,我得到了SIFT的178场比赛,但是AKAZE只有10-20场比赛。
您能否帮我确定可能导致此问题的原因?这可能与openCV的Java包装器有关吗?
由于