光学仪器  2017, Vol. 39 Issue (4): 25-33   PDF    
基于线结构光的桌面3D扫描技术
欧攀, 王定中     
北京航空航天大学 仪器科学与光电工程学院, 北京 100191
摘要: 为了研究基于线结构光的桌面3D扫描系统,将3D扫描所需进行的各项扫描仪标定工作进行了实验,使之得以在人较少参与的情况下自动完成。对图像进行了扫描算法研究,搭建了一套由摄像头、控制板、激光器以及上位机组成的装置。对摄像机进行了标定并通过实验验证了其获得结果的准确性。同时利用光平面方程对光平面进行了标定,利用阈值法和灰度重心法相结合,对光条中心进行提取。通过对物体三维扫描将所得扫描结果与扫描实物进行了对比,分析了系统的误差。该系统具有价格低廉,使用方便等特点。
关键词: 3D扫描     线结构光     图像处理    
A desktop three-dimensional scanning technology based on line structured light
OU Pan, WANG Dingzhong     
School of Instrumenation Science and Opto-Electronics Engineering, Beihang University, Beijing 100191, China
Abstract: The paper is to study a desktop three-dimensional scanning technology based on light structured.The system consists of a camera, a control panel, a laser and a host computer.The scanner has cheap accessible components and is easy to carry.The three-dimensional scanning for the scanner calibration has been adjusted so that it can be automatic.The accuracy of the results is also verified.At the same time, image processing algorithms for scanning are studied.Scanning can also be set up in only a few parameters under the conditions of automatic mode.Finally, the scanning results are compared with the objects, and the errors are analyzed.The experimental results show that the system can carry out 3D scanning of objects.The purpose of this paper is to develop a device of simple operation and low price.
Key words: three-dimensional scanning     line structured light     image processing    
引言

三维测量在产品制造和产品检测上有着广泛的应用[1]。近年来, 在三维测量的基础上开展的各种3D扫描技术得到了迅速的发展, 传统的三维扫描是接触式的三维扫描, 而该技术已越来越无法满足人们的需求。随着3D打印技术的日趋成熟, 未来3D打印很有可能像普通打印一样走入一般家庭, 因此开展对物体三维数据测量的研究具有实际意义。计算机视觉技术的出现为三维扫描提供了新的途径, 而伴随它发展起来的图像处理技术为之提供了可行的方法[2]。通过摄像头拍摄物体图像, 并对图像进行处理可获得被测物体的三维信息, 这就是三维视觉测量技术。由于这项技术的非接触性、快速性等优点, 三维视觉测量技术得到了越来越多的关注, 因此近年来三维视觉测量技术发展迅速并成为获取被测物体表面三维信息的主要方法, 并且在越来越多的领域取得了广泛的应用[3-4]。本文就三维扫描标定技术及图像处理技术进行研究。

1 线结构光桌面3D扫描仪的组成原理

基于线结构光桌面3D扫描仪是将摄像头和激光器固定, 利用转台带动被测物体转动一周来获得被测物体表面三维轮廓数据, 图 1为桌面3D扫描仪结构框图, 主要由激光器、摄像头、控制板、转台、连接件、步进电机、计算机及测量软件等组成。本文设计的基于线结构光桌面3D扫描仪使用的摄像机是罗技的c270网络摄像头, 控制板使用的是Arduino UNO, 其余激光器、螺丝、步进电机等都可以轻松买到, 最终组装完成的结果见图 2

图 1 桌面3D扫描仪结构框图 Figure 1 Desktop 3D scanner block diagram

图 2 桌面3D扫描仪 Figure 2 Desktop 3D scanner

测量软件主要完成对摄像机参数的标定、光平面的标定以及光条图像中线结构光光条中心的提取, 并根据传感器模型计算出测量位置上的物体表面点坐标, 最后根据工作台的位置参数将测量结果整合到物体表面轮廓数据中, 并完成对整个物体表面的扫描, 得到完整的表面轮廓数据。测量软件部分流程图如图 3所示。

图 3 测量软件部分流程图 Figure 3 Part of the measurement software flow chart
2 摄像机参数的标定

在线结构光三维扫描测量系统中被测物体的三维轮廓信息是通过摄像机拍摄的图像来获取的。摄像机拍摄出的图像是二维的, 只能得到二维坐标系下物体的坐标, 而最终扫描是要得到被测物体的三维空间坐标, 这就需要利用系统各个模型的参数来进行换算。摄像机标定能获得进行坐标转换所需的参数, 这些参数根据决定条件有内外之分。其中内参数由设备本身所决定, 不受位置关系影响, 而外参数受系统各个元件的相对位置所影响, 这些参数在将坐标从二维转换到三维的过程中不可或缺。因此必须首先对摄像机进行标定。

在摄像机标定过程中要进行由二维到三维的坐标转换, 故会用到多个坐标系[5-6]。摄像机拍摄所得的图像仅仅是一张满是像素点的二维图像, 所能提供的也只有以像素个数为单位的像素位置坐标。而最终需要得到的物体三维位置坐标是以物理量为单位的, 故需要将以像素为单位的图像转化成以物理量为单位的图像, 即将像素坐标系转化为物理坐标系。设二维图像的像素坐标系是以O0为原点、uv为轴并以像素为单位的O0-uv, 而在其上再建立一个以物理量为单位的以O1为原点、xy为轴的坐标系O1-xy。其中u轴与x轴相平行, v轴与y轴相平行, 而O1不与O0重合。令O1O0-uv下坐标为(u0, v0), 如图 4所示。

图 4 图像坐标系转换关系 Figure 4 Image coordinate system conversion relationship

令dx和dy为像素在x轴和y轴上的单位长度, 现将摄像机所拍得的图像的二维坐标信息转换成三维坐标信息。首先需要将图像的二维坐标转化到以O点为坐标原点的xc, yc, zc为轴的摄像机坐标系下, 其中xc轴与x轴相平行, yc轴与y轴相平行, zc轴为摄像机的光轴, 之后就可以把所得的三维坐标转换到世界坐标系下。设世界坐标系由Ow-xwywzw来表示, 它是描述摄像机位置的基准坐标系。则图像、摄像机及世界坐标系之间的关系如图 5所示。

图 5 坐标系关系图 Figure 5 Coordinate system diagram

设在作为参考的世界坐标系下的P点的齐次坐标为(Xw, Yw, Zw, 1)T, 在摄像机坐标系下的P点齐次坐标为(Xc, Yc, Zc, 1)T, 则这二者坐标之间的关系为

(1)

式中:R为3×3正交单位矩阵; t为三维平移向量; O=(0, 0, 0)T; M1为4×4矩阵。

通过求解上式, 就可以得到摄像机的外参数。

3 光平面标定

在获得了摄像机内部参数之后, 还需要进行光平面标定, 以此来获得扫描所用的线激光的激光光平面在整个系统中的相对位置, 即光平面的方程。光平面标定就是要去获得激光光平面上多个特征点的坐标最终求出光平面方程[7-8]

由空间几何学知识可知, 只要知道空间中不共线的3个或3个以上的光平面特征点的坐标, 就可以解出光平面方程, 即可以拟合出光平面的结构参数。设光平面结构方程为

(2)

在获得的标定板图像上选取n(n≥3) 个特征点, 令它们的坐标为Xwi, Ywi, Zwi, 其中i=0, 1, 2, …, n-1, 则可以算出这些特征点的空间坐标。而要通过这些特征点坐标来拟合出光平面方程则需要满足条件最小。而要让S取得最小值, 则需满足, 其中k=0, 1, 2。于是可得矩阵式

(3)

通过式(3) 所示方程组即可得到a0, a1, a2 3个参数, 并最终求出Zw=a0Xw+a1Yw+a2这一光平面方程。

为提取光条中心, 首先要了解将要进行处理的光条纹的特点。本文所研究的基于线结构光的桌面3D扫描技术使用的是线激光器, 而激光器发出的光束实际上是高斯光束。而高斯光束的特点是:设由光源发出的光束沿着光轴传播, 则在整个光束上任意一个垂直于光轴的横截面中, 光强都服从高斯分布。这表明在光轴任意一个截面上, 越靠近光轴光强越强, 越远离光轴光强越弱, 即光强与到光轴距离成反比[9-10]。对于线结构光, 其投射到被测物体表面时光条每一个位置的横截面上的光强都具有上述的分布特点, 即其光强分布为

(4)

式中:μx轴上光强的数学期望; σ为均方差。

则光条每一个横截面上的像素灰度值近似服从高斯分布, 如图 6所示。由图可知光条的中心处灰度值较大, 边缘处灰度值较小。

图 6 像素值分布图 Figure 6 Pixel value distribution

摄像机所采集到的扫描图像除了光条之外还包括许多无用的信息, 同时还包括很多噪声和其他干扰因素。故在进行光条中心提取之前, 需要对采集的图像进行处理, 尽量排除影响光条提取的因素, 这样才能更好地获得想要的信息。

本文所研究的基于线结构光的桌面3D扫描技术不只是要获得被测物的轮廓信息, 还希望能获得其色彩信息, 故只使用有激光光条的图像来进行处理是不够的, 因为光条挡住了其所在位置的色彩信息。所以, 本文将采集同一位置的2幅图像, 一幅是有激光光条的图像, 另一幅是同一位置没有激光光条的图像。这样当提取出了光条中心的位置后就可以在同一位置没有激光光条的图像上提取出光条中心位置的色彩信息。当2幅同一位置的图片都转化为灰度图像之后, 只需将它们相减就能很好地排除周围环境因素的影响而获得想要的光条附近的信息。之后再将剩余的噪声、零散的点进行处理即可。而消除这些噪声可以使用图像滤波来实现, 这样不仅可以提高图像的分辨率, 而且更易获得有用的信号。经过这些处理, 基本上只剩下1个有一定宽度的光条图像, 只要使用适当的方法进行光条中心提取即可[11]

本文做了实验来验证提取的效果并最终选择了阈值法与灰度重心法相结合的方法来提取光条中心。先对具有一定宽度的激光光条进行阈值处理, 用以提高图像的质量, 再对其使用灰度重心法提取其光条的中心[12]

4 实验结果与分析 4.1 摄像机内部参数标定

本文所进行的标定利用了OpenCV提供的工具进行。如图 7所示, 就是利用OpenCV提供的工具对标定板的角点进行了识别并绘制出了标定线。

图 7 角点和标定线 Figure 7 Corner and calibration lines

理论上只要有3幅以上图片就可以得到较为准确的相机内部参数, 但实际上当标定板角度差异较小或平行时就会影响标定的结果。故使用多少幅图像来进行标定比较好也需要通过实验来验证。本文在转台上对不同幅图像以不同角度进行了标定, 实验结果如表 1所示。

表 1 不同幅图像标定结果比较 Table 1 Comparison of different picture calibration results

表 1中:axay分别为u轴和v轴的归一化焦距, 一般情况下, 二者相等; u0v0则表示光学中心, 即摄像机光轴与图像平面的交点, 通常位于图像中心处。

当使用的图像幅数较少如3幅、4幅时, 特意将这几幅图像之间的角度放得十分大, 保证在各个侧面都可以对标定板进行拍摄, 使之在以摄像机为参考坐标下正面、左侧面、右侧面都只有1张图像用于标定, 如图 8所示。而当用10幅和12幅标定时, 虽然每幅之间的夹角并不大, 但因为数量较多, 最终标定图像中也包含了正面、左侧面、右侧面。故它们相当于在摄像机能观察到标定板的180°范围内, 从0°到90°和90°到180°这2个范围内都有用于标定的图像。而使用6幅图像进行标定时, 本文特意使之仅在0°到90°范围内进行小角度的变化, 如图 9所示。根据摄像头原有分辨率, 对比5组数据可以发现, 在转台上用3幅、4幅、10幅、12幅进行标定所得的结果符合程度较好, 而使用6幅图像且角度范围变化较小来进行标定时其结果与其他结果差异较大。基于此实验结果, 并且为了减少标定误差, 本文最终使用12幅图像来进行标定并编写自动标定程序。

图 8 3幅图标定结果 Figure 8 Three chart calibration results

图 9 6幅图标定实验 Figure 9 Six chart calibration results
4.2 光平面标定和转台标定试验

本文采用周富强等[13]提出的基于自由移动平面靶标的光平面的现场标定方法, 将之应用于桌面3D扫描仪上时, 使用的是和摄像机标定中相同的验证过程及自动化方法。最后完成的自动标定程序是将标定板放置在转台上, 自动寻找到标定板后, 转台带动标定板向一个方向转动, 每转过一个小角度就停下来依次开关左右线激光器各一次, 用摄像机分别捕捉只含有左激光光条和右激光光条的2张图像。最后转过180°后, 利用所获得的图像提取出光平面特征点, 以此来算出左右2个激光器的光平面方程, 结果如图 10所示。

图 10 左右光平面标定结果 Figure 10 Left and right light plane calibration results

转台轴线标定则在光平面标定完成后直接开始进行。本文是利用特征点运动轨迹拟合空间圆来标定转台中心轴线, 故只需要在光平面标定完成后将转台反方向转动180°, 同时摄像机捕捉标定板在不同位置时特征点的坐标, 即可以得到其运动轨迹并拟合出空间圆。由此即可获得转台的中心轴线位置, 并求解出转台坐标系相对于摄像机坐标位置, 从而得到用于坐标系之间转换的系统结构参数。转台中心轴线标定结果如图 11所示。

图 11 转台中心轴线标定 Figure 11 Turntable center axis calibration
4.3 扫描相关算法及实验

基于线结构光的桌面3D扫描仪设计了简单扫描和纹理扫描2种扫描模式。简单扫描模式只扫描被测物的表面轮廓信息, 进行这种扫描时可以将线激光器一直打开着, 投射到被测物体表面, 然后转盘带动被测物旋转一周进行扫描。进行这种方式的扫描时转盘每次转动时的时间间隔可以比较小, 每个位置也只需要拍摄1张图片, 速度会比较快。纹理扫描模式不仅要获得被测物的三维轮廓信息, 而且还要获取其同一位置的色彩信息, 故转台带动被测物转动扫描时, 每个位置需要让线激光器开关1次, 摄像机捕捉有激光光条和没有激光光条的2幅图片, 故在同一位置转台停留时间较长, 扫描速度也较慢。

4.3.1 简单扫描模式算法

简单扫描是在每个位置采集1幅含有激光光条的图片, 对其进行图像处理的方法如下。首先, 对扫描获得的图像进行颜色空间转换, 将图像从RGB形式转化为YCrCb的形式, 得到所需的灰度图像。然后, 利用split函数把图像分离为Y、Cr、Cb 3个通道, 因为Cr通道图像反映的是RGB输入的图像信号的红色部分与RGB信号亮度值之间的差异, 能够突出地表现出红色的激光光条来, 因此就可以使用Cr通道图像来进行下一步操作。图 12(a)是摄像机获得的原图, 图 12(b)是进行颜色空间转换后得到Cr通道的图像。

图 12 颜色空间转换前后对比图 Figure 12 Comparison of color space after conversion

之后对图像进行阈值处理, 排除周围环境影响, 只留下激光光条图像。利用灰度重心法对其中心位置进行提取, 将有一定宽度的光条变成了单像素条纹即可获得其在二维图像上的位置信息。图 13(a)为进行阈值处理后得到的有一定宽度的光条, 图 13(b)则是进行了中心提取后所得到的单像素光条。

图 13 阈值处理图像和中心提取图像 Figure 13 Threshold processing t and center extract image
4.3.2 纹理扫描模式算法

纹理扫描模式不仅要获取被测物三维轮廓信息, 而且还要获取其颜色信息。首先将2幅图像都从RGB形式转化为YCrCb的形式, 并利用split函数分别提取出2幅图像的Cr通道的图像, 这时得到了有激光光条和没有激光光条的2幅灰度图像。之后利用OpenCV提供的subtract函数对2幅灰度图像进行相减, 这时得到了光条附近的图像。图 14(a)是含有激光光条的原图, 图 14(b)是相减后的图像。

图 14 原图和相减处理后的图像 Figure 14 The original and subtraction image

对得到的相减后的图像利用OpenCV提供的工具morphologyEx函数进行形态学开运算处理, 结果如图 15所示, 只保留了光条附近信息。接下来进行阈值处理, 保留下激光光条, 结果如图 16所示。故利用和简单扫描模式同样的方法, 就能提取出光条的二维坐标位置信息了。利用这里所得到的二维坐标位置信息在没有激光光条的图像上提取同一位置的色彩信息并保存下来。接着利用标定所得的摄像机内部参数和系统结构参数来将二维坐标位置信息转换到三维的转台坐标系下, 结合色彩信息和位置信息将点绕转台轴线描绘出来, 即可完成三维重建。

图 15 开运算后结果 Figure 15 The results of operation

图 16 阈值处理后图像 Figure 16 Threshold processed image
4.4 扫描实验及精度分析

本文使用图 17所示次雕像作为扫描被测物进行扫描实验, 分别用2种模式进行扫描后得到三维重建结果, 如图 18图 19所示。由图可以明显地看出2种扫描模式都还原了被测物体的基本轮廓形状。由于简单扫描只扫描了被测物的轮廓信息, 故其三维重建时描绘出的点云使用的是相同的颜色, 因此难以看出层次感。而纹理扫描三维重建时带入了色彩信息, 故结果看上去更好一些。为了了解扫描出的数据与实际情况相比精度如何, 本文使用比较特征位置尺寸的方法来粗略估计扫描精度。

图 17 被测物 Figure 17 Measured object

图 18 简单扫描 Figure 18 Simple scan

图 19 纹理扫描 Figure 19 Texture scan

这个塑像大部分的形状都是不规则的, 故本文选择测量塑像实物长方体底座的长宽来与扫描所得的三维图形的底座长宽相比较, 来确定扫描的精度。实物塑像底座的长宽可以通过游标卡尺进行测量, 而扫描所得图形的尺寸可以使用Meshlab读取三维数据, 再利用它提供的工具进行测量, 测量过程如图 20所示, 最终结果如表 2所示。

图 20 Meshlab测量尺寸 Figure 20 Meshlab measurement dimensions

表 2 扫描精度比较表 Table 2 Scanning accuracy comparison table mm

表 2所得结果可以发现, 扫描结果与实物相差不大, 而且其中纹理扫描相比简单扫描所得轮廓尺寸要更接近实物一些, 故纹理扫描精度相比简单扫描精度要高一些。这2种扫描模式所得结果使用的是相同的换算公式并且其中参数是同一次标定得到的, 而且它们进行中心光条提取的方法也是相同的, 故它们之间精度的差异来源于图像处理方法的差异。

5 结论

对基于线结构光的桌面3D扫描仪确定了合适的标定方法, 完成了摄像机标定、光平面标定和转台轴线标定的自动标定程序。经图像处理、位置信息提取、坐标转换以及三维重建等工作, 确定并编写了2种扫描模式的扫描程序, 实现了将物体进行3D扫描并得到其三维数据和图形的目标。本文所研究的基于线结构光的桌面3D扫描技术是一种廉价的、操作方便的3D扫描技术, 由此在3D技术不断发展的今天, 桌面3D扫描仪有望实现面向普通人群的目标。

参考文献
[1] KLETTE R, SCHLVNS K, KOSCHAN A. Computer vision:three-dimensional data from images[M]. Singapore: Springer-Verlag Singapore Pte.Ltd, 1998.
[2] FORSYTH D A, PONCE J. Computer vision:a modern approach[M]. New Jersey: Prentice Hall, 2002.
[3] STOCKMAN G, SHAPIRO L G. Computer vision[M]. Upper Saddle River, NJ, USA: Prentice Hall PTR, 2001.
[4] 邾继贵, 于之靖. 视觉测量原理与方法[M]. 北京: 机械工业出版社, 2012.
[5] 舒娜. 摄像机标定方法的研究[D]. 南京: 南京理工大学, 2014. http://cdmd.cnki.com.cn/Article/CDMD-10288-1014176311.htm
[6] 李洪海, 王敬东. 摄像机标定技术研究[J]. 光学仪器, 2007, 29(4): 7–12.
[7] 谢宇浪. 线结构光视觉测量的标定方法与实验评价[D]. 武汉: 湖北工业大学, 2014. http://cdmd.cnki.com.cn/Article/CDMD-10500-1014038354.htm
[8] 郭倩, 汪苏, 沈忠睿, 等. 基于结构光技术的3D激光扫描测量系统[J]. 数据采集与处理, 2012, 27(增刊1): 106–110.
[9] 张雨薇. 基于结构光的物体三维形貌测量[D]. 哈尔滨: 哈尔滨工程大学, 2012. http://cdmd.cnki.com.cn/Article/CDMD-10500-1014038354.htm
[10] 张凤生. 高斯光束的数值模拟新方法[J]. 光子学报, 2008, 37(6): 1259–1262.
[11] 徐静珠. 结构光三维测量中光条中心提取方法及其评价的研究[D]. 南京: 南京大学, 2012. http://cdmd.cnki.com.cn/Article/CDMD-10284-1012375706.htm
[12] 李中伟, 王从军, 史玉升. 一种结合梯度锐化和重心法的光条中心提取算法[J]. 中国图象图形学报, 2008, 13(1): 64–68. DOI:10.11834/jig.20080112
[13] 周富强, 张广军, 江洁. 线结构光视觉传感器的现场标定方法[J]. 机械工程学报, 2004, 40(6): 169–173.