》》點(diǎn)贊努咐,收藏+關(guān)注苦蒿,理財(cái)&技術(shù)不迷路《《
此章節(jié)是樓主碼字最多的,也是我個(gè)人認(rèn)為最為重要和基礎(chǔ)的一個(gè)章節(jié)渗稍,我對(duì)原理佩迟,數(shù)學(xué)公式以及API解釋都進(jìn)行了詳細(xì)描述,希望能堅(jiān)持看完竿屹!希望對(duì)你們有所幫助1ㄇ俊!
目錄:
濾波(blur)操作是一種基于鄰域的圖像平滑方法拱燃。
7.0 噪聲和降噪
圖像噪聲 —— pattern noise
圖像噪聲是指存在于圖像數(shù)據(jù)中的不必要的或多余的干擾信息秉溉。噪聲的存在嚴(yán)重影響了遙感圖像的質(zhì)量,因此在圖像增強(qiáng)處理和分類處理之前碗誉,必須予以糾正召嘶。 圖像中各種妨礙人們對(duì)其信息接受的因素即可稱為圖像噪聲 。噪聲在理論上可以定義為“不可預(yù)測(cè)哮缺,只能用概率統(tǒng)計(jì)方法來認(rèn)識(shí)的隨機(jī)誤差”弄跌。因此將圖像噪聲看成是多維隨機(jī)過程是合適的,因而描述噪聲的方法完全可以借用隨機(jī)過程的描述尝苇,即用其概率分布函數(shù)和概率密度分布函數(shù)铛只。
噪聲在圖像上常表現(xiàn)為一引起較強(qiáng)視覺效果的孤立像素點(diǎn)或像素塊。一般茎匠,噪聲信號(hào)與要研究的對(duì)象不相關(guān)格仲,它以無用的信息形式出現(xiàn),擾亂圖像的可觀測(cè)信息诵冒。通俗的說就是噪聲讓圖像不清楚凯肋。
噪聲的來源:
(1)圖像獲取過程中
兩種常用類型的圖像傳感器CCD和CMOS采集圖像過程中,由于受傳感器材料屬性汽馋、工作環(huán)境侮东、電子元器件和電路結(jié)構(gòu)等影響圈盔,會(huì)引入各種噪聲,如電阻引起的熱噪聲悄雅、場(chǎng)效應(yīng)管的溝道熱噪聲驱敲、光子噪聲、暗電流噪聲宽闲、光響應(yīng)非均勻性噪聲众眨。
(2)圖像信號(hào)傳輸過程中
由于傳輸介質(zhì)和記錄設(shè)備等的不完善,數(shù)字圖像在其傳輸記錄過程中往往會(huì)受到多種噪聲的污染容诬。另外娩梨,在圖像處理的某些環(huán)節(jié)當(dāng)輸入的對(duì)象并不如預(yù)想時(shí)也會(huì)在結(jié)果圖像中引入噪聲。
7.0.1 圖像處理 —— 濾波
過濾 :是信號(hào)和圖像處理中基本的任務(wù)览徒。其目的是根據(jù)應(yīng)用環(huán)境的不同狈定,選擇性的提取圖像中某些認(rèn)為是重要的信息。過濾可以移除圖像中的噪音习蓬、提取感興趣的可視特征纽什、允許圖像重采樣等等。
頻域分析 :將圖像分成從低頻到高頻的不同部分躲叼。低頻對(duì)應(yīng)圖像強(qiáng)度變化小的區(qū)域芦缰,而高頻是圖像強(qiáng)度變化非常大的區(qū)域。
在頻率分析領(lǐng)域的框架中押赊,濾波器是一個(gè)用來增強(qiáng)圖像中某個(gè)波段或頻率并阻塞(或降低)其他頻率波段的操作饺藤。低通濾波器是消除圖像中高頻部分包斑,但保留低頻部分流礁。高通濾波器消除低頻部分。
濾波(高通罗丰、低通神帅、帶通、帶阻) 萌抵、模糊找御、去噪、平滑等绍填。
7.0.2 常見噪聲的分類
先上一個(gè)結(jié)論霎桅,常見噪聲總結(jié):
噪聲按照不同的分類標(biāo)準(zhǔn)可以有不同的分類形式:
基于產(chǎn)生原因:
內(nèi)部噪聲:
一般又可分為以下四種:
(1)由光和電的基本性質(zhì)所引起的噪聲。如電流的產(chǎn)生是由電子或空穴粒子的集合讨永,定向運(yùn)動(dòng)所形成滔驶。因這些粒子運(yùn)動(dòng)的隨機(jī)性而形成的散粒噪聲;導(dǎo)體中自由電子的無規(guī)則熱運(yùn)動(dòng)所形成的熱噪聲卿闹;根據(jù)光的粒子性揭糕,圖像是由光量子所傳輸萝快,而光量子密度隨時(shí)間和空間變化所形成的光量子噪聲等。
(2)電器的機(jī)械運(yùn)動(dòng)產(chǎn)生的噪聲著角。如各種接頭因抖動(dòng)引起電流變化所產(chǎn)生的噪聲揪漩;磁頭、磁帶等抖動(dòng)或一起的抖動(dòng)等吏口。
(3)器材材料本身引起的噪聲奄容。如正片和負(fù)片的表面顆粒性和磁帶磁盤表面缺陷所產(chǎn)生的噪聲。隨著材料科學(xué)的發(fā)展产徊,這些噪聲有望不斷減少嫩海,但還是不可避免的。
(4)系統(tǒng)內(nèi)部設(shè)備電路所引起的噪聲囚痴。如電源引入的交流噪聲叁怪;偏轉(zhuǎn)系統(tǒng)和箝位電路所引起的噪聲等。
外部噪聲:系統(tǒng)外部干擾以電磁波或經(jīng)電源串進(jìn)系統(tǒng)內(nèi)部而引起的噪聲深滚。如電氣設(shè)備奕谭,天體放電現(xiàn)象等引起的噪聲。
根據(jù) 圖像(信號(hào))與噪聲 之間的關(guān)系 來分類:
(1)加性噪聲
??? 噪聲和原始圖像不相關(guān)痴荐,可以表示為:
其中f(x,y)代表被污染的圖像(噪聲圖像)血柳,g(x,y)代表原始圖像,n(x,y)代表噪聲生兆。圖像中的加性噪聲一般是在圖像的傳輸過程中由“信道噪聲”和CCD攝像機(jī)對(duì)圖像數(shù)字化的過程中產(chǎn)生的难捌。
(2)乘性噪聲
??????????噪聲和原始圖像相關(guān),可以表示為:
圖像中的乘性噪聲一般是由膠片中的顆粒鸦难、飛點(diǎn)掃描圖像中的噪聲根吁、電視掃描光柵等原因造成的。
(3)量化噪聲
??????????圖像中的量化噪聲是圖像在量化過程中圖像從模擬到數(shù)字所產(chǎn)生的差異合蔽,是圖像量化過程中的誤差击敌。
根據(jù)基于 統(tǒng)計(jì)后的概率密度函數(shù):是比較重要的,主要因?yàn)橐霐?shù)學(xué)模型拴事,這就有助于運(yùn)用數(shù)學(xué)手段去除噪聲沃斤。在不同場(chǎng)景下噪聲的施加方式都不同,由于在外界的某種條件下刃宵,噪聲下圖像-原圖像(沒有噪聲時(shí))的概率密度函數(shù)(統(tǒng)計(jì)結(jié)果)服從某種分布函數(shù)衡瓶,那么就把它歸類為相應(yīng)的噪聲。下面將具體說明基于統(tǒng)計(jì)后的概率密度函數(shù)的噪聲分類及其消除方式牲证。
圖像常見噪聲基本上有以下四種哮针,高斯噪聲,泊松噪聲,乘性噪聲诚撵,椒鹽噪聲缭裆。
7.0.2.1 Gaussian Noise
高斯噪聲是指它的概率密度函數(shù)服從高斯分布(即正態(tài)分布)的一類噪聲。如果一個(gè)噪聲寿烟,它的幅度分布服從高斯分布澈驼,而它的功率譜密度又是均勻分布的,則稱它為高斯白噪聲筛武。高斯白噪聲的二階矩不相關(guān)缝其,一階矩為常數(shù),是指先后信號(hào)在時(shí)間上的相關(guān)性徘六。
產(chǎn)生原因:
1)圖像傳感器在拍攝時(shí)視場(chǎng)不夠明亮内边、亮度不夠均勻;
2)電路各元器件自身噪聲和相互影響待锈;
3)圖像傳感器長(zhǎng)期工作漠其,溫度過高。
高斯函數(shù):
其中灰度值用x表示竿音,灰度值的期望值用μ表示和屎,灰度值的標(biāo)準(zhǔn)差用σ表示。高斯噪聲的概率密度函數(shù)如下圖所示:
首先下面是原圖:
統(tǒng)計(jì)直方圖:
可以看到春瞬,噪聲的直方圖中圖形像高斯正態(tài)函數(shù)的分布柴信。
說明:噪聲對(duì)原圖像的影響是隨機(jī)的,直方圖呈現(xiàn)的分布形式是基于統(tǒng)計(jì)的結(jié)果宽气。直方圖表示了(歸一化后)灰度值的概率密度分布随常,因此可以使用直方圖來表示灰度值的概率密度。
7.0.2.2 脈沖(椒鹽)噪聲
椒鹽噪聲也稱為脈沖噪聲萄涯,是圖像中經(jīng)常見到的一種噪聲绪氛,它是一種隨機(jī)出現(xiàn)的白點(diǎn)或者黑點(diǎn),可能是亮的區(qū)域有黑色像素或是在暗的區(qū)域有白色像素(或是兩者皆有)窃判。鹽和胡椒噪聲的成因可能是影像訊號(hào)受到突如其來的強(qiáng)烈干擾而產(chǎn)生钞楼、類比數(shù)位轉(zhuǎn)換器或位元傳輸錯(cuò)誤等。例如失效的感應(yīng)器導(dǎo)致像素值為最小值袄琳,飽和的感應(yīng)器導(dǎo)致像素值為最大值。
脈沖(椒鹽)噪聲的消除方式
一般使用非線性濾波器處理椒鹽噪聲:
異常值偵測(cè)異常偵測(cè)(Anomaly detection)有時(shí)稱為異常值偵測(cè)(Outlier detection)燃乍,如其名所隱含的唆樊,在給定的資料集合中,它將偵測(cè)在已有的規(guī)律中表現(xiàn)異常者】绦罚現(xiàn)今常用的方法以計(jì)算距離為基礎(chǔ)的K-近鄰算法或是機(jī)器學(xué)習(xí)中的支持向量機(jī)等逗旁。
中值濾波器中值濾波器(Median filtering) 如其名所隱含的,它將一個(gè)像素的值用該像素鄰域中強(qiáng)度值的中間值來取代(計(jì)算中間值的過程中,也會(huì)將該像素的原始值包含)片效,中值濾波器在處理鹽和胡椒噪聲上能提供絕佳的噪聲降低效能红伦。
偽中值濾波器為了改進(jìn)中值濾波器的計(jì)算速率,偽中值濾波器(Pseudo-median filtering) 以近似的方法算出中間值淀衣。
7.0.2.3 泊松噪聲
泊松噪聲昙读,就是符合泊松分布的噪聲模型,泊松分布適合于描述單位時(shí)間內(nèi)隨機(jī)事件發(fā)生的次數(shù)的概率分布膨桥。如某一服務(wù)設(shè)施在一定時(shí)間內(nèi)受到的服務(wù)請(qǐng)求的次數(shù)蛮浑,電話交換機(jī)接到呼叫的次數(shù)、汽車站臺(tái)的候客人數(shù)只嚣、機(jī)器出現(xiàn)的故障數(shù)沮稚、自然災(zāi)害發(fā)生的次數(shù)、DNA序列的變異數(shù)册舞、放射性原子核的衰變數(shù)等等
7.0.2.4 乘性噪聲
乘性噪聲一般由信道不理想引起蕴掏,它們與信號(hào)的關(guān)系是相乘,信號(hào)在它在调鲸,信號(hào)不在他也就不在囚似。
7.1 原理
7.1.1 卷積神經(jīng)網(wǎng)絡(luò)
卷積的作用:
消除噪聲
銳化
7.1.1.1 卷積背景及原理
卷積是泛函分析中的一種數(shù)學(xué)算子。通過兩個(gè)函數(shù) f? 和 g 來生成第三個(gè)函數(shù)的運(yùn)算线得。
f(t’) 和 g(t - t’) 實(shí)際就是兩個(gè)函數(shù)饶唤,g(-t’) 實(shí)際就是與 g(t’) 關(guān)于 y 軸對(duì)稱 ,g(-t’ + x)就是將g(t’) 關(guān)于y軸對(duì)稱后 然后繼續(xù)平移贯钩∧伎瘢看成 g[- (t’ - x) ] 左加右減。往右平移了x個(gè)單位角雷。然后和 f(t’) 相乘再定積分祸穷,定積分范圍是 負(fù)無窮到正無窮,然后累加勺三。注意它是對(duì) t’ 進(jìn)行積分雷滚,而不是對(duì)我們的x進(jìn)行積分,就是我們下面畫圖中的橫軸就是 t’吗坚。
所以卷積的作用:把一個(gè)函數(shù)先對(duì)折祈远,再按照 x 個(gè)單位去逐漸的平移,平移完后再相乘做定積分商源。
卷積操作歷史上來發(fā)展于信號(hào)處理領(lǐng)域车份,在信號(hào)處理中原始信號(hào)通常會(huì)被混入噪音,假設(shè)傳感器在每個(gè)時(shí)刻t? 會(huì)輸出一個(gè)信號(hào) f(t)牡彻,這個(gè)信號(hào)通成ㄕ樱混入了一些噪聲,我們可以通過過個(gè)測(cè)量點(diǎn)進(jìn)行加權(quán)平均來抵消掉噪聲,并且離當(dāng)前時(shí)間點(diǎn)t? 越近的測(cè)量點(diǎn)權(quán)重應(yīng)該越高缎除,我們可以用下面的公式表示
上式中 g是一個(gè)權(quán)重函數(shù)严就,參數(shù)是時(shí)間點(diǎn) t’ 距離當(dāng)前時(shí)間 t 的距離,輸出 t' 時(shí)間點(diǎn)測(cè)量的權(quán)重器罐; f 是信號(hào)測(cè)量函數(shù)梢为。?在這個(gè)例子中, t’? 的采樣是離散的技矮,因此采用了加和的形式抖誉,同時(shí)g? 還應(yīng)該是一個(gè)概率密度函數(shù),因?yàn)樵谶@個(gè)例子中表示了一種權(quán)重衰倦。下圖就是這個(gè)例子的可視化袒炉,灰色是f(t)? ,紅色的部分就是經(jīng)過翻轉(zhuǎn)的g? 樊零,綠色部分是生成的 h我磁。
卷和:針對(duì)離散型變量
通常將函數(shù)? f 稱為輸入(input),函數(shù)? g? 稱為卷積核(kernel)驻襟,函數(shù)? h? 稱為特征圖譜(feature map)
多維度:
藍(lán)色部分對(duì)應(yīng)的是輸入的圖像夺艰,紅色部分是卷積核convolutional kernel,卷積運(yùn)算:通過滑動(dòng)窗口進(jìn)行矩陣相稱得到綠色部分沉衣。
卷積核有不同類型郁副。有保持原圖,銳化的豌习,模糊的存谎,邊緣檢測(cè)的核等等。不同卷積核實(shí)不同功能肥隆。
7.1.1.2 卷積的特點(diǎn)(與全連接的區(qū)別與聯(lián)系)
卷積神經(jīng)網(wǎng)絡(luò)(Convotional Neural Network, CNN)是深度學(xué)習(xí)領(lǐng)域中重要的一個(gè)領(lǐng)域既荚,可以說 CNN 近年在計(jì)算機(jī)視覺領(lǐng)域取得的成功直接推動(dòng)了深度學(xué)習(xí)的復(fù)興。 CNN 是一種基于卷積操作的神經(jīng)網(wǎng)絡(luò)栋艳,可以粗略地理解為 CNN 就是將全連接網(wǎng)絡(luò)中的矩陣相乘換成卷積操作(說粗略是因?yàn)橥ǔ?CNN 中還帶有 pooling 等 CNN 專有的操作)恰聘。那么卷積操作有什么區(qū)別于全連接的特點(diǎn)呢?
我們以一個(gè)例子來看卷積的具體:
t這樣處理實(shí)際上左邊的 kernel matrix 乘上右邊的 flatten input 向量后得到結(jié)果與上面的結(jié)果是等效的吸占,即向量的卷積操作可以表示為上圖的一個(gè)核矩陣乘一個(gè)向量得到晴叨。有沒有覺得很眼熟?這種一個(gè)參數(shù)矩陣乘一個(gè)輸入向量得到一個(gè)輸出向量的形式與全連接是完全一致的旬昭。
因此卷積和全連接實(shí)質(zhì)上都是一組線性轉(zhuǎn)換篙螟,但是卷積相比全連接而言,其參數(shù)矩陣更加稀疏问拘,kernel matrix 中很多為零(sparse connectivity),同時(shí)非零部分的參數(shù)實(shí)際上是共享的(parameter sharing)。這兩個(gè)特點(diǎn)讓卷積可以大大減少參數(shù)的數(shù)量骤坐,同時(shí)同一套參數(shù)(卷積核)在多個(gè)地方復(fù)用更有利于捕捉局部的特征绪杏。相比之下全連接的參數(shù)更多,每個(gè)參數(shù)只負(fù)責(zé)唯一的連接纽绍,計(jì)算量蕾久、內(nèi)存需求增大的同時(shí)也更加難以訓(xùn)練。
所以卷積的兩個(gè)優(yōu)點(diǎn):
sparse connectivity(稀疏連接)
parameter sharing(非零參數(shù)共享拌夏,參數(shù)復(fù)用)
全連接:
參數(shù)多僧著,每個(gè)參數(shù)只負(fù)責(zé)唯一連接,計(jì)算量和內(nèi)存需求大障簿,難以訓(xùn)練盹愚。
更本質(zhì)來說,卷積相比全連接實(shí)際上是對(duì)參數(shù)矩陣做了一種先驗(yàn)的限制(矩陣是稀疏的站故、同時(shí)參數(shù)復(fù)用)皆怕,這種先驗(yàn)是建立在在高維空間中相鄰的數(shù)據(jù)點(diǎn)存在一定的關(guān)系的基礎(chǔ)上,比如圖像中一個(gè)局部之間可能構(gòu)成一個(gè)形狀或者一個(gè)組件西篓,因此卷積這種操作特別適合應(yīng)用于圖像數(shù)據(jù)愈腾。雖然加入這種先驗(yàn)會(huì)讓模型損失一定的擬合能力,但是從最終效果上看帶來的收益是遠(yuǎn)遠(yuǎn)大于擬合能力的損失的岂津。
7.1.1.3 卷積三種模式
深度學(xué)習(xí)框架中通常會(huì)實(shí)現(xiàn)三種不同的卷積模式虱黄,分別是 SAME、VALID吮成、FULL橱乱。這三種模式的核心區(qū)別在于卷積核進(jìn)行卷積操作的移動(dòng)區(qū)域不同,進(jìn)而導(dǎo)致輸出的尺寸不同赁豆。我們以一個(gè)例子來看這三種模式的區(qū)別仅醇,輸入圖片的尺寸是 5x5 ,卷積核尺寸是 3x3 魔种,stride 取 1析二。
FULL 模式:碰到就開始。
FULL 模式下卷積核從與輸入有一個(gè)點(diǎn)的相交的地方就開始卷積节预。如下圖所示叶摄,藍(lán)框的位置就是卷積核第一個(gè)卷積的地方,灰色部分是為了卷積能夠正常進(jìn)行的 padding(一般填 0)安拟。因此 FULL 模式下卷積核移動(dòng)區(qū)域最大蛤吓,卷積后輸出的尺寸也最大。
VALID 模式:一定要整個(gè)重疊才開始
VALID 模式與 FULL 模式相反糠赦,在整個(gè)卷積核與輸入重疊的地方才開始卷積操作会傲,因此不需要 padding锅棕,輸出的尺寸也最小
SAME 模式:可以自加來padding,反正尺寸不變淌山。
SAME 模式是最常用的一種模式裸燎,SAME 的意思是卷積后輸出的尺寸與輸入尺寸保持一致(假定 stride 為 1)。通過將卷積核的中心與輸入的第一個(gè)點(diǎn)進(jìn)行對(duì)齊確定卷積核起始位置泼疑,然后補(bǔ)齊對(duì)應(yīng) padding 即可德绿。如下圖所示,可以看到卷積輸出的尺寸與出入保持一致退渗。
SAME 模式下當(dāng)卷積核邊長(zhǎng)為偶數(shù)時(shí)移稳,可以通過在其中一邊增加多一行(列)padding,即不對(duì)稱的 padding 實(shí)現(xiàn)輸出尺寸與輸入尺寸保持一致会油,如下圖所示(卷積核尺寸為 2x2 )
7.2 模糊操作
“模糊”个粱,就是將圖像中每個(gè)像素值進(jìn)行重置的過程,這個(gè)過程采用將每一個(gè)像素都設(shè)置成周邊像素的平均值钞啸。
2是中間點(diǎn)几蜻,周邊點(diǎn)都是1。假設(shè)周邊的點(diǎn)對(duì)中間點(diǎn)的影響都是相同的体斩,即構(gòu)造的卷積算子如下:
可以看出中間的 2 被重置為了梭稚。“中間點(diǎn)"取"周圍點(diǎn)"的平均值絮吵,變成10/9弧烤。在數(shù)值上,這是一種"平滑化”蹬敲。在圖形上暇昂,就相當(dāng)于產(chǎn)生"模糊"效果,"中間點(diǎn)"失去細(xì)節(jié)伴嗡。
顯然练慕,計(jì)算平均值時(shí)稽穆,取值范圍越大衙熔,"模糊效果"越強(qiáng)烈九孩。如下三幅圖,分別表示原圖阱扬,3X3和5X5的模糊效果圖泣懊。
模糊操作的原理就是:卷積。? 不同卷積核得到不同卷積效果麻惶。
均值:
dst = cv.blur(image,(x,y))
中值
dst = cv.medianBlur(image,A)
自定義模糊:
kernel = np.ones([5, 5], np.float32) / 25
dst = cv.filter2D(src,depth,kernel,dst,another,delta,borderType)
收尾不變馍刮。上面就是均值模糊:1*2+1*3+1*6=11 , 11*3=3.X 取整為1.
卷積核最好都為奇數(shù)
越卷積越平滑窃蹋。
7.2.1 均值模糊(低通濾波)
均值模糊是用來去噪聲的卡啰。
void blur( InputArray src, OutputArray dst,
????????????????????????Size ksize, Point anchor = Point(-1,-1),
????????????????????????int borderType = BORDER_DEFAULT );
src是輸入圖像静稻,dst為輸出圖像;ksize是濾波器模板窗口的大兴槟恕姊扔;后兩個(gè)參數(shù)分別表示惠奸,待處理像素在模板窗口的位置梅誓,默認(rèn)值是窗口的中心位置,所以窗口的大小一般為奇數(shù)佛南,最后一個(gè)參數(shù)表示對(duì)編解類型的處理梗掰,使用默認(rèn)值即可。其調(diào)用示例blur(src,dst,Size(5,5)嗅回,模板窗口的大小為5×5及穗。
均值濾波是一種線性濾波器,處理思路也很簡(jiǎn)單绵载,就是將一個(gè)窗口區(qū)域中的像素計(jì)算平均值埂陆,然后將窗口中計(jì)算得到的均值設(shè)置為錨點(diǎn)上的像素值。
該算法有優(yōu)點(diǎn)在于效率高娃豹,思路簡(jiǎn)單焚虱。同樣,缺點(diǎn)也很明顯懂版,計(jì)算均值會(huì)將圖像中的邊緣信息以及特征信息“模糊”掉鹃栽,會(huì)丟失很多特征。
均值濾波使用簡(jiǎn)單的卷積方案來實(shí)現(xiàn)躯畴,既然是計(jì)算窗口區(qū)域中的像素和民鼓,即使用如下卷積核即可。圖像的邊界部分采用padding操作處理蓬抄。另外丰嘉,得到的錨點(diǎn)像素值要進(jìn)行歸一化,即除以窗口尺寸大小嚷缭。在OpenCV中饮亏,我們使用cv.blur()這個(gè)函數(shù)即可實(shí)現(xiàn)。
這樣的結(jié)果就是降低圖像中的“尖銳”變化峭状。這就造成克滴,均值濾波器可以降低噪聲的同時(shí),也會(huì)模糊圖像的邊緣优床。均值濾波器的處理結(jié)果是過濾掉圖像中的“不相關(guān)”細(xì)節(jié)劝赔,其中“不相關(guān)”細(xì)節(jié)指的是:與濾波器模板尺寸相比較小的像素區(qū)域。
在y胆敞,豎直方向進(jìn)行了模糊着帽。
我們可以嘗試在 x 方向杂伟,橫向進(jìn)行模糊:
上面兩個(gè)都是一維卷積核進(jìn)行模糊,截下來我們嘗試 5*5 卷積核進(jìn)行模糊仍翰,5*5也是最常用的:
7.2.2 中值模糊(中值濾波)
用于處理椒鹽噪聲
void medianBlur( InputArray src, OutputArray dst, int ksize );
○src:源圖像Mat對(duì)象
○dst:目標(biāo)圖像Mat對(duì)象
○ksize:濾波模板的尺寸大小赫粥,必須是大于1的奇數(shù),如:3予借,5越平,7...
中值濾波是一種非線性濾波,在處理脈沖噪聲以及椒鹽噪聲時(shí)效果極佳灵迫,能夠有效的保護(hù)好圖像的邊緣信息秦叛。中值濾波的處理思路很簡(jiǎn)單,取卷積核當(dāng)中所覆蓋像素中的中值作為錨點(diǎn)的像素值即可瀑粥。
如果按照遍歷所有像素挣跋,再對(duì)卷積核中的像素排序取中值,那么時(shí)間復(fù)雜度會(huì)很高狞换,需要對(duì)中值濾波進(jìn)行改進(jìn)避咆。
中值濾波器的想法很簡(jiǎn)單,如果一個(gè)信號(hào)是平緩變化的修噪,那么某一點(diǎn)的輸出值可以用這點(diǎn)的某個(gè)大小的鄰域內(nèi)的所有值的統(tǒng)計(jì)中值來代替查库。這個(gè)鄰域在信號(hào)處理領(lǐng)域稱之為窗(window)。窗開的越大割按,輸出的結(jié)果就越平滑膨报,但也可能會(huì)把我們有用的信號(hào)特征給抹掉。所以窗的大小要根據(jù)實(shí)際的信號(hào)和噪聲特性來確定适荣。
如:以3*3的領(lǐng)域?yàn)槔笾兄禐V波中像素5的值
1)int pixel[9]中存儲(chǔ)像素1现柠,像素2...像素9的值;
2)對(duì)數(shù)組pixel[9]進(jìn)行排序操作弛矛;
3)像素5的值即為數(shù)組pixel[9]的中值pixel[4]够吩。
左圖圖像中有很多黑點(diǎn),黑點(diǎn)都是噪聲丈氓,是椒鹽噪聲周循。食鹽是白色的,胡椒粉是黑色的万俗,椒鹽是黑白的湾笛。所以說中值模糊對(duì)椒鹽噪聲有很好的處理能力。
均值模糊對(duì)隨機(jī)噪聲有很好的處理能力闰歪,但是我們用均值模糊來處理同樣的圖的話嚎研,會(huì)發(fā)現(xiàn)均值模糊還是不能很好的將椒鹽噪聲處理干凈。
7.2.3 自定義模糊
自定義算子還是有幾個(gè)要求:
?1. 必須是奇數(shù)
2. 總和為0(做邊緣梯度)或者 1(在做增強(qiáng)等工作)
CV_EXPORTS_W void filter2D( InputArray src, OutputArray dst,?
int ddepth,InputArray kernel,?
Point anchor=Point(-1,-1),
double delta=0, int borderType=BORDER_DEFAULT );
InputArray src: 輸入圖像
OutputArray dst: 輸出圖像库倘,和輸入圖像具有相同的尺寸和通道數(shù)量
int ddepth: 目標(biāo)圖像深度临扮,如果沒寫將生成與原圖像深度相同的圖像论矾。原圖像和目標(biāo)圖像支持的圖像深度如下:
src.depth() = CV_8U, ddepth = -1/CV_16S/CV_32F/CV_64F
src.depth() = CV_16U/CV_16S, ddepth = -1/CV_32F/CV_64F
src.depth() = CV_32F, ddepth = -1/CV_32F/CV_64F
src.depth() = CV_64F, ddepth = -1/CV_64F
當(dāng)ddepth輸入值為-1時(shí),目標(biāo)圖像和原圖像深度保持一致杆勇。
InputArray kernel: 卷積核(或者是相關(guān)核),一個(gè)單通道浮點(diǎn)型矩陣贪壳。如果想在圖像不同的通道使用不同的kernel,可以先使用split()函數(shù)將圖像通道事先分開蚜退。
Point anchor: 內(nèi)核的基準(zhǔn)點(diǎn)(anchor)闰靴,其默認(rèn)值為(-1,-1)說明位于kernel的中心位置」匕裕基準(zhǔn)點(diǎn)即kernel中與進(jìn)行處理的像素點(diǎn)重合的點(diǎn)传黄。
double delta: 在儲(chǔ)存目標(biāo)圖像前可選的添加到像素的值,默認(rèn)值為0
int borderType: 像素向外逼近的方法队寇,默認(rèn)值是BORDER_DEFAULT,即對(duì)全部邊界進(jìn)行計(jì)算。
該函數(shù)使用于任意線性濾波器的圖像章姓,支持就地操作佳遣。當(dāng)其中心移動(dòng)到圖像外,函數(shù)可以根據(jù)指
很明顯和我們之前調(diào)用的opencv中均值模糊的API效果其實(shí)是一樣的:
拉普拉斯算子—— 銳化
讓圖像的輪廓凡伊,細(xì)節(jié)更加突出零渐,更加清晰。
7.3 高斯模糊Gaussian Blur
高斯模糊對(duì)于 去噪? 效果好系忙。
高斯模糊的原理和參數(shù):
GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]]) -> dst
src參數(shù)表示待處理的輸入圖像诵盼。
ksize參數(shù)表示高斯濾波器模板大小。 ksize.width和ksize.height可以不同银还,但它們都必須是正數(shù)和奇數(shù)风宁。或者蛹疯,它們可以是零戒财,即(0, 0),然后從σ計(jì)算出來捺弦。
sigmaX參數(shù)表示 X方向上的高斯內(nèi)核標(biāo)準(zhǔn)差饮寞。
sigmaY參數(shù)表示 Y方向上的高斯內(nèi)核標(biāo)準(zhǔn)差。 如果sigmaY為零列吼,則設(shè)置為等于sigmaX幽崩,如
果兩個(gè)sigma均為零,則分別從ksize.width和ksize.height計(jì)算得到寞钥。
補(bǔ):若ksize不為(0, 0)慌申,則按照ksize計(jì)算,后面的sigmaX沒有意義凑耻。若ksize為(0, 0)太示,則根據(jù)后面的sigmaX計(jì)算ksize
int borderType=BORDER_DEFAULT: 推斷圖像外部像素的某種便捷模式柠贤,有默認(rèn)值BORDER_DEFAULT,如果沒有特殊需要不用更改类缤。
可知:
這個(gè)函數(shù)可以根據(jù)ksize和sigma求出對(duì)應(yīng)的高斯核臼勉,計(jì)算方式就是上文提到的計(jì)算方式,而返回值是一個(gè)一維高斯核餐弱。
其中需要注意的是宴霸,如果sigma為非正數(shù)(負(fù)數(shù)或0)的話,就會(huì)根據(jù)ksize來自動(dòng)計(jì)算sigma膏蚓,計(jì)算公式為sigma = 0.3*((ksize-1)*0.5-1)+0.8
由上述公式可以計(jì)算得出瓢谢,
當(dāng)ksize=3時(shí),sigma=0.8
當(dāng)ksize=5時(shí)驮瞧,sigma為1.1.
cv2.sepFilter2D函數(shù)傳入兩個(gè)一維kernel,然后對(duì)圖像的每一行以kernelX為卷積核做卷積氓扛,對(duì)結(jié)果的每一列以kernelY為卷積核做卷積,最后歸一化得到新的高斯濾波后的圖像论笔。
綜上:opencv實(shí)現(xiàn)的高斯濾波采郎,是對(duì)傳入的sigmaX,sigmaY分別產(chǎn)生兩個(gè)一維卷積核狂魔,然后分別再行和列上做卷積蒜埋,其中sigmaX和sigmaY如果沒有傳入?yún)?shù),則由ksize計(jì)算得到最楷。
高斯模糊/噪聲
輪廓還在整份,保留圖像的主要特征
高斯模糊比均值模糊去噪效果好
原理:是把要模糊的像素色值統(tǒng)計(jì),用數(shù)學(xué)上加權(quán)平均的計(jì)算方法(高斯函數(shù))得到色值籽孙,對(duì)范圍烈评、半徑等進(jìn)行模糊。通俗的講蚯撩,高斯濾波就是對(duì)整幅圖像進(jìn)行加權(quán)平均的過程础倍,每一個(gè)像素點(diǎn)的值,都由其本身和鄰域內(nèi)的其他像素值經(jīng)過加權(quán)平均后得到胎挎。
應(yīng)用:一些美顏軟件沟启、美顏相機(jī)上的磨皮和毛玻璃特效基本上都是用的高斯模糊,并且大部分圖像處理軟件中都有高斯模糊的操作犹菇,除此之外德迹,高斯模糊還具有減少圖像層次和深度的功能
7.3.1 高斯原理
7.3.1.1 介紹
高斯模糊(英語:Gaussian Blur),也叫高斯平滑揭芍,通常用它來減少圖像噪聲以及降低細(xì)節(jié)層次胳搞。這種模糊技術(shù)生成的圖像,其視覺效果就像是經(jīng)過一個(gè)半透明屏幕在觀察圖像,這與鏡頭焦外成像效果散景以及普通照明陰影中的效果都明顯不同肌毅。高斯平滑也用于計(jì)算機(jī)視覺算法中的預(yù)先處理階段筷转,以增強(qiáng)圖像在不同比例大小下的圖像效果(參見尺度空間表示以及尺度空間實(shí)現(xiàn))。
?從數(shù)學(xué)的角度來看悬而,圖像的高斯模糊過程就是圖像與正態(tài)分布做卷積呜舒。由于正態(tài)分布又叫作高斯分布,所以這項(xiàng)技術(shù)就叫作高斯模糊笨奠。圖像與圓形方框模糊做卷積將會(huì)生成更加精確的焦外成像效果袭蝗。由于高斯函數(shù)的傅立葉變換是另外一個(gè)高斯函數(shù),所以高斯模糊對(duì)于圖像來說就是一個(gè)低通濾波器般婆。
“模糊”到腥,就是將圖像中每個(gè)像素值進(jìn)行重置的過程,這個(gè)過程采用將每一個(gè)像素都設(shè)置成周邊像素的平均值蔚袍。
2是中間點(diǎn)乡范,周邊點(diǎn)都是1。假設(shè)周邊的點(diǎn)對(duì)中間點(diǎn)的影響都是相同的页响,即構(gòu)造的卷積算子如下:
可以看出中間的 2 被重置為了10/9篓足。“中間點(diǎn)"取"周圍點(diǎn)"的平均值闰蚕,變成10/9。在數(shù)值上连舍,這是一種"平滑化”没陡。在圖形上,就相當(dāng)于產(chǎn)生"模糊"效果索赏,"中間點(diǎn)"失去細(xì)節(jié)盼玄。
顯然,計(jì)算平均值時(shí)潜腻,取值范圍越大埃儿,"模糊效果"越強(qiáng)烈。如下三幅圖融涣,分別表示原圖童番,3X3和5X5的模糊效果圖。
接下來的問題就是威鹿,既然每個(gè)點(diǎn)都要取周邊像素的平均值剃斧,那么應(yīng)該如何分配權(quán)重呢?
如果使用簡(jiǎn)單平均忽你,顯然不是很合理幼东,因?yàn)閳D像都是連續(xù)的,越靠近的點(diǎn)關(guān)系越密切,越遠(yuǎn)離的點(diǎn)關(guān)系越疏遠(yuǎn)根蟹。因此脓杉,加權(quán)平均更合理,距離越近的點(diǎn)權(quán)重越大简逮,距離越遠(yuǎn)的點(diǎn)權(quán)重越小球散。
7.3.1.2 ND的權(quán)重分布和sigma/ksize
正態(tài)分布顯然是一種可取的權(quán)重分配模式,可理解為加權(quán)平均买决。
在圖形上沛婴,正態(tài)分布是一種鐘形曲線,越接近中心督赤,取值越大嘁灯,越遠(yuǎn)離中心,取值越小躲舌。
計(jì)算平均值的時(shí)候丑婿,我們只需要將"中心點(diǎn)"作為原點(diǎn),其他點(diǎn)按照其在正態(tài)曲線上的位置没卸,分配權(quán)重羹奉,就可以得到一個(gè)加權(quán)平均值。
正態(tài)分布的密度函數(shù)叫做"高斯函數(shù)"(Gaussian function)约计。它的一維形式是:
其中诀拭,μ是x的均值,σ是x的方差煤蚌。因?yàn)橛?jì)算平均值的時(shí)候耕挨,中心點(diǎn)就是原點(diǎn),所以μ等于0尉桩。通過上述兩個(gè)維度的高斯濾波器函數(shù)可以得到下圖的函數(shù)圖像筒占。其中σ的大小決定了高斯函數(shù)的寬度, σ越大函數(shù)圖像跨幅越寬蜘犁,反之則越窄翰苫。
上面的正態(tài)分布是一維的,圖像都是二維的这橙,所以我們需要二維的正態(tài)分布奏窑。
有了這個(gè)函數(shù) ,就可以計(jì)算每個(gè)點(diǎn)的權(quán)重了析恋。
權(quán)重矩陣:
假定中心點(diǎn)的坐標(biāo)是(0,0)良哲,那么距離它最近的8個(gè)點(diǎn)的坐標(biāo)如下:
更遠(yuǎn)的點(diǎn)以此類推。
為了計(jì)算權(quán)重矩陣助隧,需要設(shè)定σ的值筑凫。假定σ=1.5(σ值越大圖像越平滑/模糊, gama越大第一部分越小滑沧,e越大),則模糊半徑為1的權(quán)重矩陣如下:
以(0,1)為例:x=0, y=1. G(x,y) = 1/(2pi1.5^2) * e^(-1/ 2*1.5^2) = 0.56640584...
這9個(gè)點(diǎn)的權(quán)重總和等于0.4787147巍实,如果只計(jì)算這9個(gè)點(diǎn)的加權(quán)平均滓技,還必須讓它們的權(quán)重之和等于1,因此上面9個(gè)值還要分別除以0.4787147棚潦,得到最終的權(quán)重矩陣
假定中心點(diǎn)坐標(biāo)為(0令漂,0),當(dāng)設(shè)定卷積核為3時(shí)丸边,只需計(jì)算距離它最近的8個(gè)點(diǎn)叠必,如圖中的第一個(gè)矩陣所示。以此矩陣中的坐標(biāo)妹窖,帶入到公式2-14中纬朝,并且取σ=1.5,則半徑為1的權(quán)重矩陣如圖中第二個(gè)矩陣所示骄呼。因?yàn)樾枰迷摍?quán)重矩陣做加權(quán)平均共苛,故需要對(duì)原始的矩陣做歸一化。具體操作方式是求出第二個(gè)矩陣的總和為0.4783蜓萄,然后再將該矩陣的9個(gè)值分別除以0.4783隅茎,得到最終的卷積核(權(quán)重矩陣)。
你不進(jìn)行歸一化嫉沽,該核乘以像素可能就會(huì)超過0-255范圍辟犀。(比如你核中值都大于一的話,很可能越界绸硕,所以做一個(gè)歸一化最好)
上述計(jì)算都只是得到了 高斯核W俚拧!臣咖! 如果要做進(jìn)一步模糊就要用這個(gè)核來模糊。
通過上述步驟計(jì)算出高斯核漱牵,基于該高斯核便可進(jìn)行高斯濾波操作夺蛇。假設(shè)現(xiàn)有9個(gè)像素點(diǎn),灰度值(0-255)如下圖中第一個(gè)卷積核所示酣胀,計(jì)算圖中中心點(diǎn)的濾波后的值刁赦。每個(gè)像素點(diǎn)乘以相對(duì)應(yīng)的權(quán)重值,得到最終的分布值闻镶。將這9個(gè)像素的值相加得到的結(jié)果甚脉,就是中心位置圖像濾波后的值。對(duì)所有點(diǎn)重復(fù)這個(gè)過程铆农,就得到了高斯濾波后的圖像牺氨。如果原圖是彩色圖片,可以對(duì)RGB三個(gè)通道分別做高斯濾波。
??值的意義及選取
通過上述的實(shí)現(xiàn)過程猴凹,不難發(fā)現(xiàn)夷狰,高斯濾波器模板的生成最重要的參數(shù)就是高斯分布的標(biāo)準(zhǔn)差??。標(biāo)準(zhǔn)差代表著數(shù)據(jù)的離散程度郊霎,如果??較小沼头,那么生成的模板的中心系數(shù)較大,而周圍的系數(shù)較小书劝,這樣對(duì)圖像的平滑效果就不是很明顯进倍;反之,??較大购对,則生成的模板的各個(gè)系數(shù)相差就不是很大猾昆,比較類似均值模板,對(duì)圖像的平滑效果比較明顯洞斯。
來看下一維高斯分布的概率分布密度圖:
橫軸表示可能得取值x毡庆,豎軸表示概率分布密度F(x),那么不難理解這樣一個(gè)曲線與x軸圍成的圖形面積為1烙如。??(標(biāo)準(zhǔn)差)決定了這個(gè)圖形的寬度么抗,可以得出這樣的結(jié)論:??越大,則圖形越寬亚铁,尖峰越小蝇刀,圖形較為平緩;
??越小徘溢,則圖形越窄吞琐,越集中,中間部分也就越尖然爆,圖形變化比較劇烈站粟。這其實(shí)很好理解,如果sigma也就是標(biāo)準(zhǔn)差越大曾雕,則表示該密度分布一定比較分散奴烙,由于面積為1,于是尖峰部分減小剖张,寬度越寬(分布越分散)切诀;同理,當(dāng)??越小時(shí)搔弄,說明密度分布較為集中幅虑,于是尖峰越尖,寬度越窄顾犹!
于是可以得到如下結(jié)論:
??越大倒庵,分布越分散褒墨,各部分比重差別不大,于是生成的模板各元素值差別不大哄芜,類似于平均模板
??越小貌亭,分布越集中,中間部分所占比重遠(yuǎn)遠(yuǎn)高于其他部分认臊,反映到高斯模板上就是中心元素值遠(yuǎn)遠(yuǎn)大于其他元素值圃庭,于是自然而然就相當(dāng)于中間值得點(diǎn)運(yùn)算。
7.3.1.3 計(jì)算高斯模糊
有了權(quán)重矩陣失晴,就可以計(jì)算高斯模糊的值了剧腻。假設(shè)現(xiàn)有9個(gè)像素點(diǎn),灰度值(0-255)如下:
每個(gè)點(diǎn)乘以自己的權(quán)重值:
將這9個(gè)值加起來涂屁,就是中心點(diǎn)的高斯模糊的值书在。
對(duì)所有點(diǎn)重復(fù)這個(gè)過程,就得到了高斯模糊后的圖像拆又。如果原圖是彩色圖片儒旬,可以對(duì)RGB三個(gè)通道分別做高斯模糊。
uniformed(高斯正態(tài))概率分布
其中 x 是圖像中的半徑帖族。
上面也可以看成一維高斯栈源,對(duì)應(yīng)三個(gè)值的話,-1,0,1. 這三個(gè)值所對(duì)應(yīng)的值? x y z竖般,這三個(gè)對(duì)應(yīng)的xyz權(quán)重綜合加起來為1.(x的權(quán)重=x/(x+y+z))
知道 x 后就能通過 x 求出sigma甚垦,如果知道sigma,也可以通過sigma求出 x涣雕〖枇粒可以通過x開平方或者sigma求平方得到x,來做模糊挣郭,這是最常見的方法迄埃,當(dāng)然還有別的方法來對(duì)x和y之間解算。
因?yàn)楦↑c(diǎn)數(shù)在計(jì)算機(jī)中很費(fèi)cpu兑障,所以我們可以把它轉(zhuǎn)為整數(shù):
下面是高斯分布的filter调俘。
比如該表格 15*1+20*2+25*1 = 80, 1+2+1 = 4, 80/4 = 20。然后豎著1*3矩陣算子做模糊旺垒,得到二圖就是最終圖。其實(shí)這就是高斯3*3模糊的原理肤无,先橫后豎先蒋。其實(shí)也可以直接3*3矩陣一起來過濾。
二維高斯拆分為一維高斯達(dá)到加速目的:
所以二維高斯你可以用二維也可以拆解為一維來用宛渐。二維的高斯就是3*3, 那么對(duì)應(yīng)的就是 9次乘法竞漾,8次加法眯搭,一次除法。一維就是一個(gè)1*3一個(gè)3*1业岁,對(duì)應(yīng)的就是 6次乘法鳞仙,4次加法,兩次除法笔时。如果只看乘除法棍好,二維:10次計(jì)算。一維:8次計(jì)算允耿。所以一維比二維要少兩次運(yùn)算借笙。所以5*5 , N*N较锡, 越高它少的就越多R导凇!B煸獭低散!所以很多二維filter高斯就把它拆分為一維,來做到加速骡楼,計(jì)算加速熔号。
7.3.2 代碼層面代碼層面:
原圖加上高斯噪音:
對(duì)原圖進(jìn)行高斯模糊:(毛玻璃效果)高斯模糊的效果如下尸饺,輪廓還在缭付,但是他又很模糊,他考慮了每個(gè)像素的權(quán)重亡笑,他當(dāng)前權(quán)是最大的沒得平均吃嘿,所以他保留了像素的主要特征祠乃,所以高斯模糊比均值模糊要好一點(diǎn),因?yàn)樗A袅藞D片的特征兑燥。
對(duì)原圖加了高斯噪音的圖進(jìn)行高斯模糊:
高斯模糊對(duì)高斯噪音是有抑制作用的亮瓷。
我們改為 5*5 的高斯模糊后,噪聲被抑制了很多降瞳,說明我們高斯的模糊對(duì)我們高斯的噪聲有一定的抑制作用嘱支。
7.4 邊緣保留濾波(EPF)
我們對(duì)去燥之后的照片進(jìn)行觀察可以發(fā)現(xiàn),前面的四種去燥方法的確抑制了噪聲挣饥,但是同時(shí)也使圖像本身變得更加朦朧了除师。當(dāng)人物和背景同時(shí)存在時(shí),人物和背景之間的界限也變得模糊不清了扔枫。這其實(shí)是和算法本身的局限性密切相關(guān)的汛聚,前面四種算法像是一個(gè)沒有感情的機(jī)器人,對(duì)所有的像素點(diǎn)都是一視同仁短荐,不管你是人像還是背景還是分界線倚舀,我的計(jì)算方法永遠(yuǎn)不變叹哭,上來先卷積了再說。這種類似中央空調(diào)似的做法痕貌,也就導(dǎo)致了人像风罩、背景、邊界混在一起舵稠,主次難辨了超升。
基于此,一種優(yōu)化的濾波算法被設(shè)計(jì)了出來——邊緣保留濾波柱查。正如它的名字表明的那樣廓俭,這種濾波算法可以把圖像的邊緣保留下來。
實(shí)現(xiàn)EPF有很多方法:高斯雙邊 和 均值遷移 和 局部均方差 等等唉工。
OpenCV給出的最經(jīng)典的兩種:高斯雙邊 和 均值遷移研乒。
EPF = Edge Preservation Filter 邊緣保留濾波
人臉美容或?yàn)V鏡,EPF是一個(gè)核心步驟淋硝,沒有它就沒有美顏; 當(dāng)然還存在一些其他的步驟雹熬,其他步驟只是用來處理失真等問題,讓圖像看起來更好谣膳,有EPF才叫美顏竿报。
7.4.1 高斯雙邊(磨皮,非線性濾波):
void bilateralFilter( InputArray src,?
OutputArray dst,?
int d,
double sigmaColor, double sigmaSpace,
int borderType = BORDER_DEFAULT );
d表示在過濾過程中每個(gè)像素鄰域的直徑范圍。如果這個(gè)值是非正數(shù)继谚,則函數(shù)會(huì)從第五個(gè)參數(shù)sigmaSpace計(jì)算該值烈菌,一般情況下取0。
sigmaColor越大花履,表明該像素鄰域內(nèi)有越寬廣的顏色會(huì)被混合到一起芽世,產(chǎn)生較大的半相等顏色區(qū)域,即色差多大范圍之內(nèi)才參與計(jì)算诡壁,一般取一個(gè)大一點(diǎn)的值济瓢。?
sigmaSpace:該值較大,則意味著顏色相近的較遠(yuǎn)的像素將相互影響妹卿,從而使更大的區(qū)域中足夠相似的顏色獲取相同的顏色旺矾。
當(dāng)d>0時(shí),d指定了鄰域大小且與sigmaSpace無關(guān)夺克,否則d正比于sigmaSpace箕宙。
cv2.bilateralFilter(img, d, ’p1’, ’p2’ )
d是領(lǐng)域的直徑,后面兩個(gè)參數(shù)是空間高斯函數(shù)標(biāo)準(zhǔn)差和灰度值相似性高斯函數(shù)標(biāo)準(zhǔn)差铺纽。
高斯模糊只考慮了權(quán)重扒吁,只考慮了像素空間的分布,沒有考慮像素值和另一個(gè)像素值之間差異的問題,如果像素間差異較大的情況下(比如圖像的邊緣)雕崩,高斯模糊會(huì)進(jìn)行處理,但是我們不需要處理邊緣融撞,要進(jìn)行的操作就叫做邊緣保留濾波(EPF)
雙邊濾波是一種非線性濾波器盼铁,它可以達(dá)到保持邊緣、降噪平滑的效果尝偎。和其他濾波原理一樣饶火,雙邊濾波也是采用加權(quán)平均的方法,用周邊像素亮度值的加權(quán)平均代表某個(gè)像素的強(qiáng)度致扯,所用的加權(quán)平均基于高斯分布[1]肤寝。最重要的是,雙邊濾波的權(quán)重不僅考慮了像素的歐氏距離(如普通的高斯低通濾波抖僵,只考慮了位置對(duì)中心像素的影響)鲤看,還考慮了像素范圍域中的輻射差異(例如卷積核中像素與中心像素之間相似程度、顏色強(qiáng)度耍群,深度距離等)义桂,在計(jì)算中心像素的時(shí)候同時(shí)考慮這兩個(gè)權(quán)重。?
我們來看一下左上角的那個(gè)黃圖蹈垢。其中白色那個(gè)點(diǎn)就是像素點(diǎn)靠近邊緣的情況慷吊。我們可以把比較高的那部分想象成像素值比較高的人像,比較低的那部分想象成像素值比較低的背景曹抬。這樣在濾波的時(shí)候溉瓶,人像那部分權(quán)值不為0,比較低的背景部分權(quán)值為0谤民。這樣只有人像部分參與了濾波堰酿。同理,在進(jìn)行背景部分的濾波時(shí)也是這樣赖临。這樣大家各玩各的胞锰,互不影響,邊緣就被保留了下來兢榨。
圖中梯度有高有低嗅榕,低的梯度意味著像素值小,高的地發(fā)意味著像素之高吵聪。低的地發(fā)可以說越接近0,趨向黑色凌那。高的地發(fā)接近255, 趨向于白色。當(dāng)濾波滑動(dòng)到邊緣的時(shí)候吟逝,發(fā)現(xiàn)低位的數(shù)值太小了帽蝶,就直接保留,高點(diǎn)的值還是和算子值很接近块攒,所以就模糊掉励稳。
我們有兩個(gè)space佃乘,一個(gè)是spatial一個(gè)是邊緣。圖中第一個(gè)核就是我們的 spatial kernel驹尼,它代表我們空間的sigma趣避。下面range kernel 這個(gè)就是我們color的sigma,顏色的差異值我們就不考慮新翎。
雙邊濾波里的兩個(gè)權(quán)重域的概念:空間域(spatial domain S)和像素范圍域(range domain R),這個(gè)是它跟高斯濾波等方法的最大不同點(diǎn)程帕。下面是我找到的對(duì)比說明,更好地理解雙邊濾波地啰,首先是高斯濾波的情況:
Iq為輸入圖像
然后對(duì)比再看一下雙邊濾波的過程:
雙邊濾波的核函數(shù)是空間域核與像素范圍域核的綜合結(jié)果:在圖像的平坦區(qū)域愁拭,像素值變化很小,對(duì)應(yīng)的像素范圍域權(quán)重接近于1亏吝,此時(shí)空間域權(quán)重起主要作用岭埠,相當(dāng)于進(jìn)行高斯模糊;在圖像的邊緣區(qū)域顺呕,像素值變化很大枫攀,像素范圍域權(quán)重變大,從而保持了邊緣的信息株茶。
7.4.2 MeanShift(更加類似于油畫)
7.4.3 代碼(Gaussian / MeanShift)
通過上圖我們會(huì)發(fā)現(xiàn)来涨,他只對(duì)人臉進(jìn)行了邊緣處理,右下角的百度經(jīng)驗(yàn)沒有被模糊启盛。
均值漂移(更加類似于油畫):