一种视频数据编码、解码的方法及装置与流程

文档序号:13822913阅读:260来源:国知局
一种视频数据编码、解码的方法及装置与流程

本发明涉及通信技术,尤其涉及一种视频编码和解码的处理方法和装置。



背景技术:

在视频编解码中,为了尽量减少传送视频数据所需要的带宽,可以采用多种视频压缩方法对视频数据进行压缩,其中视频压缩方法包括:帧内压缩和帧间压缩。现在多采用基于运动估计的帧间压缩方法。具体的,图像的编码端采用帧间压缩方法对图像压缩并编码的过程包括:编码端将待编码图像块划分成若干个大小相等的子图像块,然后针对每个子图像块,在参考图像中搜索与当前子图像块最匹配的图像块作为预测块,然后将该子图像块与预测块的相应像素值相减得到残差,并将该残差经变换与量化后得到的值进行熵编码,最后将熵编码得到的比特流和运动矢量信息等编码数据编码。在图像的解码端,首先获得熵编码比特流后进行熵解码,得到相应的残差,以及相应的运动矢量信息等编码数据;然后根据运动矢量信息在参考图像中获得相应的匹配图像块(即上述预测块),再根据匹配图像块中各像素点的值和残差值中对应像素点的值相加得到当前子图像块中各像素点的值。帧内预测是指利用本幅图像内的信息对图像块进行预测得到预测块,编码端根据预测模式、预测方向、图像块周围的像素值得到预测块对应的像素,将图像块像素与预测块像素相减得到残差,残差经变换、量化和熵编码后写入码流中;解码端解析码流,对码流进行熵解码、反量化、反变换后得到残差块,解码端根据预测模式、预测方向、图像块周围的像素值得到预测块,将残差块像素与预测块像素相加得到重构图像块。

目前熵编码/熵解码模块中常用的编解码方法为算术编解码技术,算术编解码的基本思想是使用[0,1)中的实数来编码信源。理论上,可以依旧平稳独立信源符号序列的概率将固定区间分割成若干子区间,任一信源符号序列可以用其相应子区间内的小树来表示。序列长度趋近无穷大时编码效率趋近信源熵率。算术编解码的基本实现框架如下:

1、将编码元素转变为二元符号串:由于待编码的语法元素,如图像单元模式、帧内预测模式、残差系数、运动矢量等,其数据往往不是二值化的,而算术编码引擎只能处理二值符号,因此在对语法元素进行编码前需要对这些语法元素进行二值化处理。所谓的二值化过程就是将多值符号转变为二至符号串的过程,例如当图像单元模式cu_type的值为3时进行二值化可以得到其二值符号串’1001’.二值化过程可以看作是一个变长编码过程,不共同的语法元素相同的数值往往得到不同的二元符号串。

2、根据二元符号的值及其对应的概率值更新算术编码区间实现对二元符号的编码。算术编码过程中要用到2个基本的参数:各符号的概率估计值和当前区间值。输入符号更只有0和1两种取值。小概率符号(leastprobablesymbol,lps)指示0、1中概率估计值较小的那一个,其出现的概率取值范围为(0,0.5];与lps定义相反,大概率符号(mostprobablesymbol,mps)指示0、1中概率估计值较大的那一个,其出现的概率取值范围为[0,1)。当前编码区间用其区间大小r和下限值low表示,plps表示lps的概率,pmps表示mps的概率,plps+pmps=1。区间r和low的值更新如下:

如果当前输入符号是mps:

rmps=r×pmlps;

lown+i=lown;

如果当前输入符号是lps:

rlps=r-r×pmlps;

lown+1=lown+rn×pmlps;

通过对r和low值的维护,解码端可以解码得到二元符号串。由于在具体实现过程中区间r值和low值都是有限精度的,因此在算术编解码过程中需要使用归一化过程使得编码区间被限制在一定的范围内。归一化的基本原理是在r达到一定的精度下限后将r值和low值扩大一倍,然后判断r值是否满足精度要求,如果不满足继续执行归一化操作直到保证r值满足精度的要求。

在进行算术编码时通常存在两种模式:1、一般模式,在该种模式下输入算术编码引擎编码的二元符号串中的每一个二元符号的概率往往各不相同,因此算术编码引擎在编码时需要输入两个参数:待编码的符号的值和该符号的概率。待编码的符号由二值化后的二值符号串按照顺序输入,该符号的概率则是由概率模型选择后得到;2、旁路模式(bypassmode),在该种模式下输入算术编码引擎编码的二元符号串中的每一个二元符号的概率均相同,一般情况下概率设为0.5,因此算术编码引擎在编码时只需输入待编码的符号的值既能完成编码。一般模式和旁路模式可以混合在一起进行编解码,即前一个二元符号使用一般模式进行编解码,后一个二元符号使用旁路模式进行编解码。一般来说,旁路模式的编解码复杂度低于一般模式。

3、根据码流符号的值及其对应的概率值更新算术编码区间实现对二元码流符号的解码。算术解码过程中要用到2个基本的参数:各符号的概率估计值和当前区间值。输入符号更只有0和1两种取值。小概率符号(leastprobablesymbol,lps)指示0、1中概率估计值较小的那一个,其出现的概率取值范围为(0,0.5];与lps定义相反,大概率符号(mostprobablesymbol,mps)指示0、1中概率估计值较大的那一个,其出现的概率取值范围为[0,1)。当前编码区间用其区间大小r表示,算术编码区间的下限值的偏移量用offset来表示,plps表示lps的概率,pmps表示mps的概率,plps+pmps=1。区间r和offset的值更新如下:

如果当前解码符号是mps:

rmps=r×pmlps;

offsetn+1=lown;

如果当前解码符号是lps:

rlps=r-r×pmlps;

offsetn+1=offsetn-rn×pmps;

通过对r和offset值的维护,解码端可以解码得到二元符号串。由于在具体实现过程中区间r值和offset值都是有限精度的,因此在算术编解码过程中需要使用归一化过程使得编码区间被限制在一定的范围内。归一化的基本原理是在r达到一定的精度下限后将r值和offfset值扩大一倍,然后判断r值是否满足精度要求,如果不满足继续执行归一化操作直到保证r值满足精度的要求。

4、算术编码中的low和算术解码中offset意义是不一样的。算术编码中的low表示为编码区间的下限;算术解码中的offset为算术编码区间的下限值的偏移量。low的初始化值一般为0,offset的初始化值为读入的码流信息。

5、算术编码中更新前的第一编码区间和第二编码区间,均为算术编码区间。在现有技术中,算术编码的过程主要需要解决的是,编码区间更新过程中的乘法计算问题,尤其是在算术编码符号率较高的情况下,乘法由于其计算延时较长成为硬件设计的瓶颈。在现有技术中有通过查表方式来实现乘法代替操作,但查表操作仍存在一定复杂度,且编解码端需要存储查找表会带来存储开销。



技术实现要素:

本发明实施例提供了一种视频数据编码、解码的方法及装置,用于便捷的对视频数据进行数据编码和解码。

本发明实施例第一方面提供的视频数据编码方法,包括:算术编码;

所述算术编码包括:

获取图像数据的二元符号;

若所述二元符号为大概率符号mps,则在对数域上对所述mps对应的第一编码区间进行更新;若更新后的所述编码区间小于算术编码区间的预置范围时,则在对数域上对所述第一编码区间进行归一化处理;

若所述二元符号为小概率符号lps,则在原数域上对所述lps对应的第二编码区间进行更新,并在原数域上对所述第二编码区间进行归一化处理。

结合第一方面,在第一种可能的实现方式中,所述在对数域上对所述mps对应的第一编码区间进行更新之前,包括:

若当前的编码区间为原数域,则根据对数与原数间的近似换算法将所述编码区间由原数域转换为对数域。

结合第一方面,在第二种可能的实现方式中,所述在原数域上对所述lps对应的第二编码区间进行更新之前,包括:

若当前的编码区间为对数域,则根据对数与原数间的近似换算法将所述编码区间由对数域转换为原数域。

结合第一方面第二种可能的实现方式,在第三种可能的实现方式中,所述在原数域上对所述lps对应的第二编码区间进行更新,包括:

根据所述第一编码区间的概率,所述算术编码区间的区间信息以及第一编码区间的区间信息,确定更新后的所述第二编码区间的区间值。

结合第一方面第二种可能的实现方式,在第四种可能的实现方式中,所述在原数域上对所述lps对应的第二编码区间进行更新,还包括:

根据所述第一编码区间的区间值,确定更新后的所述第二编码区间的下限值。

结合第一方面第二种可能的实现方式,在第五种可能的实现方式中,所述根据对数与原数间的近似换算法将所述编码区间由对数域转换为原数域,包括:

公式一:

公式二:

所述r1和r2分别为在原数域中所述算术编码区间和所述第一编码区间的区间值,所述s1和t1为所述算术编码区间的区间信息,所述s2和t2为所述第一编码区间的区间信息,所述s1为不小于在对数域中所述算术编码区间的整数,所述s2为不小于在对数域中所述第一编码区间的整数,所述t1和t2皆为小于1且大于或等于0的实数;所述rlps1为在原数域中更新前所述第二编码区间的区间值;

满足所述公式一,根据对数与原数间的近似换算法,所述算术编码区间的区间信息以及第一编码区间的区间信息,分别确定在原数域中所述算术编码区间和所述第一编码区间的区间值;

满足所述公式二,根据在原数域中所述算术编码区间和所述第一编码区间的区间值,确定更新后前的所述第二编码区间的区间值。

结合第一方面第五种可能的实现方式,在第六种可能的实现方式中,所述根据所述mps的概率,所述算术编码区间的区间信息以及第一编码区间的区间信息,确定更新后的所述第二编码区间的区间值,包括:

公式三:lg_pmps=lg_r1–lg_r2=s1–t1–s2+t2;

公式四:

所述lg_pmps为在对数域中所述第一编码区间的概率,所述lg_r1和lg_r2分别为在对数域中所述算术编码区间和所述第一编码区间的区间值;所述rlps为在原数域中更新后的所述第二编码区间的区间值;

满足所述公式三,根据所述算术编码区间的区间信息以及第一编码区间的区间信息确定所述lg_pmps的算术表达式;

满足所述公式四,并结合所述公式二和所述公式三进行转换,得到更新后的所述第二编码区间的区间值。

结合第一方面第四种可能的实现方式,在第七种可能的实现方式中,所述根据所述第一编码区间的区间值,确定更新后的所述第二编码区间的下限值,包括:

公式五:low2=low1+r2=low1+2-s2+t2≈low1+(1+t2)>>s2;

所述low2为在原数域中更新后的所述第二编码区间的下限值,所述low1为在原数域中更新前的所述第二编码区间的下限值,所述r2为在原数域中所述第一编码区间的区间值;

满足所述公式五,根据对数与原数间的近似换算法,得到更新后的所述第二编码区间的区间值。

结合第一方面,在第八种可能的实现方式中,所述在对数域上对所述第一编码区间进行归一化处理,包括:

公式六:lg_r2(2)=lg_r2(1)+1;

所述lg_r2(2)为在对数域中归一化后的所述第一编码区间的区间值,所述lg_r2(1)为在对数域中归一化前的所述第一编码区间的区间值;

满足所述公式六,计算得到在对数域中归一化后的所述第一编码区间的区间值。

结合第一方面,在第九种可能的实现方式中,所述在对数域上对所述mps对应的第一编码区间进行更新之后,包括:

公式七:

所述s1和t1为所述算术编码区间的区间信息,所述s2和t2为所述第一编码区间的区间信息,所述s1为不小于在对数域中所述算术编码区间的整数,所述s2为不小于在对数域中所述第一编码区间的整数,所述t1和t2皆为小于1且大于或等于0的实数;

在完成所述第一编码区间的更新之后,满足所述公式七,将s2、t2的值赋值给s1、t1。

结合第一方面第九种可能的实现方式,在第十种可能的实现方式中,所述在对数域上对所述第一编码区间进行归一化处理之前,包括:

根据更新后的所述s1判断编码mps完成后是否需要进行归一化操作,当所述s1大于0时,则对所述第一编码区间进行归一化操作。

结合第一方面第六种可能的实现方式,在第十一种可能的实现方式中,所述在原数域上对所述第二编码区间进行归一化处理,包括:

对所述公式四中的2-s2进行二进制计算的左移操作;

对所述公式四中的(t1-t2)或(1+t1<<1)-t2进行二进制计算的左移操作;

当2-s2左移s2位,且(t1-t2)或(1+t1<<1)-t2左移q位时,所述第二编码区间实现归一化,所述q为所述编码区间的算术精度。

结合第一方面第二种可能的实现方式,在第十二种可能的实现方式中,所述根据对数与原数间的近似换算法将所述编码区间由对数域转换为原数域,还包括:

公式八:

所述r1和r2分别为在原数域中所述算术编码区间和所述第一编码区间的值,所述s1为所述算术编码区间的区间信息,所述s2为所述第一编码区间的区间信息,所述s1为不小于在对数域中所述算术编码区间的整数,所述s2为不小于在对数域中所述第一编码区间的整数;

当所述算术编码区间以9比特表示,所述t1和t2以8bit精度表示时,满足所述公式七,计算得到更新前的所述第二编码区间的值。

结合第一方面第十二种可能的实现方式,在第十三种可能的实现方式中,根据所述第一编码区间的概率,所述算术编码区间的区间信息以及第一编码区间的区间信息,确定更新后的所述第二编码区间的值,还包括:

当lg_pmps的精度等于t1的精度时,若t1大于等于lg_pmps,则s2=s1,t2=t1-lg_pmps;若小于lg_pmps,则s2=s1+1,t2=256+t1–lg_pmps;

在旁路模式下,s2=s1+1,t2=t1;

所述lg_pmps为在对数域中所述第一编码区间的概率,所述t1为所述算术编码区间的区间信息,所述t2为所述第一编码区间的区间信息,所述t1和t2皆为小于1且大于或等于0的实数。

结合第一方面第十二种可能的实现方式,在第十四种可能的实现方式中,根据所述第一编码区间的概率,所述算术编码区间的区间信息以及第一编码区间的区间信息,确定更新后的所述第二编码区间的值,还包括:

当所述lg_pmps的精度高于t1的精度时,若t1大于等于lg_pmps>>lg_pmps_shiftno,则s2=s1,t2=t1-lg_pmps;若小于lg_pmps>>lg_pmps_shiftno,则s2=s1+1,t2=256+t1–(lg_pmps>>lg_pmps_shiftno);

在旁路模式下,s2=s1+1,t2=t1;

所述lg_pmps为在对数域中所述第一编码区间的概率,所述t1为所述算术编码区间的区间信息,所述t2为所述第一编码区间的区间信息,所述t1和t2皆为小于1且大于或等于0的实数,所述lg_pmps_shiftno为所述lg_pmps与所述t1、t2的比特位数的差值。

结合第一方面第六种可能的实现方式,在第十五种可能的实现方式中,所述在原数域上对所述第二编码区间进行归一化处理,包括:

当所述算术编码区间以9比特表示,所述t1和t2以8bit精度表示,且所述lg_pmps的精度高于t1的精度时,所述第二编码区间进行归一化满足公式八;

公式九:

对所述公式四中的2-s2进行二进制计算的左移操作;

对所述公式四中的(t1-t2)或(1+t1<<1)-t2进行二进制计算的左移操作;

当2-s2左移s2位,且(t1-t2)或(1+t1<<1)-t2左移q位时,所述第二编码区间实现归一化,所述q为所述编码区间的算术精度,所述lg_pmps_shiftno为所述lg_pmps与所述t1、t2的比特位数的差值。

本发明实施例第二方面提供的视频数据解码方法包括:算术解码;

所述算术解码包括:

获取图像数据的二元码流,并初始化所述二元码流的算术编码区间以及码流指针,所述码流指针为所述算术编码区间的下限值的偏移量;

在对数域中,根据大概率符号mps的概率以及所述算术编码区间确定所述mps对应的第一编码区间的区间值;

当所述码流指针大于或等于所述第一编码区间的值,则确定当前解码得到的二元符号为小概率符号lps,将所述算术编码区间的区间值更新为所述lps对应的第二编码区间的区间值,且将所述码流指针的值更新为原所述码流指针与所述第一编码区间的上限值的差值;

当所述码流指针小于所述第一编码区间的值,则确定当前解码得到的二元符号为mps,并将所述算术编码区间的区间值更新为所述第一编码区的区间值,所述码流指针不变。

结合第二方面,在第一种可能的实现方式中,若当前的编码区间在对数域中,则所述确定当前解码得到的二元符号为小概率符号lps之前,或所述确定当前解码得到的二元符号为mps之前,包括:

将所述编码区间由对数域转换至原数域中,所述码流指针的值和所述更新后码流指针的值为原数域的值。

结合第二方面第一种可能的实现方式,在第二种可能的实现方式中,所述将所述编码区间由对数域转换至原数域中,包括:

公式十:r2≈(1+t2)>>s2;

所述r2为mps对应的编码区间的区间值,s2和t2为所述第一编码区间的区间信息,所述s2为不小于在对数域中所述第一编码区间的整数,所述t2皆为小于1且大于或等于0的实数;

满足所述公式十,计算得到所述第一编码区间的区间值。

结合第二方面第二种可能的实现方式,在第三种可能的实现方式中,所述将所述码流指针的值更新为原所述码流指针与所述第一编码区间的上限值的差值,包括:

公式十一:offsetnew=offset-r2;

所述的offsetnew为更新后码流指针的值,所述的offset为码流指针的值,所述的r2为mps对应的编码区间的区间值;

具体地,为了满足公式十一的精度要求,在具体计算时会将r2的值扩大s2倍,offset的值相应地扩大s2倍。

满足所述公式十一,计算得到更新后的码流指针的值。

结合第二方面,在第一种可能的实现方式中,若当前的编码区间在对数域中,则所述确定当前解码得到的二元符号为小概率符号lps之前,或所述确定当前解码得到的二元符号为mps之前,包括:

将所述第一编码区间的值和所述的码流指针的值进行比较,所述码流指针的值和所述更新后码流指针的值为对数域的值。

结合第二方面第二种可能的实现方式,在第三种可能的实现方式中,所述将所述码流指针的值更新为原所述码流指针与所述第一编码区间的上限值的差值,包括:

公式十九:

所述offset为所述码流指针,所述value_s和valuet为所述码流指针的区间信息,所述value_s为不小于在对数域中所述码流指针的整数,所述valuet为小于1且大于或等于0的实数;

满足所述公式十九,计算得到更新后的码流指针的值。

具体的,判断所述码流指针与所述第一编码区间的上限值的差值时,包括:

如果offset为原数域,则可以根据十一的方法更新码流指针的值。

如果offset为对数域,则根据十九的方法更新码流指针的值,简化解码流程。

结合第二方面,在第四种可能的实现方式中,所述在对数域中,根据大概率符号mps的概率以及所述算术编码区间确定所述mps对应的第一编码区间的区间值,包括:

公式十二:lg_r2=lg_r1+lg_pmps;

所述lg_pmps为在对数域中所述第一编码区间的概率,所述lg_r1和lg_r2分别为在对数域中所述算术编码区间和所述第一编码区间的区间值;

满足所述公式十二,计算得到所述mps对应的第一编码区间的区间值。

结合第二方面或第二方面第一至四任一种可能的实现方式,在第五种可能的实现方式中,所述将所述算术编码区间的区间值更新为所述第一编码区的区间值之前,包括:

将所述编码区间由原数域转换至对数域中。

本发明实施例第三方面数据编码装置,包括:

符号获取单元,用于获取图像数据二元符号;

第一更新单元,用于若所述二元符号为大概率符号mps,则在对数域上对所述mps对应的第一编码区间进行更新;

第一归一化单元,用于若更新后的所述编码区间小于算术编码区间的预置范围时,则在对数域上对所述第一编码区间进行归一化处理;

第二更新单元,用于若所述二元符号为小概率符号lps,则在原数域上对所述lps对应的第二编码区间进行更新;

第二归一化单元,用于在原数域上对所述第二编码区间进行归一化处理。

结合第三方面,在第一种可能的实现方式中,所述装置还包括:

算术转换单元,用于若当前的编码区间为原数域,则根据对数与原数间的近似换算法将所述编码区间由原数域转换为对数域。

结合第三方面,在第二种可能的实现方式中,所述装置还包括:

算术转换单元,用于若当前的编码区间为对数域,则根据对数与原数间的近似换算法将所述编码区间由对数域转换为原数域。

结合第三方面第二种可能的实现方式,在第三种可能的实现方式中,所述第二更新单元具体用于:

根据所述第一编码区间的概率,所述算术编码区间的区间信息以及第一编码区间的区间信息,确定更新后的所述第二编码区间的区间值。

结合第三方面第二种可能的实现方式,在第四种可能的实现方式中,所述第二更新单元具体还用于:

根据所述第一编码区间的区间值,确定更新后的所述第二编码区间的下限值。

结合第三方面第二种可能的实现方式,在第五种可能的实现方式中,所述算术转换单元具体用于:

公式一:

公式二:

所述r1和r2分别为在原数域中所述算术编码区间和所述第一编码区间的区间值,所述s1和t1为所述算术编码区间的区间信息,所述s2和t2为所述第一编码区间的区间信息,所述s1为不小于在对数域中所述算术编码区间的整数,所述s2为不小于在对数域中所述第一编码区间的整数,所述t1和t2皆为小于1且大于或等于0的实数;所述rlps1为在原数域中更新前所述第二编码区间的区间值;

满足所述公式一,根据对数与原数间的近似换算法,所述算术编码区间的区间信息以及第一编码区间的区间信息,分别确定在原数域中所述算术编码区间和所述第一编码区间的区间值;

满足所述公式二,根据在原数域中所述算术编码区间和所述第一编码区间的区间值,确定更新后前的所述第二编码区间的区间值。

结合第三方面第五种可能的实现方式,在第六种可能的实现方式中,所述算术转换单元具体还用于:

公式三:lg_pmps=lg_r1–lg_r2=s1–t1–s2+t2;

公式四:

所述lg_pmps为在对数域中所述第一编码区间的概率,所述lg_r1和lg_r2分别为在对数域中所述算术编码区间和所述第一编码区间的区间值;所述rlps为在原数域中更新后的所述第二编码区间的区间值;

满足所述公式三,根据所述算术编码区间的区间信息以及第一编码区间的区间信息确定所述lg_pmps的算术表达式;

满足所述公式四,并结合所述公式二和所述公式三进行转换,得到更新后的所述第二编码区间的区间值。

结合第三方面第四种可能的实现方式,在第七种可能的实现方式中,所述第二更新单元具体还用于:

公式五:low2=low1+r2=low1+2-s2+t2≈low1+(1+t2)>>s2;

所述low2为在原数域中更新后的所述第二编码区间的下限值,所述low1为在原数域中更新前的所述第二编码区间的下限值,所述r2为在原数域中所述第一编码区间的区间值;

满足所述公式五,根据对数与原数间的近似换算法,得到更新后的所述第二编码区间的区间值。

结合第三方面,在第八种可能的实现方式中,所述第一归一化单元具体用于:

公式六:lg_r2(2)=lg_r2(1)+1;

所述lg_r2(2)为在对数域中归一化后的所述第一编码区间的区间值,所述lg_r2(1)为在对数域中归一化前的所述第一编码区间的区间值;

满足所述公式六,计算得到在对数域中归一化后的所述第一编码区间的区间值。

结合第三方面,在第九种可能的实现方式中,所述第一更新单元还用于:

公式七:

所述s1和t1为所述算术编码区间的区间信息,所述s2和t2为所述第一编码区间的区间信息,所述s1为不小于在对数域中所述算术编码区间的整数,所述s2为不小于在对数域中所述第一编码区间的整数,所述t1和t2皆为小于1且大于或等于0的实数;

在完成所述第一编码区间的更新之后,满足所述公式七,将所述s2和所述t2的值赋值给所述s1和所述t1。

结合第三方面第九种可能的实现方式,在第十种可能的实现方式中,所述第一归一化单元具体用于:在对数域上对所述第一编码区间进行归一化处理之前,根据更新后的所述s1判断编码mps完成后是否需要进行归一化操作,当所述s1大于0时,则对所述第一编码区间进行归一化操作。

结合第三方面第六种可能的实现方式,在第十一种可能的实现方式中,所述第二归一化单元具体用于:

对所述公式四中的2-s2进行二进制计算的左移操作;

对所述公式四中的(t1-t2)或(1+t1<<1)-t2进行二进制计算的左移操作;

当2-s2左移s2位,且(t1-t2)或(1+t1<<1)-t2左移q位时,所述第二编码区间实现归一化,所述q为所述编码区间的算术精度。

结合第三方面第二种可能的实现方式,在第十二种可能的实现方式中,所述算术转换单元具体还用于:

公式八:

所述r1和r2分别为在原数域中所述算术编码区间和所述第一编码区间的值,所述s1为所述算术编码区间的区间信息,所述s2为所述第一编码区间的区间信息,所述s1为不小于在对数域中所述算术编码区间的整数,所述s2为不小于在对数域中所述第一编码区间的整数;

当所述算术编码区间以9比特表示,所述t1和t2以8bit精度表示时,满足所述公式七,计算得到更新前的所述第二编码区间的值。

结合第三方面第十二种可能的实现方式,在第十三种可能的实现方式中,所述第二更新单元具体还用于:

当lg_pmps的精度等于t1的精度时,若t1大于等于lg_pmps,则s2=s1,t2=t1-lg_pmps;若小于lg_pmps,则s2=s1+1,t2=256+t1–lg_pmps;

在旁路模式下,s2=s1+1,t2=t1;

所述lg_pmps为在对数域中所述第一编码区间的概率,所述t1为所述算术编码区间的区间信息,所述t2为所述第一编码区间的区间信息,所述t1和t2皆为小于1且大于或等于0的实数。

结合第三方面第十二种可能的实现方式,在第十四种可能的实现方式中,所述第二更新单元具体还用于:

当所述lg_pmps的精度高于t1的精度时,若t1大于等于lg_pmps>>lg_pmps_shiftno,则s2=s1,t2=t1-lg_pmps;若小于lg_pmps>>lg_pmps_shiftno,则s2=s1+1,t2=256+t1–(lg_pmps>>lg_pmps_shiftno);

在旁路模式下,s2=s1+1,t2=t1;

所述lg_pmps为在对数域中所述第一编码区间的概率,所述t1为所述算术编码区间的区间信息,所述t2为所述第一编码区间的区间信息,所述t1和t2皆为小于1且大于或等于0的实数,所述lg_pmps_shiftno为所述lg_pmps与所述t1、t2的比特位数的差值。

结合第三方面第六种可能的实现方式,在第十五种可能的实现方式中,所述第二归一化单元具体还用于:

当所述算术编码区间以9比特表示,所述t1和t2以8bit精度表示,且所述lg_pmps的精度高于t1的精度时,所述第二编码区间进行归一化满足公式八;

公式九:

对所述公式四中的2-s2进行二进制计算的左移操作;

对所述公式四中的(t1-t2)或(1+t1<<1)-t2进行二进制计算的左移操作;

当2-s2左移s2位,且(t1-t2)或(1+t1<<1)-t2左移q位时,所述第二编码区间实现归一化,所述q为所述编码区间的算术精度,所述lg_pmps_shiftno为所述lg_pmps与所述t1、t2的比特位数的差值。

本发明实施例第四方面提供的数据解码装置,包括:

码流获取单元,用于获取图像数据的二元码流,并初始化所述二元码流的算术编码区间以及码流指针,所述码流指针为所述算术编码区间的下限值的偏移量;

区间确定单元,用于在对数域中,根据大概率符号mps的概率以及所述算术编码区间确定所述mps对应的第一编码区间的区间值;

第一区间更新单元,用于当所述码流指针大于或等于所述第一编码区间的值,则确定当前解码得到的二元符号为小概率符号lps,将所述算术编码区间的区间值更新为所述lps对应的第二编码区间的区间值,且将所述码流指针的值更新为原所述码流指针与所述第一编码区间的上限值的差值;

第二区间更新单元,用于当所述码流指针小于所述第一编码区间的值,则确定当前解码得到的二元符号为mps,并将所述算术编码区间的区间值更新为所述第一编码区的区间值,所述码流指针不变。

结合第四方面,在第一种可能的实现方式中,所述装置还包括:

转换单元,用于若当前的编码区间在对数域中,则所述确定当前解码得到的二元符号为小概率符号lps之前,或所述确定当前解码得到的二元符号为mps之前,将所述编码区间由对数域转换至原数域中,所述码流指针的值和所述更新后码流指针的值为原数域的值。

结合第四方面第一种可能的实现方式,在第二种可能的实现方式中,所述转换单元具体用于:

公式十:r2≈(1+t2)>>s2;

所述r2为mps对应的编码区间的区间值,s2和t2为所述第一编码区间的区间信息,所述s2为不小于在对数域中所述第一编码区间的整数,所述t2皆为小于1且大于或等于0的实数;

满足所述公式十,计算得到所述第一编码区间的区间值。

结合第四方面第二种可能的实现方式,在第三种可能的实现方式中,所述第一区间更新单元具体用于:

公式十一:offsetnew=offset-r2;

所述的offsetnew为更新后码流指针的值,所述的offset为码流指针的值,所述的r2为mps对应的编码区间的区间值;

具体地,为了满足公式十一的精度要求,在具体计算时会将r2的值扩大s2倍,offset的值相应地扩大s2倍。

满足所述公式十一,计算得到更新后的码流指针的值。

结合第四方面,在第一种可能的实现方式中,所述装置还包括:

将所述的码流指针的值和第一编码区间的值进行比较,所述码流指针的值和所述更新后码流指针的值为对数域的值。

结合第四方面第二种可能的实现方式,在第三种可能的实现方式中,所述第一区间更新单元具体用于:

公式十九:

所述offset为所述码流指针,所述value_s和valuet为所述码流指针的区间信息,所述value_s为不小于在对数域中所述码流指针的整数,所述valuet为小于1且大于或等于0的实数;

满足所述公式十九,计算得到更新后的码流指针的值。

具体的,判断所述码流指针与所述第一编码区间的上限值的差值时,包括:

如果offset为原数域,则可以根据十一的方法更新码流指针的值。

如果offset为对数域,则根据十九的方法更新码流指针的值,简化解码流程。

结合第四方面,在第四种可能的实现方式中,所述区间确定单元具体用于:

公式十二:lg_r2=lg_r1+lg_pmps;

所述lg_pmps为在对数域中所述第一编码区间的概率,所述lg_r1和lg_r2分别为在对数域中所述算术编码区间和所述第一编码区间的区间值;

满足所述公式十二,计算得到所述mps对应的第一编码区间的区间值。

结合第四方面或第四方面第一至四任一种可能的实现方式,在第五种可能的实现方式中,所述装置还包括:

转换单元,用于在将所述算术编码区间的区间值更新为所述第一编码区的区间值之前,将所述编码区间由原数域转换至对数域中。

从以上技术方案可以看出,本发明实施例具有以下优点:

在本发明实施例中,在接收到信号源的二元符号之后,确认该二元符号为mps还是lps,当确认是mps时,在对数域中进行算术编码,由于使用了对数进行mps区间更新,使得在计算的过程中使用加法操作代替了乘法操作;当确认是lps时,在原数域中进行算术编码;并且,由于在编码mps和lps时分别允许使用归一化操作,明确了在一次归一化过程中的最大归一化的次数,便于编解码器的实现。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例中的视频数据编码方法的一个流程示意图;

图2是本发明实施例中的视频数据编码方法的另一个流程示意图;

图3是本发明实施例中的视频数据解码方法的一个流程示意图;

图4是本发明实施例中的视频数据解码方法的另一个流程示意图;

图5是本发明实施例中数据编码装置的结构示意图;

图6是本发明实施例中数据解码装置的结构示意图;

图7是本发明实施例中的编码实现的架构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,本发明实施例中视频数据编码方法的一个实施例包括:

101、接收信号源的二元符号;

数据编码装置接收信号源的二元符号。

具体的,所述二元符号可以为图像单元模式、帧内预测模式、残差系数、运动矢量等待编码元素经二值化处理后的信号数据。

在本发明实施例中,所述数据编码装置为具备本发明实施例中数据编码功能的设备;具体可以为独单的物理设备,包括多个物理模块;也可以为加载在计算机上的软件程序,或一个软件中的功能模块,或单独软件的形式或以插件的形式存在。

102、确定所述二元符号的类型;

数据编码装置确定所述二元符号的类型,若所述二元符号为mps,则执行步骤103;若所述二元符号为lps,则执行步骤105。

在接收到所述二元符号之后,需要根据所述二元符号的值(即确定其为mps或lps)及其对应的概率值更新算术编码区间,实现对所述二元符号的编码。具体的,lps指示0、1中概率估计值较小的那一个,其出现的概率取值范围为(0,0.5];与lps定义相反,mps指示0、1中概率估计值较大的那一个,其出现的概率取值范围为[0.5,1)。

103、在对数域上对所述mps对应的第一编码区间进行更新;

在确定所述二元符号为mps之后,数据编码装置在对数域上对所述mps对应的第一编码区间进行更新。

具体的,所述第一编码区间表示mps对应的编码区间,第二编码区间表示lps对应的编码区间;在实际应用中,第一编码区间和第二编码区间对应的是同一个物理区间,本发明实施例中的“第一”和“第二”仅用于区分在不同时刻,当前的编码区间用于编码的符号的类型(即mps或lps),并没有实际的物理含义。

而算术编码区间为所述数据编码装置维护的一个变量,在初始时为完整的编码区间,且所述第一编码区间和所述第二编码区间的和等于或近似等于所述算术编码区间。

当前的算术编码区间用其区间的区间值r1和下限值low表示,plps表示lps的概率,pmps表示mps的概率,plps+pmps=1。区间r1和low的值更新如下:

r2=r1×pmlps;

lown+1=lown。

示例性的,在对数域对第一编码区间进行更新可以根据以下公式实现:

lg_r2(2)=lg_r2(1)+lg_pmps

所述lg_r2(2)为在对数域中更新后的所述第一编码区间的区间值,所述lg_r2(1)为在对数域中更新前的所述第一编码区间的区间值,所述lg_pmps为在对数域中所述第一编码区间的概率。

具体的,由于mps的编码区间的下限值不变,因此,在对第一编码区间进行更新或归一化操作时,第一编码区间对应的low值不变。

104、在对数域上对所述第一编码区间进行归一化处理;

在完成了所述第一编码区间的更新之后,判断是否需要对所述第一编码区间进行归一化处理,若更新后的所述第一编码区间小于算术编码区间的预置范围时,则在对数域上对所述第一编码区间进行归一化处理。

具体的,所述预置范围是可设置的,示例性的,编解码系统默认的预置范围的值为二分之一。

具体的,归一化的原理为:在编码区间达到一定的精度下限后将所述编码区间的区间值和low值扩大一倍,然后判断所述编码区间的区间值是否满足精度要求,如果不满足继续执行归一化操作直到保证所述编码区间的区间值满足精度的要求。

在本发明实施例中,在对第一编码区间进行更新之后,所述第一编码区间则有可能小于算术编码区间的预置范围,示例性的,若所述预置范围为二分之一,则当所述第一编码区间则小于算术编码区间的二分之一时,则需要对所述第一编码区间进行归一化处理。

具体的,由于mps的概率大于0.5,因此,在进行一次归一化(即将原来的编码区间乘于二)之后,即可满足编码区间的精度要求。

示例性的,具体的归一化运算可以根据公式六实现

公式六为:

lg_r2(2)=lg_r2(1)+1;

所述lg_r2(2)为在对数域中归一化后的所述第一编码区间的区间值,所述lg_r2(1)为在对数域中归一化前的所述第一编码区间的区间值。

105、在原数域上对所述lps对应的第二编码区间进行更新;

在确定所述二元符号为lps之后,数据编码装置在原数域上对所述lps对应的第一编码区间进行更新。

当前的算术编码区间用其区间的区间值r1和下限值low表示,plps表示lps的概率,pmps表示mps的概率,plps+pmps=1。区间rlps和low的值更新如下:

rlps=r1-r1×pmlps;

lown+1=lown+rn×pmlps。

具体的,若当前的编码区间为对数域,则根据对数与原数间的近似换算法将所述编码区间由对数域转换为原数域。

106、在原数域上对所述第二编码区间进行归一化处理;

在完成了所述第二编码区间的更新之后,由于lps的概率小于0.5,因此,更新之后则要进行至少一次以上的归一化处理。

具体的,由于lps的编码区间的下限值为第一编码区间的上限值,因此,在对第二编码区间进行更新或归一化操作时,要根据第一编码区间的上限值更新low值。

具体的,由于转换为原数域得编码的第二编码区间的区间值用2的x次方表示,因此,在计算机执行归一化运算时,可以以二进制的方式进行移位计算。

在本发明实施例中,对于数学关系是b=log(a)而言,a属于原数域上的值,而b则是a取对数之后在对数域的值。在本发明中原数域的值及对数域的值均遵循此数学定义。由于算术编解码中二元符号的值为0或1,因此log为以2为底的对数函数。

在本发明实施例中,在接收到信号源的二元符号之后,确认该二元符号为mps还是lps,当确认是mps时,在对数域中进行算术编码,由于使用了对数进行mps区间更新,使得在计算的过程中使用加法操作代替了乘法操作;当确认是lps时,在原数域中进行算术编码。

具体的,在芯片设计的实际应用中,硬件编解码操作与时钟频率密切相关,设计时必须要要确定每一个时钟频率所能完成编解码操作。在现有技术中,对数域与原数域之间的转换实现归一化和旁路模式在实现上较为复杂,编解码器无法确定归一化最多需要的次数,由于归一化次数不确定,从而导致没法准确知道算术编解码时一个时钟频率所能完成的操作,从而不利于硬件实现。在本发明实施了中,由于在编码mps和lps时分别进行归一化操作,使得可以在mps和lps两侧分别确定最大的编码区间归一化的次数,从而便于编解码器的实现。

上述近似计算主要指通过加法、减法、移位运算来代替乘法操作,或通过加法、减法、移位运算来代替查找对数表(对对数函数)实现原数域与对数域之间的转换,或通过加法、减法、移位运算来代替查找反对数表(或反对数函数)实现对数域与原数域之间的转换。近似计算在一定精度范围内达到与实际计算(乘法、对数表、反对数表)相同的目的。本发明中近似计算的精度能够满足本发明的要求。

下面对本发明实施例中的视频数据编码方法进行详细的描述,请参阅图2,本发明实施例中视频数据编码方法的另一个实施例包括:

201、接收信号源的二元符号;

数据编码装置接收信号源的二元符号。

具体的,所述二元符号可以为图像单元模式、帧内预测模式、残差系数、运动矢量等待编码元素经二值化处理后的信号数据。

在本发明实施例中,所述数据编码装置为具备本发明实施例中数据编码功能的设备;具体可以为独单的物理设备,包括多个物理模块;也可以为加载在计算机上的软件程序,或一个软件中的功能模块,或单独软件的形式或以插件的形式存在。

202、确定所述二元符号的类型;

数据编码装置确定所述二元符号的类型,若所述二元符号为mps,则执行步骤203;若所述二元符号为lps,则执行步骤206。

203、确定当前的编码区间为对数域;

数据编码装置判断当前的编码区间是否为对数域,若否,则根据对数与原数间的近似换算法将所述编码区间由原数域转换为对数域。

示例性的,设x的取值范围为[0,1],在这种情况下可以得到以下的数学关系:log(1+x)≈x(0<=x<=1);根据上述数学关系式,可以实现原数域与对数域之间的转换,需要注意的是以上约等式在一定精度范围内成立。在本发明中上述约等式的精度能够满足本发明对于计算精度的要求。

具体的,在实际应用中,通过对数与原数间的近似计算的转换方法,可以避免了查表操作,进一步提高了数据编码的效率。

204、在对数域上对所述mps对应的第一编码区间进行更新;

在确定所述二元符号为mps之后,数据编码装置在对数域上对所述mps对应的第一编码区间进行更新。

具体的,所述第一编码区间表示编码mps对应的编码区间,第二编码区间表示编码lps对应的编码区间;而算术编码区间为所述数据编码装置维护的一个变量,在初始时为完整的编码区间,且所述第一编码区间和所述第二编码区间的和等于或近似等于所述算术编码区间。

当前的算术编码区间用其区间的区间值r1和下限值low表示,plps表示lps的概率,pmps表示mps的概率,plps+pmps=1。区间r1和low的值更新如下:

r2=r1×pmlps;

lown+1=lown。

示例性的,在对数域对第一编码区间进行更新可以根据以下公式实现:

lg_r2(2)=lg_r2(1)+lg_pmps

所述lg_r2(2)为在对数域中更新后的所述第一编码区间的区间值,所述lg_r2(1)为在对数域中更新前的所述第一编码区间的区间值,所述lg_pmps为在对数域中所述第一编码区间的概率。

具体的,由于mps的编码区间的下限值为不变,因此,在对第一编码区间进行更新或归一化操作时,第一编码区间对应的low值不变。

205、在对数域上对所述第一编码区间进行归一化处理;

在完成了所述第一编码区间的更新之后,判断是否需要对所述第一编码区间进行归一化处理,若更新后的所述第一编码区间小于算术编码区间的预置范围时,则在对数域上对所述第一编码区间进行归一化处理。

具体的,归一化的原理为:在编码区间达到一定的精度下限后将所述编码区间的区间值和low值扩大一倍,然后判断所述编码区间的区间值是否满足精度要求,如果不满足继续执行归一化操作直到保证所述编码区间的区间值满足精度的要求。

在本发明实施例中,在对第一编码区间进行至少两次更新之后,所述第一编码区间则有可能小于算术编码区间的二分之一,当所述第一编码区间则小于算术编码区间的二分之一时则需要对所述第一编码区间进行归一化处理。

具体的,由于mps的概率大于0.5,因此,在进行一次归一化(即将原来的编码区间乘于二)之后,即可满足编码区间的精度要求。

示例性的,具体的归一化运算可以根据公式六实现

公式六为:

lg_r2(2)=lg_r2(1)+1;

所述lg_r2(2)为在对数域中归一化后的所述第一编码区间的区间值,所述lg_r2(1)为在对数域中归一化前的所述第一编码区间的区间值。

206、确定当前的编码区间为原数域;

数据编码装置判断当前的编码区间是否为原数域,若否,则根据对数与原数间的近似换算法将所述编码区间由对数域转换为原数域。

示例性的,设x的取值范围为[0,1],在这种情况下可以得到以下的数学关系:2x≈x+1(0<=x<=1);根据上述数学关系式,可以实现原数域与对数域之间的转换。

具体的,设r1和r2分别为在原数域中所述算术编码区间和所述第一编码区间的区间值,rlps为在原数域中所述第二编码区间的区间值;则算术编码原理可知:rlps≈r1-r2。由上述所设的数值可知,r1和r2在对数域的值为lg_r1=-log(r1);lg_r2=-log(r2)。

进一步的,设s1和t1为所述算术编码区间的区间信息,设s2和t2为所述第一编码区间的区间信息,所述s1为不小于在对数域中所述算术编码区间的整数,所述s2为不小于在对数域中所述第一编码区间的整数,所述t1和t2皆为小于1且大于或等于0的实数;根据上述数值,可得公式十三:

公式十三:

r1、r2在原数域上的值可根据近似计算得到如下公式一:

公式一:

具体的,在本发明实施的公式中,“》”表示二进制计算中右移x位,“《”表示二进制计算中左移x位。

由于0.5<pmps<1,可知:r1>r2>r1/2;进一步可得:lg_r1>lg_r2>lg_r1-1。

因此,结合公式十三,可得如下公式十四:

公式十四:

对所述公式十四进行化简,可得t1-t2-1<s1-s2<t1-t2;

由于t1和t2均是0至1之间的值,所以有:-1<t1-t2<1,以及-2<s1-s2<1;由此可得:s1=s2或s1=s2–1。

由于lps的区间值rlps等于r1-r2=2-s1+t1-2-s2+t2,结合s1=s2或s1=s2–1,可得到公式十五:

公式十五:

结合公式十五,根据对数与原数间的近似换算法可得公式二:

公式二:

上述rlps1即为在原数域中更新前所述第二编码区间的区间值。

207、确定更新后的所述第二编码区间的区间值;

根据所述第一编码区间的概率,所述算术编码区间的区间信息以及第一编码区间的区间信息,确定更新后的所述第二编码区间的区间值;

示例性的,根据所述算术编码区间的区间信息以及第一编码区间的区间信息确定所述lg_pmps的算术表达式(公式三):

公式三:lg_pmps=lg_r1–lg_r2=s1–t1–s2+t2;

进一步的,根据所述公式二以及所述公式三,可得公式四:

公式四:

进一步的,还需要根据所述第一编码区间的区间值,确定更新后的所述第二编码区间的下限值,如以下公式五:

公式五:low2=low1+r2=low1+2-s2+t2≈low1+(1+t2)>>s2;

208、在原数域上对所述第二编码区间进行归一化处理;

在完成了所述第二编码区间的更新之后,由于lps的概率小于0.5,因此,更新之后则要进行至少一次的归一化处理。

示例性的,可以根据以上述公式二进行归一化处理,具体的:

对所述公式二中的2-s2进行二进制计算的左移操作;

对所述公式二中的(t1-t2)或(1+t1<<1)-t2进行二进制计算的左移操作;

当2-s2左移s2位,且(t1-t2)或(1+t1<<1)-t2左移q位时,所述第二编码区间实现归一化,所述q为所述编码区间的算术精度。

在公式二中2-s2的部分左移s2位可以实现归一化,(t1-t2)或(1+t1<<1)-t2的部分,寄存器最高为1,该情况总共需要左移q位,因此可知,在对lps进行归一化时,归一化次数为s2+q次。由于算术编码区间的精度是预先设定好的,并且在编码mps时区间已经进行过归一化,在编码lps时区间归一化的次数取决于区间的精度。例如,在本发明实施例中编码区间的精度为9比特,而归一化时编码区间的值相比于归一化前扩大一倍,由此可知,在9比特精度下编码lps最大所需归一化次数为9次。

需要注意的是,在计算机系统中使用浮点数进行计算的代价较高,因此上述算术编码方法所涉及的变量均以固定精度的整数变量表示。例如,t1表示算术编码区间值在对数域的小数值,其在实际使用时通过8bit整数精度用以表示t1的值。因此,当以8bit精度进行表示时,t1实际的浮点数的值等于t1的值除以256。为了便于理解,下面以计算机系统在实际环境下执行的方法流程进行描述:

在本发明中设算术编码区间以9比特表示,t1、t2以8bit精度表示。由此可知,上述公式一的表述形式可以更改成如下形式:

公式十六:

由所述公式一推导可得公式十七:

由于算术编码区间以9比特表示,因此上述公式十七可表示为公式十八:

因此,当使用8比特精度表示t1和t2时,由公式lg_r2(2)=lg_r2(1)+lg_pmps及公式十四的推论s1=s2或s1=s2-1可得:

如果t1大于等于lg_pmps,则s2=s1,由此可得t2=t1-lg_pmps

如果小于lg_pmps,s2=s1+1,由此可得t2=256+t1–lg_pmps

在旁路模式下,s2=s1+1,t2=t1;

此外,考虑到lg_pmps的精度越大,对数域算术编码的性能越好,因此lg_pmps往往使用精度更高的整数表示,例如10比特精度,设lg_pmps_shiftno为lg_pmps高于t1、t2的比特位数,则上述结论可表示为:

如果t1大于等于lg_pmps>>lg_pmps_shiftno,则s2=s1,由此可得t2=t1-lg_pmps

如果t1小于lg_pmps>>lg_pmps_shiftno,s2=s1+1,由此可得t2=256+t1–(lg_pmps>>lg_pmps_shiftno)

在旁路模式下,s2=s1+1,t2=t1;

当编码mps完成后进行区间更新,将s2、t2的值赋值给s1、t1。

根据所述公式十八可知当s1大于0时r1的值必然小于256,由此可知此时编码完mps之后区间值小于9比特表示的算术编码区间值(512)的,此时需要进行归一化操作。因此,可以根据更新后的s1值判断编码mps完毕后是否需要进行归一化操作。

同理,当t1、t2以8比特精度表示,lg_pmps_shiftno为lg_pmps高于t1、t2的比特位数时,编码lps完毕后,其区间值为:

需要注意的是,由于编码lps之后必然要进行归一化操作,而归一化之后区间会左移s2+q位,因此rlps2更新后的数值可以不需要考虑因子2-s2,因此上述公式可变更为:

由此可得,当编码完lps之后,进行归一化操作时区间值rlps2只需要左移q位,但归一化操作的次数仍为s2+q次。

可选的,为了便于之后mps进行第一编码区间的更新,可以将在原数域更新后的区间值转换到对数域,具体实现是通过公式七。

若使用旁路模式进行算术编码或解码,则在使用本发明实施例中的数据编码的情况下,能够进一步提高数据编码的效率;因为在旁路模式下输入算术编码引擎编码的二元符号串中的每一个二元符号的概率均相同,一般情况下概率设为0.5,因此在编码mps时,编码区间的区间值不变,其数学表达形式为:

编码或解码mps时:r2=r1x0.5

归一化操作:rnew=r2<<1=r1x0.5<<1=r1

因此只需要更改low指针的值:low=low<<1

编码或解码lps时,其区间更新与mps一样,即区间值不变。由于编码lps时low的值等于low+r2=low+(r1>>1),编码lps之后low的值扩大一倍,即lownew=low<<1=(low<<1)+r1=(low<<1)+2-s1+t1

下面对本发明实施例中视频数据解码方法进行描述,请参阅图3,本发明实施例中视频数据解码方法的一个实施例包括:

301、接收信号源的二元码流;

数据解码装置接收信号源的二元码流,并初始化所述二元码流的算术编码区间以及码流指针,所述码流指针为所述算术编码区间的下限值的偏移量。

具体的,所述二元码流为数据编码后的二元符号。

在本发明实施例中,所述数据解码装置为具备本发明实施例中数据编码功能的设备;具体可以为独单的物理设备,包括多个物理模块;也可以为加载在计算机上的软件程序,或一个软件中的功能模块,或单独软件的形式或以插件的形式存在。

302、确定所述mps对应的第一编码区间的区间值;

在对数域中,数据解码装置根据大概率符号mps的概率以及所述算术编码区间确定所述mps对应的第一编码区间的区间值。

具体的,可以满足公式十二,计算得到所述mps对应的第一编码区间的区间值。

公式十二:lg_r2=lg_r1+lg_pmps;

所述lg_pmps为在对数域中所述第一编码区间的概率,所述lg_r1和lg_r2分别为在对数域中所述算术编码区间和所述第一编码区间的区间值;

303、判断所述第一编码区间的区间值是否小于所述码流指针;

数据解码装置判断所述码流指针是否小于所述第一编码区间的区间值,若是,则执行步骤304;若否,则执行步骤306。

具体的,若当前的编码区间为对数域,则根据对数与原数间的近似换算法将所述编码区间由对数域转换为原数域。码流指针所指向的值为原数域中所述算术编码区间的下限值的偏移量。

304、将所述算术编码区间的区间值更新为所述第一编码区的区间值;

当所述码流指针小于所述第一编码区间的区间值,则确定当前解码得到的二元符号为mps,并将所述算术编码区间的区间值更新为所述第一编码区的区间值,所述码流指针不变。

可选的,在将所述算术编码区间的区间值更新为所述第一编码区的区间值之前,可以将所编码区间由原数域转换为对数域。

305、在对数域上对所述第一编码区间进行归一化处理;

可选的,在完成了所述第一编码区间的更新之后,判断是否需要对所述第一编码区间进行归一化处理,若更新后的所述第一编码区间小于算术编码区间的一半时,则在对数域上对所述第一编码区间进行归一化处理。

在本发明实施例中,在对第一编码区间进行至少两次更新之后,所述第一编码区间则有可能小于算术编码区间的二分之一,当所述第一编码区间则小于算术编码区间的二分之一时则需要对所述第一编码区间进行归一化处理。

具体的,由于mps的概率大于0.5,因此,在进行一次归一化(即将原来的编码区间乘于二)之后,即可满足编码区间的精度要求。

示例性的,具体的归一化运算可以根据公式六实现

公式六为:

lg_r2(2)=lg_r2(1)--1;

所述lg_r2(2)为在对数域中归一化后的所述第一编码区间的区间值,所述lg_r2(1)为在对数域中归一化前的所述第一编码区间的区间值。

306、将所述码流指针的值更新为原所述码流指针与所述第一编码区间的上限值的差值;

当所述码流指针大于或等于所述第一编码区间的区间值,则确定当前解码得到的二元符号为小概率符号lps,并将所述编码区间切换至原数域中,将所述算术编码区间的区间值更新为所述lps对应的第二编码区间的区间值,且将所述码流指针的值更新为原所述码流指针与所述第一编码区间的上限值的差值。

具体的,将所述码流指针的值更新为原所述码流指针与所述第一编码区间的上限值的差值的方法可以参考公式十一:

公式十一:offsetnew=offset-r2;

所述的offsetnew为更新后码流指针的值,所述的offset为码流指针的值,所述的r2为mps对应的编码区间的区间值。

具体地,为了满足公式十一的精度要求,在具体计算时会将r2的值扩大s2倍,offset的值相应地扩大s2倍。

具体的,若当前的编码区间为对数域,则根据对数与原数间的近似换算法将所述编码区间由对数域转换为原数域。

具体的,当前的算术编码区间的区间值为r1,当前的偏移量为offset,plps表示lps的概率,pmps表示mps的概率,plps+pmps=1。区间rlps和偏移量offset的值更新如下:

rlps=r1-r1×pmps;

offsetn+1=offsetn-rn×pmps。

307、在原数域上对所述第二编码区间进行归一化处理;

在完成了所述第二编码区间的更新之后,由于lps的概率小于0.5,因此,更新之后则要进行至少一次以上的归一化处理。

具体的,由于lps的编码区间的下限值为第一编码区间的上限值,因此,在对第二编码区间进行更新或归一化操作时,要根据第一编码区间的上限值更新offset值。

具体的,由于转换为原数域得编码的第二编码区间的区间值用2的x次方表示,因此,在计算机执行归一化运算时,可以以二进制的方式进行移位计算。

可选的,为了便于之后mps进行第一编码区间的更新,可以将在原数域更新后的区间值转换到对数域,具体实现是通过公式七。

在本发明实施例中,在接收到信号源的二元码流之后,确认该二元符号为mps还是lps,当确认是mps时,在对数域中进行算术编码,由于使用了对数进行mps区间更新,使得在计算的过程中使用加法操作代替了乘法操作;当确认是lps时,在原数域中进行算术编码。

在现有技术中,offset的值是通过对数域中的信息offset_s和offset_t来表示的,这样在解码lps时需要进行对数域到原数域的转换,在解码lps后需要进行原数域到对数域的转换。这种频繁的转换操作不利于硬件算术解码器的实现,并且在offset精度很高时,实现更加困难。在本发明实施了中,由于在offset一直在原数域,避免了频繁的转换操作,有利于硬件的实现。

可选的,本发明实施例中视频数据解码方法还可以在对数域中实现,请参阅图4,本发明实施例中视频数据解码方法的另一个实施例包括:

401、接收信号源的二元码流;

数据解码装置接收信号源的二元码流,并初始化所述二元码流的算术编码区间以及码流指针,所述码流指针为所述算术编码区间的下限值的偏移量。

具体的,所述二元码流为数据编码后的二元符号。

在本发明实施例中,所述数据解码装置为具备本发明实施例中数据编码功能的设备;具体可以为独单的物理设备,包括多个物理模块;也可以为加载在计算机上的软件程序,或一个软件中的功能模块,或单独软件的形式或以插件的形式存在。

402、确定所述mps对应的第一编码区间的区间值;

在对数域中,数据解码装置根据大概率符号mps的概率以及所述算术编码区间确定所述mps对应的第一编码区间的区间值。

具体的,mps对应的编码区间在对数域上区间值满足如下公式七:

公式七:lg_r2=lg_r1+lg_pmps;

所述lg_pmps为在对数域中所述第一编码区间的概率,所述lg_r1和lg_r2分别为在对数域中所述算术编码区间和所述第一编码区间的区间值;

满足所述公式七,计算得到所述mps对应的第一编码区间的区间值。

403、通过近似计算确定第一编码区间在原数域的区间值;

数据解码装置根据对数域所述mps对应的第一编码区间的s2,t2,通过近似计算确定mps对应的第一编码区间在原数域的区间值。

具体的,mps对应的编码区间在对数域上区间值满足如下公式十:

公式十:r2≈(1+t2)>>s2;

所述r2为mps对应的编码区间的区间值,s2和t2为所述第一编码区间的区间信息,所述s2为不小于在对数域中所述第一编码区间的整数,所述t2皆为小于1且大于或等于0的实数;

404、判断所述第一编码区间的区间值是否小于所述码流指针;

数据解码装置判断所述码流指针是否小于所述第一编码区间的区间值,若是,则执行步骤405;若否,则执行步骤406。

具体的根据offset和公式十中r2的值进行判断,码流指针offset所指向的值为原数域中所述算术编码区间的下限值的偏移量。

405、将所述算术编码区间的区间值更新为所述第一编码区的区间值;

若在对数域中,当所述码流指针小于所述第一编码区间的区间值,则确定当前解码得到的二元符号为mps,并将所述算术编码区间的区间值更新为所述第一编码区的区间值,所述码流指针不变。

406、将所述码流指针的值更新为所述码流指针与所述第一编码区间的上限值的差值;

若在对数域中,当所述码流指针大于或等于所述第一编码区间的区间值,则确定当前解码得到的二元符号为小概率符号lps,并将所述编码区间切换至原数域中,将所述算术编码区间的区间值更新为所述lps对应的第二编码区间的区间值,且将所述码流指针的值更新为所述的码流指针减所述第一编码区间的上限值。

具体的,所述将所述编码区间切换至原数域中,将所述算术编码区间的区间值更新为所述lps对应的第二编码区间的区间值,包括:

由于lps对应的子区间rlps大小为r1-r2,因此在编码过程中推导得到:

由于当s2=s1时,t1-t2=lg_pmps;当s2=s1+1时,1+t1-t2=lg_pmps,由以上的公式可推导得到如下公式四:

公式四:

所述rlps为在原数域中更新后的所述第二编码区间的区间值,所述lg_pmps为在对数域中所述第一编码区间的概率,所述s1和t1为所述算术编码区间的区间信息,所述s2和t2为所述第一编码区间的区间信息,所述s1为不小于在对数域中所述算术编码区间的整数,所述s2为不小于在对数域中所述第一编码区间的整数,所述t1和t2皆为小于1且大于或等于0的实数;

满足所述公式四,计算得到在原数域中更新后的所述第二编码区间的区间值。

可选的,为了便于之后mps进行第一编码区间的更新,可以将在原数域更新后的区间值转换到对数域,具体实现是通过公式七。

具体的,所述将所述码流指针的值更新为所述的码流指针减所述第一编码区间的上限值,可以参考公式十和公式十一:

公式十:r2≈(1+t2)>>s2

公式十一:offsetnew=offset-r2

所述的offsetnew为更新后码流指针,所述的offset为码流指针的值,所述的r2为mps对应的编码区间的区间值,s2和t2为所述第一编码区间的区间信息,所述s2为不小于在对数域中所述第一编码区间的整数,所述t2皆为小于1且大于或等于0的实数;

具体地,为了满足公式十一的精度要求,在具体计算时会将r2的值扩大s2倍,offset的值相应地扩大s2倍。

满足所述公式十一,计算得到更新后的码流指针的值。

在实际应用中,由于rlps和offset同时左移,因此,相同的因子可不计;具体的,在数据解码过程中,计算机进行编码区间更新时执行的代码可以为:

首先左移使得range的最高比特位是’1’

完成后更新lg_r1的整数和小数部分:

s1=0;

t1=rlps低8位。

下面对本发明实施例中数据解码方法进行描述,请参阅图4,本发明实施例中数据解码方法中的旁路解码的一个实施例包括:

401、接收信号源的二元码流,并初始化所述二元码流的算术编码区间以及码流指针;

数据解码装置接收信号源的二元码流,并初始化所述二元码流的算术编码区间以及码流指针,所述码流指针为所述算术编码区间的下限值的偏移量。

具体的,所述二元码流为数据编码后的二元符号。

在本发明实施例中,所述数据解码装置为具备本发明实施例中数据编码功能的设备;具体可以为独单的物理设备,包括多个物理模块;也可以为加载在计算机上的软件程序,或一个软件中的功能模块,或单独软件的形式或以插件的形式存在。

403、判断码流指针在原数域中还是在对数域中,如在原数域中,则执行403,如在对数域中则执行407。

403、根据算术编码区间的绝对值确定mps对应的第一编码区间在原数域的绝对值。

s2=s1+1

t2=t1

具体的,mps对应的编码区间在对数域上绝对值满足如下公式十:

公式十:r2≈(1+t2)>>s2;

所述r2为mps对应的编码区间的绝对值,s2和t2为所述第一编码区间的区间信息,所述s2为不小于在对数域中所述第一编码区间的整数,所述t2皆为小于1且大于或等于0的实数;为了保持计算精度,公式十中的r2扩大s2倍,码流指针也扩大s2倍。

404、判断所述第一编码区间的绝对值是否小于所述码流指针;

数据编码装置判断所述码流指针是否小于所述第一编码区间的绝对值,若是,则执行步骤405;若否,则执行步骤406。

具体的根据公式十一中的offset和r2的值进行判断,码流指针offset所指向的值为原数域中所述算术编码区间的下限值的偏移量。

405、将所述算术编码区间的绝对值更新为所述第一编码区的绝对值;

若在对数域中,当前的所述码流指针小于所述第一编码区间的绝对值,则确定当前解码得到的二元符号为mps,所述算术编码区间的绝对值保持不变,所述码流指针不变。

406、将所述码流指针的值更新为所述的码流指针减所述第一编码区间的上限限值;

若在对数域中,当前的所述码流指针大于或等于所述第一编码区间的绝对值,则确定当前解码得到的二元符号为小概率符号lps,所述算术编码区间的绝对值保持不变,且将所述码流指针的值更新为所述的码流指针减所述第一编码区间的上限限值。

具体的,

公式十一:offsetnew=offset-r2

具体地,为了满足公式十一的精度要求,在具体计算时会将r2的值扩大s2倍,offset的值相应地扩大s2倍。

所述的offsetnew为更新后码流指针,offset和r2为公式十一中的值。满足所述公式十一,计算得到更新后的码流指针的值。

407、在对数域中,根据大概率符号mps的概率以及所述算术编码区间确定所述mps对应的第一编码区间的绝对值;

在对数域中,数据编码装置根据大概率符号mps的概率以及所述算术编码区间确定所述mps对应的第一编码区间的绝对值。

具体的,mps对应的编码区间在对数域上绝对值满足如下公式十二:

公式十二:lg_r2=lg_r1+lg_pmps;

所述lg_pmps为在对数域中所述第一编码区间的概率,所述lg_r1和lg_r2分别为在对数域中所述算术编码区间和所述第一编码区间的绝对值;

满足所述公式九,计算得到所述mps对应的第一编码区间的绝对值。

408、判断所述第一编码区间的绝对值是否大于所述码流指针;

数据编码装置判断所述第一编码区间的绝对值是否小于所述码流指针,若是,则执行步骤409;若否,则执行步骤410。

409、将所述算术编码区间的绝对值更新为所述第一编码区的绝对值;

若在对数域中,当前的所述第一编码区间的绝对值大于所述码流指针,则确定当前解码得到的二元符号为mps,并将所述算术编码区间的绝对值更新为所述第一编码区的绝对值,所述码流指针不变。

410、将所述码流指针的值更新为所述第二编码区间的下限值;

若在对数域中,当前的所述第一编码区间的绝对值小于或等于所述码流指针,则确定当前解码得到的二元符号为小概率符号lps,并将所述编码区间切换至原数域中,将所述算术编码区间的绝对值更新为所述lps对应的第二编码区间的绝对值,且将所述码流指针的值更新为所述第二编码区间的下限值。

具体的,所述将所述编码区间切换至原数域中,将所述算术编码区间的绝对值更新为所述lps对应的第二编码区间的绝对值,包括:

由于lps对应的子区间rlps大小为r1-r2,因此在编码过程中推导得到:

由于当s2=s1时,t1-t2=lg_pmps;当s2=s1+1时,1+t1-t2=lg_pmps,由以上的公式可推导得到如下公式四:

公式四:

所述rlps为在原数域中更新后的所述第二编码区间的绝对值,所述lg_pmps为在对数域中所述第一编码区间的概率,所述s1和t1为所述算术编码区间的区间信息,所述s2和t2为所述第一编码区间的区间信息,所述s1为不小于在对数域中所述算术编码区间的整数,所述s2为不小于在对数域中所述第一编码区间的整数,所述t1和t2皆为小于1且大于或等于0的实数;

满足所述公式四,计算得到在原数域中更新后的所述第二编码区间的绝对值。

具体的,所述将所述码流指针的值更新为所述原码流指针减所述第一编码区间的上限值,可以参考公式十九:

公式十九:

所述offset为所述码流指针,所述value_s和valuet为所述码流指针的区间信息,所述value_s为不小于在对数域中所述码流指针的整数,所述valuet为小于1且大于或等于0的实数;

具体地,对所述公式十九中的2-s2进行二进制计算的左移操作。

对公式四中的2-s2也进行二进制计算的左移操作。

满足所述公式十九,计算得到所述原码流指针减所述第一编码区间的上限值。

下面对实现本发明实施例中的视频数据编码方法的数据编码装置进行描述,需要说明的是,上述数据编码方法各实施例中所记载的方法可实施于本发明的数据编码装置。请参阅图5,本发明实施例中的数据编码装置的一个实施例包括:

符号获取单元501,用于获取图像数据二元符号;

第一更新单元502,用于若所述二元符号为大概率符号mps,则在对数域上对所述mps对应的第一编码区间进行更新;

第一归一化单元503,用于若更新后的所述编码区间小于算术编码区间的预置范围时,则在对数域上对所述第一编码区间进行归一化处理;

第二更新单元504,用于若所述二元符号为小概率符号lps,则在原数域上对所述lps对应的第二编码区间进行更新;

第二归一化单元505,用于在原数域上对所述第二编码区间进行归一化处理。

进一步的,所述装置还包括:

算术转换单元506,用于若当前的编码区间为原数域,则根据对数与原数间的近似换算法将所述编码区间由原数域转换为对数域。

所述算术转换单元还用于若当前的编码区间为对数域,则根据对数与原数间的近似换算法将所述编码区间由对数域转换为原数域。

具体的,所述第二更新单元具体504用于:

根据所述第一编码区间的概率,所述算术编码区间的区间信息以及第一编码区间的区间信息,确定更新后的所述第二编码区间的区间值。

具体的,所述第二更新单元具体504还用于:

根据所述第一编码区间的区间值,确定更新后的所述第二编码区间的下限值。

具体的,所述算术转换单元506具体用于:

公式一:

公式二:

所述r1和r2分别为在原数域中所述算术编码区间和所述第一编码区间的区间值,所述s1和t1为所述算术编码区间的区间信息,所述s2和t2为所述第一编码区间的区间信息,所述s1为不小于在对数域中所述算术编码区间的整数,所述s2为不小于在对数域中所述第一编码区间的整数,所述t1和t2皆为小于1且大于或等于0的实数;所述rlps1为在原数域中更新前所述第二编码区间的区间值;

满足所述公式一,根据对数与原数间的近似换算法,所述算术编码区间的区间信息以及第一编码区间的区间信息,分别确定在原数域中所述算术编码区间和所述第一编码区间的区间值;

满足所述公式二,根据在原数域中所述算术编码区间和所述第一编码区间的区间值,确定更新后前的所述第二编码区间的区间值。

进一步的,所述算术转换单元506具体还用于:

公式三:lg_pmps=lg_r1–lg_r2=s1–t1–s2+t2;

公式四:

所述lg_pmps为在对数域中所述第一编码区间的概率,所述lg_r1和lg_r2分别为在对数域中所述算术编码区间和所述第一编码区间的区间值;所述rlps为在原数域中更新后的所述第二编码区间的区间值;

满足所述公式三,根据所述算术编码区间的区间信息以及第一编码区间的区间信息确定所述lg_pmps的算术表达式;

满足所述公式四,并结合所述公式二和所述公式三进行转换,得到更新后的所述第二编码区间的区间值。

具体的,所述第二更新单元505具体还用于:

公式五:low2=low1+r2=low1+2-s2+t2≈low1+(1+t2)>>s2;

所述low2为在原数域中更新后的所述第二编码区间的下限值,所述low1为在原数域中更新前的所述第二编码区间的下限值,所述r2为在原数域中所述第一编码区间的区间值;

满足所述公式五,根据对数与原数间的近似换算法,得到更新后的所述第二编码区间的区间值。

具体的,所述第一归一化单元503具体用于:

公式六:lg_r2(2)=lg_r2(1)+1;

所述lg_r2(2)为在对数域中归一化后的所述第一编码区间的区间值,所述lg_r2(1)为在对数域中归一化前的所述第一编码区间的区间值;

满足所述公式六,计算得到在对数域中归一化后的所述第一编码区间的区间值。

具体的,所述第一更新单元502还用于:

公式七:

所述s1和t1为所述算术编码区间的区间信息,所述s2和t2为所述第一编码区间的区间信息,所述s1为不小于在对数域中所述算术编码区间的整数,所述s2为不小于在对数域中所述第一编码区间的整数,所述t1和t2皆为小于1且大于或等于0的实数;

在完成所述第一编码区间的更新之后,满足所述公式七,将所述s2和所述t2的值赋值给所述s1和所述t1。

具体的,所述第一归一化单元503具体用于:在对数域上对所述第一编码区间进行归一化处理之前,根据更新后的所述s1判断编码mps完成后是否需要进行归一化操作,当所述s1大于0时,则对所述第一编码区间进行归一化操作。

具体的,所述第二归一化单元505具体用于:

对所述公式四中的2-s2进行二进制计算的左移操作;

对所述公式四中的(t1-t2)或(1+t1<<1)-t2进行二进制计算的左移操作;

当2-s2左移s2位,且(t1-t2)或(1+t1<<1)-t2左移q位时,所述第二编码区间实现归一化,所述q为所述编码区间的算术精度。

具体的,所述算术转换单元506具体还用于:

公式八:

所述r1和r2分别为在原数域中所述算术编码区间和所述第一编码区间的值,所述s1为所述算术编码区间的区间信息,所述s2为所述第一编码区间的区间信息,所述s1为不小于在对数域中所述算术编码区间的整数,所述s2为不小于在对数域中所述第一编码区间的整数;

当所述算术编码区间以9比特表示,所述t1和t2以8bit精度表示时,满足所述公式七,计算得到更新前的所述第二编码区间的值。

具体的,所述第二更新单元504具体还用于:

当lg_pmps的精度等于t1的精度时,若t1大于等于lg_pmps,则s2=s1,t2=t1-lg_pmps;若小于lg_pmps,则s2=s1+1,t2=256+t1–lg_pmps;

在旁路模式下,s2=s1+1,t2=t1;

所述lg_pmps为在对数域中所述第一编码区间的概率,所述t1为所述算术编码区间的区间信息,所述t2为所述第一编码区间的区间信息,所述t1和t2皆为小于1且大于或等于0的实数。

具体的,所述第二更新单元504具体还用于:

当所述lg_pmps的精度高于t1的精度时,若t1大于等于lg_pmps>>lg_pmps_shiftno,则s2=s1,t2=t1-lg_pmps;若小于lg_pmps>>lg_pmps_shiftno,则s2=s1+1,t2=256+t1–(lg_pmps>>lg_pmps_shiftno);

在旁路模式下,s2=s1+1,t2=t1;

所述lg_pmps为在对数域中所述第一编码区间的概率,所述t1为所述算术编码区间的区间信息,所述t2为所述第一编码区间的区间信息,所述t1和t2皆为小于1且大于或等于0的实数,所述lg_pmps_shiftno为所述lg_pmps与所述t1、t2的比特位数的差值。

具体的,所述第二归一化单元505具体还用于:

当所述算术编码区间以9比特表示,所述t1和t2以8bit精度表示,且所述lg_pmps的精度高于t1的精度时,所述第二编码区间进行归一化满足公式八;

公式九:

对所述公式四中的2-s2进行二进制计算的左移操作;

对所述公式四中的(t1-t2)或(1+t1<<1)-t2进行二进制计算的左移操作;

当2-s2左移s2位,且(t1-t2)或(1+t1<<1)-t2左移q位时,所述第二编码区间实现归一化,所述q为所述编码区间的算术精度,所述lg_pmps_shiftno为所述lg_pmps与所述t1、t2的比特位数的差值。

下面对上述各个单元的操作过程进行描述:

符号获取单元501接收信号源的二元符号。

具体的,所述二元符号可以为图像单元模式、帧内预测模式、残差系数、运动矢量等待编码元素经二值化处理后的信号数据。

算术转换单元506判断当前的编码区间是否为对数域,若否,则根据对数与原数间的近似换算法将所述编码区间由原数域转换为对数域。

示例性的,设x的取值范围为[0,1],在这种情况下可以得到以下的数学关系:log(1+x)≈x(0<=x<=1);根据上述数学关系式,可以实现原数域与对数域之间的转换,需要注意的是以上约等式在一定精度范围内成立。在本发明中上述约等式的精度能够满足本发明对于计算精度的要求。

具体的,在实际应用中,通过对数与原数间的近似计算的转换方法,可以避免了查表操作,进一步提高了数据编码的效率。

在确定所述二元符号为mps之后,第一更新单元502在对数域上对所述mps对应的第一编码区间进行更新。

具体的,所述第一编码区间表示编码mps对应的编码区间,第二编码区间表示编码lps对应的编码区间;而算术编码区间为所述数据编码装置维护的一个变量,在初始时为完整的编码区间,且所述第一编码区间和所述第二编码区间的和等于或近似等于所述算术编码区间。

当前的算术编码区间用其区间的区间值r1和下限值low表示,plps表示lps的概率,pmps表示mps的概率,plps+pmps=1。区间r1和low的值更新如下:

r2=r1×pmlps;

lown+1=lown。

示例性的,在对数域对第一编码区间进行更新可以根据以下公式实现:

lg_r2(2)=lg_r2(1)+lg_pmps

所述lg_r2(2)为在对数域中更新后的所述第一编码区间的区间值,所述lg_r2(1)为在对数域中更新前的所述第一编码区间的区间值,所述lg_pmps为在对数域中所述第一编码区间的概率。

具体的,由于mps的编码区间的下限值为不变,因此,在对第一编码区间进行更新或归一化操作时,第一编码区间对应的low值不变。

在完成了所述第一编码区间的更新之后,第一归一化单元503判断是否需要对所述第一编码区间进行归一化处理,若更新后的所述第一编码区间小于算术编码区间的预置范围时,则在对数域上对所述第一编码区间进行归一化处理。

具体的,归一化的原理为:在编码区间达到一定的精度下限后将所述编码区间的区间值和low值扩大一倍,然后判断所述编码区间的区间值是否满足精度要求,如果不满足继续执行归一化操作直到保证所述编码区间的区间值满足精度的要求。

在本发明实施例中,在对第一编码区间进行至少两次更新之后,所述第一编码区间则有可能小于算术编码区间的二分之一,当所述第一编码区间则小于算术编码区间的二分之一时则需要对所述第一编码区间进行归一化处理。

具体的,由于mps的概率大于0.5,因此,在进行一次归一化(即将原来的编码区间乘于二)之后,即可满足编码区间的精度要求。

示例性的,具体的归一化运算可以根据公式六实现

公式六为:

lg_r2(2)=lg_r2(1)+1;

所述lg_r2(2)为在对数域中归一化后的所述第一编码区间的区间值,所述lg_r2(1)为在对数域中归一化前的所述第一编码区间的区间值。

算术转换单元506判断当前的编码区间是否为原数域,若否,则根据对数与原数间的近似换算法将所述编码区间由对数域转换为原数域。

示例性的,设x的取值范围为[0,1],在这种情况下可以得到以下的数学关系:2x≈x+1(0<=x<=1);根据上述数学关系式,可以实现原数域与对数域之间的转换。

具体的,设r1和r2分别为在原数域中所述算术编码区间和所述第一编码区间的区间值,rlps为在原数域中所述第二编码区间的区间值;则算术编码原理可知:rlps≈r1-r2。由上述所设的数值可知,r1和r2在对数域的值为lg_r1=-log(r1);lg_r2=-log(r2)。

进一步的,设s1和t1为所述算术编码区间的区间信息,设s2和t2为所述第一编码区间的区间信息,所述s1为不小于在对数域中所述算术编码区间的整数,所述s2为不小于在对数域中所述第一编码区间的整数,所述t1和t2皆为小于1且大于或等于0的实数;根据上述数值,可得公式十三:

公式十三:

r1、r2在原数域上的值可根据近似计算得到如下公式一:

公式一:

具体的,在本发明实施的公式中,“》”表示二进制计算中右移x位,“《”表示二进制计算中左移x位。

由于0.5<pmps<1,可知:r1>r2>r1/2;进一步可得:lg_r1>lg_r2>lg_r1-1。

因此,结合公式十三,可得如下公式十四:

公式十四:

对所述公式十四进行化简,可得t1-t2-1<s1-s2<t1-t2;

由于t1和t2均是0至1之间的值,所以有:-1<t1–t2<1,以及-2<s1-s2<1;由此可得:s1=s2或s1=s2–1。

由于lps的区间值rlps等于r1-r2=2-s1+t1-2-s2+t2,结合s1=s2或s1=s2–1,可得到公式十五:

公式十五:

结合公式十五,根据对数与原数间的近似换算法可得公式二:

公式二:

上述rlps1即为在原数域中更新前所述第二编码区间的区间值。

第二更新单元504根据所述第一编码区间的概率,所述算术编码区间的区间信息以及第一编码区间的区间信息,确定更新后的所述第二编码区间的区间值;

示例性的,根据所述算术编码区间的区间信息以及第一编码区间的区间信息确定所述lg_pmps的算术表达式(公式三):

公式三:lg_pmps=lg_r1–lg_r2=s1–t1–s2+t2;

进一步的,根据所述公式二以及所述公式三,可得公式四:

公式四:

进一步的,还需要根据所述第一编码区间的区间值,确定更新后的所述第二编码区间的下限值,如以下公式五:

公式五:ow2=low1+r2=low1+2-s2+t2≈low1+(1+t2)>>s2;

第二归一化单元505在原数域上对所述第二编码区间进行归一化处理;

在完成了所述第二编码区间的更新之后,由于lps的概率小于0.5,因此,更新之后则要进行至少一次的归一化处理。

示例性的,可以根据以上述公式二进行归一化处理,具体的:

对所述公式二中的2-s2进行二进制计算的左移操作;

对所述公式二中的(t1-t2)或(1+t1<<1)-t2进行二进制计算的左移操作;

当2-s2左移s2位,且(t1-t2)或(1+t1<<1)-t2左移q位时,所述第二编码区间实现归一化,所述q为所述编码区间的算术精度。

在公式二中2-s2的部分左移s2位可以实现归一化,(t1-t2)或(1+t1<<1)-t2的部分,寄存器最高为1,该情况总共需要左移q位,因此可知,在对lps进行归一化时,归一化次数为s2+q次。由于算术编码区间的精度是预先设定好的,并且在编码mps时区间已经进行过归一化,在编码lps时区间归一化的次数取决于区间的精度。例如,在本发明实施例中编码区间的精度为9比特,而归一化时编码区间的值相比于归一化前扩大一倍,由此可知,在9比特精度下编码lps最大所需归一化次数为9次。

需要注意的是,在计算机系统中使用浮点数进行计算的代价较高,因此上述算术编码方法所涉及的变量均以固定精度的整数变量表示。例如,t1表示算术编码区间值在对数域的小数值,其在实际使用时通过8bit整数精度用以表示t1的值。因此,当以8bit精度进行表示时,t1实际的浮点数的值等于t1的值除以256。为了便于理解,下面以计算机系统在实际环境下执行的方法流程进行描述:

在本发明中设算术编码区间以9比特表示,t1、t2以8bit精度表示。由此可知,上述公式一的表述形式可以更改成如下形式:

公式十六:

由所述公式一推导可得公式十七:

由于算术编码区间以9比特表示,因此上述公式十七可表示为公式十八:

因此,当使用8比特精度表示t1和t2时,由公式lg_r2(2)=lg_r2(1)+lg_pmps及公式十四的推论s1=s2或s1=s2-1可得:

如果t1大于等于lg_pmps,则s2=s1,由此可得t2=t1-lg_pmps

如果小于lg_pmps,s2=s1+1,由此可得t2=256+t1–lg_pmps

在旁路模式下,s2=s1+1,t2=t1;

此外,考虑到lg_pmps的精度越大,对数域算术编码的性能越好,因此lg_pmps往往使用精度更高的整数表示,例如10比特精度,设lg_pmps_shiftno为lg_pmps高于t1、t2的比特位数,则上述结论可表示为:

如果t1大于等于lg_pmps>>lg_pmps_shiftno,则s2=s1,由此可得t2=t1-lg_pmps

如果t1小于lg_pmps>>lg_pmps_shiftno,s2=s1+1,由此可得t2=256+t1–(lg_pmps>>lg_pmps_shiftno),在旁路模式下,s2=s1+1,t2=t1;

当编码mps完成后进行区间更新,将s2、t2的值赋值给s1、t1。

根据所述公式十八可知当s1大于0时r1的值必然小于256,由此可知此时编码完mps之后区间值小于9比特表示的算术编码区间值(512)的,此时需要进行归一化操作。因此,可以根据更新后的s1值判断编码mps完毕后是否需要进行归一化操作。

同理,当t1、t2以8比特精度表示,lg_pmps_shiftno为lg_pmps高于t1、t2的比特位数时,编码lps完毕后,其区间值为:

需要注意的是,由于编码lps之后必然要进行归一化操作,而归一化之后区间会左移s2+q位,因此rlps2更新后的数值可以不需要考虑因子2-s2,因此上述公式可变更为:

由此可得,当编码完lps之后,进行归一化操作时区间值rlps2只需要左移q位,但归一化操作的次数仍为s2+q次。

下面对实现本发明实施例中视频数据解码方法的数据解码装置进行描述,需要说明的是,上述数据解码方法各实施例中所记载的方法可实施于本发明的数据解码装置。请参阅图6,本发明实施例中数据解码装置的一个实施例包括:

码流获取单元601,用于获取图像数据的二元码流,并初始化所述二元码流的算术编码区间以及码流指针,所述码流指针为所述算术编码区间的下限值的偏移量;

区间确定单元602,用于在对数域中,根据大概率符号mps的概率以及所述算术编码区间确定所述mps对应的第一编码区间的区间值;

第一区间更新单元603,用于当所述码流指针大于或等于所述第一编码区间的值,则确定当前解码得到的二元符号为小概率符号lps,将所述算术编码区间的区间值更新为所述lps对应的第二编码区间的区间值,且将所述码流指针的值更新为原所述码流指针与所述第一编码区间的上限值的差值;

第二区间更新单元604,用于当所述码流指针小于所述第一编码区间的值,则确定当前解码得到的二元符号为mps,并将所述算术编码区间的区间值更新为所述第一编码区的区间值,所述码流指针不变。

进一步的,所述装置还包括:

转换单元605,用于若当前的编码区间在对数域中,则所述确定当前解码得到的二元符号为小概率符号lps之前,或所述确定当前解码得到的二元符号为mps之前,将所述编码区间由对数域转换至原数域中,所述码流指针的值和所述更新后码流指针的值为原数域的值。

具体的,所述转换单元605具体用于:

公式十:r2≈(1+t2)>>s2;

所述r2为mps对应的编码区间的区间值,s2和t2为所述第一编码区间的区间信息,所述s2为不小于在对数域中所述第一编码区间的整数,所述t2皆为小于1且大于或等于0的实数;

满足所述公式十,计算得到所述第一编码区间的区间值。

具体的,所述第一区间更新单元603具体用于:

公式十一:offsetnew=offset-r2;

具体地,为了满足公式十一的精度要求,在具体计算时会将r2的值扩大s2倍,offset的值相应地扩大s2倍。

所述的offsetnew为更新后码流指针的值,所述的offset为码流指针的值,所述的r2为mps对应的编码区间的区间值;

满足所述公式十一,计算得到更新后的码流指针的值。

进一步的,所述装置还包括:

判断单元605,用于判断所述的第一编码区间的值和码流指针的值,所述码流指针的值和所述更新后码流指针的值为对数数域的值。

具体的,所述第一区间更新单元603具体用于:

公式十九:

所述offset为所述码流指针,所述value_s和valuet为所述码流指针的区间信息,所述value_s为不小于在对数域中所述码流指针的整数,所述valuet为小于1且大于或等于0的实数;

具体地,对所述公式十九中的2-s2进行二进制计算的左移操作。

对公式四中的2-s2也进行二进制计算的左移操作。

满足所述公式十九,计算得到更新后的码流指针的值。

具体的,判断所述码流指针与所述第一编码区间的上限值的差值时,包括:

如果offset为原数域,则可以根据十一的方法更新码流指针的值。

如果offset为对数域,则根据十九的方法更新码流指针的值,简化解码流程。

具体的,所述区间确定单元具体用于:

公式十二:lg_r2=lg_r1+lg_pmps;

所述lg_pmps为在对数域中所述第一编码区间的概率,所述lg_r1和lg_r2分别为在对数域中所述算术编码区间和所述第一编码区间的区间值;

满足所述公式十二,计算得到所述mps对应的第一编码区间的区间值。

进一步的,所述转换单元605的功能包括在将所述算术编码区间的区间值更新为所述第一编码区的区间值之前,将所述编码区间由原数域转换至对数域中。

进一步的,所述转换单元605包括在所述算术编码区间的区间值更新为所述第一编码区的区间值之前,比较第一编码区的区间值和码流指针的值。

下面对上述各个单元的操作过程进行描述:

码流获取单元601接收信号源的二元码流,并初始化所述二元码流的算术编码区间以及码流指针,所述码流指针为所述算术编码区间的下限值的偏移量。

具体的,所述二元码流为数据编码后的二元符号。

区间确定单元602根据大概率符号mps的概率以及所述算术编码区间确定所述mps对应的第一编码区间的区间值。

具体的,可以满足公式十二,计算得到所述mps对应的第一编码区间的区间值。

公式十二:lg_r2=lg_r1+lg_pmps;

所述lg_pmps为在对数域中所述第一编码区间的概率,所述lg_r1和lg_r2分别为在对数域中所述算术编码区间和所述第一编码区间的区间值;

判断所述码流指针是否小于所述第一编码区间的区间值,若是,则执行第一区间更新单元603;若否,则执行第二区间更新单元604。

具体的,若当前的编码区间为对数域,则根据对数与原数间的近似换算法将所述编码区间由对数域转换为原数域。码流指针所指向的值为原数域中所述算术编码区间的下限值的偏移量。

当所述码流指针小于所述第一编码区间的区间值,则第一区间更新单元603确定当前解码得到的二元符号为mps,并将所述算术编码区间的区间值更新为所述第一编码区的区间值,所述码流指针不变。

可选的,在将所述算术编码区间的区间值更新为所述第一编码区的区间值之前,可以将所编码区间由原数域转换为对数域。

可选的,在完成了所述第一编码区间的更新之后,判断是否需要对所述第一编码区间进行归一化处理,若更新后的所述第一编码区间小于算术编码区间的一半时,则在对数域上对所述第一编码区间进行归一化处理。

在本发明实施例中,在对第一编码区间进行至少两次更新之后,所述第一编码区间则有可能小于算术编码区间的二分之一,当所述第一编码区间则小于算术编码区间的二分之一时则需要对所述第一编码区间进行归一化处理。

具体的,由于mps的概率大于0.5,因此,在进行一次归一化(即将原来的编码区间乘于二)之后,即可满足编码区间的精度要求。

示例性的,具体的归一化运算可以根据公式六实现

公式六为:

lg_r2(2)=lg_r2(1)+1;

所述lg_r2(2)为在对数域中归一化后的所述第一编码区间的区间值,所述lg_r2(1)为在对数域中归一化前的所述第一编码区间的区间值。

若当前的编码区间在对数域中,则所述确定当前解码得到的二元符号为小概率符号lps之前,或所述确定当前解码得到的二元符号为mps之前,转换单元605将所述编码区间由对数域转换至原数域中,所述码流指针的值和所述更新后码流指针的值为原数域的值。

若当前的编码区间在对数域中,则所述确定当前解码得到的二元符号为小概率符号lps之前,或所述确定当前解码得到的二元符号为mps之前,判断单元605可以判断所述第一编码区间的区间值和码流指针的值,所述码流指针的值和所述更新后码流指针的值为对数域的值。

当所述码流指针大于或等于所述第一编码区间的区间值,则第二区间更新单元604确定当前解码得到的二元符号为小概率符号lps,并将所述编码区间切换至原数域中,将所述算术编码区间的区间值更新为所述lps对应的第二编码区间的区间值,且将所述码流指针的值更新为原所述码流指针与所述第一编码区间的上限值的差值。

具体的,将所述码流指针的值更新为原所述码流指针与所述第一编码区间的上限值的差值的方法可以参考公式十一:

公式十一:offsetnew=offset-r2;

具体地,为了满足公式十一的精度要求,在具体计算时会将r2的值扩大s2倍,offset的值相应地扩大s2倍。

所述的offsetnew为更新后码流指针的值,所述的offset为码流指针的值,所述的r2为mps对应的编码区间的区间值。

具体的,若当前的编码区间为对数域,则根据对数与原数间的近似换算法将所述编码区间由对数域转换为原数域。

具体的,将所述码流指针的值更新为原所述码流指针与所述第一编码区间的上限值的差值的方法可以参考公式十九:

所述offset为所述码流指针,所述value_s和valuet为所述码流指针的区间信息,所述value_s为不小于在对数域中所述码流指针的整数,所述valuet为小于1且大于或等于0的实数;

具体地,对所述公式十九中的2-s2进行二进制计算的左移操作。

对公式四中的2-s2也进行二进制计算的左移操作。

具体的,判断所述码流指针与所述第一编码区间的上限值的差值时,包括:

如果offset为原数域,则可以根据十一的方法更新码流指针的值。

如果offset为对数域,则根据十九的方法更新码流指针的值,简化解码流程。

具体的,当前的算术编码区间的区间值为r1,当前的偏移量为offset,plps表示lps的概率,pmps表示mps的概率,plps+pmps=1。区间rlps和偏移量offset的值更新如下:

rlps=r1-r1×pmps;

offsetn+1=offsetn-rn×pmps。

可选的,在完成了所述第二编码区间的更新之后,由于lps的概率小于0.5,因此,更新之后则要进行至少一次以上的归一化处理。

具体的,由于lps的编码区间的下限值为第一编码区间的上限值,因此,在对第二编码区间进行更新或归一化操作时,要根据第一编码区间的上限值更新offset值。

具体的,由于转换为原数域得编码的第二编码区间的区间值用2的x次方表示,因此,在计算机执行归一化运算时,可以以二进制的方式进行移位计算。

可选的,为了便于之后mps进行第一编码区间的更新,可以将在原数域更新后的区间值转换到对数域,具体实现是通过公式七。

具体地,对所述公式十九中的2-s2进行二进制计算的左移操作。

对公式四中的2-s2也进行二进制计算的左移操作。

在本发明实施例中,在接收到信号源的二元码流之后,确认该二元符号为mps还是lps,当确认是mps时,在对数域中进行算术编码,由于使用了对数进行mps区间更新,使得在计算的过程中使用加法操作代替了乘法操作;当确认是lps时,在原数域中进行算术编码。

在现有技术中,offset的值是通过对数域中的信息offset_s和offset_t来表示的,这样在解码lps时需要进行对数域到原数域的转换,在解码lps后需要进行原数域到对数域的转换。这种频繁的转换操作不利于硬件算术解码器的实现,并且在offset精度很高时,实现更加困难。在本发明实施了中,由于在offset一直在原数域,避免了频繁的转换操作,有利于硬件的实现。

可选的,可以在对数域本发明实施例的解码过程,本发明实施例中数据解码装置的另一个实施例包括:

码流获取单元601接收信号源的二元码流,并初始化所述二元码流的算术编码区间以及码流指针,所述码流指针为所述算术编码区间的下限值的偏移量。

具体的,所述二元码流为数据编码后的二元符号。

在本发明实施例中,所述数据解码装置为具备本发明实施例中数据编码功能的设备;具体可以为独单的物理设备,包括多个物理模块;也可以为加载在计算机上的软件程序,或一个软件中的功能模块,或单独软件的形式或以插件的形式存在。

区间确定单元602确定所述mps对应的第一编码区间的区间值;

在对数域中,区间确定单元602根据大概率符号mps的概率以及所述算术编码区间确定所述mps对应的第一编码区间的区间值。

具体的,mps对应的编码区间在对数域上区间值满足如下公式七:

公式七:lg_r2=lg_r1+lg_pmps;

所述lg_pmps为在对数域中所述第一编码区间的概率,所述lg_r1和lg_r2分别为在对数域中所述算术编码区间和所述第一编码区间的区间值;

满足所述公式七,计算得到所述mps对应的第一编码区间的区间值。

进一步的,可以通过近似计算确定第一编码区间在原数域的区间值;

根据对数域所述mps对应的第一编码区间的s2,t2,通过近似计算确定mps对应的第一编码区间在原数域的区间值。

具体的,mps对应的编码区间在对数域上区间值满足如下公式十:

公式十一:r2≈(1+t2)>>s2;

所述r2为mps对应的编码区间的区间值,s2和t2为所述第一编码区间的区间信息,所述s2为不小于在对数域中所述第一编码区间的整数,所述t2皆为小于1且大于或等于0的实数;

判断所述第一编码区间的区间值是否小于所述码流指针;

数据解码装置判断所述码流指针是否小于所述第一编码区间的区间值,若是,则执行第一区间更新单元603;若否,则执行第二区间更新单元604。

具体的根据offset和公式十中r2的值进行判断,码流指针offset所指向的值为原数域中所述算术编码区间的下限值的偏移量。

第一区间更新单元603将所述算术编码区间的区间值更新为所述第一编码区的区间值;

若在对数域中,当所述码流指针小于所述第一编码区间的区间值,则确定当前解码得到的二元符号为mps,并将所述算术编码区间的区间值更新为所述第一编码区的区间值,所述码流指针不变。

第二区间更新单元604将所述码流指针的值更新为所述码流指针与所述第一编码区间的上限值的差值;

若在对数域中,当所述码流指针大于或等于所述第一编码区间的区间值,则确定当前解码得到的二元符号为小概率符号lps,并将所述编码区间切换至原数域中,将所述算术编码区间的区间值更新为所述lps对应的第二编码区间的区间值,且将所述码流指针的值更新为所述的码流指针减所述第一编码区间的上限值。

具体的,所述将所述编码区间切换至原数域中,将所述算术编码区间的区间值更新为所述lps对应的第二编码区间的区间值,包括:

由于lps对应的子区间rlps大小为r1-r2,因此在编码过程中推导得到:

由于当s2=s1时,t1-t2=lg_pmps;当s2=s1+1时,1+t1-t2=lg_pmps,由以上的公式可推导得到如下公式四:

公式四:

所述rlps为在原数域中更新后的所述第二编码区间的区间值,所述lg_pmps为在对数域中所述第一编码区间的概率,所述s1和t1为所述算术编码区间的区间信息,所述s2和t2为所述第一编码区间的区间信息,所述s1为不小于在对数域中所述算术编码区间的整数,所述s2为不小于在对数域中所述第一编码区间的整数,所述t1和t2皆为小于1且大于或等于0的实数;

满足所述公式四,计算得到在原数域中更新后的所述第二编码区间的区间值。

可选的,为了便于之后mps进行第一编码区间的更新,可以将在原数域更新后的区间值转换到对数域,具体实现是通过公式七。

具体的,所述将所述码流指针的值更新为所述的码流指针减所述第一编码区间的上限值,可以参考公式十和公式十一:

公式十:r2≈(1+t2)>>s2

公式十一:offsetnew=offset-r2

所述的offsetnew为更新后码流指针,所述的offset为码流指针的值,所述的r2为mps对应的编码区间的区间值,s2和t2为所述第一编码区间的区间信息,所述s2为不小于在对数域中所述第一编码区间的整数,所述t2皆为小于1且大于或等于0的实数;

。满足所述公式十一,计算得到更新后的码流指针的值。

在实际应用中,由于rlps和offset同时左移,因此,相同的因子2-s2可不计;具体的,在数据解码过程中,计算机进行编码区间更新时执行的代码可以为:

首先左移使得range的最高比特位是’1’

完成后更新lg_r1的整数和小数部分:

s1=0;

t1=rlps低8位。

具体的,所述将所述码流指针的值更新为所述的码流指针减所述第一编码区间的上限值,可以参考公式十和公式十九:

所述offset为所述码流指针,所述value_s和valuet为所述码流指针的区间信息,所述value_s为不小于在对数域中所述码流指针的整数,所述valuet为小于1且大于或等于0的实数;

具体地,对所述公式十九中的2-s2进行二进制计算的左移操作。

对公式四中的2-s2也进行二进制计算的左移操作。

满足所述公式十九,计算得到更新后的码流指针的值。

在实际应用中,由于rlps和offset同时左移,因此,相同的因子可不计;具体的,在数据解码过程中,计算机进行编码区间更新时执行的代码可以为:

首先左移使得range的最高比特位是’1’

其中readbit(1)表示从码流中读取1比特内容并根据该比特的读取内容确定readbit(1)的数值,如readbit(1)读取的比特位‘1’则readbit(1)的值为1;否则,如readbit(1)读取的比特位‘0’则readbit(1)的值为0。

完成后更新lg_r1的整数和小数部分:

s1=0;

t1=rlps低8位。

具体的,判断所述码流指针与所述第一编码区间的上限值的差值时,包括:

如果offset为原数域,则可以根据十一的方法更新码流指针的值。

如果offset为对数域,则根据十九的方法更新码流指针的值,简化解码流程。

图7是本发明一个实施例的编码端的编码流程图,该编码端通常是一个编码装置,例如编码器,还可以是一个集成所述编码装置的设备,例如移动终端,本发明实施例中的数据编码装置在图7中的熵编码单元中实现。

首先,由视频采集设备(图中未示出)采集到的原始图像被输入到图7所示的一个编码装置。输入的原始图像700被图像划分单元701划分为多个不重叠的原始图像块数据703,当前操作的对象称之为当前编码块,当前编码块还可以继续划分为子图像块(原始子图像块),这种划分的方法是公知的,此处不做赘述。需要说明是的,输入的原始图像在被输入到图像划分单元之前还可以进行预处理,例如滤波处理,但这不是必须的。假设划分后的子图像块的大小为nxn,则表示该块是一个n行乘以n列的二维像素阵列,其水平与竖直方向均为n像素大小。其中,上述n为正整数,例如n可等于2的x次幂,x为自然数。需要特别说明的是,还可以划分成2nxn、nx2n等方式。

编码端对原始子图像块进行预测操作以获取其中原始图像块数据(原始图像像素)的预测块702。其中,预测操作一般可以分为帧间预测和帧内预测,帧间预测由帧间预测单元711执行,帧内预测由帧内预测单元712执行。在得到原始子图像块和原始图像块数据对应的预测块以后,进一步计算原始图像块数据703与预测块702的像素差值,得到编码块的残差数据704,残差数据被输入到变换/量化单元713。变换/量化单元713对残差数据执行变换、量化操作得到变换量化后的当前块的变换系数705,变换、量化的具体方法是公知的,此处不做重复。变换量化后的当前块的变换系数705被送到本发明的熵编码装置715进行处理。熵编码装置715对换量化后的当前块的变换系数705进行扫描(例如,zigzag)得到当前块的一维序列,再进行二制化操作得到二元码流。另外,经过变换和量化之后的变换量化系数705经过反量化、反变换单元714的处理得到重建的残差706,所谓反量化、反变换的操作一般是量化、变换的逆向操作。然后将重建的残差706与当前编码块的预测值702相加得到该块的图像块重建数据,图像块重建数据被输送给重建单元707该重建单元707可以包括存储装置,用于存储图像块重建数据。当前块的重建单元707会被用于预测后续的编码块,所述后续编码块可以是当前编码图像中的待处理编码块,也可以是后续待编码图像中的编码块。

解码端需要对编码后的图像块进行重建以还原原始图像,重建时,需要对解码器接收到的数据首先进行熵解码,熵解码后的数据被反扫描得到重建的变换量化系数,该重建的变换量化系数被施以反量化、反变换、预测、重建等操作以得到图像块重建数据,上述步骤和编码端的步骤相应,以得到解码图像。所述解码端可以为视频解码器,该视频解码器可集成于移动终端上。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1