基于BP神经网络的结构光光条中心提取 下载: 1300次
1 引言
线结构光传感器主要由相机和投射线光条的激光器组成,具有结构简单、测量速度快、精度较高等优点,在三维视觉测量和检测中具有广阔的应用前景[1-2]。由被测表面调制得到的变形光条宽度通常为几到几十个像素。测量时,须先准确得到光条中心,再根据传感器系统参数计算对应的轮廓。传感器系统参数由激光器与相机的相对位姿、相机内参数和畸变参数决定,其在标定完成后不再变化[3-4]。光条图像质量随被测对象面型、材质、所处环境的改变而改变,如何快速、准确地提取光条中心是实现测量的关键,也是线结构光传感器研究的一个核心问题[5]。
像素级中心提取法得到的光条中心坐标的最小单位为单个像素,主要包括极值法[6]和方向模板法[7]。极值法计算速度快,但易受噪声影响,精度较低。方向模板法采用互相关运算,在降低噪声对中心提取结果影响的同时,也限制了计算效率的提高。随着对测量精度要求的提高,亚像素中心提取方法得到了更广泛的应用。灰度重心法(GGM)具有算法简单、计算效率高的优点,其不足之处在于精度低、对噪声敏感[8]。梅峻华等[9]在灰度重心法的基础上,从全局角度进行多项式曲线拟合得到了光条中心。Usamentiaga等[10]通过对灰度重心法得到的光条中心点进行分割与多项式拟合来提升中心提取精度。Li等[11]采用移动最小二乘拟合构建自适应窗口,进而依据每个窗口内像素点的灰度值计算对应光条截面的亚像素坐标。江永付等[12]采用三次多项式曲线对灰度重心法得到的中心点进行拟合,改善了光条中心的提取效果。李涛涛等[13]采用高斯-洛伦兹分峰拟合提取光条图像的中心,该方法具有提取精度高、适用性较强等特点。高世一等[14]采用变边限高斯拟合法来提升中心的提取精度。上述方法均通过拟合来提升中心的提取精度,计算过程中需要求解拟合多项式系数,从而影响了光条中心的提取速度。
Steger法[15]是目前应用最广泛的光条中心提取方法,该方法先采用Hessian矩阵计算光条中心的法向量,然后通过泰勒展开得到亚像素中心坐标。计算过程需要进行大量的高斯卷积运算,卷积运算在提升中心提取精度和可靠性的同时也显著影响了计算效率。通过卡尔曼滤波[16]、霍夫变换[17]、极值法[18]、区域增长迭代法[19]、差影法[20]确定光条所在的像素区域,仅对光条区域进行卷积计算,可以提升中心提取的效率。测量时光条形状是变化的,故每幅光条图像均需重新确定光条区域,计算量较大。此外,Steger法提取光条中心时存在丢失数据点和获取多重数据点的问题[21]。除上述方法外,光条中心提取法还有主成分分析方法[22]、多尺度分析法[23],这些方法在提升中心提取精度的同时,存在算法复杂、提取时间长等不足。采用高性能图形处理器(GPU)及深度学习模型先对光条模型进行区段分割,再对每个区段内的光条进行中心提取,能够有效缩短中心提取的时间,但相应的硬件成本也会显著增加[24]。综上分析,在考虑硬件成本的前提下,目前光条中心提取面临的主要问题是效率与精度难以兼顾。为了提升中心提取精度而引入的拟合、卷积、互相关、多尺度等算法均涉及到大量的数据运算,限制了中心提取效率的提升。
针对上述问题,本文提出了一种基于BP(back propagation)神经网络的线结构光光条中心提取方法,给出了神经网络的训练方法,分析了影响光条中心提取精度的因素,实现了光条中心高精度、高效率的提取。
2 基本原理
2.1 选取像素点
光条中心按列像素依次提取,先选取每列像素中光条的截面区域,如
式中:vq-1和vq-2分别为Pq-1和Pq-2的纵坐标值。根据像素点灰度值判断Pq是否有效,若为有效截面中心点,则所选取的行像素的序号范围为
式中,
2.2 计算亚像素中心
采用BP神经网络计算所选取的每列像素中心的基本原理如
图 2. 采用神经网络计算每列像素中心的基本原理
Fig. 2. Basic principle of center computation of each column using neural network
给定输入层神经元的权值为1,激励函数为fa(x)=x,x为输入,则输入层的输出向量与训练样本相等,即A=X。隐含层采用Sigmod激励函数,则隐含层神经元输出为
输出层激励函数取
从而保证了输出函数的最大值与所选像素行数一致。此时,采用神经网络得到的亚像素中心的坐标值为
2.3 神经网络的训练
为得到神经网络的权值,需根据理想光条中心对网络进行训练。先采用Steger法[15]得到光条的中心
式中:β(x)为Γ次多项式基函数,β(x)=[β1(x),β2(x),…,βγ(x),…,βΓ(x)]T,其中βγ(x)为基函数中的第γ项;α为多项式的待定系数,α=[α1,α2,…,αγ,…,αΓ]T,其中αγ为基函数第γ项所对应的待定系数。则加权的拟合误差为
其中
式中:Κ为所选择的区域中光条中心点的个数;
第q列像素对应的光条中心的理想纵坐标为
式中:
根据梯度下降原理调整神经网络权值
式中:Δ
式中:
当网络训练误差小于给定误差,或者训练次数达到最大训练值时,停止训练,根据(5)式即可得到光条中心。
3 实验与讨论
3.1 训练网络
训练神经网络时采用的计算机的CPU为Intel i5-3470,主频为3.2 GHz,内存为4 GB。计算软件平台为MATLAB R2012b。神经网络为三层网络,输出层神经元个数为1,输入层、隐含层神经元个数分别设定为n=11和m=3。使用如
图 3. 用于网络训练的不同形状的光条。(a)下降光条;(b)上升光条;(c)水平光条;(d)随机光条
Fig. 3. Light stripes with different shapes for network training. (a) Falling stripe; (d) rising stripe; (c) horizontal stripe; (d) random stripe
神经网络训练时,每次迭代后得到的均方根误差为
分别计算采用
3.2 截面中心提取
光条截面的灰度值通常为高斯分布,考虑噪声影响时,第q个截面任意像素vh的灰度值Ih可表示为
式中:Z0为灰度幅值;Δvq为中心偏移量;σ0为方差;εh为服从均匀分布的随机噪声;z0为噪声的幅值,且Ih≤255。当Z0=155,σ0=2,z0=10时,根据(16)式可得光条截面轮廓,如
在(-2,2)区间内,随机改变Δvq得到1000个截面轮廓,进而计算神经网络提取的每个轮廓对应的误差值
分别计算噪声幅值z0不同时,中心提取误差分布3σ值和Erms值,如
表 1. 不同噪声下的均方误差值和误差分布3σ值
Table 1. Mean square error and error distribution 3σ value under different noises
|
3.3 光条中心的提取
采用
图 7. 不同形状光条的中心提取结果。(a)弧形光条;(b)随机光条;(c)间断光条;(d)齿形光条
Fig. 7. Center extraction results of strips with different shapes. (a) Arc stripe; (b) random stripe; (c) discontinuous stripe; (d) tooth stripe
3.4 影响中心提取精度的因素
3.4.1 神经网络结构
1) 输入层神经元数
当输入层神经元个数少于光条截面宽度时,光条截面信息不能完全输入到神经网络中,会影响提取精度;当输入层神经元个数过多时,则会增加网络训练难度,降低提取速度。实验发现,该传感器光条截面像素宽度均在10 pixel以下,故选取输入层神经元个数n=11。
2) 隐含层神经元数
隐含层神经元个数m取决于输入和输出之间的非线性程度,目前还没有统一的计算方法,拟根据神经网络对光条中心提取的误差确定隐含层的神经元个数。评判中心提取误差时选用深圳PointVision公司的陶瓷靶标背面作为参考平面,其平面度可达5 μm。移动陶瓷靶标,使激光平面与陶瓷表面相交,得到三个不同位置处的激光光条L1、L2、L3,如
选取靶标表面上的光条作为感兴趣区域(ROI),使用具有不同隐含层神经元个数的网络提取上述不同位置处的三根直线光条的中心。对中心点进行直线拟合,计算不同光条在不同隐含层神经元个数下拟合误差的绝对均值Eavr和均方根值Erms,分别如
图 9. 隐含层神经元个数不同时直线光条中心提取误差。(a)均值;(b)均方根值
Fig. 9. Center extraction error of linear stipe for different numbers of hidden layer neurons. (a) Average value; (b) root mean square value
3) 隐含层层数
在单个隐含层的基础上,再增加一个隐含层,并将新增隐含层神经元个数设定为3,在隐含层层数分别为1、2的情况下分别计算
表 2. 不同隐含层层数时的中心提取误差
Table 2. Center extraction error for different numbers of hidden layers
|
3.4.2 训练样本
选取如
表 3. 使用不同训练样本时网络对光条中心的提取误差
Table 3. Stripe center extraction error from network using different training samples
|
4 对比分析
采用所提方法计算
图 10. 光条中心提取结果及误差比较。(a)光条中心神经网络提取结果;(b)中心提取误差对比
Fig. 10. Center extraction result of stripe and error comparison. (a) Center extraction result of stripe using neural network; (b) comparison of center extraction errors
此时,L1光条与水平方向的夹角约为0°,为了进一步分析所提方法在提取精度上的优势,旋转靶标使光条与水平方向依次成20°、40°、60°、80°夹角,并分别采用GGM、Steger法、所提方法提取光条中心,通过直线拟合计算中心提取误差的Erms值,结果如
表 5. 不同方法进行中心提取的运行时间
Table 5. Run time of different center extraction methods
|
表 4. 光条与水平方向呈不同夹角时不同中心提取方法的Erms值
Table 4. Erms obtained by different center extraction methods for different angles between stripe and horizontal direction
|
实际测量中,光条形状较为复杂,光条上各处的质量也各不相同,并可能存在欠曝光、过曝光等现象,如
图 11. 不同质量光条的中心提取结果。(a)原始光条;(b)欠曝光;(c)正常光条;(d)过曝光
Fig. 11. Comparison of center extraction results for different stripe qualities. (a) Original stripe; (b) under exposed stripe; (c) normal exposed stripe; (d) over exposed stripe
选取相机拍摄的大小为1280 pixel×960 pixel的光条图像,分别采用Steger、GGM和所提方法进行中心提取,运行时间如
5 结论
提出了一种基于BP神经网络的线结构光光条中心提取方法,给出了神经网络的训练策略,并对影响中心提取的因素进行了分析。通过对Steger方法得到的光条中心进行移动最小二乘拟合得到用于网络训练的理想的光条中心样本,训练后神经网络对光条中心提取误差的均方根值小于0.02 pixel,表明所提方法能够实现对神经网络的高精度训练。训练得到的结果仅为网络各层间的权值,便于存储和使用。直线光条中心提取结果表明,当隐含层神经元个数为3、隐含层层数为1时,中心提取效果最好。使用带有噪声的不规则光条训练得到的网络,可以得到更高的光条中心提取精度。由对比实验可知,所提方法对直线光条中心的提取误差小于Steger法和灰度重心法。根据不同曝光质量的随机光条中心提取结果可以看出,所提方法在正常曝光条件下与Steger法结果基本一致,且在欠曝光和过曝光区域分别克服了Steger法存在的中心点丢失和多重中心点的问题。对于1280 pixel×960 pixel图像,本文方法提取光条中心的运行时间仅约为0.04 s,相较于Steger法显著缩短,表明该方法在光条中心提取方面具有精度好、效率高的优势。
[1] Mao Q Z, Cui H, Hu Q W, et al. A rigorous fastener inspection approach for high-speed railway from structured light sensors[J]. ISPRS Journal of Photogrammetry and Remote Sensing, 2018, 143: 249-267.
[2] 李玥华, 周京博, 刘利剑. 线结构光测量技术研究进展[J]. 河北科技大学学报, 2018, 39(2): 115-124.
[4] 周京博, 李玥华, 秦志英, 等. 基于参考靶标的线结构光传感器标定[J]. 光学学报, 2019, 39(4): 0412005.
[5] 李莹莹, 张志毅, 袁林. 线结构光光条中心提取综述[J]. 激光与光电子学进展, 2013, 50(10): 100002.
[6] 贺俊吉, 张广军. 结构光三维视觉检测中光条图像处理方法研究[J]. 北京航空航天大学学报, 2003, 29(7): 593-597.
[7] 胡斌, 李德华, 金刚, 等. 基于方向模板的结构光条纹中心检测方法[J]. 计算机工程与应用, 2002, 38(11): 59-60, 109.
[9] 梅峻华, 赖磊捷. 结构光测量系统光条中心提取算法研究[J]. 电子测量技术, 2018, 41(21): 8-13.
[12] 江永付, 江开勇, 林俊义. 线结构光光条中心亚像素精确提取方法[J]. 激光与光电子学进展, 2015, 52(7): 071502.
[13] 李涛涛, 杨峰, 李石庚, 等. 基于高斯-洛伦兹分峰拟合的线结构光条中心的提取方法[J]. 激光与光电子学进展, 2019, 56(7): 071201.
[14] 高世一, 杨凯珍. 变边限高斯拟合提取激光条纹中心线方法的研究[J]. 仪器仪表学报, 2011, 32(5): 1132-1137.
[16] 孙军华, 王恒, 刘震, 等. 钢轨磨耗动态测量中激光光条中心的快速提取[J]. 光学精密工程, 2011, 19(3): 690-696.
[17] 南方, 李大华, 高强, 等. 改进Steger算法的自适应光条纹中心提取[J]. 激光杂志, 2018, 39(1): 85-88.
[18] 杨镇豪, 杨柳, 李辉, 等. 复杂环境下结构光中心线提取算法[J]. 计算机技术与发展, 2018, 28(9): 7-10.
[19] 刘剑, 刘丽华. 基于海森矩阵与区域增长的激光条纹中心提取[J]. 激光与光电子学进展, 2019, 56(2): 021203.
[20] 秦子扬, 夏桂锁, 伏燕军, 等. 基于差影法的Hessian矩阵激光条纹中心提取方法研究[J]. 南昌航空大学学报(自然科学版), 2017, 31(3): 28-33.
[22] 蔡怀宇, 冯召东, 黄战华. 基于主成分分析的结构光条纹中心提取方法[J]. 中国激光, 2015, 42(3): 0308006.
[23] 李凤娇, 李小菁, 刘震. 基于多尺度分析的激光光条中心点坐标提取方法[J]. 光学学报, 2014, 34(11): 1110002.
[24] 王胜春, 韩强, 王昊, 等. 行车环境下钢轨轮廓激光条纹中心的提取方法[J]. 光学学报, 2019, 39(2): 0212004.
Article Outline
李玥华, 刘朋, 周京博, 任有志, 靳江艳. 基于BP神经网络的结构光光条中心提取[J]. 光学学报, 2019, 39(12): 1212005. Yuehua Li, Peng Liu, Jingbo Zhou, Youzhi Ren, Jiangyan Jin. Center Extraction of Structured Light Stripe Based on Back Propagation Neural Network[J]. Acta Optica Sinica, 2019, 39(12): 1212005.