图像处理第二次作业(2)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

对一幅灰度图像:

(1)计算并画出此图像的中心化频率谱。

(2)分别用高斯低通和高斯高通滤波器对图像进行频域处理,并对结果进行分析。

(3)用频域拉普拉斯算子对此图像进行锐化处理,并对结果进行分析。

(1)程序

clear;

clc;

A=imread('lena.jpg','jpg');

B=rgb2gray(A);

figure;

subplot(2,2,1);imshow(B);title('原图像');

B_d=double(B);

[m,n] = size(B);

%fft2函数实现

if ismatrix(B_d)%ismatrix:确定输入的是否为矩阵

if nargin==1%nargin用来判断输入变量的个数

f = fftn(B_d);%fftn:N维离散傅里叶变换

else

f = fftn(B_d,[m n]);

end

else

if nargin==1

f = fft(fft(B_d,[],2),[],1);

else

f = fft(fft(B_d,n,2),m,1);

end

end

C3=log(1+abs(f));

subplot(2,2,2);imshow(C3,[]);title('原图像频谱');

%计算并画出此图像的中心化频率谱

[m,n] = size(B);

for i=1:m

for j=1:n

C1(i,j)=((-1)^(i+j))*(B_d(i,j));

end

end

C2=log(1+abs(fft2(C1)));

C4=fftshift(log(1+abs(fft2(B_d))));

subplot(2,2,3);imshow(C2,[]);

title('编写函数实现频谱中心化')

subplot(2,2,4);imshow(C4,[])

title('matlab函数实现频谱中心化')

%分别用低通滤波和高通滤波对此图像进行频域处理

C5=fftshift(fft2(B_d));

P1=round(m/2);

Q1=round(n/2);

D0=30;%半径取30,随着D0的增加,低通滤波图像越来越模糊B_lf=C5;

B_hf=C5;

%低通滤波器

for i=1:m

for j=1:n

D=sqrt((i-P1)^2+(j-Q1)^2);

if D<=D0

flag=1;

else

flag=0;

end

B_lf(i,j)=flag*C5(i,j);

end

end

B_lf=uint8(real(ifft2(ifftshift(B_lf))));

figure;

%高通滤波器

for i=1:m

for j=1:n

D=sqrt((i-P1)^2+(j-Q1)^2);

if D>D0

flag=1;

else

flag=0;

end

B_hf(i,j)=flag*C5(i,j);

end

end

B_hf=uint8(real(ifft2(ifftshift(B_hf))));

subplot(1,3,1);imshow(B);title('原图像');

subplot(1,3,2);imshow(B_lf);

title('高斯低通滤波');

subplot(1,3,3);imshow(B_hf);

title('高斯高通滤波');

%用频域拉普拉斯算子对此图像进行锐化处理

for i=1:m

for j=1:n

D1=(i-P1)^2+(j-Q1)^2;

H(i,j)=(-4)*((pi)^2)*D1;

H1(i,j)=H(i,j)*C5(i,j);

end

end

H2=real(ifft2(ifftshift(H1)));

H2max=max(H2(:));

H3=H2(1:m,1:n);

k=1;

H4=B_d-k*H3/H2max;

figure;

subplot(1,2,1);imshow(B);title('原图像'); subplot(1,2,2); imshow(H4,[]);

title('拉普拉斯图像');

%使用moon图像

Task3=imread('moon.tif','tif');

Task3_1=double(Task3);

Task3_2=fftshift(fft2(Task3_1));

[m1,n1]=size(Task3);

P2=round(m1/2);

Q2=round(n1/2);

for i=1:m1

for j=1:n1

D1=(i-P2)^2+(j-Q2)^2;

H(i,j)=(-4)*((pi)^2)*D1;

H1(i,j)=H(i,j)*Task3_2(i,j);

end

end

H2=real(ifft2(ifftshift(H1)));

H2max=max(H2(:));

H3=H2(1:m1,1:n1);

k=1;

H4=Task3_1-k*H3/H2max;

figure;

subplot(1,2,1);imshow(Task3);title('原图像'); subplot(1,2,2); imshow(H4,[]);

title('拉普拉斯图像');

(2)实验结果

相关文档
最新文档