1、宁夏师范学院数学与计算机科学学院多媒体实验报告实验序号:7 实验项目名称:图像压缩 学 号 45 姓 名 赵国秀 专业、班级 11 计本班实验地点 文科楼 222 指导教师 曹生林 时间 2014.5.27一、 实验目的及要求a) 理解有损压缩和无损压缩的概念;b) 理解图像压缩的主要原则和目的; c) 了解几种常用的图像压缩编码方式。d) 利用 MATLAB 程序进行图像压缩。二、 实验设备(环境)及要求1 计算机;2 MATLAB 等程序;3 移动式存储器(软盘、U 盘等) 。4 记录用的笔、纸。三、 实验内容与步骤1 打开计算机,启动 MATLAB 程序;2 调入数字图像,并进行数据的变
2、换编码压缩处理;3 比较它们的数据量。4 记录和整理实验报告Matlab 源程序如下:clcclear allI=imread(F:素材11.jpg);I=im2double(I); %转换图像矩阵为双精度型。J=dct2(I);T=dctmtx(8); %产生二维 DCT 变换矩阵a1=16 11 10 16 24 40 51 61;12 12 14 19 26 58 60 55;14 13 16 24 40 57 69 56;14 17 22 29 51 87 80 62;18 22 37 56 68 109 103 77;24 35 55 64 81 104 113 92;49 64 7
3、8 87 103 121 120 101;72 92 95 98 112 100 103 99 ;for i=1:8:512for j=1:8:512P=I(i:i+7,j:j+7);K=T*P*T;I2(i:i+7,j:j+7)=K;K=K./a1; %量化K(abs(K)0.03)=0;I3(i:i+7,j:j+7)=K;endendfigure;imshow(I3);title(DCT 变换后的频域图像); %显示 DCT 变换后的频域图像for i=1:8:512for j=1:8:512P=I3(i:i+7,j:j+7).*a1; %反量化K=T*P*T;I4(i:i+7,j:j+7
4、)=K;endendfigure;imshow(I4);title(复原图像);B=blkproc(I,8,8,P1*x*P2,T,T) ;%计算二维 DCT,矩阵 T 及其转置是 DCT 函数 P1*X*P2 的参数mask=1 1 1 1 0 0 0 01 1 1 0 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0 ; %二值掩模,用来压缩 DCT 系数,只留下 DCT 系数中左上角的 10 个B2=blkproc(B,8 8,P1.*x,ma
5、sk); %只保留 DCT 变换的 10 个系数I2=blkproc(B2,8 8,P1*x*P2,T,T); %重构图像figure;imshow(I);title(原始图像);figure;imshow(I2);title(压缩图像);figure;imshow(J);figure;mesh(J);%画出 J 的立体网状图colorbar(horiz);%在水平条方向用不同的颜色表示曲面的高度四、 实验结果与数据处理思考题:1.图像中哪些信息是主要的,哪些信息是次要的?答:图像中需要传达给别人的那一部分信息是主要的,其他的是次要的。2.简述离散余弦变换(DCT)和哈弗曼的原理。答:离散余弦
6、变换原理:用 DCT 压缩图像的过程为:(1)首先将输入图像分解为 88 或 1616 的块,然后对每个子块进行二维 DCT 变换。(2)将变换后得到的量化的 DCT 系数进行编码和传送,形成压缩后的图像格式。用 DCT 解压的过程为:(1)对每个 88 或 1616 块进行二维 DCT 反变换。(2)将反变换的矩阵的块合成一个单一的图像。哈弗曼编码原理:1)将信号源的符号按照出现概率递减的顺序排列。2)将最下面的两个最小出现概率进行合并相加,得到的结果作为新符号的出现概率。3)重复进行步骤 1 和 2 直到概率相加的结果等于 1 为止。4)在合并运算时,概率大的符号用编码 0 表示,概率小的符号用编码 1 表示。5)记录下概率为 1 处到当前信号源符号之间的 0,l 序列,从而得到每个符号的编码成绩六、教师评语签名: 日期: 年 月 日