龔志廣 劉曉柳 尹慧敏
(河北建筑工程學院,河北 張家口 075000)
本文先對椒鹽和高斯噪聲進行介紹,首先對我們的數(shù)據(jù)集圖像加入高斯和椒鹽噪聲,對比傳統(tǒng)的濾波器對這兩種噪聲的去噪的效果,然后重點采用神經(jīng)網(wǎng)絡的方法搭建卷積自編碼器降噪模對原始圖像加入不同程度高斯噪聲,逐漸調(diào)整學率和迭代次數(shù),使損失值降到最低效果最好.通過對比降噪后的圖像和原始圖像之間的差異來評估降噪模型的優(yōu)劣.
圖像帶的噪音的類型也有許多,主要有椒鹽噪音、泊松噪聲、乘性噪音以及高斯噪聲.通過專家們大量的試驗研究,所拍攝獲得的圖像中大多帶椒鹽噪音和高斯噪聲,所以本論文將重點闡述高斯噪聲和椒鹽噪音問題[2].
圖像噪聲中高斯噪聲占絕大一部分,它主要由于在拍照過中的產(chǎn)生的亮度不均勻,圖像傳感器長時間工作造成的發(fā)熱等原因造成的,本文章加入符合正態(tài)分布的σ不同程度的高斯噪聲來模擬現(xiàn)實中的圖像噪聲,高斯噪聲的概率密度為正態(tài)分布,公式如下.
高斯分布(正態(tài)分布):
(1)
注:μ是高斯函數(shù)的偏移,σ是高斯函數(shù)標準差.
下面分別展示了對圖像加入高斯為25和40的高斯噪聲后的效果圖.
陳遠景副廳長到永嘉縉云調(diào)研(省廳執(zhí)法監(jiān)察局〈監(jiān)察總隊〉) ...................................................................12-12
圖1 含高斯程度25的噪聲 圖2 含高斯程度40的噪聲
椒鹽噪聲在圖像上表現(xiàn)出來的形式是黑白點,椒鹽噪聲是拍攝過程中受到莫名而來的強烈干擾導致的,椒鹽噪聲用中值濾波的去除效果會相對來說比較好[3].下面是對圖像加入30%的椒鹽噪聲后的效果圖:
圖3 含30%的椒鹽噪聲
在圖像處理過程中噪聲的存在帶來了很多困難,所以對收集的圖像需要濾波處理也就是降噪.在圖像降噪之后才能更好的進行下一步的工作.降噪的任務也是非常關(guān)鍵的,決定了最后圖像處理的成敗.
均值濾波器通過非線性的方式,用每個點的旁邊像素點的中值來代表圖像的所有像素點的值,這樣它就更接近的真實值,來去除存在的噪聲點[4].具體是通過一個滑動窗口,把滑動窗口內(nèi)的像素值通過升序或降序的操作進行排序,最后用中值進行填充.中值濾波對椒鹽噪聲去除的效果比較好.中值濾波公式如下:
(2)
均值濾波器通過線性的方式,平均了整個窗口區(qū)域內(nèi)的所有圖像值,但平均濾波器自身也存在著固有的缺點,就是它既無法很好地保留圖像細節(jié),在對圖像去噪的同時又損害了圖像的細節(jié)部分,因而使圖象更加模糊不清,也無法很好地消除噪聲點.對椒鹽噪音的表現(xiàn)不好,對高斯噪聲則比較好,因為高斯噪聲服從正態(tài)分布所以對均值噪音為零可以用均值濾波器[5].均值濾波器公式如下:
(3)
下面是在圖像中加入椒鹽噪聲和高斯噪聲,然后用中值濾波和均值濾波進行降噪后的結(jié)果圖:
圖4 椒鹽噪聲原圖 圖5 中值濾波后結(jié)果 圖6 均值濾波后結(jié)果
圖7 高斯噪聲原圖像 圖8 中值濾波后結(jié)果 圖9 均值濾波后結(jié)果
可以看到用中值濾波器對椒鹽噪聲去除的結(jié)果,還是會有一些噪聲點不能去除,去除的不是特別全面而且由于像素值要進行排序,所以運行的時間會很長.中值濾波器去除高斯噪聲會改變原始圖像的色調(diào),可以看到用均值濾波器對椒鹽噪聲去除的結(jié)果,效果很差,噪聲沒有明顯的去除,均值濾波器對高斯噪聲的去除可以看出效果比較好但是使圖像變得很模糊,所以本文采用卷積自編碼對圖像降噪.
用卷積自編碼器來實現(xiàn)對圖像進行降噪,充分利用卷積神經(jīng)網(wǎng)絡強大的學習能力獲取圖像的特征.卷積自編碼就是將卷積神經(jīng)網(wǎng)絡和自編碼相結(jié)合,其中卷積神經(jīng)網(wǎng)絡的卷積變換使用卷積層、最大池化層、上采樣層和激活函數(shù)作為神將網(wǎng)絡的主要組成部分,它是一種無監(jiān)督的學習模型,由是由兩部分構(gòu)成,一部分是編碼器,另一部分是解碼器[6].編碼器是對原始的輸入圖像進行特征壓縮降維提取圖像的特征信息.編碼器一個逆向的神經(jīng)網(wǎng)絡會把壓縮的圖像特征進行還原.
降噪卷積自編碼的原理就是把帶噪聲的數(shù)據(jù)集輸入到自編碼中,原始數(shù)據(jù)集作為輸出,訓練這個自編碼器模型,反復訓練迭代改變損失函數(shù)的誤差項來使結(jié)果更精確[7].讓模型通過卷積自編碼器不斷地學習和優(yōu)化降噪的過程,通過迭代的次數(shù)和加入不同程度的高斯噪聲訓練模型不斷的進行實驗從而使降噪效果達到最優(yōu)[8].
通過爬蟲技術(shù)在網(wǎng)頁上爬取了3000張圖片準備數(shù)據(jù)集,其中2000張為訓練集1000張為驗證集,對圖像加入不同程度的高斯噪聲,首先對圖像進行預處理:把圖像裁剪到指定像素范圍內(nèi),所以把爬到的圖片尺寸設置為固定的244*244像素,對圖像進行歸一化:使圖像中每個像素點的數(shù)字值在0到1之間.然后把帶噪聲的圖像輸入到搭建的降噪自動編碼器網(wǎng)絡模型中進行訓練.通過損失值對模型進行反向傳播,就能達到降噪的模型.之后再通過100張圖片對訓練好的降噪網(wǎng)絡模型的降噪效果進行測試.
分別加入不同程度的高斯噪聲,測試降噪自編碼器模型的降噪效果,在梯度下降過程中使用損失函數(shù)的值來調(diào)整參數(shù)使網(wǎng)絡優(yōu)化,隨著迭代次數(shù)的增加,損失值越來越低,但是當?shù)螖?shù)到達一定值后效果會越來越差或者考慮到訓練時間和耗費資源等其他的成本因素,比如300次的迭代效果和350次的迭代效果一樣,那就可以訓練300次就足夠了.這個預測的效果就可以用損失函數(shù)的值來評估.
通過卷積自編碼器對圖像降噪,將降噪后的圖像和原始圖像做比較,來評估降噪模型效果.用均方誤差損失函數(shù)來檢測模型的預測結(jié)果和真實結(jié)果之間的誤差,誤差值越大那么預測效果越差.
均方誤差神經(jīng)網(wǎng)絡中最常用的來評估模型效果的誤差函數(shù),它是預測值與目標值之間差值平方和的均值,使用梯度下降算法,隨著誤差的減小,梯度也在減小,利于約束[5].
(4)
通過一些圖像來驗證模型的降噪效果左上角的圖像是加入了σ=25的高斯噪聲的效果,右上角的圖像是輸入到訓練好的自動編碼器模型經(jīng)過迭代了30次的效果,左下角是迭代了60次的效果,右下角是迭代了100次的效果,最后的輸出圖像在效果上更好,圖像更清晰.下面是針對高斯程度為25的噪聲圖像分別進行不同次數(shù)的迭代效果圖.
圖10 高斯程度為25噪聲圖像 圖11 迭代30次恢復圖像
圖12 迭代60次恢復圖像 圖13 迭代100次恢復圖像
下面向圖片中加入σ=30的高斯噪聲,分別迭代30次、60次、100次的訓練降噪模型降噪后的效果圖.
圖14 高斯程度為30噪聲圖像 圖15 迭代30次恢復圖像
圖16 迭代60次恢復圖像 圖17 迭代100次恢復圖像
可以看出用卷積自編碼器對加入了高斯噪聲的圖像進行降噪,迭代了100次之后效果無論加入多少的高斯噪聲降噪效果都很好,既把圖像噪聲點去除了又很清楚.
采用學習率為lr=0.003,迭代100次訓練的結(jié)果,模型的loss隨訓練的輪數(shù)的增加緩慢下降然后趨于穩(wěn)定,雖然在模型的訓練的初始階段,loss出現(xiàn)大幅度震蕩變化,只要數(shù)據(jù)量足夠,模型正確,迭代的次數(shù)足夠長,最終模型會趨于約束的狀態(tài),接近最優(yōu)值.可以看到訓練的模型效果非常好,隨著迭代次數(shù)的增加損失在逐漸的下降,迭代100次之后損失達到最低幾乎接近于零.下面是訓練集和測試集損失函數(shù)圖.
圖18 訓練集和測試集損失函數(shù)圖
本實驗主要是通過python語言pytorch集成環(huán)境中完成.數(shù)據(jù)集的準備、模型搭建及訓練,加入不同程度的高斯噪聲,用隨機梯度下降算法來更新網(wǎng)絡參數(shù).實驗流程圖,下面是整個卷積自編碼器降噪的流程圖.
圖19 卷積自編碼器降噪流程圖
圖像降噪在圖像處理中起著關(guān)鍵的作用,本文展示了傳統(tǒng)的均值濾波和中值濾波對圖像中最普遍的噪聲的降噪情況.包括以下情況:
(1)中值濾波器:對椒鹽噪聲去除的結(jié)果:效果很好但還會有部分噪聲點不能完全去除.對高斯噪聲去除的結(jié)果:會改變原始圖像的色調(diào).
(2)均值濾波器:對椒鹽噪聲去除的結(jié)果:效果很差,絕大多數(shù)的噪聲都沒去除.對高斯噪聲去除的結(jié)果:是原始圖像變得很模糊.
重點介紹了降噪自編碼器對高斯噪聲去噪.包括以下情況:
(1)分別加入了程度為25和30的高斯噪聲,然后訓練降噪自編碼模型的迭代次數(shù)到100次訓練的降噪效果最好.
(2)迭代30次、60次、100次的降噪效果以可視化視圖更直觀的展現(xiàn)出來.
(3)本文章只用了損失函數(shù)來評估模型的降噪效果.