|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
任务:对一幅灰度图像,
(1) 计算并画出此图像的中心化频率谱。
(2) 分别用低通滤波和高通滤波对此图像进行频域处理。
(2) 用拉普拉斯算子对此图像锐化。
1. matlab代码如下:
clear;
clc;
Data=imread('C:\Users\Administrator\Desktop\ex.JPG');
DataGray=rgb2gray(Data);
figure(1),imshow(Data);
title('原始图像');
%**************计算并画出此图像的中心化频率谱*************
Data1=double(DataGray);
FFT2=fft2(Data1);
FFTcenter=fftshift(FFT2);%频谱中心化
FFT2abs=abs(FFT2);
FFTresult=256*log2(FFT2abs/max(max(FFT2abs))+1);
figure(2),subplot(1,2,1);
imshow(FFTresult),title('原图频谱');
FFTc_abs=abs(FFTcenter);
FFTc_result=256*log2(FFTc_abs/max(max(FFTc_abs))+1);
subplot(1,2,2);
imshow(FFTc_result),title('中心化频谱');
%*******分别用低通滤波和高通滤波对此图像进行频域处理****
[m,n]=size(FFTcenter);
x_center=round(m/2);
y_center=round(n/2);
d=10;%半径取10
LF=FFTcenter;
HF=FFTcenter;
%**************低通滤波器*************
for i=1:m;
for j=1:n
distance=sqrt((i-x_center)^2+(j-y_center)^2);
if distance<=d
flag=1;
else
flag=0;
end
LF(i,j)=flag*FFTcenter(i,j);
end
end
%逆变换转换成对应图像
LF=uint8(real(ifft2(ifftshift(LF))));
figure(3),subplot(1,2,1);imshow(LF);
title('低通滤波后图像');
%**************高通滤波器*************
for i=1:m;
for j=1:n
distance=sqrt((i-x_center)^2+(j-y_center)^2);
if distance>d
flag=1;
else
flag=0;
end
HF(i,j)=flag*FFTcenter(i,j);
end
end
HF=uint8(real(ifft2(ifftshift(HF))));
subplot(1,2,2),imshow(HF);title('高通滤波后图像');
%*****************用拉普拉斯算子对此图像锐化*************
Laplace=[0 -1 0;-1 4 -1; 0 -1 0 ];
LaplaceImage=conv2(Data1,Laplace,'same');
figure(4),subplot(1,2,1);
imshow(uint8(LaplaceImage));
title('Laplace图像');
DataLap=imadd(Data1,immultiply(LaplaceImage,1));%原图像与拉普拉斯图像叠加
subplot(1,2,2),imshow(uint8(DataLap));
title('锐化增强后的图像');
2. 处理结果如下:可以从锐化增强后的图像中看出原图像中很多模糊的细节。
转自:http://blog.sina.com.cn/s/blog_a8d541800102wcbl.html
|
-
-
|