除了获取其在右图中的位置之外,我还对在给定左图像中的位置和 ROI 的情况下获取特定对象的 3D 位置(使用立体视觉)感兴趣。
我在网上找到的只是如何使用 (StereoBM::operator()/cvFindStereoCorrespondenceBM) 获取视差图。
方法是什么?如何获得该对象的差异?获得视差图后是否有直接的方法,或者我应该首先在正确的图像中匹配对象以获得视差?
你能推荐一个好的算法来匹配对象吗?请在答案中包含代码。
您的任务包含以下步骤:
1) 相机校准
2) 提取特征(手动或通过算法。例如 - SURF、SIFT);
3) 匹配特征(由您决定。OpenCV 有一个蛮力匹配器)
4) 基本矩阵和单应矩阵估计
5) 校正(OpenCV 立体匹配器仅适用于校正后的图像)
6) 视差图
7) 基于您的相机模型的三角测量(可能不是针孔)
这些带有代码的书籍提供了很好的解释:
1)Robert Laganière 的 OpenCV 2 计算机视觉应用程序编程食谱
2)Gary Bradski 的学习 OpenCV
3)Boguslaw Cyganek 和 J. Paul Siebert 的 3D 计算机视觉技术和算法简介
希望能帮助到你!=)