3D立体视觉成像原理介绍【一 】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 什么是基线?
- 基线是如何影响3D图像质量
- 激光三角测量
- 飞行时间
- 结构光相机
- 时间编码结构光
前言
本文将介绍3D立体视觉的成像原理,包括【激光三角测量、飞行时间TOF、结构光3D视觉、时间编码结构光】。
再了解3D立体视觉之前,我们需要先了解一下几个问题
什么是基线?
从我们用眼睛观察物体来解释,左眼和右眼之间的距离称为“基线”,大约在6cm左右。所以不难理解,两个相机光轴之间的距离即为基线。

我们一起来做一个实验,将一个物体放在眼前,然后交替闭上左眼和右眼,我们会发现被观测的物体再视野中的位置会有变化,将被测物体远离我们眼睛的时候,这个变化差异会变小。这个位置上的变化距离我们将其称为“视差”,而视差的变化大小取决于被观测物体离我们双眼(传感器)之间的距离.。我们在计算图像中像素点的深度时,通常需要查找每个像素点在其他视图中的对应点,然后根据两个点在图像中的位置关系计算控件中的对应点到相机之间的距离Z,其计算公式为

其中f为相机焦距,b为两个相机之间的基线距离,d为视差即对应点在不同视图之间的距离。
基线是如何影响3D图像质量
在3D视觉中,基线是3D成像的关键因素,那么基线的增加对成像系统会有什么影响呢?
1、限制了深度范围和视野 (FOV),因为相机和投影仪之间的重叠减少了。但提高了测量精度。
2、存在更多的遮挡区域,其中阴影区域中的细节对于相机和/或投影仪均不可见,导致“空洞”并显示为稀疏数据。
3、增加了物体到相机之间的最小距离。
因此,可用得出结论:更长的基线对图像捕获显然有一些好处。但是,鉴于使用实际工作的性质,这种方法存在相当大的缺点,意味着相机之间的安装距离比我们想象中的要长。
激光三角测量
线激光器是一种可以与相机一起使用的主动光源。 具有成熟技术简单、成本低、速度快、精度高的特点。而 激光三角测量法也是最流行和最常用的 3D 成像技术之一。

成像原理:
激光线三角测量。
场景中物体上激光线的位移与物体高度成正比。
成像特征:
使用激光器的一个特殊优势是它在环境光作为噪声源的情况下的鲁棒性好,因为激光器发射的波长与环境白光的波长相距甚远。但它也有明显的缺点,首先是单色光源,因此无法拍摄彩色点云。 此外,它的拍照速度非常慢,因为激光必须在物体上下重复扫描以生成点云。 激光三角测量方法可用于传送带扫描场景,而激光器可以固定起来扫描传送带上缓慢经过的物体。
所以采用激光三角测量具有以下特点:
o 激光光源,不受光照的影响,对环境稳定。
o 采用简单的测量原理 。
o 可定制化程度高 。
o 适合输送带应用 。
o 速度慢,因为它需要在场景中进行扫描运动。
o 采集的数据没有颜色信息。
飞行时间
采用时域而非空间域方法进行 3D 成像,飞行时间激光扫描仪(有时称为 LIDAR 系统或激光
雷达)可有效去除基线。 并且通过测量发射的激光和从物体表面反射的激光之间的时间
延迟来获得精确的距离测量值。

成像原理:
o 测量发射光和反射响应的时间。
o 基于时间延迟(脉冲)和相位。
成像特点:
o 将时间用作“基线”。
o 可能紧凑,无遮挡影响。
o 大测量范围(数百米)。
o 非常快(实时视频速率)。
o 对反射敏感。
o 绝对精度有限。
o 复杂的制造。
o 通常能达到亚高清分辨率。
基于飞行时间的系统通常使用的测量技术包括:
脉冲激光系统:通过测量发射激光脉冲和接收脉冲之间的时间延迟。根据时间与距离成正比,所以相对位置是确定的。其次,这个传输的过程接近光速,所以采集的时间会非常短,所以测量速度会很快。测量效果与基线较短类似,所以精度(或深度分辨率)会降低。
基于相位的系统:通过在发射的激光束上调制正弦波并测量设备发射的波与物体反射的波之间的相位差来工作。与基于脉冲的系统相比,通常测量的精度会更好。缺点是测量范围将会缩小,对环境光(如阳光和反射)的敏感性会增加。 由于光线可能沿多条路径到达物体,因此测量距离可能比实际距离长。
飞行时间系统:向场景发射红外光,然后由相机传感器接收冲场景反射回来的信号,然后通过计算发射到接受用时来计算每个像素点的深度。
结构光相机

结构光技术与激光三角测量技术有一些相似之处,但要复杂得多,提供的信息要多得多,并能生成更详细的点云。 这是一种“全视野”方法,因为它提供了被拍摄对象的完整 3D 图像,而不仅仅是一条横截面线。
结构光系统采用高强度白光投影仪和相机进行成像。 它们以固定的方向相互排列,投影仪与相机成一定角度,相机与被拍摄场景成直角。
成像原理:
o 投影图案。
o 通过场景中物体的变形/位移计算出深度信息。
结构光成像存在的问题:空间结构光的单个投影方式在块平均、分辨率和准确性方面确实面临与双目立体视觉相同的挑战。 结构光系统通常也有与激光扫描仪相同的问题,涉及镜面反射,光亮表面或非常暗和光吸收性的表面。 这些表面通常会导致数据丢失和测量错误。
时间编码结构光
时间编码结构光系统在设计上类似于常规结构光系统,具有与场景成一定角度的高强度投影仪,并且相机正对场景。它们利用空间域和时域技术来提供非常详细的点云,还可以提供 RGB 颜色信息。
简单的结构光方法是将单一图案投射到物体上。时间编码结构光则将一系列独特的图案投射到物体上,相机为整个编码系列拍摄多张图像。在不同时间观察每个像素的强度,并用于建立相机和投影仪中各个像素之间的对应关系。由于使用了时间信息,因此所有计算都在像素级别执行,避免了对空间邻域的分析。
成像原理:
o投影条纹
o 通过场景中物体的畸变/位移提供深度信息。
o 测量发射光和反射响应的时间。
影响成像的关键因素:
o 时间编码投影图案,逐个像素处理。
o 无需分析空间邻域。
o 消除块平均。
o 不需要表面纹理。
o 空间和时间”的最佳组合。
o 利用时间作为“基线”。
o 可能是最准确的 3D 技术,基本原理决定质量。
参考:https://www.zivid.com/3d-stereo-vision
相关文章:
3D立体视觉成像原理介绍【一 】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言什么是基线?基线是如何影响3D图像质量激光三角测量飞行时间结构光相机时间编码结构光前言 本文将介绍3D立体视觉的成像原理,包括【激光三…...
CEC2021:鱼鹰优化算法(Osprey optimization algorithm,OOA)求解CEC2021(提供MATLAB代码
一、鱼鹰优化算法简介 鱼鹰优化算法(Osprey optimization algorithm,OOA)由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出,其模拟鱼鹰的捕食行为。 鱼鹰是鹰形目、鹗科、鹗属的仅有的一种中型猛禽。雌雄相似。体长51-64厘米…...
0301_对应的南京比特物联网
0301_对应的南京比特物联网目录概述需求:设计思路实现思路分析1.流程拓展实现性能参数测试:参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better …...
钡铼技术BL302 ARM工控机QT图形化界面开发的实践
QT是一种跨平台的应用程序框架,用于开发图形用户界面(GUI)、网络应用程序和嵌入式应用程序。QT提供了丰富的GUI组件和工具,使开发人员能够轻松地创建专业级别的应用程序。QT使用C编写,支持多种操作系统,包括Windows、Linux、macOS…...
Python try except异常处理详解(入门必读)
Python 中,用try except语句块捕获并处理异常,其基本语法结构如下所示: try:可能产生异常的代码块 except [ (Error1, Error2, ... ) [as e] ]:处理异常的代码块1 except [ (Error3, Error4, ... ) [as e] ]:处理异常的代码块2 except [Exc…...
信息系统基本知识(三)软件工程
1.4 软件工程 定义:将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程即上述方法的研究 软件工程由方法、工具和过程三个部分组成 1.4.1 需求分析 软件需求是指用户对新系统在功能、行为、性能、设计约束等方面的期望。 需求层次 业务…...
Linux下软件部署安装管理----rpmbuild打包rpm包部署安装
来源:微信公众号「编程学习基地」 文章目录1.安装rpmbuild2.rpm包制作打包rpm包3.rpm包安装4.rpm包卸载1.安装rpmbuild yum install rpmbuild yum install rpmdevtools创建rpm包管理路径,生成rpm相关目录 RPM打包的时候需要编译源码,还需要…...
ThreadLocal学会了这些,你也能和面试官扯皮了!
前言 我们都知道,在多线程环境下访问同一个共享变量,可能会出现线程安全的问题,为了保证线程安全,我们往往会在访问这个共享 变量的时候加锁,以达到同步的效果,如下图所示。 对共享变量加锁虽然能够保证线程的安全,但是却增加了开发人员对锁的使用技能,如果锁使用不当…...
【存储】存储特性
存储特性精简配置技术(SmartThin)SmartThin主要功能容量虚拟化存储空间写时分配:Capacity-on-Write读写重定向:Direct-on-Time应用场景及配置流程存储分层技术(SmartTier)存储分层工作原理关键技术容量初始…...
Qt使用OpenGL进行多线程离屏渲染
基于Qt Widgets的Qt程序,控件的刷新默认状况下都是在UI线程中依次进行的,换言之,各个控件的QWidget::paintEvent方法会在UI线程中串行地被调用。若是某个控件的paintEvent很是耗时(等待数据时间CPU处理时间GPU渲染时间)…...
Vue基础入门讲义(三)-指令
文章目录1.什么是指令?2.插值表达式2.1.花括号2.2.插值闪烁2.3.v-text和v-html3.v-model4.v-on4.1.基本用法4.2.事件修饰5.v-for5.1.遍历数组5.2.数组角标5.3.遍历对象6.key7.v-if和v-show7.1.基本使用7.2.与v-for结合7.3.v-else7.4.v-show8.v-bind8.1. 属性上使用v…...
pod资源限制,探针(健康检查)
pod资源限制,探针(健康检查)一、资源限制当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源当为 Pod 中的容器指定了 request 资源时,调度器就使用…...
Python | 蓝桥杯进阶第一卷——字符串
欢迎交流学习~~ 专栏: 蓝桥杯Python组刷题日寄 蓝桥杯进阶系列: 🏆 Python | 蓝桥杯进阶第一卷——字符串 🔎 Python | 蓝桥杯进阶第二卷——递归(待续) 💝 Python | 蓝桥杯进阶第三卷——动态…...
2023-03-03 mysql列存储-cpu占用100%-追踪思路
摘要: 最近在处理mysql列存储时, 发现在执行explain时, cpu占用达到了100%. 本文分析定位该问题的思路过程 现象: mysqld进程占用100%使用kill processlist终止会话, 无响应查看show processings; 发现一直在运行mysql> show processlist; +----+-----------------+-----…...
JVM—类加载子系统
JVM细节版架构图 本文针对Class Loader SubSystem这一块展开讲解类加载子系统的工作流程 类加载子系统作用 1.类加载子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识即16进制CA FE BA BE; 2.加载后的Class类信息…...
在codeIgniter3中session.php中的数组追加值
如果key是字符串时,输出什么值?会直接把atime()的时间戳添加到key是字符串时,输出什么值?会直接把atime()的时间戳添加到key是字符串时,输出什么值?会直接把atime()的时间戳添加到arr[‘vars’]数组里面&am…...
Windows环境下Gpu版本的Pytorch安装
文章目录安装步骤总览(6步)1 首先看电脑有没有显卡,显卡是否支持cuda软件1.1 先看自己电脑是否有显卡1.2 两种方法看自己的电脑的显卡驱动支持的CUDA1.3 显卡,显卡驱动、CUDA、CUDNN 4者说明2 安装CUDA,就是1个软件2.1 检测自己电…...
项目实战典型案例13——学情页面逻辑问题
学情页面逻辑问题一:背景介绍二:学情页面逻辑问题分析逻辑问题缓存滥用的问题三:LocalStorage基础知识数据结构特性应用场景localStorage常用方法四:总结升华一:背景介绍 本篇博客是对项目开发中出现的学情页面逻辑问…...
工作日志day02
1.云计算? 相关职位 开源软件和linux起源: 自由软件之父:理查德.斯托曼linux之父:林纳斯.本纳第克特.托瓦兹linux发行版 RHEL:Red Hat Enterprise Linux 红帽linux商业公司CentOS:Community Enterprise Operating Sys…...
C++Primer16.1.6节练习
练习16.28: 简易的shared_ptr代码如下 #include <iostream> #include <vector> #include <list> using namespace std;//shared_ptr模板 template<typename T>class SharedPtr {friend SharedPtr<T>& MakeShared(T* t); public…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
