我试图用openCV实现SIFT,并且我参考了这些链接link1和link2。此外,我还阅读了Lowe写的关于SIFT的论文。我对链接1和链接2中的代码有一些问题。使用openCV在图像中实现SIFT
cv :: SiftFeatureDetector detector(0.05,5.0); cv :: SiftDescriptorExtractor提取器(3.0);
我无法完全理解上述函数中的参数。如果我将第一个函数修改为cv :: SiftFeatureDetector检测器(0.05,10.0); ,有一个运行时间OpenCV错误:断言失败< firstOctave> = - 1 %% actualNLayers < = nOctaveLayers>。
此外,我没有意识到SiftDescriptorExtractor提取器()中的参数。我知道在关键点匹配中存在距离比率,但范围是[0,1]。
我想修改我用来匹配图片的方法,所以我需要提取描述符和每个关键点的主导方向。如何提取每个关键点的描述符和主导方向?
非常感谢您的回复。
我寻觅其他物品和实施SIFT通过OpenCV的。我使用cv :: SIFT siftDetectorExtractor = cv :: SIFT(0,3,0.04,10,1.6);和siftDetectorExtractor(tmp,cv :: Mat(),keypoints1,sifts1);.但是,当我想知道关键点的协调时,我使用keypoints1 [0] .pt并且结果不是整数。为什么?图像是数字的,所以关键点的协调需要是整数。 – Kuo 2014-12-05 15:21:32
此外,我已经通过sifts1.at(0,0)访问sifts1.at (0,127)描述符的第一个关键点。我是否需要将sifts1.at (0,0)的顺序在匹配前旋转到sifts1.at (0,127)和其他关键点的描述符?或者它的顺序是从主导方向开始,并自动结束在主导方向?所以我可以直接使用结果进行匹配。 –
Kuo
2014-12-05 15:25:19
此外,我仍然无法找到cv :: SiftDescriptorExtractor提取器()中参数的含义;你在我的学习中帮助我很多。非常感谢您的回复。 – Kuo 2014-12-05 15:27:41