冒泡...十一月中旬啦...周末愉快吶!
高斯濾波
先引入兩個(gè)問(wèn)題。
1.圖像為什么要濾波?
答:a.消除圖像在數(shù)字化過(guò)程中產(chǎn)生或者混入的噪聲。
b.提取圖片對(duì)象的特征作為圖像識(shí)別的特征模式。
2.濾波器該如何去理解?
答:濾波器可以想象成一個(gè)包含加權(quán)系數(shù)的窗口或者說(shuō)一個(gè)鏡片,當(dāng)使用濾波器去平滑處理圖像的時(shí)候,就是把通過(guò)這個(gè)窗口或者鏡片去看這個(gè)圖像。
濾波器分為很多種,有方框?yàn)V波、均值濾波、高斯濾波等。
高斯濾波是一種線性平滑濾波,適用于消除高斯噪聲。
所以在講高斯濾波之前,先解釋一下什么是高斯噪聲?
高斯噪聲
首先,噪聲在圖像當(dāng)中常表現(xiàn)為一引起較強(qiáng)視覺(jué)效果的孤立像素點(diǎn)或像素塊。簡(jiǎn)單來(lái)說(shuō),噪聲的出現(xiàn)會(huì)給圖像帶來(lái)干擾,讓圖像變得不清楚。
高斯噪聲就是它的概率密度函數(shù)服從高斯分布(即正態(tài)分布)的一類噪聲。如果一個(gè)噪聲,它的幅度分布服從高斯分布,而它的功率譜密度又是均勻分布的,則稱它為高斯白噪聲。高斯白噪聲的二階矩不相關(guān),一階矩為常數(shù),是指先后信號(hào)在時(shí)間上的相關(guān)性。
高斯濾波器是根據(jù)高斯函數(shù)的形狀來(lái)選擇權(quán)值的線性平滑濾波器
所以接下來(lái)再講解一下高斯函數(shù)和高斯核。
高斯函數(shù)

注:σ的大小決定了高斯函數(shù)的寬度。
高斯核
理論上,高斯分布在所有定義域上都有非負(fù)值,這就需要一個(gè)無(wú)限大的卷積核。實(shí)際上,僅需要取均值周圍3倍標(biāo)準(zhǔn)差內(nèi)的值,以外部份直接去掉即可。
高斯濾波的重要兩步就是先找到高斯模板然后再進(jìn)行卷積,模板(mask在查閱中有的地方也稱作掩膜或者是高斯核)。所以這個(gè)時(shí)候需要知道它怎么來(lái)?又怎么用?
舉個(gè)栗子:
假定中心點(diǎn)的坐標(biāo)是(0,0),那么取距離它最近的8個(gè)點(diǎn)坐標(biāo),為了計(jì)算,需要設(shè)定σ的值。假定σ=1.5,則模糊半徑為1的高斯模板就算如下

這個(gè)時(shí)候我們我們還要確保這九個(gè)點(diǎn)加起來(lái)為1(這個(gè)是高斯模板的特性),這9個(gè)點(diǎn)的權(quán)重總和等于0.4787147,因此上面9個(gè)值還要分別除以0.4787147,得到最終的高斯模板。

高斯濾波計(jì)算
有了高斯模板,那么高斯濾波的計(jì)算便順風(fēng)順?biāo)恕?br>
舉個(gè)栗子:
假設(shè)現(xiàn)有9個(gè)像素點(diǎn),灰度值(0-255)的高斯濾波計(jì)算如下:

將這9個(gè)值加起來(lái),就是中心點(diǎn)的高斯濾波的值。
對(duì)所有點(diǎn)重復(fù)這個(gè)過(guò)程,就得到了高斯模糊后的圖像。
高斯濾波步驟
綜上可以總結(jié)一下步驟:
(1)移動(dòng)相關(guān)核的中心元素,使它位于輸入圖像待處理像素的正上方
(2)將輸入圖像的像素值作為權(quán)重,乘以相關(guān)核
(3)將上面各步得到的結(jié)果相加做為輸出
簡(jiǎn)單來(lái)說(shuō)就是根據(jù)高斯分布得到高斯模板然后做卷積相加的一個(gè)過(guò)程。
代碼實(shí)現(xiàn):
#高斯函數(shù)
void GaussianBlur(InputArray src, //輸入圖像
OutputArray dst, //輸出圖像
Size ksize, //內(nèi)核的大小
double sigmaX, //高斯核函數(shù)在X方向的標(biāo)準(zhǔn)偏差
double sigmaY=0, //高斯核函數(shù)在Y方向的標(biāo)準(zhǔn)偏差
intborderType=BORDER_DEFAULT )
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc,char** argv) {
//載入原圖
Mat image = imread("Gaussian.jpg");
//創(chuàng)建窗口
namedWindow("高斯濾波【原圖】");
namedWindow("高斯濾波【效果圖】");
//進(jìn)行濾波操作
Mat out;
GaussianBlur(image,out,Size(3,3),0,0);
//顯示
imshow("高斯濾波【原圖】", image);
imshow("高斯濾波【效果圖】", out);
waitKey();
return(0);
}
參考資料:(https://www.cnblogs.com/qiqibaby/p/5289977.html)
(https://blog.csdn.net/guoyunfei123/article/details/81660639)
Ending~水逆來(lái)了誒 就希望順順利利挺過(guò)去吧!干巴爹!