高斯濾波器(針對高斯噪聲)
高斯噪聲是指它的概率密度函數服從高斯分布(即正態分布)的一類噪聲。常見的高斯噪聲包括起伏噪聲、宇宙噪聲、熱噪聲和散粒噪聲等等。
高斯濾波(Gaussian filter) 包含許多種,包括低通、帶通和高通等,我們通常圖像上說的高斯濾波,指的是 高斯模糊(Gaussian Blur) ,是一種 高斯低通濾波 ,其過濾調圖像高頻成分(圖像細節部分),保留圖像低頻成分(圖像平滑區域),所以對圖像進行 ‘高斯模糊’ 后,圖像會變得模糊。
高斯模糊
對于抑制?高斯噪聲
?(服從正態分布的噪聲) 非常有效。
高斯濾波是一種常用的圖像去噪方法,它通過在圖像上進行卷積操作來實現。
高斯濾波的計算過程:
高斯函數
在計算每個像素時,都把當前中心點看作坐標原點,可以使得均值 μ = 0?,簡化高斯函數的公式:
其中:
-
(x,y) 是核中某點相對于中心點的坐標
-
σ 是標準差(控制平滑程度)
高斯核的生成
高斯濾波的重要兩步就是先找到高斯核然后再進行卷積
生成示例(3×3高斯核,σ=1)
import numpy as npdef gaussian_kernel(size, sigma=1):kernel = np.fromfunction(lambda x, y: (1/(2*np.pi*sigma**2)) * np.exp(-((x-(size-1)/2)**2 + (y-(size-1)/2)**2)/(2*sigma**2)),(size, size))return kernel / np.sum(kernel) # 歸一化kernel = gaussian_kernel(3)
print(kernel)
輸出結果:
[[0.07511361 0.1238414 0.07511361][0.1238414 0.20417996 0.1238414 ][0.07511361 0.1238414 0.07511361]]
卷積計算
高斯濾波的卷積計算步驟如下:
-
核中心對準:將高斯核中心對準圖像的每個像素
-
對應相乘:核覆蓋區域的像素值與核權重逐點相乘
-
求和:將所有乘積結果相加
-
替換中心像素:用求和結果替換原中心像素值
計算示例(3×3區域):
圖像局部區域I:
[100 120 110]
[ 90 100 115]
[ 95 105 108]高斯核:
[[0.07511361 0.1238414 0.07511361][0.1238414 0.20417996 0.1238414 ][0.07511361 0.1238414 0.07511361]]計算后的結果:
[0.075 0.124 0.075]
[0.124 0.204 0.124]
[0.075 0.124 0.075]計算過程:
新中心值 = 100*0.075 + 120*0.124 + 110*0.075 +90*0.124 + 100*0.204 + 115*0.124 +95*0.075 + 105*0.124 + 108*0.075≈ 103.3
給原圖加上高斯噪聲,并繪制加噪后的像素值分布圖
經過高斯濾波處理后的圖像
?
歸一化
歸一化(Normalization)在圖像濾波和卷積運算中是一個關鍵步驟,它確保濾波操作不會改變圖像的整體亮度水平。
歸一化的基本定義
歸一化指的是將濾波器(卷積核)的所有權重值進行縮放,使得它們的總和等于1。數學表達式為:
歸一化核 = 原始核 / ∑(原始核所有元素)
為什么需要歸一化??
保持圖像亮度恒定
未經歸一化:卷積后圖像整體會變亮或變暗
kernel = np.array([[1, 1, 1],[1, 1, 1],[1, 1, 1]]) # 總和=9
# 應用該核會使每個像素值變為原來的9倍
歸一化后:?
normalized_kernel = kernel / 9 # 總和=1
不需要歸一化的特殊情況?
某些濾波器故意不歸一化:
- 邊緣檢測算子(如Sobel、Laplacian)
sobel_x = np.array([[-1, 0, 1],[-2, 0, 2],[-1, 0, 1]]) # 總和=0
-
銳化濾波器
-
這些濾波器需要保留灰度變化信息
中值濾波器(針對椒鹽噪聲)
中值濾波(Median Filter)是一種非線性濾波方法,主要用于去除圖像中的椒鹽噪聲(Salt-and-Pepper Noise)同時較好地保留圖像邊緣。它的計算過程與線性濾波器(如高斯濾波)完全不同。
基本計算步驟
對于一個像素點,中值濾波的計算過程如下:
-
定義濾波窗口:選擇一個奇數尺寸的鄰域窗口(如3×3、5×5等)
-
提取窗口內像素值:取出該窗口覆蓋的所有像素值
-
排序像素值:將這些像素值按從小到大(或從大到小)排序
-
取中值:選擇排序后的中間值作為該像素點的新值
-
替換原像素:用這個中值替換原圖像中對應位置的像素值
具體計算示例
假設我們有一個3×3的圖像區域和3×3的中值濾波窗口:
原始圖像區域(3×3):
[120, 125, 130,115, 255, 120, ← 中心像素255可能是噪聲(椒鹽噪聲)110, 105, 140]
計算過程:
-
提取所有9個像素值:[120, 125, 130, 115, 255, 120, 110, 105, 140]
-
排序:[105, 110, 115, 120, 120, 125, 130, 140, 255]
-
取中值(第5個值):120
-
用120替換原中心像素255
中值濾波的特點
-
非線性處理:不能表示為核卷積
-
去噪效果:特別適合去除椒鹽噪聲
-
邊緣保留:比均值濾波更好地保留邊緣
-
計算復雜度:比線性濾波高,因為涉及排序操作
-
窗口大小:通常使用奇數尺寸(3×3, 5×5等)
給圖像加入椒鹽噪聲,并去噪
?均值濾波器(簡單平滑)
均值濾波器(Mean Filter),也稱為簡單平滑濾波器或箱式濾波器(Box Filter),是最基礎的線性濾波器之一。
基本原理
均值濾波通過用鄰域像素的平均值代替中心像素值來實現圖像平滑:
-
線性操作:可以表示為卷積運算
-
均勻權重:濾波窗口內所有像素權重相同
-
平滑效果:減少圖像噪聲和細節
計算過程
對于一個N×N的均值濾波器:
-
定義濾波窗口:選擇濾波器尺寸(如3×3、5×5等)
-
遍歷圖像:對每個像素應用濾波窗口
-
計算平均值:計算窗口內所有像素的算術平均值
-
替換中心像素:用平均值替換原中心像素值、
數學表達式:
新像素值 = (1/N2) × Σ(窗口內所有像素值)
具體示例
考慮一個3×3的圖像區域:
[50, 60, 70]
[40, 255, 80] ← 中心像素255可能是噪聲
[30, 20, 90]
計算過程:
-
提取所有9個像素值:[50, 60, 70, 40, 255, 80, 30, 20, 90]
-
計算平均值:(50+60+70+40+255+80+30+20+90)/9 = 85
-
用85替換原中心像素255
應用場景
-
快速平滑:需要簡單快速平滑處理時
-
預處理:作為更復雜處理的預處理步驟
-
均勻區域處理:處理紋理較均勻的圖像區域
高斯濾波、均值濾波與中值濾波的全面對比
基本性質對比
特性 | 高斯濾波 | 均值濾波 | 中值濾波 |
---|---|---|---|
濾波器類型 | 線性濾波器 | 線性濾波器 | 非線性濾波器 |
計算復雜度 | 中等(可分離優化) | 低 | 高(需要排序) |
權重分配 | 中心權重高,邊緣權重低 | 均勻權重 | 無權重概念 |
歸一化要求 | 需要 | 需要 | 不需要 |
去噪效果對比
噪聲類型 | 高斯濾波表現 | 均值濾波表現 | 中值濾波表現 |
---|---|---|---|
高斯噪聲 | 效果最好 | 效果較好 | 效果一般 |
椒鹽噪聲 | 效果較差 | 效果差 | 效果最好 |
脈沖噪聲 | 效果差 | 效果差 | 效果極佳 |
邊緣保持能力
邊緣特性 | 高斯濾波 | 均值濾波 | 中值濾波 |
---|---|---|---|
邊緣模糊程度 | 中等(σ越大越模糊) | 嚴重 | 最小 |
銳利邊緣保持 | 較好 | 差 | 優秀 |
細節保留 | 中等 | 差 | 好 |
實際應用對比
高斯濾波最佳場景:
-
需要平滑但保留一定邊緣
-
預處理步驟(如Canny邊緣檢測前)
-
光學系統產生的自然模糊建模
均值濾波適用場景:
-
快速簡單平滑需求
-
計算資源有限的場景
-
均勻區域的噪聲去除
中值濾波不可替代場景:
-
椒鹽噪聲去除(舊照片修復)
-
需要保留銳利邊緣(醫學影像)
-
脈沖噪聲環境(工業檢測)
參考文章:
https://blog.csdn.net/a435262767/article/details/107115249