双目立体视觉的数学原理

1、双目相机--双目视差与深度距离关系推导详解 

转自:http://blog.youkuaiyun.com/xiaohaijiejie/article/details/49721415、http://blog.youkuaiyun.com/wangxiaokun671903/article/details/38322771

相机成像的模型如下图所示:

        P为空间中的点,P1和P2是点P在左右像平面上的成像点,f是焦距,OR和OT是左右相机的光心。由下图可见左右两个相机的光轴是平行的。XR和XT是两个成像点在左右两个像面上距离图像左边缘的距离。


     若两个相机已经校正完成即达到极线平行,两条光轴方向也平行。则视差和物体深度的关系式如下:

                          (1)

可推导到:


                   (2)

d——即为 视差;不是|P1P2|;就是XR-XT,就是XR-XT,就是XR-XT,重要的事情说三遍。

证明过程:
       已知:

         

       由相似三角形原理:

          

     (1)+(2)有:

 (5)

       其中b1可以用b、XR和XT表示。

       可得(5)式变为(1)式:。证毕。





 

 

      由上面两幅图,可知距离像面越近的点,它在左右相机中的视差越大,距离像面越远的点,它在左右相机中的视差越小。

深度Z和视差的关系图如下:



2、双目立体视觉的数学原理

转自:http://blog.youkuaiyun.com/shenziheng1/article/details/52883536

1.前言戏说

双目立体视觉是基于视差原理,由多幅图像获取物体三维几何信息的方法。在机器视觉系统中,双目视觉一般由双摄像机从不同角度同时获取周围景物的两幅数字图像,或有由单摄像机在不同时刻从不同角度获取周围景物的两幅数字图像,并基于视差原理即可恢复出物体三维几何信息,重建周围景物的三维形状与位置。
双目视觉有的时候我们也会把它称为体视,是人类利用双眼获取环境三维信息的主要途径。从目前来看,随着机器视觉理论的发展,双目立体视觉在机器视觉研究中发回来看了越来越重要的作用。本篇帖子主要研究了双目视觉的数学原理。

2.双目立体视觉的数学原理

双目立体视觉是基于视差,由三角法原理进行三维信息的获取,即由两个摄像机的图像平面和北侧物体之间构成一个三角形。一直两个摄像机之间的位置关系,便可以获得两摄像机公共视场内物体的三维尺寸及空间物体特征点的三维坐标。所以,双目视觉系统一般由两个摄像机构成。

2.1 双目立体视觉三维测量原理


上图所示为简单的平视双目立体成像原理图,两摄像机的投影中心连线的距离,即基线距离B。两摄像机在同一时刻观看时空物体的同一特征点P,分别在“左眼”和“右眼”上获取了点P的图像,他们的坐标分别为Pleft=(Xleft,Yleft);Pright=(Xright,Yright)。将定两摄像机的图像在同一平面上,则特征点P的图像坐标的Y坐标一定是相同的,即Yleft = Yright =Y。由三角几何关系可以得到如下关系式:

则视差为:Disparity=Xleft-Xright.由此可以计算出特征点P在摄像机坐标系下的三维坐标:

因此,左摄像机像面上的任意一点只要能在右摄像机像面上找到对应的匹配点,就完全可以确定该点的三维坐标。这种方法是点对点的运算,像平面上所有点只要存在相应的匹配点,就可以参与上述运算,从而获取对应的三维坐标。

2.2 双目立体视觉数学模型


在分析了最简单的平视双目立体视觉的三维测量原理基础上,现在我们就有能力来考虑一般情况。如上图所示,设左摄像机O-xyz位于世界坐标系原点,且没有发生旋转,图像坐标系为Ol-X1Y1,有效焦距为fl;右摄像机坐标系为Or-xyz,图像坐标系为Or-XrYr,有效焦距为fr。那么根据摄像机的投射模型我们就能得到如下关系式:
  
因为O-xyz坐标系与Or-xryrzr坐标系之间的位置关系可通过空间转换矩阵MLr表示为:

同理,对于O-xyz坐标系中的空间点,两个摄像机面点之间的对应关系可以表示为:

于是,空间点三维坐标可以表示为
因此,只要我们通过计算机标定技术获得左右计算机内参数/焦距fr,fl和空间点在左右摄像机中的图像坐标,就能够重构出被测点的三维空间坐标。



### 双目立体视觉定位原理 双目立体视觉是一种模仿人类双眼感知世界的方式的技术,它通过两个摄像头捕捉同一场景的不同视角图像,并利用这些图像之间的差异(即视差)来估算物体的深度信息。这种技术的核心在于从二维平面图像中恢复出三维空间中的深度数据。 #### 视差的概念 视差是指在同一刻,不同摄像机拍摄到的目标物在两幅图像上对应的像素位置之间的水平偏移量[^1]。这一现象可以通过简单的实验验证:将手指放置于眼前并交替睁开左眼右眼,会观察到手指的位置发生移动——这正是视差的表现形式。 #### 几何模型与数学关系 为了实现精确的距离测量,通常采用如下几何模型描述双目系统的结构特性[^2]: - **参数定义** - \( f \): 镜头焦距; - \( b \): 左右相机间的基线长度(baseline distance); - \( d \): 对应点间横向坐标的偏差值,也就是所谓的“视差”。 基于三角形相似原则可以得出目标点至传感器表面垂直方向上的实际物理间隔\( Z \),表达式为: \[ Z=\frac{f*b}{d} \] 其中可以看出,随着视差增大,则意味着该处更靠近设备端;而当视差接近零的候表示无穷远处的对象无法被有效区分开来[^3]。 此外值得注意的是,由于数字化处理过程中不可避免地存在着量化误差以及噪声干扰等因素影响,所以即使是最理想状况下也无法做到完全无误地还原真实世界的全部细节特征。因此,在设计具体应用方案之前还需要充分考虑各种可能存在的局限性约束条件。 ```python def calculate_depth(focal_length, baseline_distance, disparity): """ Calculate depth from stereo vision parameters. Args: focal_length (float): Focal length of the cameras. baseline_distance (float): Distance between two camera centers. disparity (float): Horizontal displacement in pixels. Returns: float: Depth estimation result. """ if disparity == 0: raise ValueError("Disparity cannot be zero.") return (focal_length * baseline_distance) / disparity # Example usage if __name__ == "__main__": # Assuming some example values for demonstration purposes only FL = 8.0 # mm BD = 60.0 # mm DISP = 2.5 # pixel units try: estimated_depth = calculate_depth(FL, BD, DISP) print(f"The calculated depth is {estimated_depth:.2f} millimeters away.") except Exception as e: print(e) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值