OpenCV立体重建--使用Q矩阵和三角测量的区别是什么?

3
我已经在Matlab中多次实现了立体视觉流程,现在我正在尝试在OpenCV中实现一个。我一直在遵循Martin Peris的重建方法: http://blog.martinperis.com/2012/01/3d-reconstruction-with-opencv-and-point.html 在Matlab中实现时,我的流程如下:标定->矫正->立体匹配->反矫正/解扭曲匹配->三角测量匹配。
在OpenCV中,流程如下:标定->矫正->立体匹配->重投影到3D。
使用reprojectTo3D函数,链接在此处: http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#void%20reprojectImageTo3D%28InputArray%20disparity,%20OutputArray%20_3dImage,%20InputArray%20Q,%20bool%20handleMissingValues,%20int%20ddepth%29 它不进行三角测量吗?这怎么可能?它是否假设相机已经处于规范设置并且已经平行?
1个回答

3
OpenCV管道从立体匹配中获取视差地图以进行三角测量,并从校准和矫正步骤中获取相机的投影矩阵。您可以使用triangulatePoints,并利用从stereoRectify函数中获得的两个相机视角下的点的位置以及它们的投影矩阵。主要算法相同,只是使用稍微不同的中间产品。

在我看来,答案中有一个小错误。您可以使用triangulatePoints函数,该函数需要两个摄像机观察到的点的位置以及从stereoRectify函数获得的它们的投影矩阵(而不是它们的位置)。 - Jogging Song
是的,你说得对。我以为投影矩阵包含有关相机位置的信息,但即使是这样,还有很多其他的东西。已修正。 - morynicz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接