高斯模糊原理及實現

2021-05-22 06:03:27 字數 1687 閱讀 3367

高斯模糊即對指定畫素和其周圍畫素進行加權平均來得到最終結果,使用高斯分布作為濾波器。

高斯分布即為正太分布,1維和2維正態分佈密度函式如下

這裡設μ=0, ρ=0.

u為期望,σ為標準差,μ±σ為函式影象的拐點,σ越大曲線越矮越寬,即取樣範圍越大。

在這兩個函式中,x,y表示相對於中心畫素(0,0)的偏移量(以畫素為單位)

這兩個函式的結果表示在x或(x,y)處的畫素的權重,或者說在模糊後周圍畫素分別將產生多少的貢獻來影響目標畫素.

一維高斯函式當標準差為1時的一些值:

g(0) = 0.3989422804

g(1) = g(-1) = 0.2419707245

g(2) = g(-2) = 0.0539909665

g(3) = g(-3) = 0.0044318484

它們用於計算高斯模糊的含義如下:

●在x=0處,即目標畫素處,畫素顏色的0.39應被保持.

●在x=1和x=-1處,畫素顏色的0.24應被保持.

取樣畫素越多,結果就越精確,根據高斯分布的3σ原則,99.73%的值會落在 (μ-3σ, μ+3σ)中,所以取樣畫素應根據σ的取值來決定,不宜過多.

為每個取樣畫素應用高斯函式計算出它的權重之後,乘上此畫素的顏色值,得到此畫素為目標畫素顏色的貢獻值,最後將所有取樣點的貢獻值加起來就可以得到被模糊後目標畫素的顏色.

使用以上方法進行模糊計算後會出現乙個問題,即被模糊後的影象會變暗,當σ較大時尤甚.

比如:設待模糊的紋理是一張單通道的純白色紋理,這樣每個畫素值都為1.

對某一畫素p,在第一遍高斯模糊即橫向的模糊後

p_h_color = g(0)+g(-1)+g(1)+g(-2)+g(2) = 0.990805625.

要保持原先的亮度,模糊後的結果也應該為1才對,當第二遍模糊處理之後,結果就更糟了

p_hv_color=0.9818147611.

所以值需要被修正,使此處模糊後的結果為1

augfactor = 1 / p_h_color = 1.009218543

將這個修正值乘到最後結果p_h_color上和p_hv_color上,即得到正確結果.

關於1維和2維的高斯函式

這裡有兩種選擇:

1.使用1d的版本兩次,一次水平,一次垂直(在上一次的基礎上), 基於高斯是卷積運算,將2d取樣區域分為兩個一維向量是可行的.

2.使用2d的版本一次

而使用1d版本做兩次模糊效率要高於使用2d版本

假設n為取樣區域的大小,即nxn, p為待模糊紋理中的畫素數目。

那麼:在1d版本中,一共要取樣2np次,即對每乙個畫素需取樣橫豎各n次。

在2d版本中,一共要取樣n2p次,即對每一畫素要取樣n2次。

高斯模糊的實現

**取自nvidia的soft shadows示例中

高斯模糊原理

二維高斯模糊,或者說高斯濾波,是影象處理中非常常見的操作。操作的核心是使用乙個從高斯分布中取樣得到的掩膜,或者叫核,和輸入中的每個畫素及其鄰域進行計算,結果儲存到輸出中。假設高斯核視窗尺寸為 2 w 1 2w 1 高斯分布的標準差為 則高斯核可以表示為矩陣的形式 由於高斯分布的概率密度函式的非零值區...

快速高斯模糊 實現及相干題目

2013年9月9日 原文 經過厲害博主imageshop的博文提示,我這裡實現了高斯模糊函式,然則有一下幾點題目向各位叨教商量 這個函式處理懲罰速度沒有imageshop博主描述的速度快,如何進步效力。高斯模糊後感觸感染整幅影象會向右下角平移必然間隔,沒有具體研究過演算法本身,如許是否為正常,有何解...

高斯模糊原理,演算法

詳解高斯濾波 高斯模糊的演算法原理 高斯濾波 線性平滑濾波,適用於消除高斯雜訊 具體操作是 用乙個模板 或稱卷積 掩模 掃瞄影象中的每乙個畫素,用模板確定的鄰域內畫素的加權平均灰度值去替代模板中心畫素點的值。高斯模糊 也叫高斯平滑 影象的高斯模糊過程就是影象與正態分佈做卷積。由於正態分佈又叫作高斯分...