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