我正在研究立体视觉任务,我想获得立体视觉相机和物体之间的距离 . 我正在使用Matlab与计算机视觉系统工具箱 .
我使用"Camera Calibration Toolbox for Matlab"校准了相机,因此我有左右相机的内在参数和外部参数(右相机的位置和左相机) . 我还有一对经过纠正的图片和他们的差异图 . 为了估计视差,我使用了Matlab函数disparity() . 我知道相机的基线和焦距,但我的结果仍然是错误的 .
baseline = 70 mm
focal length = 25 mm
disparity = 60 pixels
---------------------
depth = baseline * focal length / disparity = 70 * 25 / 60 = 29 mm
但我知道距离是cca 600 mm . 这个公式对吗?单位怎么样? mm * mm / pixel != mm
. 特别是我想使用Camera矩阵(内在参数)进行计算,但我没有弄清楚如何 . 我会感激任何提示 .
1 回答
就像你说的,你必须将单位转换成mm . 为此你需要这个公式
哪里
z =以mm为单位的深度
b =以毫米为单位的基线
F =焦距,单位mm
d =像素深度
s =传感器尺寸,单位为mm /像素 . (通常它提供的是,之前也要进行转换) .
EDIT
有时你的焦点是像素,所以你不需要使用传感器大小 . 所以只需使用你的公式: