基于二进制块双向编码的图像压缩方法及图像解压方法

文档序号:32668236发布日期:2022-12-24 01:40阅读:38来源:国知局
基于二进制块双向编码的图像压缩方法及图像解压方法

1.本发明涉及图像压缩技术领域,尤其涉及的是一种基于二进制块双向编码的图像压缩方法及图像解压方法。


背景技术:

2.随着科学技术的发展,图像的应用越来越广泛,图像的数量也在迅速增长,因此在图像存储、传输等过程中,需要进行图像压缩以减少图像存储时所需的磁盘空间、信道传输时所需的带宽等资源等。
3.现有技术中,通常采用哈夫曼编码的方式进行图像压缩。现有技术的问题在于,使用哈夫曼编码进行图像压缩时,需要针对整个图像中的符号进行统计并确定概率分布,然后直接对整个图像进行压缩,算术压缩时的时间复杂度较高,且需要耗费较多的时间,不利于提高图像压缩的效率和效果。
4.因此,现有技术还有待改进和发展。


技术实现要素:

5.本发明的主要目的在于提供一种基于二进制块双向编码的图像压缩方法及图像解压方法,旨在解决现有技术中使用哈夫曼编码进行图像压缩时,需要针对整个图像中的符号进行统计并确定概率分布,然后直接对整个图像进行压缩,算术压缩时的时间复杂度较高,且需要耗费较多的时间,不利于提高图像压缩的效率的问题。
6.为了实现上述目的,本发明第一方面提供一种基于二进制块双向编码的图像压缩方法,其中,上述基于二进制块双向编码的图像压缩方法包括:获取待压缩图像对应的多个待处理图像块,根据各上述待处理图像块的大小获取各上述待处理图像块的类型判断阈值,其中,上述待处理图像块是二进制图像块;根据各上述待处理图像块对应的第一符号数目和第二符号数目获取各上述待处理图像块的编码类型判断参数,其中,上述第一符号数目是上述待处理图像块中符号0的数目,上述第二符号数目是上述待处理图像块中符号1的数目;根据各上述待处理图像块的编码类型判断参数和类型判断阈值之间的大小关系确定各上述待处理图像块的块类型和标志符号,其中,一个上述待处理图像块的块类型为可压缩类型和不可压缩类型中的一种;根据各上述待处理图像块的块类型和标志符号,通过预设的图像块编码步骤对各上述待处理图像块中目标编码符号的数目和位置进行编码,获得各上述待处理图像块的图像块编码结果,其中,上述目标编码符号是上述待处理图像块中与上述标志符号相同的元素符号;根据上述待压缩图像对应的所有待处理图像块的图像块编码结果获取上述待压缩图像对应的图像压缩结果。
7.可选的,上述获取待压缩图像对应的多个待处理图像块,根据各上述待处理图像
块的大小获取各上述待处理图像块的类型判断阈值,包括:获取待压缩图像,对上述待压缩图像进行划分并获得多个大小相同的待处理图像块;根据各上述待处理图像块的大小,通过预先设置的阈值对照表获得各上述待处理图像块对应的类型判断阈值。
8.可选的,上述编码类型判断参数是上述第一符号数目和上述第二符号数目中的最小值,上述根据各上述待处理图像块的编码类型判断参数和类型判断阈值之间的大小关系确定各上述待处理图像块的块类型和标志符号,包括:将编码类型判断参数大于类型判断阈值的待处理图像块的块类型设置为不可压缩类型,并将该待处理图像块的标志符号设置为不存在;将编码类型判断参数不大于类型判断阈值的待处理图像块的块类型设置为可压缩类型,并将该待处理图像块的标志符号设置为该待处理图像块中数目较少的符号。
9.可选的,对于任意一个上述待处理图像块,上述预设的图像块编码步骤包括:当上述待处理图像块的块类型是不可压缩类型时,将第一类型符号与上述待处理图像块的图像块字符串拼接后作为该待处理图像块的编码结果,其中,上述第一类型符号为符号1,上述图像块字符串是对上述待处理图像块根据光栅扫描的方式扫描获得的二进制串;当上述待处理图像块的块类型是可压缩类型时,根据上述待处理图像块的编码类型判断参数获取上述待处理图像块的参数编码串,根据上述待处理图像块的图像块字符串中各个目标编码符号的位置获取上述待处理图像块的符号编码串,将第二类型符号、上述待处理图像块的参数编码串、上述待处理图像块的符号编码串以及上述待处理图像块的标志符号拼接后作为该待处理图像块的编码结果,其中,上述第二类型符号为符号0,上述参数编码串和上述符号编码串是二进制串。
10.可选的,块类型为可压缩类型的待处理图像块的符号编码串由多个符号编码子串依次连接获得,上述符号编码子串的数目与该待处理图像块的编码类型判断参数相等,上述根据上述待处理图像块的图像块字符串中各个目标编码符号的位置获取上述待处理图像块的符号编码串,包括:依次令i=1,2,

,z,分别执行如下步骤获得各个符号编码子串以连接获得上述符号编码串:当i为奇数时,获取第i编码字符串以及上述第i编码字符串的长度len,对上述第i编码字符串进行从左向右遍历直到获得上述第i编码字符串中从左向右数的第一个目标编码符号的位置编号,根据目标位数计算公式计算获得目标位数,对进行目标位数位的二进制编码以获得第i个符号编码子串,删除上述第i编码字符串中从左向右数的前个符号并作为第i+1编码字符串;当i为偶数时,获取第i编码字符串以及上述第i编码字符串的长度len,对上述第i编码字符串进行从右向左遍历直到获得上述第i编码字符串中从右向左数的第一个目标编码符号的位置编号,根据上述目标位数计算公式计算获得目标位数,对进行目标位数位的二进制编码以获得第i个符号编码子串,删除上述第i编码字符串中从右向左数的前
个符号并作为第i+1编码字符串;其中,第1编码字符串是上述待处理图像块的图像块字符串,z为上述编码类型判断参数,上述位置编号由遍历时经过的符号数确定,上述目标位数计算公式为: ,是上述目标位数。
11.本发明第二方面提供一种基于二进制块双向编码的图像压缩系统,其中,上述基于二进制块双向编码的图像压缩系统包括:图像块处理模块,用于获取待压缩图像对应的多个待处理图像块,根据各上述待处理图像块的大小获取各上述待处理图像块的类型判断阈值,其中,上述待处理图像块是二进制图像块;参数获取模块,用于根据各上述待处理图像块对应的第一符号数目和第二符号数目获取各上述待处理图像块的编码类型判断参数,其中,上述第一符号数目是上述待处理图像块中符号0的数目,上述第二符号数目是上述待处理图像块中符号1的数目;块类型确定模块,用于根据各上述待处理图像块的编码类型判断参数和类型判断阈值之间的大小关系确定各上述待处理图像块的块类型和标志符号,其中,一个上述待处理图像块的块类型为可压缩类型和不可压缩类型中的一种;编码模块,用于根据各上述待处理图像块的块类型和标志符号,通过预设的图像块编码步骤对各上述待处理图像块中目标编码符号的数目和位置进行编码,并获得各上述待处理图像块的图像块编码结果,其中,上述目标编码符号是上述待处理图像块中与上述标志符号相同的元素符号;压缩结果获取模块,用于根据上述待压缩图像对应的所有待处理图像块的图像块编码结果获取上述待压缩图像对应的图像压缩结果。
12.本发明第三方面提供一种图像解压方法,上述图像解压方法包括:获取待解压图像对应的图像压缩结果;根据上述图像压缩结果获取各待解码图像块对应的图像块编码结果,并获取各上述待解码图像块的大小;根据各上述图像块编码结果中的类型符号值获取各上述待解码图像块的块类型,其中,上述类型符号值是上述图像块编码结果中第一个比特的值,一个上述待解码图像块的块类型为可压缩类型和不可压缩类型中的一种;根据各上述待解码图像块的大小、块类型和图像块编码结果,通过预设的图像块解码步骤对各上述待解码图像块对应的目标解码符号的数目和位置进行解码,并获得各上述待解码图像块的图像块解码结果,其中,上述目标解码符号是上述图像块解码结果中各个与上述待解码图像块的标志符号相同的元素符号;根据上述待解压图像对应的所有图像块解码结果获得目标解压图像。
13.可选的,上述预设的图像块解码步骤包括:当上述待解码图像块的块类型是不可压缩类型时,删除上述待解码图像块的图像块编码结果的第一个比特后作为该待解码图像块的目标解码字符串,根据上述待解码图像块的大小将上述目标解码字符串按照光栅扫描方式放置并获得上述待解码图像块的图像块解码结果;
当上述待解码图像块的块类型是可压缩类型时,将上述图像块编码结果的最后一位作为上述待解码图像块的标志符号,获取上述待解码图像块的图像块编码结果中的参数编码串,根据上述参数编码串获取上述待解码图像块的解码类型判断参数,根据上述图像块编码结果获取待解码字符串,根据上述待解码图像块的标志符号和解码类型判断参数对上述待解码字符串解码获得上述待解码图像块的目标解码字符串,根据上述待解码图像块的大小将上述目标解码字符串按照光栅扫描方式放置并获得上述待解码图像块的图像块解码结果,其中,上述待解码字符串是上述图像块编码结果删除第一个比特、最后一位以及上述参数编码串之后的字符串。
14.可选的,上述根据上述待解码图像块的标志符号和解码类型判断参数对上述待解码字符串解码获得上述待解码图像块的目标解码字符串,包括:根据上述标志符号设置初始解码字符串,其中,当上述标志符号为0时,上述初始解码字符串是长度为s
×
s且每一个元素都为1的字符串,当上述标志符号为1时,上述初始解码字符串是长度为s
×
s且每一个元素都为0的字符串,s
×
s等于上述待解码图像块的大小;当=0时,将上述初始解码字符串作为上述待解码图像块的目标解码字符串,其中,是上述待解码图像块的解码类型判断参数;当不等于0时,设置第一计算值rl=1,设置第二计算值rh=s
×
s,依次令j=1,2,

,,执行如下步骤以更新上述初始解码字符串并获得上述待解码图像块的目标解码字符串:获取第j字符串,计算目标长度=rh-rl+1;计算第j解码位数;根据上述第j字符串中第1位到第位的符号获得第j二进制串,并将上述第j字符串的第1位到第位的符号删除之后获得第j+1字符串;将上述第j二进制串转换为十进制获得第j编号;当j为奇数时依次更新=rl+、rl=+1,当j为偶数时依次更新=rh-、rh=-1;将上述初始解码字符串中从左向右数的第个元素更新为上述标志符号;其中,第1字符串是上述待解码图像块的待解码字符串。
15.本发明第四方面提供一种图像解压系统,上述图像解压系统包括:图像压缩结果获取模块,用于获取待解压图像对应的图像压缩结果;图像压缩结果处理模块,用于根据上述图像压缩结果获取各待解码图像块对应的图像块编码结果,并获取各上述待解码图像块的大小;图像块编码结果处理模块,用于根据各上述图像块编码结果中的类型符号值获取各上述待解码图像块的块类型,其中,上述类型符号值是上述图像块编码结果中第一个比特的值,一个上述待解码图像块的块类型为可压缩类型和不可压缩类型中的一种;解码模块,用于根据各上述待解码图像块的大小、块类型和图像块编码结果,通过预设的图像块解码步骤对各上述待解码图像块对应的目标解码符号的数目和位置进行解码,并获得各上述待解码图像块的图像块解码结果,其中,上述目标解码符号是上述图像块解码结果中各个与上述待解码图像块的标志符号相同的元素符号;图像解压模块,用于根据上述待解压图像对应的所有图像块解码结果获得目标解
压图像。
16.由上可见,本发明方案中,获取待压缩图像对应的多个待处理图像块,根据各上述待处理图像块的大小获取各上述待处理图像块的类型判断阈值,其中,上述待处理图像块是二进制图像块;根据各上述待处理图像块对应的第一符号数目和第二符号数目获取各上述待处理图像块的编码类型判断参数,其中,上述第一符号数目是上述待处理图像块中符号0的数目,上述第二符号数目是上述待处理图像块中符号1的数目;根据各上述待处理图像块的编码类型判断参数和类型判断阈值之间的大小关系确定各上述待处理图像块的块类型和标志符号,其中,一个上述待处理图像块的块类型为可压缩类型和不可压缩类型中的一种;根据各上述待处理图像块的块类型和标志符号,通过预设的图像块编码步骤对各上述待处理图像块中目标编码符号的数目和位置进行编码,并获得各上述待处理图像块的图像块编码结果,其中,上述目标编码符号是上述待处理图像块中与上述标志符号相同的元素符号;根据上述待压缩图像对应的所有待处理图像块的图像块编码结果获取上述待压缩图像对应的图像压缩结果。
17.与现有技术使用哈夫曼编码进行图像压缩的方案相比,本发明中无需统计待压缩图像中符号的概率分布,不需要耗费时间进行概率统计,有利于提高图像压缩的效率。同时,本发明中并不是直接针对整个待压缩图像进行图像压缩,而是将待压缩图像分成多个小块,并且只需要分别针对每一个待处理图像块中一种元素符号(即目标编码符号)的数目和位置进行编码压缩,有利于提升图像压缩的效果。同时,在获取待压缩图像对应的多个待处理图像块之后,根据各个待处理图像块的块类型和标志符号,通过预设的图像块编码步骤进行编码以实现图像压缩,在进行压缩计算时的时间复杂度较低,有利于降低计算难度并提高图像压缩处理效率。
附图说明
18.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
19.图1是本发明实施例提供的一种基于二进制块双向编码的图像压缩方法的流程示意图;图2是本发明实施例提供的一种基于二进制块双向编码的图像压缩系统的结构示意图;图3是本发明实施例提供的一种图像解压方法的流程示意图;图4是本发明实施例提供的一种图像解压系统的结构示意图;图5是本发明实施例提供的一种待处理图像块示意图;图6是本发明实施例提供的一种待处理图像块示意图;图7是本发明实施例提供的一种待处理图像块示意图;图8是本发明实施例提供的一种待处理图像块示意图;图9是本发明实施例提供的一种待处理图像块示意图。
具体实施方式
20.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况下,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
21.如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当

时”或“一旦”或“响应于确定”或“响应于检测到”。类似的,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述的条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0022]
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其它不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
[0023]
随着科学技术的发展,图像的应用越来越广泛,图像的数量也在迅速增长,因此在图像存储、传输等过程中,需要进行图像压缩以减少图像存储时所需的磁盘空间、信道传输时所需的带宽等资源等。具体的,智能手机、数码相机等各种成像设备产生了海量的图像,且随着物联网各种应用的快速发展,图像的增长速度也在加快。庞大的图像数量给图像所有者带来了巨大的图像存储、传输压力,所以必须对图像进行压缩,用尽可能少的比特来表示一副图像。
[0024]
图像压缩的目标是用最少的比特数表示图像而不丢失其中的基本信息内容,压缩技术可分为无损压缩和有损压缩,其中,有损压缩会牺牲重建图像的准确性,在对图像重建准确性要求较高时,通常使用无损压缩。常见的无损压缩方法有哈夫曼编码、算术压缩、游程码、无损预测编码等。
[0025]
现有技术中,通常采用哈夫曼编码的方式进行图像压缩。现有技术的问题在于,使用哈夫曼编码进行图像压缩时,需要针对整个图像中的符号进行统计并确定概率分布,然后直接对整个图像进行压缩,算术压缩时的时间复杂度较高,且需要耗费较多的时间,不利于提高图像压缩的效率和效果。同时,游程码是从一端对连续符号的长度进行编码,在连续符号的长度较小时压缩率较低,不利于提高压缩效果;无损预测编码需要很好的预测器,对预测器的要求较高,不利于降低压缩难度和提高压缩效率。
[0026]
为了解决上述多个问题中的至少一个问题,本发明方案中,获取待压缩图像对应的多个待处理图像块,根据各上述待处理图像块的大小获取各上述待处理图像块的类型判断阈值,其中,上述待处理图像块是二进制图像块;根据各上述待处理图像块对应的第一符号数目和第二符号数目获取各上述待处理图像块的编码类型判断参数,其中,上述第一符号数目是上述待处理图像块中符号0的数目,上述第二符号数目是上述待处理图像块中符号1的数目;根据各上述待处理图像块的编码类型判断参数和类型判断阈值之间的大小关系确定各上述待处理图像块的块类型和标志符号,其中,一个上述待处理图像块的块类型为可压缩类型和不可压缩类型中的一种;根据各上述待处理图像块的块类型和标志符号,通过预设的图像块编码步骤对各上述待处理图像块中目标编码符号的数目和位置进行编码,并获得各上述待处理图像块的图像块编码结果,其中,上述目标编码符号是上述待处理图像块中与上述标志符号相同的元素符号;根据上述待压缩图像对应的所有待处理图像块
的图像块编码结果获取上述待压缩图像对应的图像压缩结果。
[0027]
与现有技术使用哈夫曼编码进行图像压缩的方案相比,本发明中无需统计待压缩图像中符号的概率分布,不需要耗费时间进行概率统计,有利于提高图像压缩的效率。同时,本发明中并不是直接针对整个待压缩图像进行图像压缩,而是将待压缩图像分成多个小块,并且只需要分别针对每一个待处理图像块中一种元素符号(即目标编码符号)的数目和位置进行编码压缩,有利于提升图像压缩的效果。同时,在获取待压缩图像对应的多个待处理图像块之后,根据各个待处理图像块的块类型和标志符号,通过预设的图像块编码步骤进行编码以实现图像压缩,在进行压缩计算时的时间复杂度较低,有利于降低计算难度并提高图像压缩处理效率。
[0028]
具体的,本发明方案中,在进行图像压缩时编码图像时,直接按位面分块,根据块类型编码,将编码结果连接即为压缩结果,不需要已知符号的概率分布,有利于提高图像压缩效率。同时,本发明方案可以降低压缩的时间复杂度,因为本方案的编码主要针对标志符号的位置进行,只需要进行较小的对数运算,与算术压缩过程相比有利于降低时间复杂度。
[0029]
进一步的,本发明方案的使用范围更广,游程码在压缩0、1比特串时,如果0、1分布过于杂乱,编码结果会较长,甚至比原始长度更长,导致压缩效果极差。而本发明方案考虑块级别长度的原始串,对其是否适合编码进行分类考虑(分类为可压缩类型和不可压缩类型),有利于减少额外的不必要开销并提升压缩效果。需要说明的是,基于本发明方案也可以直接对原始的待压缩图像(例如将待压缩图像作为一整个待处理图像块)进行处理,且可以配合预测器,对预测误差进行压缩也可以实现好的压缩效果。
[0030]
如图1所示,本发明实施例提供一种基于二进制块双向编码的图像压缩方法,具体的,上述图像压缩方法包括如下步骤:步骤s100,获取待压缩图像对应的多个待处理图像块,根据各上述待处理图像块的大小获取各上述待处理图像块的类型判断阈值,其中,上述待处理图像块是二进制图像块。
[0031]
其中,上述待压缩图像是需要进行压缩处理的图像,上述待处理图像块是对待压缩图像进行分块划分获得的,且各个待处理图像块互不相交。本实施例中,上述待压缩图像是二值图像,因此直接将其划分为大小为s
×
s的互不相交的块即获得各个待处理图像块。在一种应用场景中,上述待压缩图像还可以是灰度图像(例如8位灰度图像),则可以按位面编码,将每个位面分别划分成s
×
s大小的待处理块。本实施例中以待压缩图像为二值图像为例进行具体说明,但其它图像也可以转换为二值图像,因此在此不作具体限定。
[0032]
具体的,上述获取待压缩图像对应的多个待处理图像块,根据各上述待处理图像块的大小获取各上述待处理图像块的类型判断阈值,包括:获取待压缩图像,对上述待压缩图像进行划分并获得多个大小相同的待处理图像块;根据各上述待处理图像块的大小,通过预先设置的阈值对照表获得各上述待处理图像块对应的类型判断阈值。
[0033]
需要说明的是,本实施例中,划分获得的每一个待处理图像块的大小相同,且都为s
×
s,即每一个待处理图像块包括s行s列的像素点,每一个像素点处的值(即数值符号)为0或1。
[0034]
具体的,本实施例中,根据各上述待处理图像块的大小s
×
s,确定各上述待处理图像块的类型判断阈值na。需要说明的是,本实施例中各上述待处理图像块的大小相同,所以
对应的类型判断阈值也相同。实际使用过程中,各上述待处理图像块的大小可以不同,例如在进行第一次划分之后又对其中的部分图像块进行第二次划分,因为本实施例中的编码过程是针对图像块进行的,所以可以将第二次划分后的图像块作为更小的待处理图像块进行具体编码,其具体过程仍可以参照本实施例中的编码过程。具体的,划分获得的各个待处理图像块是正方形图像块。
[0035]
本实施例中,类型判断阈值na根据预先设置的阈值对照表确定,上述阈值对照表中存储了各个待处理图像块的长度(或宽度)s对应的块类型阈值na,例如,s的值为4、8、16、32、64、128、256、512时对应的na的值分别为3、9、31、102、342、1175、4112、13604,实际使用过程中,s取其它值时na对应的值还可以预先计算并存储在阈值对照表中,以便快速查找,从而提高图像压缩效率。
[0036]
步骤s200,根据各上述待处理图像块对应的第一符号数目和第二符号数目获取各上述待处理图像块的编码类型判断参数,其中,上述第一符号数目是上述待处理图像块中符号0的数目,上述第二符号数目是上述待处理图像块中符号1的数目。
[0037]
具体的,上述编码类型判断参数是用于与上述类型判断阈值进行比较以确定各个待处理图像块的块类型的参数,各个待处理图像块对应的类型判断阈值是相同的,但各个待处理图像块对应的编码类型判断参数z是根据各个待处理图块中0和1的符号数目确定的,具体的,上述编码类型判断参数是上述第一符号数目和上述第二符号数目中的最小值。本实施例中,将上述第一符号数目记为n0,将上述第二符号数目记为n1,以便描述,则z=min{n0,n1}。
[0038]
步骤s300,根据各上述待处理图像块的编码类型判断参数和类型判断阈值之间的大小关系确定各上述待处理图像块的块类型和标志符号,其中,一个上述待处理图像块的块类型为可压缩类型和不可压缩类型中的一种。
[0039]
本实施例中,上述类型判断阈值是用于判断待处理图像块的块类型的阈值,而编码类型判断参数则是用于与类型判断阈值进行比较以确定各个待处理图像块具体类型的参数。
[0040]
具体的,上述根据各上述待处理图像块的编码类型判断参数和类型判断阈值之间的大小关系确定各上述待处理图像块的块类型和标志符号,包括:将编码类型判断参数大于类型判断阈值的待处理图像块的块类型设置为不可压缩类型,并将该待处理图像块的标志符号设置为不存在;将编码类型判断参数不大于类型判断阈值的待处理图像块的块类型设置为可压缩类型,并将该待处理图像块的标志符号设置为该待处理图像块中数目较少的符号。
[0041]
具体的,也可以结合上述第一符号数目和第二符号数目快速确定标志符号s,当一个待处理图像块的块类型为可压缩类型时,将该待处理图像块的标志符号s设置为n0与n1中更小的一个值所对应的符号。
[0042]
例如,对于一个待处理图像块,当z》na时,将对应的待处理图像块的块类型设置为不可压缩类型(可以用类型i代表),此时设置标志符号s不存在。当z=n0≤na时,将对应的待处理图像块的块类型设置为可压缩类型(可以用类型ii代表),此时设置标志符号s为0。当z=n1≤na时,将对应的待处理图像块的块类型设置为可压缩类型(可以用类型ii代表),此时设置标志符号s为1。需要说明的是,在编码过程中,上述标志符号s可以单独存储,也可以与
其它编码获得的字符串连接并作为图像块编码结果中的一位(本实施例中为最后一位)进行存储。设置标志符号s不存在即代表对应的存储位为空,或者不需要额外的1比特来存储标志符号s(以进一步减少存储空间的占用)。
[0043]
当上述标志符号s作为图像块编码结果中的最后一位进行存储时,在解码阶段可以根据图像块编码结果中的第一位进行块类型的判断,判断是i类块,可以直接根据图像块编码结果中恢复原始块;如果判断是ii类块,可以在解码出各个目标编码符号(即原始块中与s相同的元素)的具体位置后,读取图像块编码结果的最后一位获得标志符号,从而解码恢复获得原始块。
[0044]
需要说明的是,上述标志符号s还可以作为图像编码结果中的其它位的值,在此不作具体限定。例如,对于ii类块,标志符号s还可以作为图像编码结果中的第2位。
[0045]
步骤s400,根据各上述待处理图像块的块类型和标志符号,通过预设的图像块编码步骤对各上述待处理图像块中目标编码符号的数目和位置进行编码,并获得各上述待处理图像块的图像块编码结果,其中,上述目标编码符号是上述待处理图像块中与上述标志符号相同的元素符号。
[0046]
其中,上述预设的图像块编码步骤是预先设置的用于对各个待处理图像块中目标编码符号的数目以及目标编码符号所在的位置进行编码的步骤,目标编码符号是待处理图像块中与标志符号相同的元素符号,也即待处理图像块中数目占比更小的符号。例如,当一个待处理图像块的标志符号为1时,预设的图像块编码步骤就是对该待处理图像块中所有的符号1的数目以及所有的符号1出现的位置进行编码的步骤。
[0047]
而目标编码符号(例如符号1)又是待处理图像块中出现次数更少的符号,因此对其数目和位置进行编码时的计算量较小且时间复杂度较低,有利于提高图像压缩效率,且可以使得最终编码后的字符串更短,有利于提高压缩率。并且可以在解码出各个目标编码符号的数目和位置后进行精准的图像还原,即可以实现无损压缩和解压缩。
[0048]
本实施例中,对于任意一个上述待处理图像块,上述预设的图像块编码步骤包括:当上述待处理图像块的块类型是不可压缩类型时,将第一类型符号与上述待处理图像块的图像块字符串拼接后作为该待处理图像块的编码结果,其中,上述第一类型符号为符号1,上述图像块字符串是对上述待处理图像块根据光栅扫描的方式扫描获得的二进制串;当上述待处理图像块的块类型是可压缩类型时,根据上述待处理图像块的编码类型判断参数获取上述待处理图像块的参数编码串,根据上述待处理图像块的图像块字符串中各个目标编码符号的位置获取上述待处理图像块的符号编码串,将第二类型符号、上述待处理图像块的参数编码串、上述待处理图像块的符号编码串以及上述待处理图像块的标志符号拼接后作为该待处理图像块的编码结果,其中,上述第二类型符号为符号0,上述参数编码串和上述符号编码串是二进制串。
[0049]
需要说明的是,上述参数编码串用于记录待处理图像块中占比小的符号(即目标编码符号,也即与标志符号s相同的元素符号)的个数,上述符号编码串则用于记录待处理图像块中占比较小的符号的位置。在编码时可以根据这两者还原出各个目标编码符号所处的位置,实现无损解压缩。
[0050]
具体的,本实施例中,块类型为可压缩类型的待处理图像块的符号编码串由多个
符号编码子串依次连接获得,上述符号编码子串的数目与该待处理图像块的编码类型判断参数相等,上述根据上述待处理图像块的图像块字符串中各个目标编码符号的位置获取上述待处理图像块的符号编码串,包括:依次令i=1,2,

,z,分别执行如下步骤获得各个符号编码子串以连接获得上述符号编码串:当i为奇数时,获取第i编码字符串以及上述第i编码字符串的长度len,对上述第i编码字符串进行从左向右遍历直到获得上述第i编码字符串中从左向右数的第一个目标编码符号的位置编号,根据目标位数计算公式计算获得目标位数,对进行目标位数位的二进制编码以获得第i个符号编码子串,删除上述第i编码字符串中从左向右数的前个符号并作为第i+1编码字符串;当i为偶数时,获取第i编码字符串以及上述第i编码字符串的长度len,对上述第i编码字符串进行从右向左遍历直到获得上述第i编码字符串中从右向左数的第一个目标编码符号的位置编号,根据上述目标位数计算公式计算获得目标位数,对进行目标位数位的二进制编码以获得第i个符号编码子串,删除上述第i编码字符串中从右向左数的前个符号并作为第i+1编码字符串;其中,第1编码字符串是上述待处理图像块的图像块字符串,z为上述编码类型判断参数,上述位置编号由遍历时经过的符号数确定,上述目标位数计算公式为: ,是上述目标位数。
[0051]
具体的,本实施例中,将一个待处理图像块的编码结果用bc表示,则当该待处理图像块是不可压缩类型时,bc=1||str,其中,符号||代表位连接,str代表上述待处理图像块的图像块字符串(即将待处理图像块按光栅方式扫描得到的二进制串)。需要说明的是,此时标志符号s不存在,所以编码结果bc仅由第一类型符号(即符号1)与图像块字符串拼接组成。
[0052]
反之,当该待处理图像块是可压缩类型时,标志符号s用于表示待处理图像块的图像块字符串str中出现次数较少的符号,该待处理图像块的编码结果bc=0||bn||bd||s,需要说明的是,s也可以单独存储而不作为bc的一部分,在此不作具体限定。
[0053]
其中,bn是参数编码串(是一个二进制的串),用于表示块类型判断参数z(即str中出现次数较少的符号的数目,是一个十进制的数)的值。例如当待处理图像块的长度s=4时,类型判断阈值na=3,则对于可压缩类型的待处理图像块,z所有可能的取值为0、1、2、3,将其转换成二进制的参数编码串,可以使用0、10、110、111来分别表示。
[0054]
在一种应用场景中,可以预先设置一个指定长度用于存储参数编码串,从而更方便的获知哪部分是参数编码串。本实施例中,不限定参数编码串的长度,使用变长的参数编码串来表示z的值,有利于进一步减少存储空间的占用,提高压缩率。具体的,在一种应用场景中,可以预先设置z的值与参数编码串bn的对应关系并通过表格存储。本实施例中,根据na确定可能的z值之后,可以根据变长的huffman编码来设置bn的所有可能值,并根据实际的z值确定对应的参数编码串bn。同时,对于一个na值,z更小的取值出现的概率更大,因此z更小的取值对应的参数编码串bn的长度更短。且由于huffman编码是前缀码,所以在解码过
程中能很方便的结合预先设置的块类型判断参数与参数编码串的对应关系表确定参数编码串的起始点,从而实现解码。或者,在另一种应用场景中,也可以额外存储bn的长度以实现快速解码,在此不作具体限定。
[0055]
bd是待处理图像块的符号编码串,用于记录str中所有目标编码符号出现的位置。需要说明的是,z=0时,不存在bd(因为目标编码符号的个数为0,也不存在位置)。此时可以视为bd不存在,因为不需要记录目标编码符号的位置,且str的长度是确定的,此时其中的所有符号都是相同的符号,在解码时也可以直接恢复其中的所有符号。反之,z≠0时,说明str中一共有z个目标编码符号,可以进行z次计算,以找出所有目标编码符号的位置并进行位置编码。
[0056]
具体的,z≠0时,可以依次令i=1,2,

,z,并根据如下步骤进行编码:当i是奇数时,编码第i编码字符串左端的第一个目标编码符号,获取当前的第i编码字符串的长度len,然后从左向右遍历以获得第i编码字符串中第一个目标编码符号的位置编号(是一个十进制的值,用于指示目标编码符号在第i编码字符串中在第几个符号位置),因为∈[1,len-(z-i)],所以可以根据目标位数计算公式来计算获得目标位数,使用可变的目标位数,可以进一步提高压缩率。其中,目标位数是可以足以编码的最短位数。具体的,使用目标位数位的二进制来表示以获得第i个符号编码子串。然后删除上述第i编码字符串中从左向右数的前个元素符号并作为第i+1编码字符串,如此,随着i的增大,对应的编码字符串在不断被删减,可以进一步提高压缩率和压缩效率。
[0057]
当i是偶数时,对位置进行从右向左的编码。具体的,编码第i编码字符串右端的第一个目标编码符号,获取当前的第i编码字符串的长度len,然后从右向左遍历以获得第i编码字符串中第一个目标编码符号的位置编号,根据目标位数计算公式来计算获得目标位数,使用目标位数位的二进制来表示以获得第i个符号编码子串。然后删除上述第i编码字符串中从右向左数的前个元素符号并作为第i+1编码字符串。
[0058]
本实施例中,使用双向编码的方式,即在i为奇数和偶数时采用的编码方向不同,可以使得编码字符串的删减更为迅速,从而使得更小,进而提高压缩率。
[0059]
基于上述步骤,获得多个符号编码子串,,

,,连接即可获得待处理图像块的符号编码串bd。
[0060]
在一种应用场景中,当一个大小为s
×
s的二进制块中均匀分布x个目标编码符号时,可以根据如下公式(1)计算获得用于表示的二进制位数的值:
其中,均匀分布是指二进制块对应的长度为s
×
s的图像块字符串str中每(s
×
s)/x的中间位置有一个目标编码符号。
[0061]
需要说明的是,本实施例中的类型判断阈值na是根据阈值对照表查找获得的,在一种应用场景中,可以预先根据如下原理计算获得s与na的对应关系并存储。
[0062]
具体的,若s
×
s大小的块中均匀分布x个目标编码符号,根据上述公式(1)可知每一个目标编码符号的位置所需的比特数,且将一个待处理图像块视为可压缩类型时其对应的编码结果bc的长度应该不大于视为不可压缩类型时对应的编码结果的长度(否则是无效压缩,反而增大了所占空间),因此在na的计算中,需要综合考虑一个块视为可压缩类型和不可压缩类型的两种情况下的编码长度,以确定判断的临界值(即类型判断阈值na)。
[0063]
具体的,预先计算过程中,需要考虑假设的一个均匀分布的二进制块作为i类块和ii类块,两种情况下的编码长度,以此确定最大的x,即na值,可以根据如下公式(2)进行计算:其中,是bd的总长度,具体的,最多需要x比特表示数值x,因此可以预先根据上述公式(2)计算获得s对应的na值,例如,s分别为4、8、16、32、64、128、256、512时对应的na值分别为3、9、31、102、342、1175、4112、13604。如此,假设块中均匀分布x个目标编码符号,而该块满足条件“作为ii类块会有更大的压缩率”,则取满足该条件的最大x值作为na值,对应的,z≤na的块视为ii类块会更好,z》na应该是i类块。
[0064]
步骤s500,根据上述待压缩图像对应的所有待处理图像块的图像块编码结果获取上述待压缩图像对应的图像压缩结果。
[0065]
具体的,在获得各个待处理图像块的图像块编码结果之后,可以按照图像块划分的顺序将所有的图像块编码结果拼接成一个二进制字符串,并作为待压缩图像对应的图像压缩结果,从而实现图像压缩。也可以直接将所有的图像块编码结果进行存储后直接作为待压缩图像对应的图像压缩结果,无需进行拼接,有利于进行解码还原。
[0066]
由上可见,本实施例中,无需统计待压缩图像中符号的概率分布,不需要耗费时间进行概率统计,有利于提高图像压缩的效率。同时,本发明中并不是直接针对整个待压缩图像进行图像压缩,而是将待压缩图像分成多个小块,并且只需要分别针对每一个待处理图像块中一种元素符号(即目标编码符号)的数目和位置进行编码压缩,有利于提升图像压缩的效果。同时,在获取待压缩图像对应的多个待处理图像块之后,根据各个待处理图像块的块类型和标志符号,通过预设的图像块编码步骤进行编码以实现图像压缩,在进行压缩计
算时的时间复杂度较低,有利于降低计算难度并提高图像压缩处理效率。
[0067]
如图2中所示,对应于上述基于二进制块双向编码的图像压缩方法,本发明实施例还提供一种基于二进制块双向编码的图像压缩系统,上述基于二进制块双向编码的图像压缩系统包括:图像块处理模块610,用于获取待压缩图像对应的多个待处理图像块,根据各上述待处理图像块的大小获取各上述待处理图像块的类型判断阈值,其中,上述待处理图像块是二进制图像块;参数获取模块620,用于根据各上述待处理图像块对应的第一符号数目和第二符号数目获取各上述待处理图像块的编码类型判断参数,其中,上述第一符号数目是上述待处理图像块中符号0的数目,上述第二符号数目是上述待处理图像块中符号1的数目;块类型确定模块630,用于根据各上述待处理图像块的编码类型判断参数和类型判断阈值之间的大小关系确定各上述待处理图像块的块类型和标志符号,其中,一个上述待处理图像块的块类型为可压缩类型和不可压缩类型中的一种;编码模块640,用于根据各上述待处理图像块的块类型和标志符号,通过预设的图像块编码步骤对各上述待处理图像块中目标编码符号的数目和位置进行编码,并获得各上述待处理图像块的图像块编码结果,其中,上述目标编码符号是上述待处理图像块中与上述标志符号相同的元素符号;压缩结果获取模块650,用于根据上述待压缩图像对应的所有待处理图像块的图像块编码结果获取上述待压缩图像对应的图像压缩结果。
[0068]
具体的,本实施例中,上述基于二进制块双向编码的图像压缩系统及其各模块的具体功能可以参照上述基于二进制块双向编码的图像压缩方法中的对应描述,在此不再赘述。
[0069]
需要说明的是,上述基于二进制块双向编码的图像压缩系统的各个模块的划分方式并不唯一,在此也不作为具体限定。
[0070]
如图3中所示,对应于上述基于二进制块双向编码的图像压缩方法,本发明实施例还提供一种图像解压方法,用于对根据上述基于二进制块双向编码的图像压缩方法压缩获得的图像压缩结果进行解压缩并实现图像还原。具体的,本实施例中,上述图像解压方法基于二进制块解码实现,上述图像解压方法包括如下步骤:步骤a100,获取待解压图像对应的图像压缩结果。
[0071]
其中,上述步骤a100中获得的图像压缩结果是根据上述任意一种图像压缩方法进行压缩后获得的结果。
[0072]
步骤a200,根据上述图像压缩结果获取各待解码图像块对应的图像块编码结果,并获取各上述待解码图像块的大小。
[0073]
其中,一个图像块编码结果是根据上述任意一种图像压缩方法进行图像压缩时一个待处理图像块对应的图像块编码结果。需要说明的是,在进行图像压缩过程中拼接图像块编码结果的同时可以记录各个图像块编码结果的长度,以便在图像解压过程中进行还原。其中,待解码图像块与压缩过程中的待处理图像块一一对应,上述待解码图像块的大小与图像压缩过程中各个待处理图像块的大小相同,即为s
×
s,对应的大小在图像压缩过程中也可以预先存储。具体的,在不记录各块编码结果的长度时,将所有块的编码结果连接,
也可以按次序恢复各图像块,在记录各块编码结果的长度时,可以更直接获得各块编码结果,但需要额外的比特(即存储空间)来存储对应的长度,如果分块较小,则需要的额外比特占比较大,不利于节省空间。因此,实际使用过程中,可以根据实际需求确定是否存储各块编码结果的长度,在此不作具体限定。
[0074]
步骤a300,根据各上述图像块编码结果中的类型符号值获取各上述待解码图像块的块类型,其中,上述类型符号值是上述图像块编码结果中第一个比特的值,一个上述待解码图像块的块类型为可压缩类型和不可压缩类型中的一种。
[0075]
具体的,上述类型符号值是各个图像块编码结果中的第一位,其值可以是0或者1,当类型符号值为0时,对应的块类型为可压缩类型,当类型符号值为1时,对应的块类型为不可压缩类型。
[0076]
步骤a400,根据各上述待解码图像块的大小、块类型和图像块编码结果,通过预设的图像块解码步骤对各上述待解码图像块对应的目标解码符号的数目和位置进行解码,并获得各上述待解码图像块的图像块解码结果,其中,上述目标解码符号是上述图像块解码结果中各个与上述待解码图像块的标志符号相同的元素符号。
[0077]
其中,上述图像块解码步骤是图像压缩过程中图像块编码步骤对应的解码过程,用于对图像块编码结果进行解码以获得图像块解码结果,其中,上述图像块解码结果相当于将待处理图像块的图像块字符串str按照光栅扫描的方式进行还原之后的二进制图像块。
[0078]
具体的,对于任意一个上述待解码图像块,上述预设的图像块解码步骤包括:当上述待解码图像块的块类型是不可压缩类型时,删除上述待解码图像块的图像块编码结果的第一个比特后作为该待解码图像块的目标解码字符串(相当于图像压缩过程中待处理图像块的图像块字符串str),根据上述待解码图像块的大小将上述目标解码字符串按照光栅扫描方式放置并获得上述待解码图像块的图像块解码结果;当上述待解码图像块的块类型是可压缩类型时,将上述图像块编码结果的最后一位作为上述待解码图像块的标志符号(相当于压缩过程中的标志符号s),获取上述待解码图像块的图像块编码结果中的参数编码串(相当于压缩过程中的bn),根据上述参数编码串获取上述待解码图像块的解码类型判断参数(使用代表,相当于压缩过程中的z),根据上述图像块编码结果获取待解码字符串(相当于压缩过程中的bd),根据上述待解码图像块的标志符号和解码类型判断参数对上述待解码字符串解码获得上述待解码图像块的目标解码字符串,根据上述待解码图像块的大小将上述目标解码字符串按照光栅扫描方式放置并获得上述待解码图像块的图像块解码结果,其中,上述待解码字符串是上述图像块编码结果删除第一个比特、最后一位以及上述参数编码串之后的字符串。
[0079]
需要说明的是,参数编码串可以在压缩过程中预先标记以便查找其对应的位置。本实施例中,因为参数编码串是前缀不同的前缀编码的字符串,因此也可以在遍历时直接查表确定其长度以及获得对应的参数编码串。
[0080]
具体的,上述根据上述待解码图像块的标志符号和解码类型判断参数对上述待解码字符串解码获得上述待解码图像块的目标解码字符串,包括:根据上述标志符号设置初始解码字符串,其中,当上述标志符号为0时,上述初始解码字符串是长度为s
×
s且每一个元素都为1的字符串,当上述标志符号为1时,上述初始
解码字符串是长度为s
×
s且每一个元素都为0的字符串,s
×
s等于上述待解码图像块的大小;当=0时,将上述初始解码字符串作为上述待解码图像块的目标解码字符串,其中,是上述待解码图像块的解码类型判断参数;当不等于0时,设置第一计算值rl=1,设置第二计算值rh=s
×
s,依次令j=1,2,

,,执行如下步骤以更新上述初始解码字符串并获得上述待解码图像块的目标解码字符串:获取第j字符串,计算目标长度=rh-rl+1;计算第j解码位数;根据上述第j字符串中第1位到第位的符号获得第j二进制串,并将上述第j字符串的第1位到第位的符号删除之后获得第j+1字符串;将上述第j二进制串转换为十进制获得第j编号;当j为奇数时依次更新=rl+、rl=+1,当j为偶数时依次更新=rh-、rh=-1;将上述初始解码字符串中从左向右数的第个元素更新为上述标志符号;其中,第1字符串是上述待解码图像块的待解码字符串。
[0081]
具体的,本实施例中,在对上述待解码图像块进行解码的过程中,先根据图像块编码结果中的第一位确定待解码图像块的类型,如果是不可压缩的类型,则直接获得目标解码字符串并按照光栅扫描的方式进行放回块中即可完成解码。其中,目标解码字符串是图像块编码结果中的第2位到第s
×
s+1位。
[0082]
反之,如果是可压缩的类型,则初始化一个字符串(即初始解码字符串)用于进行存储解码过程中的中间结果并最终获得解码后的字符串。其中,解码时的标志符号为0时,上述初始解码字符串是长度为s
×
s且每一个元素都为1的字符串,当上述标志符号为1时,上述初始解码字符串是长度为s
×
s且每一个元素都为0的字符串,s
×
s等于上述待解码图像块的大小。
[0083]
具体的,解码参数编码串获得解码类型判断参数,当=0时,直接将上述初始解码字符串作为上述待解码图像块的目标解码字符串,当不等于0时,解码bd获得个目标解码符号的位置,即可实现无损解码。需要说明的是,对于同一个图像块,在编码和解码过程中,z=。
[0084]
进一步的,在解码参数编码串获得解码类型判断参数的过程中,若压缩时na=3,对应的z只能是0、1、2、3,则对应的bn是0、10、110或111,而bn是从bc的第二位开始的,因此解码时可以从bc的第二位开始向右遍历以确定bc并最终获得类型判断参数,具体的,类型判断参数是从bc的第二位开始向右遍历时连续的1的个数与na之间的最小值。
[0085]
删除bc中的第一位、最后一位以及bn的部分,即可以获得待解码字符串。在不等于0时,需要解码获得各个目标解码符号(与编码时的目标编码符号对应)的位置从而完成解码。
[0086]
在一种应用场景中,解码获得各个目标解码符号的十进制位置编号。具体的,可以设待解码图像块的初始解码字符串为,初始化rl=1、rh=s
×
s,rl和rh用于模拟在编
码过程中,当前的左端和右端的下标。依次令j=1,2,

,,执行如下步骤以更新上述初始解码字符串并最终获得上述待解码图像块的目标解码字符串:计算目标长度=rh-rl+1;计算第j解码位数,设置=bc[1:],更新bc=bc[+1:end];将转换为十进制获得;当j为奇数时依次更新=rl+、rl=+1,当j为偶数时依次更新=rh-、rh=-1;将从左向右的第个元素更新为对应的标志符号(即目标解码符号)。其中,获得的是一个代表位置的下标,根据j的奇偶性和当前的左右端下标可以恢复对应的第j个目标解码符号在原始str中的位置。
[0087]
步骤a500,根据上述待解压图像对应的所有图像块解码结果获得目标解压图像。
[0088]
具体的,将所有图像块解码结果按照分块时的划分方式进行还原,即可以获得对应的目标解压图像。
[0089]
如图4中所示,对应于上述图像解压方法,本发明实施例还提供一种图像解压系统,上述图像解压系统包括:图像压缩结果获取模块710,用于获取待解压图像对应的图像压缩结果;图像压缩结果处理模块720,用于根据上述图像压缩结果获取各待解码图像块对应的图像块编码结果,并获取各上述待解码图像块的大小;图像块编码结果处理模块730,用于根据各上述图像块编码结果中的类型符号值获取各上述待解码图像块的块类型,其中,上述类型符号值是上述图像块编码结果中第一个比特的值,一个上述待解码图像块的块类型为可压缩类型和不可压缩类型中的一种;解码模块740,用于根据各上述待解码图像块的大小、块类型和图像块编码结果,通过预设的图像块解码步骤对各上述待解码图像块对应的目标解码符号的数目和位置进行解码,并获得各上述待解码图像块的图像块解码结果,其中,上述目标解码符号是上述图像块解码结果中各个与上述待解码图像块的标志符号相同的元素符号;图像解压模块750,用于根据上述待解压图像对应的所有图像块解码结果获得目标解压图像。
[0090]
本实施例中,还基于一种具体应用场景中的图像压缩和解压过程对上述图像压缩方法和图像解压方法做具体描述,图5、图6、图7、图8和图9分别是本发明实施例提供的5种待处理图像块示意图,其中,灰色方格代表符号0,白色方格代表符号1,且图5至图9中待处理图像块对应的s=4,na=3。
[0091]
在进行图像压缩时,对上述各个待处理图像块进行编码,具体的,根据待处理图像块的大小s
×
s确定类型判断阈值na(本实施例中为3),根据待处理图像块中0和1的数目确定块类型判断参数z,从而确定块的类型以及标志符号,并实现编码。
[0092]
具体的,对于上述图5,s=4,na=3,n0=12,n1=4,计算获得z=min{n0,n1}=n1=4。可见,z大于na,因此该待处理图像块是不可压缩块,且不存在标志符号s,该待处理图像块对应的图像块编码结果bc=1||str=10001100000100100。
[0093]
对于上述图6,s=4,na=3,n0=0,n1=16,计算获得z=min{n0,n1}=n0=0。可见z=n0≤na,是可压缩类型的块,且标志符号s为0,因为z=0,所以对应的图像块编码结果bc=0||bn=00,此时s可以单独存储。
[0094]
对于上述图7,步骤可以参照上述图6,图像块编码结果bc=0||bn=00,s为1。
[0095]
对于上述图8,s=4,na=3,n0=13,n1=3,计算获得z=min{n0,n1}=n1=3。可见z=n1≤na,是可压缩类型的块,且标志符号s为1,由z=3知bn=111,bd=||||。计算时,i=1,从左边开始编码。str=0000000000110100,长度len=16,=11,用=4位表示-1,得到=1010,更新str=10100。计算时,i=2,从右边开始编码。str=10100,长度len=5,=3,用=2位表示-1,得到=10,更新str=10。计算时,i=3,从左边开始编码。str=10,长度len=2,=1,用=1位表示-1=0,得到=0。因此bd=||||=1010100。获得图像块编码结果bc=0||bn||bd=01111010100,标志符号s=1。
[0096]
对于上述图9,s=4,na=3,n0=2,n1=14,计算获得z=min{n0,n1}=n0=2。可见z=n0≤na,是可压缩类型的块,且标志符号s为0,由z=2可知bn=110,bd=||。计算时,i=1,从左边开始编码。str=1111111101111011,长度len=16,=9,用=4位表示,得到;更新str=1111011。计算时,i=2,从右边开始编码。str=1111011,长度len=7,=3,用=3位表示-1,得到=010。因此bd=||=1000010,获得图像块编码结果bc=0||bn||bd=01101000010,标志符号s=0。
[0097]
对于本实施例中的图像解压方法,在进行待解码图像块的解码时,针对图像块编码结果bc中的第一个比特确定待解码图像块的类型,如果是不可压缩的块,即可以直接解码并按照块的光栅扫描方式放回块中。如果是可压缩的块,则初始化一个初始解码字符串用于解码,在解码出个目标解码符号的位置之后无损的恢复并获得对应的目标解码字符串,然后按照光栅扫描的方式放回。
[0098]
具体的,对于上述图8的编码结果进行解码时,恢复条件:已知与块大小对应的s=4,对应阈值na=3,图像块编码结果bc=01111010100,符号s=1。在解码时根据bc[0]=0可知是可压缩类型的块,则初始化初始解码字符串=0000000000000000。解码bn时,从bc[2]开始向右遍历,连续1的个数(包括bc[2])是4,所以=min{4,na}=3,更新bc=1010100(即待解码字符串)。由=3可知,解码更新后的bc可以获得3个位置,即、、。具体的,初始化rl=1,rh=s
×
s=16。
[0099]
计算时,j=1,rl=1,rh=16;=rh-rl+1=16; =4;bc=1010100,所以=bc[1:]=1010,更新bc=bc[+1:end]=100;将转为十进制得到=10;因为j=1是奇数,更新=rl+=11,更新rl=+1=12,设置 [11]=1,得到=0000000000100000。
[0100]
计算时,j=2,rl=12,rh=16;=rh-rl+1=5; =2;bc=100,所以=bc[1:]=10,更新bc=bc[+1:end]=0;将转为十进制得到=2;因为j=2是偶数,更新=rh-=14,更新rh=-1=13,设置 [14]=1,得到=0000000000100100。
[0101]
计算时,j=3,rl=12,rh=13;=rh-rl+1=2; =1;bc=0,所以=bc[1:]=0,将转为十进制得到=0;因为j=3是奇数,更新=rl+=12,更新rl=+1=13,设置 [12]=1,得到=0000000000110100。将最终的按照光栅扫描的方式还原即可以完成二进制块的恢复。
[0102]
如此,本实施例中根据二进制块中0和1的个数,确定块类型;通过对块分类编码来实现高效压缩。当对8位灰度图像的8个位面直接进行压缩时,可以实现比游程码、算术压缩更好的压缩率;并且此编码方法也可以配合预测器,对图像的预测误差的各位面进行分块压缩,也可以实现很好的压缩效果。需要说明的是,配合预测器之后,压缩后所占空间会更小,因为预测误差大多趋于0,位面中块里都是0的概率会更大,则总的编码结果会更短,从而有利于进一步提高压缩率。
[0103]
应理解,上述实施例中各步骤的序号大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0104]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述系统的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0105]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0106]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0107]
在本发明所提供的实施例中,应该理解到,所揭露的系统/智能终端和方法,可以通过其它的方式实现。例如,以上所描述的系统/智能终端实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以由另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
[0108]
上述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或
使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质可以包括:能够携带上述计算机程序代码的任何实体或系统、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
[0109]
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不是相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1