目标

在本节中,

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

基础

在上一节中,我们看到了对极约束和其他相关术语等基本概念。我们还看到,如果我们有两个场景相同的图像,则可以通过直观的方式从中获取深度信息。下面是一张图片和一些简单的数学公式证明了这种想法。

上图包含等效三角形。编写它们的等式将产生以下结果:

$$ disparity = x - x' = frac{Bf}{Z} $$

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

因此,它在两个图像之间找到了对应的匹配项。我们已经看到了Epiline约束如何使此操作更快,更准确。一旦找到匹配项,就会发现差异。让我们看看如何使用OpenCV做到这一点。

代码

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

import numpy as npimport cv2 as cvfrom matplotlib import pyplot as pltimgL = 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:预过滤阶段,可标准化图像亮度并增强纹理,以准备块匹配。通常,你不需要调整这些。

练习

  1. OpenCV样本包含生成视差图及其3D重建的示例。查看OpenCV-Python示例代码stereo_match.py​​

opencv threshold_OpenCV-Python 立体图像的深度图 | 五十二相关推荐

  1. OpenCV系列之立体图像的深度图 | 五十二

    目标 在本节中, 我们将学习根据立体图像创建深度图. 基础 在上一节中,我们看到了对极约束和其他相关术语等基本概念.我们还看到,如果我们有两个场景相同的图像,则可以通过直观的方式从中获取深度信息.下面 ...

  2. python 立体图像_OpenCV-Python 立体图像的深度图 | 五十二

    目标 在本节中, 我们将学习根据立体图像创建深度图. 基础 在上一节中,我们看到了对极约束和其他相关术语等基本概念.我们还看到,如果我们有两个场景相同的图像,则可以通过直观的方式从中获取深度信息.下面 ...

  3. OpenCV-Python 立体图像的深度图 | 五十二

    目标 在本节中, 我们将学习根据立体图像创建深度图. 基础 在上一节中,我们看到了对极约束和其他相关术语等基本概念.我们还看到,如果我们有两个场景相同的图像,则可以通过直观的方式从中获取深度信息.下面 ...

  4. python立体图形_Python/OpenCV:从立体图像计算深度图

    我有两个立体图像,我想用它来计算深度图.虽然我不知道C/C++,但我知道python--所以当我发现this tutorial时,我很乐观.Python/OpenCV:从立体图像计算深度图 不幸的是, ...

  5. OpenCV中的立体图像创建深度图

    OpenCV中的立体图像创建深度图 1. 效果图 2. 源码 参考 这篇博客将介绍如何从立体图像创建深度图. 1. 效果图 原图 VS 视差图效果如下: 可以看到结果受到高度噪音的污染.通过调整 nu ...

  6. [Python从零到壹] 五十二.图像增强及运算篇之图像掩膜直方图和HS直方图

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  7. python 怎么得到图像深度图 软件_Python/OpenCV:从立体图像计算深度图

    我有两个立体图像要用来计算深度图.虽然我不幸不知道C/C++,但我知道Python--所以当我发现this tutorial时,我是乐观的. 不幸的是,教程似乎有些过时了.它不仅需要调整以运行(将&q ...

  8. [Python从零到壹] 五十九.图像增强及运算篇之图像锐化Scharr、Canny、LOG实现边缘检测

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  9. [Python从零到壹] 五十八.图像增强及运算篇之图像锐化Sobel、Laplacian算子实现边缘检测

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

最新文章

  1. blob二进制显示在html,使用Blob获取图片并二进制显示实例页面
  2. 天气预报API接口城市代码(XML格式,信息大全)
  3. 各国家分析之 古埃及非洲经济
  4. OpenCV C++ 04 - Change Brightness
  5. jooq映射原理_JOOQ事实:从JPA批注到JOOQ表映射
  6. bp神经网络预测_股指期货价格变动趋势往往反映的是股票价格的走势,因此BP神经网络对股指期货价格的准确预测就是对股票价格的准确预测。...
  7. ST05 跟踪SQL
  8. 字节跳动笔试题:1. 小于N的质数数量;2. 逆时针二维数组;3. 判断a+bc
  9. iview table增加一行减少一行_iView学习笔记(二):Table行编辑操作
  10. 【转】javascript 只允许输入数字总结
  11. python调用程序压缩文件_Python在后台自动解压各种压缩文件的实现方法
  12. 六十星系之31破军独坐子午
  13. 深度学习-维度的理解
  14. 记一次笔记本win键失灵 不能用 windows 徽标键失灵
  15. 2019 中国开源年会即将开启
  16. 3DMAX绘室内装修三维效果图
  17. 文字练习-读书的目的
  18. 混沌麻雀搜索优化算法-附代码
  19. 5G发展的五大动力和四大挑战
  20. The very initial purpose of OO

热门文章

  1. mycli到底有多好用?
  2. 前端学习-flex布局
  3. 【非公开】#include
  4. react apollo_Apollo GraphQL:如何使用React和Node Js构建全栈应用
  5. matlab设置背景颜色
  6. 如何用Python破解验证码,适合新手练手
  7. python3中的property使用方法
  8. 解决WARN TaskSchedulerImpl: Initial job has not accepted any resources;
  9. linux实战(1)
  10. 同步、互斥锁、死锁、异步