贾卫平,王邦国
(大连大学 机械工程学院 特种加工与功能材料制备辽宁省教育厅重点实验室,辽宁 大连 116622)
主动视觉的结构光测量系统的测量基于三角法测量原理。测量过程中将结构光条纹投射在待测物体表面,结构光条纹与待测物体相交时,由于物体深度信息的变化结构光受到调制,调制后的光条信息被CCD 摄像机采集为图像后可用恢复待测物体的空间位置和尺寸信息。为获取这些信息,需要对结构光条纹的中心位置进行精确提取。
国内外学者对结构光中心提取方法进行了许多研究,主要应用的结构光条纹中心提取方法有极值法[1]、灰度重心法[2-4]、方向模板法[5]、曲线拟合法[6]等。
极值法算法简单、运算速度快,对于图像中符合高斯分布的光条提取效果较好,但当投射在物体上光线过强时,图像中光条会存在多个极大值,造成中心提取精度差。灰度重心法对于曲率变化较大的条纹提取效果差。方向模板法应用了可变方向模板检测结构光条纹的亚像素中心,该方法具有一定的抗噪声能力,可对较短的断线进行修复,但计算较复杂。高斯拟合法通过对光条截面进行高斯拟合,根据拟合曲线的极值点确定结构光条纹的亚像素中心位置,该方法适用于图像中法线方向变化较小的光条。Steger 提出利用Hessian 矩阵计算结构光条纹亚像素中心的方法[7],该方法具有检测精度高、鲁棒性好的特点。但是,该方法运算量大,无法满足结构光条纹亚像素中心快速提取的需要,不能直接用于实时性要求高的场合。
本文提出了一种基于Hessian 矩阵的多结构光条纹亚像素中心提取方法,可识别结构光条纹并实现结构光条纹亚像素中心的快速提取。
投影结构光平面与被测物体相交后在物体表面形成一定宽度的光线条纹。如果在投影设备同时投射多个结构光平面时,则待测物体表面形成多个结构光条纹,图1(a)为图像采集设备采集的多结构光图像中一个光线条纹的光强分布图。图1 中各图的横坐标为像素位置,纵坐标为像素点的灰度值,灰度值越大则光强越强。由图1(a)可知,投射在待测物体表面的光线条纹横截面的光强非均匀分布,呈现出中心灰度值大,边缘灰度值小的特点。
当光线条纹竖直投射在待测物体表面,以光条的水平方向为x 轴,灰度值为y 轴,该光条可用下式表示:
通过求该式的一阶导数的零值或二阶导数最大值可求该线的亚像素中心。图1(b)为抛物线拟合后的图像,图中的圆圈为拟合前像素坐标位置,各像素点用虚线连接;实线为抛物线拟合曲线;竖线与抛物线拟合曲线的交点为曲线的顶点,该顶点对应的像素位置为光线条纹的中心。由图1(b)可知,抛物拟合曲线顶点的像素坐标与拟合像素点的坐标不重合。抛物线顶点坐标可通过一阶导数的零点或二阶导数的最大值求得。
图1 像素位置及灰度值特征图
为消除噪声对中心提取的影响,可使用高斯滤波函降数噪降后噪的,函即数函为数 T (f x ( ) x, )与则高 T斯 ( x函 )的数 二 gσ 阶( x导)数卷等积于。若高斯函数 gσ( x)的二阶导数与函数 f ( x )的卷积,其最大值为光条的亚像素中心。 当拍摄图像中投影结构光条非水平或竖直时,光条的亚像素位置需要在x 和y 两个方向上进行调整,通过以下三个步骤实现亚像素中心计算:
(1)计算图像 f ( x , y )中各点的Hessian 矩阵; Hessian 矩阵为:
各阶高斯核如下式所示:
(2)根据Hessian 矩阵的特征值和特征向量确定像素点 ( x0, y0)的二阶方向导数的极大值法线方向为
在光条亚像素中心提取过程中要进行多次高斯卷积,由于运算量大,造成运算速度慢,因此难以实现光条亚像素中心的快速提取。
为实现多结构光条纹亚像素中心的快速识别和提取,根据结构光条纹亚像素中心在光条灰度最大值附近的特点,可在识别各结构光条纹及各光条灰度最大值的基础上,对灰度最大值附近的像素进行高斯卷积运算。
物体被投射结构光后所拍摄的图像如图2 所示。图像中结构光水平投射,由于拍摄角度和位置的影响图像中结构光条纹呈一定角度向右上方倾斜,为识别结构光条纹的位置可从上向下搜索。在搜索过程中会受到干扰光线的影响,如图3 为图像中沿竖直方向上各像素的灰度值。图3 中横坐标为像素位置,其中,图中的零位于图像的最上端,纵坐标为各像素对应的灰度值。从图3 中可看出,干扰光条的灰度值较小,均在25 以下。为消除干扰光线的影响,将图2 中灰度值小于25 的像素点灰度置0,其余像素位置的灰度值保持不变。
图2 投射结构光后的物体图像
图3 各像素位置的灰度曲线
根据投射结构光条的特点,从图像的最左端开始每相隔一定像素值对图像中光条数目进行计数。设图像中像素坐标为( , )u v ,图像左上角的u、v 值分别为u=1,v=1。在位置分别从上到下对图像进行搜索,直到图像的右侧为止。对图像的 um列从上到下搜索时,设在 vt前已搜索到l 个光条,若像素从变为时,其灰度值从零变为非零值,且在到范围内各像素灰度值均大于零,则光条数为 l+ 1个,否则仍为l 个,并接着向下搜索,直到图像边缘为止。其中,r 为预先设定值。搜索完成后,在一定范围内光条的数目相同且同为最大值,则该数目即为光条数目。
确定结构光条纹的数目后,选择光条数目最大的横坐标位置 u 从上到下搜索,得到各光条的灰度最大值的像素坐标L 为结构光条的数目。确定 ui列各列光条最大灰度的像素位置后,即实现对光条的识别。
以存储的第l 个光条上灰度最大的像素级中心( ul,i, vl,j)为起点,先向左边搜索,即确定当前像素左边到范围内灰度最大值的像素坐标J 为整数,且接着以为起点,接着向左搜索可得到第l 个光条 ul,i- 2列的灰度最大像素坐标,左边光条搜索完成后,以 ( ul,i, vl,j)为起点向右搜索,可得到第l 个光条右边各列灰度最大值的像素坐标。其它各结构光条纹依次搜索可得到各结构光条纹的像素级中心。图4(a)为结构光条像素级中心,图4(b)为结构光条像素级中心线局部放大图。
图4 提取的结构光条纹像素级中心
对按竖直方向上提取的结构光条纹上灰度最大的像素点,以及该像素坐标上下一定范围内的像素点进行高斯卷积运算,减小了运算量,可实现结构光条纹的亚像素精度提取。提取的结构光条纹亚像素中心如图5(a)所示,图5(b)为局部放大图。
图5 光条亚像素中心
为提高结构光条纹亚像素中心提取速度,提出了一种基于Hessian 矩阵的结构光中心快速提取方法,该方法可用于多结构光条纹识别及亚像素中心的快速提取。试验表明,该算法能准确、快速的提取多结构光图像的光条亚像素中心,处理速度可达5 幅/s,可满足实时处理的需要。
[1] 杨雪娇, 池海红. 一种改进的光条中心提取方法[J]. 应用科技, 2009, 36(12): 41-44.
[2] 李丹, 耿楠, 亢娟娜. 复杂背景下光条中心提取算法研究[J]. 计算机应用与软件, 2013, 30(3): 271-273, 314.
[3] 赵博华, 王伯雄, 张金, 等. 粗糙金属表面光条中心提取方法[J]. 光学精密工程, 2011, 19(9): 2138-2145.
[4] 冷惠文, 徐春广, 肖定国, 等. 基于线结构光的复杂深孔内轮廓三维测量方法[J]. 北京理工大学学报, 2013, 33(2): 139-143.
[5] 胡斌, 李德华, 金刚, 等. 基于方向模板的结构光条纹中心检测方法[J]. 计算机工程与应用, 2002(11): 59-60, 109.
[6] 高世一, 杨凯珍. 变边限高斯拟合提取激光条纹中心线方法的研究[J]. 仪器仪表学报, 2011, 32(5): 1132-1137.
[7] STEGER C. An unbiased detector of curvilinear structures[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1998, 20(2): 113-125.