黃成強,金 星
(遵義師范學(xué)院 物理與電子科學(xué)學(xué)院,貴州 遵義 563006)
隨著圖像處理的應(yīng)用滲透到各個領(lǐng)域,對輸入圖像的質(zhì)量要求越來越苛刻。圖像去霧[1]中輸入圖像的噪聲將會降低去霧效果,語義分割[2]中圖像的噪聲會造成分割邊界失真,車牌識別[3]和人臉識別[4]中噪聲的存在會降低識別精度。然而,圖像在傳感器采集、存儲和傳輸過程中不可避免地受到椒鹽噪聲的污染,目前實現(xiàn)高性能椒鹽去噪仍具挑戰(zhàn)性。業(yè)界早期主要基于對像素灰階的判斷和分析實現(xiàn)去噪,研究了中值濾波[5]、改善的中值濾波[6]、概率濾波[7]、權(quán)重濾波[8]和重復(fù)濾波[9]等方法,這些研究推動了椒鹽去噪方法的發(fā)展。但是,由于在噪點標(biāo)記步驟并未精確區(qū)分噪聲像素和正常像素、在噪聲去除步驟沒有探索到高性能去噪機制等多方面的原因,這些方法尚未達(dá)到理想的去噪效果。近年來,隨著計算機性能的大幅提升,尤其是圖形處理器(GPU)在數(shù)據(jù)處理速度和吞吐量方面的突破性進展,以及互聯(lián)網(wǎng)給圖像大數(shù)據(jù)的獲取提供的便利,基于圖像大數(shù)據(jù)和人工神經(jīng)網(wǎng)絡(luò)的椒鹽去噪方法成為研究的熱點。最初,人工神經(jīng)網(wǎng)絡(luò)的研究是為了實現(xiàn)圖像分類和識別,諸如LeNet5[10]、AlexNet[11]、Vgg-Net[12]、GoogLeNet[13]和ResNet[14]等網(wǎng)絡(luò)在分類精度方面不斷取得進步。由于圖像處理的目的是對輸入圖像進行增強或復(fù)原,需要輸出一張圖像,而非如上述網(wǎng)絡(luò)輸出一個分類結(jié)果,因此,不能將這些網(wǎng)絡(luò)直接套用于圖像去噪。2016 年,文獻[15]提出將卷積神經(jīng)網(wǎng)絡(luò)(CNN)應(yīng)用到高斯噪聲去除中,通過在正常圖像中添加隨機密度的噪聲并成對地提取由正常圖像塊和噪聲圖像塊構(gòu)成的數(shù)據(jù)對,構(gòu)建機器訓(xùn)練需要的大數(shù)據(jù)。接著,通過搭建深度卷積神經(jīng)網(wǎng)絡(luò)對人工構(gòu)造的數(shù)據(jù)集進行機器訓(xùn)練,得到了超越傳統(tǒng)方法的去噪效果。雖然該文獻處理的對象是高斯噪聲,但是這是一項將人工神經(jīng)網(wǎng)絡(luò)與圖像去噪相結(jié)合的突破性工作,為卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用到椒鹽去噪提供了可借鑒的方法和思路。在該項工作的基礎(chǔ)上,文獻[16]提出了實現(xiàn)椒鹽噪聲去除的深度卷積神經(jīng)網(wǎng)絡(luò),采用17 個卷積層,配合對應(yīng)的激活函數(shù)和批量標(biāo)準(zhǔn)化,采用對比輸出圖像與干凈圖像之間的差異性構(gòu)造損失函數(shù),得到了超越傳統(tǒng)方法的椒鹽去噪效果。該方法借鑒了文獻[15]中構(gòu)建數(shù)據(jù)集和搭建網(wǎng)絡(luò)的思路,實現(xiàn)了基于CNN 的端到端椒鹽噪聲去除。文獻[17]將中值濾波層嵌入到卷積神經(jīng)網(wǎng)絡(luò)層。它包含39 個各類層,總體上前半部分網(wǎng)絡(luò)旨在通過多次重復(fù)的中值濾波消除椒鹽噪聲,后半部分網(wǎng)絡(luò)旨在通過殘差層的學(xué)習(xí)恢復(fù)圖像細(xì)節(jié)。
上述基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)幾乎都通過網(wǎng)絡(luò)權(quán)重參數(shù)對圖像中所有像素單元進行加權(quán)求和操作。實質(zhì)上,對于輸入的噪聲圖像來說,不是所有像素單元都被噪聲污染。因此,更加合理的處理方法應(yīng)該是只針對噪聲點進行處理,對正常點直接輸出。為了改進卷積神經(jīng)網(wǎng)絡(luò)椒鹽去噪方法的這一缺陷,首先需要對輸入圖像進行噪點標(biāo)記。業(yè)界在噪點標(biāo)定方面已開展了一定的研究。極點標(biāo)定法[8]將圖像中極值像素點標(biāo)記為噪聲點,對于8-bit 的數(shù)字圖像,極值點就是灰階為0 或255 的像素點。該方法的普適性弱,如果原圖像自帶很多的正常極值點,它們都將被誤判為噪點。為了解決這個問題,業(yè)界提出了極值圖像塊標(biāo)記[7],該方法通過比較以掃描點為中心的窗口中正常點和極值點的數(shù)量判斷掃描點是否為噪點,該方法對于高密度噪聲來說還存在較多誤判。最后,業(yè)界提出了均值標(biāo)定法[9],該方法通過窗口中像素的平均灰階進行噪點判斷,但是對于原圖像中本身就存在較多極值點的情況,該方法將失效。
本文訓(xùn)練了一個卷積神經(jīng)網(wǎng)絡(luò),用其生成的噪聲掩??梢跃珳?zhǔn)標(biāo)記正常點和噪聲點。接著,在更新像素單元的過程中直接輸出標(biāo)記為正常點的像素。對于被標(biāo)記為噪聲的像素,本文的處理方法是搜索最近鄰的正常像素代替。本文的創(chuàng)新點主要包括:(1)提出了一種精簡而高效的輕量級卷積神經(jīng)網(wǎng)絡(luò),相比于傳統(tǒng)網(wǎng)絡(luò),網(wǎng)絡(luò)深度降低1/2。此外,在網(wǎng)絡(luò)的中間層采用深度可分離卷積代替常規(guī)卷積,大幅降低了運算復(fù)雜度。(2)提出了一種選擇性去噪方法,對標(biāo)記為正常點的像素單元不做處理,應(yīng)用相鄰像素灰階較為接近的性質(zhì),搜索與噪點空間距離最近的正常點用以更新噪點。該方法充分結(jié)合了卷積神經(jīng)網(wǎng)絡(luò)的智能識別優(yōu)勢和圖像中相鄰像素灰階較為接近的性質(zhì),實現(xiàn)了高性能椒鹽去噪。
2.1.1 極點標(biāo)定[8]
極點標(biāo)定將輸入噪聲圖像中灰階為0 或255的點標(biāo)記為噪點,其他點為正常點。該方法如式(1)所示:
其中:Mij為噪點標(biāo)記輸出,即噪聲掩模,它是一個二值圖像,噪聲點標(biāo)記為0,正常點為1。imgij表示輸入圖像中第i行、第j列的像素灰階,該圖像共計H行W列,因而i的取值是1~H之間的整數(shù),j的取值是1~W之間的整數(shù)。
2.1.2 極值圖像塊標(biāo)定[7]
極值圖像塊標(biāo)定生成噪聲掩模的原理是掃描圖像中灰階為0 或255 的像素,取以其為中心的k×k窗口,統(tǒng)計其中灰階為0 以及灰階為255 的像素數(shù)量,根據(jù)這些數(shù)量的大小關(guān)系輸出標(biāo)記值。
如果掃描到的像素灰階為0,則統(tǒng)計滑動窗口中灰階為0 的像素個數(shù)N0,窗口中灰階為非0 的像素數(shù)量如式(2)所示:
其中k2為窗口總的像素數(shù)量。
如果掃描到的像素灰階為255,計算灰階為255和非255的像素數(shù)量方法與計算灰階為0 與非0 的像素數(shù)量方法類似:
極值圖像塊標(biāo)記法如式(3)所示。掃描圖像中各個像素單元,當(dāng)灰階為0 時,如果滑動窗口中灰階為0 的像素點很少,則判定為噪點。當(dāng)灰階為255 時,如果滑動窗口中灰階為255 的像素點很少,則判定為噪點。其他情況下將掃描點判斷為正常點。
2.1.3 均值標(biāo)定[9]
均值標(biāo)定法通過滑動窗口中的平均灰階的大小生成噪聲掩模。首先計算滑動窗口中像素的平均灰階av。如式(4)所示:
當(dāng)灰階為0 時,如果滑動窗口中像素的平均灰階相對較大則判定為噪點。當(dāng)灰階為255 時,如果滑動窗口中像素的平均灰階相對較小則判定為噪點。其他情況下將掃描點判斷為正常點。
適用于圖像分類的卷積神經(jīng)網(wǎng)絡(luò)一般在通過多個卷積充分地提取了圖像特征之后,將通過全連接層、softmax 層給出分類結(jié)果,其采用的損失函數(shù)一般為交叉熵?fù)p失函數(shù)。不同于分類網(wǎng)絡(luò),圖1 是一個典型的椒鹽去噪卷積神經(jīng)網(wǎng)絡(luò),在輸入端通過1 個卷積層和激活函數(shù)初步提取圖像特征,最后通過1 個卷積層恢復(fù)去噪圖像。在首尾之間是10 多個重復(fù)的卷積、批量標(biāo)準(zhǔn)化和激活層。相比于圖像分類網(wǎng)絡(luò),適用于椒鹽去噪的卷積神經(jīng)網(wǎng)絡(luò)有下列特征:
圖1 用于椒鹽去噪的卷積神經(jīng)網(wǎng)絡(luò)Fig.1 CNN for salt-and-pepper denoising
(1)網(wǎng)絡(luò)輸出是一幅圖像。由于目的是實現(xiàn)椒鹽噪聲去除,網(wǎng)絡(luò)的輸出端是一幅圖像而非分類結(jié)果。
(2)無需使用池化層。在使用卷積神經(jīng)網(wǎng)絡(luò)處理輸入圖像的過程中不再需要使用池化層來縮放圖像,從始至終圖像的分辨率不改變,以保證輸出圖像和輸入圖像分辨率相同。
(3)損失函數(shù)變化。在圖像分類中多采用交叉熵?fù)p失函數(shù),但是該損失函數(shù)不再適用于椒鹽去噪網(wǎng)絡(luò)。為了正確地指導(dǎo)權(quán)重參數(shù)的優(yōu)化,去噪網(wǎng)絡(luò)中多采用輸出的去噪結(jié)果圖像和原始干凈圖像之間的均方差(mse)作為損失函數(shù):
其中:W和H分別為圖像的橫向和縱向分辨率,img 為原始干凈圖像,img'為卷積神經(jīng)網(wǎng)絡(luò)輸出的去噪圖像。mse 高效地描述了處理所得圖像與原始干凈圖像的差異,將有效指導(dǎo)網(wǎng)絡(luò)權(quán)重的優(yōu)化。
3.1.1 圖像塊截取
截取圖像塊的方法如圖2 所示。在一張干凈圖像中以20 的步長從圖像的左上角開始截取分辨率為70×70的圖像塊。對于分辨率為200×200的圖像,橫向和縱向上各截取5 次,從左到右、從上到下掃描,得到25 個70×70 的圖像塊。為了能夠完整表征圖像特征,圖像塊的分辨率不宜太小;為了避免訓(xùn)練參數(shù)量過大,圖像塊的分辨率不宜太大。因此,本文選用70×70 的圖像塊分辨率。
圖2 圖像塊截取方法示意圖Fig.2 Schematic diagram of image block interception method
3.1.2 生成噪聲圖像-噪聲掩模的數(shù)據(jù)對
為了訓(xùn)練出噪聲掩模,需要給卷積神經(jīng)網(wǎng)絡(luò)輸入噪聲圖像。網(wǎng)絡(luò)的輸出將與原噪聲掩模進行對比,生成損失函數(shù),通過損失函數(shù)的迭代優(yōu)化訓(xùn)練不斷改善輸出。因此,訓(xùn)練網(wǎng)絡(luò)的噪聲圖像-噪聲掩模對數(shù)據(jù)至關(guān)重要。本文在上述生成的70×70 圖像塊基礎(chǔ)上,添加隨機密度的椒鹽噪聲,生成噪聲圖像。與此同時,將每次添加噪聲的位置標(biāo)記為1,而將圖像中未添加噪聲的像素標(biāo)記為0,從而生成噪聲掩模。值得注意的是,噪聲圖像和噪聲掩模一一對應(yīng),構(gòu)成“噪聲圖像-噪聲掩模”對。此外,為了增強數(shù)據(jù)集的魯棒性,給每個圖像塊添加噪聲的密度是隨機確定的,噪聲密度取值是0.1~0.9 之間的隨機數(shù)。圖3 是幾個圖像塊對應(yīng)的噪聲圖像-噪聲掩模對,從中可以看出噪聲圖像是在圖像塊的基礎(chǔ)上添加噪聲所得,噪聲掩模將添加噪聲的位置標(biāo)記為白點,正常像素標(biāo)記為黑點。
圖3 噪聲圖像-噪聲掩模對Fig.3 “Noise image”-“noise mask” pairs
3.1.3 構(gòu)建噪聲圖像-噪聲掩模對數(shù)據(jù)集
在上述圖像塊截取和生成噪聲掩模的基礎(chǔ)上,噪聲圖像-噪聲掩模對數(shù)據(jù)集的構(gòu)建方法如圖4 所示。本文選用91images 數(shù)據(jù)集作為原數(shù)據(jù),將彩色圖像轉(zhuǎn)換為黑白并調(diào)整分辨率。以20的步長從每張圖像中截取出25 個圖像塊,對這些圖像塊添加隨機密度的椒鹽噪聲得到噪聲圖像塊。與此同時,將添加噪聲的位置標(biāo)記為1,其他位置為0,生成與噪聲圖像所對應(yīng)的真實噪聲掩模。最后,將噪聲圖像塊和噪聲掩模塊組合在一起構(gòu)成一一對應(yīng)的噪聲圖像-噪聲掩模對。
圖4 噪聲圖像-噪聲掩模對數(shù)據(jù)集的構(gòu)建方法Fig.4 Construction method for noise “noise image”-“noise mask” pairs dataset
3.2.1 模型結(jié)構(gòu)
圖5 為本文采用的卷積神經(jīng)網(wǎng)絡(luò)模型。本文將噪聲圖像-噪聲掩模對數(shù)據(jù)集作為訓(xùn)練數(shù)據(jù),將網(wǎng)絡(luò)輸出圖像與理想噪聲掩模之間的mse 作為損失函數(shù)。網(wǎng)絡(luò)模型包括9 個卷積層,其中第一個卷積包含卷積和激活操作,對輸入的噪聲圖像生成64個卷積張量。最后一個卷積層對輸入的64個張量生成1 張噪聲掩模。首尾之間是7 個重復(fù)的深度可分離卷積,如圖6 所示。MobileNet-v1[18]已經(jīng)證實深度可分離卷積的復(fù)雜度比常規(guī)卷積降低了8~9 倍。如圖6 所示,先采用3×3 的卷積核處理64 個輸入通道,隨后執(zhí)行批量標(biāo)準(zhǔn)化和ReLU 激活。依次采用1×1 的卷積核處理所有通道,得到64 個處理后的通道,這步稱為點卷積。最后,經(jīng)過批量標(biāo)準(zhǔn)化和激活之后輸出64 個通道。該網(wǎng)絡(luò)模型的創(chuàng)新之處在于:(1)相比于傳統(tǒng)網(wǎng)絡(luò)模型,網(wǎng)絡(luò)深度降低1 倍;(2)在中間層采用深度可分離卷積代替常規(guī)卷積,大幅降低了運算復(fù)雜度。該方法采用更小的網(wǎng)絡(luò)深度和更加簡單的卷積結(jié)構(gòu),達(dá)到了很好的噪聲掩模復(fù)原效果。
圖5 輕量級卷積神經(jīng)網(wǎng)絡(luò)Fig.5 Lightweight CNN
圖6 深度可分類卷積Fig.6 Depth separable convolution
3.2.2 各層功能
對于輸入噪聲圖像,通過圖5 所示的網(wǎng)絡(luò)預(yù)測其噪聲掩模,圖7 為各個卷積層的功能說明。首先,首端常規(guī)卷積神經(jīng)網(wǎng)絡(luò)將提取出輸入噪聲圖像的輪廓信息。接著,通過7 個深度可分離卷積全面地提取噪點信息。從圖7 可以看出,從第1 到第7 個深度可分離卷積層,隨著深度的增加,圖像細(xì)節(jié)逐漸被忽略,噪點信息逐漸被凸顯。從第1 到第3 個深度可分離卷積的輸出中可以看到諸如馬匹等圖像細(xì)節(jié),第4 到第7 個網(wǎng)絡(luò)的輸出中圖像細(xì)節(jié)已被黑點代替,圖中零星可見的白點為噪點。值得注意的是,7 層深度可分離卷積神經(jīng)網(wǎng)絡(luò)的輸出實際上有64 張圖,圖中所展示的僅為64 個中的1 張圖。最后將第7 層的64 張圖通過1 個常規(guī)卷積層合并到尾端常規(guī)卷積層的輸出,得到噪聲掩模。
圖7 各個卷積層的功能Fig.7 Function of each convolution layer
首端常規(guī)卷積輸出的64 個張量將輸入深度可分離卷積進行抽象特征的提取,深度可分離卷積內(nèi)部各層的功能如圖8 所示。首先,通過深度方向的卷積處理64 個張量,得到深度方向卷積輸出。接著,通過批量標(biāo)準(zhǔn)化對輸出所得數(shù)據(jù)進行微調(diào),使得這些數(shù)據(jù)仍然服從正態(tài)分布。由于調(diào)整的數(shù)據(jù)數(shù)值變化幅度較小,批量標(biāo)準(zhǔn)化步驟的輸出圖像幾乎與輸入一致。批量標(biāo)準(zhǔn)化能夠解決訓(xùn)練過程中的梯度消散問題,讓數(shù)據(jù)的分布一致,使得模型的訓(xùn)練更加穩(wěn)定。批量標(biāo)準(zhǔn)化的下一步是激活,通過ReLU 函數(shù)來抑制均值以下的圖像細(xì)節(jié),激活函數(shù)輸出如圖8 所示。激活函數(shù)的主要作用是加入非線性因素,以解決線性模型表達(dá)能力不足的缺陷。隨后,通過點卷積繼續(xù)處理64 個張量,再依次通過批量標(biāo)準(zhǔn)化和激活函數(shù)處理。
圖8 深度可分離卷積內(nèi)部各層的功能Fig.8 Function of each layer in depth separable convolution
數(shù)字圖像多采用互補金屬-氧化物-半導(dǎo)體(CMOS)圖像傳感器[19]獲取,它是一種典型的固態(tài)傳感器,其結(jié)構(gòu)如圖9 所示,由光敏像素陣列、行驅(qū)動器、列驅(qū)動器、時序控制邏輯、模擬到數(shù)字(AD)轉(zhuǎn)換器、數(shù)據(jù)總線輸出接口和控制接口等幾部分組成,各個組成部分通常都被集成在同一塊硅片上。每個像素單元通過光敏二極管采集信號,光敏二極管隨入射光的強弱產(chǎn)生對應(yīng)強度的電信號,通過行控制線和列控制線的配合采集各個像素單元的電信號,最后通過AD 轉(zhuǎn)換器輸出數(shù)字信號,將數(shù)字圖像存儲。由于相鄰像素接收的曝光量十分接近,而且圖像分辨率越大,單個像素所表征的顆粒尺寸就越小,相鄰像素感知到的光強越接近,使得AD 轉(zhuǎn)換器輸出的對應(yīng)數(shù)值十分接近。因此,像素之間的空間距離越近,灰階就越相近。
圖9 CMOS 圖像傳感器結(jié)構(gòu)圖Fig.9 Structure chart of CMOS image sensor
式(6)是基于最近鄰搜索機制的去噪方法:
其中:img 為輸入圖像,img'為輸出圖像,M為已訓(xùn)練的噪聲掩模,L表示搜索到的最近鄰正常像素的點集,L(R,k)表示搜索半徑為R的圈層中第k個正常像素的灰階。掃描圖像中各個像素單元,其中i和j分別表示掃描點的行號和列號,其取值范圍分別是[1,H]和[1,W],H和W分別是輸入圖像的縱向分辨率和橫向分辨率。對于噪聲掩模中標(biāo)記的正常像素,直接輸出灰階;對于噪聲掩模中標(biāo)記的噪聲像素,取搜索到的最近鄰正常點的平均灰階代替掃描點的灰階。
圖10 為實現(xiàn)最近鄰搜索機制的示意圖,其中藍(lán)點表示正常像素,紅點代表噪聲像素。噪點標(biāo)記的精確度對最近鄰搜索機制的正常實現(xiàn)有著非常關(guān)鍵的影響。最近鄰搜索機制就是搜索與噪聲像素距離最近的正常點,生成代替噪聲點的新灰階。如圖10(a)所示,與噪聲像素a0最相鄰的正常像素是b1=20、b2=19、b3=20 和b8=21,因此采用這4 個灰階的平均值20 作為a0的新灰階。由于在最內(nèi)層窗口中就能夠搜索到正常像素,此時的搜索半徑R=1。對于無法在最內(nèi)層窗口中搜索到正常像素的情況,將放大窗口尺寸,直到搜索到至少存在1 個正常像素的外圍層。如圖10(b)所示,當(dāng)搜索半徑為2 時,第2 層上的正常像素c2=104、c6=105、c7=103、c11=103 和c12=105 的平均值104 將作為噪點a0的新灰階。如果還未搜索到正常點,搜索半徑將進一步增大。如圖10(c)所示,當(dāng)搜索半徑為3 時,第3 層上的正常像素d3=212、d9=201、d10=201、d16=206 和d17=215 的平均值將作為噪點a0的新灰階,以此類推。
圖10 最近鄰搜索機制示例Fig.10 Example of the nearest searching mechanism
該方法的優(yōu)點如下:(1)使用最近鄰正常像素的平均灰階更新噪點,提升魯棒性。與噪點空間距離相等的像素往往不止1 個,例如搜索半徑為1 時,最多可以存在8 個正常點;搜索半徑為2時,最多可以存在16 個正常點。采用多個最近鄰的正常像素的平均灰階更新噪點,可以達(dá)到綜合考慮噪點周邊各個方向的效果,從而提高魯棒性。(2)通過半徑自適應(yīng)擴展搜索最近鄰的正常像素。在最近鄰搜索機制中,優(yōu)先搜索與噪點距離最近的正常像素單元,搜索半徑R的初始值為1。在最近層未搜索到正常點的情況下才會擴展搜索半徑,直到尋找到至少1 個正常像素。
本文在Tensorflow 平臺調(diào)用keras 組件搭建如圖5 所示的輕量級卷積神經(jīng)網(wǎng)絡(luò)。該訓(xùn)練采用mse 作為損失函數(shù)。在訓(xùn)練開始前,設(shè)置初始學(xué)習(xí)率為0.001,如果訓(xùn)練過程中損失值在20 個周期內(nèi)沒有降低,學(xué)習(xí)率將以0.2 的因子衰減,學(xué)習(xí)率下限為0.000 000 01。調(diào)用RTX3080 型GPU訓(xùn)練50 個周期,批量為8,訓(xùn)練耗時107 min。訓(xùn)練曲線如圖11 所示,可以看出損失值和準(zhǔn)確率均快速收斂。
圖11 訓(xùn)練曲線。(a)損失值曲線;(b)準(zhǔn)確率曲線。Fig.11 Training curves. (a) Loss curve;(b) Accuracy curve.
圖12 為不同方法生成的噪聲掩模圖像。實驗選擇具有代表性的3 張圖像,其中kodim18 中有大量偏黑的像素和少量高亮像素,kodim20 中的圖像細(xì)節(jié)中存在大量的高亮像素以及少量偏黑像素,而kodim24 中存在少量高亮像素和大量灰階居中的像素。為了檢測不同噪聲密度下的掩模質(zhì)量,分別給kodim20、kodim24 和kodim18添加低、中和高密度的椒鹽噪聲。在圖12 的噪聲掩模圖像中,噪點用黑點標(biāo)記,正常點用白點標(biāo)記。值得注意的是,原噪聲圖像中噪點均勻分布,不受圖像自有像素的影響。圖12 所示的噪聲掩模圖像中黑點分布越均勻,就越符合客觀事實,噪聲掩模的質(zhì)量就越高。從圖12 可以看出,極點標(biāo)定法由于將極值像素點標(biāo)記為噪點,當(dāng)圖像中本身存在較多極值點時容易造成誤判,如圖12(b3)和圖12(c3)所示,大量的天空像素被標(biāo)記為噪點,噪聲掩模圖像嚴(yán)重受到原圖像中的極值像素的影響而產(chǎn)生大面積誤判。此外,均值標(biāo)定法根據(jù)窗口中像素的平均灰階與極值的差異判斷噪點,當(dāng)圖像某些區(qū)域中極值像素的分布較為集中時,該方法容易失效。因此,圖12(b5)和圖12(c5)中存在大量的誤判點。極值圖像塊標(biāo)定法通過對比窗口中極值像素和正常像素的數(shù)量判斷噪點,相比于上面兩種方法,它更好地運用了噪點分布的特征,生成的掩模幾乎不再受到原圖像中極值像素的影響,達(dá)到了相對理想的效果,如圖12(b4)和圖12(c4)所示。相比于這些傳統(tǒng)方法,本文提出的CNN 標(biāo)定方法通過機器學(xué)習(xí)掌握噪點分布的特征,是一種智能噪聲掩模生成方法。如圖12(a6)、圖12(b6)和圖12(c6)所示,噪聲掩模圖像幾乎不再受到原圖像中極值像素的影響,尤其是圖12(a6)呈現(xiàn)了完美的均勻噪點分布,與理想噪點分布已經(jīng)十分接近,更加說明了該方法具有較強的魯棒性。此外,圖12(c2)中的屋檐線條不再出現(xiàn)在圖12(c6)中,說明該方法不再受到圖像邊緣的影響而產(chǎn)生誤判。
從主觀視覺效果上,已經(jīng)看出CNN 噪聲掩模質(zhì)量更高。如式(7)所示,本文采用誤判率MR客觀評估各種方法生成噪聲掩模的質(zhì)量:
其中:MR 為誤判率,N1為原圖中實際存在的噪點數(shù)量,N2是通過標(biāo)定算法標(biāo)定出的噪點數(shù)量。誤判率越低,說明噪點標(biāo)定的精確度越高。
本文對kodim 圖像添加各種級別的噪聲,噪聲密度從0.1~0.9。對比數(shù)據(jù)如表1 所示。與上述分析一致,極點標(biāo)記法由于容易將極值點標(biāo)記為噪點,誤判率較高。均值標(biāo)定方法容易在大片極值點的圖像區(qū)域失效,因此誤判率較高。相比于前兩者,極值圖像塊標(biāo)記根據(jù)窗口中極值點和正常點數(shù)量的關(guān)系標(biāo)記噪點,更好地把握了噪點分布的特征,因此誤判率得到改善。本文提出的深度CNN 標(biāo)記方法通過機器學(xué)習(xí)全面提取噪點分布的特征,達(dá)到了最佳噪聲掩模質(zhì)量。表1 顯示,本文方法生成噪聲掩模的誤判率分別比極點標(biāo)記、均值標(biāo)記和極值圖像塊標(biāo)記降低了94.79%、94.79%和83.65%。
通過峰值信噪比(PSNR)評估椒鹽去噪的性能。在每次實驗中,不同密度的椒鹽噪聲隨機地添加到原始圖像中,sij表示去噪后的圖像,xij表示原始圖像:
此外,采用信息損失度(MSE)評估椒鹽去噪算法的信息損失:
其中:xij為原圖像,sij為濾波后的圖像,W、H為分辨率。MSE 越小越好。
為了驗證最近鄰搜索機制對去噪性能的改善,進行了如下消融實驗。在噪點標(biāo)記步驟一律采用CNN 標(biāo)記,在噪點去除步驟分別采用中值濾波、三權(quán)重因子、自適應(yīng)概率濾波、改善的中值濾波、均值標(biāo)定重復(fù)濾波和最近鄰搜索方法,對比PSNR和MSE。分別對kodim20、kodim24 和kodim18 添加低、中和高密度椒鹽噪聲,同樣采用CNN 標(biāo)記,不同去噪方法進行處理的結(jié)果如表2 所示。值得注意的是,為了單純驗證去噪方法的性能,表中所有方法都預(yù)先采用上述CNN 方法進行噪點標(biāo)記。例如,在執(zhí)行中值濾波前先采用CNN 方法對噪點進行標(biāo)記,對于標(biāo)記為正常的像素不做處理,對于標(biāo)記為噪點的像素通過中值濾波去噪。從表2 可以看出,最近鄰搜索方法的PSNR 最大且MSE 最小,說明其去噪效果優(yōu)于其他方法。
表2 相同噪點標(biāo)記下的去噪性能對比Tab.2 Comparison of denoising performance with the same noise marking
最近鄰搜索的機理是搜索與噪點在空間上最鄰近的正常點代替噪點。該機理從兩個方面提升去噪性能:(1)代替噪點的是正常點。傳統(tǒng)的去噪方法中代替噪點的不一定是正常點,例如中值濾波及其改善版本中噪點周圍幾個像素灰階的中值點不一定就是正常像素。此外,如果選用了一些噪點,三權(quán)重因子生成的像素灰階將不是正常像素的灰階。(2)最近鄰原則。從圖像生成的角度,最近鄰正常像素點是代替噪點的最佳選擇。然而,傳統(tǒng)方法沒有較好地將這一性質(zhì)應(yīng)用到去噪中。
5.4.1 代表性圖片的椒鹽去噪性能測試
不同噪聲密度下的椒鹽去噪圖像視覺效果對比如圖13 所示,分別對kodim05、kodim24 和kodim23 圖像添加20%、50%和80%的噪聲,再分別采用各種方法去噪。本文提出的方法將與7 個傳統(tǒng)方法進行對比,其中包括5 個基于像素灰階的方法和2 個基于CNN 的方法?;谙袼鼗译A的去噪方法中,中值濾波將所有像素單元的灰階無選擇性地采用3×3 滑動窗口的中值代替,雖然流程簡單,但是由于缺少噪點標(biāo)定步驟,對所有像素單元進行無差別濾波,該方法將造成較大的信息損失,如圖13(a3)、圖13(b3)和圖13(c3)所示。概率濾波采用具有最大概率的相鄰像素灰階代替噪點灰階,但是該方法在處理高密度噪聲時容易失效,如圖13(b5)和圖13(c5)所示。
圖13 不同去噪方法的處理效果對比Fig.13 Comparison of visual effect for image processed by different denoising method
由于采用的噪點標(biāo)記方法誤判率較高,改善的中值濾波方法和均值標(biāo)定重復(fù)濾波方法處理高密度噪聲圖像存在殘留噪點,如圖13(b6)、圖13(c6)和圖13(b7)所示。三權(quán)重因子算法通過可調(diào)窗口搜索噪點周邊的正常點,確保重構(gòu)噪點的信息是正常像素灰階,再采用這些正常像素單元灰階的權(quán)重之和代替噪聲像素單元的灰階,充分利用了噪點周邊的正常點,達(dá)到了良好的去噪效果。因此,在基于像素灰階的方法中三權(quán)重因子算法表現(xiàn)相對優(yōu)異,如圖13(a4)和圖13(c4)。但是,該方法由于噪點標(biāo)記方法采用極點標(biāo)記,在高密度下處理所得圖像存在一些噪點殘留,如圖13(b4)所示。
在基于CNN 的去噪方法中,Liang CNN 采用多達(dá)39 層的深度殘差網(wǎng)絡(luò)進行去噪。Xing CNN中采用17 層卷積神經(jīng)網(wǎng)絡(luò)進行去噪,訓(xùn)練50 個周期快速達(dá)到收斂。實質(zhì)上,在去噪過程中不應(yīng)該對原圖像中的正常像素做任何改變。然而,該方法對原圖像中包括正常像素在內(nèi)的所有像素均進行CNN 去噪,使得該方法的信息損失較大。本文采用9 層的深度卷積神經(jīng)網(wǎng)絡(luò)模型生成噪聲掩模,經(jīng)過50 個周期達(dá)到收斂,獲得了一個誤判率極低的高質(zhì)量噪聲掩模,對標(biāo)記為正常點的像素單元不做任何處理。接著,基于相鄰像素灰階較為接近的性質(zhì),本文采用最近鄰搜索機制,利用噪點周邊最近的正常點代替噪點。由于本文提出的方法充分地結(jié)合了CNN 方法能夠精確識別噪點的優(yōu)勢和相鄰像素灰階接近的性質(zhì),達(dá)到了理想的去噪效果,如圖13(a10)、圖13(b10)和圖13(c10)所示。表3 中,本文提出的去噪方法所得圖像的PSNR 和MSE 的平均值分別為28.40 和3.23,相比于傳統(tǒng)方法達(dá)到了最佳。
表3 各種方法的去噪性能對比Tab.3 Comparison of denoising performance of various methods
5.4.2 BSD300 數(shù)據(jù)集上的椒鹽去噪性能測試為了更加深入地驗證所提去噪方法的魯棒性,本文對BSD300 數(shù)據(jù)集的300 張圖片添加密度為0.01~0.9 之間隨機密度的椒鹽噪聲,并對比不同方法所得的PSNR 和MSE 的平均值。從表4 可以看出,本文方法的PSNR 最高,MSE 最低,說明本文方法的去噪性能優(yōu)于傳統(tǒng)方法。相比于基于像素灰階去噪方法即三權(quán)重因子方法,本文提出方法的PSNR 提升了2.53%,MSE 降低了6.76%。相比于傳統(tǒng)CNN 去噪方法即Xing CNN,本文提出方法的PSNR 提升了8.96%,MSE 降低了45.24%。
表4 BSD300 數(shù)據(jù)集上的去噪性能對比Tab.4 Comparison of denoising performance on BSD300 dataset
本文從噪點標(biāo)記和噪聲去除兩方面改善去噪性能,在噪點標(biāo)記步驟采用輕量級CNN 實現(xiàn)了極高精度的噪點標(biāo)記,使得系統(tǒng)能夠精準(zhǔn)地鑒別噪聲點和正常點。接著,在噪聲去除步驟以上述精準(zhǔn)噪點標(biāo)記為基礎(chǔ),對于正常點不做處理。對于噪點,搜索在空間上與該噪點最為鄰近的正常點作為代替點。表1的結(jié)果說明CNN 標(biāo)記提升了噪點標(biāo)記精度,表2 的結(jié)果說明最近鄰搜索機制提升了峰值信噪比并降低了信息損失。從表4 可以看出,結(jié)合CNN 噪點標(biāo)記和最近鄰搜索機制的椒鹽去噪方法實現(xiàn)了椒鹽去噪性能的提升。
Liang CNN 中存在多達(dá)32 個殘差層和中值濾波層,使得運算復(fù)雜度和參數(shù)量極大。Xing CNN 中存在17 個常規(guī)卷積層,運算復(fù)雜度和參數(shù)及仍然很大。相比于傳統(tǒng)的椒鹽去噪卷積神經(jīng)網(wǎng)絡(luò),本文減小了網(wǎng)絡(luò)深度,并且在中間層采用深度可分離卷積代替常規(guī)卷積,這兩個因素使得網(wǎng)絡(luò)復(fù)雜度大幅降低。業(yè)界用MFLOPS[20](每秒兆次浮點型運算的數(shù)量)來評估卷積神經(jīng)網(wǎng)絡(luò)的運算復(fù)雜度。如表5 所示,本文所提出的網(wǎng)絡(luò)模型的運算復(fù)雜度比Xing CNN 降低了15 倍。此外,該網(wǎng)絡(luò)的參數(shù)數(shù)量和.h5 文件的大小都在傳統(tǒng)網(wǎng)絡(luò)的基礎(chǔ)上得到數(shù)量級的降低。
表5 網(wǎng)絡(luò)復(fù)雜度對比Tab. 5 Comparison of network complexity
本文提出的椒鹽去噪方法充分利用了卷積神經(jīng)網(wǎng)絡(luò)的智能識別優(yōu)勢和相鄰像素灰階接近的性質(zhì),達(dá)到了超越傳統(tǒng)方法的去噪性能。該方法不同于傳統(tǒng)基于像素灰階的去噪方法,通過輕量級卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練了一個高質(zhì)量噪聲掩模生成器,實現(xiàn)了精確的噪點標(biāo)定。此外,該方法不同于現(xiàn)有的卷積神經(jīng)網(wǎng)絡(luò)去噪方法對全體像素進行卷積處理,而是將原圖像中的正常點直接輸出,將其中的噪點進行針對性的處理,從而減少了信息損失。在處理這些噪點的過程中,根據(jù)最近鄰搜索機制尋找到與噪點距離最近的正常點。實驗結(jié)果表明,神經(jīng)網(wǎng)絡(luò)的復(fù)雜度得到數(shù)量級的降低,噪點標(biāo)定的誤判率比傳統(tǒng)最佳方法降低了83.65%。在去噪方面,該方法的PSNR 和MSE 均優(yōu)于傳統(tǒng)的像素灰階方法和CNN 方法。本文提出的方法深化了輕量級卷積神經(jīng)網(wǎng)絡(luò)在椒鹽去噪領(lǐng)域的應(yīng)用,改善了去噪性能。