深度相机常见技术:深度相机的相位求解

news2024/11/26 8:22:50

1.1 深度相机概述

深度相机是近几年兴起的新技术,相比较传统的相机,深度相机在功能上添加了一个深度测量,从而更方便准确的感知周围的环境及变化。深度相机有很多的应用场景,在我们日常生活中有很多深度相机的影子。那它可以用来做什么?三维建模、无人驾驶、机器人导航、手机人脸解锁、体感游戏等都用到了深度相机来实现其功能。iPhone X中最大的创新就是使用了前置深度相机。现在,深度相机的应用已经由智能终端解锁,逐渐延伸至移动支付、活体检测等场景,其背后的技术手段:3D结构光,也渐渐走入了公众视野。

iPhone X 采用的是结构光的方案,这里以 FaceID 的工作流程来解释下它是如何获取深度值的:

1,当脸部靠近相机时,首先启动接近感应器,若接近发出信号通知泛光照明器

2,泛光照明器会发出非结构化的红外线光投射到物体表面上,然后红外相机接收这些光后检测是否为人脸

3,若为人脸,则会让点阵投影器将3万多个肉眼看不见的结构光图案投影到物体上

4,红外镜头接收反射回来的点阵图案,通关计算图案的变形情况来获得脸部不同位置的距离

深度相机中01

1.2 深度相机常见技术

基于双目立体视觉的深度相机对环境光照强度比较敏感,且比较依赖图像本身的特征,因此在光照不足、缺乏纹理等情况下很难提取到有效鲁棒的特征,从而导致匹配误差增大甚至匹配失败。而基于结构光法的深度相机就是为了解决上述双目匹配算法的复杂度和鲁棒性问题而提出的。结构光法不依赖于物体本身的颜色和纹理,采用了主动投影已知图案的方法来实现快速鲁棒的匹配特征点,能够达到较高的精度,也大大扩展了适用范围。

结构光利用相位信息进行三维重建,主要包括解相位和展开相位,利用展开的相位计算深度信息。相位测量,是一种基于三角测量原理的光学三维测量技术,本质上讲其是一种条纹投射测量技术。由其测量原理可知,应用该方法测量时,需要获取因镜面轮廓变化而产生的变形条纹图像,求取变形条纹的相位分布,找出相位分布与镜面面形之间的关系,进而恢复出镜面三维形貌。基于相位测量的测量系统将周期性余弦条纹投射于被测物体表面后, CCD 摄像机采集到的变形条纹图像(可看作相位和振幅均被物面轮廓调制的二维空间载波信号)可表示为:

深度相机中02

其中,I(x, y)为CCD摄像机采集到的图像光强;a(x, y)为物面背景光强;b(x, y)为调制度;φ(x, y)为条纹相位。可知,我们需要求解条纹图像的相位分布,以求解物面法矢,进而求解物面面形。因此,以获取可靠相位信息为目的的条纹图像相位分析也是基于相位测量偏折术的镜面三维测量技术的关键环节。至今研究人员已经提出了多种针对条纹图像相位的求解方法,按处理域的不同可分为空域相位分析技术和时域相位分析技术两大类。

1.3 深度相机的相位求解

3D结构光的整个系统包含结构光投影设备、摄像机、图像采集和处理系统。其过程就是投影设备发射光线到被测物体上,摄像机拍摄在被测物体上形成的三维光图形,拍摄图像经采集处理系统处理后获得被测物体表面数据。在这个系统中,当相机和投影设备相对位置一定时,投射在被测物体上的光线畸变程度取决于物体表面的深度,所以在拍摄图像中可以得到一张拥有深度的光线图像。

深度相机中03

3D结构光模式包含点、线、面的模式,是指投射的光线类型。例如,这里A点和C点的相位差就是计算高度所需要的,那这两点在相机拍到的畸变条纹图像中是怎么体现的呢?

深度相机中04

在这里插入图片描述

这是所拍到的被调制前后的条纹图像,图中的红色点即相当于上图中的A点和C点,两点的像素坐标相同,相位不同,求的相同坐标下的相位差即可间接求的D点的高度。也就是说空间中任意两处的散斑或条纹结构光图案都是不同的。只要在空间中打上这样的结构光,整个空间就都被做了标记,把一个物体放进这个空间,只要看看物体上面的散斑图案,就可以知道这个物体在什么位置了。当然,在这之前要把整个空间的散斑图案都记录下来,所以要先做一次光源标定,通过对比标定平面的光斑分布,就能精确计算出当前物体距离相机的距离。

1.4 总结

现阶段的主要用于高端智能机型上进行解锁、身份核对,解锁/识别准确度与速度均优于指纹识别。在虚拟交互方面,也已被用于体感游戏、手势控制等用途。3D结构光在应用场景落地的技术条件已经具备,更多衍生的应用场景正在开发和尝试当中。一般来说,由多条垂直双向的线组成的网络结构最常用,这种模式不需要扫描就可以实现三维的轮廓测量,而且速度快。

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

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

相关文章

在线对对联

对对联的起源可以追溯到中国古代,它与中国文化有着密切的关系。 1. 最早的对对联出现在汉朝,当时称为“对句”。它起源于民间,后来逐渐成为文人雅士的精神寄托。 2. 唐代时,对对联的格式更加规范,并被称为“春联”。它成为春节张贴的主要内容,寓意吉祥。 3. 宋代以后,对对联…

小程序商品如何开启返佣

​越来越多的商家开始意识到小程序平台的潜力和价值。开启分销返佣机制是一种有效的方式,可以吸引更多的用户和合作伙伴,提高销售额和品牌知名度。下面将介绍商城小程序商品如何开启返佣。 1. 开启系统分销设置。在管理员后台->营销设置 点击分销功能…

MYSQL --Austindatabases 历年文章合集

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

高速过孔同进同出后续来了!影响大不大由你们自己说

高速先生成员---黄刚 话说Chris在上篇文章的结尾留下的悬念,其实在上周的答题里,也有不少粉丝猜到了接下来要验证的内容。我们知道,任何两个结构如果距离变近了,容性就会增加,无论是孔和孔,线和线&#xf…

JMeter命令行执行+生成HTML报告

1、为什么用命令行模式 使用GUI方式启动jmeter,运行线程较多的测试时,会造成内存和CPU的大量消耗,导致客户机卡死; 所以一般采用的方式是在GUI模式下调整测试脚本,再用命令行模式执行; 命令行方式支持在…

MySQL(1)

MySQL创建数据库和创建数据表 创建数据库 1. 连接 MySQL mysql -u root -p 2. 查看当前的数据库 show databases; 3. 创建数据库 create database 数据库名; 创建数据库 4. 创建数据库时设置字符编码 create database 数据库名 character set utf8; 5. 查看和显示…

redis入门2-命令

Redis的基本数据类型 redis的基本数据类型(value): string,普通字符串 hash(哈希),适合存储对象 list(列表),按照插入顺序排序,可以由重复的元素 set(无序集合),没有重复的元素 sorted set(有序集合)&…

Spring Boot + Vue3前后端分离实战wiki知识库系统十一--文档管理功能开发三

文档内容的显示: 在上一次https://www.cnblogs.com/webor2006/p/17510360.html文档管理模块还差文档的显示木有完成,所以接下来先将这块模块给收尾了。 增加单独获取内容的接口: 概述: 在前端页面文档查询时,只查询了文…

【开源项目--稻草】Day05

【开源项目--稻草】Day05 1. 显示问题列表1.1 显示问题持续时间 2. 显示问题的标签列表2.1 实现过程 3.显示问题的图片4. 实现分页功能4.1 为什么需要分页(翻页)4.2 实现分页的sql语句4.3 PageHelper的使用控制器的调用和VUE代码的重构分页导航条的配置 1. 显示问题列表 上次课…

LISA:通过大语言模型进行推理分割

论文:https://arxiv.org/pdf/2308.00692 代码:GitHub - dvlab-research/LISA 摘要 尽管感知系统近年来取得了显著的进步,但在执行视觉识别任务之前,它们仍然依赖于明确的人类指令来识别目标物体或类别。这样的系统缺乏主动推理…

csdn崩溃了?每次都卡

反馈给了官方客服也没有响应,最近几周都是这样的高频率的转圈圈!这个入口不受重视?这个对于csdn用户来说,是最最基本的入口 如果CSDN(CSDN.net)崩溃了,可能会对以下方面产生影响: 开…

【perl】报错合集

perl报错合集 (注:可能会不定时更新) 1.Name “main::x” used only once: possible typo at … 1.Name "main::x" used only once: possible typo at ...给某个变量赋值但是从来没有用它,或者变量之只用一次但没有…

前沿分享-100 μAh 微型电池

这是SMD 组件形状的固态锂离子微型电池,容量高达 100Ah,在22年的慕尼黑电子展上出现过。 因为是可重复使用的,未来该产品甚至有机会取代容量更高(例如100 Ah 时)的不可充电硬币电池。 一般应用于超低功率的传感器&…

8.7 作业

1.思维导图 2.写一个函数&#xff0c;获取用户的uid和gid并使用变量接收 #!/bin/bash fun() {uid$(id -u)gid$(id -g) }fun echo $uid $gid 3.整理冒泡排序、选择排序和快速排序的代码 冒泡 #include <myhead.h> void fun(int l,int *arr) {for(int i0;i<l-1;i){f…

【面试题】 本地运行的前端代码,如何让他人访问?

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 有时候&#xff0c;我前端写好了项目&#xff0c;想要给其他人看一下效果&#xff0c;可以选择将代码部署到test环境&#xff0c;也可以选择让外部通过i…

Linux/centos上如何配置管理samba服务器?

Linux/centos上如何配置管理samba服务器&#xff1f; 1 samba服务相关知识1.1 SMB协议1.2 samba工作原理1.2.1 相关进程1.2.2 samba工作流程1.2.3 samba功能 2 samba服务器安装2.1 利用光驱安装2.2 利用光盘映射文件 3 启动与停止samba服务4 配置samba服务器4.1 samba主配置文件…

睡眠助手/白噪音/助眠夜曲微信小程序源码下载 附教程

睡眠助手/白噪音/助眠夜曲微信小程序源码 附教程 支持分享海报 支持暗黑模式 包含了音频数据 最近很火的助眠小程序&#xff0c;前端vue&#xff0c;可以打包H5&#xff0c;APP&#xff0c;小程序 后台可以设置流量主广告&#xff0c;非常不错的源码 代码完整 完美运营 搭配无…

用神经网络玩转数据聚类:自编码器的原理与实践

一、什么是自编码器 自编码器是一种神经网络模型&#xff0c;它可以学习输入数据的低维表示&#xff0c;也称为隐层特征或编码。自编码器由两部分组成&#xff1a;编码器和解码器。编码器将输入数据映射到隐层特征&#xff0c;解码器将隐层特征重构为输入数据&#xff0c;使其…

自动方向识别式 LSF型电平转换芯片

大家好&#xff0c;这里是大话硬件。 今天这篇文章想分享一下电平转换芯片相关的内容。 其实在之前的文章分享过一篇关于电平转换芯片的相关内容&#xff0c;具体可以看链接《高速电路逻辑电平转换设计》。当时这篇文章也是分析的电平转换芯片&#xff0c;不过那时候更多的是…

如何做好Code Review

本文主要从我们为什么需要CR&#xff1f;CR面临哪些挑战&#xff1f;CR的最佳实践几个方面分析&#xff0c;希望可以给读者一些参考。 为什么需要CR&#xff1f; 代码质量 定性来看&#xff0c;大家都认可Code Review&#xff08;后文简称CR&#xff09;能显著改善代码质量&…