沈德海,鄂 旭,張龍昌
(渤海大學 信息科學與技術學院,遼寧 錦州 121013)
在數字圖像處理的過程中,邊緣檢測是一個關鍵技術。圖像邊緣是圖像灰度發生變化的像素集合,是圖像的最基本特征。由于圖像邊緣包含了許多重要的信息,邊緣檢測結果對于圖像特征提取、圖像分割、圖像識別等后續工作起到了非常重要的作用[1]。圖像邊緣檢測主要關注定位精度、邊緣寬度、連續性及噪聲抑制性能等問題,在提取較好的圖像邊緣同時如何提高噪聲抑制性能一直以來是眾多研究者最為關注的熱點問題之一,也是一個難點。
傳統的邊緣檢測算法如 Sobel算子[2]、Roberts算子[3]及Prewitt算子[4]等算法簡單,運算速度快,但它們對噪聲較為敏感,在實際應用中難以滿足對噪聲圖像邊緣檢測精度的要求。為了提取邊緣的同時更好地抑制噪聲,人們嘗試將一些新的理論應用到邊緣檢測的過程中,提出了一些新的邊緣檢測算法,如基于小波理論的邊緣檢測算法[5-7],基于形態學的邊緣檢測算法[8-9],基于粗集理論的邊緣檢測[10]等,這些算法在提取邊緣時對較低密度噪聲的干擾起到了一定的抑制作用,但算法較復雜,實時性較差,而且隨著噪聲密度的增大,檢測效果下降較快,降噪能力急劇下降。
本文考慮到中值濾波對脈沖噪聲的良好抑制性能,結合傳統基于梯度邊緣檢測思想,提出了一種有效抑制脈沖噪聲的邊緣檢測方法。算法在抑制噪聲的同時,能夠快速地檢測出圖像邊緣。
梯度與一階導數相對應,計算圖像在某一點的梯度,就是計算該點的一階導數。圖像在邊緣處,其灰度值變化比較尖銳,當圖像噪聲較小時,梯度算子檢測效果較好。基于梯度的邊緣檢測是通過計算局部像素的一階導數極大值或二階導數過零點求解像素梯度,接近圖像邊緣處像素的灰度值變化比較大,對應的梯度值也就比較大,所以可將梯度值大于的某一閾值的點當作邊緣點,即可得到邊緣圖像。
設f(x,y)為灰度數字圖像函數,其一階微分可以用圖像二維梯度的近似值替代,圖像 f(x,y)在點坐標點(x,y)處的梯度可定義為如下矢量。

式(1)中,Gx和 Gy分別是x,y的一階微分,即表示水平方向和垂直方向的方向梯度。對于一階微分Gx和Gy可和以用一階差分代替,如式(2)、式(3)所示。 梯度的方向如所(4)示。為圖像的梯度幅值,其值可以通過式(5)計算得出。

實際應用中偏導數的計算可采用小窗口模板進行卷積運算得到,Gx和Gy各用其對應梯度方向的卷積模板,它們合在一起便構成一個梯度算子。目前應用較廣泛的基于梯度的邊緣檢測算子有 Roberts算子、Sobel算子、Prewitt算子、Log算子等。圖1和圖2分別為Sobel算子模板和Roberts算子模板,模板內的數據表示權值,它們都是采用加權平均計算方向梯度,對噪聲有一定的抑制作用。但是Sobel算子認為鄰域的像素對當前像素產生的影響不是等價的,所以距離不同的像素具有不同的權值,對算子結果產生的影響也不同。一般來說,距離越遠,產生的影響越小。

圖1 Sobel算子模板Fig.1 Sobel operator templates

圖2 Robert算子模板Fig.2 Robert operator templates
中值濾波方法是一種基于排序統計理論的非線性濾波技術,由Turky最先提出。其基本原理是將數字圖像中一點的值用該點鄰域內各點的中值替代。鄰域即濾波窗口,中值濾波一般采用含有奇數個像素的二維窗口,可以是方形、十字型等。 設矩陣 W 表示濾波窗口,W=(Wmn),(Wmn=1 或 0),(0,0)為 W 的中心點坐標,f(x,y)表示輸入數字圖像,則二維中值濾波的輸出可以用公式(6)表示。

經過驗證可知,中值濾波可以有效地保持圖像的邊緣信息,而且對脈沖噪聲的去噪效果較好。
鑒于中值濾波具有良好的抑制脈沖噪聲的能力,結合梯度邊緣檢測方法,本文提出了抑制脈沖噪聲的邊緣檢測算法。算法采用兩個十字型卷積模板計算圖像的方向梯度,對參與梯度計算的點先進行噪聲點判斷,如果是噪聲點,采用中值濾波平滑噪聲,如果不是噪聲點直接參與梯度計算,算法步驟如下。
傳統的邊緣檢測算子選擇方形窗作為卷積模板,采用各個方向卷積模板分別與圖像進行卷積運算,取其中運算結果的最大值作為模板中心點對應像素的梯度值。本文采用十字型卷積模板,如圖3所示,兩個模板分別為垂直方向模板和水平方向模板,用來檢測水平方向邊緣和垂直方向邊緣。由于中心點的方向梯度受該方向上距離該點最近的點的影響最大,這些點即中心點的上、下、左和右四點,所以本文將這些點的模板權值設為2或-2。對于中心點的左上、右上、左下和右下四點來說,它們對中心點的兩個方向梯度影響非常小,參與計算主要是為了起到一定程度的噪聲抑制作用,而且會影響到算法的速度。本文由于采用中值濾波方法,不需要它們的噪聲抑制作用,所以本文將不用它們計算梯度,進而提高了算法的計算速度。?

圖3 本文算法卷積模板Fig.3 Convolution template of this paper

圖4 各點對應的濾波窗口Fig.4 Filter window of each point
算法采用圖3卷積模板,計算對應中心點的梯度前,對梯度方向上的像素點進行判斷,如果是噪聲點,則采用3x3方形窗口進行中值濾波,即用濾波窗口各像素點的中值代替噪聲點像素值,如果不是噪聲點則直接參與梯度計算。圖4中,中心點O與方向模板的中心點對應,其上下左右四個點分別為U、D、L和R,是參與兩個模板卷積運算的點。圖中包含了該4個點為中心的各自濾波窗口,灰色部分為4個窗口的重疊部分。設f(x,y)表示數字圖像,則兩個方向梯度計算公式如式(7)、式(8)所示。

對于圖像梯度,采用式(6)來計算,得出梯度圖像G。
在圖像的前景或背景內部,像素灰度變化不明顯,所得梯度圖像中相應區域內部梯度值也較小;在圖像的前景與背景的之間的連接區域即邊緣區域,圖像灰度變化較大,該區域對應的圖像梯度值也較大,然而,在這些區域中,并非所有的梯度都對應真正的邊緣。圖像邊緣的梯度多呈現屋頂狀,一般可將圖像邊緣區域劃分為三類區間:暗區間、灰色區間和亮區間,真正的圖像邊緣多數分布在屋頂處的亮區間處,這里的邊緣具有最大的梯度值,而灰色區間的邊緣梯度值較小,暗區間梯度值最小。消除在暗區間和灰色區間的非邊緣梯度,通常采取局部域值設定法,通過式(9)去除非邊緣梯度。

提取圖像邊緣,就是選取合適閾值TH,將梯度圖像G’進行二值化處理,輸出邊緣圖像E,如式(10)所示。閾值TH不固定,不同的圖像可以根據實際情況和需要進行多次實驗選取合適的閾值。

為了驗證算法的有效性,在Matlab仿真平臺上進行實驗。實驗中采用標準灰度圖像“lena”,并分別加1%、10%和20%的脈沖噪聲,分別采用傳統Sobel算子、小波變換模極大值及本文方法進行了邊緣檢測對比實驗,結果如圖5、圖6圖7所示。

圖5 1%脈沖噪聲圖像邊緣檢測效果對比Fig.5 Detection effect of 1%noise density
圖5 為加密度為1%的脈沖噪聲圖像的邊緣檢測結果,可以看出,Sobel算子的邊緣圖像中存在大量的噪聲邊緣,圖像一些弱邊緣處不清晰,而且邊緣較粗;小波變換模極大值算法的邊緣圖像存在少數脈沖噪聲邊緣,邊緣較細,但邊緣連續性較差,丟失了一些弱邊緣信息;本文算法的邊緣圖像邊緣輪廓清晰,連續性較好,而且邊緣比較細,濾除了全部脈沖噪聲,整體圖像效果最好。

圖6 10%脈沖噪聲圖像邊緣檢測效果對比Fig.6 Detection effect of 10%noise density

圖7 20%脈沖噪聲圖像邊緣檢測效果對比Fig.7 Detection effect of 20%noise density
圖6 為加密度為10%的脈沖噪聲圖像的邊緣檢測結果,可以看出,隨著噪聲密度的增大,Sobel算子噪聲邊緣明顯增多,圖像邊緣模糊不清,噪聲抑制能急劇下降;小波變換模極大值算法的邊緣圖像幾乎看不到邊緣的輪廓,可見其抑噪能力完全喪失;而本文算法濾除了絕大部分噪聲,邊緣圖像比較清晰,受噪聲影響較小。
圖7為加密度為20%的脈沖噪聲圖像的邊緣檢測結果,很明顯,當噪聲密度的增大到20%時,Sobel算子和小波變換模極大值算法功能完全喪失,而本文算法濾除了大部分噪聲,圖像邊緣較為豐富,連續性較好,而且邊緣較細,整體效果比較清晰,顯示出了良好的抑噪能力及邊緣檢測[11-12]性能。
本文算法采用梯度計算原理,結合了中值濾波的優點,提出了一種新的脈沖噪聲圖像的邊緣檢測算法。算法采用水平垂直兩個方向的十字型卷積模板,計算量減少,提高了運算速度,對梯度的精確性和方向性的影響較小,而且使得邊緣更細。實驗證明,本文算法不僅能較好地檢測出圖像邊緣,而且在較高密度脈沖噪聲下仍然顯示除了良好的抑噪能力和良好的邊緣檢測效果,具有一定的應用價值。
[1]李杰,苗長云,武志剛,等.基于數學形態學的圖像邊緣檢測算法的研究[J].計算機科學,2012,39(6):546-548.LI Jie,MIAO Chang-yun,WU Zhi-gang,GUO Cui-juan.Algorithm for edge detection of image based on mathematical morphology[J].Computer Science,2012,39(6):546-548.
[2]鄭英娟,張有會,王志巍,等.基于八方向Sobel算子的邊緣檢測算法[J].計算機科學,2013,40(11A):354-356.ZHENG Ying-juan,ZHANG You-hui,WANG Zhi-wei,et al.Edge dectection algorithm based on the eight directions sobel operator[J].Computer Science,2013,40(11A):354-356.
[3]康牧,許慶功,王寶樹.一種Roberts自適應邊緣檢測方法[J].西安交通大學學報,2008,42(10):1240-1244.KANG Mu,XU Qing-gong,WANG Bao-shu.A roberts’adaptive edge detection method[J].Journal of Xi’an Jiaotong University,2008,42(10):1240-1244.
[4]鄒柏賢,張然,苗軍.Prewitt圖像邊緣檢測方法的改進[J].微電子學與計算機,2013,30(5):23-26.ZOU Bai-xian,ZHANG Ran,MIAO Jun.Improved prewitt method for image edge detection[J].Microelectronics&Computer,2013,30(5):23-26.
[5]田巖巖,齊國清.基于小波變換模極大值的邊緣檢測方法[J].大連海事大學學報,2007,33(1):102-106.TIANYan-yan,QIGuo-qing.Edge detection based on wavelet transform module maxima[J].Journal of Dal ian Maritime U-niversity,2007,33(1):102-106.
[6]劉晨華,馮象初.雙向擴散耦合閾值的小波邊緣檢測算法[J].小型微型計算機系統,2013,34(4):910-914.LIU Chen-hua,FENG Xiang-chu.Wavelet edge detection method of bidirectional diffusion coupled shrinkage[J].Journal of Chinese Computer Systems,2013,34(4):910-914.
[7]毛成林,萬壽紅,岳麗華,等.一種基于雙樹復小波變換的SAR圖像邊緣檢測算法[J].中國科學院大學學報,2014,31(2):238-242,248.MAO Cheng-lin,WAN Shou-hong,YUE Li-hua,et al.An edge detection algorithm of SAR images based on dual-tree complex wavelet transform[J].Journal of University of Chinese Academy of Sciences,2014,31(2):238-242,248.
[8]師文,朱學芳,朱光.基于形態學的MRI圖像自適應邊緣檢測算法術[J].儀器儀表學報,2013,34(2):408-413.SHI Wen,ZHU Xue-fang,ZHU Guang.Adaptive edge detection algorithm of MRI image based on morphology[J].Chinese Journal of Scientific Instrument,2013,34(2):408-413.
[9]李杰,彭月英,元昌安,等.基于數學形態學細化算法的圖像邊緣細化[J].計算機應用,2012,32(2):514-516,520.LI Jie,PENG Yue-ying,YUAN Chang-an,et al.Edge thinning based on mathematical morphology thinning algorithm[J].Journal of Computer Applications,2012,32(2):514-516,520.
[10]劉勍,魏弘博,應雋,等.一種基于粗糙集的脈沖噪聲圖像邊緣檢測算法[J].自動化與儀器儀表,2011(6):123-125.LIU Qing,WEI Hong-bo,YINGJuan,et al.A edge detection algorithm of pulse noise image based on rough sets[J].Automation&Instrumentation,2011(6):123-125.
[11]夏凱.基于改進的SUSAN算法的火焰圖像邊緣檢測研究[J].現代電子技術,2015(5):58-61.XIA Kai.Research on flame image edge detection base on improved SUSAN algorithm[J].Modern Electronics Technique,2015(5):58-61.
[12]楊昊.CUDA下局部閾值和二值函數的邊緣檢測[J].電子科技,2014(3):52-54.YANG Hao.Local threshold and boolean function edge detection algorithm using CUDA[J].Electronic Science and Technology,2014(3):52-54.