数字图像处理上机报告.docx

上传人:b****6 文档编号:5589246 上传时间:2022-12-28 格式:DOCX 页数:15 大小:300.84KB
下载 相关 举报
数字图像处理上机报告.docx_第1页
第1页 / 共15页
数字图像处理上机报告.docx_第2页
第2页 / 共15页
数字图像处理上机报告.docx_第3页
第3页 / 共15页
数字图像处理上机报告.docx_第4页
第4页 / 共15页
数字图像处理上机报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数字图像处理上机报告.docx

《数字图像处理上机报告.docx》由会员分享,可在线阅读,更多相关《数字图像处理上机报告.docx(15页珍藏版)》请在冰豆网上搜索。

数字图像处理上机报告.docx

数字图像处理上机报告

数字图像处理报告

第二次上机报告

 

学院:

机电学院

班级:

071113-20

学号:

20111003341

姓名:

曾志鹏

2-1、计算图象的频谱函数

设计图象f4(x,y)为3*30*30/256*256,水平排列;

分析:

首先生成一个256*256的零矩阵,再按要求将其中某些部分赋值为一,即可得到图像。

程序如下:

A=zeros(256);%生成一个256*256的零矩阵

fori=110:

140%设置行

forj=30:

60

forp=100:

130

forq=170:

200%设置列

A(i,j)=1;

A(i,p)=1;

A(i,q)=1;%将对应行列赋值为1,

end

end

end

end

subplot(1,2,1);

imshow(A);%显示得到图像

title('原图像');

A1=fft2(A);%对图像进行傅里叶变换

A2=abs(A1);

subplot(1,2,2);

imshow(fftshift(log(A2)));

title('傅里叶变换后图像');

 

运行结果如下:

2-2、根据计算证明傅立叶变换的性质

空域平移性:

设f1(x,y)为30*30/256*256,左移得到f2(x,y),求F2(u,v);上移得到f3(x,y),求F3(u,v);证明F1(u,v)、F2(u,v)和F3(u,v)的绝对值相等。

分析:

按照上题方法,设计图像并对图像进行傅里叶变换,再将设计好的图像的行与列的值分别改变,即可得到平移后的图像。

将得到的平移后的图像在进行傅里叶变换,即可得到相应的频谱。

设置变量a,当三个图的频谱相等时,a值为1,否则为0,观察a的值,即可判断呢所得结果。

程序如下:

A=zeros(256);

fori=100:

130

forj=100:

130

A(i,j)=1;

end

end%设置图像A

A1=fft2(A);

A2=abs(A1);

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

subplot(2,3,4);imshow(fftshift(log(A2)));title('傅里叶变换后图像');

B=zeros(256);

fori=100:

130

forj=50:

80

B(i,j)=1;

end

end%设置图像B

B1=fft2(B);

B2=abs(B1);

subplot(2,3,2);imshow(B);title('左移后图像');

subplot(2,3,5);imshow(fftshift(log(B2)));title('左移后傅里叶变换图像');

C=zeros(256);

fori=50:

80

forj=100:

130

C(i,j)=1;

end

end%设置图像C

C1=fft2(C);

C2=abs(C1);

subplot(2,3,3);imshow(C);title('右移后图像');

subplot(2,3,6);imshow(fftshift(log(C2)));title('右移后傅里叶变换图像');

[mn]=size(A2);

fori=1:

m

forj=1:

n

ifA2(i,j)==B2(i,j)&&A2(i,j)==C2(i,j)%判断频率绝对值是否相等

a=1;

elsea=0;

end

end

end

结果如下:

由上图得知a值为1,即表明平移后的图像的频谱的绝对值相等,与题目意思符合。

2-3、图象变换比较

自行设计f(x,y),

(1)调用Matlab函数直接调用实现其离散傅立叶变换、离散余弦变换;

(2)自行编程对f(x,y)实施Walsh变换和Hadamard变换,比较四种变换所得到的频谱。

分析:

设计图像,将图像进行傅里叶变换和离散余弦变换。

将得到的结果显示出来,由沃尔什变换

和哈达玛变换

,编写程序将算法正确的表达出来。

程序如下:

N=16;

n=log2(N);

f=zeros(16);

fori=4:

8

forj=4:

8

f(i,j)=1;

end

end

subplot(2,3,1);

imshow(f);

title('原图像');

f=double(f);

F2=fft2(f);%将图像f进行傅里叶变换

F2=fftshift(F2);%将零频率点移到频谱图中心

F2=log(abs(F2));%采用对数,更好的表示高频

subplot(2,3,2);

imshow(F2);

title('傅里叶变换频谱');

yuxian=dct2(f);%将图像f进行离散余弦变换

yuxian=log(abs(yuxian));

subplot(2,3,3);

imshow(yuxian);

title('离散余弦变换频谱');

foru=0:

N-1

forv=0:

N-1

A=0;

forx=0:

N-1

fory=0:

N-1

zs=0;

fori=0:

n-1

zs=zs+bitget(x,i+1)*bitget(u,n-i)+bitget(y,i+1)*bitget(v,n-i);

end%由于bitget函数没有第0位,因此都应该加1

zs=(-1)^zs;

A=f(x+1,y+1)*zs+A;

end

end

walsh(u+1,v+1)=A/N;

end

end%算法核心部分

subplot(2,3,4);

imshow(walsh);

title('Walsh变换频谱');

foru=0:

N-1

forv=0:

N-1

A=0;

forx=0:

N-1

fory=0:

N-1

zs=0;

fori=0:

n-1

zs=zs+bitget(x,i+1)*bitget(u,i+1)+bitget(y,i+1)*bitget(v,i+1);

end

zs=(-1)^zs;

A=f(x+1,y+1)*zs+A;

end

end

Hadamard(u+1,v+1)=A/N;

end

end%算法核心部分

subplot(2,3,5);

imshow(Hadamard);

title('Hadamard变换频谱');

 

结果如下:

2-4、图象的频域滤波

根据频率采样法设计一个带阻滤波器,对两图象(f1(x,y)为90*30/256*256的图象;f2(x,y)30*90/256*256图象)进行带阻滤波,观察分析滤波前后空域图象和频谱分布的变化。

分析:

按要求设计图像,将图像进行傅里叶变换,再将得到的频率进过带阻滤波器滤波,将滤波后的结果显示出来,观察并对比滤波前后图像的变化。

程序如下:

f1=zeros(256);

f1([30:

120],[110:

140])=1;%90*30的图像

g1=fft2(f1);

g1=fftshift(g1);%零频率部分移到数组中间

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

title('f1原图像');

subplot(2,2,2),imshow(log(abs(g1)),[-110]);

title('傅里叶变换');

[M,N]=size(g1);

D0=50;%截止频率

D1=90;

m=fix(M/2);

n=fix(N/2);%中心化频谱图像中心

fori=1:

M

forj=1:

N

D=sqrt((i-m)^2+(j-n)^2);%频谱平面原点到(u,v)点的距离

if(D<=D0)

h=1;%带阻滤波核心部分

elseif(D<=D1&&D>=D0)

h=0;

elseh=1;

end

end

Q(i,j)=h*g1(i,j);

end

end

subplot(2,2,3),imshow(Q);

title('理想带阻滤波器');

Q=ifftshift(Q);

J1=ifft2(Q);

J2=uint8(real(J1));

subplot(2,2,4),imshow(J2);

title('复原图');

结果如下:

对图像f2同理可得程序如下:

f1=zeros(256);

f1([110:

140],[30:

120])=1;%30*90的图像

g1=fft2(f1);

g1=fftshift(g1);%零频率部分移到数组中间

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

title('f1原图像');

subplot(2,2,2),imshow(log(abs(g1)),[-110]);

title('傅里叶变换');

[M,N]=size(g1);

D0=50;%截止频率

D1=90;

m=fix(M/2);

n=fix(N/2);%中心化频谱图像中心

fori=1:

M

forj=1:

N

D=sqrt((i-m)^2+(j-n)^2);%频谱平面原点到(u,v)点的距离

if(D<=D0)

h=1;%带阻滤波核心部分

elseif(D<=D1&&D>=D0)

h=0;

elseh=1;

end

end

Q(i,j)=h*g1(i,j);

end

end

subplot(2,2,3),imshow(Q);

title('理想带阻滤波器');

Q=ifftshift(Q);

J1=ifft2(Q);

J2=uint8(real(J1));

subplot(2,2,4),imshow(J2);

title('复原图');

 

结果如下:

1-5几何变换

题目:

图象旋转的计算流程

(1)图象尺寸不变

(2)图象尺寸变化

1.图象尺寸不变程序如下:

A=imread('p08.tif');

A1=imrotate(A,45,'crop');

A2=imrotate(A,90,'crop');

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

subplot(1,3,2);imshow(A1);title('逆时针旋转45度');

subplot(1,3,3);imshow(A2);title('逆时针旋转90度');

分析:

imrotate函数实现图像逆时针旋转,45,90为其旋转的度数。

参数corp使旋转时图像底板大小保持不变,图像大小也保持不变。

所以旋转后,图像的边角部分会被切掉。

如下图所示:

结果如下:

由上图可知,图像A,A1,A2大小一样,即旋转后图像大小未变

2.图象尺寸变化程序如下:

A=imread('p08.tif');

A1=imrotate(A,45);

A2=imrotate(A,135);

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

subplot(1,3,2);imshow(A1);title('旋转45度底板变大');

subplot(1,3,3);imshow(A2);title('旋转135度底板变大');

分析:

当imrotate函数后面不写参数corp,那么旋转后的图像大小不变,而图像的底板会变大,如下图所示。

结果如下:

由上图可知,图像A,与A1,A2大小不一样,即旋转后图像大小该变。

总结:

与第一次相比,这次感觉比之前好很多,虽然比较棘手,但至少对题目方向感,知道如何去编写程序,对软件的使用操作等更加熟悉顺手。

同时也能自己编程而尽量少的调用软件提供的函数。

同时,通过编程,我们对课本知识的了解也更加深刻,学的也更多。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 日语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1