数字图像处理 图像压缩
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
实验名称实验二图像压缩课程名称数字图像处理A
姓名成绩
班级学号
日期地点
(1)掌握离散余弦变换DCT的实现方法,了解DCT的幅度分布特性,从而加深对DCT 变换的认识;
(2)掌握图像DCT变换编码的实现方法,从而加深对变换编码压缩图像原理的理解;(3)使用DCT变换编码编写程序实现图像压缩;
2.实验环境(软件条件)
Windws2000/XP
MATLAB 7.0
3.实验方法
根据如图2.1所示的典型变换编码系统,采用DCT变换对256×256大小、256级灰度的数字图像lena.bmp(如图2.2所示)进行如下处理:
图2.1 典型变换编码系统
图2.2 实验图像lena.bmp
(1)对图像进行8×8分块处理并作DCT变换,观察图像8×8子块的DCT系数的分布,并分析其特点;
(2)对DCT系数进行量化及反量化处理,求反量化系数的逆DCT变换,重新显示重建图像、误差图像和误差图像的直方图;
(3)将量化步长分别增大为初始值的2倍、4倍、8倍后再进行DCT变换编码,显示不同量化步长条件下的重建图像、误差图像以及误差图像的直方图。分析重建图像质量和量化步长的关系。
结果图
原图
像经dct 变化的图
像
对经DCT 变化后的图像进行量
化反量化的图像
050100150200250
2000
4000
6000
原图
像经dct 变化的图
像
对经DCT 变化后的图像进行量
化反量化的图像
050100150200250
2000
4000
原图
像经dct 变化的图
像
对经DCT 变化后的图像进行量
化反量化的图像
050100150200250
2000
4000
原图
像经dct 变化的图
像
对经DCT 变化后的图像进行量
化反量化的图像
050100150200250
2000
4000
5.实验结论
结果图离散余弦变换的变换核为余弦函数。余弦变换除了具有一般的正交变换性质外,它的变换矩阵的基向量能较好的描述图像信号和人类语音信号的相关特征,因此被应用与图像压缩编码的语音信号处理等领域。此外,余弦变换也是一种可分离的变换。通过这次试验,也学到了用matlab实现在数字图像处理中的图像压缩方法,受益匪浅。
附件
clc;
clear all
I=imread('lena_256.bmp');
jpeg=[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 78 87 103 121 120 101
72 92 95 98 112 100 103 99];
for n=1:8:249
for m=1:8:249
J=I(m:m+7,n:n+7);
I1(m:m+7,n:n+7)=dct2(J);
I2(m:m+7,n:n+7)=round(I1(m:m+7,n:n+7)./jpeg);
I2(m:m+7,n:n+7)=I2(m:m+7,n:n+7).*jpeg;
I3(m:m+7,n:n+7)=idct2(I2(m:m+7,n:n+7));
end
end
I3=uint8(I3);
subplot(221);imshow(I);
title('原图像')
subplot(222);imshow(I1);
title('经dct变化的图像')
subplot(223);imshow(I2);
title('对经DCT变化后的图像进行量化')
subplot(224);imshow(I3);
title('反量化的图像')
I4=I-I3;
figure(2);subplot(211);imshow(I4);%误差图像
subplot(212);imhist(I4);%显示误差直方图
增加量化步长(N分别为2,4,8)
clc;
clear all
I=imread('lena_256.bmp');
jpeg=[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 78 87 103 121 120 101
72 92 95 98 112 100 103 99]*N;
for n=1:8:249
for m=1:8:249
J=I(m:m+7,n:n+7);
I1(m:m+7,n:n+7)=dct2(J);
I2(m:m+7,n:n+7)=round(I1(m:m+7,n:n+7)./jpeg);
I2(m:m+7,n:n+7)=I2(m:m+7,n:n+7).*jpeg;
I3(m:m+7,n:n+7)=idct2(I2(m:m+7,n:n+7));
end
end
I3=uint8(I3);
subplot(221);imshow(I);
title('原图像')
subplot(222);imshow(I1);
title('经dct变化的图像')
subplot(223);imshow(I2);
title('对经DCT变化后的图像进行量化')
subplot(224);imshow(I3);
title('反量化的图像')
I4=I-I3;
figure(2);subplot(211);imshow(I4);%误差图像
subplot(212);imhist(I4);%显示误差直方图