基于改进Canny算子的医学图像边缘检测算法
2019-06-10钱红莹
钱红莹
摘 要:边缘检测作为图像分割的一部分,能够用于医学图像诊断。在医学图像获取过程中不可避免地会出现一些高频噪声,从而对属于高频分量的边緣产生干扰。传统Canny算子在高斯滤波去噪时会滤除一些边缘信息,且需要人为设定高斯滤波方差及高低阈值,缺乏自适应性。通过采用自适应中值滤波去噪,以及采用Sobel算子计算梯度幅值方向,并利用非极大值抑制对图像进行细化,最后利用Otsu计算图像高低阈值,从而对Canny算子进行改进,并在医学图像上进行实验。结果证明,该方法能更准确地检测边缘信息,且具备较强的自适应性。
关键词:Canny算法;自适应中值滤波;边缘检测;Otsu;医学图像
DOI:10. 11907/rjdk. 181912
中图分类号:TP312文献标识码:A文章编号:1672-7800(2019)002-0045-04
Abstract: As a part of image segmentation, edge detection can be applied to medical image diagnosis. Inevitably, there will be some high-frequency noises in the acquisition of medical images. Thus it will interferes the edge which belongs to the high frequency component.The traditional Canny operator will filter some edge information when use Gauss filter, and need to determine the variance of Gauss filtering and the high and low threshold by artificial setting, there is no self-adaptive. By using the adaptive median filter for denoising, sobel operator to calculate gradient amplitude direction, non maximum value suppression of thinning image, otsu calculate the high and low threshold to improve the Canny operator, and do experiments on the medical image. Experiments show that the proposed algorithm can detect edge information more accurately and has stronger adaptability.
Key Words: Canny algorithm; adaptive median filter; edge detection; Otsu; medical image
0 引言
边缘检测是图像分割中一种可用于识别灰度图像中亮度变化明显的界限,剔除无关信息,保留图像整体结构属性的方法。边缘检测技术应用十分广泛,可以从遥感图像中检测出湖泊边界,以了解海洋、河流、湖泊等水量变化[1];可以对道路标线进行自动识别及定位,以消除横向定位误差;能够进行运动目标检测与跟踪,以及人脸识别与指纹识别等[2-6]。医学数字图像有很多不同成像方式,可通过磁共振成像、正电子发射断层扫描、计算机断层扫描、X射线、超声等方式得到医学图像,从而进行诊断[7]。边缘检测技术常应用于医学图像分割,以便更直观、清晰地进行对图像诊断。
Prewitt、Sobel、Roberts、Kirsch、Laplace等是一些经典边缘检测算子[8-9],这些算法简单且容易实现,但对噪声比较敏感,去噪能力较差,容易出现伪边缘,检测精度不高,实际图像处理效果不佳[10]。Nes等[11]提出一种医学超声信号的多尺度边缘检测方法,根据连续小波变换的性质,对小波变换极大值进行研究,以实现对重要边缘的检测。虽然该方法能够有效检测出医学图像主要特性,但图像边缘对比度较低;Hiremath等[12]提出在卵巢超声图像中自动检测卵泡的算法,其过程包括图像预处理、图像分割、特征提取与分类,但在预处理过程中采用高斯低通滤波无法很好地保护边缘信息;贺萌等[13]提出的多尺度结构元自适应边缘检测方法可以计算出各结构元权值,并检测出有噪声干扰图像中的弱边缘,但对比度较差。因此,本文提出一种基于改进Canny算子的医学图像边缘检测算法,该算法能够自适应性地检测出对比度较高的边缘,同时保护边缘信息。
1 传统Canny边缘检测算法
Canny算法是最成功的边缘检测器之一,主要通过高斯滤波、梯度计算、非极大值抑制以及高低阈值设定4个步骤完成边缘检测[14-15]。该算法性能很大程度上取决于高斯滤波器的σ参数与高低阈值设置。虽然传统Canny算子具有较好的边缘检测效果,但也存在一些缺陷,主要包括:
(1)数字图像在处理前需要进行高斯滤波,在此过程中,方差[σ]的取值要求人为设定,但人为设定[σ]时,在滤除噪声与保护边缘信息方面存在一定局限性,两者效果不能兼顾[16]。
(2)Canny边缘检测算子不适用于对部分散斑噪声的滤除。因为高斯滤波无法很好地去除该噪声,所以许多检测到的边缘实际上是噪声。
(3)使用2*2领域一阶偏导有限差分计算梯度时,噪声对图像影响较大,容易出现一些假边缘,反而导致真实边缘信息丢失[17]。
(4)传统Canny算法在阈值化处理时的高低阈值要求人为设置,当检测图像发生变化时需设置合适的阈值,因此自适应能力较差,进行实际的图像处理時过程比较繁琐,并且在有些情况下无法得到较好结果[18]。
综上所述,传统Canny算子人为设置的σ及高低阈值大小会对图像边缘检测结果造成很大影响,检测结果可能会删除真实边缘信息而出现一些伪边缘。
2 改进Canny边缘检测算法
本文针对上述缺陷提出一种改进的Canny边缘检测算法,在去噪时尽可能保留边缘信息并增强自适应性。该算法检测流程如图1所示。
2.1 自适应中值滤波
利用自适应中值滤波对图像进行平滑处理,在改变模版窗口大小的同时,采用不同方法对噪声点与信号点进行处理,从而达到去噪效果[19]。该方法在去除椒盐噪声的同时,能够很好地对其它非脉冲噪声进行平滑,并且能够尽量保护真实边缘信息,避免出现细化或粗化边缘的现象。
中值滤波的自适应是通过在去噪时改变模版窗口大小使滤波器输出一个值,并用输出值代替模板中心点(x,y)处的值实现的,具体实施步骤如下:
(1)初始化模版窗口Sxy大小为3,利用工具使当前模版窗口中的灰度值按大小顺序排列,并得出Zmin、Zmax、Zmed所对应的灰度值大小。
(2)如果满足Zmed>Zmin,Zmed
(3)如不满足Zmed>Zmin,Zmed 其中,Zxy是信号点(x,y)灰度值,Sxy是当前模版窗口,Smax是模版窗口最大值,Zmin、Zmax和Zmed分别为模版窗口中灰度的最大值、最小值和中值。 2.2 Sobel算子梯度计算 本文利用Sobel算子的一阶梯度模板求图像梯度幅值,其水平与竖直方向模版如图2所示。 利用模版对滤波后的图像进行处理,得出在水平方向与竖直方向上的梯度Gradx、Grady,从而得出图像基于Sobel算子的梯度Grad。其计算方法如式(1)-(3)所示。 其中,Dx、Dy分别为x、y方向上的模版,I为滤波后图像。 2.3 Otsu求取高低阈值 Otsu算法又称为最大类间方差法,其主要分割方法是利用图像灰度信息将图像分为目标与背景,并计算其方差[20-21]。以设定阈值t将一幅图像分割为目标与背景,目标点所占比例及均值、背景点所占比例及均值分别为w0、u0、w1、u1,则整幅图像均值u=w0*u0+w1*u1,其方差可由式(4)表示。 其中[σ(t)2]为目标与背景间方差,目标与背景提取越准确,方差越大。因此,若图像中出现一定程度的错误分割,则会导致相应的类间方差减小。当t取一定值时得到最大的[σ(t)2]值,则t为该图像最佳阈值,当t取值不唯一时,则取平均值为最佳阈值。Otsu获得的最佳阈值为高阈值[Th],并设置低阈值为[Th2]。 3 实验过程及结果分析 在Matlab平台上分别对不同类型医学图像进行检测,并与Matlab系统自带的Canny算子及传统Canny算法处理后结果进行比较。 3.1 实验具体实施过程 以脊椎医学图像为例,利用高斯滤波、常规中值滤波及自适应中值滤波对添加椒盐噪声的图像进行处理,处理结果如图3所示。 对高斯滤波及中值滤波窗口进行人为设定,从结果可以看出,自适应中值滤波相较于高斯滤波虽然滤波效果相差不大,但不需要人为设置[σ],从而使去噪更具适应性。经过常规中值滤波后的图像,一些边缘细节被模糊,使边缘信号发生了较大变化。综上所述,本文提出的利用自适应中值滤波进行平滑图像处理效果最佳。 对滤波后的图像进行基于Sobel算子的梯度计算,结果如图4所示。 从实验中可以看出,梯度图像在经非极大值抑制处理后,其边缘得到细化。 对经非极大值抑制处理后的图像利用Otsu算法自适应地计算高、低阈值,并连接边缘,得到的边缘检测结果如图6所示。 3.2 本文算法与传统算法在不同医学图像中处理结果对比 本文分别通过直接调用Matlab中的Canny边缘检测算子、传统Canny算子与改进Canny算子对脊椎、脑部、肺部、手部等医学图像进行检测,并分析实验结果。实验结果如图7所示。 实验结果表明,虽然通过Matlab系统自带的Canny算子能够检测出大体轮廓,但图像中存在很多虚假边缘,细节处的轮廓由于被虚假边缘掩盖而无法识别。图7(a)脊椎图像中相对灰度较大的圆形区域已被虚假信息覆盖,无法观测其边缘信息;图7(d)中手部图像只能看出手掌轮廓,而未检测出其手指关节处细节。 传统Canny算子相比于Matlab自带的Canny算子,检测结果有了很大提高,但边缘清晰度仍不够高。从实验结果可以看出,图像中的一些细节边缘未能检测出来。图7(b)内部存在一个灰度较小,类似气泡的区域,改进Canny算子能成功检测出该区域,而传统Canny算子无法检测出该边缘信息;图7(c)中改进Canny算子检测出的边缘在连续性上优于传统Canny算子,传统Canny算子中有许多边缘不连续;图7(d)中能明显观察到改进Canny算子检测出的手指内部关节处信息更加清晰。 综上所述,本文提出的改进Canny边缘检测算子相比于Matlab自带算子能滤除更多虚假边缘,使边缘细节更加明显,相比于传统Canny算子能检测出更清晰的边缘以及更多边缘细节,并且实现了滤波及高低阈值设置的自适应性,因此在边缘检测中的适用范围更广,不需要因图像改变而重新设置参数,即能达到理想检测效果。 4 结语 本文对传统Canny边缘检测算子进行改进并应用于医学图像分割,提出通过自适应中值滤波代替高斯滤波,利用Sobel算法进行梯度计算,并进行非极大值抑制处理,最后通过Otsu计算高低阈值进行最终的边缘检测。在不同类型医学图像上对该改进算法进行实验,结果表明,改进的Canny边缘检测算子能够自适应地进行去噪与高低阈值计算,并能够消除许多虚假边缘,保留真实边缘信息,从而能较好地识别图像边缘。由于改进算法的计算复杂程度增加,因此运行过程中需要花费更多计算时间。为了减少运行时间,未来将对程序作进一步优化。 参考文献: [1]SETIAWAN B D, RUSYDI A N, PRADITYO K. Lake edge detection using canny algorithm and Otsu thresholding[J]. 2017 International Symposium on Geoinformatics (ISyG), 2017:72-76. [2] 段军,张博. 改进的Canny算子边缘检测算法研究[J]. 软件导刊,2018,17(10): 68-71. [3] 徐亮,魏锐. 基于Canny算子的图像边缘检测优化算法[J]. 科技通报,2013(7):127-131. [4] 宋召青,郑苏,李志成. 基于边缘检测与最小二乘支持向量机的人脸图像识别[J]. 海军航空工程学院学报,2010,25(5):518-522. [5] 龙顺宇,朱星. 基于ARM构建Sobel边缘检测算子的指纹识别系统实现[J]. 物联网技术,2013(12):25-27. [6] 贺超宇,郑紫微. 基于改进的Vibe和Canny边缘检测算法的运动目标检测[J]. 数据通信,2018(2):32-36. [7] NIKOLIC M,TUBA E,TUBA M. Edge detection in medical ultrasound images using adjusted Canny edge detection algorithm[C]. Telecommunications Forum. IEEE, 2017:1-4. [8] 常娜. 圖像处理中的边缘检测算法研究综述[J]. 中国科技信息,2011(4):130-131. [9] 陈一虎. 图像边缘检测方法综述[J]. 宝鸡文理学院学报:自科版,2013,33(1):16-21. [10] 李俊山,马颖,赵方舟,等. 改进的Canny图像边缘检测算法[J]. 光子学报,2011, 40(s1):50-54. [11] NES P G,BERG. Fast multi-scale edge-detection in medical ultrasound signals[M]. Elsevier North-Holland, Inc,2012. [12] HIREMATH P S,TEGNOOR J R. Automatic detection of follicles in ultrasound images of ovaries using edge based method[J]. International Journal of Computer Applications Special Issue on Recent Trends in Image Processing & Pattern Recognition,2011(3):120-125. [13] 贺萌, 易秀英, 汤林,等. 基于自适应形态学的医学图像边缘检测[J]. 计算机应用与软件, 2014(5):184-187. [14] 张素文,陈志星,苏义鑫. Canny边缘检测算法的改进及FPGA实现[J]. 红外技术,2010, 32(2):93-96. [15] 雒涛,郑喜凤,丁铁夫. 改进的自适应阈值Canny边缘检测[J]. 光电工程,2009,36(11):106-111. [16] 王文娟,韩峰,崔桐. 一种基于模糊增强的Canny边缘检测方法[J]. 内蒙古工业大学学报,2008,27(1):65-69. [17] BAO P,ZHANG L,WU X. Canny edge detection enhancement by scale multiplication[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2005, 27(9):1485-1490. [18] 何文浩,原魁,邹伟. 自适应阈值的边缘检测算法及其硬件实现[J]. 系统工程与电子技术,2009,31(1):233-237. [19] 王晓凯,李锋. 改进的自适应中值滤波[J]. 计算机工程与应用, 2010,46(3):175-176. [20] OHTSU N. A threshold selection method from gray-level histograms[J]. IEEE Transactions on Systems Man & Cybernetics,1979, 9(1):62-66. [21] 吴一全,潘喆. 2维最大类间平均离差阈值选取快速递推算法[J]. 中国图象图形学报,2009, 14(3):471-476. (责任编辑:黄 健)