前言
本文主要介紹了自適應(yīng)的中值濾波器,并基于OpenCV實(shí)現(xiàn)了該濾波器,并且將自適應(yīng)的中值濾波器和常規(guī)的中值濾波器對(duì)不同概率的椒鹽噪聲的過(guò)濾效果進(jìn)行了對(duì)比。最后,對(duì)中值濾波器的優(yōu)缺點(diǎn)了進(jìn)行了總結(jié)。
空間濾波器
一個(gè)空間濾波器包括兩個(gè)部分:
? 一個(gè)鄰域,濾波器進(jìn)行操作的像素集合,通常是一個(gè)矩形區(qū)域
? 對(duì)鄰域中像素進(jìn)行的操作
一個(gè)濾波器就是在選定的鄰域像素上執(zhí)行預(yù)先定義好的操作產(chǎn)生新的像素,并用新的像素替換掉原來(lái)像素形成新的圖像。通常,也可以將濾波器稱(chēng)之為核(kernel),模板(template)或者窗口(window)。
根據(jù)預(yù)定義的操作,可以將濾波器分為:
? 線性濾波器? 非線性濾波器
而根據(jù)濾波器最終對(duì)圖像造成的影響,可以將濾波器分為:
? 平滑濾波器 ,通常用于模糊圖像或者去除圖像中的噪聲? 銳化濾波器,突出圖像中的邊緣細(xì)節(jié)部分
中值濾波器 Median Filter
中值濾波器是一種常用的非線性濾波器,其基本原理是選擇待處理像素的一個(gè)鄰域中各像素值的中值來(lái)代替待處理的像素,其主要功能是像素的灰度值與周?chē)袼乇容^接近,從而消除孤立的噪聲點(diǎn),所以中值濾波器能夠很好的消除椒鹽噪聲。不僅如此,中值濾波器在消除噪聲的同時(shí),還能有效的保護(hù)圖像的邊界信息,不會(huì)對(duì)圖像造成很大的模糊(相比于均值濾波器)。
中值濾波器的效果受濾波窗口尺寸的影響較大,在消除噪聲和保護(hù)圖像的細(xì)節(jié)存在著矛盾:濾波窗口較小,則能很好的保護(hù)圖像中的某些細(xì)節(jié),但對(duì)噪聲的過(guò)濾效果就不是很好;反之,窗口尺寸較大有較好的噪聲過(guò)濾效果,但是會(huì)對(duì)圖像造成一定的模糊。另外,根據(jù)中值濾波器原理,如果在濾波窗口內(nèi)的噪聲點(diǎn)的個(gè)數(shù)大于整個(gè)窗口內(nèi)像素的個(gè)數(shù),則中值濾波就不能很好的過(guò)濾掉噪聲。
自適應(yīng)中值濾波器 Adaptive Median Filter
上面提到常規(guī)的中值濾波器,在噪聲的密度不是很大的情況下(根據(jù)經(jīng)驗(yàn),噪聲的出現(xiàn)的概率小于0.2),效果不錯(cuò)。但是當(dāng)概率出現(xiàn)的概率較高時(shí),常規(guī)的中值濾波的效果就不是很好了。有一個(gè)選擇就是增大濾波器的窗口大小,這雖然在一定程度上能解決上述的問(wèn)題,但是會(huì)給圖像造成較大的模糊。
常規(guī)的中值濾波器的窗口尺寸是固定大小不變的,就不能同時(shí)兼顧去噪和保護(hù)圖像的細(xì)節(jié)。這時(shí)就要尋求一種改變,根據(jù)預(yù)先設(shè)定好的條件,在濾波的過(guò)程中,動(dòng)態(tài)的改變?yōu)V波器的窗口尺寸大小,這就是自適應(yīng)中值濾波器 Adaptive Median Filter。在濾波的過(guò)程中,自適應(yīng)中值濾波器會(huì)根據(jù)預(yù)先設(shè)定好的條件,改變?yōu)V波窗口的尺寸大小,同時(shí)還會(huì)根據(jù)一定的條件判斷當(dāng)前像素是不是噪聲,如果是則用鄰域中值替換掉當(dāng)前像素;不是,則不作改變。
自適應(yīng)中值濾波器有三個(gè)目的:
? 濾除椒鹽噪聲? 平滑其他非脈沖噪聲? 盡可能的保護(hù)圖像中細(xì)節(jié)信息,避免圖像邊緣的細(xì)化或者粗化。
自使用中值濾波算法描述
自適應(yīng)濾波器不但能夠?yàn)V除概率較大的椒鹽噪聲,而且能夠更好的保護(hù)圖像的細(xì)節(jié),這是常規(guī)的中值濾波器做不到的。自適應(yīng)的中值濾波器也需要一個(gè)矩形的窗口SxySxy,和常規(guī)中值濾波器不同的是這個(gè)窗口的大小會(huì)在濾波處理的過(guò)程中進(jìn)行改變(增大)。需要注意的是,濾波器的輸出是一個(gè)像素值,該值用來(lái)替換點(diǎn)(x,y)(x,y)處的像素值,點(diǎn)(x,y)(x,y)是濾波窗口的中心位置。
在描述自適應(yīng)中值濾波器時(shí)需要用到如下的符號(hào):
? Zmin= Sxy中的最小灰度值? Zmax= Sxy中的最大灰度值? Zmed= Sxy中的灰度值的中值? Zxy表示坐標(biāo)(x,y)處的灰度值? Smax= Sxy允許的最大窗口尺寸
自適應(yīng)中值濾波器有兩個(gè)處理過(guò)程,分別記為:A和B。
A:A1 = Zmed? ZminA2 = Zmed? Zmax如果A1 > 0 且 A2 < 0,跳轉(zhuǎn)到 B;否則,增大窗口的尺寸如果增大后窗口的尺寸 ≤Smax,則重復(fù)A過(guò)程。否則,輸出Zmed
B:B1 = Zxy? ZminB2 = Zxy? Zmax如果B1 > 0 且 B2 < 0,則輸出Zxy否則輸出Zmed
自適應(yīng)中值濾波原理說(shuō)明
過(guò)程A的目的是確定當(dāng)前窗口內(nèi)得到中值ZmedZmed是否是噪聲。如果Zmin< Zmed?< Zmax,則中值Zmed不是噪聲,這時(shí)轉(zhuǎn)到過(guò)程B測(cè)試,當(dāng)前窗口的中心位置的像素Zxy是否是一個(gè)噪聲點(diǎn)。如果Zmin?< Zxy?< Zmax,則Zxy不是一個(gè)噪聲,此時(shí)濾波器輸出Zxy;如果不滿(mǎn)足上述條件,則可判定Zxy是噪聲,這是輸出中值Zmed(在A中已經(jīng)判斷出Zmed不是噪聲)。
如果在過(guò)程A中,得到則Zmed不符合條件Zmin< Zmed?< Zmax,則可判斷得到的中值Zmed是一個(gè)噪聲。在這種情況下,需要增大濾波器的窗口尺寸,在一個(gè)更大的范圍內(nèi)尋找一個(gè)非噪聲點(diǎn)的中值,直到找到一個(gè)非噪聲的中值,跳轉(zhuǎn)到B;或者,窗口的尺寸達(dá)到了最大值,這時(shí)返回找到的中值,退出。
從上面分析可知,噪聲出現(xiàn)的概率較低,自適應(yīng)中值濾波器可以較快的得出結(jié)果,不需要去增加窗口的尺寸;反之,噪聲的出現(xiàn)的概率較高,則需要增大濾波器的窗口尺寸,這也符合種中值濾波器的特點(diǎn):噪聲點(diǎn)比較多時(shí),需要更大的濾波器窗口尺寸。
實(shí)現(xiàn)
有了算法的詳細(xì)描述,借助于OpenCV對(duì)圖像的讀寫(xiě),自適應(yīng)中值濾波器實(shí)現(xiàn)起來(lái)也不是很困難。

首先定義濾波器最小的窗口尺寸以及最大的窗口尺寸。
要進(jìn)行濾波處理,首先要擴(kuò)展圖像的邊界,以便對(duì)圖像的邊界像素進(jìn)行處理。copyMakeBorder根據(jù)選擇的BorderTypes使用不同的值擴(kuò)充圖像的邊界像素,具體可參考OpenCV的文檔信息。
下面就是遍歷圖像的像素,對(duì)每個(gè)像素進(jìn)行濾波處理。需要注意一點(diǎn),不論濾波器多么的復(fù)雜,其每次的濾波過(guò)程,都是值返回一個(gè)值,來(lái)替換掉當(dāng)前窗口的中心的像素值。函數(shù)adpativeProcess就是對(duì)當(dāng)前像素的濾波過(guò)程,其代碼如下:


首先,根據(jù)當(dāng)前窗口的大小,取得所有像素值存放到vector中,然后對(duì)vector進(jìn)行排序,取得像素的最小值、最大值和中值。然后測(cè)試當(dāng)前取得的中值是否在(min,max)之間,如果是,則中值不是噪聲點(diǎn),則開(kāi)始對(duì)當(dāng)前像素值進(jìn)行處理,判斷其是否是噪聲點(diǎn)。如果,測(cè)試當(dāng)前已取得的中值是噪聲點(diǎn),則擴(kuò)大窗口的尺寸,在更大的空間中重新尋找中值。
上面自適應(yīng)中值濾波器實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,所以問(wèn)題就來(lái)了:效率及其的低下。這里,這是對(duì)自適應(yīng)中值濾波器的原理的學(xué)習(xí),可以忽略這個(gè)不必要的細(xì)節(jié)。
結(jié)果對(duì)比
左邊是添加概率為0.2的椒鹽噪聲,右邊是原圖。下面是使用常規(guī)的中值濾波和本文實(shí)現(xiàn)的自適應(yīng)中值濾波器后的處理結(jié)果
左邊是自適應(yīng)中值濾波器(最小窗口為3,最大窗口為7)的結(jié)果,右圖是常規(guī)中值濾波器(窗口大小為5)的結(jié)果。可以看出,無(wú)論是中值濾波還是自適應(yīng)的中值濾波,都能過(guò)濾掉圖像中的噪聲,自適應(yīng)中值濾波器的效果要好些,常規(guī)的還有一些噪聲沒(méi)有過(guò)濾掉。而且,常規(guī)的中值濾波器對(duì)圖像造成的模糊較明顯,而自適應(yīng)中值濾波器很好的的保存了圖像中的細(xì)節(jié)。
下面測(cè)試更大概率噪聲下,兩種濾波器的工作情況。噪聲概率為0.4時(shí),
可以看出,常規(guī)的中值濾波器已經(jīng)不能很好的過(guò)濾掉噪聲,而自適應(yīng)的中值濾波還可以勝任。
中值濾波器總結(jié)
中值濾波器能夠很好的濾除“椒鹽”噪聲。椒鹽噪聲是在圖像上隨機(jī)出現(xiàn)的孤立點(diǎn),根據(jù)中值濾波器的原理,使用鄰域像素的中值代替原像素,能夠有效的消除這些孤立的噪聲點(diǎn)。
和均值濾波器相比,中值濾波在消除噪聲的同時(shí),還能在很大程度保護(hù)圖像的細(xì)節(jié),不會(huì)造成很大的模糊。和常規(guī)的中值濾波器相比,自適應(yīng)中值濾波器能夠更好的保護(hù)圖像中的邊緣細(xì)節(jié)部分。
-
圖像處理
+關(guān)注
關(guān)注
29文章
1344瀏覽量
59679 -
OpenCV
+關(guān)注
關(guān)注
33文章
652瀏覽量
45061
原文標(biāo)題:圖像處理基礎(chǔ)(2):自適應(yīng)中值濾波器(基于OpenCV實(shí)現(xiàn))
文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
屏蔽電源濾波器的分類(lèi)
交流單相濾波器與三相濾波器的核心區(qū)別解析
MAX262微處理器可編程通用有源濾波器:設(shè)計(jì)與應(yīng)用指南
MAX261微處理器可編程通用有源濾波器的深度剖析
MAX260微處理器可編程通用有源濾波器的深度解析
自適應(yīng)濾波算法介紹之維納濾波器的基本原理和應(yīng)用示例
自適應(yīng)濾波算法介紹之匹配濾波器的基本原理和應(yīng)用示例
通信系統(tǒng)中濾波器的種類(lèi)及特點(diǎn)(1)
配電房自適應(yīng)濾波聲紋傳感器:智能監(jiān)測(cè)的新維度
信號(hào)處理:指數(shù)移動(dòng)平均 (EMA) 濾波器
配電房自適應(yīng)濾波聲紋傳感器
基于FPGA LMS算法的自適應(yīng)濾波器設(shè)計(jì)
有源濾波器與無(wú)源濾波器的區(qū)別
基于混合磁調(diào)制與自適應(yīng)陷波濾波的MT9221寬頻域電流傳感技術(shù)
圖像處理基礎(chǔ)自適應(yīng)中值濾波器(基于OpenCV實(shí)現(xiàn))
評(píng)論