我尝试使用David Lowe's implementation和OpenCV implementation对几个不同的对象进行对象检测(刚刚更改了'SurfFeatureDetector' - >'SiftFeatureDetector'和'SurfDescriptorExtractor' - >'SiftDescriptorExtractor'码)。
似乎opencv实现更糟糕!检测到大量误报和关键点!我尝试使用sigma / contrastThreshold等'SiftFeatureDetector'参数,但结果总是远远超过原版David的版本。
SIFT的opencv实现与David Lowe的原始实现完全不同吗?
有没有人知道'SiftFeatureDetector'的一个好的参数集,以便David的实现提供的对象图像的结果(如box.pgm / basmati.pgm ..)可能与David的版本类似。 / p>
答案 0 :(得分:2)
VLFeat的SIFT implementation quite close(就功能输出而言)是原始实现。
答案 1 :(得分:0)
我正在使用OpenCV对SIFT的实施,并与David Lowe在其网站上提供的实施进行比较。调整一些参数我的结果很好。
答案 2 :(得分:0)
这是我在Python中使用的:
detector = cv2.xfeatures2d.SIFT_create(
nfeatures = 0, # def 0
nOctaveLayers = 3, # def 3
contrastThreshold = 0.04, # def 0.04
edgeThreshold = 10, # def 10
sigma = 1.6) # def 1.6
所有默认值。尽管执行速度很慢,但是我得到了很好的结果。