慕 陽
(南昌理工學(xué)院,江西 南昌 330044)
計(jì)算機(jī)科學(xué)和圖像處理技術(shù)在快速發(fā)展中,尤其最近幾年,隨著計(jì)算機(jī)算力的提高,眾多圖像處理相關(guān)的算法能夠不斷運(yùn)用到實(shí)際中,圖像在醫(yī)學(xué)成像、模式識(shí)別等各個(gè)領(lǐng)域取得了相當(dāng)廣泛的應(yīng)用,隨著最近幾年神經(jīng)網(wǎng)絡(luò)的興起,圖像技術(shù)的應(yīng)用更是百花齊放、爭(zhēng)奇斗艷。然而,圖像數(shù)據(jù)在各個(gè)階段都有可能發(fā)生改變,改變圖像原有的像素?cái)?shù)據(jù),這樣會(huì)使得圖像喪失原有的視覺效果,帶來更多的干擾,造成不好的視覺感受。尤其是圖像的一些細(xì)節(jié)信息,比如物體的邊緣紋理等高頻信息。根據(jù)圖像產(chǎn)生噪聲的原因,可以將圖像的噪聲信息劃分為不同的種類。針對(duì)不同種類的噪聲,需要采取不同的降噪方案,采取最適合的方案就夠取得較好的處理效果??傊?,需要對(duì)圖片進(jìn)行一系列的操作從而降低圖像中的干擾信息,以便能夠?qū)⒔?jīng)過降噪處理的圖片作為其他步驟的原始圖片,以實(shí)現(xiàn)更好的數(shù)據(jù)分析、處理和利用。圖像降噪要考慮的問題就是如何在盡可能減少圖像中噪聲對(duì)圖像造成的干擾的同時(shí),盡可能保留圖像的原始特征,如紋理信息、邊緣細(xì)節(jié)信息、形狀信息以及拓?fù)浣Y(jié)構(gòu)等。
均值濾波是最常用和最基礎(chǔ)的先行濾波算法,它的算法思想很簡(jiǎn)潔,但可以從簡(jiǎn)潔中擴(kuò)展出更多更復(fù)雜的改進(jìn)算法,用來針對(duì)不同類型的噪聲,獲得更好的去噪效果。均值濾波的大致思想如下:針對(duì)某一特定位置像素,規(guī)定一個(gè)半徑范圍,對(duì)范圍內(nèi)的像素計(jì)算平均值后得到一個(gè)數(shù)值,用來替換當(dāng)前的中心像素值,對(duì)整體圖像的每個(gè)像素值都進(jìn)行上述計(jì)算[1]。一般基于圖片數(shù)據(jù)的局部性原理考慮,經(jīng)常采取比較小的半徑來盡量控制數(shù)據(jù)間的相似性,增加使用平均值替換中心元素的合理性,又為了計(jì)算方便,常選擇半徑為1 或2 的方形范圍。
傳統(tǒng)的中值濾波由最簡(jiǎn)單的均值濾波算法改進(jìn)而來。兩種算法的基本思想和實(shí)現(xiàn)步驟大致相同[2]。相較于均值濾波而言,中值濾波的改進(jìn)在于計(jì)算的并不是半徑范圍內(nèi)的均值,而是使用范圍內(nèi)的中值作為替換中心像素的值,取到的像素中值一定屬于原本的圖像,相比于均值濾波有更大的合理性。用數(shù)學(xué)語言表示如下:用f(x,y),g(x,y)分別表示原始圖像和處理后的圖像,W為二維模板,即選取的范圍,與上述均值濾波中介紹的類似,通常采用半徑為1 或2 的方形范圍,即3×3 或5×5 的方形范圍,最終的輸出結(jié)果就是g(x,y)=med{f(x-k,y-l)},k,l∈W。其中W的形狀還可以選作線狀、圓形或其他各種形狀,但處理效果可能不佳,一般還是使用方形,還可以方便計(jì)算,簡(jiǎn)化算法。簡(jiǎn)單的中值濾波仍然存在許多缺點(diǎn),在噪聲密度很大的情況下(基于日常經(jīng)驗(yàn),噪聲密度很大的標(biāo)準(zhǔn)大概是噪聲出現(xiàn)的概率大于20%),在取到的范圍內(nèi)噪聲數(shù)值過多,通過計(jì)算范圍得到的中值也依然有很大概率是噪點(diǎn)像素值,這時(shí)處理的效果就會(huì)大打折扣[3]。此時(shí)可以在中值濾波的基礎(chǔ)上進(jìn)行進(jìn)一步改進(jìn)。
對(duì)圖像進(jìn)行邊緣檢測(cè)研究的過程中,有研究人員提出一個(gè)優(yōu)秀的圖像邊緣提取算法應(yīng)該滿足兩個(gè)標(biāo)準(zhǔn)。一是能夠有效地抑制圖像噪聲,因?yàn)閳D像噪聲和圖像細(xì)節(jié)、紋理、圖像邊緣信息在圖像信息中都屬于高頻信息,如果直接單純地對(duì)圖像的高頻信息進(jìn)行提取,勢(shì)必會(huì)將噪聲也當(dāng)作圖像的邊緣信息,造成不太理想的邊緣檢測(cè)效果[4]。因此,在對(duì)圖像進(jìn)行基于頻率域的高頻信息提取操作之前,應(yīng)該先對(duì)圖像進(jìn)行一定程度的降噪。二是圖像邊緣提取算法應(yīng)該盡可能精確地確定邊緣的位置,畢竟算法的最終目的是提取圖像邊緣,一定要使提取出的邊緣數(shù)據(jù)與原圖像數(shù)據(jù)的偏差盡可能地小。依據(jù)上述兩個(gè)基本標(biāo)準(zhǔn),得到的最優(yōu)化逼近算子就是Canny 邊緣檢測(cè)算法。還有很多與之類似的其他算法步驟也與之類似,都是先對(duì)圖像采用某些降噪手段,對(duì)圖像進(jìn)行平滑處理以減少圖像噪聲信息,再對(duì)圖像進(jìn)行求導(dǎo)數(shù)。Canny 算法的具體步驟如下:首先,用高斯濾波器平滑圖像,其次,用一階偏導(dǎo)的有限差分來計(jì)算梯度的幅值進(jìn)行非極大值抑制,最后,用雙閾值算法檢測(cè)和連接邊緣[5]。
整體嵌套邊緣檢測(cè)(Holistically-Nested Edge Detection,HED)網(wǎng)絡(luò)模型是在VGG16 網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上設(shè)計(jì)而來[6]。HED 網(wǎng)絡(luò)是一種多尺度多融合的網(wǎng)絡(luò)結(jié)構(gòu)。多尺度的直觀解釋就是對(duì)圖像在多個(gè)不同維度進(jìn)行處理,每一個(gè)維度都可以得到一副處理后的圖像,直觀表現(xiàn)為把VGG16 網(wǎng)絡(luò)的每一組的最后一個(gè)卷積層的輸出取出來作為一個(gè)階段處理結(jié)果供最后的圖像使用[7]。每一層都可以看作圖像經(jīng)過一定處理后的處理結(jié)果。不過因?yàn)槊恳唤M得到的圖像的長寬尺寸不同,所以還需對(duì)每一部分的輸出圖像進(jìn)行進(jìn)一步處理,這里采用轉(zhuǎn)置卷積/反卷積對(duì)每一組得到的圖像再做一遍處理。通俗地說就是把神經(jīng)網(wǎng)絡(luò)在每一組的輸出圖像做尺寸放大處理,讓每一組輸出圖片擴(kuò)大為原來的2n-1 倍,即第一部分不變,第二部分輸出圖像擴(kuò)大為原來的2 倍,第三部分?jǐn)U大為原來的4 倍,以此類推。這樣在每個(gè)尺度(VGG16 的每一組就是一個(gè)尺度)上得到的圖像都是相同的大小,方便后續(xù)進(jìn)一步處理。
本文中改進(jìn)的自適應(yīng)中值濾波算法與改進(jìn)前的自適應(yīng)中值濾波算法類似,在思想上大致分為兩個(gè)階段。第一個(gè)階段是先對(duì)圖片進(jìn)行噪聲檢測(cè),確定濾波范圍中心點(diǎn)的像素是否可以看作圖像噪聲。第二階段,根據(jù)第一階段的判斷結(jié)論對(duì)中心點(diǎn)像素進(jìn)行進(jìn)一步的處理。如果判斷結(jié)果為濾波中心像素屬于原始圖像像素,即中心像素是圖像的原始像素?cái)?shù)據(jù),那么就可以不用替代當(dāng)前的中心像素。如果中心點(diǎn)是圖像噪聲,還要看濾波范圍內(nèi)的中值是否還是噪聲,如果不是,可以直接使用中值進(jìn)行替換,如果還是可以看作噪聲,可以按照自適應(yīng)中值濾波算法,擴(kuò)大濾波半徑,然后繼續(xù)以上步驟,觀察范圍內(nèi)中值是否屬于圖像噪聲。但是若圖像噪聲分布較多,一直擴(kuò)大濾波半徑再重復(fù)上述算法依然不能用中值替代原始像素,這時(shí)可以使用除了噪聲點(diǎn)外的其他像素的均值作為替代。當(dāng)濾波半徑范圍擴(kuò)大一定程度之后中值像素依然是噪聲,說明圖像的噪聲含量巨大,就不再尋找濾波范圍內(nèi)的中值,轉(zhuǎn)而計(jì)算濾波范圍內(nèi)除了噪聲像素點(diǎn)之外的其他像素的均值,用它來替代中心像素。改進(jìn)的自適應(yīng)中值濾波算法的具體步驟如下。
Wij為正被處理的、中心在(i,j)處的濾波窗口,W0為默認(rèn)的初始窗口大小,Wmax為允許的最大窗口大小。fij為(i,j)處的灰度值,fmin為Wij中的極小灰度值,fmax為Wij中的極大灰度值,fmed為Wij中的灰度中值。
步驟1:如果fmin<fij<fmax,輸出fij,否則轉(zhuǎn)到步驟2。
步驟2:如果fmin<fmed<fmax,輸出fmed,否則轉(zhuǎn)到步驟3。
步驟3:如果Wij+2 ≤Wmax,增大窗口,Wij=Wij+2,轉(zhuǎn)到步驟1,否則轉(zhuǎn)到步驟4。
步驟4:輸出最大窗口中除了所有到極小灰度像素和極大灰度像素之外的灰度均值favg(k為極值灰度像素的數(shù)量)fmin<f(x,y) 相較于標(biāo)準(zhǔn)的自適應(yīng)中值濾波算法,該算法克服了兩個(gè)違背數(shù)據(jù)局部性原理的缺點(diǎn)。 第一,自適應(yīng)中值濾波算法是先判斷中值像素再判斷中心像素是否為噪聲,若中值像素是噪聲,會(huì)直接擴(kuò)大濾波范圍,就會(huì)出現(xiàn)當(dāng)中心像素屬于原始圖像數(shù)據(jù)而中值像素是噪聲情況下會(huì)直接擴(kuò)大濾波范圍,之后再用更大濾波范圍內(nèi)的中值來替代原本合理的中心像素,顯然這種做法違背了數(shù)據(jù)相關(guān)性,濾波范圍越大,數(shù)據(jù)間的相關(guān)性就越低,這時(shí)取得的中值像素一定不如非噪聲的原始中心像素合理[8]。 第二,如果圖像的噪聲比例非常多,濾波范圍內(nèi)找到的中值可能一直都是噪聲,這時(shí)就需要不斷擴(kuò)大濾波范圍。濾波范圍越大,像素間的相關(guān)性越低,直接替代中心像素的合理性越低,會(huì)造成圖像的細(xì)節(jié)邊緣信息被模糊[9]。況且,在噪聲含量很多的情況下,可能一直擴(kuò)大到規(guī)定的最大濾波半徑發(fā)現(xiàn)中值依然是噪聲,這時(shí)直接使用中值來替代中心像素顯然不合理。而改進(jìn)算法可以在濾波范圍擴(kuò)大一次之后若沒有找到合理的可替換中值像素,就直接用非噪聲像素均值來替換,盡可能地保持了像素?cái)?shù)據(jù)間的相關(guān)性,在非極端情況下并不會(huì)將噪聲作為替換中心像素的數(shù)據(jù),算法有了更多的合理性。 Canny 算法過程中需要確定幾個(gè)參數(shù),人為地確定不同的參數(shù)使之能夠盡可能獲得逼近理想效果的處理結(jié)果[10]。而且在實(shí)際使用過程中,經(jīng)常會(huì)在原有算法基礎(chǔ)上做進(jìn)一步的基于實(shí)際使用場(chǎng)景的優(yōu)化,這時(shí)勢(shì)必會(huì)引入更多的參數(shù),參數(shù)的增多將導(dǎo)致難以確定固定的數(shù)值使算法達(dá)到較好的效果,只能通過多次嘗試不同參數(shù)值觀察處理效果,最后選擇一個(gè)較好結(jié)果。但隨著參數(shù)個(gè)數(shù)的增多,各種參數(shù)間的組合種類越多,使得人為工作量大大增加。這些參數(shù)的手動(dòng)設(shè)置同樣會(huì)大大降低算法的健壯性,很難在不同的場(chǎng)景下使用相同的參數(shù)值取得較好的效果,邊緣檢測(cè)效果會(huì)大打折扣。 對(duì)圖像的邊緣進(jìn)行數(shù)學(xué)建模難度很大,代碼實(shí)現(xiàn)難度較大,且得到的算法的健壯性較低,取得的檢測(cè)效果不夠理想??煽紤]采用基于神經(jīng)網(wǎng)絡(luò)的邊緣提取技術(shù),采用神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),包括卷積層、池化層、全連接層及softmax 層,下面依次介紹每個(gè)結(jié)構(gòu)的作用和原理。 池化層中可以采用多種不同但類似的方法,比如最大池化、均值池化、中值池化等[11]。采取不同的算法,最后的輸出結(jié)果也不盡相同。每個(gè)算法的側(cè)重點(diǎn)和想要提取的圖像特征不同,一般采用最大池化的較多。池化層在對(duì)圖像數(shù)據(jù)進(jìn)行特征提取的同時(shí),也對(duì)圖像數(shù)據(jù)進(jìn)行了壓縮,只保留圖像的關(guān)鍵特征信息,舍去一些可能相比較沒那么重要的特征,通過多層池化可以大大壓縮圖像數(shù)據(jù),使得每個(gè)卷積層的學(xué)習(xí)成本大大降低,提高整體算法的運(yùn)行效率。保留圖像的主要特征,還可以防止預(yù)測(cè)結(jié)果的過擬合,使得整個(gè)算法的主要精力放在相對(duì)比較重要的特征上面。而且,使用池化層而不是卷積來降低圖像尺寸的好處是池化層不需要保留參數(shù),直接使用某個(gè)固定函數(shù)對(duì)圖像進(jìn)行像素運(yùn)算,可以大大減少網(wǎng)絡(luò)的參數(shù)量,大大降低網(wǎng)絡(luò)的訓(xùn)練成本。 全連接層的核心操作就是矩陣向量乘積y=Wx,經(jīng)過W的處理,實(shí)際上就是將一個(gè)特征空間映射到另一個(gè)特征空間的過程。而W就是這個(gè)變化過程的中間步驟,起到的就是空間映射的作用。從另一種角度也可以說目標(biāo)向量y是原始向量x的關(guān)于W加權(quán)和。在日常的使用過程中,全連接層一般放在網(wǎng)絡(luò)的最后幾層,用來對(duì)前面經(jīng)過處理后的特征做進(jìn)一步的整合,整合處理后特征之間的關(guān)聯(lián)性,盡可能地發(fā)現(xiàn)特征間的規(guī)律,對(duì)特征加權(quán)計(jì)算之后輸出作為輸出圖像。與卷積層相比,卷積層相當(dāng)于對(duì)圖像特征做一些弱化和抽離,將圖像特征打散,而全連接層是將打散并提取學(xué)習(xí)強(qiáng)化后的特征做一個(gè)整合,是一種特征強(qiáng)化的方法。強(qiáng)化整合后的特征集合可以作為一個(gè)圖片的特征表達(dá)[12]。 本文主要討論了針對(duì)椒鹽噪聲的圖像降噪算法的設(shè)計(jì),討論了本算法與傳統(tǒng)的中值濾波算法的區(qū)別和優(yōu)勢(shì),總結(jié)了算法在傳統(tǒng)算法上做出的改進(jìn),基于神經(jīng)網(wǎng)絡(luò)的圖像邊緣提取算法的網(wǎng)絡(luò)結(jié)構(gòu)和實(shí)現(xiàn)細(xì)節(jié)及原理。使用改進(jìn)的自適應(yīng)中值濾波算法和基于神經(jīng)網(wǎng)絡(luò)提取邊緣算法結(jié)合的方式相較于傳統(tǒng)的自適應(yīng)中值濾波有明顯的改進(jìn),在一些指標(biāo)上和直觀的視覺體驗(yàn)上都有明顯的優(yōu)勢(shì)。改進(jìn)的自適應(yīng)中值濾波算法與傳統(tǒng)的自適應(yīng)中值濾波算法相比效率有了更大的提升,最后的降噪結(jié)果也有明顯的提升,遵循了數(shù)據(jù)的局部性原則,盡可能地保留了圖像的邊緣細(xì)節(jié)信息。所述降噪算法的優(yōu)化對(duì)圖像數(shù)據(jù)的處理與優(yōu)化起到了促進(jìn)性的作用。3.2 基于神經(jīng)網(wǎng)絡(luò)的圖像邊緣提取算法設(shè)計(jì)
4 結(jié)語