深度图(Depth Map)

文章目录

  • 深度图
  • 深度图是什么
  • 深度图的获取方式
    • 激光雷达或结构光等传感器的方法
      • 激光雷达
      • RGB-D相机
    • 双目或多目相机的视差信息计算深度
    • 采用深度学习模型估计深度
  • 深度图的应用场景
  • 扩展阅读

深度图

深度图是什么

深度图(depth map)是一种灰度图像,其中每个像素点距离相机的距离信息。它是计算机视觉中常用的一种图像表示方式,用于描述场景的三维结构。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用张图简单直白的表示就是,越红的地方,代表距离观察者(即屏幕)的距离越近。看到图片中的锥体,距离我们观察的位置举例会比较近,所以颜色的更红。而图中的面具,由于是倾斜摆放的,其底部距离我们会更近一点,所以其底部的颜色要比顶部的颜色更红一些。

深度图的获取方式

深度图的发展历史可以追溯到20世纪60年代。最初,深度图像是通过手工标注或利用先验知识推测出来的。随着计算机视觉技术的发展,深度图像的获取方法和算法也不断进步和完善。

深度图的获取方式有多种,常见的方法包括:

  1. 通过激光雷达或结构光等传感器获取深度信息,再将其转换为深度图像。

  2. 利用双目或多目相机的视差信息计算深度,再将其转换为深度图像。

  3. 利用先验知识或模型对图像进行分析,推测出每个像素点的深度信息。

激光雷达或结构光等传感器的方法

激光雷达或结构光等传感器获得的深度,可以得到绝对深度,因为他们的数据是测出来的,根据TOF计算得到的真实距离。所以在连续的图片序列中,由于深度是绝对的,他们具有一样的参考价值。

激光雷达

这种方法也被叫做TOF方法(Time Of Fly)即通过激光/雷达波发出和收到的时间差,结合光速,计算信号在这段时间所走过的路程,所以也就能获得不同物体距离激光发射点的距离了。

RGB-D相机

另外,除了雷达之外激光雷达相机也可以实现类似的效果,也可以利用激光雷达和结构光的配合,获得更加精准的深度数值

双目或多目相机的视差信息计算深度

我们可以模拟人眼的工作方式,使用两个摄像机,这种方法被称为立体视觉。

在下图中,p是空间一点,z是其深度,Ol和Or是左右两个相机,对应上述的O和O’。f是相机焦距。

根据相似三角形的公式:

相机的焦距,两相机的距离都是已知的,这样我们可以轻松地知道一个点的深度与x和x’的查成反比,从而得到图中所有点的深度图。

OpenCV也提供了相关的计算函数:

这样我们就能够大致计算出图中的深度了:

可能你会想问,上面的深度图片都是彩色的,为什么这张变成和黑白的,但实际上
这才是深度图本来的样子
我们通过OpenCV的apploycolor map函数对灰度图进行了颜色的映射,让结果看起来更加的生动和fancy。

下面给一个示例来说明applyColorMap的作用:

def ColorMap_demo():img = cv.imread("lena.jpg",cv.IMREAD_GRAYSCALE)if img.shape[0]==0:print("load image fail!")returnwindowname="applyColorMap"cv.namedWindow(windowname,cv.WINDOW_AUTOSIZE)pos=0cv.createTrackbar("Type",windowname,pos,22,callback_trackbar)while True:pos = cv.getTrackbarPos("Type",windowname)imgdst = np.copy(img)if pos != 0 :imgdst = cv.applyColorMap(img,pos-1)cv.imshow(windowname,imgdst)if cv.waitKey(10) == 27:break
if __name__ == "__main__":ColorMap_demo()


通过双目或多目相机获得的深度,也是绝对的深度,因为其原理是通过固定位置相机的相似三角形计算距离的。所以在连续的图片序列中,由于深度是绝对的,他们具有一样的参考价值。

采用深度学习模型估计深度

典型的采用深度学习的方式来估计RGB图像的深度的方法如下所示:

  1. 从RGBD相机的输出结果中,获取深度分量,得到真实的深度图。
  2. 仅输入RGB图,让模型生成对应的深度估计图
  3. 对模型的深度估计图和实际的深度图求差,获取估计的误差
  4. 深度学习网络的优化目标即为减小估计深度与实际深度的误差
  5. 在经过大量的训练之后,就能获得一个可以根据RGB图估计深度图的网络了

这里主要是指用模型估计图片中的物体深度,这样的方式获得的结果,在一张图片中不同的像素点之间的相对深度差,但是在在连续的图片序列中,两帧之间的深度估计结果没有必然的联系。例如,假设上面的面具是一个视频序列,在第一帧面具左眼的深度为100,面具右眼的深度估计为110.第二帧中,面具的左眼的深度可能是1000,而右眼的深度可能为1010。

可以发现,两帧之间同一区域的深度,在采用深度学习模型估计的时候,其绝对值结果是没有参考价值的:例如同样都是左眼,在第一帧中的深度和第二帧的深度估计数值甚至不在一个量级。

但是一帧内的不同位置,其相对深度是具有参考性的:例如不论在哪一帧,左眼和右眼的深度差始终为10.

这也正是由于深度学习模型训练的时候的策略所导致的,单目预测深度基本都是这种的拟合回归,本身数学上就是一个病态问题,不可能从单张2D的图片恢复出三维的信息。因为本身就是缺少信息的。

深度图的应用场景

  1. 三维重建:深度图可用于创建三维模型,例如建筑物、雕塑、人体等。

  2. 虚拟现实:深度图可用于创建虚拟现实环境,例如游戏、培训模拟器等。

  3. 自动驾驶:深度图可用于帮助自动驾驶汽车识别道路、障碍物和其他车辆。

  4. 医学成像:深度图可用于医学成像,例如X射线、CT扫描和MRI。

  5. 图层分隔:判断图片素材中物体的远近关系,实现图层前后信息的获取。

这里可以举一个自动驾驶的例子,即通过激光雷达获取周围的环境信息,用来感知各种物体与车体的距离。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

扩展阅读

显著图(Saliency Map)

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

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

相关文章

【qemu逃逸】HWS2017-FastCP

前言 虚拟机用户名:root 虚拟机密码:无密码 本题有符号,所以对于设备定位啥的就不多说了,直接逆向设备吧。 设备逆向 在 realize 函数中设置一个时钟任务,并且可以看到只注册了 mmio,大小为 0x100000。…

SpringBoot整合Kafka (二)

📑前言 本文主要讲了SpringBoot整合Kafka文章,如果有什么需要改进的地方还请大佬指出⛺️ 上文链接:SpringBoot整合Kafka (一) 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页…

PTL货位指引标签为仓储管理打开新思路

PTL货位指引标签是一种新型的仓储管理技术,它通过LED灯光指引和数字显示,为仓库管理带来了全新的管理思路和效率提升,成为现代物流仓库管理中的重要工具。 首先,PTL货位指引标签为仓储管理业务带来了管理新思路。传统的仓库管理中…

iOS Crash 治理:淘宝VisionKitCore 问题修复

本文通过逆向系统&#xff0c;阅读汇编指令&#xff0c;逐步找到源码&#xff0c;定位到了 iOS 16.0.<iOS 16.2 WKWebView 的系统bug 。同时苹果已经在新版本修复了 Bug&#xff0c;对于巨大的存量用户&#xff0c;仍旧会造成日均 Crash pv 1200 uv 1000&#xff0c; 最终通…

串口中断(10)自定义通讯协议-协议带数据长度及接收应答处理

本文为博主 日月同辉&#xff0c;与我共生&#xff0c;csdn原创首发。希望看完后能对你有所帮助&#xff0c;不足之处请指正&#xff01;一起交流学习&#xff0c;共同进步&#xff01; > 发布人&#xff1a;日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

【无标题】【教3妹学编程-算法题】2918. 数组的最小相等和

3妹&#xff1a;呜呜&#xff0c;烦死了&#xff0c; 脸上长了一个痘 2哥 : 不要在意这些细节嘛&#xff0c;不用管它&#xff0c;过两天自然不就好了。 3妹&#xff1a;切&#xff0c;你不懂&#xff0c;影响这两天的心情哇。 2哥 : 我看你是不急着找工作了啊&#xff0c; 工作…

帷幄内容管理系统:从立人设、做内容到定向投流,品牌 KOS 体系打造「百万导购」

随着公域流量越来越贵&#xff0c;获客成本越来越高&#xff0c;品牌们已经越来越不满足于高曝光&#xff0c;而是更多地关注起销售转化率。继 KOL、KOC&#xff08;关键意见消费者&#xff09; 之后&#xff0c;KOS&#xff08;关键意见销售&#xff09;营销模式走入品牌的视野…

排序算法之-冒泡

顺序排序算法原理 从头开始遍历未排序数列&#xff0c;遍历时比较相邻的两个元素&#xff0c;前面的大于后面的&#xff0c;则双方交换位置&#xff0c;一直比较到末尾&#xff0c;这样最大的元素会出现在末尾&#xff0c;接着再依次从头开始遍历剩余未排序的元素&#xff0c;…

MSQL系列(十四) Mysql实战-SQL语句 left join inner join On和Where语句的区别

Mysql实战-SQL语句On和Where语句的区别 前面我们讲解了Join的底层驱动表 选择原理&#xff0c;也知道了基本的内连接外连接两种SQL查询表连接方式 但是我们再查询多表的时候on和where语句到底有什么区别? where是过滤条件 ,不满足where的一定不会出现在结果中on是连接条件, …

网上3D虚拟数字展厅进一步增强营销效果

数字化营销已经成为了企业推广产品和服务的重要手段。由于制作成本及周期限制&#xff0c;企业或个人难以拥有个性化的3D云展厅&#xff0c;顺应市场需求和时代发展&#xff0c;3D云展数字平台作为一种新型的数字化营销工具&#xff0c;具有许多传统营销方式无法比拟的优势。 3…

怎么调整excel表里面所有单元格中,某个相同字体大小,单元格中其他文字大小不变?

环境: excel 2021 python3.8 问题描述: 怎么调整excel表里面所有单元格里面1这个字体大小,单元格里面其他文字不变? excel表里面。很多单元格都有1,1和文字都是10号字体,现在想把全部1字字体调整为16号其他字大小都不变 解决方案: 一、使用python来实现,经过测…

iOS加固原理与常见措施:保护移动应用程序安全的利器

目录 iOS加固原理与常见措施&#xff1a;保护移动应用程序安全的利器 前言 一、iOS加固的原理 1. 代码混淆 2. 加密算法 3. 防调试技术 4. 签名校验 二、iOS加固的常见措施 1. 代码混淆 2. 加密算法 3. 防调试技术 4. 签名校验 三、iOS加固的效果和注意事项 参考…

如何在macbook上删除文件?Mac删除文件的多种方法

在使用MacBook电脑时&#xff0c;桌面上经常会积累大量的文件&#xff0c;而这些文件可能已经不再需要或已经过时。为了保持桌面的整洁和提高电脑性能&#xff0c;我们需要及时删除这些文件。本文将介绍MacBook怎么删除桌面文件&#xff0c;以及macbook删除桌面文件快捷键。 一…

为什么说亚马逊、Lazada、虾皮等跨境平台测评很重要?

在亚马逊、shopee、Lazada的生态系统中&#xff0c;给店铺测评是一个重要的环节&#xff0c;优质的评论可以给潜在的买家对于产品质量更加信任&#xff0c;其次对于提高产品的销售跟排名也可以起到关键的作用 为什么测评重要&#xff1f; 1. 提高页面权重 一般页面有三个部分…

【大数据】Apache NiFi 数据同步流程实践

Apache NiFi 数据同步流程实践 1.环境2.Apache NIFI 部署2.1 获取安装包2.2 部署 Apache NIFI 3.NIFI 在手&#xff0c;跟我走&#xff01;3.1 准备表结构和数据3.2 新建一个 Process Group3.3 新建一个 GenerateTableFetch 组件3.4 配置 GenerateTableFetch 组件3.5 配置 DBCP…

Linux学习第36天:Linux RTC 驱动实验:时间是一条流淌的河

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 RTC就是实时时钟。 本笔记主要学习Linux RTC驱动试验&#xff0c;主要内容包括Linux内核RTC驱动简介、I.MX6U内部RTC分析、RTC时间查看与设置。因为Linux内核已经…

matplotlib.pyplot学习笔记

import matplotlib.pyplot as plt import numpy as np # 画单条线 plot([x], y, [fmt], *, dataNone, **kwargs) # 画多条线 plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs) >>> plot(x, y) # 创建 y 中数据与 x 中对应值的二维线图&#xff0c;使用…

【GEE】8、Google 地球引擎中的时间序列分析【时间序列】

1简介 在本模块中&#xff0c;我们将讨论以下概念&#xff1a; 处理海洋的遥感图像。 从图像时间序列创建视频。 GEE 中的时间序列分析。 向图形用户界面添加基本元素。 2背景 深水地平线漏油事件被认为是有史以来最大的海上意外漏油事件。该井释放了超过 490 万桶石油&am…

JAVA自己写什么功能可以提升技术?

JAVA自己写什么功能可以提升技术&#xff1f; 对于技术提升这个话题&#xff0c;勤于练习&#xff0c;多敲多积累这是一个必经的过程。那我们展开来详细的说一说&#xff0c;比如&#xff1a; 实现各种数据结构和算法&#xff0c;比如链表、树、图、排序、搜索等。这可以提高…

MAC设备(M1)环境下编译安装openCV for Java

最近发现一个需求&#xff0c;可以用openCV来实现&#xff0c;碰巧又新买了mac笔记本&#xff0c;就打算利用业余时间安装下openCV。这里将主要步骤记录下&#xff0c;希望能帮助有需要的人。 1、准备编译环境 #查询编译opencv相关依赖 brew info opencv查询结果如下图所示&a…