数字图像处理与分析(matlab实现)——实现空域线性及非线性低通平滑滤波
空域低通濾波
? ? ?? 將空間域模板用于圖像處理,通常稱為空間濾波,而空間域模板稱為空間濾波器。
? ? ?? 空間域?yàn)V波按線性和非線性特點(diǎn)有:線性、非線性平滑濾波器。線性濾波在消除圖像噪聲的同時(shí)也會(huì)模糊圖像的細(xì)節(jié),利用非線性平滑濾波可在消除圖像中噪聲的同時(shí)較好的保持圖像的細(xì)節(jié)。
? ? ?? 線性平滑濾波器包括鄰近域平均法。非線性平滑濾波器有中值濾波器。
? ? ?? 平滑濾波:平滑濾波能減弱或消除圖像中高頻率的分量,但不影響低頻率的分量。因?yàn)楦哳l分量對(duì)應(yīng)圖像中的區(qū)域邊緣等灰度值具有較大、變化較快的部分,平滑濾波將這個(gè)分量濾除可以減少局部灰度的起伏,使圖像變得平滑。經(jīng)常用于模糊處理和減小噪聲。
? ? ?? 鄰域平均法的思想是用像素及其指定鄰域內(nèi)像素的平均值或加權(quán)平均值作為該像素的新值,以便去除突變的像素點(diǎn),從而濾除一定的噪聲。鄰域平均法的數(shù)學(xué)含義可用下式表示:?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
式中:x,y =0,1,2,…,N-1;S為(x,y)點(diǎn)鄰域中到的坐標(biāo)集合,但其中不包括(x,y)點(diǎn);M為集合坐標(biāo)點(diǎn)的總數(shù)。
鄰域平均法中常用的模板是(線性平滑濾波所用的卷積模板均為正值):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
鄰域平均處理方法是以圖像模糊為代價(jià)來減小噪聲的,且模板尺寸越大,噪聲減小的效果越顯著,灰度突變的邊緣圖像更模糊。
中值濾波的算法原理是,首先確定一個(gè)奇數(shù)像素的窗口W,窗口內(nèi)各像素按灰度大小排隊(duì)后,用其中間位置的灰度值代替原f(x,y)灰度值成為窗口中心的灰度值g(x,y)。數(shù)學(xué)含義可用下式表示:
? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ?? 式中:W為選定窗口大小,f(m-i,n-j)為窗口W的像素灰度值。通常窗內(nèi)像素為奇數(shù),以便于有中間像素。若窗內(nèi)像素為偶數(shù)時(shí),則中值取中間兩像素灰度值的平均值。
?? 給選定的圖像加上椒鹽噪聲、高斯噪聲
P=rgb2gray(imread('E:\文本文件\作業(yè)\數(shù)字圖像處理與分析\camema.jpg')); noise_bl=imnoise(P,'salt & pepper',0.1); %添加椒鹽噪聲 noise_gs=imnoise(P,'gaussian'); %添加高斯噪聲 subplot(131),imshow(P),title('原圖'); %一行三列第一個(gè)顯示原圖 subplot(132),imshow(noise_bl),title('添加椒鹽噪聲'); %一行三列第二個(gè)顯示添加椒鹽噪聲圖像 subplot(133),imshow(noise_gs),title('添加高斯噪聲'); %一行三列第三個(gè)顯示添加高斯噪聲圖像? 運(yùn)行結(jié)果如下:
( 1 )鄰域平均法
- 用P=imread('E:\文本文件\作業(yè)\數(shù)字圖像處理與分析\camema.jpg')讀取圖像轉(zhuǎn)化為二維矩陣;
- 用noise_jy=imnoise(P,’salt & pepper’,0.1);得到椒鹽噪聲圖像
- 用noise_gs=imnoise(P,’gaussian’);得到高斯噪聲圖像
- 用 h1=fspecial(‘a(chǎn)verage’)? 得到默認(rèn)的h為3x3的鄰域平均模板
- 用 h2=fspecial(‘a(chǎn)verage’,7])得到h為7x7的鄰域平均模板。
- P1=imfilter(P,h1) 進(jìn)行3x3模板的平滑處理
- P2=imfilter(P,h2) 進(jìn)行7x7模板的平滑處理
- 相同函數(shù)對(duì)椒鹽噪聲圖片和高斯噪聲圖片進(jìn)行平滑處理
- 顯示原圖和處理后的圖片
? ? 代碼如下:
clear;close all;clc; P=rgb2gray(imread('E:\\作業(yè)\數(shù)字圖像處理與分析\圖片\camema.jpg')); %讀取圖像并轉(zhuǎn)為灰色圖像 noise_jy=imnoise(P,'salt & pepper',0.1); %添加椒鹽噪聲 noise_gs=imnoise(P,'gaussian'); %添加高斯噪聲 h1=fspecial('average'); % 產(chǎn)生3x3的默認(rèn)均值模板 h2=fspecial('average',7); % 產(chǎn)生7x7的均值模板 P1=imfilter(P,h1); %進(jìn)行3*3模板的均值濾波處理 P2=imfilter(P,h2); %進(jìn)行7*7模板的均值濾波處理 B1=imfilter(noise_jy,h1); %3x3模板均值濾波處理椒鹽噪聲圖片 B2=imfilter(noise_gs,h1); %3x3模板均值濾波處理高斯噪聲圖片 subplot(3,3,1),imshow(P),title('原圖'); subplot(3,3,2),imshow(noise_jy),title('添加椒鹽噪聲'); subplot(3,3,3),imshow(noise_gs),title('添加高斯噪聲'); subplot(3,3,4);imshow(P1);title('3*3 均值濾波處理原圖后的圖像 '); subplot(3,3,5);imshow(B1);title('3*3 均值濾波處理椒鹽噪聲圖片后的圖像 '); subplot(3,3,6);imshow(B2);title('3*3 均值濾波處理高斯噪聲圖片后的圖像 '); subplot(3,3,7);imshow(P2);title('7*7 均值濾波處理原圖后的圖像 ');? 運(yùn)行結(jié)果如下:
?
原 ?圖
添加椒鹽噪聲圖
添加高斯噪聲圖
3*3均值處理椒鹽噪聲圖
3*3均值處理高斯噪聲圖
3*3均值處理原圖
7*7均值處理原圖
( 2 )中值濾波
? 中值濾波的基本步驟是:
(1)將模板在圖中漫游,并將模板中心與圖中某個(gè)像素位置重合;
(2)讀取模板下各對(duì)應(yīng)像素的灰度值;
(3)將這些灰度值從小到大排成一列;
(4)找出這些灰度值里排在中間的一個(gè);
(5)將這個(gè)中間值賦給對(duì)應(yīng)模板中心位置的像素。
?
? ? ? ? 選定了一幅二維圖像,分別加入椒鹽噪聲和高斯噪聲,均是期望為 0 ,椒鹽噪聲方差為 0.1 。然后利用中值濾波法進(jìn)行濾波去噪。 Matlab 自帶了中值濾波的函數(shù),因此較為便捷。
①用P=imread(’圖片位置’)與讀取圖像;
②用noise_jy=imnoise(P,’salt & pepper’,0.1);得到椒鹽噪聲圖像
③用noise_gs=imnoise(P,’gaussian’);得到高斯噪聲圖像
④用 h1= medfilt2(noise_jy,[5,5] ); 對(duì)有椒鹽噪聲圖像進(jìn)行5×5方形窗口中值濾波
⑤相同函數(shù)對(duì)高斯噪聲圖片進(jìn)行平滑處理
⑥顯示原圖和處理后的圖片?
? ? 代碼如下:
clear;close all;clc; P=rgb2gray(imread('E:\文本文件\作業(yè)\數(shù)字圖像處理與分析\圖片\camema.jpg')); noise_jy=imnoise(P,'salt & pepper',0.1); %添加椒鹽噪聲 noise_gs=imnoise(P,'gaussian'); %添加高斯噪聲 h1= medfilt2(noise_jy,[5,5] ); %對(duì)有椒鹽噪聲圖像進(jìn)行5×5方形窗口中值濾波 h2= medfilt2(noise_gs,[5,5] ); %對(duì)有高斯噪聲圖像進(jìn)行5×5方形窗口中值濾波 subplot(2,3,1),imshow(P),title('原圖'); subplot(2,3,2),imshow(noise_jy),title('添加椒鹽噪聲'); subplot(2,3,3),imshow(noise_gs),title('添加高斯噪聲'); subplot(2,3,5);imshow(h1);title('中值濾波處理椒鹽噪聲圖片后的圖像 '); subplot(2,3,6);imshow(h2);title('中值濾波處理高斯噪聲圖片后的圖像 ');? 運(yùn)行結(jié)果如下:
?????????? 原圖
???????? 添加椒鹽噪聲圖
??????? 添加高斯噪聲圖
????? 中值濾波處理椒鹽噪聲圖
???? 中值濾波處理高斯噪聲圖
比較處理后的圖像結(jié)果可知:
(1)鄰域平均法的平滑效果與所采用鄰域的編輯有關(guān),模板尺寸越大,則圖像的模糊程度越大;此時(shí)消除噪聲的效果也將增強(qiáng),但同時(shí)所得到的圖像將變得更模糊;
(2)加入椒鹽噪聲的圖呈現(xiàn)出隨機(jī)分布的黑白斑點(diǎn),用均值濾波后,噪聲并未消除多少,且圖片反而變得更加模糊了,而經(jīng)過中值濾波器之后噪聲不但得到了有效的消除,同時(shí)圖片也并沒怎么模糊。
?
?
總結(jié)
以上是生活随笔為你收集整理的数字图像处理与分析(matlab实现)——实现空域线性及非线性低通平滑滤波的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: labview获取窗口句柄_LabVIE
- 下一篇: 线性规划 | 用实例展示Matlab和l