3D传感器的原理

article/2025/9/14 17:46:01

在计算机视觉系统中,三维场景信息为图像分割、目标检测、物体跟踪等各类计算机视觉应用提供了更多的可能性,而深度图像(Depth map)作为一种普遍的三维场景信息表达方式得到了广泛的应用。深度图像的每个像素点的灰度值可用于表征场景中某一点距离摄像机的远近。 
获取深度图像的方法可以分为两类:被动测距传感和主动深度传感。 
In short:深度图像的像素值反映场景中物体到相机的距离,获取深度图像的方法=被动测距传感+主动深度传感。

被动测距传感

被动测距传感中最常用的方法是双目立体视觉[1,2],该方法通过两个相隔一定距离的摄像机同时获取同一场景的两幅图像,通过立体匹配算法找到两幅图像中对应的像素点,随后根据三角原理计算出时差信息,而视差信息通过转换可用于表征场景中物体的深度信息。基于立体匹配算法,还可通过拍摄同一场景下不同角度的一组图像来获得该场景的深度图像。除此之外,场景深度信息还可以通过对图像的光度特征[3]、明暗特征[4]等特征进行分析间接估算得到。 
这里写图片描述

上图展示了Middlebury Stereo Dataset中Tsukuba场景的彩色图像、视差实际值与用Graph cuts算法得到的立体匹配误差估计结果,该视差图像可以用于表征场景中物体的三维信息。 
可以看到,通过立体匹配算法得到的视差图虽然可以得到场景的大致三维信息,但是部分像素点的时差存在较大误差。双目立体视觉获得视差图像的方法受限于基线长度以及左右图像间像素点的匹配精确度,其所获得的视差图像的范围与精度存在一定的限制。

In short, 常用于深度图像增强领域的测试数据集Middlebury Stereo Dataset属于被动测距传感;被动测距传感=两个相隔一定距离的相机获得两幅图像+立体匹配+三角原理计算视差(disparity)

主动测距传感

主动测距传感相比较于被动测距传感最明显的特征是:设备本身需要发射能量来完成深度信息的采集。这也就保证了深度图像的获取独立于彩色图像的获取。近年来,主动深度传感在市面上的应用愈加丰富。主动深度传感的方法主要包括了TOF(Time of Flight)、结构光、激光扫描等。

TOF相机

TOF相机获取深度图像的原理是:通过对目标场景发射连续的近红外脉冲,然后用传感器接收由物体反射回的光脉冲。通过比较发射光脉冲与经过物体反射的光脉冲的相位差,可以推算得到光脉冲之间的传输延迟进而得到物体相对于发射器的距离,最终得到一幅深度图像。 
TOF相机所获得的深度图像有以下的缺陷: 
1. 深度图像的分辨率远不及彩色图像的分辨率 
2. 深度图像的深度值受到显著的噪声干扰 
3. 深度图像在物体的边缘处的深度值易出现误差,而这通常是由于一个像素点所对应的场景涵盖了不同的物体表面所引起的。 
除此之外,TOF相机的通常价格不菲。 
这里写图片描述

结构光与Kinect

结构光是具有特定模式的光,其具有例如点、线、面等模式图案。

基于结构光的深度图像获取原理是:将结构光投射至场景,并由图像传感器捕获相应的带有结构光的图案。

由于结构光的模式图案会因为物体的形状发生变形,因此通过模式图像在捕捉得到的图像中的位置以及形变程度利用三角原理计算即可得到场景中各点

的深度信息。

结构光测量技术提供了高精度并且快速的三维信息,其在汽车、游戏、医疗等领域均已经得到了广泛的应用。

基于结构光的思想,微软公司推出了一款低价优质的结合彩色图像与深度图像的体感设备Kinect,该设备被应用于如人机交互(Xbox系列游戏机)、三维场景重建、机器视觉等诸多领域。 
这里写图片描述 
微软公司的Kinect有三个镜头,除了获取RGB彩色图像的摄像机之外,左右两边的镜头分别是红外线发射器和红外线CMOS摄像机,这两个镜头共同构成了Kinect的深度传感装置,其投影和接收区域相互重叠,如下图所示。 
这里写图片描述

Kinect采用了一种名为光编码(Light Coding)的技术,不同于传统的结构光方法投射一幅二维模式图案的方法,Kinect的光编码的红外线发射机发射的是一个具有三维纵深的“立体编码”。光编码的光源被称为激光散斑,其形成原理是激光照射到粗糙物体或穿透毛玻璃后得到了随机的衍射斑点。激光散斑具有高度的三维空间随机性。当完成一次光源标定后,整个空间的散斑图案都被记录,因此,当物体放进该空间后,只需得知物体表面的散斑图案,就可以知道该物体所处的位置,进而获取该场景的深度图像。红外摄像机捕获的红外散斑图像如下图所示,其中左侧的图片展现了右侧图片中框中的细节。 

这里写图片描述

Kinect低廉的价格与实时高分辨率的深度图像捕捉特性使得其在消费电子领域得到了迅猛发展,然而Kinect的有效测距范围仅为800毫米到4000毫米,对处在测距范围之外的物体,Kinect并不能保证准确深度值的获取。Kinect捕获的深度图像存在深度缺失的区域,其体现为深度值为零,该区域意味着Kinect无法获得该区域的深度值。而除此之外,其深度图像还存在着深度图像边缘与彩色图像边缘不对应、深度噪声等问题。Kinect所捕获的彩色图像与深度图像如下图所示。 
这里写图片描述

Kinect所捕获的深度图像产生深度缺失区域的原因多种多样。除了受限于测距范围,一个重要的原因是目标空间中的一个物体遮挡了其背后区域。这种情况导致了红外发射器所投射的图案无法照射到背后区域上,而背后区域却有可能被处在另一个视角的红外摄像机捕捉到,然而该区域并不存在散斑图案,该区域的深度信息也就无法被获得。【Oops,原来遮挡是这样导致了深度值缺失,作者果然厉害,两句话让人茅塞顿开!】物体表面的材质同样会影响Kinect深度图像的获取。当材质为光滑的平面时,红外投射散斑光束在物体表面产生镜面反射,红外摄像机无法捕捉该物体反射的红外光,因此也就无法捕获到该表面的深度;当材质为吸光材料时,红外投射散斑被该表面所吸收而不存在反射光,红外摄像机同样无法捕捉到该表面的深度信息。【材质对深度缺失的影响,分析到位】除此之外,Kinect所捕获的深度图像存在的与彩色图像边缘不一致的问题主要是由彩色摄像机与红外摄像机的光学畸变引起的。

激光雷达

激光雷达测距技术通过激光扫描的方式得到场景的三维信息。其基本原理是按照一定时间间隔向空间发射激光,并记录各个扫描点的信号从激光雷达到被测场景中的物体,随后又经过物体反射回到激光雷达的相隔时间,据此推算出物体表面与激光雷达之间的距离。 
激光雷达由于其测距范围广、测量精度高的特性被广泛地用于室外三维空间感知的人工智能系统中,例如自主车的避障导航、三维场景重建等应用中。下图展示的是激光雷达Velodyne HDL-64E在自主车中的应用,该激光雷达能够获取360°水平方向上的全景三维信息,其每秒能够输出超过130万个扫描点的数据。全向激光雷达曾在美国举办的DARPA挑战赛中被许多队伍所采用,其也成为了自主行驶车辆的标准配置。 
这里写图片描述

然而,激光雷达所捕获的三维信息体现在彩色图像坐标系下是不均匀并且稀疏的。由于单位周期内,激光扫描的点数是有限的,当把激光雷达捕获的三维点投射到彩色图像坐标系下得到深度图像时,其深度图像的深度值以离散的点的形式呈现,深度图像中许多区域的深度值是未知的。这也就意味着彩色图像中的某些像素点并没有对应的深度信息。
 

http://chatgpt.dhexx.cn/article/7mwKo1OJ.shtml

相关文章

【综述】机器视觉中的3D传感器

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 近年来,机器视觉技术变得越来越复杂,工业领域的图像处理更多的专注于3D传感器,而且越来越多的技术已经完善并且投入到实际应用中&…

【3D视觉原理】2-3D传感器原理

文章目录 内容概要3D光学测量方法概述被动测距单目立体视觉(精度不高)聚焦法离焦法 双目立体视觉(精准)多目立体视觉(更精准) 主动测距结构光法光点法光条法光面法 飞行时间法(ToF)脉…

Xcode Cloud

一、使用Xcode Cloud 的要求 (1)开发者账户要求 已加入Apple Developer Program向xcode加入Apple IDApp Store Connect上有app 记录或者可以创建一个app记录 (2)Project和workspace要求 Project或者workspace使用Xcode项目使用…

使用Xcode13进行Swift开发2

使用Xcode13进行Swift开发2 1.应用功能1.1 UIScreen与systemName1.2 struct,ScrollView,padding,ForEach和创建列表1.3 GeometryReader1.4 list,combine 使用Xcode13进行Swift开发https://blog.csdn.net/gavinliu266/article/details/126407896 Monterey…

Xcode简明教程(使用Xcode编写C++语言程序)

Xcode 是由Apple官方开发的IDE,支持C、C++、Objective-C、Swift等,可以用来开发 Mac OS X 和 iOS 上的应用程序。Xcode使用LLVM/Clang作为编译器。 去App store下载Xcode,打开点击Command Line Tool,再选c++,完成。 在Xcode上运行C语言程序 在 Xcode 上运行C语言程序需…

Mac m1 使用Xcode配置OpenMp教程完善版

目录 安装brew安装llvm配置xcode添加libomp.dylib文件代码测试引用 安装brew 自己搜教程 安装llvm brew install llvm安装完成后使用 brew info llvm,复制保存安装路径(后续配置会用,路径用自己的) 下图中为:/opt/h…

Xcode下使用git

1.创建仓库 可以使用命令来创建,做法参考之前的文章git代码管理工具使用 也可以登录github,找到new repository,点击后进入创建页面输入标题helloworld,点击创建。 创建好后进入创建好的repository拷贝地址,我此处…

写给设计师同学的xcode使用教程: 教你用 Xcode 做原型设计

在过去的一个月,我每天早上 7 点起床,一直工作到晚上 7 点,在完成在 Carshare.hk 的那份全职工作之余,一直都在致力于完善那个 Ripple 应用。这个月全是关于 iOS 方面的经验,我面对的挑战是在年底前发布这个 iOS 应用之…

使用Xcode13进行Swift开发

使用Xcode13进行Swift开发 1.软件Xcode 2.快捷键3.应用功能3.1 VStack,HStack,ZStack3.2 frame,foregroundColor,cornerRadius,shadow,resizable与aspicRatio3.3 font,fontWeight,offset,rotationEffect和rotation3DEffset3.4 State,onTapGuesture与animation3.5 gesture和Disp…

Xcode使用教程详细讲解 1

Xcode使用教程详细讲解是本文要介绍的内容,Xcode是一个款强大的IDE开发环境,就像你在写Windows程序时需要VS2005一样 需要要Xcode为你写Mac程序提供环境。因此,如果你要成为Mac 程序的开发者,灵活运用Xcode工具是你必须做的第一步…

xcode编程c语言,使用xcode编写c语言的方法介绍

使用xcode编写c语言的方法介绍 发布时间:2020-03-26 17:08:31 来源:亿速云 阅读:149 作者:小新 今天小编分享的是使用xcode编写c语言的方法介绍,可能大家对xcode并不陌生,或者从来没有了解过xcode。但是不用…

使用Xcode 真机无线调试

1.iPhone和Xcode连在同一WIFI下 2.打开Xcode 顶部菜单 选中Window -> Device and Simulators 3.选中Connect via network (注意:勾选前还要用数据线连接,测试机要设置密码,出弹窗的话要点击信任) 真机设备旁边出现小地球 就代表成功了

Xcode 使用教程(简版)

1.Xcode IDE概览 说明:从左到右,依次是“导航窗格(Navigator)->边列(Gutter)->焦点列(Ribbon)->代码编辑窗口(Standard/Primary Editor)”。 边列&a…

Xcode使用教程详细讲解

from: http://mobile.51cto.com/iphone-273735.htm http://mobile.51cto.com/iphone-273738.htm Xcode使用教程详细讲解是本文要介绍的内容,Xcode是一个款强大的IDE开发环境,就像你在写Windows程序时需要VS2005一样 需要要Xcode为你写Mac程序提供环境…

Xcode使用教程详细讲解 (下)

转载:http://mobile.51cto.com/iphone-273738.htm Xcode使用教程详细讲解 (下)是本节要介绍的内容,继续Xcode使用教程详细讲解 (上)的内容开始介绍。 j)Xcode中书签的使用 如果你要将代码中的某个部分标注起…

Xcode使用教程详细讲解 (上)

http://mobile.51cto.com/iphone-273735.htm 本文介绍的是Xcode使用教程详细讲解,Xcode是一个款强大的IDE开发环境,就像你在写Windows程序时需要VS2005一样 需要要Xcode为你写Mac程序提供环境。 AD:2013云计算架构师峰会课程资料下载 Xcode使…

xcode使用教程

xcode 增加ios版本 window > Devices and Simulators 打开ios版本下载页面下载ios版本,并安装 xcode 增加设备 window > Devices and Simulators 打开选择系统和手机类型新增模拟器 遇到的问题 macOs版本过高, 无法创建 解决方案 打开Xcode…

IOS开发入门之Xcode使用教程详细讲解(全)

摘要:本次的IOS开发入门学习中,Xcode使用教程详细讲解是本文要介绍的内容,Xcode是一个款强大的IDE开发环境,就像你在写Windows程序时需要VS2005一样 需要要Xcode为你写Mac程序提供环境。因此,如果你要成为Mac 程序的开…

Xcode简明教程(使用Xcode编写C语言程序)

原文地址::http://c.biancheng.net/view/476.html 相关文章 1、IOS开发:Xcode入门开发第一个HelloWorld程序----https://jingyan.baidu.com/article/a17d5285c9afc48099c8f279.html 2、30分钟学会iOS 11开发环境xcode 9图文教程----https://blog.csdn.net/epubit1…

使用Xcode创建第一个c语言项目和源文件进行编程(xcodes使用教程)

一、Xcode简介 Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE),由Apple Inc开发。Xcode是开发 macOS 和 iOS 应用程序的最快捷的方式。Xcode 具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。 二、如…