我正在使用openCV for android来实现徽标检测算法。我现在的目标是在我用android相机拍摄的照片中找到预定义的徽标。找不到正确的FAST-SURF匹配当使用openCV for android
我无法获得任何正确的匹配..我认为这很奇怪,考虑到我几乎只使用openCV库函数。
首先,我使用FAST检测器检测关键点,然后使用SURF描述这些关键点,我的图像尺寸为500x500,大小为 。 与knn我要求2个最好的匹配,并消除那些没有比率小于0.6(first.distance/second.distance)的人。
我得到大约10场比赛,但他们都错了,当我画每一场比赛(100+),他们似乎都错了
我看不到我在做什么错在这里,有没有人有同样的问题,或知道我在做什么错了?
FeatureDetector FAST = FeatureDetector.create(FeatureDetector.FAST);
// extract keypoints
FAST.detect(image1, keypoints);
FAST.detect(image2, logoKeypoints);
DescriptorExtractor SurfExtractor = DescriptorExtractor
.create(DescriptorExtractor.SURF);
Mat descriptors = new Mat();
Mat logoDescriptors = new Mat();
SurfExtractor.compute(image1, keypoints, descriptors);
SurfExtractor.compute(image2, logoKeypoints, logoDescriptors);
List<DMatch> matches = new ArrayList<DMatch>();
matches = knn(descriptors, logoDescriptors);
Scalar blue = new Scalar(0, 0, 255);
Scalar red = new Scalar(255, 0, 0);
Features2d.drawMatches(image2, logoKeypoints, image1, keypoints,
matches, rgbout, blue, red);
您是否尝试过SURF关键点上的SURF功能? – 2012-03-27 19:12:42
什么是knn函数?它是否正确实施? – 2012-04-04 07:12:25
我想几乎所有的组合... SIFT筛分 SURF冲浪 FAST-SURF ... 每个组合有同样的问题。 knn函数为您提供了2个最佳匹配,通过比较这两个匹配,您可以找到真正跳出来的匹配,并有最好的机会成为真正的肯定 – piepie 2012-04-04 11:41:27