數字圖像處理(10):圖像復原(去噪,C語言)

1. 復原被加性高斯噪聲污染的圖像

在數字圖像中的高斯噪聲的主要來源出現在採集期間。 由於不良照明和/或高溫引起的傳感器噪聲。在數字圖像處理中,可以使用空間濾波器來降低高斯噪聲,但是當對圖像進行平滑時,結果可能導致精細縮放的圖像邊緣和細節的模糊,因爲它們也對應於被阻擋的高頻。

用於噪聲去除的常規空間濾波技術包括:平均(卷積)濾波,中值濾波和高斯平滑。
在這裏插入圖片描述

分析:對於加性高斯噪聲污染的圖像分別用了3x3算術均值濾波,3x3幾何均值濾波,3x3中值濾波。可以看到幾何均值濾波相對於算術均值濾波要更清晰一些。相比而言,中值濾波效果不如均值濾波效果好(在高斯噪聲污染情況下)。

2. 復原被椒鹽噪聲污染的圖像

椒鹽噪聲也稱爲脈衝噪聲,是圖像中經常見到的一種噪聲,它是一種隨機出現的白點或者黑點,可能是亮的區域有黑色像素或是在暗的區域有白色像素(或是兩者皆有)。鹽和胡椒噪聲的成因可能是影像訊號受到突如其來的強烈干擾而產生、類比數位轉換器或位元傳輸錯誤等。例如失效的感應器導致像素值爲最小值,飽和的感應器導致像素值爲最大值。
在這裏插入圖片描述

分析:對於椒鹽噪聲污染的圖像分別用了3x3算術均值濾波,3x3幾何均值濾波,3x3中值濾波。可以看到對於椒鹽噪聲來講,中值濾波是三個當中最好的選擇。其中幾何均值濾波效果最差,不適合用於此種情況。

3. 代碼實現

平臺:vs2015
語言:C語言
3x3算術均值濾波關鍵代碼
在這裏插入圖片描述

3x3幾何均值濾波關鍵代碼
在這裏插入圖片描述

3x3中值濾波關鍵代碼
在這裏插入圖片描述

遇到的問題

在進行3x3幾何均值濾波的時候,得到的輸出圖像是這樣的
在這裏插入圖片描述

經檢查,打印其中的累乘結果,發現是因爲是溢出了(用的double型)。

想了想也是,8個0~255的數相乘,結果是挺大的。於是對像素的值進行了歸一化操作。

歸一化操作後能出結果,但結果也不對——
在這裏插入圖片描述
最後發現是由於改成歸一化後用了*=進行累乘。卻忘記了賦值1 的操作。導致當有一個計算結果是0的話,後面的計算結果全是零。
在這裏插入圖片描述

添加之後,問題解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章