数字图像处理第三次实验 (1)

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

1.傅里叶变换

A=imread('picture.jpg');

I=rgb2gray(A);

subplot(1,2,1),imshow(I);

I=im2double(I);

lnI=log(I+0.000001);

FI=fft2(lnI);

P=fftshift(FI);

[M,N]=size(P);

subplot(1,2,2),imshow(uint8(abs(P)),[]),title('频谱图像')

2.低通滤波

2.1理想低通滤波

I=imread('picture01.jpg'); %

I=rgb2gray(I);

subplot(121),imshow(I);

title('原图像');

s=fftshift(fft2(I));

[a,b]=size(s);

a0=round(a/2);

b0=round(b/2);

d=10;

for i=1:a

for j=1:b

distance=sqrt((i-a0)^2+(j-b0)^2); if distance<=d h=1;

else h=0;

end; s(i,j)=h*s(i,j); end; end;

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

subplot(122), imshow(s);

title('低通滤波所得图像

');

频谱图像

2.2butterworth 低通滤波

A1=imread('picture01.jpg');

I1=rgb2gray(A1)

f=double(I1);

g=fft2(f);

g=fftshift(g);

[N1,N2]=size(g);

n1=2;

n2=5;

n3=10;

d0=10;

a=round(N1/2);

b=round(N2/2);

for i=1:N1

for j=1:N2

d=sqrt((i-a)^2+(j-b)^2);

if d==d0 h=0;

else

h1=1/(1+(d/d0)^(2*n1));

h2=1/(1+(d/d0)^(2*n2));

h3=1/(1+(d/d0)^(2*n3));

end

result1(i,j)=h1*g(i,j);

result2(i,j)=h2*g(i,j);

result3(i,j)=h3*g(i,j);

end

end

result1=ifftshift(result1);

result2=ifftshift(result2);

result3=ifftshift(result3);

原图

像低通滤波所得图像

X2=ifft2(result2);

X3=ifft2(result3);

X4=uint8(real(X1));

X5=uint8(real(X2));

X6=uint8(real(X3));

subplot(221),imshow(I1)

subplot(222),imshow(X4)

subplot(223),imshow(X5)

subplot(224),imshow(X6)

2.3高斯低通滤波

I=imread('picture01.jpg');

IA=rgb2gray(I)

[f1,f2]=freqspace(size(IA),'meshgrid'); D=100/size(IA,1);

r=f1.^2+f2.^2;

Hd=ones(size(IA));

for i=1:size(IA,1)

for j=1:size(IA,2)

t=r(i,j)/(D*D);

Hd(i,j)=exp(-t);

end

end

Y=fft2(double(IA));

Y=fftshift(Y);

Ya=Y.*Hd;

Ia=real(ifft2(Ya));

figure

subplot(1,2,1),imshow(uint8(IA));

title('原图像');

subplot(1,2,2),imshow(uint8(Ia));

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

3.高通滤波

3.1理想低通滤波

I=imread('FN.jpg');

I=rgb2gray(I);

subplot(221),imshow(I);

s=fftshift(fft2(I));

[a,b]=size(s);

a0=round(a/2);

b0=round(b/2);

d1=10;

d2=50;

d3=100;

for i=1:a

for j=1:b

distance=sqrt((i-a0)^2+(j-b0)^2);

if distance<=d1 h1=0;

else h1=1;

原图

高斯低通滤波处理

相关文档
最新文档