matlab:lena图像在空域和频域的均匀滤波
文章目錄
- 前言
- 一、空域濾波
- 二、頻域濾波
- 三,matlab代碼
- 結果
前言
卷積:函數空間域的卷積的傅里葉變換是函數傅里葉變換的乘積。對應地,頻率域的卷積與空間域的乘積存在對應關系。
給定頻率域濾波器,可對其進行傅里葉逆變換得到對應的空域濾波器;濾波在頻域更為直觀,但空域適合使用更小的濾波模板以提高濾波速度。因為相同尺寸下,頻域濾波器效率高于空域濾波器,故空域濾波需要一個更小尺寸的模板近似得到需要的濾波結果。
一、空域濾波
將模板在圖像中逐像素移動,將卷積核的每個元素分別和圖像矩陣對應位置元素相乘并將結果累加,累加和作為
模板中心對應像素點的卷積結果。通俗的講,卷積就是對整幅圖像進行加權平均的過程,每一個像素點的值,都
由其本身和鄰域內的其他像素值經過加權平均后得到。
二、頻域濾波
頻率域是由傅里葉變換和頻率變量 (u,v)定義的空間,頻域均勻濾波處理過程:先對圖像進行傅里葉變換,轉換至頻率域,在頻域使用濾波函數進行濾波,最后將結果反變換至空間域。即:
(1)計算原始圖像f(x,y)的DFT,得到F(u,v)。
(2)創建均值濾波器,并使用fft2計算其DFT得到H(u,v)
(3)計算濾波器函數H(u,v)與F(u,v)的乘積G(u,v)。
(4)計算第(3)步計算結果的傅里葉反變換g(x,y)。
(5)取g(x,y)的實部作為最終濾波后的結果圖像。
按照該步驟,在MATLAB中很容易編程實現頻域濾波。濾波能否取得理想結果的關鍵取決于頻域濾波函數H(u,v),常常稱之為濾波器,或濾波器傳遞函數。因為它在濾波中抑制或濾除了頻譜中某些頻率的分量,而保留其他一些頻率不受影響。
注意:空域的濾波器x轉變的頻域時用的函數是fft2(x,m,n),m*n是需要處理的圖片大小。
三,matlab代碼
t=imread('E:\matlab DMP\lenaG.bmp'); [m,n,z]=size(t);y1=0+10*randn(m,n);%二維高斯分布矩陣 0是均值 20是標準差 y2=0+20*randn(m,n);%二維高斯分布矩陣 0是均值 20是標準差 y1=uint8(y1); y2=uint8(y2); %加上噪聲 t1=t+y1; t2=t+y2; figure('name','添加高斯噪聲');; subplot(2,2,1),imshow(t),title('原圖'); subplot(2,2,3),imshow(t1),title('加入均值為0,標準差為10的高斯噪聲后'); subplot(2,2,4),imshow(t2),title('加入均值為0,標準差為20的高斯噪聲后');K1=conv2(fspecial('average',5),t2 )/255; K2=conv2(fspecial('average',10),t2 )/255 ; K3=conv2(fspecial('average',20),t2 )/255;figure('name','空域均值濾波');subplot(2,2,1),imshow(t2),title('原圖'); subplot(2,2,2),imshow(K1),title('均值濾波,sizes 5x5'); subplot(2,2,3),imshow(K2),title('均值濾波,sizes 10x10'); subplot(2,2,4),imshow(K3),title('均值濾波,sizes 20x20');Fc = fft2(t2);h1 = fspecial('average',5); h2 = fspecial('average',10); h3 = fspecial('average',20);H1 = fft2(h1,512,512); H2 = fft2(h2,512,512); H3 = fft2(h3,512,512);G1 = H1.*Fc; G2 = H2.*Fc; G3 = H3.*Fc;g1 = ifft2(G1); g1 = im2uint8(mat2gray(abs(g1)));g2 = ifft2(G2); g2 = im2uint8(mat2gray(abs(g2)));g3 = ifft2(G3); g3 = im2uint8(mat2gray(abs(g3)));figure('name','頻域均值濾波'); subplot(2,2,1),imshow(t2),title('高斯噪聲'); subplot(2,2,2),imshow(g1),title('高斯過濾,size 5*5'); subplot(2,2,3),imshow(g2),title('高斯過濾,size 10*10'); subplot(2,2,4),imshow(g3),title('高斯過濾,size 20*20');Kk1 = medfilt2(t2,[3,3]); Kk2 = medfilt2(t2,[5,5]); Kk3 = medfilt2(t2,[7,7]); figure('name','頻域中值濾波'); subplot(2,2,1),imshow(t2),title('高斯噪聲'); subplot(2,2,2),imshow(Kk1),title('高斯過濾,size 3*3'); subplot(2,2,3),imshow(Kk2),title('高斯過濾,size 5*5'); subplot(2,2,4),imshow(Kk3),title('高斯過濾,size 7*7');結果
總結
以上是生活随笔為你收集整理的matlab:lena图像在空域和频域的均匀滤波的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 标准Lena测试图像下载
- 下一篇: 传奇服务器怎么修改升级武器成功,传奇服务