我正在尝试使用(C)OpenCv开始使用筛选特征提取 . 我需要使用SIFT提取特征,在原始图像(例如书籍)和场景之间匹配它们,然后计算相机姿势 .
到目前为止,我发现this algorithm使用SURF . 有没有人知道我可以开始使用的基本代码,或者可能是将链接中的算法从SURF转换为SIFT的方法?
提前致谢 .
EDIT: 好的,我为筛选问题制定了解决方案 . 现在我试图使用:solvePnP,任何人都可以帮我一个例子吗?
我正在尝试使用(C)OpenCv开始使用筛选特征提取 . 我需要使用SIFT提取特征,在原始图像(例如书籍)和场景之间匹配它们,然后计算相机姿势 .
到目前为止,我发现this algorithm使用SURF . 有没有人知道我可以开始使用的基本代码,或者可能是将链接中的算法从SURF转换为SIFT的方法?
提前致谢 .
EDIT: 好的,我为筛选问题制定了解决方案 . 现在我试图使用:solvePnP,任何人都可以帮我一个例子吗?
3 回答
查看新OpenCV docs网站的feature2d tutorial section . 有教程,代码显示:
Feature detection例如冲浪
Feature Description
Feature Matching
如果你设法找到图像和场景之间的匹配,那么我建议你应用cv :: findHomography() . 它将使用4个匹配作为输入来计算单应矩阵 .
您可以直接从单应矩阵转换为相机姿势 .
为了使用SIFT而不是SURF,我将
SurfFeatureDetector
更改为SiftFeatureDetector
并将SurfDescriptorExtractor
更改为SiftDescriptorExtractor
. 对于某些图像,我发现组合SURF检测器< - > SIFT描述符产生相对准确的结果,但您应该尝试其他组合(FAST检测器 - FREAK描述符或ORB检测器 - BRISK描述符),具体取决于您的要求 .请按照本教程解决问题的单应性部分:Feature Matching and Homography
此外,也许这会有所帮助:Pose Estimation