Pseudo-lover 发表于 2016-3-4 16:45

拉普拉斯算子,高通,低通滤波

任务:对一幅灰度图像,
(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('中心化频谱');
%*******分别用低通滤波和高通滤波对此图像进行频域处理****
=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=;
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
页: [1]
查看完整版本: 拉普拉斯算子,高通,低通滤波