我正在使用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