簡(jiǎn)單易懂的高斯濾波

冒泡...十一月中旬啦...周末愉快吶!

高斯濾波

先引入兩個(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ì)算如下:


參考來(lái)源:(https://blog.csdn.net/nima1994/article/details/79776802)

將這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ò)去吧!干巴爹!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容