立体视觉:深度估计
Posted
技术标签:
【中文标题】立体视觉:深度估计【英文标题】:Stereo vision: Depth estimation 【发布时间】:2013-11-26 05:44:09 【问题描述】:我正在处理立体视觉任务,我想获得立体视觉相机和物体之间的距离。我正在使用带有计算机视觉系统工具箱的 Matlab。 我使用“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 / pixel != mm
。特别是我想使用相机矩阵(内在参数)进行计算,但我不知道如何。如有任何提示,我将不胜感激。
【问题讨论】:
【参考方案1】:就像你说的,你必须把单位转换成毫米。为此,您需要这些公式
z = (b*F) / (d*s)
mm = (mm * mm) / (pixel * (mm/pixel))
在哪里
z = 深度,单位为毫米 b = 以毫米为单位的基线 F = 焦距,单位为毫米 d = 像素深度 s = 传感器尺寸,单位为毫米/像素。 (通常它提供 um,转换之前也是如此)。编辑
有时您的焦点是以像素为单位的,因此您无需使用传感器尺寸。所以只需使用您的公式:
z = b*F / d
mm = mm * pixel / pixel
【讨论】:
你可以有这个公式的详细信息here 小心你的包围;你是说z = b*F/d*s
还是z = b*F / (d*s)
?
感谢@Alexandre,这部分已解决,但不幸的是结果并不好。因为我确定基线、焦距和像素大小,所以视差估计可能不是那么准确。请问你知道如何在这个计算中实现相机矩阵吗?
@PrincAm 我想你正在寻找的是:Homography,这篇文章解释了一点,但尝试搜索单应性以获得更多信息。也许你的视差图不好。好看吗?
@Alexandre 非常感谢您的帮助。最后,我使用了更准确的不同场景。我用 Caltech 的 Camera Calibration Toolbox for Matlab 校准了成对的相机。这个工具箱里面有图像校正和立体三角测量的功能。计算基于从 Toolbox 导出的内在参数和外在参数,因此结果具有更高的准确性。以上是关于立体视觉:深度估计的主要内容,如果未能解决你的问题,请参考以下文章
ECCV2020优秀论文汇总|涉及点云处理3D检测识别三维重建立体视觉姿态估计深度估计SFM等方向
IDA-3D 解读基于实例深度感知的自动驾驶立体视觉三维目标检测