熱線電(dian)話:0755-23712116
郵箱:contact@legoupos.cn
地址:深圳市(shi)寶安(an)區沙井街道后亭茅洲山工業園(yuan)工業大廈全至(zhi)科技創新(xin)園(yuan)科創大廈2層2A
均值濾波器可以歸為低通濾波器,是一種線性濾波器,其輸出為鄰域模板內的像素的簡單平均值,主要用于圖像的模糊和降噪。
均值(zhi)濾(lv)(lv)(lv)(lv)波器(qi)(qi)的(de)概念非常(chang)的(de)直觀(guan),使(shi)用濾(lv)(lv)(lv)(lv)波器(qi)(qi)窗口內的(de)像(xiang)素的(de)平均灰度值(zhi)代替圖像(xiang)中的(de)像(xiang)素值(zhi),這(zhe)樣(yang)的(de)結果(guo)就是降低圖像(xiang)中的(de)“尖(jian)銳”變化。這(zhe)就造(zao)成,均值(zhi)濾(lv)(lv)(lv)(lv)波器(qi)(qi)可(ke)以降低噪(zao)聲(sheng)的(de)同時,也會模糊(hu)圖像(xiang)的(de)邊緣。均值(zhi)濾(lv)(lv)(lv)(lv)波器(qi)(qi)的(de)處理結果(guo)是過濾(lv)(lv)(lv)(lv)掉圖像(xiang)中的(de)“不(bu)相(xiang)關(guan)”細節,其中“不(bu)相(xiang)關(guan)”細節指的(de)是:與(yu)濾(lv)(lv)(lv)(lv)波器(qi)(qi)模板尺寸相(xiang)比較小的(de)像(xiang)素區域。
根據(ju)均值計算(suan)方法的(de)不同(tong),均值濾波器有以下幾種:
?算術均值濾波器
?幾何均值濾波器
?諧波均值濾波器
?逆諧波均值濾波器
算術均值濾波(bo)器 Arithmetic Mean Filter
這是最簡單的均值濾波器,可以去除均勻噪聲和高斯噪聲,但會對圖像造成一定程度的模糊。
令表示中心點在
處,大小為
的(de)(de)(de)(de)濾波器窗(chuang)口。算術均(jun)值(zhi)濾波器就是簡單的(de)(de)(de)(de)計算窗(chuang)口區域(yu)的(de)(de)(de)(de)像素(su)(su)均(jun)值(zhi),然后(hou)將均(jun)值(zhi)賦(fu)值(zhi)給窗(chuang)口中心點處的(de)(de)(de)(de)像素(su)(su):
其中,表示原始圖像,
表示均值濾波后得到的圖像。
基于上述公(gong)式,可以很容(rong)易的得到的算術均值濾波器的窗口模板,下面(mian)以3×3為(wei)例(li)
在OpenCV中(zhong),函數blur表示使用該(gai)模板(ban)的均(jun)值濾波器,其聲明如(ru)下:
void blur( InputArray src, OutputArray dst,
Size ksize, Point anchor = Point(-1,-1),
int borderType = BORDER_DEFAULT );
src是(shi)輸入圖像,dst為輸出圖像;ksize是(shi)濾波器(qi)模(mo)板(ban)窗口(kou)的大(da)小;后(hou)兩(liang)個(ge)參數分別表(biao)示,待處理像素在模(mo)板(ban)窗口(kou)的位(wei)置,默(mo)(mo)認值(zhi)是(shi)窗口(kou)的中心位(wei)置,所以窗口(kou)的大(da)小一般為奇(qi)數,最后(hou)一個(ge)參數表(biao)示對編解類型的處理,使(shi)用默(mo)(mo)認值(zhi)即可(ke)。其(qi)調用示例blur(src,dst,Size(5,5),模(mo)板(ban)窗口(kou)的大(da)小為5×5。
盒狀濾波器
當濾波器的(de)(de)模板(ban)的(de)(de)所有(you)的(de)(de)系數(shu)都相等時稱之(zhi)為(wei)盒狀濾波器 Box Filter。其使用的(de)(de)模板(ban)如下(3×3 為(wei)例):
當時,盒狀(zhuang)濾(lv)波器可以(yi)很(hen)方便的(de)計算(suan)圖像像素(su)鄰域的(de)和,對計算(suan)圖像的(de)各種積分(fen)特性例如(ru)圖像的(de)協(xie)方差矩陣,是很(hen)有幫助的(de)。OpenCV中的(de)函數boxFilter就(jiu)是盒狀(zhuang)濾(lv)波器,其聲明如(ru)下:
void boxFilter( InputArray src, OutputArray dst, int ddepth,
Size ksize, Point anchor = Point(-1,-1),
bool normalize = true,
int borderType = BORDER_DEFAULT );
和blur的(de)參(can)數(shu)(shu)比較(jiao)類似(si),所不同(tong)的(de)ddepth是濾波后(hou)圖像的(de)深度(du)(du),-1表示和原圖像的(de)深度(du)(du)相同(tong);參(can)數(shu)(shu)normalize表示是否有歸一化的(de)參(can)數(shu)(shu),這是因(yin)為(wei)在boxFilter使用的(de)模板(ban)如(ru)下(xia):
其中,
也就(jiu)是說,當normalize = true時,這也是一個默認(ren)值,其就(jiu)是一個算術均值濾波器;normalize=false,盒狀濾波器的作用就(jiu)是計(ji)算模(mo)板窗口內的像(xiang)素的和,然后將值賦(fu)給窗口中心位置的像(xiang)素,主要用來計(ji)算鄰域像(xiang)素的和。
加權(quan)的均值濾波(bo)器(qi)
不同于上面的(de)(de)(de)(de)所(suo)有像素(su)的(de)(de)(de)(de)系(xi)數(shu)(shu)(shu)都是相同的(de)(de)(de)(de),加權(quan)的(de)(de)(de)(de)均值(zhi)濾(lv)波器(qi)使用(yong)的(de)(de)(de)(de)模(mo)板(ban)系(xi)數(shu)(shu)(shu),會根據(ju)像素(su)和窗口中(zhong)心(xin)像素(su)的(de)(de)(de)(de)距(ju)離而取不同的(de)(de)(de)(de)系(xi)數(shu)(shu)(shu)。賦予中(zhong)心(xin)點最(zui)高的(de)(de)(de)(de)權(quan)重,然后隨著離中(zhong)心(xin)點的(de)(de)(de)(de)距(ju)離增加而減小系(xi)數(shu)(shu)(shu),這樣做的(de)(de)(de)(de)目的(de)(de)(de)(de)是在平滑圖像的(de)(de)(de)(de)同時(shi)盡量(liang)降低對圖像的(de)(de)(de)(de)模(mo)糊。最(zui)常用(yong)的(de)(de)(de)(de)加權(quan)模(mo)板(ban)如下(3×3)為例(li):
其(qi)他的一些(xie)非線(xian)性均值濾波器
除(chu)了上(shang)述(shu)算(suan)術均值濾(lv)波器,根據計算(suan)均值方法(fa)的不同還有幾種均值濾(lv)波。
幾何均值濾波器 Geometric Mean Filter其公式如下:
濾波后圖像的像素由模板窗口內像素的乘積的冪給出(chu)(chu)。 和算術均(jun)值(zhi)濾波器相(xiang)比,幾何均(jun)值(zhi)濾波器能夠更(geng)好的(de)(de)(de)取出(chu)(chu)高(gao)斯(si)噪(zao)聲,并且能夠更(geng)多的(de)(de)(de)保留圖(tu)像(xiang)(xiang)的(de)(de)(de)邊(bian)緣信(xin)息。但,其對0值(zhi)是非常敏(min)感的(de)(de)(de),在濾波器的(de)(de)(de)窗口內只要有一個像(xiang)(xiang)素的(de)(de)(de)灰度值(zhi)為0,就(jiu)會造成(cheng)濾波器的(de)(de)(de)輸出(chu)(chu)結果為0。
諧波均值濾波器 Harmonic Mean Filter 其公式如下:
諧波均值濾波器對鹽(yan)粒(li)噪聲(sheng)(白噪聲(sheng))效果較好,不適用于(yu)胡椒噪聲(sheng);比較適合處理高斯噪聲(sheng)。
逆諧波均值濾波器 Contra-Harmonic Mean Filter其公式如下:
其中Q稱為(wei)(wei)濾(lv)波(bo)器(qi)的階數,該濾(lv)波(bo)器(qi)可以用來消除椒鹽(yan)噪(zao)聲。但是(shi)需要不同同時處(chu)理(li)鹽(yan)粒(li)噪(zao)聲和胡椒噪(zao)聲,當Q為(wei)(wei)正(zheng)時,可以消除胡椒噪(zao)聲;當Q為(wei)(wei)負時,消除鹽(yan)粒(li)噪(zao)聲。當Q=0時,該濾(lv)波(bo)器(qi)退(tui)化為(wei)(wei)算(suan)術均值濾(lv)波(bo)器(qi);Q=-1時,退(tui)化為(wei)(wei)諧(xie)波(bo)均值濾(lv)波(bo)器(qi)。
均值濾波器 非線(xian)性(xing)均值濾(lv)波器中的一種,其公式如下:
P為負數(shu)時可以有效的(de)濾去(qu)鹽粒(白)噪聲,正(zheng)的(de)異常(chang)值;P為正(zheng)時可以過(guo)濾胡椒(jiao)(黑)噪聲,負的(de)異常(chang)值。
基于OpenCV的實現
上述(shu)濾波(bo)器(qi)的實(shi)現大同小(xiao)異,只(zhi)是計算均(jun)值的方法(fa)不(bu)同。
Mat tmp;
copyMakeBorder(m, tmp, ksize / 2, ksize / 2, ksize / 2, ksize / 2, BorderTypes::BORDER_REFLECT); // 擴展邊界
int rows = tmp.rows - ksize / 2;
int cols = (tmp.cols - ksize / 2) * tmp.channels();
for (int i = ksize / 2; i < rows - ksize / 2; i++)
{
for (int j = ksize / 2; j < cols - ksize / 2; j++)
{
// 遍歷窗(chuang)口內的像(xiang)素,計算均值
}
}
Rect rect(ksize / 2, ksize / 2, m.cols, m.rows);
m = tmp(rect);
下面就不再貼全的代碼,只給出根據不同的公式計算均值的代碼。
幾何均值濾波器
// 取得窗口像素
double mul = 1;
for (int a = -ksize / 2; a <= ksize / 2; a++)
{
for (int b = -ksize / 2; b <= ksize / 2; b++)
{
mul *= tmp.at(i + a, j + b);
}
}
auto pixel = pow(mul, 1.0 / (ksize * ksize));
if (pixel < 0)
pixel = 0;
else if (pixel >= 255)
pixel = 255;
tmp.at(i, j) = static_cast(pixel);
基本就是遍歷圖像的像素,然后在濾波器的窗口內根據均值的計算方式計算均值;幾何濾波器,就是將濾波器窗口內的像素乘積,然后去乘積的冪。需要說明的是:幾何均值濾波器有個致命的缺陷,那就是當窗口內像素只要有一個值為0,則其計算得到的值就是0,這在去去噪時表現的比較明顯,例如:
由于(yu)噪聲的污染比(bi)較嚴重,在使用幾何均值(zhi)(zhi)濾波器去噪時,會得到一(yi)塊黑色(se)區域(yu)(灰度值(zhi)(zhi)為0)。
加權的均值濾波器
// 取得窗(chuang)口像素
int sum = 0;
int weightSum = 0;
for (int a = -ksize / 2; a <= ksize / 2; a++)
{
for (int b = -ksize / 2; b <= ksize / 2; b++)
{
auto weight = pow(2, ksize - abs(a) - abs(b) - 1);
weightSum += weight;
sum += weight * tmp.at(i + a, j + b);
}
}
auto pixel = static_cast<int>(sum / weightSum);
if (pixel < 0)
pixel = 0;
else if (pixel > 255)
pixel = 255;
tmp.at(i,j) = pixel;
主要是權值系數的計算,可以發現一定的關系,和中心越近的其權值越高,具體公式:,其中
為和中心在
方向的距離。
加權的均值濾波器去噪效果和均值濾波器相當,但是在保護圖像細節方面比均值濾波器效果要好,上圖是3×3的濾波器,窗口較小,兩者的區別不是較大。
下圖是7×7的(de)濾波器(qi),對(dui)比就比較明顯了。
至于,其他的幾種:諧波濾波器、逆諧波濾波器和均值(zhi)濾波器,實現都差不多,代碼就(jiu)不再貼出(chu)了(le)。
總結(jie)
均值濾波器能夠去除均勻分布和高斯分布的噪聲,但是在過濾掉噪聲的同時,會對圖像造成一定的模糊,使用的窗口越大,造成的模糊也就越明顯。
根據計算均值方法的不同,有多種均值濾波,經常使用的是算術均值濾波器,計算簡單,但是對圖像造成的模糊交明顯;另外,有加權的均值濾波器,給窗口內的像素不同的系數,距離中心越近則系數越大。
使(shi)用加權的均(jun)值(zhi)濾波(bo)器,去除噪聲的能(neng)力和算術均(jun)值(zhi)濾波(bo)器相當,但是對(dui)圖像(xiang)造成的模糊較輕,能(neng)夠更好(hao)的保(bao)護(hu)圖像(xiang)的細節。(上面已有(you)對(dui)比)
幾何均值濾(lv)(lv)波器(qi),在過濾(lv)(lv)噪(zao)聲的(de)同(tong)時也能更好的(de)保護(hu)圖像的(de)細(xi)節,但是有個缺(que)陷(xian):在濾(lv)(lv)波的(de)過程(cheng)中,窗口內的(de)像素只要有一個為0,則其(qi)得(de)出的(de)值就是0.
至(zhi)于余(yu)下的(de)幾種,在能(neng)夠去除高斯噪聲,并且對椒鹽噪聲也有一(yi)定的(de)作(zuo)用,具體如下:
?諧波(bo)均值(zhi)濾(lv)波(bo)器 能(neng)過濾(lv)鹽粒噪聲(sheng),對胡椒噪聲(sheng)無效
?逆(ni)諧波(bo)均(jun)值濾波(bo)器,當階數Q為正時(shi),可以(yi)過(guo)濾胡椒(jiao)噪聲(sheng);Q為負(fu)時(shi)可以(yi)過(guo)濾鹽粒噪聲(sheng)。不能同(tong)時(shi)對(dui)椒(jiao)鹽噪聲(sheng)起作用。
? 均值濾波器(qi), 和逆諧波均值濾波器(qi)類似。當P為正時,能夠(gou)過(guo)濾椒鹽噪聲;P為負時,能夠(gou)過(guo)濾鹽粒噪聲。
文章轉自Brook_icv //www.cnblogs.com/wangguchangqing/p/6399293.html