徐天芝,楊青峰
(1.運(yùn)城學(xué)院數(shù)學(xué)與信息技術(shù)學(xué)院,山西 運(yùn)城 044000;2.臨汾市堯都區(qū)大陽鎮(zhèn)大陽聯(lián)合學(xué)校)
圖像邊緣是圖像最基本的特征之一,邊緣點(diǎn)是指圖像中周圍局部灰度導(dǎo)數(shù)極大的點(diǎn)。邊緣檢測是計(jì)算機(jī)數(shù)字圖像處理中的基本問題,其目的是統(tǒng)計(jì)出局部灰度變化明顯的點(diǎn),因其具有可操作性強(qiáng),易于實(shí)現(xiàn)等特點(diǎn),一階和二階微分算子如Roberts 算子、Prewitts 算子、Sobel 算子、Laplace 算子、Log 算子等被廣泛應(yīng)用于各個(gè)行業(yè),但這些算子存在抗噪性差,邊緣定位精度不高等缺點(diǎn)。相比于經(jīng)典算子,在抗噪性能和準(zhǔn)確定位之間經(jīng)過最佳優(yōu)化的Canny邊緣檢測算子,具有良好的信噪比、檢測精度以及單邊緣響應(yīng),并成為其他邊緣檢測算子評價(jià)標(biāo)準(zhǔn)。但在利用Canny 算子邊緣檢測時(shí),采用高斯函數(shù)對圖像去噪時(shí)會對圖像邊緣的準(zhǔn)確定位產(chǎn)生一定的影響。因此,近年來針對Canny 算子的去噪問題,國內(nèi)外學(xué)者做了大量的工作,牛發(fā)發(fā)等人在Canny 算子邊緣檢測之前,利用魯棒主成分分析法對圖像進(jìn)行預(yù)處理;王能等人利用數(shù)學(xué)形態(tài)學(xué)設(shè)計(jì)了一種自適應(yīng)平滑濾波器來達(dá)到去噪的目的;李俊山等人采用小波變換替代Canny 算子中高斯濾波器進(jìn)行去噪;胡志斌等人利用新構(gòu)造的二進(jìn)小波濾波器對圖像進(jìn)行邊緣檢測;李長有等人用混合濾波器代替Canny 算子中的高斯濾波器;劉鵬宇等人利用自適應(yīng)的中值濾波器,對圖像進(jìn)行邊緣檢測。這些改進(jìn)方法在一定程度上都避免了噪聲,提高了算法的性能,對于大多數(shù)圖像均適用,但是對于添加了椒鹽噪聲的圖像來說效果并不是很理想。
本文針對椒鹽噪聲的特點(diǎn),對傳統(tǒng)Canny 算法進(jìn)行改進(jìn):①根據(jù)被椒鹽噪聲污染像素和樣本像素之間的相關(guān)性,對被污染像素利用反距離加權(quán)插值濾波器進(jìn)行恢復(fù)。②在進(jìn)行非極大值抑制時(shí),對非噪聲點(diǎn)進(jìn)行優(yōu)先選擇。實(shí)驗(yàn)證明,本文算法能夠有效避免椒鹽噪聲的干擾,即使噪聲強(qiáng)度達(dá)到0.8 時(shí),仍然有較強(qiáng)的穩(wěn)定性,并保持了較高的檢測精度。
從傳統(tǒng)Canny邊緣檢測的基本思想是先選擇一定的Gauss 濾波器對圖像進(jìn)行平滑濾波,然后用非極值抑制技術(shù)對圖像進(jìn)行處理得到最終的邊緣圖像。其步驟如下:
⑴用高斯濾波器平滑圖像
采用一個(gè)省略系數(shù)的高斯函數(shù)(,):
其中,(,)是圖像數(shù)據(jù)。
⑵用一階偏導(dǎo)來計(jì)算梯度的幅度值和方向
利用一階差分卷積模板:
得到幅度值和方向分別為:
⑶對邊緣進(jìn)行準(zhǔn)確定位,得到細(xì)化的邊緣保留全局梯度中的局部最大點(diǎn),抑制非局部最大點(diǎn)。
⑷用雙閾值算法檢測和連接邊緣
使用兩個(gè)閾值和(<),從而可以得到關(guān)于的低閾值像素集合(,)和關(guān)于的高閾值像素集合(,)。因此(,)均為真實(shí)邊緣點(diǎn),但并不連續(xù),(,)連續(xù),但含有大量的為邊緣點(diǎn)。雙閾值的目的就是把(,)中不連續(xù)的端點(diǎn)在(,)的8 鄰域中不斷地搜集像素,從而可以將其連接起來。
在對圖像進(jìn)行邊緣檢測時(shí),首要任務(wù)是去噪。傳統(tǒng)Canny 算法是用高斯濾波器去除噪聲,而高斯濾波是一種線性濾波,其具體步驟為:用一個(gè)用戶指定的模板去掃描圖像中的每個(gè)像素,再用模板確定的鄰域內(nèi)像素的加權(quán)灰度值去替代模板中心像素點(diǎn)的值。該方法對線性噪聲具有很好的抑制能力,但對于非線性噪聲,如對椒鹽噪聲的抑制能力就很差。因此,本文針對Canny算法邊緣檢測時(shí)對椒鹽噪聲較為敏感的問題,利用反距離插值濾波器對傳統(tǒng)Canny 算法的高斯濾波器進(jìn)行替換,接著在非極大值抑制時(shí)采用非噪聲點(diǎn)優(yōu)先選擇的原則,使改進(jìn)的算法在邊緣檢測時(shí)對椒鹽噪聲具有很強(qiáng)的抗性。
對于椒鹽噪聲,通常假設(shè)理想圖像的灰度水平在和(<)之間變化,并且兩者均是可達(dá)的,例如,在8 比特的情況下,如=0 且=2-1=255。因此,0 代表亮色“黑椒”,而255 對應(yīng)亮色“鹽”。除了圖像域和噪聲域,椒鹽噪聲的產(chǎn)生也依賴于一個(gè)二元開關(guān)的隨機(jī)場,在每個(gè)像素點(diǎn)(,),=0或1,即
其中,為被污染圖像。除此之外,噪聲場也是二元的,當(dāng)=255 時(shí),對應(yīng)“鹽”;當(dāng)=0 時(shí),對應(yīng)“黑椒”。假設(shè),,是相互獨(dú)立的隨機(jī)場,并且和都是由在整個(gè)像素域上的獨(dú)立同分布組成,則噪聲的產(chǎn)生機(jī)制完全被如下兩個(gè)獨(dú)立于像素(,)的概率而確定:
其中,為椒鹽噪聲的空間密度,而揭示了椒鹽混合中“鹽”的百分比。
假設(shè)是一個(gè)觀察到的被污染的圖像樣本,則定義待修復(fù)區(qū)域
K包含了所有被“黑椒”和“鹽”替換掉的像素,以及少許誤檢的像素。因此,圖像的去噪問題將被轉(zhuǎn)換成誤檢像素的剔除和圖像插值問題。
3.1.1 誤檢像素的剔除
若中某一像素窗口鄰域整體灰度較高或較低,且其窗口內(nèi)像素(,) ?的灰度均值與該像素的差值不超過時(shí)
為對應(yīng)窗口內(nèi)的像素個(gè)數(shù)。因人眼視覺的極限分辨力無法區(qū)分這一差別,所以區(qū)分這一點(diǎn)是噪聲點(diǎn)還是非噪聲點(diǎn)的意義不大,因此將該點(diǎn)視為非噪聲點(diǎn)從中剔除。相反,若窗口內(nèi)灰度均值與該像素的差值超過,則認(rèn)為該點(diǎn)是被“黑椒”和“鹽”替換掉的像素,則不需要進(jìn)行剔除處理。
3.1.2 反距離加權(quán)插值
反距離加權(quán)插值法是基于鄰域相似性的原理,即認(rèn)為兩個(gè)像素的距離越小,它們的相似性就越高,關(guān)聯(lián)度就越高,相反若兩個(gè)像素的距離越大,則相似性和關(guān)聯(lián)度也就越低。待插值點(diǎn)的修復(fù)值是以樣本像素點(diǎn)灰度的關(guān)聯(lián)度加權(quán)求和得到的,離待插值點(diǎn)越近的樣本,像素點(diǎn)灰度被賦予的權(quán)重就越大,相反則越小。公式表示如下:
其中,為剔除誤檢像素后的集合;(,)為像素(,) ∈的修復(fù)值;樣本像素點(diǎn)(,) ?但(,) ∈,為像素點(diǎn)(,)所在窗口內(nèi)所有像素的集合;為其窗口鄰域內(nèi)的樣本像素點(diǎn)個(gè)數(shù);λ為對應(yīng)樣本像素點(diǎn)的權(quán)重,其定義為:
3.1.3 噪聲去除的步驟
⑴對圖像進(jìn)行逐點(diǎn)掃描,將灰度值為255 或0 的像素標(biāo)記為待修復(fù)區(qū)域K。
⑵采用式⑽的方法將誤檢的非噪聲點(diǎn)從中剔除,得到修復(fù)區(qū)域,這里的窗口為像素(,)的3× 3鄰域。
⑶對修復(fù)區(qū)域中的每一個(gè)像素按照式⑾的方法進(jìn)行修復(fù)。在該步驟中為了縮小恢復(fù)值和最真實(shí)值之間的差距,盡可能用最小的窗口完成噪聲像素點(diǎn)的修復(fù)。因此在窗口的選擇上采用窗口擴(kuò)展策略,即先利用最小的窗口實(shí)現(xiàn)對噪聲點(diǎn)的修復(fù),但是至少要保證每個(gè)窗口內(nèi)至少存在3 個(gè)像素不屬于,否則自動(dòng)選擇大一號的窗口。
對于理想圖像經(jīng)一階偏導(dǎo)到梯度,在傳統(tǒng)Canny 算法非極大值抑制時(shí),若像素(,)的梯度(,)小于沿梯度線方向上的兩個(gè)相鄰像素點(diǎn)的任一像素的梯度值,則認(rèn)為該像素點(diǎn)為非邊緣點(diǎn),將其(,)設(shè)置為0,否則將其視為邊緣候選點(diǎn)。上述方法對于一般圖像較為適用,但對于椒鹽噪聲污染的圖像則很容易將被噪聲污染的像素視為邊緣點(diǎn),因?yàn)樵肼朁c(diǎn)經(jīng)過反距離加權(quán)插值法得到修復(fù),其梯度值受窗口內(nèi)遠(yuǎn)距離樣本像素點(diǎn)的影響,修復(fù)值常常偏大,若沿梯度線上面的兩個(gè)相鄰像素點(diǎn)中有真實(shí)的邊緣點(diǎn),將被設(shè)置為0,從而將噪聲點(diǎn)視為邊緣點(diǎn)。為了避免這種情況,在非極大值抑制時(shí),對于非噪聲點(diǎn)進(jìn)行優(yōu)先選擇,即①(,)為噪聲點(diǎn)時(shí),若沿梯度線方向上的兩個(gè)像素點(diǎn)存在非噪聲點(diǎn),且其梯度值(,)比該非噪聲點(diǎn)的梯度值不超過,則將其置為0,否則將視為邊緣候選點(diǎn);②(,)為非噪聲點(diǎn)時(shí),若梯度線上面的兩個(gè)像素存在噪聲點(diǎn),且其梯度值(,)比該噪聲點(diǎn)小于,則將(,)設(shè)置為0,否則將視為邊緣候選點(diǎn)。
為了驗(yàn)證本文算法的有效性,選擇像素為256×256 的不同類別并添加不同強(qiáng)度椒鹽噪聲的圖片進(jìn)行仿真分析。程序運(yùn)行的系統(tǒng)環(huán)境為MATLAB 2016a和Windows10,用于實(shí)驗(yàn)的計(jì)算機(jī)基本配置為內(nèi)存為8G,2.6GHz CPU。
在同一場景同一椒鹽噪聲下,分別利用傳統(tǒng)Canny算法、文獻(xiàn)[11]的濾波器、處理椒鹽噪聲效果較好的中值濾波器以及本文算法對圖像進(jìn)行去噪預(yù)處理,比較分析各方法在椒鹽噪聲=0.4 時(shí)的處理效果,如圖1 所示。對于添加了較高密度的椒鹽噪聲圖像,傳統(tǒng)Canny 算法根本無法去除噪聲的干擾,圖中各物體紋理完全混淆;文獻(xiàn)[11]利用小波對圖像的椒鹽噪聲進(jìn)行去除,很顯然效果也并不是很好;文獻(xiàn)[14]利用自適應(yīng)的中值濾波在一定程度上去除了椒鹽噪聲,但是檢測結(jié)果中仍然有很多因噪聲引起的環(huán)狀顆粒,且對圖片中的桌布以及書本等的紋理表達(dá)的并不是很清晰;而本文算法能夠?qū)σr衣、書本等紋理信息清晰的表達(dá),在定位精度上更接近于無噪聲下的傳統(tǒng)Canny算法。
圖1 不同算法在p=0.4 時(shí)的邊緣檢測效果圖
對不同算法邊緣檢測的結(jié)果引入漏檢率(μ)和誤檢率()兩種評價(jià)標(biāo)準(zhǔn)進(jìn)行定量評價(jià),其定義分別為:
其中,是理想的邊緣像素集合,本文將無噪聲狀態(tài)下傳統(tǒng)Canny算子檢測得到的邊緣像素集合視為;是檢測到的邊緣像素集合;()代表集合中的元素個(gè)數(shù)??梢钥闯?,μ是漏檢的邊緣像素?cái)?shù)目與真實(shí)像素?cái)?shù)目的比值,μ是檢測到的錯(cuò)誤邊緣像素?cái)?shù)目與檢測到的總邊緣像素?cái)?shù)目的比值。因此,μ和μ值越小,說明邊緣檢測的結(jié)果精度越優(yōu)。
在噪聲強(qiáng)度由弱變強(qiáng)的變化過程中,各算法的漏檢率和誤檢率分別如圖2 和圖3 所示,在噪聲密度較低時(shí),文獻(xiàn)[14]的算法具有一定的抗噪聲能力,但是隨著噪聲密度的增強(qiáng),其漏檢率(μ)和誤檢率()均不斷地上升,抗噪能力明顯下降;傳統(tǒng)的Canny算法和文獻(xiàn)[11]所述算法,即使在噪聲密度較低的情況下,去噪能力也不是很明顯,總體效果較差;而本文算法的漏檢率和誤檢率在任何噪聲密度下均小于其他算法,且即使噪聲密度達(dá)到0.8 時(shí),其漏檢率和誤檢率仍然保持在較低的水平。
圖2 不同算法去噪后邊緣檢測漏檢率(μFRR)比較
圖3 不同算法去噪后邊緣檢測誤檢率(μFAR)比較
為了驗(yàn)證本文算法能夠避免不同場景不同強(qiáng)度椒鹽噪聲的干擾,對Peppers,Dollar,Woman,Junk 圖像分別添加=0.5、=0.8 的椒鹽噪聲。圖4 中,A1,B1,C1,D1 為原圖,A2,B2,C2,D2 分別為給不同原圖添加了=0.5 椒鹽噪聲的邊緣檢測圖像,A3,B3,C3,D3 分別為給不同原圖添加了=0.8 椒鹽噪聲的邊緣檢測圖像。從圖4 可以看出,無論是在不同場景同一強(qiáng)度椒鹽噪聲還是在同一場景不同強(qiáng)度椒鹽噪聲的干擾下,本文算法的檢測結(jié)果中都出現(xiàn)了相應(yīng)的偽邊緣,但原始圖像仍有微小的灰度變化,如Dollar圖像中人物發(fā)型曲線,Woman 圖像中人物的衣服紋理等。因此,針對不同場景不同椒鹽噪聲圖像,本文算法均可以達(dá)到較高的檢測精度。
圖4 加入p=0.5(第2列)和p=0.8(第三列)椒鹽噪聲本文Canny邊緣檢測算法比較
本文針對傳統(tǒng)Canny 算子對椒鹽噪聲抗性的不足,提出了一種針對椒鹽噪聲的Canny邊緣檢測方法。該方法根據(jù)像素與鄰域像素之間的相關(guān)性,對被椒鹽噪聲污染的像素利用反距離插值法進(jìn)行恢復(fù);在進(jìn)行非極大值抑制時(shí),對非噪聲點(diǎn)進(jìn)行優(yōu)先選擇。大量的實(shí)驗(yàn)表明,與傳統(tǒng)的Canny算子相比,本文方法能夠避免椒鹽噪聲的干擾,是一種有效的針對椒鹽噪聲的Canny 邊緣檢測方法。接下來如何提高Canny 算子對線性噪聲如Gauss噪聲的抗性還需深入研究。