當前位置: 華文問答 > 數碼

高斯模糊的原理是什麽,怎樣在界面中實作?

2017-01-19數碼

高斯模糊,聽起來很高大上,其實就是一種很基礎的數學演算法套用,不要被「高斯」迷惑了雙眼,它並沒有高斯本人那麽深不可測。。

高斯模糊之所以叫高斯模糊,是因為它運用了高斯的正態分布的密度函數,我記得是大二時候學的:

其中,μ是x的均值,σ是x的標準差(評論提醒)。由於每次計算都以當前計算點為原點,所以μ等於0。於是公式進一步簡化為:

在圖形上,正態分布是一種鐘形曲線,越接近中心,取值越大,越遠離中心,取值越小。


計算平均值的時候,我們只需要將"中心點"作為原點,其他點按照其在正態曲線上的位置,分配權重,就可以得到一個加權平均值。

而他的二維方程式是:

也就是說,把它運用於影像演算法中,就會使影像出現模糊的效果:


我從最基礎的開始舉例子,以一維方程式做起,將x,y軸分別進行高斯模糊。

我們假設σ為1.5吧,假設有x軸上三個像素點,中間點為原點:


帶入公式後,三個點的值為:

這3個像素的權重總和等於0.80858986,如果只計算這3個點的加權平均,還必須讓它們的權重之和等於1,因此上面3個值還要分別除以0.80858986。

那麽,這個數碼有什麽用呢?

我們都知道,每一個像素點,決定它色差的是RGB值,計算加權平均的時候要分別計算;

現在我們把GB設為0,只計算R,我們來假設一個點,R值為27,125,22:


將三個數碼乘以加權平均值後,分別為6.8391,61.6725,6.8391

而中心點的R值就變為 6.8391+61.6725+6.8391 = 75.5137 記為75;

變為:


就使像素點相對於旁邊兩點更加柔和了。

參考地址:
http://www. ruanyifeng.com/blog/201 2/11/gaussian_blur.html

http://www. swageroo.com/wordpress/ how-to-program-a-gaussian-blur-without-using-3rd-party-libraries/

http:// m.2cto.com/kf/201605/50 6616.html