中国测试  2019, Vol. 45 Issue (5): 33-37

文章信息

戴宗贤, 莫洪波, 周勇, 张震, 尹爱军, 梁子晓
DAI Zongxian, MO Hongbo, ZHOU Yong, ZHANG Zhen, YIN Aijun, LIANG Zixiao
基于灰度的亚像素插值视觉测量方法
A sub-pixel interpolation vision measurement method based on graph gray level
中国测试, 2019, 45(5): 33-37
CHINA MEASUREMENT & TEST, 2019, 45(5): 33-37
http://dx.doi.org/10.11857/j.issn.1674-5124.2018030114

文章历史

收稿日期: 2018-03-30
收到修改稿日期: 2018-04-24
基于灰度的亚像素插值视觉测量方法
戴宗贤1 , 莫洪波1 , 周勇1 , 张震1 , 尹爱军2 , 梁子晓2     
1. 重庆市计量质量检测研究院,重庆 401121;
2. 重庆大学机械工程学院,重庆 400044
摘要:针对现有视觉测量中的检测代价高,精度低和速度慢问题,该文提出一种基于计算机机器视觉的紧密内插值亚像素测量方法。该方法基于线性插值算法的原理,结合常规边缘检测方法和图像的灰度曲线图,利用阈值分割和标准长度进行亚像素自适应阈值选择。为验证该方法的有效性,对标准量块长度进行测量实验,并分析测量系统的误差影响因素。相比于传统的Canny算子方法检测结果,该方法的平均测量准确度提升46.2%。实验结果表明该算法的测量精度较高,可以快速、精确地测量出物体的几何尺寸。
关键词视觉测量    尺寸测量    边缘检测    亚像素插值算法    
A sub-pixel interpolation vision measurement method based on graph gray level
DAI Zongxian1 , MO Hongbo1 , ZHOU Yong1 , ZHANG Zhen1 , YIN Aijun2 , LIANG Zixiao2     
1. Chongqing Academy of Metrology and Quality Inspection, Chongqing 401121, China;
2. College of Mechanical Engineering, Chongqing University, Chongqing 400044, China
Abstract: Aiming at the high cost, low accuracy and slow speed problems of existing vision measurements, this paper proposes a novel sub-pixel interpolation algorithm based on computer vision for geometry size measurement. At first this paper discusses the mathematical principle of linear interpolation algorithm. On this basis, combining with conventional edge detection methods and the image grayscale curve graph, a sub-pixel interpolation algorithm based on graph gray level is proposed, which is utilizing the threshold segmentation and standard length for sub-pixel automatic threshold selection. This method has the measurement characteristic of high precision and low time cost. Finally, for verifying the validity the method proposed in this paper is applied to measure the size of standard gauge blocks and the measurement error is analyzed. Compared to the traditional Canny operator method, the measurement accuracy of proposed method is higher than that of canny operator method with 46.2% improvement on average. The experiment results show that the proposed method is available and has high precision for geometry size measurement.
Key words: vision measurement     geometry size measurement     edge detection     sub-pixel linear interpolation algorithm    
0 引 言

几何尺寸测量在现代工业中有着重要作用,是保证产品质量的关键。随着科技与工业生产的发展,对零件几何尺寸的测量精度及效率提出了更高要求。传统的接触式测量主要利用探头接触待测物体表面,从而获得所需参数信息,如卡尺、千分尺等。但该方法易受设备和人为因素影响,只适合小批量和一般精度的测量。在高精度测量中,如三坐标测量机、光学影像测量机等检测设备复杂昂贵难以广泛应用。近年来兴起的非接触测量技术因其高效、无损、高分辨率的检测优点而逐渐受到重视[1-3],随着图像处理等技术的发展,视觉测量作为一种非接触测量方法已得到广泛研究与应用。

国外对几何尺寸视觉检测方面的研究起步较早,目前已经达到较高水平,Jan Fischer等[4]研究了线性插值的亚像元位置测量系统,针对传感器不同质像素敏感性分布的缺点,提出一种线性插值方法。Eric等[5]研究了高精度机械位移与应变的视觉测量,提出视觉敏感性概念。国内杨剑等[6]进行了大尺寸视觉测量精度的理论和实验研究,提出了一种基于距离约束的大尺寸三维视觉测量算法,并应用在大型设备曲面测量上。申晓彦等[7]研究了轴对称构件几何尺寸的图像测量技术,构建一组适合工程应用的图像测量系统。

本文在现有的几何尺寸测量算法基础上,首先介绍边缘检测的常规方法,并探讨了基于边缘点插值测量尺寸的数学原理;在此基础上,融合常规边缘检测方法,提出一种针对标准薄片零件几何尺寸的亚像素插值视觉测量方法。

1 边缘提取与亚像素测量方法 1.1 常规边缘提取方法

视觉测量大多是通过处理图像目标区域边缘而获得物体的几何参数。边缘提取方法主要分为灰度值提取和灰度梯度值提取[8-9]。基于灰度值的边缘提取一般是根据阈值对图像进行二值化处理[10-11],这种方法简单,计算量小,但是提取精度不高,边缘定位的准确性依赖于阈值的计算方法。

基于灰度值梯度的边缘检测根据图像边缘的变化情况,检测出图像中的边缘点[12],再将边缘点连接成轮廓,从而实现边缘提取。灰度的变化率和变化方向通常作为图像边缘像素点的评价指标,分别以梯度向量的幅值和方向来表示。平面区域 $D$ 内,坐标为 $(x,y)$ 的像素点 $f\left( {x,y} \right)$ $\theta $ 方向沿 $x$ 的梯度定义为

$\frac{{\partial f}}{{\partial r}} = \frac{{\partial f}}{{\partial x}} \cdot \frac{{\partial x}}{{\partial r}} + \frac{{\partial f}}{{\partial y}} \cdot \frac{{\partial y}}{{\partial r}} = \mathop f\nolimits_x \cos \theta + \mathop f\nolimits_y \sin \theta $ (1)

对于连续图像 $f\left( {x,y} \right)$ 来说,其方向导数将在边缘(法线)方向上有局部最大值。因此,边缘检测就是求 $f\left( {x,y} \right)$ 梯度的局部最大值。根据式(1),当 $\displaystyle\frac{{\partial f}}{{\partial r}}$ 达到局部最大值时,有 $\displaystyle\frac{{\partial \left( {\partial f/\partial r} \right)}}{{\partial \theta }} = 0$ ,于是有

$\mathop f\nolimits_x \sin \mathop \theta \nolimits_g + \mathop f\nolimits_y \cos \mathop \theta \nolimits_g = 0$ (2)

其中,梯度最大 $g = \mathop {\left( {\displaystyle\frac{{\partial f}}{{\partial r}}} \right)}\nolimits_{\max } = \sqrt {\mathop {\mathop f\nolimits_x }\nolimits^2 + \mathop {\mathop f\nolimits_y }\nolimits^2 } $ ,一般称之为梯度模;灰度的变化方向为 $\mathop \theta \nolimits_g = \mathop {\tan }\nolimits^{ - 1} \left( {\displaystyle\frac{{\mathop f\nolimits_y }}{{\mathop f\nolimits_x }}} \right)$ ,实际计算中一般以微分算子的形式表示。

常用的微分算子有Roberts算子、Sobel算子和Canny算子等[13],其中Roberts算子和Sobel算子是根据图像边缘处梯度最大(正的或负的)的特性来进行边缘检测。这两种方法,Roberts边缘定位准,但对噪声敏感;而Soble加权平均,适用边宽≥2像素的检测。Canny算子是最优的阶梯型边缘(step edge)检测算子,对受到白噪声影响的图像检测准确。

1.2 亚像素测量方法

传统边缘检测算法的定位精度只能达到像素的整数级,为了进一步提高检测精度,基于亚像素的边缘检测与提取方法得到了深入研究。常用的亚像素方法有拟合法[14]、插值法[15]、灰度矩法[16] 和一些组合算法[17-18]等。德国 MVTec的 Halcon,加拿大 Adept 的Hexsight,美国 Cognex 的 VisionPro 等图像处理软件,其测量精度都已达到亚像素级。赵敏等[19]应用概率统计的方法提高了图像测量分辨率,娄训志等[20]研究了基于小波的亚像素检测方法。一般常用的亚像素算法的精度为0.1~0.5个像素,一些算法在理想的情况下可以达到0.01个像素。

2 一种新的亚像素高精度测量方法

由于视觉测量中一般需要复杂的光学系统,且要求在特殊场合、特殊环境下使用,精度较低、效率和实时性较差。针对该问题,本文提出灰度插值的亚像素精确测量方法,基本过程包括:利用标准长度进行亚像素自适应阈值选择、基于阈值分割的亚像素测量。

2.1 亚像素阈值的标定

系统首先利用标准值进行标定,即确定测量阈值。本文采用自适应阀值的线性插值算法,如图1所示, $f$ 为焦距; $D$ 为物距; $h$ 为CCD靶面尺寸(高); $v$ 为CCD靶面尺寸(宽)。

图 1 测视场原理图

由图可知,镜头离被测物的高度为 $D$ 时,由线阵CCD传感器的靶面尺寸可知:系统所能测量的最大宽度 $V$ 、最大高度 $H$ 范围(量程)为

$ V = \frac{{vD}}{f}\;\;\;\;H = \frac{{hD}}{f} $ (3)

则单位像长对应的实际长度 $\mu $

$\mu = \frac{V}{v} = \frac{H}{h} = \frac{D}{f}$ (4)

而每个像素对应的实际宽度 ${\beta _v}$ 、实际高度 ${\beta _h}$

$ {\beta _v} = {k_v} \times \mu = {k_v}\frac{D}{f}\;\;\;\;{\beta _h} = {k_h} \times \mu = {k_h}\frac{D}{f} $ (5)

其中 ${k_v} \times {k_h}$ 为像元尺寸。

其阈值的确定过程如图2所示,其中 $X$ 表示边缘像素点的位置, $Y$ 表示对应像素点的灰度值,设标准件长为 $l$ ,则可知其理论像素个数 $N = \left[ {\displaystyle\frac{l}{{{\beta _v}}}} \right]$ ,其中 $\left[ {} \right]$ 表示取整数。

图 2 插值算法原理图

首先利用Canny算子对图像进行边缘提取(粗定位),得到边缘点的像素坐标 $(x,j)$ ,设第 $j$ 处两边缘点为 ${C_1}$ $\left( {{x_{{\rm t}1}},{y_{{\rm t}1}}} \right)$ ${C_2}$ $\left( {{x_{{\rm t}2}},{y_{{\rm t}2}}} \right)$ ,边缘间的像素数为 ${N_j}$

N>Nj,则 ${C_1}$ 点向左移动, ${C_2}$ 点向右移动;若N<Nj,则 ${C_1}$ 点向右移动, ${C_2}$ 点向左移动。 ${C_1}$ ${C_2}$ 的移动是通过比较其灰度值(若目标的灰度值大于背景的灰度值,则每次比较后移动灰度值大的点,反之则移动灰度值小的点),每移动到下一点后就把此点与未移动点的灰度值进行比较,直到 $N = {N_j}$ 时停止移动,此时定位到的两点即为理想边缘点 ${B_1}$ $\left( {{x_{i + 1}},{y_{i + 1}}} \right)$ ${B_2}$ $\left( {{x_j},{y_j}} \right)$ 。本实验中目标的灰度值大于背景的灰度值,具体实现过程如图3所示。

图 3 边缘定位流程图

${B_1}$ ${B_2}$ 相邻点 ${A_1}$ $\left( {{x_i},{y_i}} \right)$ ${A_2}$ $\left( {{x_{j + 1}},{y_{j + 1}}} \right)$ ,则 ${A_1}{B_1}$ ${A_2}{B_2}$ 的长度即为像元宽度。

设第 $j$ 列处边缘所对应的灰度值(理论阀值) ${y_j} = {y_{{\rm th}j}}$ ,其对应的像素坐标分别为 ${x_{{\rm th}i}}$ ${x_{{\rm th}j}}$ ,于是图像在此列对应的图像长度为

$L = {x_{{{\rm th}j}} - {x_{{\rm th}i}} = k \cdot N + {l_1} + {l_2}}$ (6)

其中 ${l_1} = {x_{i + 1}} - {x_{{\rm th}i}}$ ${l_2} = {x_{{\rm th}j}} - {x_j}$ ,单位均为μm,有:

$l = \mu L$ (7)

图2中几何关系,利用线性插值方法,有:

$\left\{ \begin{gathered} \frac{{{l_1}}}{{{y_{\rm th}}_j - {y_{i + 1}}}} = \frac{{{x_{i + 1}} - {x_i}}}{{{y_i} - {y_{i + 1}}}} \\ \frac{{{l_2}}}{{{y_{{\rm th}j}} - {y_j}}} = \frac{{{x_{j + 1}} - {x_j}}}{{{y_{j + 1}} - {y_j}}} \\ \end{gathered} \right.$ (8)

其中 ${x_{i + 1}} - {x_i} = {x_{j + 1}} - {x_j} = {k_v}$ ,由式(5)~式(8)解得:

$\begin{split} {y_{{\rm th}j}} =& \frac{{\left( {{y_i}{y_j} + {y_{i + 1}}{y_{j + 1}} - 2{y_{i + 1}}{y_j}} \right)}}{{{y_i} - {y_j} + {y_{j + 1}} - {y_{i + 1}}}} + \\ & \frac{{\left( {l - N{\beta _v}} \right)\left( {{y_i} - {y_{i + 1}}} \right)\left( {{y_{j + 1}} - {y_j}} \right)}}{{{\beta _v}\left( {{y_i} - {y_j} + {y_{j + 1}} - {y_{i + 1}}} \right)}} \\ \end{split} $ (9)

则标准件平均灰度阈值为

${y_{\rm th}} = \frac{{\displaystyle\sum\limits_{j = k}^n {{y_{{\rm th}j}}} }}{{N - k + 1}}$ (10)

此时的 ${y_{\rm th}}$ 即为标定所得的阈值。

2.2 亚像素测量

测量时,首先对获取的图像预处理后灰度化,然后根据图像第 ${j'}$ 列处的灰度曲线以 ${y_{\rm th}}$ 为阈值进行分割,得到光强低于阈值的像素个数为 ${N_j}'$ ,则其对应的图像长度为

${l_{{\rm th}j}} = {N'}_jk$ (11)

根据图2,设此处阈值边缘点分别为 $B_1'$ $\left( {x_{_{i + 1}}',y_{_{i + 1}}'} \right)$ $B_{_2}'$ $\left( {x_{_j}',y_{_j}'} \right)$ ,且相邻两点为 $A_{_1}'$ $\left( {x_{_i}',y_{_i}'} \right)$ $A_{_2}'$ $\left( {x_{j + 1}',y_{_{j + 1}}'} \right)$ ,由式(8)可得其亚像素对应的图像长度为

$\begin{split} {l_{{\rm sub}j}} =& l_{_1}' + l_2'= \\ & k\left( {\frac{{{y_{\rm th}} - y_{_{i + 1}}'}}{{y_{_i}' - y_{_{i + 1}}'}} + \frac{{{y_{\rm th}} - y_{_j}'}}{{y_{_{j + 1}}' - y_{_j}'}}} \right) \\ \end{split} $ (12)

于是,测量图像在第 ${j'}$ 列处对应的图像长度为

${L_j}' = {l_{{\rm th}j}} + {l_{{\rm sub}j}}$ (13)

测量长度为

$l_j' = \mu {L_j}' = \mu ({l_{{\rm th}j}} + {l_{{\rm sub}j}})$ (14)

由式(5)、(11)、(12)、(14)可得:

$l_j' = {\beta _v}\left( {\frac{{{y_{\rm th}} - y_{_{i + 1}}'}}{{y_{_i}' - y_{_{i + 1}}'}} + \frac{{{y_{\rm th}} - y_{_j}'}}{{y_{_{j + 1}}' - y_{_j}'}}} \right) + N_j'{\beta _v}$ (15)

目标物体的尺寸为

${l'} = \frac{{\displaystyle\sum\limits_{j = k}^n {l_j'} }}{{N - k + 1}}$ (16)
3 实验结果及误差分析

亚像素精确尺寸测量方法设计和实验如图4所示,镜头离被测物的距离为2.93 cm,系统亚像素定位精度理论为0.001 9像素,传感器像元个数M=1 024,镜头角度理论精度约为 0.012 μm。相机采用Baumer公司的TXG03c,工业镜头H0514-MP,镜头的焦距为5 mm,CCD分辨率为 $656 \times 490$ 像素,为了减少外界的干扰,提高测量准确性,在测量时采用平行光光源,对三等标准量块进行灰度阈值的标定。现场实验如图4所示。

图 4 现场实验图

3.1 标准量块测量实验

表1是在上述实验条件下所测的不同规格的量块尺寸,并与用Canny算子进行边缘提取所得数据进行了对比。从表中可以看出,本方法测量误差均比Canny方法测量误差值小。8次测量平均绝对误差值,本方法为0.000 438 mm,Canny方法为0.000 813 mm,本方法误差为Canny方法误差的53.8%。从表中可以看出,本系统的测量结果更接近标准量块实际值,实验表明本算法测量结果可靠且能够实现快速无接触的测量。

表 1 实验测量对比
标准量块值/
mm
本方法测量/
mm
绝对误差/
mm
Canny测量/
mm
绝对误差/
mm
5.122 0 5.122 2 0.000 2 5.123 0 0.001 0
10.240 6 10.240 7 0.000 1 10.241 4 0.000 8
15.360 1 15.360 2 0.000 1 15.360 5 0.000 4
21.500 4 21.500 1 −0.000 3 21.500 8 0.000 4
30.122 6 30.122 1 −0.000 5 30.121 7 −0.000 9
35.240 8 35.240 3 −0.000 5 35.241 3 0.000 5
40.362 0 40.363 0 0.001 0 40.363 4 0.001 4
46.500 2 46.501 0 0.000 8 46.501 3 0.001 1

3.2 误差分析

从上述实验数据可以看出,本检测系统存在一定的测量误差,主要由以下4方面引起:1)镜头到被测物的高度即物距由于存在测量误差,引起 ${\beta _v}$ 的变化,从而导致检测系统存在系统误差。2)由于本实验所选用镜头的焦距短,镜头畸变相对较大,造成图像的非线性失真,从而影响目标的边缘定位,导致测量结果的偏差。3)系统光源的影响,线阵光源的准直性和稳定性将直接影响到测量结果。理想模型中,线阵光线应该是平行投射的,但在实际中,由于光源发散性的影响,将不能得到稳定的平行光源,从而产生了误差。4)被测物体放置的影响,只有当被测物体和传感器完全垂直的时候,成像才能反映出物体的真实轮廓。上述结果表明,经过本文提出的插值方法后,可以得到准确的结果,对于批量检验薄片零件是否合格有应用价值。

4 结束语

基于视觉系统的几何尺寸测量技术已得到了广泛的研究与应用。本文介绍了图像测量的基本原理,包括测量光学成像系统和测量结构;深入研究了基于光强线性插值的亚像素自适应阈值的测量原理和方法,分析了测量系统的误差影响因素。实验结果表明该算法的测量精度较高,可以快速、精确地测量出物体的几何尺寸。

参考文献
[1]
王鹏. 一种局部二值化方法及其应用[D]. 长春: 吉林大学, 2017.
[2]
徐晶晶. 低质量文档图像的二值化算法研究[D]. 武汉: 湖北工业大学, 2017.
[3]
张梅, 王涛. 一种工业恶劣环境下的图像二值化方法及FPGA实现[J]. 微型电脑应用, 2017, 33(7): 69-72. DOI:10.3969/j.issn.1007-757X.2017.07.019
[4]
FISCHER J, PRIBULA O. Precise subpixel position measurement with linear interpolation of CMOS sensor image data[C]// The 6 IEEE International Conference on Intelligent Data Acquisition and Advanced Computing system: Data, Technology and Applications, 2011.
[5]
ERIC P. Visual hyper acuity representation and computation of high precisio position information[J]. Computer Vision, Graphies and Image Processing, 1986, 33: 99-115. DOI:10.1016/0734-189X(86)90222-7
[6]
杨剑, 大尺寸视觉测量精度的理论和实验研究[D]. 北京: 北京邮电大学, 2010
[7]
申晓彦. 轴对称构件几何尺寸的图形测量[D]. 太原: 中北大学, 2010
[8]
董鸿燕. 边缘检测的若干技术研究[D]. 长沙: 国防科学技术大学, 2008
[9]
季虎, 孙即祥, 邵晓芳, 等. 图像边缘提取方法及展望[J]. 计算机工程与应用, 2004, 14: 70-73. DOI:10.3321/j.issn:1002-8331.2004.15.024
[10]
李了了. 工业现场字符识别方法的研究[D]. 合肥: 合肥工业大学, 2003.
[11]
周衍超, 罗浩彬. 机器视觉技术在工业机器人的应用研究[J]. 装备制造技术, 2015(6): 193-195. DOI:10.3969/j.issn.1672-545X.2015.06.068
[12]
刘力双, 孙双花, 吕奶光. 视觉系统中调焦函数的选择方法研究[J]. 北京机械工业学院学报, 2008, 23(1): 1-4. DOI:10.3969/j.issn.1674-6864.2008.01.001
[13]
张广军. 机器视觉[M]. 北京: 科学出版社, 2004: 33-42
[14]
HUECKEL M H. An operator which locate edges in digitized pictures[J]. Journal of the Association for Computing Machinery, 1971, 18(1): 113-125. DOI:10.1145/321623.321635
[15]
李艳, 彭嘉雄. 基于D2样条插值和LOG算子的亚像素边缘检测[J]. 华中理工大学学报, 2000, 28(3): 77-79. DOI:10.3321/j.issn:1671-4512.2000.03.027
[16]
邹宁, 柳剑, 周曼丽. 基于Zernike矩的边缘检测方法[J]. 华中理工大学学报, 1999, 27(5): 1-2. DOI:10.3321/j.issn:1671-4512.1999.05.001
[17]
梁燕, 刘文耀. 一种新型非线性边缘检测方法[J]. 光电子.激光, 2003, 14(12): 1332-1335.
[18]
ZHANG H T, DUAN F J, YE S H. Study on a fast method for sub-pixel edge detection[J]. Acta Metrologica Sinica, 2002, 23(4): 263-265, 270.
[19]
赵敏, 邱宗明, 黄秋红, 等. 提高图像测量分辨率的一种方法[J]. 西安理工大学学报, 2002, 18(1): 80-83. DOI:10.3969/j.issn.1006-4710.2002.01.020
[20]
娄训志. 基于小波变换的图像亚像素检测应用研究[D]. 武汉: 湖北工业大学, 2011: 22-38