魏茂,刘涌,王修竹
(1.中共绵阳市委党校,绵阳 621000;2.西南科技大学计算机科学与技术学院,绵阳 621010)
结构光投影3D形貌测量技术具有高速度、高精度、获取的点云密集等特点,得到了市场的广泛认可,广泛应用于精细化测量领域。如今市面上结构光3D扫描仪由于采用了专用光电组件,因此售价昂贵。对于大多数研究者和应用开发者而言,希望能够利用通用的光电组件搭建一个具体实用的实验平台。尽管近年来该方面的理论研究论文大量涌现,但在具体应用设计方面可供参考的资料却非常稀少。因此,基于多年的研发经验,本文详细分析并设计了一个利用通用光电组件进行结构光投影3D形貌测量的实验系统,并针对其中的光栅图像投影与采集控制过程进行了较为详细的介绍,希望能为该方向的研究者和应用开发者提供一些有益的参考。
光栅投影形貌测量通常包括光栅编码技术、相位展开算法、立体匹配算法以及深度计算算法等[1]。通过投射并同步采集一个光栅图像序列,按照确定的相位展开算法进行运算,最终按照测量机构的位置参数来计算物体的三维点云。因而从系统结构上讲,通常需要光栅投影设备和光栅采集设备,包括数字投影机和数字相机。
本测量系统拟采用正弦灰度光栅,利用四步相移法[2]计算包裹相位,采用岳慧敏[3]时间相位展开算法计算展开相位,其时间序列为t=1,8,64,按照LIU算法[4]进行双像相位特征匹配。根据Sony VSP-EL7投影机的特点,需要制作的光栅图片应为分辨率1024×768的8位灰度图像,即黑白图像,并按照横向和纵向两个方向排列正弦光栅。因此,需要制作横/纵两个方向的两套光栅条纹图像,每套图像包含t=1,8,64三种频率的光栅,且每种频率光栅均包含 0°、90°、180°、270°四种相移光栅,共计需要N=2×3×4=24幅结构光栅条纹图像,构成投影光栅图像序列Ii(i=1,2,…,24)。
测量系统体系结构通常是按照测量覆盖范围和测量精度进行规划的,在不考虑测量精度的情况下,也可以根据实际测量物体的大小进行动态调整。本系统设计了如图1所示的系统结构。其中,投影机采用一台HITACHI CP-HX4050投影仪(见图2,最大图像分辨率1024×768),用于投影光栅条纹图像序列;双目相机采用网上购买的两个TT CAM微型摄像头(见图3,图像分辨率1920×1080),用支架固定在一起,形成双目视觉系统,两个摄像头之间的水平距离设置为大约10CM,用于采集投影机投影到被测物体表面后形成的图像序列。设定测量覆盖范围为30CM×25CM,因此需要分别调整光栅投影机和双目相机与被测物体距离,以及投影机与双目相机之间的距离,使得投影机的投影图像和相机镜头的可视区域均能够覆盖设定的同一区域。
图1 测量系统体系结构
图2 HITACHI CP-HX4050投影仪
图3 TT CAM摄像头
在确定了测量系统结构的前提下,需要考虑如何将各个光电部件与计算机接口相互连接,并通过计算机进行集中统一的控制。根据光栅投影3D扫描技术原理,需要计算机控制投影仪投射光栅图像,且相机同步采集调制后的条纹图像。结合计算机、投影仪和摄像头所提供的接口类型,设计了如图4所示的控制系统结构。
其中,两路摄像头均以RJ-45数据信号为输出接口,因此需要在计算机上增加一块多通道图像采集卡(本文采用Intel Gigabit ET Quad Port Server Adapter作为图像采集卡,采用16X AGP接口与主机相连),用于控制摄像头采集并获取采集到的光栅图片。投影仪以VGA接口作为输入,因此需要在计算机上增加一块能够输出VGA信号的显卡(本文采用Radeon R5 230显卡,采用16X AGP接口与主机相连,如图5所示),用于输出光栅图片信号。由于常用的台式计算机(本设计采用联想启天M690E)主板仅有一个16X AGP插槽,因而本系统将该16X AGP插槽分配给图像采集卡使用,而将VGA显卡通过16X AGP接口到1X AGP接口转换线连接到计算机系统主板的1X AGP接口(见图 5)。
图4 控制系统结构示意图
图5 图像采集卡与转换线
在以上系统结构基础上,考虑到PC需要运行控制程序(控制窗体,用于设置相机参数和实时显示两台相机采集的帧图像),而投影仪需要投射光栅图像。因此,设计了两个窗体(控制窗体和投影窗体)分别完成以上任务,且两个窗体分别在个监视器(主监视器和扩展监视器)上显示。本设计将控制程序的控制窗口(同时具有设置相机参数和显示两台相机采集帧图像的相关界面)放在主显示器上显示,而将光栅图像放在由一个控制程序产生的对话窗体中,通过扩展显示器进行条纹序列的投影。同时,为实现两台相机采集时间基本同步,需要设置两个线程,将相机1和相机2采集图像的过程分别放入这两个线程中去独立完成。
图6 控制线程工作流程图
基于以上思路,主窗体开始测量事件作为控制线程,控制流程设计如图6所示。相机1和相机2作为两个独立的线程,由控制线程启动,并通过采集帧控制信号实现同步,启动相机进行帧采集。其工作流程如图7所示。
图7 相机线程工作流程图
本文为结构光栅投影3D形貌测量技术提供了一套相对较为完整的实验平台设计思路。在实际应用中,采集到的图像序列还有需要结合时间相位展开算法、匹配搜索算法、立体相机标定算法、像点立体矫正算法、深度计算算法等,才能真正完成3D立体扫描的任务,而这些内容超出了本文的目标。为方便研究者理解本文的设计思路,相关参考文献已经在相应部分给出,一些具体的算法还可以直接调用OpenCV[5]开发工具包予以实现,在此不再赘述。