发明内容
H.264/AVC可缩放扩展SVC还提供了其他可缩放性类型,例如空间可缩放性。在空间可缩放性中,BL和EL中的像素数是不同的。因此,出现了如何将比特深度可缩放性与其他可缩放性类型(尤其是空间可缩放性)相结合的问题。本发明提供了一种该问题的解决方案。
权利要求1公开了一种编码方法,其允许比特深度可缩放性与其他可缩放性类型相结合。权利要求6公开了一种对应的解码方法。
在权利要求10中公开了一种利用该编码方法的设备,在权利要求11中公开了一种利用该解码方法的设备。
根据本发明,在层间预测中采用基于查找表(LUT)的逆色调映射,以便改进编码效率。基于LUT的逆色调映射技术用于如下EL图像元素:其中对于对应位置(collocated)的BL图像元素进行帧内编码。共有图像元素是宏块(MB)、块、像条(slice)、图像或图像组。例如,对于像条级,基于重构后的BL I-像条和对应位置的原始EL像条,在编码器创建LUT。具体地,可以将LUT以分级方式插入比特流。例如,在AVC兼容的比特流中,基于整个序列,产生一个LUT作为“基”LUT;基于不同的帧,还可以产生较低级LUT;此外,如果需要,还可以在比特流内传送像条级LUT。为了减小LUT引入的开销,在LUT的每一级,仅对其与紧接的上级LUT的差值进行编码。在SVC结构内可以实现整个方案,且支持与时间、空间和SNR可缩放性这些其他类型可缩放性的兼容。
在一个实施例中,在两个逻辑步骤中对BL信息进行上采样,一个步骤是纹理(texture)上采样,另一个步骤是比特深度上采样。纹理上采样是增加像素数的过程,比特深度上采样是增加每个像素可具有的数值数目的过程。该数值与像素的(颜色)强度相对应。上采样后的BL图像元素用于预测对应位置的EL图像元素。编码器从EL视频数据产生残差,可以将该残差进一步进行编码(通常是熵编码)并发送。要被上采样的BL信息可以有任何粒度,例如单个像素单位、像素块、MB、像条、整个图像或图像组。此外还可以在单个步骤中执行这两个逻辑上采样步骤。在编码器一侧对BL信息上采样,并以同样的方式在解码器一侧对其上采样,其中该上采样涉及空间和比特深度特性。
此外,通常可以执行结合的空间和比特深度上采样,用于帧内编码以及帧间编码图像。然而,如果对于对应位置BL进行帧内编码,则仅定义和使用根据本发明的分级LUT。
具体地,本发明公开了一种对具有基层和增强层的视频数据进行编码的方法,其中基层像素比增强层像素具有更小的比特深度和更低的空间分辨率,所述方法包括以下步骤:
在第一粒度级上对基层数据进行编码,所述第一粒度级例如是GOP级、多个图像级或像条级,其中对基层数据进行帧内编码,
重构编码后的基层数据,
为帧内编码后的基层数据(用作增强层数据的第一预测版本)产生第一色调映射表,此表定义了重构后的基层数据与对应原始增强层数据之间的单独映射,
为帧内编码后的基层数据片段产生不同的第二色调映射表,此表定义了重构后的基层数据的所述片段与对应原始增强层数据的对应片段之间的单独映射,
产生差值表,此表表示第一与第二色调映射表之间的差值(即:第二与第一色调映射表的偏差),
基于所述第一和第二色调映射表,对基层数据进行比特深度上采样,其中对于基层数据的所述片段,仅使用第二色调映射表,且获得对应增强层数据的第二预测版本,其比增强层数据的第一预测版本具有更高的比特深度分辨率,
产生增强层残差,其为原始增强层数据与对应增强层数据的第二预测版本之间的差值,以及
对增强层残差、第一色调映射表和所述差分表进行编码,其中编码后的第一色调映射表与编码后的基层或增强层数据相关联,且差分表与编码后的基层数据或增强层数据的所述片段相关联。
在一个实施例中,在比特深度上采样之前,对重构后的基层数据进行空间、时间或SNR上采样,其中,获得对应增强层数据的第一预测版本,其比基层数据具有更高的空间、时间或SNR分辨率。然后第一映射表大体上定义了上采样的、重构后的BL数据与对应原始EL数据之间的色调映射,第二色调映射表定义上采样的、重构后BL数据与对应原始EL数据的对应片段之间的映射。此外,在该实施例中,比特深度上采样所涉及的EL数据的第一预测版本不同于BL数据,这是由于对该EL数据的第一预测版本进行了上采样。
根据本发明的一个方面,公开了一种对视频数据进行解码的方法,所述方法包括以下步骤:
从编码后的EL数据或BL数据提取与帧内编码后EL数据相关的第一和第二色调映射数据,
从提取的色调映射数据重构第一色调映射表,
从提取的色调映射数据和所述重构后的第一色调映射表重构第二色调映射表,其中,所利用提取的色调映射数据表示所述第一与第二色调映射表之间的差值,
确定与第一色调映射表相关的第一编码单元、以及与第二色调映射表相关的第二编码单元,其中,第二编码单元是所述第一编码单元的一小部分,
对接收到的BL数据和EL数据执行反量化和反变换,其中,反量化和反变换后的EL数据包括残差,
重构帧内编码后的BL数据,
对重构后的BL数据进行上采样,其中增加了每像素的值深度,且对于所述第二编码单元中的像素,使用第二色调映射表,而对于第一编码单元的剩余像素,使用第一色调映射表,且获得预测的EL数据,以及
从预测的EL数据以及反量化和反变换后的EL数据,重构出重构的EL视频数据。
可以将所采用的原则理解为通用和例外的LUT:通常,第一LUT对于指定范围是有效的,例如:对于像条,除所述范围内指定的子范围,例如像条内的MB。在指定的子范围中,第二LUT是有效的。原则上,在指定的子范围内,第二色调映射表重写第一色调映射表。可以将该原则扩展到一些或所有可用的编码级。
根据本发明的另一方面,公开了一种信号,其包括基层视频数据和增强层视频数据,基层比增强层具有更小的颜色比特深度,其中基层数据包括帧内编码后的视频数据,且其中所述信号进一步包括与帧内编码后的视频数据的第一层级(例如图像)相关的第一色调映射数据,并进一步包括与视频数据的所述第一层级内所定义的分段(fraction)(例如特定像条或MB)相关的第二色调映射数据。第一色调映射数据表示第一表,用于除所述分段之外的、基层的所述第一层级的像素的比特深度上采样,第二色调映射数据表示第二表与所述第一表之间的差值,其中所述第二表用于所述分段的像素的比特深度上采样。此处,术语“分段”大体上是指图像单元,例如MB、图像、GOP和图像序列。
根据另一方面,公开了相应的设备。
在本发明的一个实施例中,提出了一种对视频数据编码或解码的设备,所述编码或解码设备进一步包括:执行空间(残差或纹理)上采样的装置以及执行颜色比特深度上采样的装置,其中用于空间上采样的装置增加了BL信息内的数值数目,用于颜色比特深度上采样的装置增加了值的颜色范围,且其中获得了经过空间和颜色比特深度上采样后的BL数据。
本编码方案的各种实施例可与H.264/AVC以及H.264/AVC可缩放扩展(SVC)中定义的全部种类的可缩放性兼容。
在从属权利要求、以下说明书和附图中公开了本发明的有利实施例。
具体实施方式
如图1所示,使用两个视频作为向视频编码器的输入:N比特原始视频和M比特(M<N,通常M=8)视频。该M比特视频可以是从N比特原始视频中分解的,或通过其他方式给出的。该可缩放方案可以通过使用BL的图像,来减小两层之间的冗余。这两个视频流,一个有8比特颜色,另一个有N比特颜色(N>8),将它们输入至编码器,输出的是可缩放比特流。仅输入一个N比特颜色数据流也是可以的,为BL从该N比特颜色数据流内部产生M比特(M<N)颜色数据流。使用所包括的H.264/AVC编码器,将该M比特视频编码为BL。可以使用BL信息,来改进EL的编码效率。这在此处被称为层间预测。每个图像——一组MB——具有两个接入单元,一个用于BL,另一个用于EL。对编码后的比特流进行多路传输,以形成可缩放比特流。BL编码器包括例如H.264/AVC编码器,且使用重构来预测将要用于EL编码的N比特颜色视频。
如图1所示,可缩放比特流示例性地包含可被BL解码器(传统AVC解码器)解码的、适合于AVC的BL比特流。然后,在解码器一侧将完成与编码器中相同的预测(在对各自指示进行估计之后),以得到预测的N比特视频。然后,利用该N比特预测视频,EL解码器将使用N比特预测,来为高质量显示器HQ产生最终N比特视频。
当此处使用术语“颜色比特深度”时,它指示比特深度,即每数值比特数。这通常与颜色强度相对应,但也可指亮度信道Y中的灰度值。
在一个实施例中,本发明基于SVC空间、时间和质量可缩放性的当前结构,并由增强了的颜色比特深度的比特深度可缩放性来增强。因此,该实施例与当前SVC标准完全兼容。然而,技术人员将其适配于其他标准将会是容易的。比特深度可缩放性的关键是比特深度层间预测。通过使用层间预测,将N比特与M比特视频之间的差值编码为EL。
本发明应用了基于LUT的逆色调映射技术,用于比特深度可缩放编码的层间预测,该技术改进了编码效率。基于重构后的BL编码单元(GOP、图像、像条或MB)与对应位置的原始EL编码单元之间的关系,在编码器处创建LUT。
通常,对每个亮度/色度信道:Y、Cb和Cr,创建一个LUT。实际上,这些不同的信道中的两个或所有三个可以共享相同的LUT。如果两个或更多个不同的LUT应用于相同的编码级,则还可以对它们进行差分编码,例如LUTY、LUTCb-Y、LUTCR-Y。然后,在层间预测过程中,在编码器处使用已创建的LUT,以对BL与EL之间的冗余进行去相关。将LUT插入比特流中,并可在解码器端恢复出该LUT。解码器在层间预测中使用相同的LUT,从而可以以高质量重构EL。
色调映射LUT所查阅的BL和EL数据可以处于任何层级,例如图像序列、图像、像条、宏块(MB)、块(以降序排列)。为了对不同级的LUT进行去相关,对于每级(除最高级外),仅对其与紧接更高一级的差值进行编码。该差分查找表被称作“增量(delta)LUT”。例如,为诸如GOP(图像组)级之类的最高级产生一个LUT。可以为例如4个图像的子组级产生另一个LUT。然后,可以产生表示该子组LUT与该组/GOP LUT之间差值的差分表。可以为单个图像产生另一个LUT。然后,产生表示该子组LUT与该图像LUT之间差值的相应增量LUT。以相同的方式,可以在像条级和Mb级上产生另外的LUT。对于这些级的每一个,产生相对于其紧接更高一级LUT的增量LUT。这在图5中示出。然而,不必为每一级都产生LUT,例如可以跳过图像级。然后,像条级增量LUT返回查阅下一个更高级,例如GOP级LUT。同样可能发生为相同级产生了多于一个LUT和增量LUT的情况。例如,第一LUT/增量LUT查阅GOP(或子组)内的第一图像,第二LUT/增量LUT查阅相同GOP(或子组)内的另一第二个图像。然后,这两个增量LUT返回查阅相同的GOP(或子组)LUT。
为了进一步减小比特流中LUT的开销,在一个实施例中使用差分编码技术,对较低级的LUT和/或增量LUT进行编码。LUT的编码和解码过程的数学表达式如下。
假定NB和NE分别表示基层(BL)和增强层(EL)的比特深度,对于单个信道,由BL信号预测EL信号的LUT表示为LUT={V(0),V(1),...,V(2NB-1)},其中BL的级从0到2NB-1,而EL的级从0到2NE-1。因此,根据LUT,在层间比特深度预测过程中将BL中的级i映射到EL中的级V(i)。
在编码器处,通过对相邻值的差分,来对最高级LUT进行编码。仅对以下值进行熵编码:
V(0),V(1)-V(0),V(2)-V(1),...,V(2NB-1)-V(2NB-2) (1)
条目总数为2NB。对于较低级LUT,我们首先根据下式为每个级i计算增量LUT:
ΔLUTi=LUTi-LUTi-1≡{Vi(0)-Vi-1(0),Vi(1)-Vi-1(1),…,Vi(2NB-1)-Vi-1(2NB-1)}
(2)
还可使用方程(1)中的方法,对增量LUT进行编码。此外,由于Vi(k)-Vi-1(k)中的许多都为零,所以霍夫曼型的扫描宽度编码可以是有利的。
根据本发明的一个方面,仅当对BL数据进行帧内编码时,使用基于LUT的逆色调映射技术。这具有如下优点:该技术适合于例如在当前SVC标准中使用的对帧内编码后的图像和片段的单环路解码,并且它适合于例如也在当前SVC标准中支持的其他类型可缩放性。
图2示出了一种编码器,用于将与当前SVC标准中使用的相同的空间可缩放性的帧内纹理层间预测扩展到比特深度可缩放性。比特深度上采样块BDUp与查找表(LUT)产生块LUTGEN和LUT熵编码块ECLUT一起表示向比特深度可缩放性的扩展,而其他块也用于空间可缩放性。这些块BDUp、LUTGEN、ECLUT和它们的连接是传统SVC帧内编码器与根据本发明的帧内编码器之间的区别。
然而,需要注意,比特深度上采样不必然需要空间(纹理)、时间或SNR上采样。然而,本发明的一个优点是:可以将不同类型的可缩放性相结合。
在图2中,将M比特基层MB输入到编码器,将N比特增强层MB输入到EL编码器(N>M)。在当前SVC标准中,为空间的帧内纹理层间预测设计了纹理上采样。在图2中,纹理上采样TUp的输入是重构后的BL宏块BLREC,输出是EL宏块的空间(纹理)预测版本Pret{BLrec}。通过(在该示例中)直接跟在纹理上采样TUp之后的比特深度上采样BDUp的步骤,实现比特深度可缩放性。实际上,首先将纹理上采样应用为空间层间预测通常是有利的,然后将比特深度上采样BDUp应用为比特深度层间预测。然而,预测步骤的倒序是可以的。利用纹理上采样TUp和比特深度上采样BDUp,获得N比特EL宏块的预测版本Prec{Pret{BLrec}}。对于每个MB,使用至少两个所定义的LUT中的一个。基于重构后的BL和原始EL图像数据的特性,在LUT产生块LUTGEN中产生LUT。比特深度上采样块BDUp使用LUT,且还将LUT输出到编码器,这是由于LUT对于解码而言是必要的,因此必须将它们发送到解码器。如上所述,在LUT熵编码单元ECLUT中对LUT进行编码。
通过差分产生器DEL,获得原始N比特EL宏块ELorg与其预测版本Prec{Pret{BLrec}}之间的残差EL’res。在本发明的一个实施例中,对该残差进一步变换T、量化Q并熵编码ECEL,以形成EL子比特流,如在SVC中。在数学表达式中,颜色比特深度帧内上采样的残差为:
EL’res=ELorg-Prec{Pret{BLrec}} (3)
其中Pret{}表示纹理上采样运算符。
编码过程的不同变体是可能的,并且可以通过控制参数来控制变体。图2中示出了示例性标志base_mode_flag,其确定是基于重构后的EL信息还是基于上采样后的BL信息预测EL残差。
以下,示出了该技术方案的示例性实施例,以在SVC比特深度可缩放性中实现基于分级LUT的逆色调映射。详细地,将一些新的语法元素添加到如表1的第25-41行示例性示出的可缩放扩展中的序列参数集。使用以下符号:
inv_tone_map_flag等于1说明在层间预测中会调用逆色调映射的过程。inv_tone_map_flag等于0说明在层间预测中不会调用逆色调映射的过程(缺省)。
level_lookup_table_luma_minus8加8说明Y信道的查找表的级数。
offset_val_lookup_table_luma[i]说明值s[i],Y信道的查找表中的级i以如下方式映射到该值s[i]:
如果i不等于0,则s[i]等于s[i-1]加上offset_val_lookup_table_luma[i],其中s[i-1]是Y信道中的级i-1所映射到的值。
如果i等于0,则s[i]等于offset_val_lookup_table_luma[i]。
chroma_inv_tone_map_flag等于1说明在Cb和Cr信道的层间预测中会调用逆色调映射的过程。
level_lookup_table_chroma_minus8加8说明Cb和Cr信道的LUT的级数。
offset_val_lookup_table_cb[i]说明值s[i],Cb信道的查找表中的级i以如下方式映射到该值s[i]:
如果i不等于0,则s[i]等于s[i-1]加上offset_val_lookup_table_cb[i],其中s[i-1]是Cb信道中的级i-1所映射到的值。如果i等于0,则s[i]等于offset_val_lookup_table_cb[i]。
cr_inv_tone_map_flag等于0说明在Cr信道的层间预测中再次使用Cb信道的LUT。cr_inv_tone_map_flag等于1说明在Cr信道的层间预测中使用除Cb信道的LUT以外的不同的查找表。
offset_val_lookup_table_cr[i]说明值s[i],Cr信道的LUT中的级i以如下方式映射到该值s[i]:
如果i不等于0,则s[i]等于s[i-1]加上offset_val_lookup_table_cr[i],其中s[i-1]是Cr信道中的级i-1所映射到的值。如果i等于0,则s[i]等于offset_val_lookup_table_cr[i]。
# | | | |
1 | seq_parameter_set_svc_extension(){ | C | 描述符 |
2 | interlayer_deblocking_filter_control_present_flag | 0 | u(1) |
3 | extended_spatial_scalability | 0 | u(2) |
4 | if(chroma_format_idc==1||chroma_format_idc==2) | | |
5 | chroma_phase_x_plus1 | 0 | u(1) |
6 | if(chroma_format_idc==1) | | |
7 | chroma_phase_y_plus1 | 0 | u(2) |
8 | if(extended_spatial_scalability==1){ | | |
9 | if(chroma_format_idc>0){ | | |
10 | base_chroma_phase_x_plus1 | 0 | u(1) |
11 | base_chroma_phase_y_plus1 | 0 | u(2) |
12 | } | | |
13 | scaled_base_left_offset | 0 | se(v) |
14 | scaled_base_top_offset | 0 | se(v) |
15 | scaled_base_right_offset | 0 | se(v) |
16 | scaled_base_bottom_offset | 0 | se(v) |
17 | } | | |
18 | if(extended_spatial_scalability==0){ | | |
19 | Avc_rewrite_flag | 0 | u(1) |
20 | if(avc_rewrite_flag){ | | |
21 | avc_adaptive_rewrite_flag | 0 | u(1) |
22 | } | | |
23 | } | | |
24 | avc_header_rewrite_flag | 0 | u(1) |
25 | inv_tone_map_flag | 1 | u(1) |
26 | if(inv_tone_map_flag){ | | |
27 | level_lookup_table_luma_minus8 | 1 | u(v) |
28 | for(i=0;i<(1<<(8+level_lookup_table_luma_minus8));i++){ | | |
29 | offset_val_lookup_table_luma[i] | | se(v) |
30 | } | | |
31 | chroma_inv_tone_map_flag | 1 | u(1) |
32 | if(chroma_inv_tone_map_flag){ | | |
33 | level_lookup_table_chroma_minus8 | 1 | u(v) |
34 | for(i=0;i<(1<<(8+level_lookup_table_chroma_minus8));i++){ | | |
35 | offset_val_lookup_table_cb[i] | 1 | se(v) |
36 | } | | |
37 | cr_inv_tone_map_flag | 1 | u(1) |
38 | if(cr_inv_tone_map_flag){ | | |
39 | for(i=0;i<(1<<(8+level_lookup_table_chroma_minus8));i++){ | | |
40 | offset_val_lookup_table_cr[i] | 1 | se(v) |
41 | } | | |
42 | } } } } | | |
表1:可缩放扩展中的像条头部(Slice Header)内的示例性实施方式
表2示出了根据本发明的一个实施例修改的图像参数集。本发明被包括在表2的第49-68行中。
# | pic_parameter_set_rbsp(){ | C | 描述符 |
1 | pic_parameter_set_id | 1 | ue(v) |
2 | seq_parameter_set_id | 1 | ue(v) |
3 | entropy_coding_mode_flag | 1 | u(1) |
4 | pic_order_present_flag | 1 | u(1) |
5 | num_slice_groups_minus1 | 1 | ue(v) |
6 | if(num_slice_groups_minus1>0){ | | |
7 | slice_group_map_type | 1 | ue(v) |
8 | if(slice_group_map_type==0) | | |
9 | for(iGroup=0;iGroup<=num_slice_groups_minus1;iGroup++) | | |
10 | run_length_minus1[iGroup] | 1 | ue(v) |
11 | else if(slice_group_map_type==2) | | |
12 | for(iGroup=0;iGroup<num_slice_groups_minus1;iGroup++){ | | |
13 | top_left[iGroup] | 1 | ue(v) |
14 | bottom_right[iGroup] | 1 | ue(v) |
15 | } | | |
16 | else if(slice_group_map_type==3||slice_group_map_type==4||slice_group_map_type==5){ | | |
17 | slice_group_change_direction_flag | 1 | u(1) |
18 | slice_group_change_rate_minus1 | 1 | ue(v) |
19 | }else if(slice_group_map_type==6){ | | |
20 | pic_size_in_map_units_minus1 | 1 | ue(v) |
21 | for(i=0;i<=pic_size_in_map_units_minus1;i++) | | |
22 | slice_group_id[i] | 1 | u(v) |
23 | } | | |
24 | } | | |
25 | num_ref_idx_l0_active_minus1 | 1 | ue(v) |
26 | num_ref_idx_l1_active_minus1 | 1 | ue(v) |
27 | weighted_pred_flag | 1 | u(1) |
28 | weighted_bipred_idc | 1 | u(2) |
29 | pic_init_qp_minus26/*relative to 26*/ | 1 | se(v) |
30 | pic_init_qs_minus26/*relative to 26*/ | 1 | se(v) |
31 | chroma_qp_index_offset | 1 | se(v) |
32 | deblocking_filter_control_present_flag | 1 | u(1) |
33 | constrained_intra_pred_flag | 1 | u(1) |
34 | redundant_pic_cnt_present_flag | 1 | u(1) |
35 | if(more_rbsp_data()){ | | |
36 | transform_8x8_mode_flag | 1 | u(1) |
37 | pic_scaling_matrix_present_flag | 1 | u(1) |
38 | if(pic_scaling_matrix_present_flag) | | |
表2:图像参数集内的示例性实施方式
39 | for(i=0;i<6+((chroma_format_idc!=3)?2:6)*transform_8x8_mode_flag;i++){ | | |
40 | pic_scaling_list_present_flag[i] | 1 | u(1) |
41 | if(pic_scaling_list_present_flag[i]) | | |
42 | if(i<6) | | |
43 | scaling_list(ScalingList4x4[i],16,UseDefaultScalingMatrix4x4Flag[i]) | 1 | |
44 | else | | |
45 | scaling_list(ScalingList8x8[i-6],64,UseDefaultScalingMatrix8x8Flag[i-6]) | 1 | |
46 | } | | |
47 | second_chroma_qp_index_offset | 1 | se(v) |
48 | } | | |
49 | inv_tone_map_delta_flag | 1 | u(1) |
50 | if(inv_tone_map_delta_flag){ | | |
51 | level_lookup_table_luma_minus8 | 1 | u(v) |
52 | for(i=0;i<(1<<(8+level_lookup_table_luma_minus8));i++){ | | |
53 | offset_val_lookup_table_luma_delta[i] | | se(v) |
54 | } | | |
55 | chroma_inv_tone_map_delta_flag | 1 | u(1) |
56 | if(chroma_inv_tone_map_delta_flag){ | | |
57 | level_lookup_table_chroma_minus8 | 1 | u(v) |
58 | for(i=0;i<(1<<(8+level_lookup_table_chroma_minus8));i++){ | | |
59 | offset_val_lookup_table_cb_delta[i] | 1 | se(v) |
60 | } | | |
61 | cr_inv_tone_map_delta_flag | 1 | u(1) |
62 | if(cr_inv_tone_map_delta_flag){ | | |
63 | for(i=0;i<(1<<(8+level_lookup_table_chroma_minus8));i++){ | | |
64 | offset_val_lookup_table_cr_delta[i] | 1 | se(v) |
65 | } | | |
66 | } | | |
67 | } | | |
68 | } | | |
69 | rbsp_trailing_bits() | 1 | |
70 | } | | |
表2(接上页):图像参数集内的示例性实施方式
inv_tone_map_delta_flag等于1说明存在要向层间预测中的序列参数集(SPS)中所指定的逆色调映射添加的增量值。
level_lookup_table_luma_minus8加8说明Y信道的查找表的级数。
offset_val_lookup_table_luma_delta[i]说明要向SPS中所指定的值添加的增量值s[i],Y信道的查找表中的级i以如下方式映射到该增量值s[i]:
如果i不等于0,则s[i]等于s[i-1]加上offset_val_lookup_table_luma_delta[i]。否则,s[i]等于offset_val_lookup_table_luma_delta[i]。
chroma_inv_tone_map_delta_flag等于1说明存在要向Cb和Cr信道的层间预测中的SPS中所指定的逆色调映射添加的增量值。
level_lookup_table_chroma_minus8加8说明Cb和Cr信道的LUT的级数。
offset_val_lookup_table_cb_delta[i]说明要向SPS中所指定的值添加的增量值s[i],Cb信道的查找表中的级i以如下方式映射到该增量值s[i]:
如果i不等于0,则s[i]等于s[i-1]加上offset_val_lookup_table_cb_delta[i]。否则,s[i]等于offset_val_lookup_table_cb_delta[i]。
cr_inv_tone_map_delta_flag等于0说明对于Cr信道再次使用Cb信道的增量值。cr_inv_tone_map_delta_flag等于1说明使用除Cb信道的增量值以外的不同的增量值。
offset_val_lookup_table_cr_delta[i]说明要向SPS中所指定的值添加的增量值s[i],Cr信道的查找表中的级i以如下方式映射到该增量值s[i]:
如果i不等于0,则s[i]等于s[i-1]加上offset_val_lookup_table_cr_delta[i]。否则,s[i]等于offset_val_lookup_table_cr_delta[i]。
表3中提供了可缩放扩展中的示例性扩展后的像条头部。本发明被包括在第46-67行。
# | Slice_header_in_scalable_extension(){ | C | 描述符 |
1 | first_mb_in_slice | 2 | ue(v) |
2 | slice_type | 2 | ue(v) |
3 | pic_parameter_set_id | 2 | ue(v) |
4 | frame_num | 2 | u(v) |
5 | if(!frame_mbs_only_flag){ | | |
6 | field_pic_flag | 2 | u(1) |
7 | if(field_pic_flag) | | |
8 | bottom_field_flag | 2 | u(1) |
9 | } | | |
10 | if(nal_unit_type==21) | | |
11 | idr_pic_id | 2 | ue(v) |
12 | if(pic_order_cnt_type==0){ | | |
13 | pic_order_cnt_lsb | 2 | u(v) |
14 | if(pic_order_present_flag && !field_pic_flag) | | |
15 | delta_pic_order_cnt_bottom | 2 | se(v) |
16 | } | | |
17 | if( pic_order_cnt_type = = 1&& !delta_pic_order_always_zero_flag){ | | |
18 | delta_pic_order_cnt[0] | 2 | se(v) |
19 | if(pic_order_present_flag &&!field_pic_flag) | | |
20 | delta_pic_order_cnt[1] | 2 | se(v) |
21 | } | | |
22 | if(redundant_pic_cnt_present_flag) | | |
23 | redundant_pic_cnt | 2 | ue(v) |
24 | if(slice_type==EB) | | |
25 | direct_spatial_mv_pred_flag | 2 | u(1) |
26 | if(quality_id==0){ | | |
27 | if(slice_type==EP||slice_type==EB){ | | |
28 | num_ref_idx_active_override_flag | 2 | u(1) |
29 | if(num_ref_idx_active_override_flag){ | | |
30 | num_ref_idx_l0_active_minus1 | 2 | ue(v) |
31 | if(slice_type==EB) | | |
32 | num_ref_idx_l1_active_minus1 | 2 | ue(v) |
33 | } | | |
34 | } | | |
35 | Ref_pic_list_reordering() | 2 | |
36 | if(!layer_base_flag){ | | |
37 | base_id | 2 | ue(v) |
38 | adaptive_prediction_flag | 2 | u(1) |
39 | if(!adaptive_prediction_flag){ | | |
40 | default_base_mode_flag | 2 | u(1) |
41 | if(!default_base_mode_flag){ | | |
42 | adaptive_motion_prediction_flag | 2 | u(1) |
43 | if(!adaptive_motion_prediction_flag) | | |
44 | default_motion_prediction_flag | 2 | u(1) |
45 | } | | |
46 | inv_tone_map_delta_flag | 1 | u(1) |
47 | if(inv_tone_map_delta_flag){ | | |
48 | level_lookup_table_luma_minus8 | 1 | u(v) |
49 | for(i =0; i<(1<<(8+level_lookup_table_luma_minus8));i++){ | | |
50 | offset_val_lookup_table_luma_delta[i] | 1 | se(v) |
51 | } | | |
52 | chroma_inv_tone_map_delta_flag | 1 | u(1) |
53 | if(chroma_inv_tone_map_delta_flag){ | | |
54 | level_lookup_table_chroma_minus8 | 1 | u(v) |
55 | for( i=0; i<(1<<(8+level_lookup_table_chroma_minus8)); | | |
56 | i++){ | | |
57 | offset_val_lookup_table_cb_delta[i] | 1 | se(v) |
58 | } | | |
59 | cr_inv_tone_map_delta_flag | 1 | u(1) |
60 | if(cr_inv_tone_map_delta_flag){ | | |
61 | for( i=0; i<(1<<(8+level_lookup_table_chroma_minus8)); | | |
62 | i++){ | | |
63 | offset_val_lookup_table_cr_delta[i] | 1 | se(v) |
64 | } | | |
65 | } | | |
66 | } | | |
67 | } | | |
68 | } | | |
69 | adaptive_residual_prediction_flag | 2 | u(1) |
70 | } | | |
71 | if((weighted_pred_flag && slice_type==EP)||(weighted_bipred_idc==1 && slice_type==EB)){ | | |
72 | if(adaptive_prediction_flag) | | |
73 | base_pred_weight_table_flag | 2 | u(1) |
74 | if(layer_base_flag||base_pred_weight_table_flag==0) | | |
75 | pred_weight_table() | | |
76 | } | | |
77 | if(nal_ref_idc!=0){ | | |
78 | dec_ref_pic_marking() | 2 | |
79 | if(use_base_prediction_flag && nal_unit_type!=21) | | |
80 | dec_ref_pic_marking_base() | | |
81 | } | | |
82 | } | | |
83 | if(entropy_coding_mode_flag && slice_type!=EI) | | |
84 | cabac_init_idc | 2 | ue(v) |
85 | slice_qp_delta | 2 | se(v) |
86 | if(deblocking_filter_control_present_flag){ | | |
87 | disable_deblocking_filter_idc | 2 | ue(v) |
88 | if(disable_deblocking_filter_idc!=1){ | | |
89 | slice_alpha_c0_offset_div2 | 2 | se(v) |
90 | slice_beta_offset_div2 | 2 | se(v) |
91 | } | | |
92 | } | | |
93 | if(interlayer_deblocking_filter_control_present_flag){ | | |
94 | disable_interlayer_deblocking_filter_idc | 2 | ue(v) |
95 | if(disable_interlayer_deblocking_filter_idc!=1){ | | |
96 | interlayer_slice_alpha_c0_offset_div2 | 2 | se(v) |
97 | interlayer_slice_beta_offset_div2 | 2 | se(v) |
98 | } | | |
99 | } | | |
100 | constrained_intra_upsampling_flag | 2 | u(1) |
101 | if(quality_id==0) | | |
102 | if(num_slice_groups_minus1>0 &&slice_group_map_type>=3 && slice_group_map_type<=5) | | |
103 | slice_group_change_cycle | 2 | u(v) |
104 | if(quality_id==0 && extended_spatial_scalability>0){ | | |
105 | if(chroma_format_idc>0){ | | |
106 | base_chroma_phase_x_plus1 | 2 | u(2) |
107 | base_chroma_phase_y_plus1 | 2 | u(2) |
108 | } | | |
109 | if(extended_spatial_scalability==2){ | | |
110 | scaled_base_left_offset | 2 | se(v) |
111 | scaled_base_top_offset | 2 | se(v) |
112 | scaled_base_right_offset | 2 | se(v) |
113 | scaled_base_bottom_offset | 2 | se(v) |
114 | } | | |
115 | } | | |
116 | if(use_base_prediction_flag) | | |
117 | store_base_rep_flag | 2 | u(1) |
118 | if(quality_id==0){ | | |
119 | if(BaseFrameMbsOnlyFlag && !frame_mbs_only_flag &&!field_pic_flag) | | |
120 | base_frame_and_bottom_field_coincided_flag | 2 | u(1) |
121 | else if(frame_mbs_only_flag && !BaseFrameMbsOnlyFlag &&!BaseFie ldPicFlag) | | |
122 | base_bottom_field_coincided_flag | 2 | u(1) |
123 | } | | |
124 | SpatialScalabilityType=spatial_scalability_type()/*[Ed.:应当被移至语义并删除语法函数]*/ | | |
125 | } | | |
表3:可缩放扩展中的示例性像条头部
在一个实施例中,基于原始EL像条和上采样后、重构后的BL像条,产生第一LUT。基于原始EL像条的一个或多个MB以及上采样后、重构后的BL像条的对应位置的MB,产生第二LUT。如上所述,将这两个LUT差分编码为LUT/增量LUT。因此,可以在解码器处使用第一LUT,来将上采样后、重构后的BL像条(除第二LUT所查阅的那些MB之外)映射到EL像条,且可以在解码器处使用第二LUT,来映射其查阅的那些MB。这种产生LUT的方法具有如下优点:可以优化解码,这是因为LUT定义了在解码器处可获得的像条(上采样后、重构后的BL像条)与具有最高可获得质量的EL像条(即原始EL像条)之间的映射。使用分级LUT的优点是:LUT集最佳适配于实际视频数据,这是由于像条的大部分通常都是同构的,而像条内的一些较小区域可能不同。有利地,对这些区域分别定义差分LUT。因此,该方法最佳适配于解码器的需要以及最高质量的重构。
在一个实施例中,将LUT与EL数据一起进行编码并发送。在编码器处,使用这些LUT,由重构后的BL数据预测EL数据,且将残差进行帧内编码并发送。然后,在解码器处,将LUT应用到重构后的BL数据,且添加残差。结果为具有高颜色比特深度的解码后的EL图像。
有利地,将所添加的、支持基于LUT的逆色调映射的语法元素插入头部中,例如对于像条级添加slice_header_in_scalable_extension。
实际上,不同单元(图像、像条、MB)可具有不同LUT。在各自级的头部中添加新的语法元素使得采用逆色调映射具有灵活性。例如,在基于对象的像条分段的情况中,不同的像条拥有不同的特性,且在不同的像条当中,BL像条与对应位置的EL像条之间的关系可以很不同。因此,对于不同像条创建不同的LUT可以是有益的。另一方面,特性以及BL像条与对应位置的EL像条之间的关系在多个图像的序列上可以是恒定的。在这种情况下,可以为较高级(例如序列或GOP级)产生较高级的LUT,为一个、一些或全部这些图像内的区域(例如像条、MB组、MB)产生较低级的LUT。在一个实施例中,该较低级的LUT与每个图像中定义的特定区域相关联。在另一个实施例中,可以将单个较低级的LUT与序列的每个图像内各自的区域关联起来。在一个实施例中,MB具有关联增量LUT,序列中的下一个MB具有将相同的增量LUT再次应用为前一MB的指示。可以在除MB外的编码级上应用相同的原则。
图3示出了利用层间预测的、用于帧内编码后的BL图像的示例性解码器。在接收到带有根据本发明编码后LUT的编码后BL和EL信息BLenc、ELenc之后,例如在多路传输的分组比特流中,分离出BL、EL和LUT信息,对BL信息、EL信息和LUT进行熵解码。在该示例中,LUT被包括在EL信息中。然后,将反量化Q-1和反变换T-1应用到视频数据,在LUT解码单元LUTdec中对分级LUT——LUT1、LUT2进行解码。LUT解码单元重构出较高级LUT、增量LUT和最终的较低级LUT,并为比特深度预测单元BDUp提供两个或更多个解码后的查找表。根据方程1对编码后的最高级LUT的重构可以使用(Venc是编码后的值):
V(0)=Venc(0),
V(1)=V(0)-Venc(1),
V(2)=V(1)-Venc(2),
…,
V(2NB-1)=V(2NB-2)-Venc(2NB-1) (4)
根据方程2对编码后的较低级LUT的重构可以使用:
LUTi-1≡LUTi-ΔLUTi={Vi(0)-dVi(0),Vi(1)-dVi(1),…,Vi(2NB-1)-dVi(2NB-1)}
(5)
其中,通常大多数dVi(k)为零。
对于BL,对帧内编码后图像的处理与对于传统SVC相同:使用空间帧内预测来重构图像,即基于相同图像的前一重构信息。在解块之后,可以将得到的BL信号BLrec显示在8比特颜色深度的标准SVC显示器上。还可以使用该信号来产生对应位置的EL图像的预测版本Prec{Pret{BLrec}}:为此,对该信号进行纹理上采样TUp,其中获得EL图像的纹理预测版本Pret{BLrec},然后,使用提取的编码后的查找表,对该纹理预测版本进行比特深度上采样BDUp。然后,使用纹理及比特深度上采样的、重构后BL图像Prec{Pret{BLrec}},来更新A2,EL改进的、反量化和反变换后的EL残差EL’res,从而获得在解块后可作为EL视频ELrec输出给HQ显示器的信号。
当然,在EL模式下操作的解码器还会在内部产生BL视频BLrec,这是由于需要它用于EL预测,但BL视频不必然可在解码器输出处获得。在一个实施例中,解码器具有两个输出,一个用于BL视频BLrec,一个用于EL视频ELrec,而在另一个实施例中,解码器仅具有用于EL视频ELrec的输出。
对于对其中的对应位置BL MB进行帧间编码的EL MB,没有如下约束:必须使用与对对应位置BL MB进行帧内编码的情况相同的基于LUT的层间预测。例如,在对对应位置BL MB进行帧间编码的情况下,线性缩放可以充当比特深度上采样的方法。
如上所述,对于图2的帧内编码器,该解码器也可以工作于与编码相对应的不同模式下。因此,从比特流中提取各自的标志并对标志进行估计,例如确定是否使用层间预测的指示base_mode_flag。如果不使用,则使用解块、空间预测和对空间预测图像的更新A1,EL,来传统地重构EL图像。
在本发明的一个实施例中,提出了一种对具有基层和增强层的视频数据进行编码的设备,其中基层像素比增强层像素具有更小的颜色比特深度,所述设备包括:
用于在第一粒度级上对基层数据进行编码的编码装置T、Q,其中对基层数据进行帧内编码,
用于重构编码后的基层数据的装置T-1、Q-1,
用于针对帧内编码后的基层数据产生第一色调映射表LUTGOP的装置,表LUTGOP定义了原始增强层数据与对应重构后的基层数据Pret{BLrec}之间的色调映射,
用于针对帧内编码后的基层数据片段(例如MB)产生不同的第二色调映射表LUTMB的装置,表LUTMB定义了原始增强层数据ELorg的所述片段与重构后基层数据Pret{BLrec}的对应片段的之间的色调映射,
用于产生差分表dLUTMB的装置,表dLUTMB表示第一与第二色调映射表LUTGOP、LUTMB之间的差值,
用于基于所述第一和第二色调映射表,对重构后的基层数据进行比特深度上采样的装置BDUp,其中对于重构后的基层的所述片段,仅使用第二色调映射表,且获得对应的增强层数据的预测版本Prec{Pret{BLrec}},其比基层数据具有更高的比特深度分辨率,
用于产生增强层残差EL’res的装置,增强层残差EL’res为原始增强层数据与增强层数据的对应预测版本Prec{Pret{BLrec}}之间的差值,以及
用于对增强层残差、第一色调映射表LUTGOP和所述差分表dLUTMB进行编码的装置,其中编码后的第一色调映射表与编码后的基层或增强层数据相关联,且差分表与编码后的基层数据或增强层数据的所述片段相关联。
在一个实施例中,该编码设备进一步包括:装置TUp,用于在所述比特深度上采样之前对重构后的基层数据BLrec进行上采样,其中获得了对应增强层数据的第一预测版本Pret{BLrec},其比基层数据具有更高的空间、时间或SNR分辨率并被用于所述比特深度上采样步骤。
在本发明的一个实施例中,提出了一种对具有基层和增强层的视频数据进行解码的设备,所述设备包括:
用于从编码后的增强层数据ELenc或基层数据BLENC提取与帧内编码后增强层数据相关的第一和第二色调映射数据的装置,
用于从提取的色调映射数据重构第一色调映射表LUTGOP的装置,
用于从提取的色调映射数据和所述重构后的第一色调映射表重构第二色调映射表LUTMB的装置,其中,所利用的提取的色调映射数据表示所述第一与第二色调映射表之间的差值dLUTMB,
用于确定与第一色调映射表相关的第一编码单元、以及与第二色调映射表相关的第二编码单元的装置,其中,第二编码单元是所述第一编码单元的一小部分,
用于对接收到的基层数据和增强层数据执行反量化和反变换的装置T-1、Q-1,其中,反量化和反变换后的增强层数据包括残差EL’res,
用于重构帧内编码后的基层数据的装置A1,BL、PRI、DBLI,
用于对重构后的基层数据BLrec进行上采样的装置BDUp,其中增加了每像素的数值深度,且对于所述第二编码单元中的像素,使用第二色调映射表,而对于第一编码单元的剩余像素,使用第一色调映射表,且获得预测的增强层数据Prec{Pret{BLrec}},以及
用于从预测的增强层数据Prec{Pret{BLrec}}以及反量化和反变换后的增强层数据重构出重构的增强层视频数据的装置A2,EL。
示例性地,在一个实施例中,提出了一种对具有基层和增强层的视频数据进行解码的设备,所述设备包括:
用于从编码后的增强层数据或基层数据提取第一和第二色调映射数据的装置,第一和第二色调映射数据来自帧内编码后的增强层数据的一个或多个头部,
用于从提取的色调映射数据重构第一色调映射表的装置,
用于从提取的色调映射数据和所述重构后的第一色调映射表重构第二色调映射表的装置,其中,所利用的提取的色调映射数据表示所述第一与第二色调映射表之间的差值,
用于对接收到的基层数据和增强层数据执行反量化和反变换的装置,其中,反量化和反变换后的增强层数据包括残差,
用于重构帧内编码后的基层数据的装置,
用于对重构后的基层数据进行上采样的装置,其中增加了像素数并增加了每像素的值深度,其中对于第一帧内编码数据单元,使用第一色调映射表,而对于包括在第一数据单元中的第二帧内编码数据单元,使用第二色调映射表,且获得预测的增强层数据,以及
用于从预测的EL数据以及反量化和反变换后的EL信息,重构出重构的EL视频信息的装置。
需要注意,术语“色调映射”和“逆色调映射”从不同的观点描述相同的过程。因此,此处同义地使用它们。例如在JVT中,使用术语“逆色调映射”,来描述由低比特深度(即BL)对高比特深度(即EL)的预测。然而,不会将此处使用的术语理解为排除本发明对JVT的实用性。相同的情形也可适用于其他标准。
此外,BL图像不是所有帧内编码后的部分都需要使用基于LUT的逆色调映射。可以通过某些失真测量技术,来确定是否应用基于LUT的逆色调映射。如果确定使用基于LUT的逆色调映射技术,则例如,将选择INTRA_BL模式;如果确定不使用,则可以使用共用的AVC工具,来对当前EL MB编码。
由于BL和EL中可能的颜色数量不同,所以每个BL颜色可映射到不同的EL颜色。通常,这些不同的EL颜色非常相似,因此在色标或色域中“相邻”。
图4示出了在GOP、像条和MB级上的色调映射的分级查找表的一个示例性集合。GOP包含关于高比特深度颜色具有相似特性的多个图像I1、I2、……、In。例如,比其“相邻”颜色更频繁地使用特定颜色。示例性地,图像中的至少一个,例如I2,包含多个像条SL1、SL2、SL3,在这些像条之一SL2的EL中,比另一第二个相邻颜色更不经常使用该特定相邻颜色。此外,在像条之一SL3中,包括有一个或多个宏块,其中也是比所述第二个(或另一第三个)相邻颜色更不经常使用该特定相邻颜色。所发送的第一色调映射查找表LUTGOP定义了BL与EL之间GOP级上的一般映射。此外,第二色调映射查找表LUTSL定义了像条级上的所述颜色的不同映射,仅查阅各自的像条SL2和该特定BL颜色。将第二色调映射查找表LUTSL差分编码为“增量LUT”dLUTSL,然后将dLUTSL发送。两个表都与它们所查阅的它们的各自区域(即GOP和像条)相关联,例如通过指示或通过插入各自的头部。此外,产生另一第三色调映射查找表LUTMB并将其用于像条之一中的一个或多个宏块MB1、MB2、MB3、MB4。对该第三色调映射查找表LUTMB也进行差分编码,即相对于最高级的表(该示例中为LUTGOP)来差分编码。然后,将增量LUT dLUTMB与其所查阅的各自的MB或多个MB相关联,并将dLUTMB发送。
图5示出了在GOP、像条和MB级上的色调映射的分级色调映射查找表的另一个示例性集合。它与图4类似,除了对较低级色调映射查找表LUTMB,相对于其紧接更高一级(该示例中为LUTSL)来进行编码。由于自然视频的特性,这种编码可以比在图4中返回查阅最高级LUT更合适。此外,MB级色调映射LUT所查阅的MB位于已具有单独的关联色调映射LUT的像条SL2内。像条级表LUTSL仅为SL2支配GOP级表LUTGOP,MB级表为MB2同时支配GOP级表LUTGOP和像条级表LUTSL。另外,可以为例如MB3产生另一个MB级LUT。在一个实施例中,MB级查找表可查阅多于一个宏块,例如可查阅MB1和MB2。
通常,在较低级色调映射表不适用的区域中,忽略该表(例如,对于图5中的MB1,忽略LUTMB)。此外,可以隐式地产生较低级色调映射表,例如通过执行两个子步骤中的映射步骤:首先在较低级LUT中查询特定输入值,如果确定较低级LUT为该特定输入值定义了输出值,则使用该输出值。然而,如果较低级LUT没有为该特定输入值定义输出值,例如:因为较低级LUT只是部分LUT,则在较高级LUT中查询输入值。如果上面有多于两个层级,则从紧接更高一级连续开始连续地搜索两个或更多个较高级LUT,直到有一个为输入值提供了输出值。
所呈现的用于将空间可缩放性扩展到比特深度可缩放性的分级查找表方法的一个优点是:要发送的数据量非常低,这是由于查找表单独地适于图像的内容并被压缩。因此,使控制数据(即LUT数据)以及实际视频数据的量得以最小化。此外,不需要新的预测模式来实现向颜色比特深度可缩放性的扩展。
本发明另外的优点是:对其它类型可缩放性的完全兼容性、健壮性以及对先进技术的可扩展性。特别地,本发明在仍然保持单环路解码结构,以便将基于LUT的逆色调映射仅应用于基层帧内编码后的图像或图像部分的同时,改进了编码效率。
由于使用重构后的BL数据用于上采样和查找表的产生,编码器一侧的预测更好地适配于解码器一侧的预测,以便残差更适合且在解码器一侧可以获得更好的预测和重构结果,这也是一个优点。
本发明可被用于可缩放编码器、可缩放解码器和可缩放信号,尤其可被用于视频信号或具有不同质量的层和高的层间冗余的其它类型信号。
应当理解,已经举例完整地描述了本发明,且在不背离本发明范围的情况下,可以作出对本发明细节的修改。可以独立地或以任意适当的组合来提供说明书及适当处与权利要求和附图所公开的每个特征。在硬件、软件或两者的组合中的适当处实现这些特征。权利要求中出现的参考数字仅作为示例,并不对权利要求的范围有限制影响。