APP下载

基于Canny-Hough算法的锅具轮廓缺陷检测

2023-05-27潘尚涛张林贝子农卫航丁江

关键词:锅具轮廓算子

潘尚涛, 张林贝子, 农卫航, 丁江*

(1.广西大学 机械工程学院, 广西 南宁 530004;2.广西大学 亚热带智能农机装备产业学院, 广西 南宁 530004;3.广西水利电力职业技术学院 汽车工程系, 广西 南宁 530023)

0 引言

由于不锈钢锅具有耐酸、耐高温、受热均匀的特性,已经成为了厨房烹饪常用的厨具。随着生活水平的提升,人们对锅具的形状造型有了更高的追求,不锈钢锅具在加工过程中对锅具的轮廓边缘加工精度要求也越来越高。不锈钢锅具在现实生活中和工业生产中常见的形状为圆形,因此对图像中的圆形目标的识别在不锈钢锅具锅沿轮廓缺陷检测中具有重要意义。Hough变换圆检测通过坐标变换的方法,基于半径约束在原始图像中拟合出符合条件的圆,因其精度高、抗干扰能力强而作为圆检测的常用方法。因为该方法的参数空间是三维的,所以检测时间消耗大且检测效率低。为了能够提升Hough变换的检测速度和精度,许多科研人员进行了大量研究。文献[1]通过Hough圆检测和感知哈希相似度算法相结合的方法,有效检测出圆形仪表计,但拟合算法对图像噪声敏感,受Hough检测结果影响。文献[2]提出了一种基于改进三类阈值的轮廓提取的圆检测方法来检测和测量柔性电路板表面上的圆孔。文献[3]将Hough变换算法与Zernike矩法相结合,拟合图像中的几何边缘,能够提高检测精度,减少了运算时间。文献[4]提出一种随机Hough变换法,将随机变化通过随机采样和多对一的映射,计算工作量和时间损耗都大大减少。文献[5]提出通过灰度积分投影法在不同方向上投影,并根据投影量选取合适的阈值,调整Hough圆变换中所需的参数,从而可以减少设置盲测试的时间。

为了能够有效减少Hough变换的检测时间,本文先通过边缘检测算法对原图像进行处理,在保留图像中重要结构信息的同时,减少图像中不必要的数据结构信息,从而大大减少数据处理的时间[6]。在机器视觉技术中常用的传统边缘检测算法有Sobel算子、Laplacian算子、Canny算子、Prewitt算子、Kirsch算子等[7]。由于Canny算子能够准确地边缘定位和具有良好的信噪比,因此Canny边缘检测算法受到了广泛关注,在不锈钢锅具边缘检测中有重要的应用前景[8],然而,传统的Canny算法的高斯滤波方差不具有自适应性,无法自动选择最合适的方差,导致图像边缘提取和去噪效果不佳[9]。文献[10-11]中提出用改进后的中值滤波器替代高斯滤波器,大大减少检测过程的运算量,但是对高斯噪声的抗噪性较差,影响图像的边缘检测效果。

传统的Hough变换算法在检测不锈钢锅具锅沿轮廓缺陷时,存在耗时长、检测效率低的问题,本文提出一种新型的Canny-Hough边缘检测算法。将本文改进的Canny算法与传统的边缘检测算法进行比较实验,改进的Canny算法提取的轮廓边缘连续性更好[12],虚假边缘轮廓更少。实验结果表明,基于机器视觉的Canny-Hough边缘检测算法较传统的Hough变换检测算法能够更快速、更准确地检测出不锈钢锅具的锅沿轮廓缺陷。

1 改进的Canny算法

传统Canny算法在运用高斯滤波函数时,对图像进行平滑的同时也会造成一些真实边缘的丢失。同时在确定双阈值时,需要预先手动设定高、低阈值等,为此,我们提出了一种改进的Canny边缘检测算法。改进的Canny边缘检测算法流程如图1所示。

图1 改进的Canny边缘检测算法流程Fig.1 Flow chart of the improved Canny edge detection algorithm

1.1 图像预处理

受到不锈钢锅具生产环境的影响,我们需要对图像进行预处理。首先我们通过灰度化处理,使图像变成灰度图像;然后经过直方图均衡化处理图像,使整个图像画面的直方图分布变成近似均匀分布,提高图像画面对比度;为了消除采集过程中的干扰对图像质量的影响,需要采用滤波算法减小图像噪声,在传统Canny算法中采用了高斯滤波的方法。为了让处理后的图像更平滑的同时保护轮廓的完整性,我们采用双边滤波算法进行降噪,双边滤波的思想是在高斯滤波的基础上加入了像素值权重项,在考虑距离的同时也需要考虑到像素值的差异,因为像素值越相近,权重越大[13],所以可以保护轮廓的完整性。

双边滤波中,将像素值权重wd表示为

(1)

式中:(k,l)为模板窗口的中心坐标点;(i,j)为其他坐标点;σd是高斯函数的标准差。空间距离权重wr表示为

(2)

式中:f(k,l)为模板窗口的中心坐标点(k,l)的像素值;f(i,j)为图像在坐标点(i,j)处的像素值;σr为高斯函数标准值。

将上述2个模板相乘就能够得到双值滤波模板的权值w(i,j,k,l)。

w(i,j,k,l)=wd(i,j,k,l)×wr(i,j,k,l)

(3)

双边滤波器的数据公式为

(4)

式中g(i,j)表示在(i,j)处的去噪强度。

1.2 计算梯度值与方向

我们通过改变梯度幅值和增加梯度方向来解决图像的弱边缘问题,将2×2的模板改成3×3的梯度模板,然后在原有的水平方向和竖直方向的基础上,新增45°和135°方向梯度模板来计算梯度幅值。

(5)

(6)

(7)

(8)

本文在原水平和竖直方向基础上加入45°和135°方向上的偏导数,改进后的计算可得到4个方向的梯度幅值:Gx(i,j)、Gy(i,j)、G45(i,j)、G135(i,j)。具体计算如下:

x方向的偏导数:

Gx(i,j)=I(i,j+1)-I(i,j-1);

(9)

y方向的偏导数:

Gy(i,j)=I(i+1,j)-I(i-1,j);

(10)

45°方向的偏导数:

G45(i,j)=I(i-1,j+1)-I(i+1,j-1);

(11)

135°方向的偏导数:

G135(i,j)=I(i+1,j+1)-I(i-1,j-1),

(12)

式中:I(i,j)为在(i,j)处的像素值;I(i,j-1)、I(i,j+1)、I(i-1,j)、I(i+1,j)为在(i,j)处朝垂直和水平方向移动一个单位的像素值。上述x方向、y方向、45°方向、135°方向4个方向上的梯度,可以合成当前像素点灰度值在水平和竖直2个方向上总的梯度GX(i,j)和GY(i,j),计算方式如下:

(13)

(14)

当前像素点灰度值的梯度幅值G(i,j)和梯度角度θ(i,j),分别为

(15)

(16)

采用4方向的梯度幅值计算,可以考虑到x方向、y方向、45°方向、135°方向上的像素点对于中心像素点的影响,这样有助于提高检测的抗噪性,对图像边缘定位更加准确。

1.3 Otsu算法确定双阈值

在传统的Canny算法中,高、低阈值需要手动进行设置,不能根据不同图像的特点来确定[14]。鉴于这一局限性,我们采用了Otsu阈值算法。Otsu算法是一种使用最大类间方差的自动确定阈值的方法[15]。当通过图像灰度特征分成的前景和背景差距达到最大时,获得最佳阈值。用于衡量Otsu算法差异的标准是共同的最大类间方差。

为了能够解决传统高、低阈值需要人工进行设置的问题,我们利用Otsu算法通过类间方差最大化自动获取高阈值和低阈值。非极大值抑制中需要用到高、低阈值,我们令高阈值为T1,低阈值为T2,当像素值大于T1时,保留该像素点,当像素值小于T2时,直接抛弃该像素点,不为轮廓边缘。对于T1值的设置要兼顾保留原始信息的同时,获取最佳的抗噪性和尽可能地消除伪边缘,T2值减小会产生大量噪声和出现更多的伪边缘。

2 实验操作

为了更好地识别不锈钢锅具锅沿轮廓缺陷问题,我们搭建了一种不锈钢锅具轮廓缺陷自动识别的检测系统,该部分由硬件系统和不锈钢锅具边缘检测系统两部分组成。

2.1 硬件系统设计

机器视觉检测硬件系统如图2所示,包括海康威视600万像素CCD相机[16]、6 mm焦距的MVL-HF0628M-6 MPE摄像头、LED光源、计算机、传送带、不锈钢锅具等。

图2 机器视觉硬件系统模拟图Fig.2 Machine vision hardware system simulation diagram

根据本文不锈钢锅具的检测时间,以半径为15 cm的不锈钢锅具为检测对象,传送带以低于1.5 m/s的速度运行均可以满足检测要求,但考虑到检测设备和运输设备之间的配合以及安全因素的考虑,将传送带速度设计在1.0 m/s以下较为适宜,具体精确速度可根据检测设备和筛选设备之间的距离进行设计。检测不锈钢锅具的通径范围如图3所示,本套系统的摄像头的感受野为60 cm×60 cm,但考虑到检测过程是动态的,需要保证图像的像素要求以及不锈钢锅具拍照位置的容错度,能够检测的不锈钢锅具的通径范围为10~40 cm。

图3 检测不锈钢锅具的通径范围Fig.3 Testing the diameter range of stainless steel pots

2.2 不锈钢锅具边缘检测系统

本实验在Visual Studio 2017环境下运行,搭配OpenCV插件,对不锈钢锅具锅沿轮廓进行检测。本文提出了一套缺陷检测方案,对二值图像轮廓缺陷检测流程图如图4所示。

图4 对二值图像轮廓缺陷检测的流程图Fig.4 Flow chart of contour defect detection for binary image

2.2.1 检测内、外轮廓圆度

由于改进的Canny算子处理的边缘图像中还存在许多虚假边缘,本文通过轮廓层级特征函数来提取经过改进的Canny算子处理的边缘图像中的内、外轮廓。先通过findContours函数参数1调用Canny算子处理过的二值图像;再通过参数2获取二值图像中的轮廓数量,并进行统计;然后通过参数3中hierarchy函数对每个轮廓进行编号;参数4的选取用来定义轮廓检索模式,可以检索所有轮廓,且所有轮廓建立一个等级树结构;最后通过参数5的选取来保存检测目标所有连续的轮廓点到contours向量内。这样就可以准确的定位出内、外轮廓边缘曲线,轮廓层级特征函数处理后的二值图像如图5所示。

图5 轮廓层级特征函数处理后的二值图像Fig.5 Binary image after contour level feature function processing

获取内、外边缘轮廓后,我们还需要计算2个轮廓的面积和周长,对2个轮廓的圆度进行计算。式(17)为圆度公式,式中圆度K是测量轮廓接近完美圆轮廓的程度,P是轮廓的周长,A是轮廓的区域面积。

(17)

如果轮廓为标准圆形,其圆度为1。K值越高,它将越不像圆。圆度的允许公差越小,则对圆度要求越高,其值不小于1。越接近1,对圆度要求越高。

2.2.2 检测内、外轮廓的圆心位置及半径差

我们可以利用Hough圆变换检测出图中经过轮廓层级特征函数处理后的二值图像中的圆形,并提取圆心坐标和半径,拟合圆的圆心坐标与半径见表1。本文算法中利用minDist函数检测,如果所提取的内、外轮廓的圆心之间的距离在15个像素大小这个范围内,会被认为是同心圆。将同心圆的半径测量出来,两个半径求差值,就可以得到同心圆的半径差。

表1 拟合圆的圆心坐标与半径Tab.1 Coordinates of the center and the radius of the fitted circle

3 实验结果分析

本文实验基于Visual Studio 2017环境下运行,搭配OpenCV环境对不锈钢锅具图像进行处理和边缘检测,并与传统边缘检测算法进行比较。我们将对本文中改进的Canny算法检测不锈钢锅具锅沿轮廓的试验数据加以研究,验证其在边缘测试方法中具有较为突出的检测效果。仿真实验中我们选取3幅原始图像作为检测对象,首先对原始图像进行了预处理,以抑制噪声对图像检测所造成的影响。接着用传统边界检测算子,即Laplacian算子、Robert算子、传统Canny算子,与经过改进的Canny算子进行了模拟试验结果的比较,不同算法对灰度图像的边缘检测结果对比如图6所示。

(a) 灰度图像 (b) Laplacian算子

(c) Roberts算子 (d) 传统Canny算子

(e) 改进的Canny算子

由图6可知,Roberts算子的边缘检测效果最差;Laplacian算子的检测效果比Roberts算子好一点,但依然存在边缘连通性较差,重要轮廓结构丢失的问题;传统的Canny算子相较于前2种算法在边缘连通性上有好的改善,但依然存在抗噪性弱的问题,例如边缘检测的图像边缘过粗造成边缘检测精度不够高[17]。改进后Canny算子边缘检测的结果,边缘连续性更好且检测精度高,对噪声的抑制也有很好的效果,有效减少同色度背景噪声。

本文需要通过轮廓层级特征函数,提取改进的Canny算子处理过的边缘图像中的内、外轮廓,对边缘图像中的所有轮廓进行编号,我们选取所需的轮廓对应的编号,就能准确提取出不锈钢锅具锅沿的内、外边缘,并消除了不需要的杂边。

获取内、外边缘轮廓后,计算2个轮廓的面积和周长,同时对2个轮廓的圆度进行计算,结果见表2。

表2 内、外轮廓的面积、周长和圆度Tab.2 Area, circumference and roundness of the inner and outer outlines

根据工厂提供的不锈钢锅具的标准尺寸以及误差范围,本文选用1≤k≤1.115时,可将不锈钢锅具轮廓视为圆形。检测出表2中不锈钢锅具的内、外轮廓的圆度为

1

(18)

其中,Kw1、Kn1、Kw2、Kn2和Kn3在误差范围内,可视内、外轮廓为圆形,而Kw3在误差范围之外,不可视为圆形。

在判定不锈钢锅具的锅沿内、外轮廓为圆形后,我们接下来通过Hough圆变换函数来拟合内、外轮廓的圆形,以此来检测内、外轮廓的圆心和半径。本文对原始图像、传统的Canny算法处理的边缘图像、改进的Canny算法处理的边缘图像、轮廓层级特征函数处理的边缘图像分别进行Hough圆变换拟合出不锈钢锅锅沿内、外轮廓并做出比较,Hough圆变换拟合轮廓结果对比图如图7所示。对图7(a)进行Hough圆变换检测,得到了图7(b),可以明显看出Hough圆变换函数拟合出来13组数据,但是这13组数据只是对不锈钢锅具最外面的一圈轮廓进行拟合,并没有检测到锅具锅沿的内轮廓,无法判定锅沿内、外轮廓是否为同心圆。图7(d)和图7(f)分别是对传统的Canny算法和本文改进的Canny算法的二值图像进行Hough圆变换检测得到的图像,经过改进的Canny算法处理后的二值图像通过Hough圆变换拟合出来的数据明显少于传统Canny算法处理的二值图像拟合出来的数据。由于改进的Canny算法得到的二值图像依然存在少量无用的琐碎边缘,会对内、外轮廓进行拟合时出现许多无用的圆形,因此导致了Hough圆变换拟合出来的内、外轮廓的精确度下降。

对此,我们通过层级轮廓特征函数对改进的Canny算法的二值图像图7(e)中的锅沿内、外轮廓进行筛选得到了图7(g)和图7(i)。通过工厂加工标准,我们对Hough圆变换函数中的参数进行设置,拟合圆半径范围设置为290~320像素,内、外轮廓得到了唯一对应的拟合圆,如图7(h)和图7(j)所示。通过本文提出的检测算法,能够有效识别不锈钢锅具锅沿的内、外轮廓,在Hough圆变换算法拟合轮廓过程中数据量减少了92.3%,运算时间减少了53.6%,图像数据量对比和运行时间见表3。

图7 Hough圆变换拟合轮廓结果对比图Fig.7 Comparison of Hough circle transform fitted contour results

表3 图像数据量对比和运行时间Tab.3 Image data volume comparison and execution time

为了验证该方法的有效性,我们选取20个合格的不锈钢锅具和15个不合格的不锈钢锅具建立数据集,不锈钢锅具样本检测结果见表4,本文提出的研究方法的检测准确率达到91.4%。其中3组实验的图像拟合数据量和运行时间如图8所示,从图中可以看出本文所提出的研究方法有效减小了图像的复杂度,节约了计算成本。

表4 不锈钢锅具样本检测结果Tab.4 Stainless steel pot sample test results

图8 图像拟合数据量和运行时间Fig.8 Image fitting data volume and execution time

4 结语

本文提出了一种Canny-Hough边缘检测算法对不锈钢锅具锅沿轮廓缺陷进行检测。预先经过改进的Canny算法对原图像进行边缘轮廓检测,获取整体的边缘图像,并通过轮廓层级特征函数从中筛选出不锈钢锅具内、外轮廓对应的边缘轮廓,可以有效减少复杂的边缘信息,保留了必要的图像轮廓结构,大大减少了Hough变换检测同心圆轮廓的运算量,提高了检测精度。实验结果表明,相较于传统Hough变换算法,本文所提的算法在实现更高检测精度的同时显著减少运算所需的时间,为不锈钢锅具锅沿轮廓缺陷检测提供了新的方法。

猜你喜欢

锅具轮廓算子
拟微分算子在Hp(ω)上的有界性
OPENCV轮廓识别研究与实践
各向异性次Laplace算子和拟p-次Laplace算子的Picone恒等式及其应用
基于实时轮廓误差估算的数控系统轮廓控制
一类Markov模算子半群与相应的算子值Dirichlet型刻画
不锈钢锅具正确使用方法
Roper-Suffridge延拓算子与Loewner链
一种通用型煤气防滑炉架
在线学习机制下的Snake轮廓跟踪
创造早秋新轮廓