赵博,宋延嵩,李金旺
(长春理工大学 光电工程学院,长春 130022)
自准直仪广泛应用在微小角度的精密测量[1]或可以转换成微小角度测量[2]的场合中。伴随着社会的发展,精准的高精度角度测量不仅在科研、工程、国防中至关重要,还广泛应用在了人们的生产生活中。为了进一步提高微小角度的检测精度,满足更多元的需求,经过近几十年的研究,研究人员发现相比于改进光学元器件的加工工艺来提高检测精度,优化相关的图像处理算法往往能够取得更加显著的效果[3]。
国内外的研究人员针对图像传感器捕获到的十字丝进行了广泛而深入的图像处理技术研究。在对经阈值分割后的十字丝图像进行质心定位[4]时,常用的方法可以分成两类:一类为利用一阶矩阵计算质心的传统质心法、加权质心法等[5];一类为三维曲面拟合算法,如高斯曲面拟合法、抛物面拟合法等[6]。采用传统的质心法对十字丝进行定位,虽然计算速度快但是容易受到噪声的干扰,抗干扰能力弱,使得拟合后的十字丝图像与实际相差较大。加权质心法或迭代质心法通过设定的不同像素灰度权重[7],在质心定位精度上比传统的质心法要高,因而拟合出的十字丝图像也比较精确,其存在的缺点是不能抑制随机误差和系统误差,抗干扰能力弱。高斯曲面拟合法充分获取了十字丝图像的灰度分布信息,其质心坐标定位精度会更高,缺点就是计算量大,时间复杂度高。抛物面拟合法[8]以抛物面拟合十字丝的质心,算法的复杂度高,不利于实际上的应用[9]。考虑到加权质心法计算复杂度不高并且质心定位精度也相对较高,所以使用加权质心法进行质心定位。在此基础上所做的改进是在质心定位之前先使用图像细化算法对十字丝图像进行细化处理,这不仅可以减少冗余的数据量[10],还能避免十字丝上“毛刺”造成的影响。在得到质心坐标之后,使用Hough变换,根据已知点共线的性质,对得到的质心坐标进行区分,然后使用最小二乘法将质心坐标拟合成垂直狭缝和水平狭缝,再利用拟合的十字丝精确地计算出实时的偏摆角、俯仰角和滚转角。
光学自准直原理如图1 所示,分划板位于准直物镜的焦平面处,准直光源发出的光经分划板和分光棱镜后,以平行光的形式射出。 根据光学原理,平行光被目标反射镜反射后,再经准直物镜的聚焦,最终成像于CMOS 图像传感器上[11]。 假设目标反射镜与主光轴垂直,反射光线将会按照原路返回,并成像于图像传感器的中心点O,此点也称为系统的电零位。以此作为基准,当目标反射镜发生了θ角度的偏转时,根据光的平面镜反射原理[12],反射光束将以相对出射光束转过的夹角2θ被目标反射镜反射回来,最终成像于图像传感器上的点O′,与系统的电零位距离为d。
图1 自准直原理
根据光学几何原理可得:
其中,f为准直物镜的焦距。
当θ很小时,有关系式tan 2θ≈2θ,将此关系式代入式(1)中可简化为:
当d测量出来时,就可以根据式(2)求出目标反射镜的偏转角度θ。
在基于自准直的三自由度测量系统中,透过十字分划板的准直光经目标反射镜反射后最终会成像于CMOS 图像传感器。图2 是俯仰角和偏摆角的测量示意图,O′ 和O″ 分别是目标反射镜转动前后十字丝中心的像元坐标,由式(3)可知,假如十字丝中心在水平方向上的偏移量为Δx,在垂直方向上的偏移量为Δy,那么就可以计算出目标反射镜由于转动产生的偏摆角α和俯仰角β:
图2 俯仰角和偏摆角测量示意图
图3 是滚转角的测量示意图,十字丝在平面内的角度变化记为滚转角,可以通过其中一条十字丝斜率的变化计算得到。假设十字丝的横轴在面内未发生转动时的斜率为k1,发生转动后的斜率为k2,那么十字丝在面内的滚转角γ可表示为:
图3 滚转角测量示意图
通常情况下,为了简化计算,将十字丝的横轴装调成与X轴平行,十字丝中心O′ 与坐标系中心O重合,即有k1=0,那么式(4)就可以简化为:
在使用加权质心法提取十字丝质心坐标之前,十字丝图像需要先经过改进的最大类间方差法(OTSU)进行阈值处理[13]。为了排除杂散光点对后续测量的影响,在阈值分割的时候进行如下排查:如果某一连续区域的像素灰度值大于阈值,判断该区域像元数目是否大于4,像元数目大于4 的区域视为十字丝效区域,而小于4的就视为杂散光,将其区域灰度值设为0。这可以排除杂散光斑的影响,最大限度的将图像中感兴趣的部分保留下来。 同时,为了避免十字丝水平和垂直方向狭缝重叠区域影响质心坐标的提取,将此区域进行剔除。 经以上步骤初步处理后的图像,如图4 所示。
图4 十字丝的阈值分割
阈值分割后,对十字丝每一行或每一列像素不为0 的区域,采用平方加权质心法求取质心坐标[14]。 加权质心法相比于传统质心法的优势是:对较大灰度值的像元赋予更大的权重,突出狭缝中大灰度值像元对质心坐标的影响。垂直狭缝的质心坐标可表示成:
式中,m和n为每一行不为0 的区域边缘的列数。
根据公式(6)就可以找出垂直狭缝上的一系列质心坐标值。 同理,水平狭缝的质心坐标值可以表示成:
直接使用加权质心法提取的十字丝质心坐标并不准确。 原因有两点,第一点是因为十字丝狭缝存在一定的宽度,且宽度是不均匀的,同时在边缘处存在“ 毛刺”,此类因素会造成直接使用最小二乘法拟合出的直线方程与真实的十字丝存在较大的误差。第二点是因为提取到的质心坐标没有做出区分,分不清是垂直狭缝上的质心还是水平狭缝上的质心,这在十字丝直线拟合时是没有实际意义的[15]。
在提取质心坐标之前,先对十字丝图像做细化处理,细化十字丝狭缝的宽度,消除十字丝边缘上的“ 毛刺”,只保留下十字丝的中间骨架部分,十字丝细化原理如图5 所示。十字丝细化的过程是在保持十字丝原有的形态下,扫描所有的像素点。如果扫描到的像素点(x,y) 为白色,对其上、右上、左上和左方的4 个像素点的情况进行判断。这4 个像素点可看作是把当前像素点(x,y) 围住,(x,y) 的层数比4 个像素点的层数最小值多一层;如果当前像素点(x,y) 为黑色,那么层数可取值为0。对像素点(x,y) 其下、左下、右下和右4 个像素点的处理操作也是同样的原理,最终剥离掉的像素点是当下像素点层数非最大值的点,最终得到经细化后的十字丝图像如图6 所示。
图5 十字丝细化原理
图6 十字丝细化
对十字丝骨架部分再使用加权质心法求取质心坐标,得到质心坐标的数据集,记为C=(xi,yi)T,其中i= 1,2,3,…,s,s为点数据集合中质心点的个数。
Hough 变换可以通过检测已知点的共线性对所有的质心坐标进行检测[16],将分布在不同直线周围的点数据找到,从而区分出质心点是垂直狭缝上的还是水平狭缝上的。
假设采集到的数据集C= (xi,yi)T分布在n条直线附近,再设置一个误差lk作为点到直线误差的最小阈值。第一步是将直角坐标系中的n条直线经Hough 变换转换成极坐标的形式:
通过式(8),对C做Hough 变换。 可以得到拟合直线的参数(θk,ρk)。第二步是将式(8)改写成斜率式的形式:
式中,ak= -(cosθk/ sinθk);bk= -(ρk/ sinθk)。 然后根据式(9)计算C中的点到直线的距离:
如果lki 计算出C中的点到直线的距离与给定的阈值lk比较大小,判断哪些点是第k条Hough 变换直线上的点集,并把它记做。 第三步是利用得到的中各点的分布拟合出图中十字丝的两条直线,就可以求出式(9)中的。最后利用与为直线的端点,就将需要拟合的直线区间确定了,即: 第四步是在前三步的基础上,根据得到的分布在不同直线上的点集以及直线的区间,使用最小二乘法拟合出直线方程,最后通过拟合出的相交直线可求出十字丝狭缝的中心点,该点可作为俯仰角和偏摆角的测量基准,拟合出的水平直线的斜率作为滚转角的测量基准。 通过对三自由度测角精度的分析,可知对采集到的十字丝图像经阈值处理后,直接使用加权质心法求取质心坐标,会对拟合得到的直线产生较大的误差,导致测角精度不高。 在求取质心坐标之前,对图像进行细化,然后使用加权质心法得到质心坐标集合后,使用Hough 变换将位于不同狭缝上的质心坐标进行区分,最后进行直线拟合求取三自由度。其算法的总体流程如图7 所示。 图7 算法流程 使用Matlab 生成模拟的图像代替实际采集到的十字丝图像,可以精准地控制图像中十字丝狭缝的位置,对十字丝图像进行质心定位前先使用本文所提的图像细化算法做细化处理,然后再提取细化后的十字丝图像质心坐标,而不是直接进行质心定位。表1 为是否使用图像细化提取的质心坐标。 表1 是否使用图像细化提取的质心坐标 从表1 中可以看出,采用十字丝细化方法提取的质心坐标的绝对值偏差在0.01 以内,而未采用十字丝细化提取的坐标绝对值偏差在0.1 左右,因而十字丝细化处理后得到的质心坐标与实际的十字丝质心坐标更接近,拟合出的直线更接近真实的十字丝。 对于提取得到的质心坐标,如果不经过Hough 变换,发现经过直线拟合出来的十字丝不是正交的,如图8 所示。产生了较大的偏差,给后续俯仰角、偏摆角、滚转角的计算带来不可忽略的误差,使得计算的三自由角度不满足精度要求,因此在三自由度测角的过程中使用Hough变换是有必要的。 图8 Hough 变换对直线拟合的影响 通过对比十字丝细化处理对质心坐标定位的影响和Hough 变换对直线拟合过程的影响,发现十字丝细化和Hough 变换这两个环节均对高精度计算俯仰角、偏摆角和滚转角起到了积极的作用。经过这三种不同的方式计算出来俯仰角的偏差、偏摆角的标准差和滚转角的偏差,分别如图9、图10 和图11 所示。从图中可以看出,算法计算得到的三自由度标准差比只采用十字丝细化或只采用Hough 变换法要小得多。 图9 俯仰角测量偏差 图10 偏摆角测量偏差 图11 滚转角测量偏差 三自由度测量系统是在FPGA 平台上实现的,用到的核心器件是CMOS 图像传感器、FPGA开发板、SRAM 和显示接口,四者配合完成图像处理的任务。在FPGA 中完成对GSENSE2020BSI探测器的驱动控制,GSENSE2020BSI 探测器的输入时钟频率达到了600 MHz,并行处理12 位数据的速率为4.8 Gbps,满足三自由度测量系统对实时性的要求。 GSENSE2020BSI 探测器对返回的十字丝实时成像的图片如图12 所示。 图12 GSENSE2020BSI 探测器所成的十字丝图像 GSENSE2020BSI 的特点是低噪声、长曝光下功耗低,峰值光谱响应可达到70%,是一款科学级的CMOS 图像传感器。最后再通过LVDS(Low Voltage Differential Signaling)高速通道将采集到的图像数据传送到FPGA 中做之前提到的图像处理,最后将十字丝图像和计算得到的三自由角度通过HDMI 接口实时地显示到显示器上。系统框图如图13 所示。 图13 FPGA 系统框图 其中图像处理模块主要完成阈值分割、十字丝细化处理、十字丝质心定位、Hough 变换区分质心坐标和三自由度角度的计算这五个功能。阈值分割的仿真图如图14 所示。 图14 阈值分割仿真图 最终经过一系列图像处理后的十字丝及三自由度通过HDMI 接口实时地传递到显示器上,如图15 所示,方便上位机系统依据计算得到的三自由度做进一步的控制。 图15 十字丝图像实时显示 为了验证所提算法的高精确度和可靠性,在实验室条件下对其进行了数组对比实验加以验证。将该系统的测量结果与标准仪器测量结果进行比较,俯仰角和偏摆角测量的对比实验使用的标定仪器是LeciaTM5100 精密工业经纬仪(精度0.5",分辨率0.1"),滚转角测量的对比实验采用的标定仪器是TAYLOR HOBSON 的DA400光电自准直仪(精度0.2",分辨率0.1")。 理论上,俯仰角和偏摆角的测量结果与TM5100 经纬仪的输出信号呈线性关系,滚转角的测量结果与DA400 光电自准直仪的输出信号呈线性关系。实验时,将三自由度同时测量系统的测量镜与标定器件的靶镜均固定在距离测量仪器8 m 远处的工作台台面上,实验时背对背放置,使两测量装置的测量光轴尽量位于同一水平光轴上。工作台是由一个多齿分度台和一个二维角度转动平台组成的,以实现三个角度上的旋转。 先将多齿分度台调到零位,每次转动多齿分度台60″,转动10 次后归零,再对其反方向转动10 次,可得到±600″ 的测量范围,记录实验结果并用Matlab 将数据绘制成直观的图片。在±600″ 的测量范围内与经纬仪的标定值相比,俯仰角的最大偏差为-4.1″,标准差为2.69″,如图16 所示。偏摆角的最大偏差为-3.4″,标准差为2.28″,如图17 所示。 与光电自准直仪的标定值相比,滚转角的最大偏差为21.1″,标准差为12.58″,如图18所示。这里滚转角误差偏大的原因主要是在测量滚转角时,偏摆和俯仰抖动对滚转角测量的影响。 通过对比实验结果可知,本测量系统测量得到的三自由度与标定仪器的测量值之间的偏差在可允许的范围内,因而采用的方法可以获得高精度的三自由度。 图16 俯仰角测量值与标定值对比 图17 偏摆角测量值与标定值对比 图18 滚转角测量值与标定值对比 基于FPGA 实现了基于自准直原理的高精度的三自由度实时测量,首先,提出了一种基于十字丝细化与Hough 变换相结合的方法。然后,在Matlab 上做了相关的仿真实验,验证方法的有效性,接着将所提方法在基于FPGA 的自准直三自由度测量系统中加以运用,验证方法的可行性,最终进行高精度三自由度实时测量。根据本测量系统与标定仪器在距离目标反射镜8 m、±600"的测量范围内的对比实验数据可知:俯仰角的最大偏差为-4.1",标准差为2.69";偏摆角的最大偏差为-3.4",标准差为2.28";滚转角的最大偏差为21.1",标准差为12.58"。所提方法能够计算得到满足要求的高精度三自由度。 同时,稳定性高的准直光源是保证本系统测角精度的必要条件,系统中采用的是He-Ne 激光器,由于激光器自身的热变形引起的光线漂移和光束在传播过程中因空气扰动造成的光线漂移,会对测角精度产生不利影响,因此还需进一步的研究,消除或补偿光线漂移对测角精度的影响。3 实验结果及分析
3.1 Matlab 仿真
3.2 FPGA 实现
4 结论