9

我正在尝试使用(C++)OpenCv 开始使用筛选特征提取。我需要使用 SIFT 提取特征,在原始图像(例如一本书)和场景之间进行匹配,然后计算相机姿势。

到目前为止,我已经使用 SURF找到了这个算法。有谁知道我可以从中开始的基本代码,或者可能是一种将链接中的算法从 SURF 转换为 SIFT 的方法?

提前致谢。

编辑: 好的,我为筛选问题制定了解决方案。现在我正在尝试确定相机姿势。我正在尝试使用:solvePnP,有人可以帮我举个例子吗?

4

3 回答 3

6

查看新 OpenCV 文档网站的feature2d 教程部分。有代码显示的教程:

  1. 使用例如 SURF 进行特征检测
  2. 功能描述
  3. 特征匹配
于 2012-07-07T20:02:49.087 回答
4

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

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

于 2012-09-03T13:27:19.787 回答
0

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

请按照本教程解决问题的单应性部分: 特征匹配和单应性

此外,也许这会有所帮助:姿势估计

于 2012-11-08T14:30:16.500 回答