基本上你必须先做一个:
SurfFeatureDetector surf(400);
surf.detect(image1, keypoints1);
然后是:
surfDesc.compute(image1, keypoints1, descriptors1);
为什么检测和计算是两种不同的操作?
检测后计算不会产生冗余环路?
我自己发现 .compute
在我的应用程序中是最昂贵的。
.detect
在 0.2 秒
内完成.compute
需要 ~1 秒。有什么方法可以加快 .compute
的速度吗?
最佳答案
关键点的检测只是在图像中选择被认为是“好的特征”的点的过程。
这些关键点的描述符的提取是一个完全不同的过程,它编码该特征的属性,例如与邻居的对比等,因此它可以与来自不同图像、不同场景和方向的其他关键点进行比较。
您描述关键点的方式对于成功匹配可能至关重要,而这确实是关键因素。您描述关键点的方式也决定了匹配速度。例如,您可以将其描述为 float 或二进制序列。
关于opencv - 为什么KeyPoint "detector"和 "extractor"是不同的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11129015/