《数据压缩与信源编码》实验指导书
imshow(uint8(data5)); %显示恢复图像 title('矢量量化编码后恢复的图像')
六、实验注意事项
认真听指导教师的讲解,按照要求一步一步做实验。实验完成后,写出规范的实验报告。
七、思考题
1. 码书的大小对图像编码、解码的影响? 2. 码字的大小对图像编码、解码的影响?
- 10 -
《数据压缩与信源编码》实验指导书
实验二 基于DCT变换的图像压缩技术
一、实验目的
利用离散余弦变换进行图像压缩。 二、实验内容
对给定的一幅图像进行分块变换,将变换得到的DCT系数进行编码、传输和解码。 三、实验仪器、设备及材料
操作系统:Windowsxp; 软件:MATLAB
四、实验原理
1.DCT变换
离散余弦变换(DCT)是一种与离散傅立叶变换紧密相关的正交变换,8×8的二维离散余弦变换可以将图像的空间表达式转换到频率域,只用少量的数据点来表达图像,用f(x,y)表示8×8的图像块象素值,F(u,v)表示二维离散余弦变换后的值,具体表达式如下:
?77??12x?1?u?2y?1?v??cos F?u,v??C?u?C?v????f?x,y?cos?41616?x?0y?0?
(4.1)
其反变换如下式:
?77??12x?1?u?2y?1?v??cos? F?x,y??C?u?C?v????C?u?C?v?F?x,y?cos41616?x?0y?0?
(4.2)
其中,
?2?C?u??C?v??2?当u?v?0???1?其他情况?(4.3)
二维离散余弦变换核具有可分离性,即可以先对每行进行一维离散余弦变换,
- 11 -
《数据压缩与信源编码》实验指导书
再对每列进行一维离散余弦变换,因此,二维离散余弦变换可表示为:
??712x?1?u??F?u,v??C?u???G?x,v?cos?216?x?0??7?12x?1?u??G?u,v??C?u???G?x,v?cos?216?y?0?(4.4)
(4.5)
如果直接按照公式计算,其计算量很大,所以,实际应用中普遍采用快速傅立叶变换(FFT)算法来实现离散余弦变换的快速算法。 2.量化编码
数据压缩中的量化处理,不是对A/D转换量化,而是对正交变换后的数据进行量化处理,量化输入值的动态范围很大,而量化的输出只能取有限个整数,量化后的数值用较少的比特数便可表示。量化处理总是把一批输入量化到一个输出级上,这样降低了数值的精度,但减少了数据量。
DCT的输出系数中,左上角的数据表示低频分量,人眼比较敏感,应该用较高的精度来表示,而右下角的数据可以用较低的精度来表示,因此,我们可以定义一个量化表对不同的数据采用不同的量化等级,这个量化表可以根据期望的压缩比进行调整,一般来说,量化表元素值越大压缩比越大,当然图像失真度也越大。 3.“Z”字型扫描
量化后的数据本来已经可以直接进行游程编码,但为了提高游程编码的效率,我们必须尽量增加零游程的长度。基于量化后系数的排列特征,采用“Z”字型扫描能有效增加零游程的长度。“Z”字型扫描轨迹如图2.2所示:
- 12 -
《数据压缩与信源编码》实验指导书
4.哈夫曼(Huffman)编码及解码
哈夫曼编码是1952年由Huffman提出的编码方法,基本思想是根据源数据符合出现的概率大小进行编码,出现概率大的符号分配越短的码字,出现概率越小的符号分配越长的码字,从而达到用尽量少的比特数表示数据源,标准哈夫曼编码步骤如下:
(1)统计数据源符号出现的概率,得到不同概率的信息符号; (2)将数据源符号按概率递减顺序排列;
(3)把两个最小概率相加作为新符号的概率,并按(2)重排; (4)重复(1)、(2),直到概率为1;
(5)在每次合并信源时,将合并的信源分别赋“0”和“1”;
(6)寻找从每一信源符号到概率为1处的路径,记录路径上的“0”和“1”; (7)从树根开始写出每一符号的“0”、“1”。用标准哈夫曼编码对图像进行编码时效率很高,但需要对原始图像扫描两遍,第一遍要精确统计出每个像素值出现的概率,第二遍是建立哈夫曼树并编码,数据压缩和解压速度较慢,因此,出现了一种改良的哈夫曼编码,它的变长码字不是实时产生而是一个固定的表,在编码和解码过程中不用计算符号概率和排序,直接查表得到,但这个表必须经过大量的统计工作并精心设计才能达到较高的编码效率。在静态图像压缩国际标准(JPEG标准)中,专家组已经对大量自然图像进行了统计,得到了适合于静态自然图像编码的哈夫曼表,在实际编码过程中,我们可直接应用此表进行编码和解码。
五、实验步骤 I=imread('cameraman.tif')
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;
- 13 -
《数据压缩与信源编码》实验指导书
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 i=1:8:200 for j=1:8:200 P=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; end end figure; imshow(I2);
title('DCT变换后的频域图像'); %显示DCT变换后的频域图像 for i=1:8:200 for j=1:8:200
P=I3(i:i+7,j:j+7).*a1; %反量化 K=T'*P*T; I4(i:i+7,j:j+7)=K; end end figure; imshow(I4); title('复原图像');
B=blkproc(I,[8,8],'P1*x*P2',T,T')
%计算二维DCT,矩阵T及其转置是DCT函数P1*X*P2的参数
- 14 -
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库《数据压缩与信源编码》实验指导书(3)在线全文阅读。
相关推荐: