77范文网 - 专业文章范例文档资料分享平台

基于DCT的图像压缩编码算法的研究(3)

来源:网络收集 时间:2019-01-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

量化后的DCT系数的序号如表2-2所示。

表2-2 量化DCT系数的序号

0 2 3 9 10 20 21 35

1 4 8 11 19 22 34 36 5 7 12 18 23 33 37 48 6 13 17 24 32 38 47 49 14 16 25 31 39 46 50 57 15 26 30 40 45 51 56 58 27 29 41 44 52 55 59 62 28 42 43 53 54 60 61 63 2.6 DC系数的编码

差分脉冲编码调制(DPCM,Differential Pulse Code Modulation),是一种对模拟信号的编码模式,先根据前一个抽样值计算出一个预测值,再取当前抽样值和预测值之差作为编码用。此差值称为预测误差。抽样值和预测值非常接近(因为相关性强),预测误差的可能取值范围比抽样值变化范围小。所以可用少几位编码比特来对预测误差编码,从而降低其比特率。这是利用减小冗余度的办法,降低了编码比特率。

在8×8子块的64个变换系数经量化后,按直流系数DC和交流系数AC分成两类处理。坐标u=v=0的直流系数DC实质上就是空域图像中64个像素的平均值。图像块经过DCT变换之后得到的DC直流系数有两个特点,一是系数的数值比较大,二是相邻8×8图像块的DC系数值变化不大,JPEG算法使用了差分脉冲调制编码技术。

对DC系数编码进行差分脉冲编码就是对相邻图像块之间量化DC系数的差值(Delta)进行编码。采用差值脉冲编码的主要原因是由于在连续色调的图像中,其差值多半比原值小,对差值进行编码所需的位数,会比对原值进行编码所需的位数少许多。例如差值为5,它的二进制表示值为101,如果差值为-5,则先改为正整数5,再将其二进制转换成1的补数即可。在差值前端另外加入一些差值的霍夫曼码值,例如亮度差值为5(101)的位数为3,则霍夫曼码值应该是100,两者连接在一起即为100101。所谓1的补数,就是将每个Bit若值为0,便改成1;Bit为1,则变成0。差值5应保留的位数为3,列出差值所应保留的Bit数与差值内容的对照。

11

2.7 AC系数的编码

DCT变换所得系数除直流系数之外的其余63个系数称为交流系数(AC系数)。量化AC系数的特点是1× 64矢量中包含有许多“0”系数,并且许多“0”是连续的,因此使用非常简单和直观的行程长度编码(RLE)对它们进行编码。

所谓行程编码(Run-Length Encoding)就是指仅存储一个像素值以及具有相同颜色的像素数目的图像数据编码方式,或称游程编码,常用RLE(Run-Length Encoding)表示。该压缩编码技术相当直观和经济,运算也相当简单,因此解压缩速度很快。RLE压缩编码尤其适用于计算机生成的图形图像,对减少存储容量很有效果。

在AC01到AC63中,找出每一个非0的AC值,将其表示成(NN/SS)VV的形式,其中:NN表示该AC值前的0的个数。而SS、VV与DC的定义一样。如果连续的非0超过15个时,增加一个扩展字节:(15/0)表示连续16个0。另外若有一串0延伸到AC63,一律用(0/0)表示结束。63个AC系数采用行程编码的方式如图2-4所示。

第一字节

7 6 5 4 3 2 1 0 两个非0值 之间的连续 0的个数 下一个非0 值所占比 特数 第二字节

7 6 5 4 3 2 1 0 下一个非0系数的实值

图2-4 AC编码格式

对于AC系数,有两个符号。符号1为行程和尺寸,(0,0)和(15,0)是两个比较特殊的情况。(0,0)表示块结束标志EOB,(15,0)表示ZRL,当行程长度超过15时,用增加ZRL的个数来解决,所以最多有三个ZRL(3×16+15=63)。

对于DC系数,也有两个符号。符号1为尺寸(Size),符号2为幅度值(Amplitude)。 对于AC系数,符号1和符号2分别进行编码。零行程长度超过15个时,有一个符号(15,0),块结束时只有一个符号(0,0)。

对符号1进行Huffman编码(亮度,色差的Huffman码表不同),对符号2进行变长整数(VLI)编码。举例来说:Size=6时,Amplitude的范围是-63~-32,以及32~63,对绝对值相同,符号相反的码字之间为反码关系。所以AC系数为32的码字为100000,33的码字为100001,-32的码字为011111,-33的码字为011110。符号2的码字紧接于符号1的码字之后。对于DC系数,Y和UV的Huffman码表也不同。

12

2.8 霍夫曼编码

Huffman编码过程的几个步骤:

(l)将信号源的符号按照出现概率递减的顺序排列。(注意,一定要递减) (2)将最下面两个最小出现概率进行合并相加,得到结果作为新符号的出现概率。 (3)重复进行步骤1和2直到概率相加的结果等于1为止。

(4)在合并运算时,概率大的符号用编码0表示,概率小的符号用编码1表示。 (5)记录下概率为1处到当前信号源符号之间的0,l序列,得到每个符号的编码。 一串信号源S={s1,s2,s3,s4,s5}对应概率为p={40,30,15,10,5},按照递减的格式排列概率后,根据第二步,会得到一个新的概率列表,依然按照递减排列,注意:如果遇到相同概率,合并后的概率放在下面!最后概率最大的编码为0,最小的编码为1,所以,编码结果为:

s1=1 s2=00 s3=010 s4=0110 s5=0111

霍夫曼编码的特点:

(1)编出来的码都是异字头码,保证了码的唯一可译性。

(2)由于编码长度可变。因此译码时间较长,使得霍夫曼编码的压缩与还原相当费时。

(3)编码长度不统一,硬件实现有难度。

(4)对不同信号源的编码效率不同,当信号源的符号概率为2的负幂次方时,达到100%的编码效率;若信号源符号的概率相等,则编码效率最低。

(5)由于0与1的指定是任意的,故由上述过程编出的最佳码不是唯一的,但其平均码长是一样的,故不影响编码效率与数据压缩性能。

13

3 基于DCT图像压缩的MATLAB实现

MATLAB图像处理工具箱支持四种图像类型,分别为RGB图像(真彩色图像)、索引图像、灰度图像、二值图像,由于有的函数对图像类型有限制,这四种类型可以用工具箱的类型转换函数相互转换。

MATLAB可操作的图像文件包括BMP、HDF、JPEG、PCX、TIFF、XWD等格式。下面就图像处理的基本过程讨论工具箱所实现的常用功能。

MATLAB为用户提供了专门的函数来从图像格式的文件中读写图像数据。这种方法不像其他编程语言,需要编写复杂的代码,只需要简单地调用MATLAB提供的函数即可。

3.1数字图像文件的读写

(1) 图像文件的读取。 MATLAB中利用函数imread来实现图像文件的读取操作。其语法格式为:

A=imread(filename,fmt) [X,map]=imread(filename,fmt) [?]=imread(filename)

Filename:图像文件名;fmt:图像文件格式。

A = imread(filename, fmt) 读取图像到A,如果文件是包含灰度图像,A是二维矩阵,如果文件是包含真彩色图像(RGB),A是三维矩阵(M-by-N-by-3)。文件必须在当前目录下,或在matlab的路径上。如果imread不能够找到名称为filename的文件,那么它将找一名为filename. fmt的文件

[X,map] = (imread filename,fmt) 把图像filename读入与它相关的图像色彩信息写入map,图像色彩信息值在范围[0,1]中自动地重新调整。

[?] = imread(filename)这种方式是试图得到文件的格式从文件所包含的信息。 (2) 图像文件的输出。 MATLAB中利用函数imwrite来实现图像文件的输出和保存操作。其语法格式为:

Imwrite(A,filename,fmt) Imwrite(X,map,filename,fmt) Imwrite(?,filename)

Imwrite(A,filename,fmt)把图像 A 写入图像文件 filename。

Imwrite(X,map,filename,fmt)把 X和它的相关色彩信息map写入filename。

14

Imwrite(…,filename)把图像 写入图像文件filename,并推测可能的格式用来做filename的扩展名,扩展名必须是fmt中一合法名。

(3) 图像文件的显示。 在MATLAB中,可以调用image函数来显示图像,其语法格式为:

Image(C)

Image(C) 把矩阵 C 转成一图像。C 可以是一M×N 或 M×N×3维的矩阵,且可以是包含 double, uint8,或 uint16 数据。image是用来显示附标图像,即显示的图像上有x、y坐标轴的显示,可以看到图像的像素大小。但可以加上axis off命令即可把坐标去掉。

在MATLAB的图像处理工具箱中,还提供了一个应用很广泛的图像显示函数,即imshow函数,其调用格式为:

Imshow(I,n) Imshow(I,[low high]) Imshow(BW) Imshow(X,map) imshow(RGB) imshow filename

Imshow(I,n)显示一幅n个灰度级的图像I。

Imshow(I,[low high])一定灰度范围内显示灰度图像,low和high参数分别为数据数组的最小值和最大值。

Imshow(BW)显示二进制图像。

Imshow(X,map)显示索引图像,其中X代表索引图像的数据矩阵,map为颜色映射表。

imshow filename 显示一幅在当前目录下的合法文件。

imshow(RGB)显示RGB图像。RGB是一个m×n×3的数组。对于RGB中的每个像素(r,c),imshow显示数值(r,c,1:3)所描述的颜色。

例如下面的程序: imread(‘zyj.bmp’); imshow(I),title(‘图像读出’)

15

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于DCT的图像压缩编码算法的研究(3)在线全文阅读。

基于DCT的图像压缩编码算法的研究(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/442840.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: