除了获取其在右图中的位置外,我还想获取其在左图中的位置和 ROI 的特定对象的 3D 位置(使用立体视觉)。
我在网上找到的都是如何使用(StereoBM::operator()/cvFindStereoCorrespondenceBM)获取视差图。
方法是什么?我怎样才能得到那个物体的差异?获取视差图后是否有直接的方法,或者我应该先在正确的图像中匹配对象以获得视差?
你能推荐一个好的算法来匹配对象吗?请在答案中包含代码。
最佳答案
您的任务包含以下步骤:
1)相机标定
2) 提取特征(手动或通过算法。例如 - SURF、SIFT);
3)匹配特征(由你决定。OpenCV有一个蛮力匹配器)
4) Fundamental and Homography 矩阵估计
5) 校正(OpenCV 立体匹配器仅适用于校正后的图像)
6)视差图
7) 基于你的相机型号的三角测量(可能不是针孔)
这些书中有很好的解释和代码:
1) OpenCV 2 Computer Vision Application Programming Cookbook by Robert Laganière
2) Gary Bradski 学习 OpenCV
3) 3D 计算机视觉技术和算法简介,作者:
Boguslaw Cyganek 和 J. Paul Siebert
希望对您有所帮助! =)
关于c++ - 特定对象的立体对应和 3D 位置 (ROI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14329847/