一种图像压缩和解压缩的方法和装置制造方法及图纸

技术编号:8765884 阅读:240 留言:0更新日期:2013-06-07 23:42
本发明专利技术提供一种图像压缩方法和装置及其相应的图像解压缩方法和装置,所述图像压缩方法包括多轮压缩循环,在每轮压缩循环中,首先在图像的n个像素行中确定当前未压缩像素数最大且行号最小的像素行并记录该像素行的首个未压缩像素P的像素值。然后,分别确定并记录像素P所在像素行及其后续像素行中从当前首个未压缩像素算起连续排列的与像素P有相同像素值的当前未压缩像素的数目N。其中,当在某个所述后续像素行中判断为从该像素行获得的所述像素数N=0,或者当某个所述后续像素行为末像素行时,本轮压缩循环结束。该方法获得的平均压缩比在40%左右,且不消耗过多的CPU资源,是一种适用范围较广的压缩算法。

【技术实现步骤摘要】
一种图像压缩和解压缩的方法和装置
本专利技术属于图像压缩领域,具体地说,涉及一种图像压缩和解压缩的方法和装置。技术背景随着智能手机的普及,智能手机已经成为人们生活中的必需品。从其发展趋势上 可以看出,智能手机的运算能力越来越强,网络连接速度越来越快。与此同时,与人们生活 息息相关的汽车,其智能化速度却远远不及智能手机。在这种情况下,一种弥补这种不平衡 的方法是,将车载终端和智能手机连接起来。图1是示意图,示出了车载终端和智能手机的 协作方式。如图1所示,用户通过操作车载终端来控制智能手机,在一定程度上可将智能手 机上的内容、软件应用等所包含的图像和声音发送到车载终端上显示和播放,从而可以利 用智能手机提供的功能来完成某些任务,如导航、网络连接等。MiirorLink即是为该场景设 计的协议。通过图1可以看出,在两种设备之间传输的数据包括屏幕显示数据、声音数据、控 制数据这三类。在这三类数据中,数据量最大从而占用传输网络带宽最多的是屏幕显示数 据。例如,要传输一个分辨率为800X480的图像的话,若每个像素占用4个字节,则需要传 输的数据量为800X480X4=1536000字节,即约1.5M字节。考虑到刷屏频率,例如假设屏 幕每秒刷新10帧,则每秒需要传输的数据量为15M,这个数据量是十分巨大的。在实际中,屏幕分辨率小于640X360的移动设备已经很少见。另一方面,如果刷 屏频率小于10帧/秒,则画面会有明显的卡顿现象。因此,若要同时满足分辨率和刷屏频 率的上述要求的话,设像素大小为4字节,则网络实际带宽就必须在15M/秒以上。屏幕分 辨率越高、刷屏频率越快,则要求的带宽就越大。目前无线传输的理论带宽仅能能达到约 15M/秒左右,实际带宽约为7M/秒左右,这显然无法满足上述要求。因此,如何减少传输的 数据量就成为了 一个重要的研究课题。一种减少传输数据量的方法是,减少每个像素值所占的存储空间,即将32位(即4 个字节)像素值转成16位(即2个字节)像素值。这样虽然损失一些显示效果,却节约一半 的带宽。实际的效果表明,16位图像的显示效果对于MirrorLink这种应用场景来说是可容 忍的。以前面的例子来说,若采用16位像素值进行传输,则需要的带宽降低一半,为7M/秒 左右,这已经接近无线传输的实际带宽了。因此,在大多数MirrorLink的实现中,一般均采 用16位像素值进行传输。采用16位像素值进行传输后,仍需进一步减小数据传输量,以提高效率以及增大 可扩展性。容易想到,可以将屏幕数据压缩后再进行传输,以减少数据的传输量。压缩数据 到达接收端后,通过解压缩来获得原始数据。然而,选择适用于移动设备和车载终端的压缩算法是一个很大的挑战。这是因为, 这两种设备均属于嵌入式设备,运算能力都较弱。对于某些压缩算法来说,尽管其压缩比很 大,但其压缩运算的复杂度比较高,会占用大量的CPU运算时间,使得刷屏频率反而降低。 因此,需要选择一种运算复杂度与压缩比都适中的算法。分析屏幕图像的像素数据可以发现,屏幕图像中重复的像素值占很大部分。因此, 可以采用行程长度编码(run-length encoding,RLE)压缩算法进行压缩。该算法的压缩和解压缩都比较简单,不会占用大量的CPU运算时间,而且在屏幕图像像素值重复较多时能够获得较大的压缩比,因此很适合用于该场合。图2是行程长度编码的原理图。该算法将原始的一元数据转换为二元数据,即从 {数据元}转换为{重复次数,数据元}。如图2所示,设有一列数据AAABBBBCCCC,假设每个数据占用一个字节,则编码前该数据要占用的存储空间为11字节。采用RLE编码后,该列数据变为3A4B4C,即相邻的重复数据元不需要重复存储,只需要存储数据元及其重复次数即可。这列数据经RLE编码后仅需要6字节的存储空间,因此达到了压缩的目的。使用RLE算法压缩图像时,利用图像像素值在每一像素行上都有可能重复的特点,通过逐行扫描的方式进行压缩。然而,对图像原始数据进行分析可以发现,图像像素如果发生重复,一般是成块重复,而不是以行为单位重复。因此,普通的行程长度编码并不能充分利用图像像素按区域重复的特征,因而不能有效地对图像进行压缩。
技术实现思路
本专利技术是为了解决现有技术中存在的上述技术问题而做出,其目的在于提供一种图像压缩和解压缩的方法和装置,以改善行程长度编码算法的压缩效率和运算速度。为了实现上述目的,根据本专利技术的一个方面,提供一种图像压缩方法,其包括:a)获取具有η行m列像素的图像,并创建空的存储文件;b)在所述图像的η个像素行中确定当前未压缩像素数最大且行号最小的像素行, 如果该像素行当前的未压缩像素数不为零,则在所述存储文件中有序地记录该像素行的首个未压缩像素P的像素值,如果该像素行当前的未压缩像素数为零,则压缩过程结束,此时的所述存储文件即为图像压缩文件;c)确定该像素行中从当前首个未压缩像素算起连续排列的与像素P有相同像素值的当前未压缩像素的数目N,并将这N个像素作为已压缩像素,在所述存储文件中有序地记录该像素数N,然后以该像素行为当前像素行执行步骤d);d)如果当前像素行是末像素行,则执行步骤b);如果当前像素行不是末像素行,则在当前像素行的下一像素行中确定该像素行中从当前首个未压缩像素算起连续排列的与像素P有相同像素值的当前未压缩像素的数目N,并将这N个像素作为已压缩像素,其中,如果该像素数N > O,则在所述存储文件中有序地记录该像素数N,然后以该像素行作为当前像素行执行步骤d);如果该像素数N=0,则执行步骤b)。优选地,在步骤d)中,每次在执行步骤b)之前还可以包括在所述存储文件中有序地记录特定标志位。另外,优选地,所述图像压缩方法可以包括:建立具有η个元素的数组c [],使得该数组中的第i个元素的值c[i]为所述图像的第i个像素行的当前未压缩像素的数目,其中,O彡i彡n-1,从而在步骤b)中,通过所述数组c[]的各元素值c[i]以及各元素下标值 i,获得当前未压缩像素数最大且行号最小的像素行,并获得该像素行的第一个未压缩像素 P ;在步骤C)和d)中,通过所述数组C []和所述像素数N来确定下次执行步骤b)时各像素行的当前未压缩像素的数目。通过该技术方案,可以方便地对各像素行进行搜索和统计。进一步优选地,所述的图像压缩方法还可以包括:建立具有m个元素的数组b[], 使得该数组的第j个元素的值b[j]为所述图像的当前已压缩像素数为j的像素行的个数, 其中,0彡j彡m-Ι,从而在步骤b)中,按j从小到大的顺序找出第一个b[j]不为O时的 j,该j值即为所述图像的各像素行的当前已压缩像素数中的最小值,从而得以确定所述图像的各像素行中当前已压缩像素数最小即当前未压缩像素数最大的像素行。通过该技术方案,可以提高压缩文件的速度。根据本专利技术的另一方面,提供一种图像解压缩方法,其包括:A)获取由上述图像压缩方法产生的图像压缩文件,并创建具有η行m列单元的空的存储文件;B)在所述图像压缩文件中按所述图像压缩方法的记录顺序读取当前首个未读取数据作为像素值P’,并读取该数据之后的首个未读数据作为像素数N ;C)在所述存储文件 的η个单元行中确定当前未存储单元数最大且行号最小的单本文档来自技高网
...

【技术保护点】
一种图像压缩方法,包括:a)获取具有n行m列像素的图像,并创建空的存储文件;b)在所述图像的n个像素行中确定当前未压缩像素数最大且行号最小的像素行,如果该像素行当前的未压缩像素数不为零,则在所述存储文件中有序地记录该像素行的首个未压缩像素P的像素值,如果该像素行当前的未压缩像素数为零,则压缩过程结束,此时的所述存储文件即为图像压缩文件;c)确定该像素行中从当前首个未压缩像素算起连续排列的与像素P有相同像素值的当前未压缩像素的数目N,并将这N个像素作为已压缩像素,在所述存储文件中有序地记录该像素数N,然后以该像素行为当前像素行执行步骤d);d)如果当前像素行是末像素行,则执行步骤b);如果当前像素行不是末像素行,则在当前像素行的下一像素行中确定该像素行中从当前首个未压缩像素算起连续排列的与像素P有相同像素值的当前未压缩像素的数目N,并将这N个像素作为已压缩像素,其中,如果该像素数N>0,则在所述存储文件中有序地记录该像素数N,然后以该像素行作为当前像素行执行步骤d);如果该像素数N=0,则执行步骤b)。

【技术特征摘要】
1.一种图像压缩方法,包括:a)获取具有η行m列像素的图像,并创建空的存储文件;b)在所述图像的η个像素行中确定当前未压缩像素数最大且行号最小的像素行,如果该像素行当前的未压缩像素数不为零,则在所述存储文件中有序地记录该像素行的首个未压缩像素P的像素值,如果该像素行当前的未压缩像素数为零,则压缩过程结束,此时的所述存储文件即为图像压缩文件;c)确定该像素行中从当前首个未压缩像素算起连续排列的与像素P有相同像素值的当前未压缩像素的数目N,并将这N个像素作为已压缩像素,在所述存储文件中有序地记录该像素数N,然后以该像素行为当前像素行执行步骤d);d)如果当前像素行是末像素行,则执行步骤b);如果当前像素行不是末像素行,则在当前像素行的下一像素行中确定该像素行中从当前首个未压缩像素算起连续排列的与像素P 有相同像素值的当前未压缩像素的数目N,并将这N个像素作为已压缩像素,其中,如果该像素数N > O,则在所述存储文件中有序地记录该像素数N,然后以该像素行作为当前像素行执行步骤d);如果该像素数N=0,则执行步骤b)。2.如权利要求1所述的图像压缩方法,其中,在步骤d)中,每次在执行步骤b)之前还包括在所述存储文件中有序地记录特定标志位。3.如权利要求1所述的图像压缩方法,包括,建立具有η个元素的数组c □,使得该数组中的第i个元素的值c [i]为所述图像的第 i个像素行的当前未压缩像素的数目,其中,O ( i ( n-1,从而在步骤b)中,通过所述数组 c[]的各元素值c[i]以及各元素下标值i,获得当前未压缩像素数最大且行号最小的像素行,并获得该像素行的第一个未压缩像素P ;在步骤c)和d)中,通过所述数组c []和所述像素数N来确定下次执行步骤b)时各像素行的当前未压缩像素的数目。4.如权利要求3所述的图像压缩方法,还包括,建立具有m个元素的数组b [],使得该数组的第j个元素的值b [j]为所述图像的当前已压缩像素数为j的像素行的个数,其中,O ( j ( m-1,从而在步骤b)中,按j从小到大的顺序找出第一个b[j]不为O时的j,该j值即为所述图像的各像素行的当前已压缩像素数中的最小值,从而得以确定所述图像的各像素行中当前已压缩像素数最小即当前未压缩像素数最大的像素行。5.一种图像解压缩方法,包括:A)获取由权利要求1所述的图像压缩方法产生的图像压缩文件,并创建具有η行m列单元的空的存储文件;B)在所述图像压缩文件中按所述图像压缩方法的记录顺序读取当前首个未读取数据作为像素值P’,并读取该数据之后的首个未读数据作为像素数N ;C)在所述存储文件的 η个单元行中确定当前未存储单元数最大且行号最小的单元行, 并使该单元行的前N个连续排列的当前未存储单元均存储像素值P’,然后以该单元行作为当前单元行执行步骤D);D)在所述图像压缩文件中按所述图像压缩方法的记录顺序搜索当前首个未读取数据, 如果该数据不存在,则解压缩过程结束,此时的所述存储文件即为图像原始文件;如果该数据存在且非像素值数据,则读取该数据作为像素数N,并使所述存储文件的当前单元行的下一单元行的前N个连续排列的当前未存储单元均存储像素值P’,然后以该下一单元行作为当前单元行执行步骤D);如果该数据存在且为像素值数据,则执行步骤B)。6.一种图像解压缩方法,包括:A,)获取由权利要求2所述的图像压缩方法产生的图像压缩文件,并创建具有η行m列单元的空的存储文件;B)在所述图像压缩文件中按所述图像压缩方法的记录顺序读取当前首个未读取数据作为像素值P’,并读取该数据之后的首个未读数据作为像素数N ;C)在所述存储文件的η个单元行中确定当前未存储单元数最大且行号最小的单元行, 并将该单元行的前N个连续排列的当前未存储单元均存储像素值P’,然后以该单元行作为当前单元行执行步骤D’);D’ )在所述图像压缩文件中按所述图像压...

【专利技术属性】
技术研发人员:聂山人张骞杨明张翼刘婕妤毛泳江
申请(专利权)人:东软集团股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1