opencv高斯濾波原理

2021-09-24 22:18:55 字數 1783 閱讀 5270

1、一維高斯分布:

2、二維高斯分布:

3、高斯濾波一般使用的*二維零均值*的高斯分布函式,通過高斯分布函式求出模板係數,例如乙個3*3的模板:以模板的中心位置為座標原點進行取樣,其中模板各個座標位置如下圖,x軸水平向右,y軸垂直向下,(x,y)表示

4、將各個位置的座標代入二維零均值高斯分布函式,計算出來的模板有兩種形式:

整數模板和小數模板,可以使用二維陣列來存放計算出的模板係數

①小數模板:

②整數模板:

5.標準差sigma對效果的影響:

sigma越小,高斯分布圖越高、窄,模板中心係數就越大,平滑效果就會差,相當於中心點進行點運算;

sigma越大,高斯分布圖越扁,寬,模板中心係數和周圍係數越接近,會逐漸近似於均值模糊,平滑效果好。

6.生成模板係數**:

void gaussianblur_demo(int ksize, double sigmax, double sigmay)

;模板各係數可儲存在二維陣列window裡面

int center = ksize / 2; //找到模板中心,模板中心座標為(0,0)

for(int i = 0; i < ksize; i++) //求模板各係數,正態分佈均值為0

}//整數模板需要歸一化,將模板第乙個係數換算為1;小數模板不需要歸一化

double k = 1 / window[0][0]; //對左上角係數歸一化處理

double summm = 0;

cout << endl;

for(int i = 0; i < ksize; i++)

}

void gaussianblur( inputarray src, outputarray dst, size ksize,

double sigmax, double sigmay = 0,

int bordertype = border_default );

引數src:可以有任意通道,深度為cv_8u, cv_16u, cv_16s, cv_32f or cv_64f。

引數dst:和原圖一樣的大小和型別。

引數ksize:寬,高可以不一樣,但必須是正、奇數,當為0時由sigma計算出。

引數sigmax:x方向的標準差

引數sigmay:y方向的標準差,如果為0,則將其設定為和sigmax相等,如果sigmax,sigmay均為0,則大小由ksize計算出

OpenCV 高斯濾波

一 前言 關於高斯濾波在我的前一篇文章 數字影象基本處理演算法 中有所談及那篇只是介紹了高斯濾波的應用,現在這一篇將著重簡介高斯濾波的原理和應用,一探個究竟!二 啥是高斯濾波?好吃麼?高斯濾波,說白了就是乙個函式來對輸入的訊號 其實這裡的訊號就是影象的畫素值 進行計算然後得出結果作為該訊號的值,只不...

OpenCV 高斯濾波實現

高斯濾波是一種線性平滑濾波,適用於消除高斯雜訊,廣泛應用於影象處理的減噪過程。通俗的講,高斯濾波就是對整幅影象進行加權平均的過程,每乙個畫素點的值,都由其本身和鄰域內的其他畫素值經過加權平均後得到。在影象處理中高斯濾波一般有兩種實現方式 一種是用離散化視窗滑窗卷積,另一種是通過傅利葉變換。最常見的就...

opencv 輪廓高斯濾波平滑

乙個小測試的題目 在影象上點選,找到與點選處相鄰的顏色相近的點集合,對該點集合提取輪廓,對該點集合輪廓平滑處理,顯示處理結果。include include using namespace std using namespace cv method findregion 漫水填充 fullname ...