2011-12-23 358 views
5

我試圖從圖像中去除高斯噪聲。我已經使用增加的噪聲自己:如何從MATLAB中的圖像中去除高斯噪聲?

nImg = imnoise(img,'gaussian',0,0.01); 

我現在需要用自己的過濾器來消除噪聲,或至少減少它。理論上,據我所知,使用ones(3)/9的卷積矩陣應該有所幫助,並且使用像[1 2 1; 2 4 2; 1 2 1]/9fspecial('gaussian',3)這樣的高斯卷積矩陣應該更好。然而,他們真的沒有這麼做: enter image description here

我是否缺少重要的東西?順便說一下,我需要使用卷積。

+3

平均濾波器(您的「one」濾波器)是一個糟糕的低通濾波器。高斯是一個更好的LPF。你在1 2 1變得失真的原因; 2 4 2; 1 2 1過濾器是因爲它沒有被正常化。 – 2011-12-23 18:43:35

+1

你對「1 2 1; 2 4 2; 1 2 1」是對的。我應該除以16而不是9。即使如此,它也不太好: [鏈接](http://img408.imageshack.us/img408/6176/resm.png) – shwartz 2011-12-24 10:32:15

回答

10

你不會錯過任何東西! 很明顯,你不能完全消除噪音。你可以嘗試不同的過濾器,但所有的人都會有一個權衡:

更大的噪音及低模糊VS噪音少+更模糊

它成爲你在想這更明顯採用以下方法:

任何基於卷積的方法都假定所有鄰居都具有相同的顏色。

但在現實生活中,圖像中有很多物體。因此,當您應用卷積時,會通過混合來自不同相鄰對象的像素導致模糊。

有更復雜的降噪方法,如:

  • 平均降噪
  • 雙邊濾波器
  • 模式匹配他們沒有使用卷積的消噪

。順便說一句,即使他們不能做魔術。

+0

謝謝。我已經在執行過程中看到了這種折衷,並且我也實現了中值去噪,這對於椒鹽噪聲非常有效,但對於高斯噪聲並不那麼重要。 但是,如何才能找到嘈雜而尖銳的圖像與太模糊但噪點較小的圖像之間的薄邊界? 我有幾個參數可以使用:矩陣維(小,大,方,矩形)和矩陣值(高斯,統一,其他一些奇怪的設置)。 那麼,我真的沒有什麼像樣的卷積嗎? – shwartz 2011-12-24 10:38:04

+1

@shwartz,不幸的是,沒有。您至少需要某種邏輯來檢測邊緣,拐角等,並會​​相應地對待它們。這不僅僅是**定義的卷積。 – 2011-12-24 11:51:39

+0

其實,這是令人鼓舞的,因爲這項任務是使用卷積(完全按照我的理解)。唯一的問題是找到一個「好」的方法,以及如何知道哪個結果是最好的。有什麼方法可以量化結果的質量嗎?例如,與原始無噪聲圖像之間的某種矩陣距離是否可以很好地確定我的結果的質量?或者還有其他一些常見的方法嗎? – shwartz 2011-12-24 15:14:29

0

你用高斯卷積矩陣犯了一個錯誤。你需要將它除以16而不是9,這樣它的總和等於1.這就是爲什麼使用該矩陣的結果圖像非常輕。

+0

謝謝,我知道。有人已在原始帖子下面發表評論。 – shwartz 2013-06-23 11:27:15

1

您可以使用wiener2當噪音是恆定功率(「白色」)添加 噪音,如高斯噪音時,效果最好。