APP下载

Kirsch联合高低双阈值的RGB图像边缘检测算法

2023-04-03黄玉蕾

计算机测量与控制 2023年3期
关键词:像素点算子边缘

魏 雨,黄玉蕾

(西安培华学院 智能科学与信息工程学院,西安 710125)

0 引言

随着互联网技术和移动通信技术的不断发展,万物互联已成为可以预见的必然趋势。物联网终端将产生海量的图像视频数据,在此背景之下,模拟人类视觉系统的计算机视觉技术应运而生,即赋予计算机“看”和“认知”的能力,是计算机认识世界的基础。边缘检测作为计算机视觉中非常重要且实用的图像处理方法,通常用于图像特征的提取,其目的就是为了找到边缘点的集合。

边缘点往往是灰度变化最剧烈的点,基于梯度的边缘检测算法比较经典的有Prewitt, Sobel,Canny,Robinson,Roberts等[1-2]。但是,在传统边缘检测算法中,Prewitt只有检测水平边缘和垂直边缘的两个模板,容易造成边缘点的误判或丢失。Sobel算子根据周围像素点位置的不同设定了不同的权值,提高了边缘的清晰度。在Sobel算子的研究基础上,Robinson算子增加了检测模板数量,由原来的两个方向扩展到了八个方向。Canny算子对于边缘像素只能标识一次,且易出现伪边缘[3]。Roberts算子没有经过图像平滑计算,不能抑制噪声,且易造成边缘信息丢失。Kirsch算子对8个方向边缘信息进行检测,具有较好的边缘定位能力,并且对噪声有一定的抑制作用,但计算量大。

针对以上问题,2017年,文献[4]提出一种新的Kirsch边缘检测算法,该边缘检测算法具有较好的抗噪声能力和自适应能力[4]。2020年,文献[5]限制型自适应SUSAN边缘检测算法提出了结合自适应门限算法和阈值选择策略的限制型自适应SUSAN边缘检测算法[5]。2021年,文献[6]提出一种改进的彩色遥感图像边缘检测算法研究,该算法采用分数阶微分和Canny算子相结合,得到一种更优的彩色遥感图像边缘检测方法[6]。2020年,文献[7]提出自适应阈值Prewitt的石榴病斑检测算法,采用双边滤波减少噪声干扰;通过高频强调滤波提高图像高频分量,增强局部细节;根据高斯噪声概率分布设置算子卷积掩膜元素权重,利用对称性改进像素点梯度计算的方法,改善了传统Prewitt算法在石榴外表病斑及石榴轮廓检测精准度不高、抗噪声能力不强以及存在伪边缘等问题[7]。2021年,为了提高带钢表面缺陷检测的效率和准确率,文献[8]提出一种基于Sobel算子的带钢表面缺陷图像边缘检测算法。首先运用改进的四方向Sobel算子以及自适应动态阈值对图像进行二值化图里,然后将二值化图像进行基于Hilditch算法的边缘细化处理,得到最终检测图像[8]。2021年,文献[9]变压器输变电设备边缘检测的改进算法,在变压器输变电设备的边缘检测中运用大津法来动态获取最优阈值,从而降低Prewitt算子对于边缘点的误判[9]。

另外,还有众多学者将模糊逻辑、多尺度聚类、图论以及基于数学形态等方法运用在图像边缘检测中。2016年,文献[10]基于多视图聚类的自然图像边缘检测,将图像局部特征与稀疏编码结合在一个统一的多视图聚类框架中,从而有效提高边缘检测的鲁棒性[10]。2018年,文献[11]提出了一种融合小波变换模极大值法和新型改进的数学形态学的含噪图像边缘检测方法[11]。2018年,文献[12]提出基于Pal和King模糊理论的边缘检测改进算法[12]。2022年,文献[13]采用计算欧式距离强化图像块中心间相关性从而达到降噪的方式,实现了图像边缘的有效提取[13]。2022年,文献[14]提出一种基于改进K-means聚类算法的自适应Canny算子工件边缘检测算法,在工件边缘检测时,首先通过改进K-means算法进行分割与融合图像,然后采用Otsu阈值分割处理,使用最小二乘法拟合工件孔洞锯齿边界,提高了复杂相似工件边缘检测的识别度[14]。

随后,机器学习和人工智能技术也被用于图像边缘检测中。2019年,文献[15]提出基于卷积神经网络的舰船图像边缘检测算法[15]。2021年,文献[16]提出的机器学习的光照不均图像边缘检测系统,采用支持向量机模式将不能被线性分类的图像,通过非线性映射至高维特征空间,利用回归训练的核函数进行非线性拟合。最后通过零交叉检测法完成图像边缘检测[16]。2022年,文献[17]为解决卫星遥感图像边缘模糊噪点过多,导致图像清晰度过低的问题,提出基于深度学习的卫星遥感图像边缘检测方法[17]。参考文献[18]针对海岸线动态监测管理中,由于自然环境复杂多变,拍摄的遥感图像中海陆边界界限不明显,导致提取到的海岸线边缘定位不准确的现象,提出融合深度卷积神经网络与语义分割的方法来检测海岸线边缘[18]。

综合以上分析可以看出,在图像检测方面,尚不存在一种通用的方法理论,现有的算法都是以处理特定场景或特定情况下的问题为目的。针对以上问题,本文对不同色彩空间下的图像,利用Kirsch算子[19-22]联合高低双阈值进行边缘检测,实验结果表明,本文算法在保持图像细节和抗噪声干扰方面都有较好的效果。

1 Kirsch算子

1.1 Kirsch算子

Kirsch是由R.Kirsch提出的一种边缘检测算子,可以对像素周围8个方向上的边缘信息进行检测,是一种离散的一阶微分算子。由于可检测8个方向的边缘,因此Kirsch算子对于边缘的定位能力较好,而且在噪声抑制方面效果较为理想,对灰度渐变和噪声较多的图像处理效果较好。

Kirsch算子利用0,π/4,π/2,3π/4,π,5π/4,3π/2,7π/4这8个方向的(如图1所示)罗盘核模板对图像上的每个像素点进行卷积运算,从而得到每个像素点八个方向的梯度幅值与方向,并以其中的最大值作为该点的边缘输出。

图1 模板方向

八个模板分别代表八个方向,模板矩阵如下所示。

假定某个像素点为P(i,j),这个像素点及其周围0,π/4,π/2,3π/4,π,5π/4,3π/2,7π/4这八个方向上像素点的像素值组成的矩阵为P(i,j)。

方向k对应的Kirsch算子模板为:

利用Pi,j与Mk进行卷积,可得到坐标(i,j)处像素点在方向k上的梯度值fk(i,j),如式(1)所示。

(1)

其中:k=0,π/4,π/2,3π/4,π,5π/4,3π/2,7π/4。

取八个方向上的最大梯度作为点(i,j)最终的梯度值GRAi,j如式(2)所示。

GRAi,j=max{fk(i,j)}

(2)

1.2 改进Kirsch算子

在Kirsch的8个方向模板中,以π/2方向和3π/2方向为例,π/2方向与3π/2方向得到的梯度强度方向相反,但是宏观来说,这两个方向模板得到的实际边缘形态是一致的。以图1中的方向为基准,π/2方向模板和3π/2方向模板得到的边缘都是垂直方向的。同理,π方向模板和0方向模板得到的边缘都是水平的。由此可以将8个方向的梯度强度缩减到4个方向。改进的Kirsch算子流程如图2所示。

图2 改进Kirsch算子

设图像为A,取坐标(i,j)处及其相邻像素点的灰度矩阵Ai,j,如式(3)所示。Kirsch罗盘核为Mk(k=0,π/4,π/2,3π/4,π,5π/4,3π/2,7π/4)。

(3)

利用8个罗盘核分别与图像进行卷积运算求得各个方向模板对应的图像梯度Gi=(0,π/4,π/2,3π/4,π,5π/4,3π/2,7π/4),然后分别求取Gi与Gi+π中的绝对值最大值。令:

G1=max(|G0|,|Gπ|)

(4)

G2=max(|G(π/4) |,|G(5π/4) |)

(5)

G3=max(|G(π/2) |,|G(3π/2) |)

(6)

G4=max(|G(3π/4) |,|G(7π/4) |)

(7)

然后再分别求的两垂直方向上图像梯度的二范数F,如式(8)式(9)所示。

(8)

(9)

最后取F的最大值作为窗户中心像素(i,j)处的边缘强度,如式(10)所示。

e(i,j)=max(F13,F24)

(10)

其中:e(i,j)表示采用Kirsch算子计算得到的坐标(i,j)处像素的边缘强度。

2 基于阈值的边缘检测

2.1 单阈值边缘检测

在传统的基于阈值的边缘检测方法中,往往人为预先设定二值化的阈值,这样的方式准确性较差。后来,研究人员提出了各种自动阈值生成的想法。2016年,文献[23]以FPGA作为图像处理的核心机,采用中值滤波与快速排序算法相结合的方式,计算得到像素点周围的局部边缘阈值,然后通过该局部阈值得到图像的边缘信息[23]。2019年,文献[24]利用FPGA并行处理的特性,采用多方向模板与自适应阈值相结合的方式,提出了改进的Sobel边缘检测算法[24]。但是单阈值的边缘检测方法经常会出现边缘检测率低或者出现伪边缘的现象,因此本文提出一种采用双阈值的边缘检测方法。文献[25]针对绝缘子航拍图像存在的边缘检测结果较差的现象,在Canny算子的基础上提出了一种二维最大熵阈值优化的边缘检测算法。从图像信息熵的角度出发,利用最大图像熵法,将一维图像熵提升到二维图像熵,然后再去计算阈值,这样提高了边缘检测的准确率[25]。

2.2 双阈值边缘检测

由式(10)可得图像A所有像素的边缘强度矩阵E,如式(11)。

E=[e(x,y)]m×n

(11)

其中:x=1,2,…,m,y= 1,2,…,n。

为了提高边缘检测结果的连续性和算法的自适应能力,本文设定两个阈值,高阈值TH和低阈值TL,而高低阈值由整幅图像边缘强度的平均值Tavg来确定,average()函数用于求取整幅图像的平均边缘强度,分别如式(12)~(14)所示。

TL=Tavg/3

(12)

TH= 2TL

(13)

Tavg=average(E)

(14)

利用双阈值算法将E中所有像素点划分为边缘和背景两大类,如果某位置处像素点的边缘强度值大于较高的阈值,则确定该像素肯定是边缘点;如果某位置处像素点的边缘强度值小于较小的阈值,则确定该像素肯定是背景点;如果某位置处像素点的边缘强度高于较低阈值且低于较高阈值,那么此像素点可能是边缘点也可能是背景点。那究竟是边缘点还是像素点,要根据像素点周围八个邻域点中边缘点的个数来判定。如果其周围邻域内边缘点的个数大于或者等于4,即数量超过50%,则判定该像素点为边缘点,标记为0;相反地,如果其周围邻域内边缘点的个数小于4,可判定该像素点为背景像素点,标记为1,如公式(15)所示。高阈值和低阈值由图像的边缘强度矩阵E来决定。

(15)

函数f(x,y)的表达如式(16)所示。

(16)

其中:θ(x,y)为像素点(x,y)周围一周内8个相邻点中为边缘点的像素的个数。

3 RGB色彩空间下不同的图像分量

RGB色彩模型是一种表示颜色的模式或者标准,RGB色彩空间中,所有图像都是由红、绿、蓝三原色组成,或者说RGB图像可以分为三通道,R(red)是红色通道,G(green)是绿色,B(blue)是蓝色通道。这3种颜色以不同的量进行叠加,就可以显示出五彩缤纷的色彩,如图3所示。

图3 RGB图像原理图

可以把RGB图片看做是3个二维数组的层层叠加。每一层中的二维数组都代表一种颜色通道。对于一幅RGB彩色图像而言,每一种颜色对应一幅分量图像,而这幅彩色图像就相当于由红色分量图、蓝色分量图和绿色分量图叠加而成。

对于一幅图像来说,其在R、G、B分量中的信息各有偏重,如图4所示,RGB三个不同色彩空间下突出的人物特色是不同的。而合成过程中,由于色彩的叠加作用,会对各分量下偏重有效的信息造成削弱。为保证边缘检测中有效信息的最大化保留,本文提出利用上述边缘检测算法对各色彩空间下的图像分量分别进行处理。

图4 图像的RGB分量图

4 算法实现

Kirsch联合高低双阈值的RGB图像边缘检测算法处理过程包含色彩分量提取、图像去噪、图像增强、计算像素点强度、计算阈值、划分边缘、融合边缘几大步骤,具体流程如图5所示。

图5 边缘检测流程

4.1 色彩分量提取

在RGB图像中,一个彩色像素点的颜色由红(R)、绿(G)、蓝(B)三原色组合而来,因此RGB图像的每一个像素的颜色值由R、G、B三个分量表示。图像中每个像素的颜色值直接存放在图像的像素矩阵中。

对于M行N列大小的图像,需要3个M×N的二维矩阵分别表示各个像素的R、G、B颜色分量。提取原图对应的RGB不同分量下的分量图,即提取各分量对应的二维矩阵,将各分量图转化为灰度图。

4.2 图像去噪

在图像数字化或者图像传输的过程中,由于受到周围外界环境的影响,图像中会产生一些不必要的或多余的干扰信息,称作噪声。就图像噪声本身来说,它并不是空域的,即不是指某一点相对于周边点显得突兀,就说该点是噪声点。而是指在连续的时间内,在同一位置产生的像素点如果误差较大,则称之为噪声点,即噪声本质是时域的。一幅图像在实际应用中可能存在各种各样的噪声,这些噪声可能在传输中产生,也可能在量化等处理中产生。

噪声会影响图像质量。边缘检测主要是基于图像像素强度的导数,而导数通常对噪声很敏感,在边缘检测中噪声很可能会引起边缘的误判或边缘的偏移,因此图像去噪是边缘检测中预处理的首要过程。

目前来说图像去噪分为三大类:基于滤波器的方法(Filtering-Based Methods)、基于模型的方法(Model-Based Methods)和基于学习的方法(Learning-Based Methods)。本文选用基于滤波器方法中的高斯滤波对图像进行预处理。高斯滤波器是一种线性滤波器,对于图像在输入时随机引入的噪声有很好的抑制效果,对图像起到平滑作用。在高斯滤波模板中,距离模板中心的越远,对应的模板系数越小,因此,相比于中值滤波和均值滤波等其他滤波方法,高斯滤波器对图像的模糊程度较小,对于原图像的完整程度保持的越好。

在高斯滤波中,认为像素点跟邻域像素是一种高斯分布的关系,将图像与高斯核进行卷积操作。

Mσ=M*Gσ

(17)

式(17)中,Mσ是高斯滤波后的结果,M是图像像素矩阵,Gσ是标准差为σ的二维高斯核,定义为:

(18)

本文中采用σ为1,大小为5的高斯核,计算得到高斯核模板为:

0.0030.0130.0220.0130.0030.0130.0590.0970.0590.0130.0220.0970.1590.0970.0220.0130.0590.0970.0590.0130.0030.0130.0220.0130.003

利用高斯核模板与图像进行卷积操作,对图像进行平滑处理,处理过程如图6所示。

4.3 图像增强

图像增强简单来说就是采用一定的图像处理方法增强图像的对比度,来强调感兴趣的特征,抑制不感兴趣的特征,或者说突出图像中的某些“有用”,压缩其他“无用”信息,改善图像的视觉效果,将图像转换为更适合人或计算机分析处理的形式。

目前现有的图像增强方法归纳起来可以分为两类:空间域法和频域法。简单概括起来,空间域就是指包含图像像素的空间,空间域法是指在图像像素的空间域中,或者说在图像本身中,通过对图像进行线性或非线性运算,达到增强图像的像素灰度值的目的。频域法是把图像看做是一种二维信号,对这种二维信号进行傅里叶变换,从而达到对二维信号的增强。

直方图均衡化是一种频域图像增强算法。对于图像而言,直方图反应了图像中不同灰度级像素出现的个数。由于拍摄或传输过程中各种因素的影响,原始图像的直方图中图像像素的灰度值可能会集中在较窄的灰度区间内,造成图像不够清晰。例如,过度曝光的图像,其灰度级集中在高亮度范围内。采用直方图均衡化处理方法,可以把原始图像的像素分布由集中分布变成均匀分布,增加图像像素之间灰度值差别的动态范围,从而实现图像整体对比度的增强。

图7 直方图均衡化前后对比

将图像的灰度值的个数表示成一个一维的离散函数,表达式为:

g(k)=nk,k= 0, 1, …L-1

(19)

式(19)中,nk是图像中灰度级k的像素的个数,L是图像中灰度的总级数。那么,对应的图像灰度直方图中,每一列的高度为nk。

对直方图进行归一化,各个灰度级出现的相对频率Fr(k)表示为:

Fr(k)=nk/N

(20)

式(20)中,N为图像的总像素数。

然后,计算图像灰度的累积分布概率Sk。

(21)

最后,将归一化的Sk乘以L-1,再四舍五入,得到均衡化后的图像灰度值。

Tk=Sk×(L-1)

(22)

其中:Tk表示原始图像中灰度级k经过灰度值均衡化后的灰度值。

4.4 改进后的Kirsch算子求像素点强度

利用Kirsch算子的8个罗盘核分别与各个分量图像进行卷积运算,然后求取每个卷积结果的绝对值,并计算这8个卷积绝对值的最大值,以此最大值作为窗户中心像素(i,j)处的边缘强度,最终图像中所有像素点的边缘强度为E。

4.5 阈值计算

利用式(11)由图像的边缘强度E计算所有像素点的平均边缘强度,再根据公式(12)~(14)由平均强度计算得到高阈值和低阈值。

4.6 计算边缘图

根据计算得到的高低双阈值,对各个分量的边缘强度图进行划分处理,确定出各分量图中的边缘像素和背景像素,得到R分量边缘、G分量边缘和B分量边缘。

4.7 融合边缘图

假设在图像的R、G、B三分量边缘图中,R分量图中边缘像素点的集合的UR,G分量图中边缘像素点的集合的UG,B分量图中边缘像素点的集合的UB。如果某个像素点在R、G、B三分量图中至少在两幅分量中是边缘点,则认为该像素点是边缘点。根据集合的容斥原理,对于RGB不同分量图得到的边缘图像进行融合。

Uedge=UR+UG+UB-UR∩UG-

UR∩UB-UB∩UG+UR∩UG∩UB

(23)

式中,Uedge表示融合后的图像边缘。

5 实验结果

5.1 不同色彩分量图检测结果

本文使用基准数据集BSDS500数据集对实验进行验证评估。BSDS500数据集有3个互不相交的子集,训练集(train)有200张图像,测试集(test)有200张图像,验证集(val)有100张图像。因为本文算法是无监督的算法,因此只选用了测试集中的200张图像进行实验验证。

本文随机选取BSDS500数据集中的3幅图来展示实验效果,如图8所示。

图8 边缘检测结果对比

由图8可以看出,对于独立的不同分量图,其检测出的边缘是有差异的。如第一幅图右侧植物及阴影部分,B分量检测出的边缘细节相对更丰富完整。第二幅图中蝴蝶的背景颜色主体为绿色,但由于颜色变换缓慢,所以在G分量边缘图中背景部分检测到的边缘像素点较少。第三幅图中红色汽车在R分量图中车身边缘出现伪边缘的概率较小,且R分量边缘更加连贯完整。

5.2 本文算法与其他算法比较

针对BSDS500数据集中的3幅图,分别采用本文算法和其他4种的传统算法Roberts、Laplacian、Sobel、Prewitt进行边缘检测,最终得到的检测结果如图9所示。

图9 本文算法与其他算法的比较

由图9的边缘检测结果可以看出,本文算法相比于其他算法检测到的边缘更加清晰,细节更加完整,边缘连贯性更好,检测率更高。

6 结束语

本文采用改进的Kirsch算法,利用8个罗盘核模板对图像进行卷积分别求图像梯度,然后取其结果最大的绝对值作为最终图像梯度,提高了边缘检测率。其次,以图像均值为参照,选取双阈值进行边缘点的提取分割,极大地降低了伪边缘的概率。然后,通过对不同色彩空间下分量图进行检测处理,得到细节偏重不同的边缘结果图。最后,对R、G、B不同分量的检测结果进行边缘融合,从而得到最终的检测结果。

实验BSDS500数据集中的200张测试集图像对本文算法进行了验证,并与其他几张检测算法的检测结果进行了比较,通过比较得出以下几点结论:

1)本文算法适用于大多数常见的普通图像,可用于包括人物、植物、建筑、昆虫等图像的边缘检测,普适性强。

2)由不同色彩空间检测结果可以看出,同一幅图像不同彩色空间分量图的边缘检测结果存在差异,有的分量检测结果偏重细节,有的分量检测结果偏重主体信息,且细节的偏重存在局部性差异。这些差异均来自图像整体色调的差异以及照片采集时光照的影响。本文算法正是以此为依据,首先对图像的各分量图进行边缘检测,再将检测结果进行融合得到最终的检测结果。

3)由本文算法与其他算法的比较结果可以看出,本文算法相比于其他算法检测到的边缘更加清晰,细节更加完整,边缘连贯性更好,检测率更高。

猜你喜欢

像素点算子边缘
拟微分算子在Hp(ω)上的有界性
基于局部相似性的特征匹配筛选算法
各向异性次Laplace算子和拟p-次Laplace算子的Picone恒等式及其应用
一类Markov模算子半群与相应的算子值Dirichlet型刻画
基于5×5邻域像素点相关性的划痕修复算法
基于canvas的前端数据加密
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
一张图看懂边缘计算
Roper-Suffridge延拓算子与Loewner链
在边缘寻找自我