图像作业

更新时间:2023-11-03 13:58:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数字图像处理上机作业

1.程序:

close all;clear all;

Imagef1=zeros(256,256);

Imagef1(65:193,113:145)=100;%产生题中要求的图像 %%%%%显示原始图像和其频谱图

subplot(1,2,1);imshow(Imagef1);title('原始图像f1');

Imagef1FFT=abs(fft2(Imagef1))/(256*16);%%%%%%%%%%%%%%%%%% subplot(1,2,2);imshow(Imagef1FFT);title('原始图像的频谱图'); %%%%%产生f2的图像,并显示其频谱图 for i=1:256

for j=1:256

Imagef2(i,j)=((-1)^(i+j))*Imagef1(i,j); end end figure;

subplot(1,2,1);imshow(Imagef2);title('f2');

Imagef2FFT=abs(fft2(Imagef2))/(256*16);%%%%%%%%%%%%%%%%%% subplot(1,2,2);imshow(Imagef2FFT);title('频谱中心化结果'); %将f2顺时针旋转90度,并显示

Imagef3=imrotate(Imagef2,270); %顺时针旋转90 figure;

subplot(1,2,1);imshow(Imagef3);title('将f2顺时针旋转90度f3'); Imagef3FFT=abs(fft2(Imagef3))/(256*16);

subplot(1,2,2);imshow(Imagef3FFT);title('f3的频谱图'); %将f1旋转90并与f1相加,显示

Imagef4=imrotate(Imagef1,270);%还是顺时针转90 Imagef5=Imagef1+Imagef4; figure;

subplot(1,3,1);imshow(Imagef5);title('图像f5');?=f1+f4 Imagef5FFT=abs(fft2(Imagef5))/(256*16);

subplot(1,3,2);imshow(Imagef5FFT);title('f5的频谱图'); Imagef4FFT=abs(fft2(Imagef4))/(256*16);

subplot(1,3,3);imshow(Imagef4FFT);title('f4的频谱图'); %将f2顺时针旋转90度与f2相加 Imagef6=Imagef2+Imagef3; figure;

subplot(1,2,1);imshow(Imagef6);title('图像f6');?=f2+f3 Imagef6FFT=abs(fft2(Imagef6))/(256*16);

subplot(1,2,2);imshow(Imagef6FFT);title('f6的频谱图');

运行结果:

图1 原始图像及其频谱图

图2 频谱中心化的结果

图3 f2旋转后的结果及其频谱图

图4 f1+f4的结果及其频谱图

图5 f2+f3的结果及其频谱图

回答:

②由图1和图2的频谱图可知,f2的频谱图是f1的频谱图中心化的结果。若f1的傅里叶变换为F(u,v),则f2的傅里叶变换为F(u-N/2,v-N/2),即将f1的频谱从原点(0,0)移到了中心(N/2,N/2)。

③由图2和图3可知,f3的频谱与f2的相同,即图像旋转频谱图不变。

④由图4可知,f5是f1与f1旋转90度的叠加,因为旋转后频谱图不变,故f5的频谱幅度是f1或者f4的二倍。

⑤f6的频谱是将f5的频谱中心化的结果。

2.程序:

close all;clear all;

Image=zeros(256,256); for i=1:2:7

for j=1:2:7

Image((32*(i-1)+1):(32*i),(32*(j-1)+1):(32*j))=1;

end end

for i=2:2:8

for j=2:2:8

Image((32*(i-1)+1):(32*i),(32*(j-1)+1):(32*j))=1; end end

figure;imshow(Image);title('原始图像');

%%%%%%%%3*3平均滤波%%%%视觉上将图像变模糊了 ImageDouble=im2double(Image);%转变成双精度类 M=[111;111;111];%3*3的均值滤波模板 M=M/9;%对模板取平均

ImageFilter1=filter2(M,ImageDouble); %ImageFilter1=ImageFilter1+0.5;

figure;imshow(ImageFilter1,[]);title('均值滤波后的图像'); %%%%%%%%%%3*3中值滤波%%%%% ImageFilter2=medfilt2(Image,[3 3]);

figure;imshow(ImageFilter2);title('中值滤波后的图像');

运行结果:

图6 原始图像

if(nf

fmin %获取其灰度最小值 fmax %获取其灰度最大值

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% T0=(double(fmin)+double(fmax))/2

for m=1:10

count1=0;%大于T0的像素数 count2=0;%小于T0的像素数 t2=0; t3=0;

for i=1:1:x for j=1:1:y

if(I(i,j)>T0)

t2=double(t2)+double(I(i,j)); count1=count1+1; end

if(I(i,j

t3=double(t3)+double(I(i,j)); count2=count2+1; end end end T1=T0;

t2=(double(t2)/double(count1)); t3=(double(t3)/double(count2));

T0=double(t2+t3)/2;T0 %显示每次迭代后的阈值 if(T1==T0)

m %迭代次数 T0 %最终的阈值 break end end

for i=1:1:x

for j=1:1:y if(I(i,j)

I(i,j)=255;

end end end

figure;subplot(1,2,1);imshow(I1);title('显示原始图像'); subplot(1,2,2);imshow(I);title('显示二值化后的结果');

运行结果:

图 15 原始灰度图像和二值化后的结果

fmin = 74 fmax = 224 T0 = 149 T0 =

138.0543 T0 =

131.8168 T0 =

128.2284 T0 =

127.5049 T0 =

126.6747 T0 =

126.4072 T0 =

126.4072

m = 7 T0 =

126.4072

fmin是原始图像的最小灰度,fmax是原始图像的最大灰度值,T0是每次迭代后的灰度阈值,m是迭代的次数。由中间变量的结果可以看出,这幅图像的最大灰度值为224,最小灰度值为74,在进行迭代阈值法的过程中,经过了7次迭代,最终的灰度阈值为T0 =126.4072。

本文来源:https://www.bwwdw.com/article/lso2.html

Top