首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 电子制作
PNG的硬件解码加速设计
来源:本站整理  作者:佚名  2009-05-07 10:00:38



0 引 言 
    PNG(Portable Network Graphic Format)是流式网络图形格式的简称,是一种位图文件(Bitmap File)存储格式。PNG文件采用压缩率高的LZ77和Huffman两种无损压缩算法,支持网络彩色图像传输,支持Alpha通道、定义透明区域和多重透明,逐步细化地显示图片。
    PNG压缩的核心算法是采用Zip压缩算法,该算法的特点就是先利用LZ77算法进行短语式重复的压缩得到未匹配的字节和匹配长度、距离的组合值,然后再根据Huffman算法进行单字节重复的压缩最终得到压缩码流。PNG解码的原理也就是压缩的反过程,那么解码时可根据码表信息和压缩码流还原出原始图像数据。
    PNG文件的解码通常由软件完成,软件解码实现方式灵活,但相对硬件解码而言,软件解码速度慢,能量消耗大,不利于移动设备的低功耗设计优化。为此,这里讨论了PNG图像的硬件解码实现方法,其应用对象是手机专用芯片,对低功耗和解码速度都有较高的要求,并解决了PNG解码的快速查表、软硬件协调和硬件加速等实现方法,而硬件加速解码功能的主要作用是减少CPU的负担,极大加快PNG图片显示速度,并在一定程度上减少了功耗,延长了手机的待机时间,具有很大研究与开发的实际价值。

1 PNG图像解码原理的介绍
1.1 LZ77算法介绍

    LZ77算法可以称为“滑动窗口压缩”,该算法将一个虚拟的,可以跟随压缩进程滑动的窗口作为术语字典;要压缩的字符串若在窗口中出现,则输出匹配长度和距离的组合信息,来替换前面出现的相同字符串,且要求最小匹配的字符串为3个字节,这样可以保证压缩后的数据量小于原始数据。
    例如窗口的大小为15个字符,冈0刚编码过的15个字符为:byhelloeveryone,即将编码的字符为:helloto—e、,eryonehi。可以发现有些字符串前面已经出现过,则用()起来的字符串表示滑动窗口中已出现过的匹配串:(hello)to(everyone)hi。
    以上这些原始信息,可利用LZ77算法用匹配长度和距离的组合信息来替换有匹配的字符串,若碰到未匹配的字节则直接输出,压缩后的内容为:(5,13)to(8,15)hi。在LZ77解压缩时,只要维护好滑动窗口,随着压缩信息的不断输入,可根据匹配的组合信息从窗口中找到相应的匹配字符串作为输出,即可还原出原始数据。
1.2 Huffman算法介绍
    Huffman算法属于编码式压缩,利用各个单字节所使用频率不一样的特点,使定长编码转变为变长的编码,给频率高的字节更短的编码,使用频率低的字节更长的编码,起到无损压缩的效果。这样,经过LZ77压缩后的未匹配的字节和匹配的组合信息可以进一步地进行Huffman压缩,从而得到很高的压缩效率。
    例如,对于一组元素的字符值为s={a,b,c,d,e,f},其对应的出现频率为P={10,2,2,2,2,9}。图1是根据以上信息建立的Huffman树。各元素出现频率和元素值如图1所示,编码后的各个元素长度分别为L一{1,3,3,3,3,2},可见编码后储存这些字符值所需的空间极大地减少了。

    这棵Huffman树是根据PNG规范的Dellate原则建立的,具有以下特点:
    (1)左边的叶子编码为0,右边的为1;
    (2)编码必须满足“前缀编码”的要求,即较短的编码不能是较长编码的前缀,这保证了码的惟一性;
    (3)每一层叶子的节点频率按从小到大排列,而同样频率的节点按字符值从小到大排列,这点也是PNG采用的zip算法对Huffman算法的一种改进。因此,解码时首先要提取出压缩流中的码表信息建立出Huffman树,其中每个叶结点应包含有码长和字符值信息,并把最终生成的码表保存在RAM中供给Huff_man解码模块查表还原出图像原始数据。

[1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:28,929.69000 毫秒