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 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:预过滤阶段,它规范化图像亮度并增强纹理以准备进行块匹配。通常您不需要调整这些。

其他资源

  • Ros 立体图像处理 wiki 页面

练习

  • OpenCV 示例包含生成视差图及其 3D 重建的示例。请查看 OpenCV-Python 示例中的 stereo_match.py​​。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1488516.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

从零开始:在linux系统安装MongoDB数据完整指南 新手常用命令

1 前言 MongoDB 是为快速开发互联网应用而设计的数据库系统。MongoDB 的设计目标是极简、灵活、作为 Web 应用栈的一部分。MongoDB 的数据模型是面向文档的,所谓文档是一种类似于json的结构。 官网教程:https://www.mongodb.com/docs/manual/ 2 安装部…

开源AI智能名片商城小程序:重塑中国市场智能化营销的新篇章

摘要 在数字化转型的加速推进下,中国市场的营销领域正经历着前所未有的变革。开源AI智能名片商城小程序作为一种创新的商业模式,融合了精准营销、智能搜索、语音识别、图像识别及创意内容生成等前沿技术,旨在为企业提供一个高效、个性化且用…

IOS微软语音转文本,lame压缩音频

在IOS开发中,用微软进行语音转文本操作,并将录音文件压缩后返回 项目中遇到了利用微软SDK进行实时录音转文本操作,如果操作失败,那么就利用原始音频文件通过网络请求操作,最终这份文件上传到阿里云保存,考…

学习测试14-实战2-介绍CANoe工具

功能: 1,半仿真测试(台架测试):台架上做测试 2,全仿真测试:无实体测试,全模拟 3,截取实车日志:故障报告,对照诊断说明 4,诊断测试组成…

机器学习笔记-01-初识基础(问题-解答自查版)

前言 以下问题以Q&A形式记录,基本上都是笔者在初学一轮后,掌握不牢或者频繁忘记的点 Q&A的形式有助于学习过程中时刻关注自己的输入与输出关系,也适合做查漏补缺和复盘。 本文对读者可以用作自查,答案在后面&#xff0…

使用 Visual Studio 2022 自带的 cl.exe 编译 tensorRT自带测试样例 sampleOnnxMNIST

1. 新建任意文件夹,将 D:\install\tensorRT\TensorRT-8.6.1.6\samples\sampleOnnxMNIST 下面的 sampleOnnxMNIST.cpp 文件复制进来,同时 D:\install\tensorRT\TensorRT-8.6.1.6\samples\sampleOnnxMNIST 下面的 sample_onnx_mnist.vcxproj 中的内容&…

江科大/江协科技 STM32学习笔记P13

文章目录 TIM定时中断1、TIM简介计数器预分频器自动重装寄存器 2、定时器类型基本定时器主模式触发DAC 通用定时器高级定时器 3、定时器原理定时中断基本结构预分频器时序计数器时序RCC时钟树 TIM定时中断 1、TIM简介 定时器的基准时钟一般都是主频72MHz,如果对72M…

IPD推行成功的核心要素(十五)项目管理提升IPD相关项目交付效率和用户体验

研发项目往往包含很多复杂的流程和具体的细节。因此,一套完整且标准的研发项目管理制度和流程对项目的推进至关重要。研发项目管理是成功推动创新和技术发展的关键因素。然而在实际管理中,研发项目管理常常面临着需求不确定、技术风险、人员素质、成本和…

分享一个好用的音频解码工具——音乐解锁

在酷狗、网易云、虾米、酷我等平台下载的音乐只能在各自平台的播放上播放。比如,kgm转MP3的方法想必大家在网上也寻找了各种解决方法,方法也不少,但大多数都是不好用或者需要充米。有没有白嫖的工具呢?当然有了,白嫖是…

如何使用 DSPy 构建多步骤推理的 RAG 系统

一、前言 检索增强生成 (RAG) 系统已经成为构建基于大语言模型 (LLM) 应用的强大方法。RAG 系统的工作原理是:首先使用检索模型从外部知识源检索相关信息,然后使用这些信息来提示 LLM 生成最终的响应。 然而,基本的 RAG 系统(也…

河南萌新联赛2024第(二)场:南阳理工学院(部分题解)

题目D&#xff1a; A*BBBB 题目链接 题意描述&#xff1a; t组输入&#xff0c;每组输入两个整数a&#xff0c;b&#xff0c;其中b的每位数字都相等&#xff0c;a&#xff0c;b非常大&#xff0c;0<a,b<101000000 ,并且a&#xff0c;b都不含前导0. 解题思路&#xff…

[Spring] MyBatis操作数据库(基础)

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

LINUX -exec函数族

1、功能&#xff1a; *让父子进程来执行不相干的操作 *能够替换进程地址空间的代码.text段 *执行另外的程序&#xff0c;不需要创建额外的的地址空间 *当前程序中调用另外一个应用程序 2、执行目录下的程序&#xff1a; *指定执行目录下的程序 int execl(const char *path,…

「12月·长沙」第四届机器人、自动化与智能控制国际会议(ICRAIC 2024)

随着科技的飞速发展&#xff0c;智能机器人在当今社会的重要性愈发凸显。从制造业的自动化生产线&#xff0c;到医疗领域的手术机器人&#xff0c;再到家庭生活中的智能助手&#xff0c;机器人与人工智能的融合正在改变着我们的生产和生活方式。第四届机器人、自动化与智能控制…

How can I fix my Flask server‘s 405 error that includes OpenAi api?

题意&#xff1a;解决包含OpenAI API的Flask服务器中出现的405错误&#xff08;Method Not Allowed&#xff0c;即方法不允许&#xff09; 问题背景&#xff1a; Im trying to add an API to my webpage and have never used any Flask server before, I have never used Java…

自定义协议(应用层协议)——网络版计算机基于TCP传输协议

应用层&#xff1a;自定义网络协议&#xff1a;序列化和反序列化&#xff0c;如果是TCP传输的&#xff1a;还要关心区分报文边界&#xff08;在序列化设计的时候设计好&#xff09;——粘包问题 1、首先想要使用TCP协议传输的网络&#xff0c;服务器和客户端都应该要创建自己…

友思特应用 | 硅片上的光影贴合:UV-LED曝光系统在晶圆边缘曝光中的高效应用

导读 晶圆边缘曝光是帮助减少晶圆涂布过程中多余的光刻胶对电子器件影响的重要步骤。友思特 ALE/1 和 ALE/3 UV-LED 高性能点光源&#xff0c;作为唯一可用于宽带晶圆边缘曝光的 i、h 和 g 线的 LED 解决方案&#xff0c;可高效实现WEE系统设计和曝光需求。 晶圆边缘曝光及处…

<数据集>棉花开花程度识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;13765张 标注数量(xml文件个数)&#xff1a;13765 标注数量(txt文件个数)&#xff1a;13765 标注类别数&#xff1a;4 标注类别名称&#xff1a;[Partially opened, Fully opened boll, Defected boll, Flower] 序…

【Android】大喇叭——广播

广播机制介绍 Android中的广播分为两种类型&#xff1a;标准广播和有序广播 标准广播&#xff1a;是一种完全异步执行的广播&#xff0c;在广播发出之后&#xff0c;所有的广播接收器几乎都会在同一时刻接受到这条广播信息&#xff0c;它们之间没有先后顺序。这种广播的效率会…

ARTMO Table ‘db1.test_mla_result‘ doesn‘t exist解决方案

com.mysql.jdbc.JDBC4PreparedStatement3f3c966c: describe test_mla_result; Java exception occurred: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table db1.test_mla_result doesnt exist解决方案&#xff1a; 打开MySQL的command Line, 输入SHOW TABLES…