发布日期:2022-10-09 点击率:74
3D传感器的原理 第1张" title="3d传感器原理:3D传感器的原理 第1张-传感器知识网"/>
在计算机视觉系统中,三维场景信息为图像分割、目标检测、物体跟踪等各类计算机视觉应用提供了更多的可能性,而深度图像(Depth map)作为一种普遍的三维场景信息表达方式得到了广泛的应用。深度图像的每个像素点的灰度值可用于表征场景中某一点距离摄像机的远近。?
获取深度图像的方法可以分为两类:被动测距传感和主动深度传感。?
In short:深度图像的像素值反映场景中物体到相机的距离,获取深度图像的方法=被动测距传感+主动深度传感。
被动测距传感
被动测距传感中最常用的方法是双目立体视觉[1,2],该方法通过两个相隔一定距离的摄像机同时获取同一场景的两幅图像,通过立体匹配算法找到两幅图像中对应的像素点,随后根据三角原理计算出时差信息,而视差信息通过转换可用于表征场景中物体的深度信息。基于立体匹配算法,还可通过拍摄同一场景下不同角度的一组图像来获得该场景的深度图像。除此之外,场景深度信息还可以通过对图像的光度特征[3]、明暗特征[4]等特征进行分析间接估算得到。?
上图展示了Middlebury Stereo Dataset中Tsukuba场景的彩色图像、视差实际值与用Graph cuts算法得到的立体匹配误差估计结果,该视差图像可以用于表征场景中物体的三维信息。?
可以看到,通过立体匹配算法得到的视差图虽然可以得到场景的大致三维信息,但是部分像素点的时差存在较大误差。双目立体视觉获得视差图像的方法受限于基线长度以及左右图像间像素点的匹配精确度,其所获得的视差图像的范围与精度存在一定的限制。
In short, 常用于深度图像增强领域的测试数据集Middlebury Stereo Dataset属于被动测距传感;被动测距传感=两个相隔一定距离的相机获得两幅图像+立体匹配+三角原理计算视差(disparity)
主动测距传感
主动测距传感相比较于被动测距传感最明显的特征是:设备本身需要发射能量来完成深度信息的采集。这也就保证了深度图像的获取独立于彩色图像的获取。近年来,主动深度传感在市面上的应用愈加丰富。主动深度传感的方法主要包括了TOF(Time of Flight)、结构光、激光扫描等。
TOF相机
TOF相机获取深度图像的原理是:通过对目标场景发射连续的近红外脉冲,然后用传感器接收由物体反射回的光脉冲。通过比较发射光脉冲与经过物体反射的光脉冲的相位差,可以推算得到光脉冲之间的传输延迟进而得到物体相对于发射器的距离,最终得到一幅深度图像。?
TOF相机所获得的深度图像有以下的缺陷:?
1. 深度图像的分辨率远不及彩色图像的分辨率?
2. 深度图像的深度值受到显著的噪声干扰?
3. 深度图像在物体的边缘处的深度值易出现误差,而这通常是由于一个像素点所对应的场景涵盖了不同的物体表面所引起的。?
除此之外,TOF相机的通常价格不菲。?
结构光与Kinect
结构光是具有特定模式的光,其具有例如点、线、面等模式图案。
基于结构光的深度图像获取原理是:将结构光投射至场景,并由图像传感器捕获相应的带有结构光的图案。
由于结构光的模式图案会因为物体的形状发生变形,因此通过模式图像在捕捉得到的图像中的位置以及形变程度利用三角原理计算即可得到场景中各点
的深度信息。
结构光测量技术提供了高精度并且快速的三维信息,其在汽车、游戏、医疗等领域均已经得到了广泛的应用。
基于结构光的思想,微软公司推出了一款低价优质的结合彩色图像与深度图像的体感设备Kinect,该设备被应用于如人机交互(Xbox系列游戏机)、三维场景重建、机器视觉等诸多领域。?
?
微软公司的Kinect有三个镜头,除了获取RGB彩色图像的摄像机之外,左右两边的镜头分别是红外线发射器和红外线CMOS摄像机,这两个镜头共同构成了Kinect的深度传感装置,其投影和接收区域相互重叠,如下图所示。?
Kinect采用了一种名为光编码(Light Coding)的技术,不同于传统的结构光方法投射一幅二维模式图案的方法,Kinect的光编码的红外线发射机发射的是一个具有三维纵深的“立体编码”。光编码的光源被称为激光散斑,其形成原理是激光照射到粗糙物体或穿透毛玻璃后得到了随机的衍射斑点。激光散斑具有高度的三维空间随机性。当完成一次光源标定后,整个空间的散斑图案都被记录,因此,当物体放进该空间后,只需得知物体表面的散斑图案,就可以知道该物体所处的位置,进而获取该场景的深度图像。红外摄像机捕获的红外散斑图像如下图所示,其中左侧的图片展现了右侧图片中框中的细节。?
Kinect低廉的价格与实时高分辨率的深度图像捕捉特性使得其在消费电子领域得到了迅猛发展,然而Kinect的有效测距范围仅为800毫米到4000毫米,对处在测距范围之外的物体,Kinect并不能保证准确深度值的获取。Kinect捕获的深度图像存在深度缺失的区域,其体现为深度值为零,该区域意味着Kinect无法获得该区域的深度值。而除此之外,其深度图像还存在着深度图像边缘与彩色图像边缘不对应、深度噪声等问题。Kinect所捕获的彩色图像与深度图像如下图所示。?
Kinect所捕获的深度图像产生深度缺失区域的原因多种多样。除了受限于测距范围,一个重要的原因是目标空间中的一个物体遮挡了其背后区域。这种情况导致了红外发射器所投射的图案无法照射到背后区域上,而背后区域却有可能被处在另一个视角的红外摄像机捕捉到,然而该区域并不存在散斑图案,该区域的深度信息也就无法被获得。【Oops,原来遮挡是这样导致了深度值缺失,作者果然厉害,两句话让人茅塞顿开!】物体表面的材质同样会影响Kinect深度图像的获取。当材质为光滑的平面时,红外投射散斑光束在物体表面产生镜面反射,红外摄像机无法捕捉该物体反射的红外光,因此也就无法捕获到该表面的深度;当材质为吸光材料时,红外投射散斑被该表面所吸收而不存在反射光,红外摄像机同样无法捕捉到该表面的深度信息。【材质对深度缺失的影响,分析到位】除此之外,Kinect所捕获的深度图像存在的与彩色图像边缘不一致的问题主要是由彩色摄像机与红外摄像机的光学畸变引起的。
激光雷达
激光雷达测距技术通过激光扫描的方式得到场景的三维信息。其基本原理是按照一定时间间隔向空间发射激光,并记录各个扫描点的信号从激光雷达到被测场景中的物体,随后又经过物体反射回到激光雷达的相隔时间,据此推算出物体表面与激光雷达之间的距离。?
激光雷达由于其测距范围广、测量精度高的特性被广泛地用于室外三维空间感知的人工智能系统中,例如自主车的避障导航、三维场景重建等应用中。下图展示的是激光雷达Velodyne HDL-64E在自主车中的应用,该激光雷达能够获取360°水平方向上的全景三维信息,其每秒能够输出超过130万个扫描点的数据。全向激光雷达曾在美国举办的DARPA挑战赛中被许多队伍所采用,其也成为了自主行驶车辆的标准配置。?
然而,激光雷达所捕获的三维信息体现在彩色图像坐标系下是不均匀并且稀疏的。由于单位周期内,激光扫描的点数是有限的,当把激光雷达捕获的三维点投射到彩色图像坐标系下得到深度图像时,其深度图像的深度值以离散的点的形式呈现,深度图像中许多区域的深度值是未知的。这也就意味着彩色图像中的某些像素点并没有对应的深度信息。?
光谱共焦技术是一种基于轴向色差和色彩编码技术的光学检测方法,将传感器发射端发出的复色光色散为波长连续的光谱,通过色彩编码,将波长准确映射到被测物,通过测量反射光的波长,建立传感器距离与波长间的对应关系,获取被测物的位置信息。
熵智科技自研的3D线光谱共焦传感器SZ-Spec系列,采用同轴共焦光学设计,测量精度高、角度适应性广、测量稳定性高,环境适应性强,出色的动态范围和信噪比,能够轻松地用于测量物体的厚度、平面度、微观形貌、微小瑕疵、翘曲度等,解决3D轮廓精密测量问题,满足半导体、3D玻璃、精密点胶、精密零部件等测量和检测需求。
3D
视觉传感器
早期
3D
传感系统一般都使用
LED
作为红外光源,但是随着
VCSEL
芯片技术的成
熟,在精确度、小型化、低功耗、可靠性等角度全方面占优,因而现在常见的
3D
摄像头
系统一般都采用
VCSEL
作为红外光源。
主
动测距方法的基本思想是利用特定的、
人为控制光源和声源对物体目标进行照射,
根据
物体表面的反射特性及光学、
声学特性来获取目标的三维信息。
其特点是具有较高的测距精
度、抗干扰能力和实时性,具有代表性的主动测距方法有结构光法、飞行时间法、和三角测
距法。
根据投影光束形态的不同,
结构光法又可分为光点式结构光法、
光条式结构光法和光面
式结构光法等。
3D传感器的原理 第3张" title="3d传感器原理:3D传感器的原理 第3张-传感器知识网"/>
本人所在行业属于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传感器这块的,无论是硬件方面还是光学方面,亦或是算法,滤波方面。都可以分享给我。谢谢。
学海无涯,学无止境,大家共勉。
下一篇: PLC、DCS、FCS三大控
上一篇: 电气控制线路图控制原