基于蚁群算法的Zernike矩亚像素工件边缘检测
2023-03-11唐世宁查长礼程江林
唐世宁,查长礼,程江林
(安庆师范大学 电子工程与智能制造学院,安徽 安庆 246133)
在产品生产过程中,需要对产品的尺寸进行检测以判断产品是否合格。传统大尺寸测量方法,一般是利用千分尺、游标卡尺、百分表等进行人工检测[1],但这些方法都存在着测定速度慢、效率低以及准确度差等问题。随着电脑的大量应用及视觉技术的发展,基于机器视觉的工件检测技术[2]被广泛应用于制造业领域,而图像边缘检测是影响尺寸检测精度的关键因素之一。常用的图像边缘检测方法主要是通过图像和微分算子卷积来实现边缘的提取,即使用不同的模板来近似表达图像中每个像素的一阶偏导数,如Sobel算子[3]、Laplace算子[4-5]和Canny算子[6]等,其特点是检测不准确、效率低和适应能力差,同时对噪声也较敏感。因此,图像边缘检测已成为诸多学者和行业所研究和关注的焦点。过去几十年提出了许多亚像素边缘检测方法,有最常见的矩方法[7-13]、插值法[14]和拟合法[15],其中矩方法是目前比较可靠的亚像素边缘检测方法,而且Zernike矩[16]具有旋转不变的特性,又能降低噪声的影响,因而被广泛运用。
为进一步提高工件尺寸测量的准确性,本文提供了一个改进Zernike矩的亚像素边缘检测方法。首先,对输入的图像进行灰度化处理,并用各向异性扩散滤波进行滤波处理,以消除噪声对后续工作的影响,再结合Otsu算法[17(]大津算法)进行阈值分割以得到二值图像。然后,利用蚁群算法来实现像素级的粗定位,再利用Zernike矩的模型对所获取的像素级边界进行重新确定,并通过改进的阈值以确定算法,从而可以重新定义图像的亚像素边缘。
1 算法基础
1.1 蚁群算法边缘检测
蚁群算法[18]的图像边缘检测,就是在一张图片中搜寻灰度差最大的区域。在尺寸为M×N的图像W上随意布局P只蚂蚁,该图像上所有像素点都是蚂蚁所需要遍历的节点。令信息素矩阵μ(0)中的每个元素初值均为常量,搜索的最优解就是最符合特征目标的轮廓线,也就是灰度差最大、信息素浓度最高的路径[19]。
在第n步骤的完成过程中,从上述P只蚂蚁中随机选择一只,并让这只蚂蚁在图像上不间歇地移动。这只蚂蚁从节点(a,b)移动到节点(i,j)的变换概率[20]为,式中为节点(i,j)的信息素值;Ω(a,b)为节点(a,b)的邻域内所有像素点的集合;ηij为节点(i,j)的启发信息值;α,β分别是信息素矩阵和启发矩阵的影响因子,在各取0.5时,可获得比较好的检测效果。
在此流程中,通过对最终的信息素μ(F)使用阈值T,可以判断某一个像素点是否为边界点,而阈值T可通过自适应算法得出。使用信息素的平均值为阈值点的起始值T(0),并根据是否大于T(0),把信息素矩阵里面的元素分为两个部分,新阈值点数为这两个部分各自的平均值。这个过程持续迭代,直到阈值不再产生改变。
迭代过程如
①设置迭代指数l=l+1,然后更新阈值T(l)=
②若|T(i)-T(l-1)|>ε,则返回步骤(2);否则迭代结束并退出,以Gij=为标准来判断每个像素点位置(i,j)是否为边缘。若像素点位置(i,j)是边缘,则Gij=1;否则Gij=0。
1.2 Zernike边缘检测
在一个单位圆中,连续图像f(x,y)的n阶m次Zernike矩[22]定义为
离散数字图像f(x,y)的n阶m次Zernike 矩表达式为Knm=若图像旋转α角度,则旋转前后的Zernike 矩多项式之间的关系满足Knm=K′nme-ima。由此可以发现,图像在转动时只是相角出现了改变,而Zernike矩阵的相模不变,这种特性便是Zernike矩阵的旋转不变性。
假设单位圆(x2+y2=1)的圆心处在图形的一个像素点处,且图形边缘穿过了这个圆,由此可建立理想的阶跃边缘模型,如图1 所示。每个单位圆内含有的垂直曲线是图像理想边界,k是阶跃幅度,h是背景区域内灰度值,则阴影部分的灰度值就是h+k,l是圆心至理想边界的垂直距离,α是边缘竖直方向与x轴线之间的夹角。利用Zernike 矩的旋转不变性,将图像顺时针旋转α角度,使边缘线垂直于x轴线,如图1(b)所示。
图1 Zernike矩理想边界阶跃模型
对图1所示的理想边界阶跃模型计算,可得
图2 Zernike矩7×7模板
2 验证与分析
针对工件图像边缘检测精度和速度这一问题,王兵等[23]融合卷积网络并结合传统canny检测算法来进行边缘检测,提高了检测精度,但是该算法对电脑要求较高,且运算速度较慢。马艳娥等[24]将canny算法与Zernike矩亚像素边缘检测进行融合,提高了边缘检测的速度但精度不够。本文提出了基于蚁群算法的Zernike矩亚像素边缘检测算法,先利用蚁群算法以实现像素级的粗定位,再利用Zernike矩模型对所获取的像素级边界进行重新确定,简化了算法并提高了算法精度和运算速度,同时在搭建的实验平台上进行了验证。
2.1 实验装置
验证实验平台如图3 所示,主要包括光源、相机、调焦滑轨、支架、图像采集系统及PC机等。为了保证从平台采集的图像具有高品质和好的清晰度,选择美国COGNEX 公司的COMS 工业相机进行图像采集,调焦范围为25 mm~**,最大光圈为2.0。图像像素为3 840 × 2 748,图像检测环境为Windows10,处理器为Intel(R),Core(TM),i5-10400CPU@ 2.90GHz,内存为8 GB,在MATLAB2021 上实现图像的亚像素边缘检测。
图3 COMS相机平台
2.2 亚像素图像生成
改进的Zernike矩亚像素检测方法步骤如图4所示。首先对采集到的图像进行灰度化处理,并用AF算法进行滤波处理以消除噪声对后续工作的影响,再结合Otsu 算法(大津算法)进行阈值分割以得到二值图像,以完成图像预处理。然后利用ACO(蚁群算法)实现像素级的粗定位,且利用Zernike 矩模型对所获取的像素级边缘进行重新确定,并通过改进的阈值确定算法重新定义图像的亚像素边缘。具体流程如下:
图4 亚像素检测流程
(1)对输入的图像进行预处理
滤波是图像预处理的重要一步,进行图像滤波可使图像去除噪声的影响以优化图像质量,并最大限度保持图像边缘特征。灰度图仅占据较小的内存且能够很好的保存图像基本特征,减小了算法的运算量,所以在滤波之前对图像灰度化处理很有必要。各向异性扩散滤波算法[21]能够较好地去除噪声,也能够更大限度地保存图像的边缘特征,并用大津算法[22]进行图像分割。
为了消除噪声等外界因素对图像边缘提取的干扰,并更加快捷有效地定位图像边缘,通过二值化方法将图像数据变小,使计算更快捷,所形成的二值图如图5 所示。从图可以看出,处理过后的图像边缘清晰,消除了噪声对图像的影响。
图5 二值图
(2)图像边缘检测
首先对上述二值图用ACO 算法进行边缘的粗提取,提取后的边界特征如图6 所示。从图看出,ACO算法虽可以提取出金属零件的边界特征点,但所提取出的边缘特征点较为稀疏,图像也较模糊并且断点较多,所获得的边缘结果不尽人意。为获取比较精确的工件边界,对上述方法抽取的像素级边界采用Zernike 矩算法以实现亚像素定位。在定位前,先对7×7的模板进行计算,结果如图7所示。
图6 ACO算法提取的边缘粗定位
图7 Zernike矩7×7矩阵。(a)K00模板;(b)K11实数模板;(c)K11虚数模板;(d)K20模板;(e)K31实数模板;(f)K31虚数模板;(g)K40模板
在模板计算完成后,将模板导入算法中,并通过最大类间方差法算出阈值kt为131。改进方法得出的亚像素边缘提取图如图8(a)所示,可以看出提取的边缘较为完整清晰,很好地还原了图像原本的样子,符合尺寸检测对边缘特征提取的精度要求。相较而言,图8(b)所示的传统Zernike矩亚像素边缘检测算法所检测的图像边缘模糊不完整,缺失了过多的边缘特征点,不利于尺寸检测对工件的精准定位。
图8 提取的亚像素边缘。(a)本文改进算法提取;(b)传统Zernike算法提取
为直观分析改进方法与传统Zernike矩亚像素边缘提取算法的差异,随机选择亚像素边缘图像中5个点的亚像素坐标和图像原始坐标进行对比,并计算改进方法所提取的亚像素点坐标值和原始图像的像素点坐标值之间误差的绝对值,且记为绝对误差。如表1 所示,传统Zernike矩算法检测到的边缘特征点像素坐标与原始图像像素坐标偏差较大,而改进方法的边缘特征点像素坐标与原始图像像素坐标之间的绝对误差不超过0.5,精度较高,能够较好地满足工业上尺寸检测精度的要求。
表1 图像的像素坐标
运用MATLAB编辑器中的“运行并计时”工具对改进的亚像素边缘检测算法和传统Zernike矩亚像素边缘检测算法的运行时间进行计算。考虑到MATLAB 软件自身影响,将两个算法分别做了5次运行测试以减少软件问题对代码运行时间的影响,结果如表2 所示。可以看出,相较于传统的亚像素边缘检测算法,改进方法的运行速度有一定程度的提高,约为原来速度的10倍,能够较好地满足工业上尺寸检测对算法速度的要求。
表2 边缘检测算法程序的运行时间/s
3 结论
为了进一步提高工件尺寸测量的准确性,本文提出了一个改进Zernike矩的亚像素边缘检测方法。先采用滤波、阈值分解等技术对图像进行预处理以得到二值图,然后利用蚁群算法来实现像素级的粗定位,再利用Zernike矩模型对所获取的像素级边界进行了重新确定,并通过改进的阈值确定算法,可以重新定义图像的亚像素边缘。结果表明,改进的方法相较于传统边缘提取方法,其检测精度更高,运行速度更快,能够达到工业尺寸检测的要求。未来如何解决边缘检测算法的普适性和实时性还需要深入研究。