实验六 图像DCT变换编码压缩报告

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

实验课程名称数字图像处理

实验项目名称图像DCT变换编码压缩

年级 2010

专业光信 101

学生姓名肖明进

学号 1007010124

理学院

实验时间:20 13 年5月 9日

学院:理学院专业:光信班级:光信101

姓名肖明进学号1007010124 实验组

实验时间2013-5-9 指导教师徐锦成绩

实验项目名称图像DCT变换编码压缩

实验目的及要求:

1.掌握离散余弦变换DCT的实验方法,了解DCT的幅度分布特性,从而加深对DCT变换的认识。

2.掌握图像DCT变换编码的实现方法,从而加深对变换编码压缩图像原理的理解。

实验原理:

MATLAB图像处理工具箱实现离散余弦变换有两种方法:

1.使用函数DCT2,该函数用一个基于FFT的算法,用来提高对输入较大的时的计算速度。

2.使用DCTMTX函数返回的DCT变换矩阵,这种方法适合于较小的输入方阵(例如:8*8或

16*16).

为了实现8*8子块的DCT图像变换,需要用到MATLAB中的BLKPROC函数。将这个函数和函数DCTMTX一起用于块处理可以大大简化运算。以上函数用MATLAB的help查看具体使用方法。

实验内容:

编程实现图像DCT变换编码。

实验步骤:(源程序参考书中P171—172的例子)

1.设置压缩比

2.求8*8块的DCT变换矩阵

3.计算8*8块的DCT变换

4.对DCT系数量化和反量化

5.求反量化系数(或称截取后的系数)的逆DCT变换

6.显示原始图像、压缩后图像、误差图像(两图相减的结果)

数据记录及处理:

1.源程序:

cr=0.5;

initialimage=imread('lena512.bmp');

initialimage=double(initialimage)/255;

figure(1);subplot(1,3,1);

imshow(initialimage);title('原图像');

t=dctmtx(8);

dctcoe=blkproc(initialimage,[8 8],'P1*x*P2',t,t'); coevar=im2col(dctcoe,[8 8],'distinct');

coe=coevar;

[y,ind]=sort(coevar);

[m,n]=size(coevar);

snum=64-64*cr;

for i=1:n

coe(ind(1:snum),i)=0;

end

b2=col2im(coe,[8 8],[512 512],'distinct');

i2=blkproc(b2,[8 8],'P1*x*P2',t',t);

subplot(1,3,2);imshow(i2);title('压缩后图像');

e=double(initialimage)-double(i2);

[m,n]=size(e);

erms=sqrt(sum(e(:).^2)/(n*m));

subplot(1,3,3);imshow(e);title('误差图像');

结果图:

思考题:

1.图像变换编码中为什么要对图像进行分块?

答:1.小块图像的变换计算容易;

2.距离较远的像素之间的相关性比距离较近的像素之间的相关性小。

2.简述DCT编码的原理及基本过程。

答:子图像分割、变换、量化、编码。

指导教师意见:

签名:年月日

相关文档
最新文档