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…...
初尝并行编程
进程被分为后台进程和应用进程 大部分后台进程在系统开始运行时被操作系统启动,完成操作系统的基础服务功能。大部分应用进程由用户启动,完成用户所需的具体应用功能 进程由程序段、数据段、进程控制块三部分组成 程序段也被称为是代码段,…...
keepalived学习记录:对其vip漂移过程采用gdb跟踪
对其vip漂移过程采用gdb跟踪keepalived工具主要功能产生vip漂移过程两种情况gdb调试常用命令gdb调试时打到的函数栈(供学习参考)函数栈的图是本人理解下画的,不对请多指正 keepalived主要有三个进程,父进程是core进程,…...
51单片机串口通讯原理及程序源码-----day8
51单片机串口通讯原理及程序源码-----day8 1.定义单片机为TTL电平:高 5V 低 0V RS232电平: 计算机的串口高 -12V 低12V 所以计算机与单片机之间通讯时需要加电平转换芯片CH340T 、 MAX232。 2.通信分类: (1)并行通信通…...
mongodb入门到使用(下)
mongodb中常用命令操作一、用户操作二、创建用户三、数据库操作基本操作四、扩展操作五、集合操作一、用户操作 在mongo中使用mongodb都需要在admin数据库中操作。然后在使用下面的命令 use admin二、创建用户 db.createUser({"user":"imooc", #用户名&q…...
云HIS系统源码 医院his源码 云his源码
大型医院his系统源码 SaaS运维平台多医院入驻强大的电子病历完整文档 ,有演示 一、系统概述: 基层卫生健康云是一款满足基层医疗机构各类业务需要的健康云产品。该产品能帮助基层医疗机构完成日常各类业务,提供病患挂号支持、病患问诊、电子…...
朴素贝叶斯法学习笔记
频率派和贝叶斯派 频率派认为可以通过大量实验,从样本推断总体。比如假定总体服从均值为μ\muμ,方差为σ\sigmaσ的分布。根据中心极限定理,是可以通过抽样估算总体的参数的,而且抽样次数越多,对总体的估计就越准确。…...
vscode与C++安装与使用【不好用来骂我】
网上教程很多,但是都不太好用,这是我垃圾堆里淘金淘出来的教程: 安装软件 安装 Visual Studio Code: 你需要下载并安装 Visual Studio Code,可以在官网下载 https://code.visualstudio.com/download。 安装 C 扩展: 在 Visual S…...
C++11使用多线程(线程池)计算相似度实现性能优化
需求:图像识别中,注册的样本多了会影响计算速度,成为性能瓶颈,其中一个优化方法就是使用多线程。例如,注册了了3000个特征,每个特征4096个float。可以把3000个特征比对放到4个线程中进行计算,然…...
【测绘程序设计】——平面坐标转换
测绘工程中经常遇到平面坐标转换——比如,北京54(或西安80)平面坐标转换成CGCS2000平面坐标、工程独立坐标系平面坐标转换成CGCS2000平面坐标等,常用转换模型包括:①三参数法(2平移+1旋转);②四参数法(赫尔默特法,2平移+1旋转+1尺度);③六参数法(仿射变换法,2平移…...
五子棋的设计与实现
术:Java等摘要:五子棋是一种两人对弈的纯策略型棋类游戏,非常容易上手,老少皆宜。为了更好的推广五子棋,研究简单的人工智能方式,运用Java开发五子棋游戏。主要包含了人机对战,棋盘初始化&#…...
门户网站开发是什么/google登录入口
基于Matlab的湘江水质重金属污染预测模型研究 安徽农业科学 。 J o arn a l o f A n h u i A g fi .S c i . 2 0 1 2。 4 0 ( 9) : 5 4 9 6— 5 4 9 8 责任编辑杨莹莹责任校对况玲玲 基于 Ma t l a b的湘江水质重金属污染预测模型研究 宁 可 …...
php做的网站预览/每日新闻摘抄10一15字
1.内部类的概述 将类定义在另一个类的内部则成为内部类。其实就是类定义的位置发生了变化。 看下面代码: class Outer{int num10;class Inner{//属性int age20;//内部类定义函数public void print(){System.out.println("内部类");}}public void show(){…...
网站注册页面设计/网站百度推广
如今Python在自动化办公领域的表现越来越亮眼,受到了很多非IT的职场人士的推崇,也引得更多的人去了解、学习Python。但是很多初学者都会面临这么一个困惑:想把Python应用在工作中,却不知从何下手! 今天就给大家捋一捋…...
竞网做的网站怎么样/充电宝关键词优化
子选择器 引用链接:http://blog.csdn.net/u012110719/article/details/41171517 还有一个比较有用的选择器子选择器,即大于符号(>),用于选择指定标签元素的第一代子元素。如右侧代码编辑器中的代码: .food>li{border:1px solid red;} 这…...
wordpress 火箭/销售网络平台
最近项目有个需求,涉及发送邮件,发件人用的的阿里的企业邮箱,遇到一些坑: 1.刚开始一直找授权码/服务密码这个东西,后来问阿里那边的客服才知道,原来阿里企业邮箱是没有像QQ邮箱,网易邮箱那样有授权码的&a…...
开发网站好还是app/上海网站设计
2019独角兽企业重金招聘Python工程师标准>>> 在前文我们介绍了如何使用Redis或者Caffeine来做缓存。 Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存-2Spring Boot缓存实战 Caffeine问题描述: 通过使用redis和Caffeine来做缓存,我们会…...