OpenCV-Python(45):立体图像中的深度地图

基础

        在OpenCV中,深度地图通常是通过计算立体视觉(stereo vision)或结构光(structured light)技术得到的。立体视觉是通过将两个或多个摄像机(或图像)的视角结合起来,计算物体的深度信息。而结构光技术则是通过投射特定的光纹或模式到场景中,然后通过观察光纹的形变来计算物体的深度。通过学习和了解了对极约束的基本概念和相关术语后。我们可以确定,如果同一场景有两幅图像的话我们在直觉上就可以获得图像的深度信息。下面的这幅图和其中的数学公式可以证明我们的直觉是对的。

        x 和x' 分别是图像中的点到3D 空间中的点和到摄像机中心的距离。B 是这两个摄像机之间的距离,f 是摄像机的焦距。上面的等式告诉我们点的深度与x 和x' 的差成反比。所以根据这个等式我们就可以得到图像中所有点的深度图。这样就可以找到两幅图像中的匹配点了。前面我们已经知道了对极约束可以使这个操作更快更准。一旦找到了匹配就可以计算出disparity 了。让我们看看在OpenCV 中怎样做吧。 

代码

在OpenCV中,可以使用以下函数来生成深度地图:

1.cv2.StereoBM_create()cv2.StereoSGBM_create():这些函数用于执行立体匹配算法,从而计算出左右摄像机间的视差图。然后,可以使用视差图计算深度地图。

2.cv2.reprojectImageTo3D():这个函数可以将视差图转换为三维点云,其中每个点的坐标表示其在世界坐标系中的位置。

3.cv2.createStructuredLight()cv2.unwrapPhaseMap()cv2.reconstructPhaseMap():这些函数用于处理结构光图像,从而计算出物体的深度地图。

下面的代码显示了构建深度图的简单过程:

import numpy as np
import cv2
from matplotlib import pyplot as plt
imgL = cv2.imread('tsukuba_l.png',0)
imgR = cv2.imread('tsukuba_r.png',0)
stereo = cv2.createStereoBM(numDisparities=16, blockSize=15)
disparity = stereo.compute(imgL,imgR)
plt.imshow(disparity,'gray')
plt.show()

        下图左侧为原始图像,右侧为深度图像。如图所示,结果中有很大的噪音。通过调整numDisparities 和blockSize 的值,我们会得到更好的结果。 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka 的架构

实验过程 1.三个虚拟机中解压kafka软件包 tar -zxvf kafka_2.11-1.1.1.tgz 2.修改 3 个节点配置文件 在 zookeeper 节点,进入 kafka_2.11-1.1.1/config 目录下,编辑 server.properties 文件 [rootdb1 ~]# cd kafka_2.11-1.1.1/config [rootdb1 con…

智能路由器 端口映射 (UPnP) Padavan内网端口映射配置方法

新版本Padavan 4.4内核的端口映射配置和老版本的不太一样,因为新版本默认是启用的 UPnP端口映射, 同时默认使用的是 IGD UPnP自动端口映射, UPnP名词解释: UPnP通用即插即用,是一组协议的统称,是一种基于TCP/IP、UDP和HTTP的分布式、开放体系&#xff…

P9847 [ICPC2021 Nanjing R] Crystalfly 题解 (SPJ)

[ICPC2021 Nanjing R] Crystalfly 传送门? 题面翻译 给定一个 n ( 1 ≤ n ≤ 1 0 5 ) n(1\le n\le10^5) n(1≤n≤105) 个节点的树,每个节点上有 a i a_i ai​ 只晶蝶。派蒙最初在 1 1 1 号节点,并获得 1 1 1 号节点的所有晶蝶&#xf…

NetSuite学习笔记 - 中心

一、什么是中心? 对于每个用户,NetSuite 会根据用户的指定角色显示一组可变的标签页面,称为中心。通俗来讲呢,NetSuite的中心其实就是我们常说的“导航菜单”。 只是在我过去常见的系统中,导航菜单一般都是固定的&am…

Elasticsearch Windows部署-ELK技术栈

1、下载Elasticsearch、kibana、logstash 本文不介绍ELK相关原理知识,只记录部署操作过程 下载地址Past Releases of Elastic Stack Software | Elastic 选择同一版本,这里选择是当前最新版本8.11.3 解压放在同目录下,方便后续操作与使用 …

浅入浅出Spring架构设计

浅入浅出Spring架构设计 前言 为什么需要Spring? 什么是Spring? 对于这样的问题,大部分人都是处于一种朦朦胧胧的状态,说的出来,但又不是完全说的出来,今天我们就以架构设计的角度尝试解开Spring的神秘面纱。 本篇文章以由浅…

RK3566 linux加入uvc app

SDK中external/uvc_app/目录提供了将板卡模拟成uvc camera的功能。 一、buildroot使能uvc_app 1、进入到buildroot目录 在sdk目录下执行以下命令: cd buildroot 2、选择defconfig 执行命令: source build/envsetup.sh 输入数字然后回车选择板卡&…

两数之和(Hash表)[简单]

优质博文:IT-BLOG-CN 一、题目 给定一个整数数组nums和一个整数目标值target,请你在该数组中找出"和"为目标值target的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元…

工具推荐 |Devv.ai — 最懂程序员的新一代 AI 搜索引擎

介绍 伴随 GPT 的出现,我们可以看到越来越多的 AI 产品,其中也不乏针对程序员做的代码生成工具。 今天介绍的这款产品是一款针对中文开发者的 AI 搜索引擎,Devv.ai 使用 Devv.ai 的使用非常简单,就是传统的搜索场景&#xff…

JVM:类加载机制

JVM:类加载机制 1. 什么是类加载机制2. 类加载的过程(生命周期)2.1 加载2.2 校验(验证)2.3 准备2.n 六种情况对类进行“初始化” 1. 什么是类加载机制 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析…

数字化赋能TPM:开启智能生产新篇章

随着科技的快速发展,数字化已经成为企业提升生产效率、优化管理的重要手段。对于设备密集型的制造业而言,传统的TPM(全员生产维护)方式已经难以满足现代生产的需求。如何将数字化技术与TPM相结合,赋能TPM,提…

机器学习:线性回归模型的原理、应用及优缺点

一、原理 线性回归是一种统计学和机器学习中常用的方法,用于建立变量之间线性关系的模型。其原理基于假设因变量(或响应变量)与自变量之间存在线性关系。 下面是线性回归模型的基本原理: 模型拟合: 通过最小二乘法&…

2024华数杯国际数学建模B题思路+代码+模型+论文

2024华数杯国际数学建模B题思路代码模型论文:1.17上午第一时间更新,详细内容见文末名片 问题B:光伏电 背景 中国的电力构成包括传统的能源发电(如煤炭、石油和天然气)、可再生能源发电 (如水力发电、风能…

SpringMVC 文件上传和下载

文章目录 1、文件下载2、文件上传3. 应用 Spring MVC 提供了简单而强大的文件上传和下载功能。 下面是对两者的简要介绍: 文件上传: 在Spring MVC中进行文件上传的步骤如下: 在表单中设置 enctype“multipart/form-data”,这样…

Linux网络文件共享服务之NFS

目录 一、NFS简介 1、NFS协议 2、NFS存储 3、NFS原理 4、NFS相关软件介绍 5、NFS配置文件 二、exportfs和showmount命令 三、搭建NFS服务器 1、搭建过程 ​2、客户端权限问题 2.1 权限参数说明 2.2 配置客户端的读写权限 2.3 创建文件的属主和属组权限 2.4 客户端…

供应链|库存定位的高效策略:如何巧妙调换安全库存换取服务速度?

论文作者:Hanzhang Qin, David Simchi-Levi, Ryan Ferer, Jonathan Mays, Ken Merriam, Megan Forrester, Alex Hamrick 论文解读者:马玺渊 王艺桦 编者按 本次解读的文章发表于 Production and Operations Management,原文信息:…

vs2022配置OpenCV测试

1,下载Opencv安装包 OpenCV官网下载地址:Releases - OpenCV 大家可以按需选择版本进行下载,官网下载速度还是比较慢的,推荐大家使用迅雷进行下载 下载安装包到自定义文件夹下 双击安装 按以下图示进行安装 2、 添加环境变量 打…

Servlet项目教学(附实例代码)

【员工信息管理】 1.员工信息管理 1.1 介绍 用户进行登录后,可以对员工信息进行管理(增删查改),等操作.如果用户没有登录,不能访问员工操作页面.并且员工操作页面显示当前登录用户信息. 1.2 技术点 使用VueElementUI充当前端界面,使用ServletJDBCMysql提供数据管理控制.后端统…

二次开发在线预约上门服务、预约到家系统 增加开发票功能 轮播图链接跳转 uniapp代码

客户具体要求: 1、在我的个人中心里面增加一个 开票功能,点击进去之后可以查看到能开票的订单列表,如果是个人是填写姓名电话邮箱,就是填写单位名称 税号 邮箱,提交申请到后台审核,如果审核通过后线下人工…

各种设备上恢复已删除的文件和文件夹的数据恢复软件清单

最好的数据恢复软件可以简单轻松地恢复计算机、移动设备或存储介质上已删除的文件和文件夹。 询问任何经历过数据丢失的人这是否是一种有趣的经历,他们会告诉您数据丢失,无论是由于硬件或软件故障、意外删除还是网络犯罪,都会带来极大的压力…