對於我的碩士論文,我正在對SIFT SURF en FAST算法進行一些測試,以便在智能手機上進行徽標檢測。通過FAST檢測,SURF描述更快?
當我只是時間檢測,描述en匹配的一些方法,我得到以下結果。
對於SURF檢測器和SURF描述:
180的關鍵點發現
1994秒關鍵點計算時間(SURF)
4516秒描述時間(SURF)
匹配時間0.282秒(SURF)
當我在SURF檢測器代替使用FAST探測器
319的關鍵點發現
0.023秒關鍵點計算時間(FAST)
1.295秒描述時間(SURF )
0.397秒匹配時間(SURF)
FAST檢測器比SURF檢測器快得多,甚至可以快100倍地檢測幾乎兩倍的關鍵點。這些結果是可預測的。
雖然下一步不是預測結果。 SURF描述符在319 FAST關鍵點和180 SURF關鍵點之間有多快?
據我所知,描述與檢測算法沒有關係......但這些結果並不如預測。
確實有人知道這可能嗎?
這裏是代碼:
FeatureDetector detector = FeatureDetector.create(FeatureDetector.SURF);
//FeatureDetector detector = FeatureDetector.create(FeatureDetector.FAST);
Imgproc.cvtColor(image1, image1, Imgproc.COLOR_RGBA2RGB);
Imgproc.cvtColor(image2, image2, Imgproc.COLOR_RGBA2RGB);
DescriptorExtractor SurfExtractor = DescriptorExtractor
.create(DescriptorExtractor.SURF);
//extract keypoints
long time= System.currentTimeMillis();
detector.detect(image1, keypoints);
Log.d("LOG!", "number of query Keypoints= " + keypoints.size());
detector.detect(image2, logoKeypoints);
Log.d("LOG!", "number of logo Keypoints= " + logoKeypoints.size());
Log.d("LOG!", "keypoint calculation time elapsed" + (System.currentTimeMillis() -time));
//Descript keypoints
long time2 = System.currentTimeMillis();
Mat descriptors = new Mat();
Mat logoDescriptors = new Mat();
Log.d("LOG!", "logo type" + image2.type() + " intype" + image1.type());
SurfExtractor.compute(image1, keypoints, descriptors);
SurfExtractor.compute(image2, logoKeypoints, logoDescriptors);
Log.d("LOG!", "Description time elapsed" + (System.currentTimeMillis()- time2));
可以請你發佈一些你的代碼? :) – Codeman
我的一些代碼被添加到問題! – piepie