opencv - py_calib3d - py_depthmap 来自立体图像的深度图

Depth Map from Stereo Images 来自立体图像的深度图

目标

在本课程中,

  • 我们将学习从立体图像创建深度图。

基础知识

在上一节中,我们了解了极线约束和其他相关术语等基本概念。我们还看到,如果我们有两张相同场景的图像,我们可以直观地从中获取深度信息。下面是一张图片和一些简单的数学公式,它们证明了这种直觉。(图片来源:
在这里插入图片描述

上图包含等效三角形。写出它们的等效方程将得到以下结果:
[ d i s p a r i t y = x − x ′ = B f Z ] [disparity = x - x' = \frac{Bf}{Z}] [disparity=xx=ZBf]

x x x x ′ x' x 是图像平面中与场景点 3D 对应的点与其相机中心之间的距离。 B B B 是两个相机之间的距离(我们知道), f f f 是相机的焦距(已知)。简而言之,上述方程表示场景中某个点的深度与对应图像点与其相机中心的距离差成反比。因此,有了这些信息,我们可以得出图像中所有像素的深度。

因此,它会在两个图像之间找到相应的匹配。我们已经看到了极线约束如何使此操作更快、更准确。一旦找到匹配,它就会找到视差。让我们看看如何使用 OpenCV 来实现。

代码

下面的代码片段显示了创建视差图的简单过程。

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt

imgL = cv.imread('tsukuba_l.png',0)
imgR = cv.imread('tsukuba_r.png',0)

stereo = cv.StereoBM_create(numDisparities=16, blockSize=15)
disparity = stereo.compute(imgL,imgR)
plt.imshow(disparity,'gray')
plt.show()

下图包含原始图像(左)及其视差图(右)。如您所见,结果受到大量噪声的污染。通过调整 numDisparities 和 blockSize 的值,您可以获得更好的结果。
在这里插入图片描述

当您熟悉 StereoBM 时,有一些参数,您可能需要微调参数以获得更好和更平滑的结果。参数:

  • texture_threshold:过滤掉没有足够纹理进行可靠匹配的区域
  • 斑点范围和大小:基于块的匹配器通常会在物体边界附近产生“斑点”,匹配窗口一侧捕捉前景,另一侧捕捉背景。在这个场景中,匹配器似乎还在桌子上的投影纹理中找到了小的虚假匹配。为了摆脱这些伪影,我们使用由 speckle_size 和 speckle_range 参数控制的斑点过滤器对视差图像进行后处理。 speckle_size 是像素数,低于该像素数的视差斑点将被视为“斑点”。speckle_range 控制视差值必须接近到何种程度才能被视为同一斑点的一部分。
  • 视差数:将窗口滑过多少像素。视差数越大,可见深度的范围就越大,但需要更多的计算。
  • min_disparity:从左像素 x 位置开始搜索的偏移量。
  • uniqueness_ratio:另一个后过滤步骤。如果最佳匹配视差没有比搜索范围内的所有其他视差好很多,则该像素将被过滤掉。如果texture_threshold和斑点过滤仍然让虚假匹配通过,您可以尝试调整这一点。
  • prefilter_size 和 prefilter_cap:预过滤阶段,它规范化图像亮度并增强纹理以准备进行块匹配。通常您不需要调整这些。

其他资源

练习

  • OpenCV 示例包含生成视差图及其 3D 重建的示例。请查看 OpenCV-Python 示例中的 stereo_match.py​​。
  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力减肥的小胖子5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值