对于我的硕士论文,我正在对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