张少玉 柳浪涛
摘要:边缘检测是图像处理中的一项关键技术。由于家具图像的复杂性及现有边缘检测算子的局限性,使得单一的边缘检测器不能检测出家具图像的所有边缘。为了寻找适合家具图像的边缘检测算子,将几种不同的边缘检测算子应用到家具图像中,按照各种测量指标对不同边缘检测算子的检测效果进行了评价。
关键词:边缘检测;Canny算子;Sobel算子;欧氏距离;矢量角算子
DOIDOI:10.11907/rjdk.161061
中图分类号:TP317.4
文献标识码:A 文章编号:1672-7800(2016)005-0204-03
0 引言
边缘是信号发生突变的地方,主要存在于图像的不同目标之间、不同区域之间、背景与区域之间。边缘是分割不同区域内容的边界。边缘中包含了很多信息(一个区域终止、区域的形状),通过对图像边缘的检测可以减少处理图像的工作量。边缘检测一直是计算机视觉与数字图像处理的重要组成部分,其对图像边缘定位的准确性将直接影响到现实图像的客观理解。由于家具图像生成及传输条件的限制,使得家具图像的部分信号发生了改变而成为噪声,这些噪声给边缘检测精确定位带来了不确定性。边缘检测就是克服噪声的影响,向着定位更加准确、检测出的边缘更加精细的方向发展。
自边缘检测概念提出以来已有许多成熟的边缘检测算子,大致可归为如下几类:
(1)基于微分的边缘检测算子。该方法基于图像像素的梯度值在边缘处突变的原理,通过对图像求一阶偏导或二阶偏导数来寻找边缘。代表算法有:Roberts算子、Prewitt算子、Sobel算子、Kirsch算子和Laplacian算子。
(2)基于最优化的边缘检测算子。此类方法通过性噪比来求得边缘检测的滤波器。代表算法有Log和Canny算子。
(3)结合数学复杂理论的边缘检测算子。该类算法认为边缘检测是一个复杂的过程,不能简单通过一些人为设置的值来确定边缘点。该类方法的代表有神经网络以及基于模糊集网络的边缘检测方法。
由于家具图像边缘的复杂性,所以到现在为止没有一种算法可以独立将家具图像的所有边缘准确地识别出来,同时去除图像中非边缘因素。本文试图用不同的边缘探测器来对同一幅图像进行边缘检测,验证边缘检测算子在不同情况(受光照、形状、边缘清晰度影响等)下的边缘检测效果,为实现家具图像多探测器的边缘检测算子提供理论依据。
1 边缘检测算子
1.1 Sobel边缘检测算子
Sobel边缘检测算子[1]是典型的基于梯度的边缘检测方法,原理是通过卷积平滑来对某一位置像素点进行离散性加权运算,并将计算结果大于某一阈值的点设置为边缘,所以该算子对噪声有一定的抑制作用。该算子依据图像的亮度梯度值在边缘处发生突变的原理,通过对图像求导找到一个极大点,具体如图1所示。
Sobel算子的边缘检测处理流程:
(1)计算图像横纵向梯度值。横纵向梯度值是用横纵向的卷积核(见图2)对图像中像素点进行离散性加权计算得出,该值体现了图像在梯度方向的变化,其中纵向的卷积是横向卷积逆时针旋转90°得到。
(2)设置像素点新值。对每一个像素点进行检查,如果该点的梯度值大于色度255则将其标记为边缘点,否则该点的值取梯度值。
1.2 Canny边缘检测算子
Canny边缘检测算子[2]是一个多级的算法,该算法是公认的工业标准。该算子自John F.Canny提出后一直备受瞩目,一个很重要的原因就是Canny证明了它是最优的边缘检测算子(尽可能多地标记真正的图像边缘、尽可能地接近真实的图像边缘、尽可能地排除噪声等造成的虚假边缘信息)。
Canny算子的边缘检测处理流程如下:
(1)去噪处理。由于Canny算子对噪声敏感,所以首先利用图像数据与高斯平滑模板做卷积,消除单个噪声对图像边缘检测的影响。
(2)计算图像梯度值。用梯度值来量化图像的像素点。用一阶偏导数的差分计算横向及纵向的梯度值。
(3)对梯度值进行非极大抑制。图像的边缘只出现在梯度值最大的像素点上。通过细化梯度幅值的屋脊带,保留幅值大于局部变化的最大点,从而精确定位边缘。
(4)用双阈值来确定边缘。Canny算子突出的特点就是用双阈值来确定哪些点是边缘点。如果某点的梯度值大于最大阈值则标记此点为边缘点。如果某点的梯度值小于最大阈值、大于最小阈值并且与边缘相邻,则标记此点为边缘点。其它情况都看作是非边缘点。
1.3 基于欧氏距离和矢量角的彩色图像边缘检测方法
以往边缘检测算法都是使用一个边缘探测器来查找边缘,但图像信息是许多因素的复杂综合体,不能通过单一的因素来简单刻画。
颜色的矢量角对图像的亮度变化不敏感,而对图像的色调和饱和度的变化较敏感,所以其常常被认为是解决光照效应对生成图像影响的一种工具。欧氏距离作为度量两个像素之间色差的一种工具,对图像的亮度变化敏感,但对图像的色调和饱和度变化不敏感。所以S.Wesolkowski在边缘检测算子中同时引入矢量角和欧氏距离,让其同时作为图像边缘检测的探测器。通过结合这两个探测器的优点,克服不同探测器缺点,达到对图像边缘检测更加精确的目的[3]。该算法计算公式如下:
算法实现步骤:①读取图像中的三原色;②计算图像中像素点的欧氏距离,该过程应用一个3×3模板,分别计算中心点到各边缘点的距离;③计算图像中像素点的矢量角;④结合距离矢量和欧氏距离,设置像素点最大值;⑤用阈值预处理图片。通过实验总结设置的阈值为0.075。
1.4 彩色图像的ColorCanny边缘检测算子
该方法继承了Canny算子处理灰度图像的思想,充分利用图像的颜色信息实现对图像的边缘检测[5]。通过对各个颜色通道进行边缘检测,可以避免针对灰度图像边缘处理的缺点。
算法流程如下:①对一幅彩色图像分解成三通道;②分别用Canny算子对各个通道数据进行边缘检测;③综合3个通道的数据。
1.5 基于视觉的ColorSobel算子
基于新型卷积核的边缘检测算子,是一种尽可能保持原图像的信息边缘检测方法。该方法吸取了原Sobel边缘检测算子速度快、对噪声有一定抑制的优点。该算子试图将原彩色图像的颜色信息在直方图上向左移动,并将边缘信息显示。该方法改变了目前边缘检测算子只重视边缘检测效果而不重视图像在边缘检测后的视觉效果问题,比原算法能检测出更多的边缘。算法流程如下:
(1)将图像按照RGB通道分解。
(2)将分解开的三通道像素用横纵向卷积核对像素点进行离散性加权运算,将加权值大于某一点的像素点标记为边缘点。该算法用了一个3×3和一个2×3的卷积核,如图3所示。
卷积核中的值通过实验人为设置,设置这些值时综合考虑了检测的视觉效果及效率两个因素。
(3)将各个通道计算的数据按照RGB颜色顺序结合在一起。
2 实现与比较
在Matlab平台下实现对彩色图像边缘检测。经典的Sobel和Canny算子对彩色图像进行边缘检测时调用了Matlab函数将彩色图片转为灰度图。其中,Sobel算子是通过设置一个给定的边缘阈值,Canny边缘检测算子设置两个阈值及一个高斯的σ值大小,而基于欧氏距离和矢量角的彩色图像边缘检测方法,需要设置斜率及去除伪边缘阈值来实现对图像的边缘检测。
本文结合现有边缘检测算子衡量方法,及实时系统对家具图像边缘检测的要求,给出衡量家具图像边缘检测算子的方法:①算法的出错率。将图像中是边缘的地方检测出非边缘;②以Canny算子检测出的边缘为标准,检测出边缘的宽窄;③算法对图像弱边缘检测性能。弱边缘检测是图像处理中的关键问题,一直是热门研究课题;④算法对图像边缘检测的视觉效果。该因素作为本文边缘检测的一个标准,是因为家具实时系统希望实现一种边缘检测算子,能够在将家具图像边缘识别出来的基础上保持原图像的视觉信息,这是以往算法中忽视的地方。
用3幅图像来验证不同边缘检测算子的边缘检测效果。第一幅与第三幅选取的是柜子的图像。第二幅图像选择的是标准图像库中的Lena图像。其中选取第一幅图像的原因是柜子的边缘及不同的门之间存在很强的边缘,并且中间的部分存在很弱的边缘。第二幅图像用传统的方法来比较不同算子的边缘检测结果。第三幅图像选择一幅具有木纹的柜子,该柜子由于拍摄原因,边缘不很清晰。
实验中,Sobel和Canny算子都首先用Matlab中的rgb2gray函数将原图转为灰度图再进行边缘检测。实验中设置边缘阈值、斜率等都通过人工设置,选取相对较好的实验结果。每组6幅图像中,(a)图是原图,(b)图是Sobel算子对原图的灰度图边缘检测结果,(c)图是Canny算子对原图的灰度图边缘检测结果,(d)图是ColorSobel算子对原图边缘检测结果,(e)图是ColorCanny算子对原图边缘检测结果,(f)图是欧氏距离及距离矢量结合的方法对原图边缘检测结果。
实验1给出了具有强边缘、弱边缘以及有图案的图像。ColorSobel比Sobel算子的检测结果要好,并且在识别柜子上的花朵时比其它算子更加准确,但是检测出的边缘较粗。Canny算子检测出的图像强边缘参差不齐,都没将弱边缘识别出来,并且Canny检测出许多伪边缘。ColorCanny与Canny算子在相同参数设置的情况下检测出了更多的边缘。欧氏距离及距离矢量角算子识别出来的强边缘比较细,并且其对有弧度的花朵边缘识别比较模糊,所以距离矢量和矢量角算子适合应用于直线的边缘检测。
从实验2(见图5)可以看出,Sobel算子比Canny算子的边缘定位更加准确,主要体现在帽子上。在相同的阈值情况下,ColorSobel比Sobel算子能够检测出更多的边缘,并且前者视觉效果更好。距离矢量和矢量角算子在检测有弧度的边缘时检测结果较其它方法更宽,这是因为该算子将两侧边缘及边缘中间的像素点都作为边缘。所以距离矢量和矢量角边缘检测算子不适合应用于弧度的边缘检测。
从实验3可以看出,ColorSobel将柜子图像中木板、地面砖块的纹理及周围的房子边缘更加突出地显示。ColorSobel检测的图像较ColorCanny及距离矢量和矢量角算子识别出的路灯更加完整,因为ColorSobel是通过位置加权实现对图像的边缘检测,所以更适合于突出显示轮廓的边缘检测(例如:叶子的脉络走向等),但不适应于图像的弱边缘检测。
3 结语
本文运用不同边缘检测算子对家具图像进行边缘检测,并对比了检测结果。发现Canny算子虽然能准确检测出图像边缘,但其阈值难以确定并检测出许多伪边缘,不适合应用在家具客户化定制实时系统中。ColorSobel适用于保持原图像信息基础上显示脉络的处理中。距离矢量和矢量角的边缘检测方法对家具图像检测效果很好,但是对弱边缘检测需要改进。
参考文献:
[1]MATTHEWS J.An introduction to edge detection:the sobel edge detector[EB/OL].http://www.generation5.org/content/2002/im01.asp
[2]CANNY J.A computational approach to edge detection[J].Pattern Analysis and Machine Intelligence,IEEE Transactions on,1986 (6):679-698.
[3]DONY R D,WESOLKOWSKI S.Edge detection on color images using RGB vector angles[C].Electrical and Computer Engineering,1999 IEEE Canadian Conference on,IEEE,1999.
[4]STOCKHAM T G.Image processing in the context of a visual model[J].Proc.IEEE,1972,60(7):828-842.
(责任编辑:杜能钢)