技术干货 | 结构光技术及其实现三维成像的主要原理

news2024/11/20 4:57:52

 原创 | 文BFT机器人

3D表面成像的一种主要方法是基于“结构光”的使用

即使用专门设计的二维空间变化强度模式对场景进行主动照明

3D结构光的整个系统包含结构光投影设备、摄像机、图像采集和处理系统。其过程就是投影设备发射光线到被测物体上,摄像机拍摄在被测物体上形成的三维光图形,拍摄图像经采集处理系统处理后获得被测物体表面数据。

在这个系统中,当相机和投影设备相对位置一定时,投射在被测物体上的光线畸变程度取决于物体表面的深度,所以在拍摄图像中可以得到一张拥有深度的光线图像。

3D结构光的根本就是通过光学手段获取被拍摄物体的三维结构,再通过这一信息进行更深度的应用。

01

结构光技术

我们周围的物理世界是三维的,然而,传统的相机和成像传感器只能获取缺乏深度信息的二维图像。

这一基本限制极大地限制了我们感知和理解现实世界物体复杂性的能力。在过去的几十年里,由于各种细分市场的应用需求、高分辨率和高速电子成像传感器的进步以及不断提高的计算能力的推动,3D表面成像技术的研究、开发和商业化取得了巨大进步。

3D表面成像的一种主要方法是基于“结构光”的使用,即使用专门设计的二维空间变化强度模式对场景进行主动照明。如图1所示,一个空间变化的二维结构照明是由一个特殊的投影仪或由空间光调制器调制的光源产生的。结构光模式上每个像素的强度用数字信号,

其中(i, j)表示投影图形的(x, y)坐标。

本文讨论的结构光投影模式是二维模式。

图1 结构光示例

成像传感器(如摄像机)用于在结构光照明下获取场景的二维图像。

如果场景是一个没有任何三维表面变化的平面,则获取的图像显示的模式与投影的结构光模式相似。然而,当场景中的表面是非平面时,表面的几何形状会扭曲从相机看到的投影结构光模式。结构光三维曲面成像技术的原理是根据结构光投影变形信息提取三维曲面形状。利用各种结构光原理和算法,可以精确地计算出场景中物体的三维表面轮廓。

如图1所示,成像传感器、结构光投影仪和物体表面点之间的几何关系可以用三角剖分原理表示为: 

目前有许多结构光表面成像技术可用。将所有技术分为顺序(多镜头)或单镜头类别,如图2所示,这可以被视为该技术的路线图。如果目标3D物体是静态的,并且应用程序对采集时间没有严格的限制,则可以使用多镜头技术,并且通常会产生更可靠和准确的结果。

然而,如果目标是移动的,则必须使用单镜头技术来获取特定时间实例的三维物体的快照三维表面图像。

图2 结构光表面三维成像技术分类框架

02

二进制编码与格雷码编码

 二进制编码采用黑白相间的条纹形成一系列的投影模式,使得物体表面的每个点具有一种独特的二进制码,区别于其他任何不同点的码。一般来说,N个图案可以编码2N条条纹。图4显示了一个简化的5位投影模式。一旦这个图案序列被投射到一个静态场景中,就会有32(2的五次方)个用独特条纹编码的独特区域。

沿每条水平线计算所有32个点的三维坐标(x, y, z)(基于三角剖分原理),从而形成一个完整的3D图像帧。

二进制编码技术是非常可靠的,对表面特征不太敏感,因为只有二进制值存在于所有像素。然而,为了实现高空间分辨率,需要对大量的序列模式进行投影。场景中的所有对象必须保持静态。3D图像采集的整个持续时间可能比实际的3D应用程序所允许的更长。

图3 用于三维成像的二值编码投影

     

为了有效地减少获得高分辨率三维图像所需的图案数量,开发了灰度级图案。例如,可以使用M个不同的强度级别(而不是二进制代码中的两个级别)来生成投影模式的唯一编码。

在这种情况下,N个图案可以编码M的N次方条。每个条纹码可以可视化为基于n的空间中的个点,每个维度有M个不同的值。例如,N = 3, M =4,则唯一码条的总数为64(4的3次方)。

相比之下,对于64条带二进制码的条纹,需要6个图案。在二进制和灰色编码模式的设计中存在优化问题。目标是最大化所有唯一码字之间的某种类型的距离度量。对于实际的3D成像应用,要能够区分相邻条纹很重要。

相移是一种众所周知的用于三维表面成像的条纹投影方法。一组正弦图案被投影到物体表面。三个投影条纹图案的每个像素(x, y)的强度描述为:

其中I1(x,y), I2(x,y), I3(x,y)是三种条纹的强度,I0(x,y)是直流分量(背景), Imod(x,y)是调制信号幅度,φ(x,y)是相移,θ是恒定相移角。

图4 相移与三个投影条纹

从三种条纹的强度来看:

通过在φ0(x, y)值上加减2π的倍数,可以消除弧切函数在2π处的不连续。

根据测量相位φ(x, y)与参考平面的相位值之差,可以计算出三维(x, y, z)坐标。

图5 根据相位值计算Z深度

灰度码确定了相位的绝对范围,没有任何歧义,而相移提供的亚像素分辨率超出了灰度码所提供的条纹数。然而,混合方法需要更多的投影,但不适合动态对象的3D成像。

更多精彩内容请关注公众号:BFT机器人

本文为原创文章,版权归BFT机器人所有,如需转载请与我们联系。若您对该文章内容有任何疑问,请与我们联系,将及时回应。 

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

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

相关文章

Element 格式化表单文本内容

提示&#xff1a;本文效果通用于其它形式文本格式化&#xff0c;此处以 Element 表单为例。 数据库内容 数据存储格式为 text&#xff0c;换行符号 \r\n 前端代码 <el-table-column v-if"columns.visible(changeContent)" prop"changeContent" labe…

线程池的位运算详解

前言 翻阅 Java 线程池的源码&#xff0c;可以看到用到了大量的位运算操作&#xff0c;本文来分析下这些位运算是如何计算的&#xff0c;以及最后算出的结果是什么。 正文 阅读之前&#xff0c;必须熟悉一下内容 & 与运算| 或运算&#xff5e; 取反<< 左移负数的二进…

迪赛智慧数——柱状图(象形标识图):当代职场人心愿清单TOP10

效果图 职场人十大心愿&#xff1a;“脱单”位列第一&#xff0c;“容貌焦虑”成新难题。 除脱单之外&#xff0c;如今职场人的十大心愿就寄托了人类的高质量梦想&#xff0c;比如财务自由、到点下班、提前退休、有房有车…… 不过&#xff0c;让人心疼的是&#xff0c;不少人…

「网安人必看」安全行业主流证书,你知道如何选择吗

现在&#xff0c;越来越多单位为了满足国家安全法律法规的要求&#xff0c;成立独立的网络安全部门&#xff0c;招聘网络安全人才&#xff0c;组建 SRC&#xff08;安全响应中心&#xff09;&#xff0c;为自己的产品、应用、数据保卫护航。短短几年间&#xff0c;网络安全工程…

Goby 漏洞更新 | Weaver e-cology ofsLogin.jsp 用户登陆绕过漏洞

漏洞名称&#xff1a;Weaver e-cology ofsLogin.jsp 用户登陆绕过漏洞 English Name&#xff1a;Weaver e-cology ofsLogin.jsp User Login Bypass Vulnerability CVSS core: 9.3 影响资产数&#xff1a;92980 漏洞描述&#xff1a; 泛微协同管理应用平台&#xff08;e-co…

Python os模块详解

1. 简介 os就是“operating system”的缩写&#xff0c;顾名思义&#xff0c;os模块提供的就是各种 Python 程序与操作系统进行交互的接口。通过使用os模块&#xff0c;一方面可以方便地与操作系统进行交互&#xff0c;另一方面页也可以极大增强代码的可移植性。如果该模块中相…

【SQLserver】sqlserver数据库还原

这里的还原主要是指一个数据备份文件导入到本地 用到的工具&#xff1a; SQLServerManagement Studio18 1、打开本地库&#xff0c;在数据库右键&#xff0c;点击“还原数据库” 2、选择需要还原的文件&#xff0c;这里选设备&#xff0c;后面选择 3、弹窗点击添加按钮&am…

MyBatis中的别名机制

在我们使用MyBatis中的select语句时&#xff0c;需要指定resultType的值&#xff0c;即查询对象的类型&#xff0c;该值是对象的完整类名&#xff0c;看起来非常的繁琐&#xff0c;因此MyBatis中有了别名机制。 使用步骤 在mybatis-config.xml文件中添加< typeAliases >…

Vue--》探索Pinia:Vue状态管理的未来

目录 Pinia的讲解与使用 Pinia的安装与使用 store数据操作 解构store数据 actions-getters的使用 Pinia常用API 持久化插件 Pinia的讲解与使用 Pinia 是由 Eduardo San Martin Morote 创建的&#xff0c;这是一个轻量级的、使用 Vue3 Composition API 的状态管理库。Pi…

谷粒商城二十五springCloud之Sleuth+Zipkin 服务链路追踪

为什么用 分布式系统庞大而复杂&#xff0c;服务众多&#xff0c;调用关系网也非常复杂&#xff0c; 服务上线以后如果出现了某些错误&#xff0c;错误的异常就很难定位。一个请求可能调用了非常多的链路&#xff0c;我们需要知道到底哪一块儿出现了错误。 最终希望有一个链…

Java基础学习(16)多线程

Java基础学习多线程 一、多线程1.1 什么是多线程1.2 多线程的两个概念1.2.1 并发 1.3 多线程的实现方式1.4 多线程的成员方法1.5 线程的生命周期 二、线程安全1.6 同步方法1.7 锁lock1.8 死锁1.8 生产者和消费者 (等待唤醒机制)1.9 等待唤醒机制(阻塞队列方式实现&#xff09;1…

IntelliJ IDEA汉化

IntelliJ IDEA汉化 描述解决办法 描述 在开发过程中&#xff0c;我们想让界面现实为汉语&#xff0c;那么我们就需要对IDEA工具进行汉化&#xff0c;目前版本的IDEA汉化都非常简单&#xff0c;请看下述实现步骤。 解决办法 下述汉化方法&#xff0c;全家桶软件都通用。 打开…

attention机制

油管attention机制解释 油管的attention机制视频。 基础形态 如下图所示&#xff0c;假设现在有4个向量&#xff0c; v 1 v_1 v1​到 v 4 v_4 v4​。我们以 v 3 v_3 v3​为视角&#xff0c;看它是怎么得到 y 3 y_3 y3​的。首先用 v 3 v_3 v3​和全部4个向量做点乘&#xff…

不依赖硬件,可以无限扩展的闹钟组件

在实际的开发项目中&#xff0c;很多时候我们需要定时的做一些事情&#xff0c;举例&#xff1a; ①路上的路灯&#xff0c;每天晚上6:00准时打开&#xff0c;每天早上6:00准时关闭&#xff1b;②定时闹钟&#xff0c;起床上班。这些行为其实都是定时任务–闹钟。 大部分单片机…

【MySql】数据库设计过程

目录 概念数据库设计&#xff1a; 逻辑数据库设计&#xff1a; 物理数据库设计&#xff1a; ->需求分析&#xff08;收集需求和理解需求,“源”&#xff09; ->概念数据库设计&#xff08;建立概念模型:"E-R图/IDEF1X"&#xff09; ->逻辑数据库设计&…

idle_in_transaction_session_timeout idle_session_timeout

这两个参数都是用来控制PostgreSQL数据库中会话的超时时间的。 idle_in_transaction_session_timeout idle_in_transaction_session_timeout参数用于控制在事务中处于空闲状态的会话的超时时间。如果一个会话在事务中处于空闲状态超过了指定的时间&#xff0c;则该会话将被终…

Rocky Linux 9.2 正式版发布 - RHEL 下游免费发行版

Rocky Linux 由 CentOS 项目的创始人 Gregory Kurtzer 领导。 请访问原文链接&#xff1a;https://sysin.org/blog/rocky-linux-9/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 以社区方式驱动的企业 Linux Rocky Linux 是…

Android Studio 基础 之 使用 okhttp 长连接,流式获取数据的方法简单整理了

Android Studio 基础 之 使用 okhttp 长连接&#xff0c;流式获取数据的方法简单整理了 目录 Android Studio 基础 之 使用 okhttp 长连接&#xff0c;流式获取数据的方法简单整理了 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、实现关键 六、关键代码 七…

2023年服务器数据保护的详细指南

​  无论您经营的是小型个人博客还是日常流量很高的大型企业电子商务网站&#xff0c;安全性都是每个人都关心的问题。虽然粗略的第三方有时间和资源来利用他们在您的系统中发现的任何弱点&#xff0c;但您也可以采取其他措施来提高服务器的安全性并阻止它们。以下是您可以采…

论文笔记:tri-plane 【持续更新】

文章目录 概述Tri-Plane 表达验证 tri-plane 表达 3D GAN 框架CNN生成器backbone以及渲染超分Dual discriminationModeling pose-correlated attributes 实验数据 参考文献 概述 论文名称&#xff1a; Efficient Geometry-aware 3D Generative Adversarial Networks Project pa…