一种基于Sobel算子的边缘检测算法

2020-11-13 03:38郑欢欢白鱼秀张雅琼
微型电脑应用 2020年10期
关键词:边缘检测

郑欢欢 白鱼秀 张雅琼

摘要: 针对传统Sobel边缘检测算法对噪声敏感、定位不够精确的缺点,提出了改进Sobel算子的边缘检测算法。算法基于均值计算和差分处理角度构造了5×5的梯度权值模板,通过改进的非极大抑制算法有效细化了边缘,采用局部自适应动态阈值提取边缘信息。通过实验表明,该算法不仅能够较快、较好的提取边缘信息,而且具有较强的抗噪能力。

关键词: Sobel算子; 边缘检测; 非极大值抑制; 局部自适应动态阈值

中图分类号: TN 911.73

文献标志码: A

An Edge Detection Algorithm Based on Sobel Operator

ZHENG Huanhuan, BAI Yuxiu, ZHANG Yaqiong

(School of Information Engineering, Yulin University, Yulin 719000, China)

Abstract: Aiming at the shortcomings of traditional Sobel edge detection algorithm such as noise sensitivity and inaccurate location, an improved Sobel operator edge detection algorithm is proposed. Based on mean calculation and difference processing, a 5×5 gradient weight template is constructed. The edge is refined effectively by improved nonmaximum suppression algorithm, and the edge information is extracted by local adaptive dynamic threshold. Experiments show that the algorithm not only can extract edge information quickly and better, but also has strong antinoise ability.

Key words: Sobel operator; edge detection; nonmaximum suppression; local adaptive dynamic threshold

0引言

圖像低级特征提取技术就是从整副图像而不是显著区域层次来描述图像,其中最重要的研究内容之一就是边缘检测。这一技术有助于人类从从图像中获得更多信息,从而进行智能控制处理。常用的一些经典边缘检测算子包括Roberts算子、Prewitt算子、Sobel算子、Log算子和Canny算子等。Sobel算子因其耗时短、具有一定的抗噪性、边缘检测效果较好而得到广泛应用。国内外的学者经过大量研究对基于该算子的算法提出了很多改进算法,如增加梯度模板方向[1]、修改梯度模板权值[2]、修改提取边缘的阈值[3]、综合其他方法的改进算法[4]等。本文在以前的研究基础上,从均值计算和差分处理角度构造5(5梯度模板,并通过边缘细化和自适应动态阈值处理,经实验检测的边缘更细,抗噪性更好。

1传统Sobel算法

Sobel算子是应用一阶微分等价算子检测图像梯度,从而确定边缘位置的边缘检测算法。通常用梯度

f来表示一幅图像f在(x,y)位置处的边缘强度和方向,其梯度的定义如式(1)。

f≡grad(f)≡gxgy=

fxfy  (1)

梯度向量的幅值和方向如式(2)、式(3)。

g(x,y)=g2x+g2y≈gx+gy (2)

α(x,y)=arctangygx(3)

传统的Sobel算子采用水平和垂直两个方向卷积模板与图像进行卷积运算。假设一副图像的3×3区域如图1(a)所示,Sobel算子水平和垂直梯度模板分别如图1(b)和(c)所示。

将图像区域分别与两个模板中的对应权值相乘,并将所有乘积相加,得到3×3模板垂直和水平两个方向的近似偏导,如式(4)、式(5)。

gx=(z1+2z4+z7)-(z3+2z6+z9) (4)

gy=(z1+2z2+z3)-(z7+2z8+z9) (5)

一般用式(2)约等的近似计算得到位置像素梯度值。为了得到边缘图像,还需要对梯度图像进行阈值的二值化处理,不仅能除掉部分伪边缘,还能得到清晰二值化边缘图像。根据不同环境的要求设置合适的阈值,当梯度值大于阈值,则认为该像素点为图像的边缘点;当梯度值小于阈值,则认为该像素点不是图像的边缘点。

Sobel算子具备一阶算子算法简单,处理速度快的优点,同时由于使用了加权平均算法,因此对图像中的一些噪声具有一定的抑制能力。由于Sobel算子只获取了水平和垂直两个方向上的边缘信息,定位精度不高,所以对于噪声复杂的边缘图像,检测效果并不理想。针对以上缺点,本文通过扩大边缘检测算子,采用局部自适应动态阈值,不仅提高了算法的抗噪性能,而且增强了边缘定位精度。

2改进sobel算法

2.1定义5×5算子模板

常用的滤波模板是3×3,但是近来更大的模板被用来执行复杂的滤波运算。定义5×5大的边缘检测模板不仅可以和滤波模板匹配,对减少噪声的平滑效果也较好。

为了既实现边缘检测又能滤除噪声,在定义5×5算子模板要考虑均值计算和差分处理的最优均衡方式[5]。

假设离散平滑算子满足高斯平均即服从正态分布,那么用二项式展开系数,如表1所示,近似求得级数的整数系数。

对于不同级数n,位置k的系数为p(k,n),表1中仅列举了级数小于5的系数如式(6)。

p(k,n)=n!(n-k)!*k!, if (k≥0,k≤n)

0, others  (6)

根据以上得出的最优离散平滑算子系数,计算出窗口大小为w的最优平滑系数s(k)和最优差分系数d(k),如式(7)、式(8)。

s(k)=p(k,w-1) (7)

d(k)=p(k,w-2)-p(k-1,w-2) (8)

由上可知,对于窗口大小等于5的系数分别为:

s(0)=1, s(1)=4, s(2)=6, s(3)=4, s(4)=1。

d(0)=1, d(1)=2, d(2)=0, d(3)=-2, d(4)=-1。

将一条坐标轴上的最优平滑和另一条坐标轴上的最优差分结合,形成既能抗噪又能检测边缘的Sobel算子,算法如式(9)、式(10)。

Sobel x(x,y)=∑w-1x=0∑w-1y=0s(x)·d(y) (9)

Sobel y(x,y)=∑w-1x=0∑w-1y=0s(y)·d(x)(10)

这样生成的Sobel算子的5×5水平和垂直模板如图2所示。

2.2梯度计算

将灰度图像分别与图2定义的两个方向模板进行卷积运算,求出模板中心点对应的图像像素点的两个方向梯度值:

gx(x,y),gy(x,y)。梯度图像g(x,y)如式(11)。

g(x,y)=gx/12+gy/12 (11)

为了防止灰度值溢出,丢失边缘信息,将两个方向梯度值都除以衰减因子。

2.3边缘细化

由于灰度图像的边缘是渐变区域,不是理想的阶跃信号,因此通过上述计算得到的梯度图像在边缘位置存在屋脊带,需要对梯度图像进行细化处理,得到特征明显的边缘信息。

常用的边缘细化方法是非極大抑制(NMS),就是在领域内寻找局部最大搜索,抑制不是极大值的元素。这样就可以把屋脊带的粗边缘(大于1个像素)细化为一个像素宽度,但是同时往往会丢失边缘点,造成边缘不连续。

本文采用改进的非极大抑制算法[6]。由于Sobel梯度模板只在水平和垂直方向进行卷积运算,因此只考虑了0°和90°的非极大值抑制,如式(12)。

gr(x,y)=

g(x,y), if(g(x,y)>α*max(A)

|g(x,y)>α*max(B))

0,others (12)

其中,A为5×5模板中中心像素所在的水平方向的5个像素组成的一维矩阵,即

A=[g(i-2,j),g(i-1,j),g(i,j),g(i+1,j),g(i+2,j)],B为5×5模板中中心像素点所在的垂直方向的5个像素组成的一维矩阵,

即B=[g(i,j-2),g(i,j-1),g(i,j),g(i,j+1),g(i,j+2)]。α为可控因子,根据具体情况调节细化强度。α越小丢失的边缘信息越少,但是边缘细化强度越小,经多次实验发现,取值在0.75~0.9之间,既可以细化边缘由保留了较完整的边缘信息。

2.4自适应动态阈值

梯度图像经过边缘细化滤除了部分伪边,但是对于受噪声影响,仍有部分边缘检测效果不是很理想,一般通过阈值处理来提高抗噪能力。

实际应用中,由于受不同环境的影响获取的图像差别较大,同一图像的不同区域颜色强度也有区别,使用全局阈值得到的边缘效果不够理想。本算法根据不同的灰度图像子区域采用局部自适应动态阈值提取边缘信息,不仅提高了定位精度,也增加了算法的抗噪能力。在一个阈值判断的5×5模板中,

图像中心像素(x,y)的局部自适应阈值t(x,y)如式(13)。

t(x,y)=[sum(C)-min(C)-max(C)]/23 (13)

其中,C为中心像素(x,y)所在的5×5模板中所有像素点组成的矩阵。

设定好阈值之后,将得到的梯度图像通过式(14)进行二值化处理,提取边缘信息。

b(x,y)=255,if(gr(x,y)>t(x,y))

0,others  (14)

3实验结果及分析

为检测改进Sobel算法的边缘检测效果,在MATLAB2014平台下编程实验。将512×512的灰度图像“pepper”作为原图像分别采用传统Sobel算法、3×3模板的四方向Sobel算法和改进的5×5局部自适应阈值Sobel算法,在无噪声以及含有1%脉冲噪声和方差为1%高斯噪声的条件下,分别进行边缘检测实验,并从检测效果和时间开销两方面进行分析。

3.1算法边缘提取效果分析

无噪声条件下的边缘检测结果如图3所示。

从对比图可以看出,3×3模板的四方向Sobel算法和本文算法保留了更多图像边缘细节信息,由于使用了边缘细化,所以这两种边缘线条更细,而且边缘的完整性和连续性都比传统Sobel算法要好。

含有1%脉冲噪声和方差为1%高斯噪声的条件下的边缘检测结果,如图4所示。

从对比图明显看出,本文的改进算法的抗噪性要强于前两种算法。

3.2算法时间开销

在实验中统计了三种算法处理原图像的时间开销,算法(a)用时12 s,算法(b)用时20 s,算法(c)用时16 s。可以看出传统Sobel算法时间开销是最小的,而3×3模板的四方向Sobel算法时间开销是最大的,本文改进算法虽然用了5×5的大模板增加了运算量,但是由于选择了水平和垂直两个方向运算速度比四方向更快些。

4总结

针对传统Sobel算法的不足,本文提出的改进Sobel算法从均值计算和差分处理两方面考虑构造了5×5卷积模板的权值,并通过边缘细化和局部动态自适应阈值计算,使边缘图像不仅能较好的描述图像的边缘信息,而且具有较好的抗噪性和时效性。

参考文献

[1]郑英娟,张有会,王志巍,等.基于八方向Sobel算子的边缘检测算法[J].计算机科学,2013,40(11A):354356.

[2]何春华,张雪飞,胡迎春.基于改进Sobel算子的边缘检测算法的研究[J].光学技术,2012,3(38):323327.

[3]刘占.基于局部期望阈值分割的图像边缘检测算法[J].计算机与现代化,2016(8):5255.

[4]李怡燃,庞春颖,常知强. Sobel算子和形态学相结合的尿液试纸条边缘检测算法研究[J].生物医学工程研究,2019,38(1):4852.

[5]Mark S Nixon, Alberto S Aguado.计算机视觉特征提取与图像处理 [M]. (第三版).北京:电子工业出版社,2014:100101.

[6]沈德海,张龙昌,鄂旭,等.一种基于梯度的细胞图像边缘检测算法[J].信息技术,2018(3):69.

(收稿日期: 2019.08.29)

猜你喜欢
边缘检测
基于数学形态学的一种改进CO2焊熔池图像边缘检测算法
离散过程神经网络和CGA相融合的边缘检测
基于图像的物体尺寸测量算法研究
唐卡图像边缘提取
水下大坝裂缝图像分割方法研究 
基于多算法融合的多车牌定位方法研究
基于高精度星敏感器的星图降噪研究
基于灰度的图像边缘检测与匹配算法的研究
基于TMS320的跑道异物监测系统
基于边缘检测和色彩空间的混合车牌定位算法