基于线结构光的3D智能相机数据处理算法
2022-02-19王梓凌张震王一璋周哲海
王梓凌 张震 王一璋 周哲海
1.北京信息科技大学,光电测试技术及仪器教育部重点实验室;2.北京盛想科技有限公司
线结构光3D智能相机因其成像速度快、精度高等优势在人工智能、工业检测、人脸支付、VR/AR等领域获得了广泛的应用。搭建了一种线结构光3D智能相机成像系统,开展了数据获取及处理的理论和实验研究,使用Python作为编程语言,使用Numpy、OpenCV、Open3D、Math等库,结合相机标定方法、光平面标定方法和线结构光三维重构理论,编写了三维重构算法,实现了三维重构。相对于已有的数据处理算法,该算法具有速度更快、精度更高的优势,体现了较大的应用价值。
随着信息技术的不断发展,特别是人工智能技术的迅猛发展,3D信息获取已经成为当前信息获取和处理的关键,3D智能相机或深度相机逐渐成为获得物体3D信息的主要技术手段。3D智能相机根据其深度数据计算方式进行分类,主要分为结构光相机、双目立体视觉相机与TOF相机,结构光相机又包括双目结构光和散斑结构光等类型[1-3]。其中,目前发展比较成熟且应用最广泛的技术为基于结构光的三维成像技术[4]。结构光三维成像的硬件主要由相机和投射器组成,结构光就是通过投射器投射到被测物体表面的主动结构信息,如激光条纹、格雷码、正弦条纹等;然后,通过单个或多个相机拍摄被测表面即得结构光图像;最后,基于三角测量原理经过图像三维解析计算从而实现三维重建。基于结构光的三维成像,实际上是三维参数的测量与重现,主要是区别于纯粹的像双目立体视觉之类的被动三维测量技术,因而被称为主动三维测量。总体而言,结构光主要可以分为两类:线扫描结构光、面阵结构光。线扫描结构光较之面阵结构光较为简单,精度也比较高,在工业中广泛用于物体体积测量、三维成像等领域。
线结构光三维成像技术的研究已有20多年的历史[5-6],其真正快速发展主要源于体感游戏。2010年,微软公司推出了体感游戏硬件产品“Kinect”,它之所以可以让游戏用户完全脱离游戏控制器,仅仅是简单地通过虚拟语音和各种移动式的手势就能操纵Xbox360游戏机,是因为该游戏机器里面装配有红外摄像头、红外结构光激光投影器等多种图像传感器。红外结构光激光投影器将30万个不同红外线发射光点同时投射出来到一个待观测场景上,红外摄像头可以快速拍摄到并得到这些红外反射图像信息,由此可以对被拍摄物体进行三维重构。2017年9月,苹果公司发布的iPhone X使得该技术又受到了极大关注。iPhone X独特的“刘海”上已经集成了大量的电子元器件,他们共同组成了Face-ID部件,Face-ID的组件中包含了红外线摄像头、泛光灯、距离强度传感器、环境光强度传感器、听筒、麦克风、前置摄像头和红外线点阵投影器,其运作的一个主要原理也与Kinect类似,是通过直接使用红外线点阵投影器将数万个肉眼几乎看不到的红外线光点直接投射到用户的脸上,从而获取三维数据、分析数据并绘制出用户的三维面谱。iPhone X的巨大成功标志着三维光学图像传感器已经全面的走入了普通民众的视野里,手机、移动穿戴设备的研发制造商们也立马主动跟进,许多国内手机厂家及时地赶上了这一大波进入新兴设备市场的研发热潮。小米8作为目前公认的国内首款可以通过人脸识别技术解锁的国产高端移动智能手机,其人脸识别模块使用的三维结构光技术是以色列Mantis Vision公司提供的;而后正式发布的OPPO Find X则是直接采用国内奥比中光公司的三维结构光传感器硬件和国内旷视科技公司提供的算法;而在华为的手机Mate20 Pro上的三维人脸结构光传感技术则是基于华为自主研究的算法。迄今为止,三维智能人脸识别解锁技术已经成为所有中低高档智能手机的统一标配。
本项目搭建了一种基于DOE的线结构光3D智能相机成像系统,开展了数据获取及数据处理算法研究,相对于已有的数据处理算法,该算法具有速度更快、精度更高的优势,体现了较大的应用价值。
1 基本原理及系统结构
线激光扫描三维重构理论是基于光学三角测量原理。线激光器向被测物体发射一条光束,光束所受到的调制作用主要来自于被测物体表面深度的变化影响和物理间隙的影响,对于摄像机采集到的图像而言,对应的情况就是畸变和不连续性,当物体表面的深度出现增大的时候,畸变的程度也会出现增大,物体表面的物理间隙对应的就是图像的不连续性,固定线激光器和摄像机两者之间的距离或相对位置,为了对物体表面的形状和轮廓进行重构,需要采用的方式是光条的二维畸变图像坐标。因为光束与被测物体表面的交点是光束上的众多光点,因此可以形成超级多的三角几何约束关系,这使得测量的信息量大量增加,可显著提高三维重构的精确度。
图1是搭建的线结构光3D智能相机的成像系统结构示意图。该3D成像系统的部件包括:一个罗技的c270摄像头,物理分辨率为720p;一个波长为650nm,功耗为10mW的一字激光器;一个木头小椅子作为被测物体;两张矩形内框图;一台装有Ubuntu系统和Pycharm的笔记本用来控制摄像头的拍摄和数据处理。
图1 线结构光3D智能成像系统结构示意图Fig.1 Schematic diagram of 3D smart imaging system based on line structured light
三维重构算法主体主要分为三个步骤:确定空间平面,得到平面间的单应性转换矩阵;找到激光光点,标出激光光点密集区域,使用DBSCAN算法把密度聚类中的留下,其余去掉;最后使用上两步的结果进行三维重构。
论文所用的三维重构算法主要使用了Math、OpenCV、Open3D、Numpy等库,如图2所示。其中,sklearn.cluster库中的DBSCAN算法具有非常重要的作用,这种方法本质上是一种空间聚类算法,是建立在密度的基础上。如果某些区域的密度满足要求,采用这种算法可以将这个区域表示为簇,可以采用任意形状的簇表示噪声的空间数据库,采用密度相连点的最大集合可以表示簇。换句话说,以一个选中的样本点为中心,以给定的半径画圆,这个圆圈内样本点个数达到最少是对应的就是满足要求的样本点,相应的就是密度相连点的最大集合。如果在这个圆圈内存在很多样本点,在这种情况下,内部样本点将作为这个圆圈的圆心,进一步会重复上面的步骤,重新画圆以重新圈出样本点,这就类似传销一样,一直去发展下线,以预先规定的值为标准,当传递的圆圈对应的样本点数量低于这个标准的时候,将会停止这个过程,则核心点对应的就是起始的点,则边界点对应的就是停下位置处的点,停止后还在圆外的点为离群点。
图2 算法使用的库Fig.2 Database for DBSCAN algorithm
规定每个圆的半径设为1,圆内最少包含的点数设为6个点,如图2所示。运行结束后,效果如图3所示,可以看出图中共有6个簇,分别对应6种颜色,而没有颜色的点,就是离群点。
图3 设置参数(a)及运行结果(b)Fig.3 Set parameter(a)and operation results(b)
2 实验结果及分析
本论文采用的系统中的相机位置是固定不变的,故采用经典的标定方法——张正友标定法对重构中使用的相机进行标定。制作如图4(a)所示的标定板,标定板由6行8列48个正方形组成。调整棋盘格标定纸和摄像头的相对位置,并将棋盘格标定纸摆放成不同的姿势,用摄像头采集不同摆放姿势,不同角度的棋盘格照片,这样可以得到更准确的镜头畸变参数。为了使结果更加准确,总共拍摄了81张不同姿势的标定板的照片,如图4(b)所示。
图4 棋盘格标定板(a)及不同姿势的标定板(b)Fig.4 Checkerboard calibration board (a) and arrangements with different orientation (b)
本文使用了图像处理OpenCV开源库中的函数编程对棋盘格提取角点和亚像素角点,如图5所示。对所有图片都标出角点后,就可以得到相机的内参数和镜头的畸变参数,结果数据存储在Calibration文件夹中的intrinsics.xml里。
图5 标定板的角点提取Fig.5 Corner extraction of calibration board
经过上述过程,获得了相机的标定结果。其中相机的内参数如表1所示,镜头畸变参数如表2所示。
虽然理论上使用3幅不同角度,不同姿态的棋盘格图像就可以完成标定,但是实际上棋盘格间角度差异过小就会影响其标定精准度,因此使用多少幅图像来标定也需要研究一下。通过表1和表2的数据可知,使用3、4、6、12幅图像时,因为选取图像数量少,选取的图像间差距也可能比较小的缘故,导致相机参数和镜头畸变参数都与30、50、81张时差距比较大,因而不能采用;30、50、81幅时,相机参数差距不大,但是镜头畸变参数30、50幅的与81幅的差距巨大,考虑到使用的不同姿态,不同角度的棋盘格图像越多,镜头畸变参数越准确,所以最终选择81幅图像时的相机参数和镜头畸变参数作为相机标定的结果。图6是最终的三维重建结果,证明了算法的有效性。
图6 三维重构及结果Fig.6 3D reconstruction and results
表1 不同图像幅数相机参数Tab.1 Camera parameters with different frames
表2 不同图像幅数镜头畸变参数Tab.2 Lens distortion parameters for different image frames
3 结论及分析
论文简要介绍了线结构光扫描三维重构原理,阐述了DBSCAN算法,并使用点云数据进行三维重构。然后使用搭建的系统拍摄被测物图像,对相机进行标定,对比了不同图像幅数下相机内参和镜头畸变参数的数据,分析了数据差异的原因并最终选定81幅图像的数据。然后对激光光束进行提取,并识别出桌面和墙面的矩形框,得到被测物体的三维图像。结果表明,本文提出的三维重构算法具有可执行性,可达到比较快的三维重构,具有一定的实际应用价值。
论文研究工作得到了国家自然科学基金(61875237)北京长城学者支持计划项目(CIT&TCD20190323)、北京青年拔尖人才支持计划项目(Z2019042)和北京市实培计划项目的支持。