影象增強之空間域濾波
1、為什麼進行影象增強
影象增強是指增強影象中某些特徵,同時削弱或去除某些不需要的資訊,即為了某種應用而去改善影象的質量,消除噪聲,顯現那些被模糊了的細節或簡單的突出一副影象中感興趣的特徵。所以影象增強並不是增強影象的原始資訊,而是隻針對某一特徵以提高某種資訊的辨別能力,影象增強需要根據需求採用特定的方法,當增強一些資訊時另外一些資訊必定被損失,不存在一種通用的方法,必須根據需求決定保留哪些資訊丟棄哪些資訊。
影象增強技術基本上可以分為兩類:空間域增強、頻域增強。
2、空間域濾波理論
2.1定義
空間域濾波就是在影象平面上對畫素進行操作。
空間域濾波大體分為兩類:平滑、銳化。
平滑濾波:模糊處理,用於減小噪聲,實際上是低通濾波,典型的濾波器是高斯濾波。
銳化濾波:提取邊緣突出邊緣及細節、彌補平滑濾波造成的邊緣模糊。實際上是高通濾波。
空間域處理可由下式表示:
g(x,y)=T[f(x,y)]
式中,f(x,y)是輸入影象,g(x,y)是處理後的影象,T是在點(x,y)的鄰域上定義的關於f的一種運算元,運算元可應用於單幅影象或影象集合。
2.2空間域濾波和鄰域處理
1)空間濾波器由一個鄰域(通常是一個較小的矩形)和對該鄰域所包圍影象畫素執行的預定義操作組成。對預定義的點(x,y)為中心的領域內的畫素進行計算。
2)濾波產生一個新畫素,新畫素的座標等於鄰域中心的座標(x,y),畫素的值是濾波操作的結果。即用計算後的新畫素值作為點(x,y)的值。
3)迴圈步驟1和2,濾波器的中心遍歷影象中的每個畫素後,就生成了濾波後的影象。
4)如果在影象畫素上執行的是線性操作,則該濾波器稱為線性空間濾波器,否則,稱為非線性空間濾波器。
一般來說,使用大小為 m×n的濾波器對大小為 M×N的影象進行線性空間濾波,可由下式表示:
3、平滑濾波
平滑濾波可以減少和抑制影象中的噪聲,平滑後圖像變得模糊,噪聲降低。模糊處理常用於預處理任務中,如在目標提取之前去除影象中的一些瑣碎細節,以及橋接直線或曲線的縫隙。
1)工作原理
一般來說,影象具有區域性連續的性質,即相鄰的畫素的值相近,而噪聲使得噪點處產生畫素跳躍,所以通過平滑噪點可以減少噪聲,去除影象中的不相關細節。
2)均值濾波和加權濾波
平滑濾波的輸出是包含在濾波器模板鄰域內的畫素的簡單平均值,也就是均值濾波器。
均值濾波器是低通濾波器,常見的操作有均值濾波和加權濾波。
W是濾波模板,模板的大小取決於需要濾除的物體的大小,使用時需要更具影象特點選擇模板尺寸。
為什麼使用加權,平滑濾波對領域內的畫素一視同仁,但是一般認為距離模板中心的畫素應對濾波結果有較大的貢獻,所以將模板中心的係數取得比模板周邊的係數大,隨著距離中心距離增大,權重迅速減小。高速濾波就是一種加權濾波,只不過模板中的係數由高斯分佈來確定的。
3)實現
Matlab濾波可以用fspecial產生濾波模板。
f=fspecial('average', 3)產生係數為:
f =
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
例1:均值濾波
imgPath = 'E:\opencv_pic\src_pic\pic4.bmp'; img = imread(imgPath); img = imnoise(img,'salt & pepper', 0.02); f=fspecial('average', 3); img1=imfilter(img, f); f=fspecial('average', 10); img2=imfilter(img, f2); subplot(1,3,1),imshow(img), title('原始影象'); subplot(1,3,2),imshow(img1),title('均值濾波1'); subplot(1,3,3),imshow(img2),title('均值濾波2');
可見下圖,當濾波係數為3*3時,可以濾波大部分噪聲,當濾波係數為10時,濾除了全部噪聲但是影象變得模糊。
例2:高斯噪聲濾波
imgPath = 'E:\opencv_pic\src_pic\pic4.bmp'; img = imread(imgPath); img = imnoise(img, 'gaussian', 0, 0.01); f=fspecial('average', 5); img1=imfilter(img, f); f2=fspecial('gaussian', 5, 0.8); img2=imfilter(img, f2); subplot(1,3,1),imshow(img), title('原始影象'); subplot(1,3,2),imshow(img1),title('均值濾波'); subplot(1,3,3),imshow(img2),title('高斯濾波');
兩個濾波模板分別為:
f =
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
f2 =
0.0005 0.0050 0.0109 0.0050 0.0005
0.0050 0.0522 0.1141 0.0522 0.0050
0.0109 0.1141 0.2491 0.1141 0.0109
0.0050 0.0522 0.1141 0.0522 0.0050
0.0005 0.0050 0.0109 0.0050 0.0005
濾波效果如下圖。
放大後觀察細節,均值濾波在漸變處出現嚴重的模糊現象,高斯濾波由於使用了帶權重的濾波係數,情況好很多。
4、自適應平滑濾波
1)原理
利用平均模板平滑在消除噪聲的同時也使得影象變得模糊,高斯平滑在一定程度上緩解了這些現象,但由於平滑濾波的原理可知這種模糊是不可避免的。所以可以進行選擇性的平滑,即只對噪聲區域性區域進行平滑,對無噪聲的區域性區域不進行平滑,將模糊的影響降到最低。
2)實現
自適應的關鍵是對噪聲區域的識別,哪些區域是需要平滑的,哪些區域不需要。一般地,噪聲的存在使噪聲點產生灰度跳躍,從而使噪聲點區域性區域灰度跨度較大。
所以,方法1:可以設定閾值T,當局部最大灰度和最小灰度只差大於閾值,則進行平滑;否則不平滑。方法2:當局部區域灰度方差大於閾值T則進行平滑;否則不平滑。
5、中值濾波
1)原理
中值濾波是一種統計排序濾波器,影象上點(x,y),中值濾波以該點為中心,領域內所有畫素的統計排序中值作為此點的響應,中值濾波是非線性濾波。
相比與均值濾波和高斯濾波,中值濾波可以有效的降低隨機噪聲,直接忽略掉噪聲點,把噪聲引起的模糊降到最低。典型的應用就是中值濾波消除椒鹽噪聲。
2)中值濾波效果對比
imgPath = 'E:\opencv_pic\src_pic\pic4.bmp'; img = imread(imgPath); img0 = rgb2gray(img); img = imnoise(img0,'salt & pepper'); f=fspecial('average', 3); img1=imfilter(img, f); f2=fspecial('gaussian', 3, 0.8); img2=imfilter(img, f2); img3=medfilt2(img, [3,3]); subplot(2,3,1),imshow(img0), title('原始影象'); subplot(2,3,2),imshow(img), title('噪聲影象'); subplot(2,3,3),imshow(img1),title('均值濾波'); subplot(2,3,4),imshow(img2),title('高斯濾波'); subplot(2,3,5),imshow(img3),title('中值濾波');
從下圖可見,線性平滑濾波在濾除噪聲的同時不可避免的引起了模糊,而中值濾波在有效濾除隨機噪聲的同時,還有效抑制了模糊效應。對於椒鹽噪聲影象,中值濾波的效果要好於線性平滑濾波。
放大後觀察細節,中值濾波較好的還原了原圖。
6、參考文獻
1、影象增強之空間域濾波 -- Part1. 原理篇
https://blog.csdn.net/hhaowang/article/details/87978218
2、Image Filtering and Enhancement
https://ww2.mathworks.cn/help/images/image-enhancement-and-restoration.html?s_tid=CRUX_lftnav
尊重原創技術文章,轉載請註明。
https://www.cnblogs.com/pingwen/p/12267325.html
&n