一种图形文件的无损压缩方法,其特征在于:包括以下步骤: 步骤一、采用预先选定的多个不同的压缩计数器长度参数对图形文件像素点阵进行预压缩,选取压缩结果所占存储空间最小的压缩计数器长度参数; 步骤二、按选定的压缩结果所占存储空间最小的压缩计数器长度参数,对图形文件进行压缩; 步骤三、将压缩文件头信息和步骤二得到的压缩后数据写入文件,生成压缩文件。(*该技术在2023年保护过期,可自由使用*)
【技术实现步骤摘要】
本专利技术涉及一种,尤其是一种在台式机PC上执行压缩过程,由手机,PDA等嵌入式个人终端设备下载,解压缩的无损图形文件压缩方法;属于计算机图形处理
技术介绍
近几年来,随着人们对资讯的需求越来越多,各种手机,PDA,电子词典,掌上电脑,汽车导航系统等嵌入式个人终端设备蓬勃兴起。相对电脑台式机而言,这些设备体积小,CPU速度慢,内存容量小,存储空间有限,资源较少。但是人们对嵌入式个人终端设备的要求却越来越高,比如目前市场上已经开始流行彩屏手机,而且有些彩屏手机已经达到64K色,拥有完美的表现手段。但是目前的嵌入式个人终端设备一般都存储空间较少,可能存储图形文件的空间非常有限;并且处理能力较低,无法负担运算量太大的解压缩工作。对于图形文件的数据格式,一般而言,完整的图形文件一般由数据头信息和像素点阵这两部分组成。数据头信息主要记录图形的宽度width,高度height,每点占比特数bpp(bits per pixel,以下用bpp代替)等关于本图的信息,数据头信息一般在整个图形数据中占很小的比例。像素点阵指图形中由每个像素点的颜色值按照行列排成的矩阵序列。像素点阵是整个图形的主要组成部分,占据绝大部分的存储空间。现有技术中,图形的压缩方法存在压缩率不高,解压缩耗费大量系统资源以及压缩失真的问题。以最流行的图形压缩方法为JPEG压缩法为例,JPEG压缩分四个步骤实现1.颜色模式转换及采样;2.DCT变换;3.量化;4.编码。第一步骤颜色模式转换及采样想要用JPEG基本压缩法处理全彩色图像,得先把RGB颜色模式图像数据转换为YCbCr颜色模式的数据,Y代表亮度,Cb和Cr则代表色度、饱和度。通过下列计算公式可完成数据转换。Y=0.2990R+0.5870G+0.1140BCb=-0.1687R-0.3313G+0.5000B+128Cr=0.5000R-0.4187G-0.0813B+128这个浮点运算是相当耗费资源的,其后几个步骤的DCT变换是一个更加复杂的浮点运算,量化和编码也需要大量的运算,这对于嵌入式系统有限的CPU资源是无法负担的,而且JPEG还是一种有损压缩方法。通常为了快速解压缩还原图形,采用的压缩算法是LZW(Lempel-Ziv-Welch)或者LZSS(由Storer和Szymanski改进的LZW称为LZSS算法)等类似根据指针字典的LZ系列压缩算法。LZ系列压缩算法是针对文本压缩设计的,如果将其应用于图形压缩,压缩的比例较低,节约空间有限,压缩效果不明显。
技术实现思路
本专利技术所要解决的技术问题是提出了一种无损的图形压缩方法,能够在不降低嵌入式系统设备性能的前提下快速解压缩,并且压缩比例高,可以提高系统的容量,使得嵌入式系统设备能够存储更多的图形文件。本专利技术的技术方案如下所述一种,其特征在于包括以下步骤步骤一、采用预先选定的多个不同的压缩计数器长度参数对图形文件像素点阵进行预压缩,选取压缩结果所占存储空间最小的压缩计数器长度参数;步骤二、按选定的压缩结果最小的压缩计数器长度参数,对图形文件进行压缩;步骤三、将压缩文件头信息和步骤二压缩后数据写入文件,生成压缩文件。如果图形本身比较简单,会出现大量连续相同颜色值的像素点的情况,使用多位bit的大压缩计数器长度值,即bpc值,来存储相同颜色值的连续点计数,比较合适,因为如果计数器占空间太小,它本身的容量也就越小,结果导致在没有颜色转换的情况下由于计数器溢出而不得不把一个单元分割成多个单元空间来存储。但是针对有些复杂图形,其颜色变化比较多,颜色也相对较为复杂的情况时,不会出现大量的颜色值相同的连续的点的情况下,这种图形的连续相同颜色点的数目通常都比较小,使用大的存储空间进行计数就有些浪费空间,不大合适了。在这种情况下,就应该考虑使用较小的bpc值,甚至对于有些特别复杂的图形应该采用3-7bits的bpc值进行计数以达到增加压缩率的目的。因此,在实际应用中,应针对不同的图形应该选择不同容量的压缩计数器长度bpc值。如上所述的,所述的预压缩包括如下步骤步骤1.1预先设定的压缩计数器长度参数的初值,采用记录颜色值和相同颜色值连续点个数的压缩方法,压缩图形文件点阵;步骤1.2保存压缩后数据占据的存储空间的大小和压缩计数器长度参数初值。所述的步骤1.1中压缩图形文件点阵的过程如下步骤A1、建立一个记录单元,按图形文件的bpp设定的颜色值存储空间存储像素点的颜色值,按压缩计数器长度初值设定存储空间来存储相同颜色值连续点个数;步骤A2、取图形文件点阵最左上点作为当前点,在记录单元中记录当前点的颜色值,设置相同颜色值连续点个数为一;步骤A3、判断当前点右方的像素点的颜色是否与当前点颜色相同,如果到达行的末尾,判断当前点下一行最左像素点的颜色是否与当前点颜色相同;如果相同执行步骤A4,如果不相同执行步骤A5;步骤A4、相同颜色值连续点个数加一;如果相同颜色值连续点个数再加一,会超出了压缩计数器长度值设定存储空间,则建立一个新的记录单元,在记录单元中记录颜色值,设置相同颜色值连续点个数为一;步骤A5、建立一个新的记录单元,在记录单元中记录新的颜色值,设置相同颜色值连续点个数为一;步骤A6、将当前点移动到右方的像素点,如果到达行的末尾,当前点移动到下一行最左像素点,执行步骤A3;如果达到最右下点,则结束整个压缩过程。由于图形文件的点阵中,点的色彩是渐进变化的,相邻的点的色彩往往是相同的。通过以上的统计压缩法正是考虑了每一行中相邻列的点的颜色接近的规律而设计的。解压缩时,非常简单,只需按照颜色值及其相同点个数,复制这个数目的同样颜色的点,效率是相当高的,其消耗只相当于内存赋值,对效率的影响几乎可以忽略不计。如上所述的,所述步骤1.1中的记录颜色值和相同颜色值连续点个数的方法,在如上所述压缩方法之前,还包括如下步骤步骤B1预先设定任意两种不同颜色异或运算后的颜色值,相同颜色异或运算后的颜色值为零; 步骤B2把图形点阵每一行与它的上一行进行异或运算作为本行的结果,第一行数据不做任何处理,得到一个新的像素点阵;以上的带行对比的统计压缩法先考虑了每一列中相邻行的点的颜色接近的规律而且考虑了异或后得到的点阵中每一行中相邻列的点的颜色接近的规律,大大提高了压缩比率。解压缩要分两个步骤进行,第一步跟统计压缩法相同,先有统计值还原成异或运算后的点阵,这个过程的效率与统计压缩法完全相同,已经讨论过,效率是很高的;第二步由上一行的内容和本行内容异或得到本行真正的内容(其中第一行无需处理),解压即可完成,分析第二步的效率,第二步动作其实只有一个操作,那就是把两行数据进行异或,异或操作是CPU的一个基本逻辑运算,速度非常快,所以整个解压缩的效率同样是相当高的。如上所述的,所述的步骤1.1中压缩图形文件点阵的过程如下步骤D1预先设定任意两种不同颜色异或运算后的颜色值,相同颜色异或运算后的颜色值为零;步骤D2把图形点阵每一行与它的上一行进行异或运算作为本行的结果,第一行数据不做任何处理,得到一个新的像素点阵;执行步骤C1;步骤C1、建立一个记录单元,先按压缩计数器长度初值设定存储空间来存储相同颜色值连续点个数,再按图形文件的bpp设定的颜色值存储空间存储像素点的颜色值;步本文档来自技高网...
【技术保护点】
【技术特征摘要】
【专利技术属性】
技术研发人员:马晓军,
申请(专利权)人:联想北京有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。