MATLAB图形图像处理中的傅立叶变换,离散余弦变换.doc
文本预览下载声明
数学系课程实验报告
课 程 名 称: 图形图像处理
班级 ? 日 期 2013/3/28 ?成绩评定 ? 姓名 实验室 ?老师签名 ? 学号 实验名称 ?图形图像处理 所用软件 MATLAB 实验目的
及
内
容 掌握图形图像的基本变换 实
验
?原
理
步
骤
、 1.生成黑白二值图像
blackandwhiteimage=zeros(128,128);
blackandwhiteimage(62:66,56:72)=1;
figure;
imshow(blackandwhiteimage)
title(黑白二值图像)
实
验
结
果
及
分
析
对图像傅立叶变换,并提取幅度频谱和相位频谱
a=imread(test1.jpg);
subplot(2,2,1);
imshow(a);
title(原彩色图像);
b=rgb2gray(a);
subplot(2,2,2);
imshow(b);
title(灰度图像);
c=fft2(b);
f=log(1+abs(c));
f_out=(255./max(f(:))).*f; //对数归一化处理
subplot(2,2,3);
imshow(uint8(f_out));
title(幅度频谱);
san=angle(c);
subplot(2,2,4);
imshow(san)
title(相位频谱)
3.使用fftshift函数,把低频分量移到图象中心,而把高频分量移到四个角上;再观察幅度谱和相位谱。
a=imread(test1.jpg);
subplot(2,2,1);
imshow(a);
title(原彩色图像);
b=rgb2gray(a);
subplot(2,2,2);
imshow(b);
title(灰度图像);
c=fft2(b);
d=fftshift(c); //将低频移动到中心
f=log(1+abs(d));
f_out=(255./max(f(:))).*f; //对数归一化处理
subplot(2,2,3);
imshow(uint8(f_out));
title(幅度频谱);
san=angle(d); //求取相位角
subplot(2,2,4);
imshow(san)
title(相位频谱)
4.对原图旋转一定角度(使用函数imrotate),再显示幅度谱
a=imread(test1.jpg);
subplot(2,2,1);
imshow(a);
title(原彩色图像);
a1=imrotate(a,45,bilinear);//对图像进行逆时针旋转45度
subplot(2,2,2);
imshow(a1);
title(旋转后图像);
b=rgb2gray(a); //将彩色图像转化为灰度图像
subplot(2,2,3);
imshow(b);
title(灰度图像);
c=fft2(b);
d=fftshift(c);
f=log(1+abs(d));
f_out=(255./max(f(:))).*f;
subplot(2,2,4);
imshow(uint8(f_out))
title(幅度谱)
5.利用DCT2进行图象变换和重建
a=imread(test1.jpg);
subplot(2,2,1);
imshow(a);
title(原始彩色图像)
gray=rgb2gray(a);
subplot(2,2,2);
imshow(gray);
title(原始灰度图像);
dctchange=dct2(gray); //离散余弦变换
subplot(2,2,3);
imshow(log(abs(dctchange)),[ ]);
title(原始灰度图像余弦变换谱);
yuzhi=8;
dctchange(abs(dctchange)yuzhi)=0;
k=idct2(dctchange);
subplot(2,2,4);
imshow(k,[0 255]);
title(逆余弦变换谱)
由上面的图像可以比较出经过变换的图像变化不大,这说明了,当图像的一部分数值用相差不大的数值取代时,可以得到大致相同的图像。当我们用相同的数值取代图像的部分数值时,可以大大的压缩图像,同时又不至于图像损失太大。
.说明程序功能
I = rgb2gray(imre
显示全部