數字圖像處理|Matlab-頻域增強實驗-彩色圖像的頻域濾波器-用高斯低通濾波器對彩色圖像進行濾波操作

Matlab-頻域增強實驗-彩色圖像的頻域濾波器

代碼鏈接:https://download.csdn.net/download/qq_43571150/12033262

問題
採用高斯低通濾波器對彩色圖像進行濾波操作, 取半徑爲5, 20, 50, 80和250, 分別輸出空域和頻域的結果圖像。

空域結果圖像👇
在這裏插入圖片描述
空域代碼👇

clc;

I1=imread('05.jpg'); OutImg1=I1; R1=I1(:,:,1); G1=I1(:,:,2); B1=I1(:,:,3);

%1張
R15=fspecial('gaussian',[5,5],5);
R115=imfilter(R1,R15,'replicate','same','conv');
G15=fspecial('gaussian',[5,5],5);
G115=imfilter(G1,G15,'replicate','same','conv');
B15=fspecial('gaussian',[5,5],5);
B115=imfilter(B1,B15,'replicate','same','conv');
Q15=cat(3,R115,G115,B115);
subplot(3,2,1);imshow(I1,[]);title('input');
subplot(3,2,2);imshow(Q15,[]);title('output 空域 半徑5'); 
imwrite(Q15,'05 空域半徑5.jpg');


R120=fspecial('gaussian',[20,20],5);
R1120=imfilter(R1,R120,'replicate','same','conv');
G120=fspecial('gaussian',[20,20],5);
G1120=imfilter(G1,G120,'replicate','same','conv');
B120=fspecial('gaussian',[20,20],5);
B1120=imfilter(B1,B120,'replicate','same','conv');
Q120=cat(3,R1120,G1120,B1120);
subplot(3,2,3);imshow(Q120,[]);title('output 空域 半徑20'); 
imwrite(Q120,'05 空域半徑20.jpg');


R150=fspecial('gaussian',[50,50],5);
R1150=imfilter(R1,R150,'replicate','same','conv');
G150=fspecial('gaussian',[50,50],5);
G1150=imfilter(G1,G150,'replicate','same','conv');
B150=fspecial('gaussian',[50,50],5);
B1150=imfilter(B1,B150,'replicate','same','conv');
Q150=cat(3,R1150,G1150,B1150);
subplot(3,2,4);imshow(Q150,[]);title('output 空域 半徑50'); 
imwrite(Q150,'05 空域半徑50.jpg');


R180=fspecial('gaussian',[80,80],5);
R1180=imfilter(R1,R180,'replicate','same','conv');
G180=fspecial('gaussian',[80,80],5);
G1180=imfilter(G1,G180,'replicate','same','conv');
B180=fspecial('gaussian',[80,80],5);
B1180=imfilter(B1,B180,'replicate','same','conv');
Q180=cat(3,R1180,G1180,B1180);
subplot(3,2,5);imshow(Q180,[]);title('output 空域 半徑80'); 
imwrite(Q180,'05 空域半徑80.jpg');


R1250=fspecial('gaussian',[250,250],5);
R11250=imfilter(R1,R1250,'replicate','same','conv');
G1250=fspecial('gaussian',[250,250],5);
G11250=imfilter(G1,G1250,'replicate','same','conv');
B1250=fspecial('gaussian',[250,250],5);
B11250=imfilter(B1,B1250,'replicate','same','conv');
Q1250=cat(3,R11250,G11250,B11250);
subplot(3,2,6);imshow(Q1250,[]);title('output 空域 半徑250'); 
imwrite(Q1250,'05 空域半徑250.jpg');
 

頻域結果圖像👇
在這裏插入圖片描述
頻域代碼👇

I1=imread('04.jpg');
I=rgb2gray(I1);
I=double(I);
[M,N]=size(I);
m=(M+1)/2;
n=(N+1)/2; 
d1=5;%截止頻率
F=fftshift(fft2(I));%空域轉頻域,平移中心
H1=zeros(M,N);
G1=zeros(M,N);
for i=1:M
   for j=1:N
       d=(i-m)^2+(j-n)^2;
       H1(i,j)=exp(-d/(2*d1^2));
       G1(i,j)=H1(i,j)*F(i,j);
    end
end
O1=ifft2(ifftshift(G1));%平移中心,頻域轉空域
O1=real(O1);%取實數部分
subplot(3,2,1);imshow(I,[]);title('inpit');
subplot(3,2,2);imshow(O1,[]);title('output 5');



d2=20;%截止頻率
H2=zeros(M,N);
G2=zeros(M,N);
for i=1:M
   for j=1:N
       d=(i-m)^2+(j-n)^2;
       H2(i,j)=exp(-d/(2*d2^2));
       G2(i,j)=H2(i,j)*F(i,j);
    end
end
O2=ifft2(ifftshift(G2));%平移中心,頻域轉空域
O2=real(O2);%取實數部分
subplot(3,2,3);imshow(O2,[]);title('output 20');



d3=50;%截止頻率
H3=zeros(M,N);
G3=zeros(M,N);
for i=1:M
   for j=1:N
       d=(i-m)^2+(j-n)^2;
       H3(i,j)=exp(-d/(2*d3^2));
       G3(i,j)=H3(i,j)*F(i,j);
    end
end
O3=ifft2(ifftshift(G3));%平移中心,頻域轉空域
O3=real(O3);%取實數部分
subplot(3,2,4);imshow(O3,[]);title('output 50');



d4=80;%截止頻率
H4=zeros(M,N);
G4=zeros(M,N);
for i=1:M
   for j=1:N
       d=(i-m)^2+(j-n)^2;
       H4(i,j)=exp(-d/(2*d4^2));
       G4(i,j)=H3(i,j)*F(i,j);
    end
end
O4=ifft2(ifftshift(G4));%平移中心,頻域轉空域
O4=real(O4);%取實數部分
subplot(3,2,5);imshow(O4,[]);title('output 80');



d5=250;%截止頻率
H5=zeros(M,N);
G5=zeros(M,N);
for i=1:M
   for j=1:N
       d=(i-m)^2+(j-n)^2;
       H5(i,j)=exp(-d/(2*d5^2));
       G5(i,j)=H5(i,j)*F(i,j);
    end
end
O5=ifft2(ifftshift(G5));%平移中心,頻域轉空域
O5=real(O5);%取實數部分
subplot(3,2,6);imshow(O5,[]);title('output 250');

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章