Disparity(视差)简单解释

Disparity(视差)怎么理解?

        在研究双目深度图估计时,经常会使用D=B×f/d(D:Depth,B:Baseline,f:focal,d:disparity)这个公式,从视差推理出深度,那么这里的d到底怎么理解?
        现在,伸出你左右手的食指,放在离眼睛不同距离的位置上。先闭上左眼看两只手指,再闭上右眼观察两只手指,可以发现,左右眼看到的东西是不一样的,其次,**距离眼睛近的物体移动的距离(视差)更大,距离眼睛远的物体移动的距离(视差)更小。**将同一空间物理点在不同图像中的映像点对应起来,这个差别,我们称作视差(Disparity)图像。参考下图:
在这里插入图片描述        公式不难发现,视差与深度成反比,关系如下:
在这里插入图片描述
        有了视差disparity,就可以推断出深度图。深度图像也称为距离图像,是指将相机到场景中各点的距离(深度)值作为像素值的图像。深度图获取方法有很多,例如:激光雷达深度成像法、计算机立体视觉成像、坐标测量机法、莫尔条纹法、结构光法等。
        举个例子:(Kinect相机)
在这里插入图片描述

  • 36
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
视差图(Disparity Map)是指将两幅立体图像中对应像素的视差Disparity)信息以灰度图的形式表示出来的一种图像。视差是指同一物体在两幅立体图像中对应像素的水平位移量,它与物体距离的关系呈反比例关系。因此,视差图可以用来计算物体的深度信息,是立体视觉中非常重要的一部分。 OpenCV提供了StereoBM、StereoSGBM等算法来计算视差图。其中,StereoBM是基于块匹配(Block Matching)的算法,而StereoSGBM是基于半全局匹配(Semi-Global Matching)的算法。它们都是基于匹配代价(Matching Cost)的计算原理,即通过比较左右相机像素间的相似度,计算出每个像素的匹配代价,然后根据代价来计算视差值。 使用OpenCV计算视差图的步骤一般包括以下几个步骤: 1. 读入左右相机图像; 2. 对图像进行预处理,如去噪、调整亮度等; 3. 计算视差图,可以选择StereoBM或StereoSGBM等算法; 4. 对视差图进行后处理,如滤波、填充等; 5. 将视差图转换为深度图,或者直接使用视差图进行深度估计。 这里简单给出一个使用StereoBM算法计算视差图的示例代码: ``` import cv2 # 读入左右相机图像 imgL = cv2.imread('left.png', 0) imgR = cv2.imread('right.png', 0) # 创建StereoBM对象 stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15) # 计算视差disparity = stereo.compute(imgL, imgR) # 对视差图进行后处理 disparity = cv2.medianBlur(disparity, 5) # 显示视差图 cv2.imshow('Disparity', disparity) cv2.waitKey(0) cv2.destroyAllWindows() ``` 其中,numDisparities和blockSize分别表示视差搜索范围和块大小,可以根据具体情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值