【问题标题】:Understanding Disparity Map in Opencv理解 Opencv 中的视差图
【发布时间】:2014-07-18 14:16:56
【问题描述】:

谁能解释一下视差图到底返回了什么。因为文档中给出的内容不多,而且我有一些相关的问题。

  1. 它是否返回两个图像的像素差值?
  2. 如何在深度估计公式中使用视差值,即

    Depth = focalLength*Baseline/Disparity

  3. 我在某处读到视差图给出了深度 f(z) 的函数

请解释它的含义。如果深度纯粹是一个绝对值,它如何生成为一个函数,或者它是一个关于像素的函数?

【问题讨论】:

    标签: opencv disparity-mapping


    【解决方案1】:

    两个对应图像点的差异d = pl − pr称为视差。

    这里,pl是左立体图像中点的位置,pr是右立体图像中点的位置。

    对于平行光轴,视差为d = xl − xr

    ⇒ 搜索深度信息相当于搜索视差,即对应像素 距离与视差成反比

    视差值在所谓的视差图中可视化,参考图像(此处:左)中每个像素的每个视差值被编码为灰度值。同样对于没有任何对应关系的像素,定义了一个灰度值(这里:黑色)。所谓groundtruth-map就是包含对应问题理想解的视差图。

    视差与深度信息的关系:

    下图代表两个摄像头(左和右),然后尝试找到 点 p(x_w, z_x) 的深度。

    深度的结果是给我的:

    所以,可以看出深度与视差成反比。

    更新:

    要计算视差,您需要两个图像 (1) 左图像和 (2) 右图像。假设左侧图像中position (60,30) 处有一个像素,右侧图像中position (40,30) 处存在相同像素,那么您的差异将是:60 - 40 = 20。因此,视差图为您提供了左图像和右图像之间像素位置之间的差异。如果左侧图像中存在像素但右侧图像中不存在,则视差图中该位置的值将为零。一旦你得到左图每个像素的视差值,我们就可以使用我答案末尾给出的公式轻松计算深度。

    【讨论】:

    • 所以你的意思是说,对于每个 x 和 y 像素坐标,视差图中都有一个相应的视差,并且使用上面公式中的特定值,我将得到该点的深度。? @skm
    猜你喜欢
    • 2013-12-19
    • 2015-06-09
    • 2011-05-27
    • 2014-09-21
    • 2018-03-17
    • 1970-01-01
    • 2016-06-24
    • 2013-10-13
    • 2018-10-02
    相关资源
    最近更新 更多