基于最大码字的哈夫曼编码图像的解码方法、装置及设备制造方法及图纸

技术编号:36589271 阅读:11 留言:0更新日期:2023-02-04 17:54
本发明专利技术提供了一种基于最大码字的哈夫曼编码图像的解码方法、装置及设备,通过判断数据缓冲区内的当前组待解码数据是否为多义字,若否,则将所述当前组待解码数据与每个最大扩充码字值依次比较,如果所述当前组待解码数据小于等于第一最大扩充码字值,则在映射关系中查找与所述第一最大扩充码字值对应的第一真实码长,从所述当前组待解码数据中读取长度为所述第一真实码长的比特数据作为第一哈夫曼码字。本申请实施例首先对待解码数据进行区分,确定为不是多义字后,再确定当前组待解码数据的真实码长,减少了解码过程中的无效比较次数,提高了解码效率。提高了解码效率。提高了解码效率。

【技术实现步骤摘要】
基于最大码字的哈夫曼编码图像的解码方法、装置及设备


[0001]本专利技术涉及图像处理领域,尤其是一种基于最大码字的哈夫曼编码图像的解码方法、装置及设备。

技术介绍

[0002]在JPEG格式图像解码的过程中,关键一步是哈夫曼(Huffman)解码,其决定了图像解码效率。哈夫曼编码为可变字长编码,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,若字符出现的概率越高,则对应的哈夫曼编码长度越短。在哈夫曼解码的过程中,由于不知道实际码长,因此通常采用逐比特读取待解码数据的方式解码(以下简称逐比特解码),即每次读取待解码数据的一位比特后,加上前面已经读取的x比特B1B2…
B
x
作为一个整体形成B1B2…
B
x
B
x+1
,然后在哈夫曼编码表中查找与B1B2…
B
x
B
x+1
相同的码字,如果找到了,则该B1B2…
B
x
B
x+1
即为待解码数据的实际码字,x+1即为待解码数据的码长;如果没找到,则继续读取第x+2比特B
X+2
,加上前面已经读取的x比特B1B2…
B
x B
x+1
作为一个整体形成B1B2…
B
x
B
x+1
B
x+2
,然后继续在哈夫曼编码表中查找与B1B2…
B
x
B
x+1
Br/>x+2
相同的码字。通常每一个码长对应多个码字(例如码长为2的码字有00和01),为了实现解码,如果从码长小的码字逐一与待解码数据对应比特位数进行比较,解码效率较低。
[0003]为了提高解码效率,现有技术提出了这样的技术方案:将固定长度的待解码数据分别与每个码长对应的最小码字扩充值比较,当所述待解码码字小于所述每个码长中任意一个码长对应的最小码字扩充值时,确定所述待解码码字的有效码长,根据所述有效码长,从码长与解码码字的对应关系中查找所述有效码长对应的解码码字,实现解码的方案,然而这种方案的效率仍然有提高的空间。

技术实现思路

[0004]基于上述现状,本专利技术的主要目的在于提供哈夫曼编码图像的解码方法、装置及设备,首先对待解码数据进行区分,确定为不是多义字后,再确定当前组待解码数据的真实码长,减少了解码过程中的无效比较次数,提高了解码效率。
[0005]为实现上述目的,本专利技术采用的技术方案如下:
[0006]一种基于最大码字的哈夫曼编码图像方法,包括如下步骤:S100,将所有码长不大于设定长度的最大哈夫曼码字分别右侧填1至设定长度后得到多个最大扩充码字值,建立每个最大扩充码字值与对应的真实码长的映射关系;在数据缓冲区内缓冲多组待解码数据,其中,每组待解码数据的长度为所述设定长度,判断所述数据缓冲区内的当前组待解码数据是否为多义字,若否则执行S200,若是则执行S300;S200,将所述当前组待解码数据依次与所述多个最大扩充码字值中的一个进行比较,如果所述当前组待解码数据小于等于某一最大扩充码字值则停止比较,将所述某一最大扩充码字值作为第一最大扩充码字值,并在所述映射关系中查找与所述第一最大扩充码字值对应的第一真实码长,从所述当前组待解码数据中读取长度为所述第一真实码长的比特数据作为第一哈夫曼码字;S300,根据所
述多义字的真实含义以不同于S200的方式进行解码。
[0007]优选地,所述S300包括,判断下一组待解码数据是否为十六进制数值00;若是,则判断所述多义字的真实含义为所述哈夫曼码字的组成部分,并从所述当前组待解码数据和下下组待解码数据组成的待解码数据中第K位比特开始逐比特解码;其中,K等于所述设定长度加1;若否,则判断所述多义字的真实含义为标记码的组成部分,并将所述多义字与所述下一组待解码数据组成标记码,根据所述标记码的真实含义解码。
[0008]优选地,在所述S200之后还包括如下步骤:S400,查找所述第一哈夫曼码字对应的解码值,并解析所述解码值获得第一比特长度;S500,从所述数据缓冲区内所述第一哈夫曼码字之后读取所述第一比特长度的比特数据作为所述解码值的量化值数据。
[0009]优选地,在所述S500之后还包括如下步骤:S600,若所述第一哈夫曼码字的真实码长与所述第一比特长度之和不等于所述设定长度的整数倍,则判断所述数据缓冲区内所述第一比特长度的比特数据之后的下一组待解码数据是否为所述多义字,若不是所述多义字,则执行步骤S700;S700,从所述数据缓冲区内以所述当前组待解码数据的第一个比特数据为起点的第(M+N+1)位开始读取所述设定长度的待解码数据组成跨组待解码数据;其中,M为所述第一真实码长,N为所述第一比特长度;将所述跨组待解码数据依次与所述多个最大扩充码字值中的一个进行比较,如果所述跨组待解码数据小于等于某一最大扩充码字值则停止比较,将所述某一最大扩充码字值作为第二最大扩充码字值,并在所述映射关系中查找与所述第二最大扩充码字值对应的第二真实码长,并从所述跨组待解码数据中读取长度为所述第二真实码长的比特数据作为第二哈夫曼码字。
[0010]优选地,在所述S600中,若所述下一组待解码数据为所述多义字,则执行S800;S800,对所述第一比特长度的比特数据与所述下一组待解码数据之间的比特数据,从以所述当前组待解码数据的第一个比特数据为起点的第(M+N+1)位开始逐比特解码。
[0011]优选地,所述映射关系包括:第一子映射关系和第二子映射关系,所述第一子映射关系为所述最大扩充码字值与索引之间的关系,所述第二子映射关系为所述索引与所述真实码长之间的关系,所述在映射关系中查找与所述第一最大扩充码字值对应的第一真实码长中包括:S210,在所述第一子映射关系中查找所述当前组待解码数据对应的第一最大扩充码字值的索引;S220,根据所述索引,在所述第二子映射关系中查找所述当前组待解码数据的对应的第一真实码长。
[0012]优选地,所述S400中,通过如下步骤查找所述第一哈夫曼码字对应的解码值:S410,根据所述第一真实码长确定第一地址,所述第一地址为码长等于所述第一真实码长的最小哈夫曼码字在哈夫曼编码表中的地址,所述哈夫曼编码表用于存储所述哈夫曼码字对应的解码值;S420,计算所述第一哈夫曼码字与所述最小哈夫曼码字的差值作为地址偏移值;S430,以所述第一地址为基准偏移所述地址偏移值确定第二地址,读取所述第二地址中数值作为所述第一哈夫曼码字的解码值。
[0013]优选地,在所述S200中,若所述当前组待解码数据大于任一最大扩充码字值,则从所述当前组待解码数据和所述下一组待解码数据组成的待解码数据中第K位比特开始逐比特解码,其中,K等于所述设定长度加1。
[0014]本专利技术还提供了一种基于最大码字的哈夫曼编码图像的解码装置,包括:缓冲准备模块,用于将所有码长不大于设定长度的最大哈夫曼码字分别右侧填1至本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于最大码字的哈夫曼编码图像的解码方法,其特征在于,包括如下步骤:S100,将所有码长不大于设定长度的最大哈夫曼码字分别右侧填1至设定长度后得到多个最大扩充码字值,建立每个最大扩充码字值与对应的真实码长的映射关系;在数据缓冲区内缓冲多组待解码数据,其中,每组待解码数据的长度为所述设定长度,判断所述数据缓冲区内的当前组待解码数据是否为多义字,若否则执行S200,若是则执行S300;S200,将所述当前组待解码数据依次与所述多个最大扩充码字值中的一个进行比较,如果所述当前组待解码数据小于等于某一最大扩充码字值则停止比较,将所述某一最大扩充码字值作为第一最大扩充码字值,并在所述映射关系中查找与所述第一最大扩充码字值对应的第一真实码长,从所述当前组待解码数据中读取长度为所述第一真实码长的比特数据作为第一哈夫曼码字;S300,根据所述多义字的真实含义以不同于S200的方式进行解码。2.根据权利要求1所述的解码方法,其特征在于,所述S300包括,判断下一组待解码数据是否为十六进制数值00;若是,则判断所述多义字的真实含义为所述哈夫曼码字的组成部分,并从所述当前组待解码数据和下下组待解码数据组成的待解码数据中第K位比特开始逐比特解码;其中,K等于所述设定长度加1;若否,则判断所述多义字的真实含义为标记码的组成部分,并将所述多义字与所述下一组待解码数据组成标记码,根据所述标记码的真实含义解码。3.根据权利要求1所述的解码方法,其特征在于,在所述S200之后还包括如下步骤:S400,查找所述第一哈夫曼码字对应的解码值,并解析所述解码值获得第一比特长度;S500,从所述数据缓冲区内所述第一哈夫曼码字之后读取所述第一比特长度的比特数据作为所述解码值的量化值数据。4.根据权利要求3所述的解码方法,其特征在于,在所述S500之后还包括如下步骤:S600,若所述第一哈夫曼码字的真实码长与所述第一比特长度之和不等于所述设定长度的整数倍,则判断所述数据缓冲区内所述第一比特长度的比特数据之后的下一组待解码数据是否为所述多义字,若不是所述多义字,则执行步骤S700;S700,从所述数据缓冲区内以所述当前组待解码数据的第一个比特数据为起点的第(M+N+1)位开始读取所述设定长度的待解码数据组成跨组待解码数据;其中,M为所述第一真实码长,N为所述第一比特长度;将所述跨组待解码数据依次与所述多个最大扩充码字值中的一个进行比较,如果所述跨组待解码数据小于等于某一最大扩充码字值则停止比较,将所述某一最大扩充码字值作为第二最大扩充码字值,并在所述映射关系中查找与所述第二最大扩充码字值对应的第二真实码长,并从所述跨组待解码数据中读取长度为所述第二真实码长的比特数据作为第二哈夫曼码字。5.根据权利要求4所述的解码方法,其特征在于,在所述S600中,若所述下一组待解码数据为所述多义字,则执行S800;S800,对所述第一比特长度的比特数据与所述下一组待解码数据之间的比特数据,从以所述当前组待解码数据的第一个比特数据为起点的第(M+N+1)位开始逐比特解码。6.根据权利要求1所述的解码方法,其特征在于,所述映射关系包括:第一子映射关系
和第二子映射关系,所述第一子映射关系为所述最大扩充码字值与索引之间的关系,所述第二子映射关系为所述索引与所述真实码长之间的关系,所述在映射关系中查找与所述第一最大扩充码字值对应的第一真实码长中包括:S210,在所述第一子映射关系中查找所述当前组待解码数据对应的第一最大扩充码字值的...

【专利技术属性】
技术研发人员:王桂宾
申请(专利权)人:珠海市杰理科技股份有限公司
类型:发明
国别省市:

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

1