matlab 立体视觉,关于Matlab:立体视觉:深度估计

我正在从事立体视觉任务,我想了解立体视觉相机和物体之间的距离。 我正在将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。 特别是我想使用Camera矩阵(内在参数)进行计算,但是我不知道该怎么做。 如有任何提示,我将不胜感激。

如您所说,您必须将单位转换为毫米。 为此,您需要使用以下公式

z = (b*F) / (d*s)

mm = (mm * mm) / (pixel * (mm/pixel))

哪里

z =深度(毫米)

b =基线(毫米)

F =焦距,单位:mm

d =像素深度

s =传感器尺寸,单位为毫米/像素。 (通常以um形式提供,因此在转换之前也是如此)。

编辑

有时您的焦点在像素中,因此您无需使用传感器尺寸。 因此,只需使用您的公式:

z = b*F / d

mm = mm * pixel / pixel

您可以在此处详细了解此公式

小心在那里的包围;您是指z = b*Fd*s还是z = b*F (d*s)?

您是对的,最好的是z = (b*F) (d*s)

感谢@Alexandre,这部分内容已解决,但不幸的是效果并不理想。因为我可以确定基线,焦距和像素大小,所以视差估计可能不太准确。而且,您知道如何在此计算中实现Camera矩阵吗?

@PrincAm我想您正在寻找的是:单应性,本文对此做了一些解释,但是请尝试搜索单应性以获取更多信息。也许您的视差图不好。看起来好吗?

@Alexandre请您帮我转换传感器尺寸吗?我在相机规格参数中找到了图像传感器:2/3(逐行扫描IT CCD类型),像元大小(高x垂直):3.45 x 3.45 um-我假设它是"像素大小"。图片分辨率为2448 x 2048像素。

@PrincAm你是对的。像元大小是指以um为单位的像素大小。因此,您有一个0.00345毫米/像素的像元。

@Alexandre我有两个校正的图像。我可以在两者上确定相同的观点。在左图上,该点的坐标为LX:1472,LY:742,在右图上的坐标为RX:1589,RY:742。我将获得Disparity = RX-LX = 1589-1472 = 114像素。基线为50毫米,焦距为12.5毫米(写在相机镜头上),像素大小为0.00345毫米/像素。 Z =(基线*焦距)/(视差*像素大小)=(50 * 12.5)/(114 * 0.00345)= 1589毫米。但我知道距离是800毫米。难道我做错了什么?

没有。理论永远是好的。但是练习永远不要给出我们真正想要的。您能找到像素的焦点吗?要使用Z = fB / d?

@Alexandre非常感谢您的帮助。最后,我使用了更准确的不同方案。我用Caltech的Matlab相机校准工具箱校准了成对的相机。该工具箱内有用于图像校正和立体三角测量的功能。计算是基于从Toolbox导出的内部和外部参数进行的,因此结果具有更高的准确性。

是的,Focal以像素为单位:)我喜欢这个工具箱。我在工作中经常使用它。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值