理解高斯濾波(Gaussian Filter)

高斯函數(shù)在學(xué)術(shù)領(lǐng)域運用的非常廣泛。 寫工程產(chǎn)品的時候,經(jīng)常用它來去除圖片或者視頻的噪音司致,平滑圖片, Blur處理。我們今天來看看高斯濾波, Gaussian Filter聋迎。
1D的高斯函數(shù)
一維的高斯函數(shù)(或者叫正態(tài)分布)方程跟圖形如下:
G(x) = \frac{1}{\sqrt{2\pi\sigma^2}} e^{-\frac{x^2}{2\sigma^2}}

image.png

\mu是均值脂矫;\sigma 是標(biāo)準(zhǔn)方差。它有個重要特點是 -\sigma 到+\sigma 之間的G(x)與x軸圍成的面積占全部面積的68.2%. -2\sigma 到+2\sigma之間的面積占95%霉晕。-3\sigma 到+3\sigma之間的面積占99.7%庭再。
如果我們給-3\sigma 到+3\sigma區(qū)間, 它幾乎包括了所有可能的點捞奕。這個特性對Filter kernel的生成很重要。

2D的高斯函數(shù)
G(x, y) = \frac{1}{\sqrt{2\pi\sigma^2}} e^{-\frac{x^2 + y^2}{2\sigma^2}}

image.png

所謂高斯濾波操作拄轻,其實就是用高斯函數(shù)對image做卷積計算颅围。但一般圖像在計算機中一般是離散的3D矩陣,而高斯函數(shù)是連續(xù)函數(shù)恨搓,所以我們要從連續(xù)高斯函數(shù)中采樣生成離散的2D矩陣院促,即Gaussian Filter Kernel。 我們可以控制Kernal的size奶卓,讓它的點都落在-3\sigma 到+3\sigma區(qū)間內(nèi)一疯。

生成高斯kernel

// Function to create Gaussian filter; sigma is standard deviation
Matrix getGaussian(int height, int width, double sigma)
{
    Matrix kernel(height, Array(width));
    // sum is for normalization 
    double sum=0.0;
    int i,j;
    
   // generating the kernel 
    for (i=0 ; i<height ; i++) {
        for (j=0 ; j<width ; j++) {
            // using gaussian function to generate gaussian filter 
            kernel[i][j] = exp(-(i*i+j*j)/(2*sigma*sigma))/(2*M_PI*sigma*sigma);
            sum += kernel[i][j];
        }
    }
   
   // normalising the Kernel 
    for (i=0 ; i<height ; i++) {
        for (j=0 ; j<width ; j++) {
            kernel[i][j] /= sum;
        }
    }

    return kernel;
}

代碼來源

比如,我們用高斯函數(shù)生成了一個5x5夺姑, \sigma是1的高斯核2D矩陣:

image.png

它有幾個特點:

  1. 最中間的值最大墩邀,值向周圍遞減
  2. \sigma越大,高斯函數(shù)的峰越寬盏浙,臨接的數(shù)值差越大

對圖片應(yīng)用高斯Filter

對某個像素點image[i][j]眉睹,F(xiàn)itler對原圖對應(yīng)的像素點做點乘,相加废膘。 生成新的值竹海。

https://www.youtube.com/watch?v=C_zFhWdM4ic

材料來源

Image applyFilter(Image &image, Matrix &filter){
    assert(image.size()==3 && filter.size()!=0);

    int height = image[0].size();
    int width = image[0][0].size();
    int filterHeight = filter.size();
    int filterWidth = filter[0].size();
    int newImageHeight = height-filterHeight+1;
    int newImageWidth = width-filterWidth+1;
    int d,i,j,h,w;

    Image newImage(3, Matrix(newImageHeight, Array(newImageWidth)));
    
   // iter the image pixel
    for (d=0 ; d<3 ; d++) {
        for (i=0 ; i<newImageHeight ; i++) {
            for (j=0 ; j<newImageWidth ; j++) {
                // using filter convolute the image matrix
                for (h=i ; h<i+filterHeight ; h++) {
                    for (w=j ; w<j+filterWidth ; w++) {
                        newImage[d][i][j] += filter[h-i][w-j]*image[d][h][w];
                    }
                }
            }
        }
    }

    return newImage;
}

如下圖,圖片被平滑處理了丐黄。


image.png

More:

https://suelan.github.io/2019/07/12/Gaussian-Filter/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末斋配,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子灌闺,更是在濱河造成了極大的恐慌艰争,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桂对,死亡現(xiàn)場離奇詭異甩卓,居然都是意外死亡,警方通過查閱死者的電腦和手機蕉斜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門逾柿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宅此,你說我怎么就攤上這事机错。” “怎么了父腕?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵毡熏,是天一觀的道長。 經(jīng)常有香客問我侣诵,道長痢法,這世上最難降的妖魔是什么狱窘? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮财搁,結(jié)果婚禮上蘸炸,老公的妹妹穿的比我還像新娘。我一直安慰自己尖奔,他們只是感情好搭儒,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著提茁,像睡著了一般淹禾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茴扁,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天铃岔,我揣著相機與錄音,去河邊找鬼峭火。 笑死毁习,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卖丸。 我是一名探鬼主播纺且,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼稍浆!你這毒婦竟也來了载碌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤衅枫,失蹤者是張志新(化名)和其女友劉穎嫁艇,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體为鳄,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡裳仆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年腕让,在試婚紗的時候發(fā)現(xiàn)自己被綠了孤钦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡纯丸,死狀恐怖偏形,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情觉鼻,我是刑警寧澤俊扭,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布承冰,位于F島的核電站莫辨,受9級特大地震影響石景,放射性物質(zhì)發(fā)生泄漏贞滨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一庸蔼、第九天 我趴在偏房一處隱蔽的房頂上張望解总。 院中可真熱鬧,春花似錦姐仅、人聲如沸花枫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽劳翰。三九已至,卻和暖如春馒疹,著一層夾襖步出監(jiān)牢的瞬間佳簸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工行冰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留溺蕉,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓悼做,卻偏偏與公主長得像疯特,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子肛走,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容