2012-07-07 54 views
9

我正在尝试使用(C++)OpenCv筛选特征提取。我需要使用SIFT提取特征,将它们在原始图像(例如书)和场景之间匹配,然后计算摄像机姿态。筛选提取 - opencv

到目前为止,我发现使用SURF的this algorithm。有谁知道我可以从哪里开始使用的基本代码,或者可能是将SURF链接中的算法转换为SIFT的方法?

在此先感谢。

编辑: 好吧,我找出了一个筛选问题的解决方案。现在我正在试图确定相机的姿势。我试图使用:solvePnP,任何人都可以帮助我一个例子吗?

回答

4

如果你设法找到了图像和场景之间的匹配,那么我建议你申请简历:: findHomography()。它将使用4个匹配作为输入来计算单应性矩阵。

您可以直接从单应矩阵转换为相机姿态。

0

对于使用SIFT而不是SURF,我将SurfFeatureDetector更改为SiftFeatureDetectorSurfDescriptorExtractorSiftDescriptorExtractor。对于某些图像,我发现组合SURF检测器< - > SIFT描述符会产生相对准确的结果,但您应该根据您的要求尝试其他组合(FAST检测器 - FREAK描述符或ORB检测器 - BRISK描述符)。

请按照本教程为解决你的问题的一部分单应: Feature Matching and Homography

而且,也许这将帮助:Pose Estimation