基于哈夫曼编码的图像压缩技术研究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE PAGE 1 基于哈夫曼编码的图像压缩技术研究 Owing to coded image of Hafuman, the compression technology studies 摘 要 哈夫曼编码是一种数据编码方式,以哈夫曼树——即最优二叉树,用带权路径长度最小的二叉树,对数据进行重编码,经常应用于数据压缩。在计算机信息处理中,“哈夫曼编码”是一种一致性编码法(又称“熵编码法”),用于数据的无损压缩。本文主要介绍了基于哈夫曼编码图像压缩技术的原理、算法、过程,并利用VB6.0作为编程开发工具,开发了一个对256色BMP图像进行压缩/解压缩的软件系统,验证了算法的合理性和可行性。 关键词 哈夫曼编码;二叉树;熵;无损压缩 前言 哈夫曼编码是一种常用的压缩编码算法,采用变长码编码,属于无损压缩算法的一种,在无损压缩的编码范畴中,哈夫曼(Huffman)编码方法是一种较有效的编码方法,是哈夫曼在1952年根据香农在1948年和范若在1949年阐述的一种编码思想提出的一种不定长(变长)编码的方法,也称霍夫曼编码。 哈夫曼编码在图像压缩应用中具有非常重要的意义,哈夫曼编码是一种实用的无损压缩技术,经过多年的不断改进,已经形成了系统的理论和方法。目前主要有两种类型的哈夫曼编码方式,即静态哈夫曼编码和动态哈夫曼编码。 图像压缩编码技术可以追溯到1948年提出的电视信号数字化,到今天已经有60多年的历史了。在此期间出现了很多种图像压缩编码方法,本课题主要研究基于哈夫曼编码对图像进行无损压缩,基于哈夫曼编码的图像无损压缩过程通常分为两步,即去除相关和编码。去除相关就是要去除图像数据的冗余部分,降低信源熵,这是对图像数据的压缩过程;编码就是对去除冗余后的图像数据重新用一种新的符号编码代替,这也是对图像数据的重编码进行存储的过程。 哈夫曼编码原理 理论基础 为了节省空间,在对数据进行编码时,可以对那些经常出现的数据指定较少的位数表示,而那些不常出现的数据指定较多的位数表示,从而降低冗余,这样从总的效果看就节省了存储空间。 基于哈夫曼编码图像压缩的基本原理是频繁使用的数据用较短的代码代替,较少使用的数据用较长的代码代替,每个数据的代码各不相同,这是一种典型的无损编码方式。这些代码都是二进制码,且码字长度是不均匀的、平均码率可以接近信息源熵值的一种编码。编码过程是先对图像数据扫描一遍,计算出各种像素出现的概率,按概率的大小建立最优二叉树(二叉树的叶子节点刚好表示的图像中的某种像素)并给二叉树的每个分支赋特定权值(0或1),然后通过遍历二叉树读取从根节点到叶子节点的路径权值字符串,即给每种像素指定了不同长度的唯一编码,由此得到一张该图像所有像素的哈夫曼编码表。编码后的图像数据记录的是每个像素的码字,而码字与实际像素值的对应关系记录在码表中,码表是附在图像文件中的。 基于哈夫曼编码图像压缩技术借用了热力学中的名词“熵”(Entropy)来表示一条信息中真正需要编码的信息量:如考虑用0和1组成的二进制数码为含有n个符号的某条信息编码,假设符号在整条信息中重复出现的概率为,则该符号的熵也即表示该符号所需的位数为:,整条信息的熵也即表示整条信息所需的位数:。 编码具体过程 建立最优二叉树的过程: 如下图所示,在每个结点上标出信源字母的概率, 图2.1信源的哈夫曼编码 找出两个具有最小概率的节点,在本例中是0.01和0.04,把它们放在同一个父节点的两个字节点上。 在其父结点上标出子节点的概率之和,如图所示,应是0.01+0.04=0.05。进行下一轮找最小概率节点,由于这个父节点代表了原来的两个节点,因此现在只考虑7个节点。 在这7个节点中还没有产生父节点,在其中找两个最小概率的,这里是0.05和0.05,把它们放在同一个父节点的两个子节点上,并在其父节点上标上子节点的概率之和0.05+0.05=0.1。 继续这样的合并,每一步都将两个节点合并到一个父节点之下,对于两个概率相同的可以任意挑选一个,直到形成的父节点为1为止,此节点即为根节点。 编码过程: 分别给建成的最优二叉树中每个节点的左右分支分别标0和1,作为权值,这样,从根节点到每一个叶子节点有一条唯一的路径,读出每条路径上的权值就会产生一个对应节点的唯一码字。如图2.1所示,二叉树左右分支的0、1标号并不是确定的,本例中左分支是1,右分支是0,也可以相反,如图2.2所示。 图 2.2 另一种编码 上面这两种Huffman编码方式的平均码长分别为: 可见,尽管这两种编码设定不同,但它们都有相同的平均码长,要真正实现压缩还得对新的编码进行按位存储。 哈夫曼编码具体实施 压缩思想: 由于进行的是无损压缩,所以要扫描图像的所有像素点,压缩过程分为四步:①扫描统计像素出现的概率并按大小排

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档