鄭宏亮, 王 奕, 張?zhí)靿? 劉芳菲, 傅 博
(遼寧師范大學(xué) 計(jì)算機(jī)與信息技術(shù)學(xué)院, 遼寧 大連 116081)
圖像能對(duì)自然景物進(jìn)行客觀反映, 是人類認(rèn)識(shí)世界和本身的重要源泉。隨著科學(xué)技術(shù)發(fā)展和生活水平提高, 數(shù)字圖像不僅已深入人們生活, 同時(shí)對(duì)圖像質(zhì)量的要求也越來越高。然而, 圖像在形成、 采集和傳輸過程中會(huì)不可避免地受到各種形式的噪聲污染。例如, 圖像傳感器在拍攝時(shí)視場(chǎng)不夠明亮或亮度不夠均勻?qū)е庐a(chǎn)生高斯噪聲、 圖像切割時(shí)會(huì)產(chǎn)生椒鹽噪聲等。上述圖像噪聲不僅影響人們對(duì)圖像的觀察與欣賞, 同時(shí)可能影響后續(xù)的圖像分析工作。為獲取高質(zhì)量的圖像, 有必要對(duì)圖像進(jìn)行去噪處理。
目前噪聲種類有很多, 常見的噪聲模型主要有高斯噪聲、 脈沖噪聲、 瑞利噪聲、 伽馬噪聲、 指數(shù)分布噪聲和均勻噪聲等。去除不同的噪聲需要采取不同的方法, 比如去除椒鹽噪聲, 最有效的方法是中值濾波, 而去除高斯噪聲可以使用均值濾波。均值濾波是一種典型的線性濾波, 對(duì)處理加性噪聲有很好的效果。其基本思想是以當(dāng)前像素點(diǎn)為中心, 求窗口內(nèi)所有像素點(diǎn)灰度值之和, 以其平均值代替當(dāng)前像素點(diǎn)灰度值。傳統(tǒng)的均值濾波算法簡單, 但需要對(duì)全部像素操作, 會(huì)影響無噪聲的像素點(diǎn)。同時(shí), 均值濾波忽略了像素點(diǎn)之間的關(guān)系, 不注意保護(hù)圖像邊緣。傳統(tǒng)的中值濾波是典型的非線性濾波, 其基本思想是使用像素點(diǎn)鄰域灰度值的中值代替該像素點(diǎn)的灰度值, 其對(duì)椒鹽噪聲的處理效果優(yōu)于均值濾波, 在消除噪聲的同時(shí)也能很好地保護(hù)圖像的邊緣, 處理非線性噪聲效果良好, 目前得到了廣泛應(yīng)用。然而, 傳統(tǒng)的中值濾波與傳統(tǒng)的均值濾波均存在一定問題, 即只考慮像素點(diǎn)的空間相鄰關(guān)系, 并且其在數(shù)據(jù)排序上費(fèi)時(shí)較多, 在特別大的窗口下, 需要進(jìn)行大量的數(shù)據(jù)比較工作。同時(shí), 這類方法不能自適應(yīng)地控制窗口大小, 且存在過度平滑丟失圖像細(xì)節(jié)的問題。
Buades等[1]于2005年提出了非局部均值去噪算法(NLM: Non-Local Means), 該算法很大程度上解決了傳統(tǒng)的均值濾波保護(hù)圖像邊緣弱、 不考慮像素點(diǎn)之間關(guān)系的問題。但NLM算法處理圖像的時(shí)間過長, 不符合人們對(duì)速度的追求。同時(shí), NLM算法對(duì)去除椒鹽噪聲沒有達(dá)到良好的效果。為解決傳統(tǒng)NLM算法存在的問題, 目前已由傳統(tǒng)的非局部均值去噪算法衍生出了許多優(yōu)秀的算法。例如, 何春等[2]提出的改進(jìn)權(quán)重函數(shù)的非局部均值去噪算法, 該算法針對(duì)傳統(tǒng)的非局部均值算法耗時(shí)較長, 且權(quán)重分配不夠合理以及利用歐氏距離計(jì)算鄰域之間相似性時(shí)不能很好地突出中心像素點(diǎn)作用問題提出的一種新的改進(jìn)算法。Froment[3]提出的快速非局部均值去噪算法解決了傳統(tǒng)的非局部均值算法耗時(shí)長的問題。但上述算法依然沒有很好地解決椒鹽噪聲處理效果不佳的問題。燕紅文等[4]和談鋒[5]分別提出了不同的基于傳統(tǒng)中值濾波改進(jìn)的自適應(yīng)中值濾波算法, 其保護(hù)圖像細(xì)節(jié)能力大大提高, 但仍然需要考慮像素點(diǎn)的空間上的相鄰關(guān)系。傅博等[6]在非局部濾波中增加了邊緣導(dǎo)向, 可以一定程度地保護(hù)圖像邊緣。李偉偉[7]針對(duì)混合噪聲提出了非局部歐氏中值濾波的改進(jìn)算法, 該方法首先對(duì)椒鹽噪聲進(jìn)行預(yù)處理以降低后續(xù)非局部均值計(jì)算相似性的干擾, 使處理效果進(jìn)一步得到提高。郭林等[8]與路敬祎等[9]分別采用偏微分方程與變分方程解決圖像去噪問題并取得了較好的效果??傮w而言, 盡管目前提出的一些改進(jìn)方法較傳統(tǒng)濾波效果更好, 但大部分改進(jìn)后去噪方法針對(duì)單一噪聲設(shè)計(jì), 而實(shí)際自然圖像往往受到多種圖像噪聲污染, 現(xiàn)有的去噪方法無法處理混合噪聲污染情況。同時(shí), 類似非局部均值的方法需要在較大范圍計(jì)算切塊之間的相似度, 隱私時(shí)間復(fù)雜度較高。張玉征等[10]在度量相似度的過程中采用了雙核函數(shù)進(jìn)行度量并獲得了較好的效果。江巨浪等[11]通過引入方向系數(shù)的方式使濾波器具有一定的方向保護(hù)特性。He等[12]則通過導(dǎo)向?yàn)V波器的方式進(jìn)行邊緣保護(hù)。
針對(duì)上述問題, 筆者提出了一種快速二步交叉非局部混合濾波的混合噪聲去噪方法。算法利用積分圖像技術(shù)[13]改進(jìn)了現(xiàn)有的NLM算法, 降低了NLM算法的計(jì)算鄰域相似度部分的時(shí)間復(fù)雜度, 同時(shí)加入非局部中值濾波處理圖像。該算法能極大地縮短圖像處理的時(shí)間, 也能保護(hù)圖像細(xì)節(jié)和邊緣部分, 對(duì)椒鹽噪聲能達(dá)到更好的去除效果。
一張數(shù)字圖像u, 其受到混合噪聲疊加污染的表達(dá)模型如下
v(i)=u(i)+n(i)+m(i)
(1)
其中v(i)為含有噪聲的圖像,u(i)為未受噪聲污染的圖像,n(i)可以為高斯噪聲等,m(i)表示椒鹽噪聲。傳統(tǒng)的NLM算法的基本思想是當(dāng)前像素的估計(jì)值由圖像中與它具有相似鄰域結(jié)構(gòu)的像素加權(quán)平均得到, 可定義如下
(2)
其中w(i,j)為圖像v中的像素i和像素j的相似性系數(shù), 0≤w(i,j)≤1,w(i,j)可表示為
(3)
其中規(guī)定v(Ni)為以i為中心的矩形鄰域,α為高斯核標(biāo)準(zhǔn)差且大于0,h為平滑參數(shù),h越小, 圖像邊緣保留細(xì)節(jié)越多, 但會(huì)殘留許多噪點(diǎn)。
傳統(tǒng)的NLM算法只去除了式(1)中的n(i)噪聲, 并未很好地去除m(i)噪聲, 且每次搜索都需重新尋找v(Ni)和v(Nj), 導(dǎo)致算法時(shí)間復(fù)雜度過高。因此, NLM算法也衍生出了許多優(yōu)秀的改進(jìn)算法, 如改進(jìn)權(quán)重函數(shù)的非局部均值濾波算法、 使用積分圖像原理改進(jìn)的非局部均值濾波算法等, 但其仍無法很好地去除椒鹽噪聲。傳統(tǒng)的中值濾波算法只是在處理椒鹽噪聲時(shí)獲得了比傳統(tǒng)的NLM算法更好的效果, 并沒有有效地去除高斯噪聲。針對(duì)上述問題, 筆者以非局部均值濾波算法為基礎(chǔ), 提出了一種快速二步交叉非局部混合濾波去噪方法。
筆者提出的算法在以下兩個(gè)方面對(duì)傳統(tǒng)的非局部均值濾波算法進(jìn)行了改進(jìn)。其一是針對(duì)傳統(tǒng)非局部均值濾波算法在計(jì)算某一偏離坐標(biāo)點(diǎn)方向的權(quán)重時(shí)存在重復(fù)計(jì)算導(dǎo)致算法運(yùn)行時(shí)間過長的問題, 筆者算法使用積分圖像原理構(gòu)造出一個(gè)差值積分圖, 使圖像中每個(gè)點(diǎn)與偏離其在一定偏移的坐標(biāo)點(diǎn)的距離都可通過查表方法和有限次簡單運(yùn)算方法得到, 大大降低了算法的時(shí)間復(fù)雜度, 提高了算法的運(yùn)算效率。其二是針對(duì)椒鹽噪聲去除效果不理想的問題, 在傳統(tǒng)非局部均值濾波算法基礎(chǔ)上, 將計(jì)算加權(quán)平均值改為根據(jù)權(quán)重計(jì)算中值, 得到非局部中值濾波算法, 并將改進(jìn)的非局部均值濾波算法和非局部中值濾波算法交叉使用。這使該算法有效去除了椒鹽噪聲, 增強(qiáng)了其去除混合噪聲的效果。
由于圖像是由一系列離散的像素點(diǎn)構(gòu)成的, 所以圖像的積分就是求和過程。圖像的積分圖中每個(gè)像素點(diǎn)的值, 都是原圖像中該點(diǎn)左上角圖像的所有點(diǎn)像素值之和。建立數(shù)組A作為積分圖像, 其長寬與原圖像相等, 其中每點(diǎn)存放的是該點(diǎn)與圖像原點(diǎn)構(gòu)成的矩形中所有點(diǎn)像素值之和, 表示為
(4)
其中I(x,y)為圖像(x,y)位置點(diǎn)的像素值。積分圖像可以采用增量計(jì)算方式
S(x,y)=S(x,y-1)+S(x-1,y)-S(x-1,y-1)+I(x,y)
(5)
其中初始邊界:S(-1,y)=S(x,-1)=S(-1,-1)=0。
將積分圖像技術(shù)運(yùn)用于NLM算法中, 對(duì)算法進(jìn)行加速。首先構(gòu)造關(guān)于像素值的差值積分圖像
(6)
其中st(z)=‖v(z)-v(z+t)‖2,St(x)=st(x)+St(x1-1,x2)-St(x1,x2-1)-St(x1-1,x2-1)。
計(jì)算鄰域v(x)和v(y)之間的距離公式如下
其中ds為鄰域窗口半徑,d為鄰域窗口直徑。利用積分圖像加速后, 非局部均值部分算法時(shí)間復(fù)雜度降低為O(ND2), 其中,D為搜索窗口直徑。
非局部均值算法的基本思想是當(dāng)前像素的估計(jì)值由圖像中與它具有相似鄰域結(jié)構(gòu)的像素加權(quán)平均得到。利用該思想, 在其他步驟不變的情況下, 當(dāng)前像素的估計(jì)值用與當(dāng)前像素具有相似鄰域結(jié)構(gòu)的像素根據(jù)權(quán)重求中值得到的像素值代替。
筆者提出的二步交叉非局部混合濾波算法步驟如下。
1) 讀入含有噪聲的彩色圖像。分離出R、G、B3個(gè)色道, 分別對(duì)3個(gè)色道進(jìn)行如下處理。
2) 首先進(jìn)行預(yù)處理。當(dāng)圖像中的像素點(diǎn)的灰度值為0、1、254或255時(shí), 使用非局部中值濾波進(jìn)行去椒鹽噪聲處理。
3) 對(duì)圖像整體采用積分加速的非局部均值濾波進(jìn)行處理, 去除高斯噪聲等。
4) 對(duì)圖像整體采用非局部中值濾波進(jìn)行處理, 進(jìn)一步去除椒鹽噪聲。
5) 將處理完成的3個(gè)色道合并, 顯示處理后的彩色圖像。
算法流程如圖1所示。
圖1 快速二步交叉非局部混合濾波算法流程圖Fig.1 Diagram of fast two-step cross non-local hybrid filtering method
實(shí)驗(yàn)使用Windows10操作系統(tǒng), 實(shí)驗(yàn)環(huán)境為Matlab R2017b。為驗(yàn)證筆者算法的可行性和有效性, 分別對(duì)5張公開測(cè)試圖像Baboon、 Barb、 Bark、 Gray和Lena進(jìn)行測(cè)試。將上述圖像進(jìn)行不同程度噪聲污染后, 采用未改進(jìn)的算法和改進(jìn)后算法進(jìn)行對(duì)比實(shí)驗(yàn)和分析。其中非局部中值部分算法鄰域窗口大小為3×3, 搜索窗口大小為5×5, 腐蝕系數(shù)為3。非局部均值算法鄰域窗口大小為5×5, 搜索窗口大小為11×11, 腐蝕系數(shù)為10。實(shí)驗(yàn)結(jié)果如圖2~圖5所示。
除了視覺效果, 峰值信噪比(PSNR: Peak Signal-to-Noise Ratio)和算法運(yùn)行時(shí)間也是衡量算法優(yōu)劣的指標(biāo), 信噪比數(shù)值大表示去噪效果好, 算法運(yùn)行速度越短表示算法時(shí)間復(fù)雜度越低。為更好地顯示改進(jìn)后算法的優(yōu)越性, 筆者還從信噪比PSNR和算法運(yùn)行時(shí)間上對(duì)實(shí)際結(jié)果進(jìn)行量化。5張圖像量化結(jié)果如表1所示。
圖2 原圖Fig.2 Source images
圖3 加噪聲后圖像示意圖Fig.3 Noisy images
表1 5張圖像量化結(jié)果對(duì)比表
綜上所述, 傳統(tǒng)的非局部濾波與快速二步交叉非局部混合濾波相比, 后者的各項(xiàng)性能明顯優(yōu)于前者。因此, 快速二步交叉非局部混合濾波處理噪聲效果更加理想, 更適合處理混合噪聲。
筆者針對(duì)傳統(tǒng)的非局部濾波在去除被混合噪聲干擾的圖像時(shí), 去噪速度過慢和去噪效果不佳的問題, 通過積分圖像加速技術(shù)改進(jìn)非局部均值濾波, 并融合非局部中值濾波和改進(jìn)的非局部均值濾波, 提高算法的運(yùn)行速度, 改善混合噪聲的去噪效果。實(shí)驗(yàn)證明, 該算法的運(yùn)行速度有了明顯提升, 混合噪聲的去除也達(dá)到了更加理想效果。