3D视觉基础(基本原理及3D传感器基本参数)
本人所在行业属于3D视觉方向,因此最近也是学习了很多3D视觉的知识,这次专门总结一下。
传统工业机器视觉中,2D指的是X方向加Y方向,那么3D视觉自然就是加了一个Z方向。目前我接触到的公司产品是3D激光轮廓仪,也叫3D激光传感器,线激光传感器,采用的是激光三角测距法。
- 3D相机的工作原理
在传统的2D视觉中,一套详细的解决方案最基础的是相机、镜头、和光源。根据客户的需求以及现场的生产环境,通过一些公式计算出符合要求的相机和镜头,最后根据客户的成本需求来选出最合适的相机加镜头。最后的光源是整套解决方案中比较难的一个点,要根据客户所测物件的不同来选择合适的光源,保证能够清晰的成像。大家可以看出来,2D视觉对于工程师的要求比较高,要拥有丰富的项目经验,有一定的光学和软件知识,而3D相机相对来说就要简单一些。
一般3D相机都会集成在一个框架内,不会像2D视觉系统那样区分开来。这里我放一张基恩士最新型的一款3D激光轮廓仪给大家看一看:
基本上目前市面上的3D激光相机都是这个样子,里面集成了激光发射器、镜头以及感光芯片。下面我们就来好好讲一讲3D相机的工作原理。
在3D相机中,取代光源的是激光发射器,通过复杂的光学系统设计,激光发射器发出的激光会形成一条直线,激光投射到物体表面就会形成反射,在光学系统的设计下,反射光会被镜头捕捉到,最后通过镜头反射到感光芯片上。因此,3D相机内部最重要的三个部件分别为激光发射器,镜头和感光芯片,同时还会加一些FPGA或者ARM用于图形处理,比如图像算法以及图像滤波。一般情况下,激光发射器需要优秀的光学工程师进行设计,比如不同的透镜反射出来的激光也会有不同的效果;镜头基本上也都是正常我们看见的镜头,感光芯片一般会选择高精度的CMOS芯片。
一般我们把激光线方向称为X方向,也就是激光照射出来的那条线定义为X轴,高度为Z方向,通过一次静态拍照,我们可以得到X和Z两个方向的数据,那么Y方向呢,我们一般把运动方向记为Y方向,也就是说。我们可以通过移动相机或者移动物体,并且让相机持续不断的拍照,就形成了连续的Y方向数据,最后组合在一起,就是我们所需要的3D数据了。
2. 3D相机的测量原理
下面我们来了解一下3D激光相机的测距原理,我司采用的是激光三角测距法,一般工业领域都是普遍采用这个方法,因为激光三角测距法的精度比较高,抗干扰能力也很强,此外,还有很多的测距方法,主要分为两个大类,分别是被动测量类和主动测量类。被动测量类分为单目视觉、双目视觉和多目视觉;主动测量类分为结构光法,TOF飞行时间法,激光三角测距法。TOF飞行时间法也是一种比较常见的3D光学测距方法,主要用于手机领域,比如手机的人脸识别,因为TOF飞行时间的测量范围比较大,可以达到20米到30米,比较适合手机领域进行一些AR/VR交互。
激光三角测距法我就不细讲了,因为网上的资料实在是太多了,直接百度搜索激光三角测距法原理即可。
3. 3D相机中主要使用到的一些技术参数
在与客户的接触中,经常客户会咨询一些硬件参数问题,我发现网上关于3D视觉的资料真的少的可怜,所以好好整理了一番。
在2D视觉中,会有许多专业的术语名词,比如视场,分辨率,重复精度等,3D视觉中也是如此。
在3D视觉中大致以以下术语:
- 视野范围/视场(FOV)
是指在某一工作距离下传感器激光线方向能扫到的最大宽度。在2D视觉中,视场一般是两个值,即X方向*Y方向,而3D视觉只有一个值。一般情况下就是在传感器最佳工作距离下激光线的长度,注意是在工作距离下的长度,毕竟激光发射出来形成一个光面,如果没有遮挡理论上是无限长的。
此外,3D相机还分为近视场,中视场,远视场。
- 测量范围
传感器的近视场到远视场的距离。这个概念有点像2D视觉中的景深,即Z轴可清晰成像的范围。
- 工作距离
传感器下表面到被测物表面的距离。这里的传感器指的就是相机,每台相机的工作距离是不一样的,一定要记住工作距离,不然选好了相机发现客户现场的安装高度达不到相机的工作距离要求,那么你前期的准备工作就全部浪费掉了。
- 分辨率
传感器可以识别的最小尺寸。跟图像传感器一般是CMOS芯片的晶圆尺寸也就是感光元件有关系。
- 线性度
也叫准确度,直线度。一般指的是Z线性度,为偏差值(参考值与测量值的差值)与测量范围的比值
- 重复精度
也叫做重复性。是指将被测物重复扫描4100次后的最大偏差值。
- 垂直分辨率
能够测量出的最小高度
- 水平分辨率
能够测量的最小宽度
- 运动方向
在运动方向还有几个术语如下:
- 线间距:反映传感器接收到的触发信号间隔。这个参数跟编码器信号或者外部信号频率有关系。比如假设一万个脉冲走10毫米,那么信号间隔就为1微米。
- 扫描频率(HZ):单位时间内传感器能够获取的3D轮廓线数目,反映传感器当前配置下的处理极限。比如2K那就是一秒最多可以跑两千条线。这个参数也是客户经常会问到的一个参数。一般情况下,扫描范围越大,曝光时间越长,扫描频率越低。这个参数还分为全幅扫描频率和ROI扫描频率。
- 公式:最大扫描速度=扫描频率*线间距。假设我这里有一个相机扫描频率为1000,线间距为1um,那么1秒他最快只能扫1mm,如果被测物体长1cm,那么我需要扫描至少10秒钟才能将这个物体的长度扫出来。一般情况下,相机的最大扫描频率是固定的,所以只能改动线间距,线间距和编码器或者外部信号有关,也就是说,如果想加快扫描速度,那么只能加大编码器的信号,也就是让物体或者相机的移动速度变快。但是速度过快也可能导致缺少数据细节,导致某些缺陷没有捕捉到。
下面这张图就是对3D传感器的一些参数的可视化,来自于某视觉公司的培训PPT。
下面我们来看一下基恩士的产品目录中的参数列表:
对比前面的参数可视化图,是不是觉得这些参数都比较容易理解了。
现在对于这些参数是不是一目了然。
将一些专业术语理解透彻,不仅在面对客户时可以更加专业,也是为了可以在客户现场更好的解决问题。
目前3D视觉有着2D视觉无法比拟的优势,但3D视觉同样也有一些重难点需要解决。
比如如何知道一个物体能否被准确的扫描出来呢,测量是否成功取决于有多长时间可以用于测量。被测物体通过探头光束的速度越慢,越多时间可以被用于测量。因此,不能简单的认为一个静态测量可行,就一定意味着动态测量也是可行的。测量的结果也取决于被测物体表面的反光特性。也就是说被测物体表面的反光性或吸光性的强弱,会决定是否可以测得有效信号。被测材料本身也会影响测量结果。举例来讲,如果半透明被测物体的透明度过高,测量信号可能完全失真了。最后一个应该考虑的因素是被测物体的轮廓缺陷,可能产生阴影的轮廓以及多次反射的表面影响。以上这些基本因素都可能明显影响测量信号质量以及测量结果。
除去上面提到的这些影响因素,一个清晰可识别的轮廓表面反射的持续信号仍然可能是难以使用的缺损信号。如果想避免这种情况,轮廓仪的每一个独立参数都必须正确设置并适合被测物体。使用正确的滤波器以及曝光时间的设定,往往能够改善不良信号,经过不断尝试最终可以完成测试。举例来讲,测量一个快速移动的黑色橡胶被测物体,较短的曝光时间和被测物体的高吸光性都会更容易导致一个不良的测量结果。而与之相反,如果黑色被测物体不移动或较慢移动,较长的曝光时间可能更有助于获得完整的轮廓信息。但是这样就会影响到检测速度,各有利弊。
目前3D视觉在扫描透明物体比如玻璃的时候效果往往不佳,因为玻璃是可以直接让激光透射过去的,导致CMOS芯片上难以成像,还有一个就是多重反射的问题,也会造成成像错误。
此外,3D视觉还会遇到一个视觉阴影问题,也就是处于相机扫描角度的原因,会出现视野盲区。
所幸是目前学术界对于计算机诗句和3D视觉很是热衷,越来越多的新技术开始出现,开始弥补上述的缺点,据我所知,上述这些问题现在都已经有看了可行且可以落地的结局方法,真是可喜可贺。
以上就是我大致的总结,如果有读者有幸读此文章,并且手里有更多3D视觉的资料,最好是关于3D传感器这块的,无论是硬件方面还是光学方面,亦或是算法,滤波方面。都可以分享给我。谢谢。
学海无涯,学无止境,大家共勉。
3D视觉基础(基本原理及3D传感器基本参数)的更多相关文章
- 3D视觉 之 线激光3D相机
1 3D 视觉 常见的三维视觉技术,包含双目.ToF.激光三角.结构光等,如下图: 1)毫米级 双目.ToF.结构光(散斑)的精度为 mm 级,多见于消费领域,如:导航避障,VR/AR,刷脸 ...
- 从零3D基础入门XNA 4.0(1)——3D开发基础
[题外话] 最近要做一个3D动画演示的程序,由于比较熟悉C#语言,再加上XNA对模型的支持比较好,故选择了XNA平台.不过从网上找到很多XNA的入门文章,发现大都需要一些3D基础,而我之前并没有接触过 ...
- 奥比中光3D视觉传感器--OpenNI 2配置
PrimeSense是Kinect一代的芯片供应商,位于以色列,也是开源体感开发包OpenNI 的维护者.自从被 Apple 收购后,销声匿迹,OpenNI 也停止更新.现在可以从网站http://s ...
- Unity3D游戏开发初探—2.初步了解3D模型基础
一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...
- Unity3D 笔记二 3D模型基础
一.3D模型基础 1.Hierarchy 显示的是界面上的游戏对象(GameObject),每个游戏对象都有.至少要有一个Camera,点击Camera就可以在Preview中看到摄像机的视角画面.每 ...
- 3D开发基础知识和简单示例
引言 现在物联网概念这么火,如果监控的信息能够实时在手机的客服端中以3D形式展示给我们,那种体验大家可以发挥自己的想象. 那生活中我们还有很多地方用到这些,如上图所示的Kinect 在医疗上的应用,当 ...
- WPF 3D 小小小小引擎 - ·WPF 3D变换应用
原文:WPF 3D 小小小小引擎 - ·WPF 3D变换应用 WPF可以提供的3D模型使我们可以轻松地创建3D实体,虽然目前来看还很有一些性能上的问题,不过对于一些简单的3D应用应该是可取的,毕竟其开 ...
- 3-Highcharts 3D图之3D柱状图分组叠堆3D图
<!DOCTYPE> <html lang='en'> <head> <title>3-Highcharts 3D图之3D柱状图分组叠堆3D图</ ...
- 背水一战 Windows 10 (70) - 控件(控件基类): UIElement - Transform3D(3D变换), Projection(3D投影)
[源码下载] 背水一战 Windows 10 (70) - 控件(控件基类): UIElement - Transform3D(3D变换), Projection(3D投影) 作者:webabcd 介 ...
随机推荐
- 配置windows自动修改密码和自动登录
日常运维多台服务器,每季度要修改一次密码,非常麻烦,现做一个VBS脚本,计划任务设置每季度第一天三点定时运行,则可解决该问题,具体实现脚本如下:autochg_pwd.vbs ystr=year(No ...
- 从零搭建Prometheus监控报警系统
什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB).Prometheus使用Go语言开发,是Google BorgMon监控系统 ...
- Linux下文件完整性监控工具Tripwire详解
Tripwire 是目前最为著名的Unix下文件系统完整性检查的软件工具,这一软件采用的技术核心就是对每个要监控的文件产生一个数字签名,保留下来.当文件现在的数字签名与保留的数字签名不一致时,那么现在 ...
- TOP-K Problems
最小的K个数 直接数组排序,取出前K个.复杂度\(O(nlogn)\). 分治 此题只要求出最小的K个数,并不要求这K个数有序. 我们可以借鉴快排中的partition做法,将比第K个数小的都放前面, ...
- 疯子的算法总结(九) 图论中的矩阵应用 Part 2 矩阵树 基尔霍夫矩阵定理 生成树计数 Matrix-Tree
定理: 1.设G为无向图,设矩阵D为图G的度矩阵,设C为图G的邻接矩阵. 2.对于矩阵D,D[i][j]当 i!=j 时,是一条边,对于一条边而言无度可言为0,当i==j时表示一点,代表点i的度. 即 ...
- Q - Play With Sequence HDU - 3971 线段树 重新排序建树
Q - Play With Sequence HDU - 3971 这个题目是一个线段树,比较特别的线段树,就是c询问一定次数之后重新排序建树来优化减低复杂度. 第一次碰到这种题目有点迷. 这个题目写 ...
- Re模块的方法补充
id_str = input("输入一个身份证号:") import re obj = re.compile(r"^([1-9]\d{16}[0-9x]|[1-9]\d{ ...
- train loss与test loss结果分析/loss不下降
train loss与test loss结果分析 train loss 不断下降,test loss不断下降,说明网络仍在学习; train loss 不断下降,test loss趋于不变,说明网络过 ...
- Day_14【IO流】扩展案例3_对文本文件中的字符串内容进行反转
分析以下需求,并用代码实现 项目根路径下有text.txt文件,内容如下 我爱黑马 123456 利用IO流的知识读取text.txt文件的内容反转后写入text.txt文件中 654321 马黑爱我 ...
- 比AtomicLong更优秀的LongAdder确定不来了解一下吗?
前言 思维导图.png 文章中所有高清无码图片在公众号号回复: 图片666 即可查阅, 可直接关注公众号:壹枝花算不算浪漫 最近阿里巴巴发布了Java开发手册(泰山版) (公众号回复: 开发手册 可收 ...