CN116567238A - 编解码方法、装置、电子设备及存储介质 - Google Patents

编解码方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116567238A
CN116567238A CN202210101321.5A CN202210101321A CN116567238A CN 116567238 A CN116567238 A CN 116567238A CN 202210101321 A CN202210101321 A CN 202210101321A CN 116567238 A CN116567238 A CN 116567238A
Authority
CN
China
Prior art keywords
bit stream
binary bit
data
encoded
decoded
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210101321.5A
Other languages
English (en)
Inventor
王立传
张园
杨明川
范叔炬
王泽琨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Telecom Corp Ltd
Original Assignee
China Telecom Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Telecom Corp Ltd filed Critical China Telecom Corp Ltd
Priority to CN202210101321.5A priority Critical patent/CN116567238A/zh
Publication of CN116567238A publication Critical patent/CN116567238A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本公开提供了一种编解码方法、装置、电子设备及存储介质,涉及数据处理技术领域。该方法包括:根据待编码数据的最大值生成配置数据集;根据待编码数据与所述配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,得到第一二进制比特流和已编码数据base;根据base计算待编码数据的余数bias,对bias进行二值化,得到第二二进制比特流;依次输出第一二进制比特流和第二二进制比特流,以得到待编码数据对应的二进制比特流。本公开提供的一种编解码方法、装置、电子设备及存储介质,能够得到更短的二进制比特流,更多的MPS符号占比,提高压缩比,编码方式更简单。

Description

编解码方法、装置、电子设备及存储介质
技术领域
本公开涉及数据处理技术领域,尤其涉及一种编解码方法、装置、电子设备及计算机可读存储介质。
背景技术
熵编码属于无损编码方法,哈夫曼编码属于熵编码的一种,但是需要保存码表,无法自适应数据的不同分布。基于上下文自适应的二进制算术编码可以较好的解决这个问题,被诸多标准如H.264采用。上下文自适应的二进制算术编码有三个关键部分,其一为数据的二值化,其二为上下文建模,其三为算术编解码,其中,数据的二值化是算术编码系统压缩效率的关键。
数据二值化是将待编码数据转换成0、1值串的表示形式,数据二值化是图像处理领域常用的数据处理和存储方法,如WebP图像编码格式中,采用二进制算术编码对最终的数据进行编码,能够减少数据中的冗余信息,需要将量化后的宏块数据通过二值化方法转换为0、1串的表示形式。
通常的,二值化的方式包括一元码(Unary)、截断一元码(Truncated Unary,TU)、k阶指数哥伦布编码(kth order Exp-Golomb,EGk)、定长编码(Fixed-Length,FL)等。在相关技术中,常规的二进制算术编码仅有MPS(Most Probability Symbol,出现概率高的符号)、LPS(Low Probality Symbol,出现概率低的符号)两种符号,而编码/解码时,必须明确每个符号处于何种语义中,明确接下来该如何编码/解码,因此必须常常利用某个符号的反转来表达阶段编码结束,也因此虽然一元码,指数哥伦布码存在更长的符号串。
然而,在多数情况下,低值出现的频度比高值出现的频度更高,即,在系统中1相对于2概率分布更大,而现有的k阶指数哥伦布编码,MPS符号占比少,MPS符号分配未达到最优,编码效率低。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开提供一种编解码方法、装置、电子设备及存储介质,至少在一定程度上相关技术中提供的二值化方式编码效率不高的技术问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一个方面,提供了一种编码方法,包括:
根据待编码数据的最大值生成配置数据集;
根据待编码数据与所述配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,输出第一二进制比特流;
对待编码数据的余数进行二值化,输出第二二进制比特流,以得到待编码数据对应的二进制比特流。
在一些实施例中,在所述输出第一二进制比特流之前,所述方法还包括:
若所述待编码数据为0,则判零码输出0,二进制算术编码结束;若所述待编码数据非0,则判零码输出1。
在一些实施例中,所述第一二进制比特流采用最大值为待编码数据的最大值与2的差值的截断一元码表示。
在一些实施例中,当待编码数据的最大值未知时,在所述根据待编码数据的最大值生成配置数据集之前,所述方法还包括:
计算所述待编码数据的最大值,所述第一二进制比特流采用固定比特长度编码待编码数据的最大值。
在一些实施例中,所述配置数据集为以2为起点、以2为均匀间隔、以取偶后的待编码数据的最大值与2的差值为最大值的数据集。
在一些实施例中,当已知待编码数据的最大值小于或者等于4时,生成配置数据集为{2};
所述根据待编码数据与所述配置数据集内元素之间的大小关系,对待编码数据进行二值化,输出第一二进制比特流,包括:
若所述待编码数据与1的差值大于或者等于2,则第一二进制比特流输出0,且更新已编码数据base为2;
若所述待编码数据与1的差值小于2,则第一二进制比特流输出1,且更新已编码数据base为0。
在一些实施例中,当已知所述待编码数据的最大值大于4时,生成配置数据集为{2,4,…max-2},其中,max为转换为偶数后的待编码数据的最大值;
所述比较待编码数据与所述配置数据集内元素的大小关系,根据比较结果对待编码数据进行二进制算术编码,包括:
逐项判断所述待编码数据与1的差值是否大于或者等于所述配置数据集中的某一元素的值;
若所述差值大于或者等于所述配置数据集中的该元素的值,则输出MPS符号,并更新已编码数据base为该元素的值;
若所述差值小于所述配置数据集中的该元素的值,则输出LPS符号,或者,与所述配置数据集中的所有元素比较完毕,均输出MPS符号,则编码结束,输出第一二进制比特流。
在一些实施例中,所述对待编码数据的余数进行二值化,输出第二二进制比特流,包括:
根据已编码数据base计算待编码数据的余数bias,bias为待编码数据、base和1之间的差值;
第二二进制比特流输出bias的反码。
在一些实施例中,所述方法还包括:
根据预设的对应关系表查找第一二进制比特流和第二二进制比特流中的各比特位匹配的上下文序号,根据每个比特位选择用于编码每个比特位的值的上下文模型,对比特位的值进行二进制算术编码。
根据本公开的另一个方面,还提供了一种编码装置,包括:
第一生成模块,用于根据待编码数据的最大值生成配置数据集;
第一编码模块,用于根据待编码数据与所述配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,输出第一二进制比特流;
第二编码模块,用于对待编码数据的余数进行二值化,输出第二二进制比特流,以得到待编码数据对应的二进制比特流。
根据本公开的另一个方面,还提供了一种解码方法,包括:
生成与编码端相同的配置数据集;
根据待解码的二进制比特流得到第一二进制比特流,第一二进制比特流采用截断一元码表示,并根据第一二进制比特流与所述配置数据集内元素之间的对应关系,对第一二进制比特流进行解码,得到与第一二进制比特流对应的已编码数据;
根据待解码的二进制比特流得到第二二进制比特流,对第二二进制比特流进行解码,得到与第二二进制比特流对应的待编码数据的余数,根据已编码数据和待编码数据的余数计算待解码的二进制比特流对应的解码后数据,以对待解码的二进制比特流进行二进制算术解码。
在一些实施例中,在所述根据待解码的二进制比特流得到第一二进制比特流之前,所述方法还包括:
根据待解码的二进制比特流得到判零码,若判零码为0,则解码后数据为0,二进制算术解码结束;若判零码为1,则解码后数据非0。
在一些实施例中,当解码后数据的最大值未知时,采用固定比特长度对解码后数据的最大值进行解码。
在一些实施例中,当已知解码后数据的最大值小于或者等于4时,生成配置数据集为{2};
所述根据第一二进制比特流与所述配置数据集内元素之间的对应关系,对第一二进制比特流进行解码,包括:
若所述第一二进制比特流为0,则更新已编码数据base为2;
若所述第一二进制比特流为1,则更新已编码数据base为0。
在一些实施例中,当已知解码后数据的最大值大于4时,生成配置数据集为{2,4,…max-2},其中,max为转换为偶数后的解码后数据的最大值;
所述根据第一二进制比特流与所述配置数据集内元素之间的对应关系,对第一二进制比特流进行解码,包括:
逐项判断所述第一二进制比特流中的比特位是否为MPS符号;
若为MPS符号,则输出已编码数据base为与所述MPS符号对应的配置数据集中的元素的值;
若第一二进制比特流中的比特位为LPS符号,或者,第一二进制比特流的比特位均为MPS符号时,则第一二进制比特流解码结束。
在一些实施例中,所述对第二二进制比特流进行解码,得到与第二二进制比特流对应的编码数据的余数,包括:
将第二二进制比特流取反码,得到解码后数据的余数bias;
解码后数据为已编码数据base、解码后数据的余数bias、1之和。
在一些实施例中,所述方法还包括:
根据上下文模型确定与待解码数据对应的第一二进制比特流和第二二进制比特流的比特位匹配的上下文序号,根据预设的对应关系表查找与所述上下文序号对应的第一二进制比特流和第二二进制比特流的比特位的值,得到待解码数据对应的二进制比特流。
根据本公开的另一个方面,还提供了一种解码装置,包括:
第二生成模块,用于生成与编码端相同的配置数据集;
第一解码模块,用于根据待解码的二进制比特流得到第一二进制比特流,第一二进制比特流采用截断一元码表示,并根据第一二进制比特流与所述配置数据集内元素之间的对应关系,对第一二进制比特流进行解码,得到与第一二进制比特流对应的已编码数据;
第二解码模块,用于根据待解码的二进制比特流得到第二二进制比特流,对第二二进制比特流进行解码,得到与第二二进制比特流对应的待编码数据的余数,根据已编码数据和待编码数据的余数计算待解码的二进制比特流对应的解码后数据,以对待解码的二进制比特流进行二进制算术解码。
根据本公开的另一个方面,还提供了一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的编码方法,或者,执行上述任意一项所述的解码方法。
根据本公开的另一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的编码方法,或者实现上述任意一项所述的解码方法。
本公开的实施例所提供的编解码方法、装置、电子设备及存储介质,采用两级编码方式,能够得到更短的二进制比特流,更多的MPS符号占比,提高压缩比,编码方式更简单。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本公开实施例中一种编码方法流程图;
图2示出本公开实施例中待编码数据的最大值小于或者等于4时编码方法流程图;
图3示出本公开实施例中待编码数据的最大值大于4时编码方法流程图;
图4示出本公开实施例中一种编码装置示意图;
图5示出本公开实施例中一种解码方法流程图;
图6示出本公开实施例中一种解码装置示意图;
图7示出本公开实施例中一种电子设备的结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
为便于理解,在介绍本公开实施例之前,首先对本公开实施例中涉及到的几个名词进行解释如下:
EBCOT:全称为“Embedded Block Coding withOptimized Truncation”,译为“最佳截断嵌入码块编码”;
熵编码:无损编码的一种方式,把指定的数据(语法元素)转换为bit流的过程,可以通过该bit流完全恢复原始数据;
算术编码:将一串符号编码成一个算术数字的过程;
算术解码:将一个算术数字还原成一串符号的过程;
二进制算术编解码:0/1二进制串符号的算术编解码过程;
MPS符号:出现概率较高的符号,可以是0,也可以是1,本公开实施例中以1指代MPS符号;
LPS符号:出现概率较低的符号,跟MPS符号对应,本公开实施例中以0指代LPS符号;
二值化:是将数据(语法元素)转换为对应的二进制比特流的过程,是基于上下文的二进制算术编码的必不可少的过程;
上下文建模:算术编/解码的过程依赖于符号出现的概率。一般以ctxId表达概率模型的序号,每个序号对应一个概率分布。编码/解码特定二进制符号时,需明确该符号所属的概率模型;特定的二进制符号和对应的概率模型之间的关系确定称之为上下文建模;
Bypass编码:等概率符号编码,以固定比特数输出对应的符号串,一种不经过二进制算术编解码的编码方式;
Run level编码(即游程编码):在一个非零系数前的连续为零的系数的数目被称为”run”,而非零系数的绝对值被称”level”;
ZigZag扫描:即Z字形扫描,按照一定的路径(Z字形)扫描,将量化后的系数从二维变换到一维。经过DCT变换和量化处理后,矩阵的右下角部分基本上都已变为零值,非零值基本集中在矩阵的左上角部分,经过ZigZag扫描后,可将二维的矩阵变换为一个一维的串,该串靠前的部分主要为非零值,靠后的部分则主要是零值;
把一个具体的数值转换为对应的二进制比特流的几种典型方式如下,一般的有一元码,截断一元码,k阶指数哥伦布码等。
一元码:1的个数表示数值,0表示编码结束。如表1所示。
表1
数值 一元码
0 0
1 10
2 110
3 1110
4 11110
5 111110
6 1111110
7 11111110
8 111111110
截断一元码:和一元码类似,但存在已知的最大值max,如表2所示,以最大值max=8的截断一元码为例,小于8的情况以0结束,8本身以1结束,解码端相对应,连续读出8个1,解码结束。
表2
数值 截断一元码
0 0
1 10
2 110
3 1110
4 11110
5 111110
6 1111110
7 11111110
8 11111111
k阶指数哥伦布码:是一种可变长前缀码,无需事先建立和存储码表,可根据信源的PDF函数灵活调整级数k,用来表示非负整数的k阶指数哥伦布码可用如下步骤生成:将数字以二进制形式写出,去掉最低的k个比特,之后加1;计算留下的比特数,将此数减1,即需要增加的前导零个数;将第一步中去掉的最低k个比特位补回比特串尾部。如表3所示,为最大值max=8的0阶指数哥伦布码,指数哥伦布以1表示语义转折,前面0的个数表示后面还有多少个固定长度的符号串,编码完这个固定长度的符号串后,本次编码结束。
表3
数值 0阶指数哥伦布码
0 0
1 010
2 011
3 00100
4 00101
5 00110
6 00111
7 0001000
8 0001001
虽然一元码、指数哥伦布码存在更长的符号串,但现阶段,仍为二进制算术编码的主要依赖手段。通常的,MPS符号占比越高,编码效率越高,低值的出现频率比高值的出现频率更高,而指数哥伦布码的MPS符号占比比,造成编码效率低的问题。
基于此,本公开提供的方案,通过base编码和bias编码两级编码的形式对待编码数据进行处理,得到的二进制比特流的长度更短,且MPS符号在低值时更多,从而大大提升编码效率。
本公开提供的二进制比特流方法,适应于图像/视频压缩、机器视觉编码等用于将数据进行二值化处理的领域,属于熵编码。
本公开实施例中提供的编码方法,可以由任意具备计算处理能力的电子设备执行。该电子设备可以是终端设备,也可以是服务器。其中,终端设备可以包括但不限于智能手机、平板电脑、膝上型便携计算机、台式计算机、可穿戴设备、增强现实设备、虚拟现实设备等;服务器可以是提供各种服务的服务器,例如对用户利用终端设备所进行操作的装置提供支持的后台管理服务器。后台管理服务器可以对接收到的请求等数据进行分析等处理,并将处理结果反馈给终端设备。
可选地,终端设备中安装的应用程序的客户端是相同的,或基于不同操作系统的同一类型应用程序的客户端。基于终端平台的不同,该应用程序的客户端的具体形态也可以不同,比如,该应用程序客户端可以是手机客户端、PC客户端等。
可选地,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本公开在此不做限制。
下面结合附图及实施例对本公开的具体实施方式进行详细说明。
图1示出本公开实施例中一种编码方法流程图,如图1所示,该方法包括如下步骤:
S102,根据待编码数据的最大值生成配置数据集。
需要说明的是,上述S102中的待编码数据可以是对图像或视频等数据,也可以是对图像或视频经卷积神经网络提取的特征数据;还可以是其他领域中需要进行二进制算术编码的数据信息。
需要说明的是,上述S104中的配置数据集为单向递增的数据集,配置数据集的首个元素为2,且相邻元素之间的差值为2,元素的最大值为转换为偶数后的待编码数据的最大值与2的差值,当待编码数据集的最大值为奇数时,如3,将该最大值取偶,得到值为4,生成的配置数据集为{2};若待编码数据的最大值为偶数,则无需执行取偶,直接得到配置数据集的最大值即可。
S104、根据待编码数据与所述配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,得到第一二进制比特流和已编码数据base;
本实施例中,采用最大值为待编码数据的最大值与2的差值的截断一元码对待编码数据进行二值化,并输出经过配置数据集比较后的已编码数据base,采用截断一元码编码方式,能够获得更好的效果。
需要说明的是,base为满足预设的编码条件时配置数据集中的元素的最大值。如,待编码数据大于配置数据集中的元素4,则编码时,将配置数据集中的元素4赋值至base,通过逐项比较待编码数据与配置数据集中各元素之间的大小关系,即可得到采用最大值为待编码数据的最大值和2之间的差值的截断一元码,从而输出第一二进制比特流。
S106、根据base计算待编码数据的余数bias,对bias进行二值化,得到第二二进制比特流;
具体的,待编码数据的余数bias为待编码数据、base值和1之间的差值,根据base计算得到bias后,取bias的反码输出第二二进制比特流,第二二进制比特流的长度为1bit。
S108、依次输出第一二进制比特流和第二二进制比特流,以得到待编码数据对应的二进制比特流。
本公开的实施例所提供的编码方法,采用两级编码方式,能够得到更短的二进制比特流,更多的MPS符号占比,提高压缩比,编码方式更简单。
在一些实施例中,在所述根据待编码数据与所述配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,得到第一二进制比特流和已编码数据base之前,所述方法还包括:
判断所述待编码数据是否为0,
若是,则二进制比特流输出0,编码结束;
若否,则二进制比特流的首位比特位输出1。
需要注意的是,在解码过程中,若解出二进制比特流为0,则解码结束,二进制比特流对应的原数为0;若解出二进制比特流的首位比特位(0flag)为1,则表明原数非零,则继续对第一二进制比特流和第二二进制比特流进行相应的逆二值化处理。
需要注意的是,在对待编码数据进行编码时,依次进行0flag编码、基于配置数据集的截断一元码的已编码数据base编码和待编码数据的余数bias编码,完成0flag编码、第一二进制比特流和第二二进制比特流后输出的二进制字符串即为得到的二进制比特流;在对二进制比特流解码过程中,依次对0flag、第一二进制比特流和第二二进制比特流进行解码即可。
在一些实施例中,当已知待编码数据的最大值小于或者等于4时,生成配置数据集为{2};
根据待编码数据与配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,得到第一二进制比特流和已编码数据base,包括:
若待编码数据与1的差值大于或者等于2,则第一二进制比特流输出0,且更新base为2;
若待编码数据与1的差值小于2,则第一二进制比特流输出1,且更新base为0。
具体的,图2示出本公开实施例中当待编码数据的最大值小于或者等于4时编码方法的流程图,如图2所示,该方法包括以下步骤:
S202、生成配置数据集{2};
S204、设置base=0;
S206、判断待处理数据中的元素值x是否为0;若满足,则执行步骤S208,若不满足,则执行步骤S210;
S208、二进制比特流为0,编码结束;
S210、0flag输出1,继续对非零待编码数据编码;
S212、判断元素值x-1的差值是否大于或者等于2;若满足,则执行步骤S214;若不满足,则执行步骤S216;
S214、第一二进制比特流输出0,更新base=2;
S216、第一二进制比特流输出1;
S218、计算bias=x-1-base,取bias反码输出第二二进制比特流;
S220、依次输出0flag、第一二进制比特流、第二二进制比特流得到待编码数据对应的二进制比特流。
表4给出了x=4经过两级编码后输出的二进制比特流,第一位字符为判零码,第二位字符为第一二进制比特流,第三位字符为第二二进制比特流。
表4
从表4可以看出,与现有技术中的一元码、截断一元码和0阶指数哥伦布码相比,本公开采用的两级编码形式,第一二进制比特流为基于配置数据集的截断一元码,配置数据集为{2},第一二进制比特流固定1比特,利用反码输出使低值时输出更多MPS符号,故,编码后的二进制比特流的长度更短,且在低值时,二进制比特流具有更多的MPS符号,从而提升数据压缩效率,编码方式更简单。
在本实施例中,当已知所述待编码数据的最大值大于4时,生成配置数据集为{2,4,…max-2},其中,max为转换为偶数后的待编码数据的最大值;
根据待编码数据与配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,得到第一二进制比特流和已编码数据base,包括:
逐项判断待编码数据与1的差值是否大于或者等于配置数据集中的某一元素的值;
若差值大于或者等于配置数据集中的该元素的值,则输出MPS符号,并更新base为该元素的值;
若差值小于配置数据集中的该元素的值,则输出LPS符号,或者,与配置数据集中的所有元素比较完毕,均输出MPS符号,则编码结束,输出第一二进制比特流。
具体的,图3示出本公开实施例中当待编码数据的最大值大于4时编码方法流程图,如图3所示,该方法包括:
S302、生成配置数据集{2,4,…max-2},其中,max为转换为偶数后的待编码数据的最大值,如待编码数据的最大值为8时,配置数据集为{2,4,6},当待编码数据的最大值为6时,配置数据集为{2,4},当待编码数据的最大值为奇数时,如7,首先对奇数最大值取偶,得到取偶后的值为8,则生成的配置数据集为{2,4,6};
S304、设置base=0,n=0;
S306、判断待编码数据中的元素值x是否为0,若为0,则执行步骤S308;若非0,则执行步骤S310;
S308、二进制比特流为0,结束编码;
S310、0flag输出1,继续对非零待编码数据编码;
S312、判断x-1的差值是否大于或者等于配置数据集的第n个元素,若满足,则执行步骤S314;若不满足,则执行步骤S316;
S314、第一二进制比特流的第n个比特位输出1,更新base为第n个元素的值;
S316、第一二进制比特流的第n个比特位输出0;
S318、判断base是否为max-2,或,第一二进制比特流的第n个比特位是否为0,若否,则执行步骤S320;若是,则执行步骤S322;
S320、n=n+1,返回步骤S312;
S322、输出第一二进制比特流;
S324、计算bias=x-1-base,并取bias的反码输出第二二进制比特流;
S326、依次输出0flag、第一二进制比特流、第二二进制比特流。
表5给出了待编码数据的最大值x=6时,经过两级编码后输出的二进制比特流,其中,当数值为1或2时,第一位字符为0flag编码,第二位字符为第一二进制比特流,第三位字符为第二二进制比特流;当数值为3-6时,第一位字符为0flag编码,第二位和第三位字符为第一二进制比特流,第四位字符为第二二进制比特流。
表5
数值 两级编码 一元码 截断一元码 0阶指数哥伦布码
0 0 0 0 0
1 101 10 10 010
2 100 110 110 011
3 1101 1110 1110 00100
4 1100 11110 11110 00101
5 1111 111110 111110 00110
6 1110 1111110 111111 00111
从表5可以看出,与现有技术中的一元码、截断一元码和0阶指数哥伦布码相比,本公开采用的两级级编码形式,第一二进制比特流为基于配置数据集的截断一元码,配置数据集以2为起点、以2为均匀间隔的单向递增数据集,配置数据集的最大值为取偶后的待编码数据的最大值与2的差值,第二二进制比特流固定1比特,利用反码输出使低值时输出更多MPS符号,故,编码后的二进制比特流的长度更短,且在低值时,二进制比特流具有更多的MPS符号,从而提升数据压缩效率,编码方式更简单。
需要说明的是,在对待解码的二进制比特流解码时,分别对判零码、第一二进制比特流和第二二进制比特流进行解码。0flag编码为二进制比特流的首位字符,解出0flag为0时,解码结束,解出判零码为1时,继续解码第一二进制比特流和第二二进制比特流。当解出第一二进制比特流的比特位为0时,第一二进制比特流解码结束,或者,配置数据集中所有元素均已对比完成时,第一二进制比特流解码结束;第二二进制比特流为二进制比特流的末位字符的反码。二进制比特流对应的原值即为解出的base、bias和1之和。
当待编码数据的最大值x=8时,配置数据集为{2,4,6},经过编码后输出的二进制比特流,如表6所示,其中,二进制比特流的首位为0flag,末位比特位为第二二进制比特流,在0flag和第二二进制比特流之间的比特位为第一二进制比特流。
表6
数值 两级编码 截断一元码 0阶指数哥伦布码
0 0 0 0
1 101 10 010
2 100 110 011
3 1101 1110 00100
4 1100 11110 00101
5 11101 111110 00110
6 11100 1111110 00111
7 11111 11111110 0001000
8 11110 11111111 0001001
需要说明的是,在对待解码的二进制比特流解码时,分别对判零码、第一二进制比特流和第二二进制比特流进行解码,0flag编码为二进制比特流的首位比特位;当解出第一二进制比特流的比特位为0时,第一二进制比特流解码结束,或者,配置数据集中所有元素均已对比完成时,第一二进制比特流解码结束;第二二进制比特流为二进制比特流的末位字符的反码,二进制比特流对应的原值即为解出的base、bias和1之和。
从表6可以发现,与截断一元码和0阶指数哥伦布码相比,经过两级编码后输出的二进制比特流的长度更短,且在低值时MPS符号更多,从而提升压缩比。
在本实施例中,当待编码数据的最大值未知时,在所述根据待编码数据的最大值生成配置数据集之前,所述方法还包括:
计算所述待编码数据的最大值,所述第一二进制比特流采用固定比特长度的截断一元码编码待编码数据的最大值。
需要说明的是,当待编码数据的最大值未知时,无法生成配置数据集,首先,需要确定待编码数据中各元素值的最大值,通常的,可采用两两比较确定数据中的最大值。其次,根据计算得到的待编码数据的最大值取偶后生成配置数据集,为了使逆二值化处理过程基于预设的逻辑运算规则进行解码,当待编码数据的最大值未知时,可采用固定比特长度编码计算得到的最大值,如采用固定8bit长度编码最大值,在解码过程中,同样采用8bit长度对最大值进行逆二值化处理,根据解码得到的数据生成配置数据集,进而对每个待解码二进制比特流进行逆二值化处理,以保证二进制算术编解码过程的高效、稳定性。
在本实施例中,当所述待编码数据为正负分布且最大值未知时,在所述根据待编码数据的最大值生成配置数据集之前,所述方法还包括:
将待编码数据转换为正数并取偶,计算转换为正数的待编码数据的最大值;
计算所述待编码数据的最大值,所述第一二进制比特流采用固定比特长度编码待编码数据的最大值。
具体的,当待编码数据x为正负分布且最大值未知时,无法生成配置数据集,首先,需要将待编码数据进行转换,转换方式与k阶指数哥伦布码的转换方式一致,即,当x为负值时,取x=2×abs(x)-1,当x为正值时,x=2×abs(x);进而可确定待编码数据转换后的最大值,通常的,可采用两两比较确定数据中的最大值。其次,根据计算得到的待编码数据的最大值生成配置数据集,为了使逆二值化处理过程基于预设的逻辑运算规则进行解码,当待编码数据的最大值未知时,可采用固定比特长度编码计算得到的最大值,如采用固定8bit长度编码最大值,在解码过程中,同样采用8bit长度进行逆二值化处理,最大值解码完成后,根据解码后的数值生成配置数据集,进而对待解码二进制比特流进行逆二值化处理,以保证二进制算术编解码过程的高效、稳定性。
在一些实施例中,该方法还包括:
根据预设的对应关系表查找第一二进制比特流和第二二进制比特流中的各比特位匹配的上下文序号,根据每个比特位选择用于编码每个比特位的值的上下文模型,对比特位的值进行二进制算术编码。
本实施例的对应关系表中包括待编码的第一二进制比特流和第二二进制比特流中的各比特位和上下文序号之间的对应关系,获取到待编码的第一二进制比特流和第二二进制比特流后,分别查找判零码、第一二进制比特流和第二二进制比特流内各比特位对应的上下文序号,进而根据上下文序号确定各比特位的上下文模型,从而对各比特位的值进行二进制算术编码。
本公开实施例提供的编码方法,通过两级级编码方式,有效缩短二进制比特流的长度,第一二进制比特流基于生成的配置数据集,该配置数据集为以2为起点、以2为均匀间隔、以取偶后的待编码数据的最大值与2的差值为最大值的数据集;第二二进制比特流固定1bit,若低值相对高值概率更高,可利用反码输出更多的MPS符号,从而提升压缩比,同时,在二值化的过程中,可根据场景预先固化设计,即已知待编码数据最大值的情形;也可在运行过程中动态选择,即待编码数据最大值未知的情形,输出更短的二进制比特流,编码方式更简单。
基于同一发明构思,本公开实施例中还提供了一种编码装置,如下面的实施例所述。由于该装置实施例解决问题的原理与上述方法实施例相似,因此该装置实施例的实施可以参见上述方法实施例的实施,重复之处不再赘述。
图4示出本公开实施例中一种编码装置示意图,如图4所示,该装置包括:
第一生成模块401,用于根据待编码数据的最大值生成配置数据集;
第一编码模块402,用于根据待编码数据与所述配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,得到第一二进制比特流和已编码数据base;
第二编码模块403,用于根据base计算待编码数据的余数bias,对bias进行二值化,得到第二二进制比特流;
输出模块404,用于依次输出第一二进制比特流和第二二进制比特流,以得到待编码数据对应的二进制比特流。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述方法实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
具体的,采用最大值为待编码数据的最大值与2的差值的截断一元码对待编码数据进行二值化。
具体的,该装置还包括未显示在附图中的第三编码模块,用于在所述根据待编码数据与所述配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,得到第一二进制比特流和已编码数据base之前,
判断待编码数据是否为0,
若是,则二进制比特流输出0,编码结束;
若否,则二进制比特流的首位比特位输出1。
需要注意的是,该装置还包括未显示在附图中的最大值计算模块,用于当待编码数据的最大值未知时,在所述根据待编码数据的最大值生成配置数据集之前,计算所述待编码数据的最大值;并采用固定比特长度编码待编码数据的最大值。
具体的,配置数据集为单向递增的数据集,配置数据集的首个元素为2,且相邻元素之间的差值为2,元素的最大值为转换为偶数后的待编码数据的最大值与2的差值。
在本实施例中,第一生成模块401,用于当已知待编码数据的最大值小于或者等于4时,生成配置数据集为{2};
第一编码模块402,用于若待编码数据与1的差值大于或者等于2,则第一二进制比特流输出0,且更新base为2;
若待编码数据与1的差值小于2,则第一二进制比特流输出1,且更新base为0。
在本实施例中,第一生成模块401,用于当已知待编码数据的最大值大于4时,生成配置数据集为{2,4,…max-2},其中,max为转换为偶数后的待编码数据的最大值;
第一编码模块402,用于逐项判断待编码数据与1的差值是否大于或者等于配置数据集中的某一元素的值;
若差值大于或者等于配置数据集中的该元素的值,则输出MPS符号,并更新base为该元素的值;
若差值小于所述配置数据集中的该元素的值,则输出LPS符号,或者,与配置数据集中的所有元素比较完毕,均输出MPS符号,则编码结束,输出第一二进制比特流。
需要注意的是,第二编码模块403,用于计算bias为待编码数据、base和1之间的差值;
第二二进制比特流输出bias的反码。
在本实施例中,该装置还包括未显示在附图中的算术编码模块,具体用于根据预设的对应关系表查找第一二进制比特流和第二二进制比特流中的各比特位匹配的上下文序号,根据每个比特位选择用于编码每个比特位的值的上下文模型,对比特位的值进行二进制算术编码。
本公开实施例提供的编码方法、装置,通过两级编码的形式对待编码数据进行处理,得到的二进制比特流的长度更短,且MPS符号在低值时更多,从而大大提升编码效率。
基于同一发明构思,本公开实施例中还提供了一种解码方法,如下面的实施例所述。由于该装置实施例解决问题的原理与上述方法实施例相似,因此该装置实施例的实施可以参见上述方法实施例的实施,重复之处不再赘述。
图5示出本公开实施例中一种解码方法流程图,如图5所示,该方法包括:
S502、生成与编码端相同的配置数据集;
具体的,当解码后数据的最大值未知时,在上述S502生成与编码端相同的配置数据集之前,采用固定比特长度对解码后数据的最大值进行解码,进而生成配置数据集,配置数据集为单向递增的数据集,配置数据集的首个元素为2,且相邻元素之间的差值为2,元素的最大值为转换为偶数后的待编码数据的最大值与2的差值。
S504、根据待解码的二进制比特流得到第一二进制比特流,第一二进制比特流采用截断一元码表示,并根据第一二进制比特流与所述配置数据集内元素之间的对应关系,对第一二进制比特流进行解码,得到与第一二进制比特流对应的已编码数据base;
S506、根据待解码的二进制比特流得到第二二进制比特流,对第二二进制比特流进行解码,得到与第二二进制比特流对应的解码后数据的余数bias;
S508、根据base和bias计算待解码的二进制比特流对应的解码后数据,以对待解码的二进制比特流进行二进制算术解码。
在本实施例中,在根据待解码的二进制比特流得到第一二进制比特流之前,该方法还包括:
根据待解码的二进制比特流得到首位比特位,若首位比特位为0,则解码后数据为0,二进制算术解码结束;若首位比特位为1,则解码后数据非0。
在本实施例中,当已知解码后数据的最大值小于或者等于4时,生成配置数据集为{2};
上述步骤S504中根据第一二进制比特流与配置数据集内元素之间的对应关系,对第一二进制比特流进行解码,包括:
若第一二进制比特流为0,则更新base为2;
若第一二进制比特流为1,则更新base为0。
在本实施例中,当已知解码后数据的最大值大于4时,生成配置数据集为{2,4,…max-2},其中,max为转换为偶数后的解码后数据的最大值;
上述步骤S504中根据第一二进制比特流与配置数据集内元素之间的对应关系,对第一二进制比特流进行解码,包括:
逐项判断第一二进制比特流中的比特位是否为MPS符号;
若为MPS符号,则输出base为与MPS符号对应的配置数据集中的元素的值;
若第一二进制比特流中的比特位为LPS符号,或者,第一二进制比特流的比特位均为MPS符号时,则第一二进制比特流解码结束。
需要注意的是,上述步骤S506中对第二二进制比特流进行解码,得到与第二二进制比特流对应的解码后数据的余数bias,包括:
将第二二进制比特流取反码,得到解码后数据的余数bias;
解码后数据为base、bias、1之和。
在本实施例中,该方法还包括:
根据上下文模型确定与待解码数据对应的第一二进制比特流和第二二进制比特流的比特位匹配的上下文序号,根据预设的对应关系表查找与所述上下文序号对应的第一二进制比特流和第二二进制比特流的比特位的值,得到待解码数据对应的二进制比特流。
基于同一发明构思,本公开实施例中还提供了一种解码装置,如下面的实施例所述。由于该装置实施例解决问题的原理与上述方法实施例相似,因此该装置实施例的实施可以参见上述方法实施例的实施,重复之处不再赘述。
图5示出本公开实施例中一种解码装置示意图,如图5所示,该装置包括:
第二生成模块501,用于生成与编码端相同的配置数据集;
第一解码模块502,用于根据待解码的二进制比特流得到第一二进制比特流,第一二进制比特流采用截断一元码表示,并根据第一二进制比特流与配置数据集内元素之间的对应关系,对第一二进制比特流进行解码,得到与第一二进制比特流对应的已编码数据base;
第二解码模块503,用于根据待解码的二进制比特流得到第二二进制比特流,对第二二进制比特流进行解码,得到与第二二进制比特流对应的解码后数据的余数bias;
计算模块504,用于根据base和bias计算待解码的二进制比特流对应的解码后数据,以对待解码的二进制比特流进行二进制算术解码。
在本实施例中,该装置还包括未显示在附图中的第三解码模块,用于在所述根据待解码的二进制比特流得到第一二进制比特流之前,根据待解码的二进制比特流得到首位比特位,若首位比特位为0,则解码后数据为0,二进制算术解码结束;若首位比特位为1,则解码后数据非0。
具体的,当解码后数据的最大值未知时,在生成与编码端相同的配置数据集之前,采用固定比特长度对解码后数据的最大值进行解码。
在本实施例中,第二生成模块501,用于当已知解码后数据的最大值小于或者等于4时,生成配置数据集为{2};
第一解码模块502,用于若第一二进制比特流为0,则更新base为2;
若第一二进制比特流为1,则更新base为0。
作为一个可选的实施例,第二生成模块502,用于当已知解码后数据的最大值大于4时,生成配置数据集为{2,4,…max-2},其中,max为转换为偶数后的解码后数据的最大值;
第一解码模块502,用于逐项判断所述第一二进制比特流中的比特位是否为MPS符号;
若为MPS符号,则输出base为与该MPS符号对应的配置数据集中的元素的值;
若第一二进制比特流中的比特位为LPS符号,或者,第一二进制比特流的比特位均为MPS符号时,则第一二进制比特流解码结束。
在本实施例中,第二解码模块503,用于将第二二进制比特流取反码,得到解码后数据的余数bias;
解码后数据为base、bias、1之和。
需要说明的是,该装置还包括未显示在附图中的算术解码模块,用于根据上下文模型确定与待解码数据对应的第一二进制比特流和第二二进制比特流的比特位匹配的上下文序号,根据预设的对应关系表查找与所述上下文序号对应的第一二进制比特流和第二二进制比特流的比特位的值,得到待解码数据对应的二进制比特流。
下面列举几个具体的例子:
实施例1:假设已知待编码数据的最大值为4。
编码端:
第1步:生成配置数据集
生成配置数据集bd_table={2};
第2步:0flag及第一二进制比特流编码
假设x=3;
令base=0,
因x>0,故,0flag为1,判零码输出1;
另:y=x-1=2;
因y≥2成立,则第一二进制比特流输出0,且更新base为2;
第3步:第二二进制比特流编码
bias=y-base=2-2=0;
第二二进制比特流取bias反码,输出1。
编码结束,最后输出3对应的二进制比特流为101。
解码端:
第1步:从二进制比特流101中,解码0flag为1,表明待解码二进制比特流的原值非零;
第2步:设base=0,解码得到第一二进制比特流的第1位比特位为0,表明待解码数据≥2,更新base=2;
第3步:从二进制比特流101中,得到第二二进制比特流为1,取反码,得到bias=0。
则待解码二进制比特流对应的解码后数值为:1+2+0=3。
实施例2:假设已知待编码数据的最大值为8。
编码端:
第1步:生成配置数据集,配置数据集的最大值为8-2=6
生成配置数据集bd_table={2,4,6};
第2步:0flag及第一二进制比特流编码
假设x=8;
令base=0,
因x>0,故,0flag为1,0flag输出1;
另:y=x-1=7;
y≥2判断成立,则第一二进制比特流的第1个比特位输出1,且更新base为2;
y≥4判断成立,则第一二进制比特流的第2个比特位输出1,且更新base为4;
y≥6判断成立,则第一二进制比特流的第3个比特位输出1,且更新base为6;
第3步:第二二进制比特流编码;
bias=y-base=7-6=1;
第二二进制比特流取bias反码,输出0。
编码结束,最后输出8对应的二进制比特流为11110。
解码端:
第1步:从二进制比特流11110中,解码0flag为1,说明待解码二进制比特流的原值非零;
第2步:设base=0,
解码得到第一二进制比特流的第1个比特位为1,说明解码后数据>=2,更新base=2,因未碰到0,也未到达最大的3位,继续解码第一二进制比特流的第2个比特位;
解码得到第一二进制比特流的第2个比特位为1,说明解码后数据>=4,更新base=4,因未碰到0,也未达到最大的3位,继续解码第一二进制比特流的第3个比特位;
解码得到第一二进制比特流的第3个比特位为1,说明解码后数据>=6,更新base=6,解码到达3位,第一二进制比特流解码结束。
第3步:第二二进制比特流解码
从二进制比特流11110中,得到第二二进制比特流为0,取反码,得到bias=1。
则待解码二进制比特流对应的解码后数据为6+1+1=8。
实施例3:假设待编码数据的最大值未知
编码端:
第1步:求解解码后数据的最大值max_x,当该最大值为奇数时,对该最大值max_x取偶,另max_x=max_x+1;
第2步:采用固定比特长度编码求解得到的最大值,如8bit长度;
第3步:生成配置数据集,配置数据集内元素的最大值为max_x-2
生成配置数据集bd_table={2,4,…max_x-2};
第4步:对待编码数据中的每个元素x进行二进制算术编码,此编码方式和实施例2类似,此处不再赘述。
解码端:
第1步:
以约定的固定比特长度对待解码的二进制比特流的最大值max_x进行解码,如编码过程中约定的8bit,得到解码后数据的最大值max_x;
第2步:生成配置数据集,配置数据集内元素的最大值为max_x-2
生成配置数据集bd_table={2,4,…max_x-2};
第3步:对每个元素x进行对应的逆二值化处理,解码过程和实施例2类似,此处不再赘述。
实施例4:假设待编码数据内的元素x为正负分布,且最大值未知编码端:
第1步:将待编码数据转换为正数并求偶,求取待编码数据的最大值;
y=-2x-1(x<0)
y=2x(x>0)
转换后的最大值max_y=2max(y)
第2步:以固定比特长度对转换后的最大值max_y进行编码,如8bit;
第3步:生成配置数据集,配置数据集内元素的最大值为max_y-2;
生成配置数据集bd_table={2,4,…max_y-2};
第4步:对每个元素y进行对应的二进制算术编码,此编码方式和实施例2类似,此处不再赘述。
解码端:
第1步:
以约定的固定比特长度对待解码的二进制比特流的最大值max_y进行解码,如编码过程中约定的8bit,得到解码后数据的最大值max_y;
第2步:生成配置数据集,配置数据集内元素的最大值为max_y-2
生成配置数据集bd_table={2,4,…max_y-2};
第3步:对每个元素y进行对应的逆二值化处理,该解码过程和实施例2类似,此处不再赘述;
第4步:
x=y/2,y是偶数
x=-y/2,y是奇数。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图7来描述根据本公开的这种实施方式的电子设备700。图7显示的电子设备700仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图7所示,电子设备700以通用计算设备的形式表现。电子设备700的组件可以包括但不限于:上述至少一个处理单元710、上述至少一个存储单元720、连接不同系统组件(包括存储单元720和处理单元710)的总线730。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元710执行,使得所述处理单元710执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元710可以执行如图1中所示的根据待编码数据的最大值生成配置数据集;根据待编码数据与所述配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,得到第一二进制比特流和已编码数据base;根据base计算待编码数据的余数bias,对bias进行二值化,得到第二二进制比特流;依次输出第一二进制比特流和第二二进制比特流,以得到待编码数据对应的二进制比特流。
需要说明的是,所述处理单元710可以执行如图5中所示的生成与编码端相同的配置数据集;根据待解码的二进制比特流得到第一二进制比特流,第一二进制比特流采用截断一元码表示,并根据第一二进制比特流与所述配置数据集内元素之间的对应关系,对第一二进制比特流进行解码,得到与第一二进制比特流对应的已编码数据base;根据待解码的二进制比特流得到第二二进制比特流,对第二二进制比特流进行解码,得到与第二二进制比特流对应的解码后数据的余数bias;根据base和bias计算待解码的二进制比特流对应的解码后数据,以对待解码的二进制比特流进行二进制算术解码。
存储单元720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)7201和/或高速缓存存储单元7202,还可以进一步包括只读存储单元(ROM)7203。
存储单元720还可以包括具有一组(至少一个)程序模块7205的程序/实用工具7204,这样的程序模块7205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线730可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备700也可以与一个或多个外部设备740(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备700交互的设备通信,和/或与使得该电子设备700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口750进行。并且,电子设备700还可以通过网络适配器760与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器760通过总线730与电子设备700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质可以是可读信号介质或者可读存储介质。其上存储有能够实现本公开上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
本公开中的计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
在本公开中,计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可选地,计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
在具体实施时,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

Claims (20)

1.一种编码方法,其特征在于,包括:
根据待编码数据的最大值生成配置数据集;
根据待编码数据与所述配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,得到第一二进制比特流和已编码数据base;
根据base计算待编码数据的余数bias,对bias进行二值化,得到第二二进制比特流;
依次输出第一二进制比特流和第二二进制比特流,以得到待编码数据对应的二进制比特流。
2.根据权利要求1所述的编码方法,其特征在于,在所述根据待编码数据与所述配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,得到第一二进制比特流和已编码数据base之前,所述方法还包括:
判断所述待编码数据是否为0,
若是,则二进制比特流输出0,编码结束;
若否,则二进制比特流的首位比特位输出1。
3.根据权利要求1所述的编码方法,其特征在于,所述采用截断一元码对待编码数据进行二值化,包括:采用最大值为待编码数据的最大值与2的差值的截断一元码对待编码数据进行二值化。
4.根据权利要求1所述的编码方法,其特征在于,当待编码数据的最大值未知时,在所述根据待编码数据的最大值生成配置数据集之前,所述方法还包括:
计算所述待编码数据的最大值,所述第一二进制比特流采用固定比特长度编码待编码数据的最大值。
5.根据权利要求1所述的编码方法,其特征在于,所述配置数据集为单向递增的数据集,配置数据集的首个元素为2,且相邻元素之间的差值为2,元素的最大值为转换为偶数后的待编码数据的最大值与2的差值。
6.根据权利要求5所述的编码方法,其特征在于,当已知待编码数据的最大值小于或者等于4时,生成配置数据集为{2};
所述根据待编码数据与所述配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,得到第一二进制比特流和已编码数据base,包括:
若所述待编码数据与1的差值大于或者等于2,则第一二进制比特流输出0,且更新base为2;
若所述待编码数据与1的差值小于2,则第一二进制比特流输出1,且更新base为0。
7.根据权利要求5所述的编码方法,其特征在于,当已知所述待编码数据的最大值大于4时,生成配置数据集为{2,4,…max-2},其中,max为转换为偶数后的待编码数据的最大值;
所述根据待编码数据与所述配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,得到第一二进制比特流和已编码数据base,包括:
逐项判断所述待编码数据与1的差值是否大于或者等于所述配置数据集中的某一元素的值;
若所述差值大于或者等于所述配置数据集中的该元素的值,则输出MPS符号,并更新base为该元素的值;
若所述差值小于所述配置数据集中的该元素的值,则输出LPS符号,或者,与所述配置数据集中的所有元素比较完毕,均输出MPS符号,则编码结束,输出第一二进制比特流。
8.根据权利要求6-7任一项所述的编码方法,其特征在于,所述根据base计算待编码数据的余数bias,对bias进行二值化,得到第二二进制比特流,包括:
bias为待编码数据、base和1之间的差值;
第二二进制比特流输出bias的反码。
9.根据权利要求1所述的编码方法,其特征在于,所述方法还包括:
根据预设的对应关系表查找第一二进制比特流和第二二进制比特流中的各比特位匹配的上下文序号,根据每个比特位选择用于编码每个比特位的值的上下文模型,对比特位的值进行二进制算术编码。
10.一种编码装置,其特征在于,包括:
第一生成模块,用于根据待编码数据的最大值生成配置数据集;
第一编码模块,用于根据待编码数据与所述配置数据集内元素之间的大小关系,采用截断一元码对待编码数据进行二值化,得到第一二进制比特流和已编码数据base;
第二编码模块,用于根据base计算待编码数据的余数bias,对bias进行二值化,得到第二二进制比特流;
输出模块,用于依次输出第一二进制比特流和第二二进制比特流,以得到待编码数据对应的二进制比特流。
11.一种解码方法,其特征在于,包括:
生成与编码端相同的配置数据集;
根据待解码的二进制比特流得到第一二进制比特流,第一二进制比特流采用截断一元码表示,并根据第一二进制比特流与所述配置数据集内元素之间的对应关系,对第一二进制比特流进行解码,得到与第一二进制比特流对应的已编码数据base;
根据待解码的二进制比特流得到第二二进制比特流,对第二二进制比特流进行解码,得到与第二二进制比特流对应的解码后数据的余数bias;
根据base和bias计算待解码的二进制比特流对应的解码后数据,以对待解码的二进制比特流进行二进制算术解码。
12.根据权利要求11所述的解码方法,其特征在于,在所述根据待解码的二进制比特流得到第一二进制比特流之前,所述方法还包括:
根据待解码的二进制比特流得到首位比特位,若首位比特位为0,则解码后数据为0,二进制算术解码结束;若首位比特位为1,则解码后数据非0。
13.根据权利要求11所述的解码方法,其特征在于,当解码后数据的最大值未知时,在所述生成与编码端相同的配置数据集之前,所述方法还包括:采用固定比特长度对解码后数据的最大值进行解码。
14.根据权利要求11所述的解码方法,其特征在于,当已知解码后数据的最大值小于或者等于4时,生成配置数据集为{2};
所述根据第一二进制比特流与所述配置数据集内元素之间的对应关系,对第一二进制比特流进行解码,包括:
若所述第一二进制比特流为0,则更新base为2;
若所述第一二进制比特流为1,则更新base为0。
15.根据权利要求11所述的解码方法,其特征在于,当已知解码后数据的最大值大于4时,生成配置数据集为{2,4,…max-2},其中,max为转换为偶数后的解码后数据的最大值;
所述根据第一二进制比特流与所述配置数据集内元素之间的对应关系,对第一二进制比特流进行解码,包括:
逐项判断所述第一二进制比特流中的比特位是否为MPS符号;
若为MPS符号,则输出base为与所述MPS符号对应的配置数据集中的元素的值;
若第一二进制比特流中的比特位为LPS符号,或者,第一二进制比特流的比特位均为MPS符号时,则第一二进制比特流解码结束。
16.根据权利要求14-15任一项所述的解码方法,其特征在于,所述对第二二进制比特流进行解码,得到与第二二进制比特流对应的解码后数据的余数bias,包括:
将第二二进制比特流取反码,得到解码后数据的余数bias;
解码后数据为base、bias、1之和。
17.根据权利要求11所述的解码方法,其特征在于,所述方法还包括:
根据上下文模型确定与待解码数据对应的第一二进制比特流和第二二进制比特流的比特位匹配的上下文序号,根据预设的对应关系表查找与所述上下文序号对应的第一二进制比特流和第二二进制比特流的比特位的值,得到待解码数据对应的二进制比特流。
18.一种解码装置,其特征在于,包括:
第二生成模块,用于生成与编码端相同的配置数据集;
第一解码模块,用于根据待解码的二进制比特流得到第一二进制比特流,第一二进制比特流采用截断一元码表示,并根据第一二进制比特流与所述配置数据集内元素之间的对应关系,对第一二进制比特流进行解码,得到与第一二进制比特流对应的已编码数据base;
第二解码模块,用于根据待解码的二进制比特流得到第二二进制比特流,对第二二进制比特流进行解码,得到与第二二进制比特流对应的解码后数据的余数bias;
计算模块,用于根据base和bias计算待解码的二进制比特流对应的解码后数据,以对待解码的二进制比特流进行二进制算术解码。
19.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~9中任意一项所述编码方法,或者,执行权利要求11~17中任意一项所述的解码方法。
20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~9中任意一项所述编码方法,或者,实现权利要求11~17中任意一项所述的解码方法。
CN202210101321.5A 2022-01-27 2022-01-27 编解码方法、装置、电子设备及存储介质 Pending CN116567238A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210101321.5A CN116567238A (zh) 2022-01-27 2022-01-27 编解码方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210101321.5A CN116567238A (zh) 2022-01-27 2022-01-27 编解码方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116567238A true CN116567238A (zh) 2023-08-08

Family

ID=87500558

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210101321.5A Pending CN116567238A (zh) 2022-01-27 2022-01-27 编解码方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116567238A (zh)

Similar Documents

Publication Publication Date Title
US9729169B2 (en) Methods and devices for source-coding and decoding of data involving symbol compression
US8942502B2 (en) Parallelization of variable length decoding
US7365658B2 (en) Method and apparatus for lossless run-length data encoding
WO2019153700A1 (zh) 编解码方法、装置及编解码设备
US7501964B2 (en) Entropy coding for digital codecs
US20080170625A1 (en) Per block breakpoint determining for hybrid variable length coding
WO2010044100A1 (en) Lossless compression
WO1997034375A1 (en) Method for reducing storage requirements for digital data
US10666289B1 (en) Data compression using dictionary encoding
JP2003218703A (ja) データ符号化装置及びデータ復号装置
KR20110037898A (ko) 멀티미디어 서명 코딩 및 디코딩
CN100423582C (zh) 一种用于将待编码数据进行二进制化编码的方法和装置
CN1675842B (zh) 算术编码的方法、设备以及相应解码方法
US20140247167A1 (en) Encoder apparatus, decoder apparatus and method
AU2016250440B2 (en) Method for coding video quantization parameter and method for decoding video quantization parameter
US7656320B2 (en) Difference coding adaptive context model using counting
US20200186583A1 (en) Integer Multiple Description Coding System
US8305244B2 (en) Coding data using different coding alphabets
WO2010044099A1 (en) Lossless content encoding
CN111211787A (zh) 一种工业数据压缩方法、系统、存储介质及终端
US20140015698A1 (en) System and method for fixed rate entropy coded scalar quantization
CN116567238A (zh) 编解码方法、装置、电子设备及存储介质
WO2020186535A1 (zh) 点云属性编码方法和装置以及点云属性解码方法和装置
CN116566397A (zh) 编码、解码方法、编码器、解码器、电子设备及存储介质
CN104682966A (zh) 列表数据的无损压缩方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination