1. 程式人生 > >opencv學習(十):高斯模糊理論知識

opencv學習(十):高斯模糊理論知識

理論知識:

參考連結:

對Photoshop高斯模糊濾鏡的演算法總結http://www.cnblogs.com/hoodlum1980/archive/2008/03/03/1088567.html

Python計算機視覺3:模糊,平滑,去噪https://www.cnblogs.com/smallpi/p/4562345.html

引言:

影象的模糊和平滑是同一個層面的意思,平滑的過程就是一個模糊的過程。

而影象的去噪可以通過影象的模糊、平滑來實現(影象去噪還有其他的方法)

那麼怎麼才能對一幅影象進行模糊平滑呢?

影象的模糊平滑是對影象矩陣進行平均的過程。相比於影象銳化(微分過程),影象平滑處理是一個積分的過程。

影象平滑過程可以通過原影象和一個積分運算元進行卷積來實現。

運算元介紹:

全1運算元  最簡單的積分運算元就是全1運算元

利用全1運算元可以對影象進行模糊平滑操作,有一定的去噪能力。

 高斯運算元   利用高斯運算元進行模糊處理就是我們常聽到的高斯模糊。

 標準差為σ的高斯分佈如下式

我們可以通過numpy模組的fromfunction()方法來生成高斯運算元,程式碼及結果如下:

import numpy as np

# 乘以100是為了使運算元中的數便於觀察
# sigma指定高斯運算元的標準差

def func(x,y,sigma=1):
    return 100*(1/(2*np.pi*sigma))*np.exp(-((x-2)**2+(y-2)**2)/(2.0*sigma**2))

# 生成標準差都2的5*5高斯運算元
a = np.fromfunction(func,(5,5),sigma=2)

print(a)
'''
結果:
[[ 2.92749158  4.25947511  4.82661763  4.25947511  2.92749158]
 [ 4.25947511  6.19749972  7.02268722  6.19749972  4.25947511]
 [ 4.82661763  7.02268722  7.95774715  7.02268722  4.82661763]
 [ 4.25947511  6.19749972  7.02268722  6.19749972  4.25947511]
 [ 2.92749158  4.25947511  4.82661763  4.25947511  2.92749158]]
'''

對上面的5*5高斯運算元每個元素進行四捨五入,可以得到下面矩陣

 

看到有些地方直接用上面的矩陣對影象進行高斯模糊,實際上是運用的是標準差為2的高斯近似運算元。