opencv學習(十):高斯模糊理論知識
阿新 • • 發佈:2018-12-08
理論知識:
參考連結:
對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的高斯近似運算元。