OpenCV學(xué)習(xí)筆記(七)中值商叹、雙邊濾波

一、線性濾波與非線性濾波

之前一篇文章說的方框濾波只泼、均值濾波和高斯濾波都是線性濾波器的原始數(shù)據(jù)與濾波結(jié)果是一種線性的算術(shù)運算剖笙,即用加減乘除等運算實現(xiàn),所以稱之為線性濾波请唱。

非線性濾波器的原始數(shù)據(jù)與濾波結(jié)果是一種邏輯關(guān)系弥咪,即通過比較一定鄰域內(nèi)的灰度值大小來實現(xiàn)的。下面介紹的中值濾波和雙邊濾波就是非線性濾波籍滴。

二酪夷、中值濾波

中值濾波原理通過一張圖就可以看明白:


簡言之中值濾波就是把函數(shù)框(如圖中的3 X 3)內(nèi)的灰度值按順序排列,然后中值取代函數(shù)框中心的灰度值孽惰。所以一般采用奇數(shù)點的鄰域來計算中值晚岭,但如果像素點數(shù)為偶數(shù),中值就取排序像素中間兩點的平均值勋功。

中值濾波在一定的條件下可以克服常見線性濾波器如方框濾波器坦报、均值濾波等帶來的圖像細節(jié)模糊库说,而且對濾除脈沖干擾及圖像掃描噪聲非常有效,也常用于保護邊緣信息, 保存邊緣的特性使它在不希望出現(xiàn)邊緣模糊的場合也很有用片择,是非常經(jīng)典的平滑噪聲處理方法潜的。

但是中值濾波的缺點也很明顯,因為要進行排序操作字管,所以處理的時間長啰挪,是均值濾波的5倍以上。

中值濾波在OpenCV中用medianBlur函數(shù)實現(xiàn)嘲叔,下面是函數(shù)聲明:

void medianBlur( InputArray src, OutputArray dst, int ksize );

參數(shù)很簡單亡呵,就是輸入圖像src,輸出圖像dst硫戈,以及核的大小ksize锰什。注意這里的ksize必須為正奇數(shù)1,3,5,7……否則程序會出錯。

三丁逝、雙邊濾波

雙邊濾波(Bilateral filter)是一種非線性的濾波方法汁胆,是結(jié)合圖像的空間鄰近度和像素值相似度的一種折衷處理,同時考慮空域信息和灰度相似性霜幼,達到保邊去噪的目的嫩码。具有簡單、非迭代罪既、局部的特點谢谦。
雙邊濾波器的好處是可以做邊緣保存(edge preserving),一般用高斯濾波去降噪萝衩,會較明顯地模糊邊緣回挽,對于高頻細節(jié)的保護效果并不明顯。雙邊濾波器顧名思義比高斯濾波多了一個高斯方差sigma-d猩谊,它是基于空間分布的高斯濾波函數(shù)千劈,所以在邊緣附近,離的較遠的像素不會太多影響到邊緣上的像素值牌捷,這樣就保證了邊緣附近像素值的保存墙牌。但是由于保存了過多的高頻信息,對于彩色圖像里的高頻噪聲暗甥,雙邊濾波器不能夠干凈的濾掉喜滨,只能夠?qū)τ诘皖l信息進行較好的濾波。

下圖是雙邊濾波的原理示意圖:


在雙邊濾波器中撤防,輸出像素的值依賴于鄰域像素值的加權(quán)值組合:


而加權(quán)系數(shù)w(i,j,k,l)取決于空域核和值域核的乘積虽风。
(i,j),(k,l)分別指兩個像素點的坐標(biāo)。

其中空域核表示如下(如圖):



值域核表示為:



兩者相乘后辜膝,就會產(chǎn)生依賴于數(shù)據(jù)的雙邊濾波權(quán)重函數(shù):

d函數(shù)是根據(jù)像素距離選擇權(quán)重无牵,距離越近權(quán)重越大,這一點和方框濾波厂抖,高斯濾波方式相同茎毁。而r函數(shù)則是根據(jù)像素的差異來分配權(quán)值。如果兩個像素值越接近忱辅,即使相距較遠七蜘,也比差異大而距離近的像素點權(quán)重大。正是r函數(shù)的作用墙懂,使得邊緣崔梗,即相距近但差異大的像素點的特性得以保留。

OpenCV中用medianBlur函數(shù)實現(xiàn)雙邊濾波垒在。
函數(shù)聲明:

void bilateralFilter( InputArray src, OutputArray dst, int d,
                                   double sigmaColor, double sigmaSpace,
                                   int borderType = BORDER_DEFAULT );

參數(shù):

  • 第一個參數(shù),InputArray類型的src扔亥,輸入圖像场躯,即源圖像,需要為8位或者浮點型單通道旅挤、三通道的圖像踢关。
  • 第二個參數(shù),OutputArray類型的dst粘茄,即目標(biāo)圖像签舞,需要和源圖片有一樣的尺寸和類型。
  • 第三個參數(shù)柒瓣,int類型的d儒搭,表示在過濾過程中每個像素鄰域的直徑。如果這個值我們設(shè)其為非正數(shù)芙贫,那么OpenCV會從第五個參數(shù)sigmaSpace來計算出它來搂鲫。
  • 第四個參數(shù),double類型的sigmaColor磺平,顏色空間濾波器的sigma值魂仍。這個參數(shù)的值越大,就表明該像素鄰域內(nèi)有更寬廣的顏色會被混合到一起拣挪,產(chǎn)生較大的半相等顏色區(qū)域擦酌。
  • 第五個參數(shù),double類型的sigmaSpace坐標(biāo)空間中濾波器的sigma值菠劝,坐標(biāo)空間的標(biāo)注方差赊舶。他的數(shù)值越大,意味著越遠的像素會相互影響,從而使更大的區(qū)域足夠相似的顏色獲取相同的顏色锯岖。當(dāng)d>0介袜,d指定了鄰域大小且與sigmaSpace無關(guān)。否則出吹,d正比于sigmaSpace遇伞。
  • 第六個參數(shù),int類型的borderType捶牢,用于推斷圖像外部像素的某種邊界模式鸠珠。注意它有默認(rèn)值BORDER_DEFAULT。

四秋麸、示例代碼:

#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"  
#include<opencv2/imgproc/imgproc.hpp>  
#include <iostream>  

using namespace cv;

int main(){
    
    Mat img = imread("dog.jpg");//據(jù)說丑女經(jīng)過雙邊濾波用有美顏效果哦渐排,有興趣的同學(xué)可以試試

    Mat out1,out2,out3;

    medianBlur(img, out1, 35);
    bilateralFilter(img, out2, 25, 25 * 2, 25 / 2);

    namedWindow("中值濾波", 2);

    imshow("中值濾波", out1);

    namedWindow("雙邊濾波", 2);

    imshow("雙邊濾波", out2);

    waitKey(0);

    return 0;
}

參考:
http://blog.csdn.net/poem_qianmo/article/details/23184547

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市灸蟆,隨后出現(xiàn)的幾起案子驯耻,更是在濱河造成了極大的恐慌,老刑警劉巖炒考,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件可缚,死亡現(xiàn)場離奇詭異,居然都是意外死亡斋枢,警方通過查閱死者的電腦和手機帘靡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓤帚,“玉大人描姚,你說我怎么就攤上這事「甏危” “怎么了轩勘?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長怯邪。 經(jīng)常有香客問我赃阀,道長,這世上最難降的妖魔是什么擎颖? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任榛斯,我火速辦了婚禮,結(jié)果婚禮上搂捧,老公的妹妹穿的比我還像新娘驮俗。我一直安慰自己,他們只是感情好允跑,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布王凑。 她就那樣靜靜地躺著搪柑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪索烹。 梳的紋絲不亂的頭發(fā)上工碾,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音百姓,去河邊找鬼渊额。 笑死,一個胖子當(dāng)著我的面吹牛垒拢,可吹牛的內(nèi)容都是我干的旬迹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼求类,長吁一口氣:“原來是場噩夢啊……” “哼奔垦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起尸疆,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤椿猎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后寿弱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體犯眠,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年脖捻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兆衅。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡地沮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出羡亩,到底是詐尸還是另有隱情摩疑,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布畏铆,位于F島的核電站雷袋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辞居。R本人自食惡果不足惜楷怒,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓦灶。 院中可真熱鬧鸠删,春花似錦、人聲如沸贼陶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烘贴,卻和暖如春禁添,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桨踪。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工老翘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人馒闷。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓酪捡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親纳账。 傳聞我的和親對象是個殘疾皇子逛薇,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

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