首页 / 专利库 / 机车车辆 / 缓冲器 / 索引映射编解码中的跳出像素编解码方法

索引映射编解码中的跳出像素编解码方法

阅读:837发布:2023-02-27

专利汇可以提供索引映射编解码中的跳出像素编解码方法专利检索,专利查询,专利分析的服务。并且公开了一种通过重用用于 调色板 编解码的变换系数 缓冲器 调色板来降低实现成本的视频编解码方法。如果当前预测模式是 帧 内预测 模式或帧间预测模式,则将由帧内预测或帧间预测产生的当前 块 的预测残差的变换系数相关的信息存储在变换系数缓冲器中。如果当前预测模式是调色板编解码模式,则与当前块相关联的调色板数据相关的信息被存储在变换系数缓冲器中。如果当前块在帧内预测模式或帧间预测模式下编解码,则基于与变换系数相关的信息,对当前块进行编码或解码,或者如果当前的预测模式是调色板编解码模式,则基于与存储在变换系数缓冲器中调色板数据相关的信息,对当前块进行编码或解码。,下面是索引映射编解码中的跳出像素编解码方法专利的具体信息内容。

1.一种视频编解码方法,使用包括调色板编解码模式、内预测模式和帧间预测模式的多个预测模式,所述方法包括:
确定当前的当前预测模式;
指定一个存储区域作为变换系数缓冲器
如果所述当前预测模式是所述帧内预测模式或所述帧间预测模式,则将与帧内预测或帧间预测产生的所述当前块的预测残差的变换系数相关的第一信息存储在所述变换系数缓冲器中;
如果所述当前预测模式是所述调色板编解码模式,则将与所述当前块相关联的调色板数据相关的第二信息存储在所述变换系数缓冲器中;以及
如果所述当前块在所述帧内预测模式或所述帧间预测模式中被编解码,则基于与所述变换系数相关的所述第一信息来编码或解码所述当前块,或者如果所述当前块在所述调色板编解码模式下被编解码,则基于与存储在所述变换系数缓冲器中的所述调色板数据相关的所述第二信息来编码或解码所述当前块。
2.根据权利要求1所述的视频编解码方法,其特征在于,如果所述当前预测模式是所述调色板编解码模式,则所述调色板数据对应于调色板运行类型、调色板索引、调色板运行、跳出值、跳出标志、调色板表或与所述当前块相关联的任何组合。
3.根据权利要求2所述的视频编解码方法,其特征在于,与所述调色板数据相关的所述第二信息对应于所述调色板数据、解析的调色板数据、或重构的调色板数据。
4.根据权利要求2所述的视频编解码方法,其特征在于,所述当前块的样本的解析调色板索引在解析阶段重构,并且重构的调色板索引和重构的跳出值存储在解码器侧的所述变换系数缓冲器中。
5.根据权利要求2所述的视频编解码方法,其特征在于,所述当前块的样本的解析调色板索引被重构,重构的调色板索引使用解析阶段中的调色板表被进一步重构为重构的像素值,并且所述重构的像素值和重构的跳出值存储在解码器侧的所述变换系数缓冲器中。
6.根据权利要求5所述的视频编解码方法,其特征在于,在所述解析阶段一个存储区域指定为用于存储所述调色板表,并且在重构阶段期间所述一个存储区域被所述调色板表使用释放。
7.根据权利要求5所述的视频编解码方法,其特征在于,所述跳出标志被存储在所述解码器侧的所述变换系数缓冲器中。
8.根据权利要求2所述的视频编解码方法,其特征在于,所述跳出标志存储在所述变换系数缓冲器的一部分中,并且重构的像素值或跳出值存储在所述变换系数缓冲器的另一部分中。
9.根据权利要求8所述的视频编解码方法,其中所述跳出标志存储在所述变换系数缓冲器的最高有效位部分中。

说明书全文

索引映射编解码中的跳出像素编解码方法

[0001] 【交叉引用】
[0002] 本申请要求申请日为2014年11月12日,美国临时申请号为62/078,595的美国临时申请案、申请日为2014年12月4日,美国临时申请号为62/087,454 的美国临时申请案、申请日为2015年2月24日,美国临时申请号为62/119,950 的美国临时申请案、申请日为2015年4月10日,美国临时申请号为62/145,578 的美国临时申请案、申请日为2015年5月15日,美国临时申请号为62/162,313 的美国临时申请案和申请日为2015年6月4日,美国临时申请号为62/170,828 的美国临时申请案的优先权,上述临时申请案的内容一并并入本申请。【技术领域】
[0003] 本发明涉及视频数据的调色板编解码(palette coding)。特别地,本发明涉及通过重用变换系数(transform coefficient)缓冲器或聚集跳出值(Group Escape Value)、调色板预测值(palette predictor)初始化、调色板预测值条目语义(entry semantics)、或调色板条目(entry)语义来一起保存(conserve)系统存储器或增加系统吞吐量的各种技术。【背景技术】
[0004] 高效视频编解码(High Efficiency Video Coding,简写为HEVC)是近年来已经开发的新的编解码标准。在高效视频编解码(HEVC)系统中,H.264/AVC 的固定大小宏(fixed-size macro block)由称为编解码单元(coding unit,简写为CU)的灵活块替换。CU中的像素共享相同的编解码参数以提高编解码效率。 CU可以以最大CU(LCU)开始,其在HEVC中也被称为已编解码树单元(coded tree unit,简写为CTU)。除了编解码单元的概念,在HEVC中也引入了预测单元(prediction unit,简写为PU)的概念。一旦CU层次树的分裂完成,则根据预测类型和PU分割将每个叶CU被进一步拆分成一个或多个预测单元(PU)。已经开发了用于屏幕内容编解码的几种编解码工具。与本发明相关的这些工具简要回顾如下。
[0005] 调色板编解码
[0006] 在HEVC屏幕内容编解码(screen content coding,简写为SCC)的开发期间,已经公开了若干建议来解决基于调色板的编解码。例如,JCTVC-N0247(Guo 等人,“RCE3:Results of Test 3.1on Palette Mode for Screen Content Codin g”,ITU-T SG 16WP 
3和ISO/IEC JTC 1/SC 29/WG 11视频编解码联合协作小组(Joint Collaborative Team on Video Coding)(JCT-VC),第14 次会议:Vienna,AT,2013.7.25-2013.8.2,文档编号:
JCTVC-N0247)和JCTV C-O0218(Guo等人,“Evaluation of Palette Mode Coding on HM-
12.0+RExt -4.1”,ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11视频编解码联合协作小组(Joint Collaborative Team on Video Coding)(JCT-VC),第1 5次会议:Geneva,CH,
2013.10.23–2013.11.1,文档编号:JCTVC-O0218) 中揭露了调色板预测和共享技术。在JCTVC-N0247和JCTVC-O0218中,构造并传输每个颜色分量的调色板。可以从其左相邻CU预测(或共享)调色板以减小位率。然后,使用它们的调色板索引对给定块内的所有像素进行编解码。根据J CTVC-N0247的编码处理的示例如下所示。
[0007] 调色板的传输:首先传输颜色索引表(也称为调色板表)大小,然后是调色板元素(即,颜色值)。
[0008] 像素调色板索引值的传输(索引指向调色板中的颜色):CU中的像素的索引值以光栅扫描顺序编码(encoding)。对于每个位置,首先发送标志以指示是否正在使用“运行模式(run mode)”或“复制上方(copy above)运行模式”。
[0009] a“. 运行模式”:在“运行模式”中,首先发出调色板索引,之后是“ palette_run”(例如,M)。由于具有与已经标示的调色板索引相同的调色板索引,因此不需要为当前位置和随后M个位置发送进一步的信息。调色板索引(例如,i)由所有三个颜色分量共享,这意味着重构的像素值为(Y,U,V)=(paletteY[i],paletteU[i], paletteV[i])(假定颜色空间是YUV)。
[0010] b“.复制上方运行模式”:在“复制上方运行模式”中,发送值“copy_r un”(例如,N)以指示对于随后N个位置(包括当前位置),调色板索引等于在上方行中处于相同位置的调色板索引。
[0011] 残差的传输:在阶段2中发送的调色板索引被转换回到像素值并用作预测。残差信息使用HEVC残差编解码传输,并被添加到重构预测中。
[0012] 在JCTVC-N0247中,构建和传输每个分量的调色板。调色板可以从其左邻 CU预测(或共享)以降低位率。在JCTVC-O0218中,调色板中的每个元素都是三元组(triplet),表示三种颜色分量的特定组合。跨CU(across CU)调色板的预测编解码被去除。
[0013] 在JCTVC-O0182(Guo等人,“AHG8:Major-color-based screen content coding”,ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11视频编解码联合协作小组(Joint Collaborative Team on Video Coding)(JCT-VC),第15次会议: Geneva,CH,2013.10.23-2013.11.1,文档编号:JCTVC-O0182)中,揭露了另一种调色板编解码方法。代替从左侧CU预测整个调色板表,可以从上方CU或左 CU中的确切对应的调色板颜色条目预测调色板中的各个调色板颜色条目。
[0014] 对于像素调色板索引值的传输,根据JCTVC-O0182将预测编解码方法应用于索引。索引行可以通过不同的模式进行预测。特别地,索引行使用三种行模式,即平模式(horizontal mode)、垂直模式(vertical mode)和正常模式(n ormal mode)。在水平模式下,同一行中的所有索引具有相同的值。如果该值与上方像素行的第一像素相同,则仅发送行模式信令位(line mode signaling bi t)。否则,索引值也被发送。在垂直模式下,当前索引行与上方索引行相同。因此,只传输行模式信令位。在正常模式下,一行中的指数被单独预测。对于每个索引位置,将左邻或上邻(left or above neighbor)用作预测值,并将预测符号发送到解码器
[0015] 此外,根据JCTVC-O0182,像素被分类为主要颜色像素(major color pixel )(具有指向调色板颜色的调色板索引)和跳出像素(escape pixel)。对于主要颜色像素,解码器根据主要颜色指数(即,JCTVC-N0247和JCTVC-O0182中的调色板索引)和调色板表重构像素值。对于跳出像素,编码器将进一步发送像素值。
[0016] 调色板表信令(signaling)
[0017] 在屏幕内容编解码(Screen Content Coding,简写为SCC)标准的参考软件中,SCM-2.0(JCTVC-R1014:Joshi等,Screen content coding test model 2(SC M 2),ITU-T SG 16WP 3和ISO/IEC JTC  1/SC  29/WG  11视频编解码联合协作小组(Joint Collaborative Team on Video Coding)(JCT-VC),第1 8次会议:Sapporo,JP,2014.6.30-
7.9,文档编号:JCTVC-R1014)最后编解码调色板CU的调色板表用作当前调色板表编解码的预测值。在调色板表编解码中,首先标示palette_share_flag。如果palette_share_flag为
1,则最后编解码调色板表中的所有调色板颜色将重新用于当前CU。在这种情况下,当前的调色板大小等于最后编解码调色板CU的调色板大小。否则(即palette_share_flag为0),通过指示可以重新使用最后编解码调色板表中的哪个调色板颜色、或通过发送新的调色板颜色来标示(signaled)当前调色板表。当前调色板的大小被设置为预测调色板的大小(即,numPredPreviousPalette)加上所传送的调色板的大小(即, num_signaled_palette_entries)。预测的调色板是从先前重构的调色板编解码的C U得到的调色板。当将当前CU编解码为调色板模式时,不使用预测调色板预测的调色板颜色通过位流直接发送。例如,如果当前CU被编解码为调色板大小等于6的调色板模式。如果六种主色中的三种从调色板预测值预测,三种直接通过位流传输。以下伪代码使用上述示例语法说明了传输的三个调色板颜色的示例。
[0018] num_signaled_palette_entries=3
[0019] for(cIdx=0;cIdx<3;cIdx++)//不同分量的信号颜色
[0020] for(i=0;i
[0021] palette_entries[cIdx][numPredPreviousPalette+i]
[0022] 由于在该示例中调色板大小为6,所以从0到5的调色板索引用于指示每个调色板编解码像素,并且可以将每个调色板重构为调色板颜色表中的主要颜色。
[0023] 在SCM-2.0中,如果不应用波前并行处理(wavefront parallel processing,简写为WPP),则在每个片(slice)的开始处或在每个平铺块(tile)的开始处对最后编解码的调色板表进行初始化(即,复位(reset))。如果应用WPP,则最后编解码的调色板表不仅在每个片的开始处或每个平铺块的开始处被初始化 (复位),而且在每个CTU行的开始处被初始化(即,复位)。
[0024] 调色板索引映射扫描次序
[0025] 在SCM-3.0(JCTVC-R1014:Joshi等,Screen content coding test model 3(SCM 3),ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11视频编解码联合协作小组(Joint Collaborative Team on Video Coding)(JCT-VC),第19次会议:Strasbourg, FR,
2014.10.17-24,文档编号:JCTVC-S1014)调色板模式编解码中,遍历扫描 (traverse scan)用于如图1所示的索引映射编解码。图1示出了8×8块的遍历扫描的示例。在遍历扫描(Traverse Scan)中,对于偶数行的扫描从左到右,对于奇数行的扫描从右到左。遍历扫描适用于调色板模式下的所有块大小。
[0026] SCM-4.0中的调色板索引映射编解码
[0027] 在SCM-4.0(JCTVC-T1014:Joshi等,Screen content coding test model 4 (SCM 4),ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11视频编解码联合协作小组(Joint Collaborative Team on Video Coding)(JCT-VC),第20次会议:Geneva,CH,2015.2.10-
18,文档编号:JCTVC-T1014)调色板模式编解码中,调色板索引在对应块的编解码数据的前面(即,在palette_run_mo de和palette_run编解码之前)被聚集和标示(signaled)。另一方面,对于相应的块的编解码数据的结尾处,编解码跳出像素(escape pixel)。语法元素palette_r un_mode和palette_run在调色板索引和跳出像素之间被编解码。图2示出了根据S CM 4.0的索引映射语法信令的示例性流程图。标示索引(210)、最后一个运行类型(runtype)(230)和聚集索引(220)的数量。在标示索引信息之后,重复标示一对运行类型(240)和运行次数(250)。最后,如有必要,标示一组跳出值(260)。
[0028] 调色板预测值初始化
[0029] 在SCM-4.0中,全局调色板预测值集合被标示在以PPS(picture parameter set ,图像参数集)中。使用从PPS获得的值,而不是将所有调色板预测状态(包括 PredictorPaletteSize、PreviousPaletteSize和PredictorPaletteEntries)重置为0。
[0030] 调色板语法
[0031] 对于索引映射中的索引的运行,需要被标示的几个要素包括:
[0032] 1)运行类型:它是复制上方运行或复制索引运行。
[0033] 2)调色板索引:用于在复制索引运行中标示哪个索引用于此运行。
[0034] 3)运行长度:它代表复制上方和复制索引类型的此运行的长度。
[0035] 4)跳出像素:如果运行中有N(N>=1)个跳出像素,则需要为
[0036] 这些N个跳出像素标示N个像素值。
[0037] 在JCTVC-T0064(JCTVC-T0064:Joshi等,Screen content coding test model 4 (SCM 4),ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11视频编解码联合协作小组(Joint Collaborative Team on Video Coding)(JCT-VC),第20次会议:Geneva,CH,2015.2.10-18,文档编号:JCTVC-T1014中,所有的调色板索引都聚集在一起。首先标示调色板索引的数量,其次是调色板索引。
[0038] 根据现有的HEVC规范,当每个颜色分量的调色板索引被聚集在一起时,用于不同颜色分量的大多数其他调色板编解码相关数据在位流中被交错。此外,用单独存储空间的存储间/帧内编解码块(Inter/Intra coded block)并存储调色板编解码块。期望开发提高系统吞吐量和/或降低系统实施成本的技术。【发明内容】
[0039] 公开了一种通过重用用于调色板编解码的变换系数缓冲器调色板来降低实现成本的视频编解码方法。如果当前预测模式是帧内预测模式或帧间预测模式,则将由帧内预测或帧间预测产生的当前块的预测残差的变换系数相关的信息存储在变换系数缓冲器中。如果当前预测模式是调色板编解码模式,则与当前块相关联的调色板数据相关的信息被存储在变换系数缓冲器中。如果当前块在帧内预测模式或帧间预测模式下编解码,则基于与变换系数相关的信息,对当前块进行编码或解码,或者如果当前的预测模式是调色板编解码模式,则基于与存储在变换系数缓冲器中调色板数据相关的信息,对当前块进行编解码或解码。
[0040] 如果当前预测模式是调色板编解码模式,则调色板数据可以对应于与当前块相关联的调色板运行类型、调色板索引、调色板运行、跳出值、跳出标志、调色板表或其任何组合。与调色板数据相关的信息可以对应于调色板数据、解析的调色板数据、或重构的调色板数据。例如,在解析阶段重构当前块的样本的解析调色板索引,并且在解码器侧将重构的调色板索引和重构的跳出值存储在变换系数缓冲器中。在另一示例中,重构当前块的采样的解析调色板索引,在解析阶段,使用调色板表将重构的调色板索引进一步重构为重构的像素值,并将重构的像素值和重构的跳出值存储在解码器侧的变换系数缓冲器中。此外,可以在分析阶段指定一个存储区域来存储调色板表,并且存储区域可以在重构阶段由调色板表从使用中释放。跳出标志也可以存储在解码器侧的变换系数缓冲器中。在另一示例中,跳出标志存储在变换系数缓冲器的一部分(例如,变换系数缓冲器的最高有效位(MSB)部分)中,并且重构的像素值或跳出值存储在变换系数缓冲器的另一部分中。
[0041] 在另一个实施例中,如果当前预测模式是调色板编解码模式,则聚集在一起的相同颜色分量的所有跳出值在解码器侧从视频比特流解析,或者对于相同颜色分量的所有跳出值在编码器侧聚集在一起。然后将包含跳出值的信息用于当前块的编码或解码。可以在当前块的编解码调色板数据结束时标示相同颜色分量的聚集跳出值。可以为当前块分别发出不同颜色分量的聚集跳出值。当前块的相同颜色分量的聚集跳出值可以存储在变换系数缓冲器中。不同颜色分量的聚集跳出值可以通过将一个颜色分量的聚集跳出值一次存储在变换系数缓冲器中来共享变换系数缓冲器。。
[0042] 在另一个实施例中,在解码器侧从视频比特流解析在序列参数集(SPS)、图像参数集(PPS)、或片标头中聚集在一起的相同颜色分量的所有初始调色板预测值,或者在编码器侧将相同颜色分量的所有初始调色板预测值聚集在一起。使用初始调色板预测值对相应序列、图片或片内的至少一个调色板编解码块进行编码或解码。
[0043] 在另一个实施例中,在解码器侧,从视频比特流解析聚集在一起的相同颜色分量的当前块的所有调色板预测值条目或调色板条目,或者在编码器侧,将用于相同颜色分量的所有调色板预测值条目或调色板条目聚集在一起。然后使用由所有调色板预测值条目组成的调色板预测值或由所有调色板条目组成的调色板表来对当前块进行编码或解码。【附图说明】
[0044] 图1示出了8×8块的遍历扫描的示例。
[0045] 图2示出了根据屏幕内容编解码测试模块版本4(SCM-4.0)的示例性调色板索引映射语法信令。
[0046] 图3A示出了索引编解码之前的示例索引映射翻转。
[0047] 图3B示出了与图3A中的索引映射对应的翻转索引映射的示例。。
[0048] 图4示出了在索引映射编解码之前翻转索引映射的示例,其中使用上方相邻构造的像素来预测物理位置中的最后行中的像素是低效的。
[0049] 图5A-B示出了根据本发明的实施例的来自具有翻转索引映射的上方CU的预测的示例,其中,复制上方运行模式中的索引总是从其物理上方位置预测,而不管索引映射是否被翻转。在图5A中,线填充块表示翻转索引映射,而图5B 中的透明块代表原始的索引映射。
[0050] 图6A-B示出了根据本发明的实施例的来自具有翻转索引映射的上方CU的另一示例,其中从其物理最近位置的样本预测第一行的复制上方运行编解码像素。在图6A中,线填充块表示翻转的索引映射,而图6B中的透明块代表原始的索引映射。
[0051] 图7A-B示出了根据本发明的实施例的从具有翻转索引映射的上方CU预测的另一示例,其中根据上方相邻CU的物理像素位置预测最后行的复制上方运行编解码像素。在图7A中,线填充块表示翻转的索引映射,而图7B在的透明块代表原始索引映射。
[0052] 图8A示出了扩展的复制上方运行模式的示例,其中从位于CU边界上方的上一行复制两行像素(即,L=2)。
[0053] 图8B示出了通过信令语法元素pixel_num(M)来指示从重构像素预测前M 个(即,M=11个)样本的跨CU预测的示例。
[0054] 图9A示出了通过上方CU的最后一行的重构像素值来预测前两行样本的像素值的示例。
[0055] 图9B示出了通过左CU的最右边列的重构像素值来预测前两列样本的像素值的示例。
[0056] 图10A-C示出了根据本发明的实施例的用于跨CU预测的三种不同的扫描模式。
[0057] 图11A-C示出了根据本发明的另一个实施例的用于跨CU预测的三种不同的扫描模式。
[0058] 图12A-B示出了根据本发明的实施例的用于跨CU预测的反向扫描的两种不同扫描模式。
[0059] 图13示出了将基于行的复制像素从相邻CU延伸到在帧间模式中编解码的 8×8CU的示例。
[0060] 图14示出了根据本发明的实施例的改变相邻参考像素的位置的示例,其中从右上方的CU复制右上参考像素。
[0061] 图15示出了根据本发明的实施例的改变相邻参考像素的位置的另一示例,其中从第三行的最右边的像素复制右上参考像素。
[0062] 图16示出根据具有当前编解码块(N=5)内的不同位置中的N个跳出像素的实施例的解码跳出颜色的示例,其中每个跳出像素出现的像素值仍然被写入位流,并且使用水平遍历扫描。
[0063] 图17示出了根据另一个实施例的解码跳出颜色的示例,其中当前编解码块 (N=5)中的不同位置中具有N个跳出像素,其中只有非重复的颜色被解码。
[0064] 图18示出了跨CU边界使用表示为N的相邻构造像素(NCP)的特殊索引的示例。
[0065] 图19示出了在最大索引值为0的情况下使用相邻构造像素(NCP)的特殊索引的示例。
[0066] 图20示出了在最大索引值为1的情况下对相邻构造像素(NCP)使用特殊索引的示例。
[0067] 图21示出了用于支持跨CU的索引预测的信令的示例性流程图,其中添加了新标志all_pixel_from_NCP_flag,并且根据SCM3.0的语法用于跨CU的索引预测。
[0068] 图22示出了用于支持跨CU的索引预测的信令的示例性流程图,其中添加了新的标志all_pixel_from_NCP_flag,当all_pixel_from_NCP_flag关闭时,根据 SCM3.0的语法在没有跨CU索引预测的情况下被使用。
[0069] 图23示出了类似于图22的另一示例性流程图。然而,当最大索引值不为0 时,根据SCM3.0的语法用于CU上的索引预测。
[0070] 图24示出了根据本发明的实施例的用于支持跨CU的索引预测的信令的示例性流程图。
[0071] 图25示出了根据本发明的另一实施例的用于支持跨CU的索引预测的信令的示例性流程图。
[0072] 图26示出了根据本发明另一实施例的用于支持跨CU的索引预测的信令的示例性流程图。
[0073] 图27示出了根据本发明的另一个实施例的用于支持跨CU的索引预测的信令的示例性流程图。
[0074] 图28A示出了根据本发明的另一个实施例的用于支持跨CU的索引预测的信令的示例性流程图。
[0075] 图28B示出了根据本发明的另一个实施例的用于支持跨CU的索引预测的信令的示例性流程图。
[0076] 图29示出了用于帧内块复制预测和补偿的源像素的示例,其中点填充区域对应于当前CTU(编解码树单元)和左CTU中的未滤波像素。
[0077] 图30示出了用于帧内块复制预测和补偿的源像素的另一示例,其中点填充区域对应于当前CTU(编解码树单元)、左CTU和上方CTU的底部四行以及左上CTU的底部四行中的未滤波像素。
[0078] 图31示出了用于帧内块复制预测和补偿的源像素的另一示例,其中点填充区域对应于当前CTU(编解码树单元)、N个左CTU、上方CTU的底部四行以及 N个左上CTU的底部四行中的未滤波像素。
[0079] 图32示出了用于帧内块复制预测和补偿的源像素的另一示例,其中点填充区域对应于当前CTU(编解码树单元),上方CTU的底部四行,以及左CTU的底部四行中的未滤波像素。
[0080] 图33示出了用于帧内块复制预测和补偿的源像素的另一示例,其中点填充区域对应于当前CTU(编解码树单元)、N个左CTU、以及上方CTU的底部四行、N个左上CTU的底部四行和第N+1个左CTU的右方四列中的未滤波像素。
[0081] 图34示出了结合本发明的实施例的用于调色板编解码块共享变换系数缓冲器的系统的示例性流程图。【具体实施方式】
[0082] 以下描述是实施本发明的最佳设想模式。这一描述是为了说明本发明的一般原理,而不应被认为是限制性的。本发明的范围最好通过所附权利要求书来确定。
[0083] 重用HEVC变换系数缓冲器用于调色板相关信息
[0084] 在HEVC中,除了调色板编解码之外,帧间预测(Inter prediction)和帧内预测(Intra prediction)是可用的编解码模式。当使用帧间或帧内预测时,变换编解码通常应用于由帧间/帧内预测得到的预测残差。然后对变换系数进行量化和熵编解码以包含在编解码位流中。在解码器侧,将反向操作应用于所接收的位流。换句话说,将熵解码应用于位流以恢复对应于量化变换系数的编解码符号。然后量化的变换系数被去量化并逆变换以重构帧间/帧内预测残差。在编码器侧和解码器侧经常使用变换系数缓冲器,以在熵编解码和量化/变换操作之间根据需要存储变换系数。
[0085] 对于彩色视频数据,可能需要多个变换系数缓冲器。然而,也可以将系统配置为一次(at a time)处理一个颜色分量,使得仅需要一个变换系数缓冲器。当块被调色板编解码时,不对块进行变换,并且不使用变换系数缓冲器。为了节省系统实现成本,本发明的实施例重用变换系数缓冲器来存储调色板编解码相关数据。因此,对于帧间/帧内编解码块,在系数解析阶段,TU的解码系数被存储在系数缓冲器中。然而,对于SCC(屏幕内容编解码)编解码块,调色板编解码块不需要残差编解码。因此,根据本发明的一个实施例,变换系数缓冲器用于存储调色板编解码相关信息,其可以包括调色板运行类型、调色板索引、调色板运行、跳出值、跳出标志、调色板表或其任何组合。
[0086] 例如,在解析阶段重构块的样本的解析调色板索引。变换系数缓冲器用于存储重构的调色板索引和跳出值。
[0087] 在另一示例中,在解析阶段块的样本的经解析的调色板索引被重构。解析索引用于在解析阶段使用调色板表查找重构相应颜色分量的像素值。因此,系数缓冲器用于存储重构的像素值和跳出值,或者用于存储重构的像素值、跳出值和跳出标志。在这种情况下,调色板表只需要存储在解析阶段。在重构阶段不需要存储和维护调色板表。变换系数所需的数据深度可能高于调色板编解码相关数据的数据深度。例如,变换系数可能需要16位深度的缓冲器。然而,对于调色板编解码,如果最大调色板索引为63,则调色板索引的存储仅需要6位的深度。此外,跳出值的最大位长度等于通常为8位或10位的位深度。因此,16位的一部分(即8位或6位)是空闲的,并且可以用于存储用于跳出标志的信息。例如,系数缓冲器的六个MSB(most significant bits,最高有效位)可用于存储跳出标志。其余位用于存储重构的像素值或跳出值。在重构阶段,MSB可用于直接重构跳出值或重构像素值。
[0088] 在又一示例中,在解析阶段重构样本的解析调色板索引,并且在解析阶段中也使用调色板表查找来重构不同颜色分量的重构值。跳出样本的像素值也由解析阶段中的跳出值重构。因此,系数缓冲器用于存储重构的像素值。在这种情况下,调色板表只需要存储在解析阶段。重构阶段不需要存储和维护调色板表。
[0089] 对相同颜色分量的跳出值进行聚集
[0090] 在JCTVC-T0064(JCTVC-T0064:Joshi等,Screen content coding test model 4 (SCM 4),ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11视频编解码联合协作小组(Joint Collaborative Team on Video Coding)(JCT-VC),第20次会议:Geneva,CH,2015.2.10-18,文档编号:JCTVC-T1014中,三个颜色分量的跳出值被聚集在一起。换句话说,对于每个样本,三个分量的跳出值被顺序编解码。根据JCTVC-T1014的跳出值编解码的语法表示于表1中。
[0091] 表1.
[0092]
[0093]
[0094] 由于没有用于调色板模式的残差编解码,所以可以重用系数缓冲器来存储调色板索引映射信息。在HEVC系数解析中,一次只解析一个颜色分量的TU。语法解析器对于一个颜色分量只能具有一个系数缓冲器,并且只能访问一个颜色分量的一个系数缓冲器。然而,在调色板编解码中,一个调色板索引表示多个颜色分量的像素值。调色板模式可以一次解码多个颜色分量值。调色板索引可以存储在一个颜色分量的一个系数缓冲器中。然而,在当前的SCM-4.0语法解析顺序中,跳出值可能需要三个颜色分量的三个系数缓冲器。
[0095] 因此,根据另一个实施例,改变跳出值的语法解析顺序,以克服涉及需要三个系数缓冲器来存储三个颜色分量的问题。相同颜色分量的跳出值被聚集在一起,并在块的调色板语法编解码结束时被标示。不同颜色分量的跳出值分别发出信号。结合本实施例的调色板编解码的示例性语法表示于表2中。
[0096] 表2.
[0097]
[0098] 在表2中,线填充区域中的文本表示删除。不同颜色分量的do-loop语句(即“for(cIdx=0;cIdx
[0099] 对相同颜色分量的调色板预测值初始化进行聚集
[0100] 在SCM 4.0中,标示一组PPS(图片参数集)语法元素以指定调色板预测值初始化器。PPS扩展的现有语法如表3所示。
[0101] 表3.
[0102]
[0103] 根据现有SCM 4.0的调色板预测值初始化过程如下所示:
[0104] ·此过程的输出是初始化的调色板预测变量PredictorPaletteSize和 PredictorPaletteEntries。
[0105] ·PredictorPaletteSize被导出如下:
[0106] –若palette_predictor_initializer_present_flag等于1,PredictorPaletteSize 被设置为等于to num_palette_predictor_initializer_minus1加1.
[0107] –否则(palette_predictor_initializer_present_flag等于0), PredictorPaletteSize被设置为0.
[0108] ·PredictorPaletteEntries数组(array)导出如下:
[0109] –若palette_predictor_initializer_present_flag等于1,
[0110] for(i=0;i
[0111] for(comp=0;comp<3;comp++)
[0112] PredictorPaletteEntries[i][comp]= palette_predictor_initializers[i][comp]
[0113] –否则(palette_predictor_initializer_present_flag等于0), PredictorPaletteEntries被设置为0.
[0114] 在一个实施例中,预测值初始化值可以组合在一起分别用于Y分量、Cb分量、Cr分量。语法更改如表4所示。与表3相比,两个do-loop语句按注释(4-1)和注释(4-2)所示进行交换,以便组合相同颜色分量的调色板预测值初始化。
[0115] 表4.
[0116]
[0117]
[0118] 对应于上述实施例的示例性调色板预测值初始化过程如下所示。
[0119] ·此过程的输出是初始化的调色板预测变量PredictorPaletteSize和 PredictorPaletteEntries。
[0120] ·PredictorPaletteSize被导出如下:
[0121] –若palette_predictor_initializer_present_flag等于1,PredictorPaletteSize 被设置为等于num_palette_predictor_initializer_minus1加1.[0122] –否则(palette_predictor_initializer_present_flag等于0), 
PredictorPaletteSize被设置为等于0.
[0123] ·PredictorPaletteEntries数组导出如下:
[0124] –若palette_predictor_initializer_present_flag is等于1,
[0125] for(comp=0;comp<3;comp++)
[0126] for(i=0;i
[0127] PredictorPaletteEntries[i][comp]= palette_predictor_initializers[i][comp]
[0128] –否则(palette_predictor_initializer_present_flag等于0), PredictorPaletteEntries被设置为0.
[0129] 如果调色板预测值初始化器在SPS(序列参数集)或片标头(slice header) 处被标志,则可以应用相同的聚集方法。换句话说,Y分量的所有初始化值一起被标示,Cb分量的所有初始化值一起被标示,且Cr分量的所有初始化值一起被标示。
[0130] 对相同颜色分量的调色板预测值更新过程进行聚集
[0131] 现有的调色板预测值更新过程如下。
[0132] 如等式(1)所示导出变量numComps:
[0133] numComps=(ChromaArrayType==0)?1:3  (1)
[0134] 变量PredictorPaletteSize和Predictor Palette Entries被修改,如表5中的伪代码所示。
[0135] 表5.
[0136]
[0137]
[0138] 如表5所示,newPredictorPaletteEntries更新过程的第一部分在由注释(5-1) 和注释(5-2)表示的双重do-loop中执行,其中与颜色分量相关联的do-loop(即 cIdx)在内部do-loop中。因此,对于每个调色板条目,更新三个颜色分量。其余的newPredictorPaletteEntries更新的两个do-loop语句由注释(5-3)和注释(5-4) 表示,其中不同颜色分量的do-loop语句对应于内循环(inner loop)。因此,对于每个条目,更新三个颜色分量。PredictorPaletteEntries更新的两个do-loop语句由注释(5-5)和注释(5-6)表示,其中不同颜色分量的do-loop语句对应于外循环(outer loop)。因此,为每个颜色分量更新PredictorPaletteEntries值。
[0139] 在一个实施例中,对于三个相应分量的调色板预测值被聚集,然后被更新。对现有更新过程的示例性修改如下所示。
[0140] 可变numComps的导出与等式(1)保持相同。变量PredictorPaletteSize和 PredictorPaletteEntries被修改,如表6中的以下示例性伪代码所示。
[0141] 表6.
[0142]
[0143] 在上述示例中,第一部分newPredictorPaletteEntries更新的两个do-loop语句由注释(6-1)和注释(6-2)表示,其中不同颜色分量的do-loop语句对应于外循环。因此,为每个颜色分量更新其余的newPredictorPaletteEntries值。由注释(6-3 )和注释(6-4)表示的双重do-loop指示的newPredictorPaletteEntries更新过程与表5中现有的更新过程保持一致。由注释(6-5) 和注释(6-6)表示的双重do-loop  指示的PredictorPaletteEntries更新过程与表5中现有的更新过程保持一致。
[0144] 在另一个实施例中,变量PredictorPaletteSize和PredictorPaletteEntries被修改,如表7中的以下示例性伪代码所示。
[0145] 表7.
[0146]
[0147]
[0148] 在上述示例中,newPredictorPaletteEntries更新的第一部分的两个do-loop语句由注释(7-1)和注释(7-2)表示,其中不同颜色分量的do-loop语句对应于外循环。因此,为每个颜色分量更新其余的newPredictorPaletteEntries值。由注释(7 -3)和注释(7-4)表示双重do-loop指示的newPredictorPaletteEntries更新过程,其中不同分量的do-loop语句对应于外循环。因此,为每个颜色分量更新newPred ictorPaletteEntries值。由Note(7-5)和Note(7-6)表示的双重do-loop指示的Pre dictorPaletteEntries更新过程与表5中现有的更新过程保持一致。
[0149] 在另一个实施例中,变量PredictorPaletteSize和PredictorPaletteEntries被修改,如表8中的以下示例性伪代码所示。
[0150] 表8.
[0151]
[0152]
[0153] 在上述示例中,newPredictorPaletteEntries和PredictorPaletteEntries更新过程的双循环(two-loop)语句由注释(8-1)、注释(8-2)、注释(8-3)和注释(8 -4)表示,其中不同颜色分量的do-loop语句对应于外循环。因此,为每个颜色分量更新newPredictorPaletteEntries值和PredictorPaletteEntries。
[0154] 在表6至表8中已经示出了用于更新过程对相同颜色分量的调色板预测值进行聚集的各种示例,其中根据本发明的实施例,已经使用HEVC语法元素来通过对相同颜色分量的调色板预测值进行聚集来演示更新过程。然而,本发明不限于这些示例中列出的特定语法元素和特定伪代码。本领域的技术人员可以在不偏离本发明的精神的情况下实践本发明。
[0155] 将相同颜色分量的调色板条目语义聚集
[0156] 在当前的SCM4.0中,语法元素palette_entry用于指定当前调色板的调色板条目中的分量的值。变量PredictorPaletteEntries[cIdx][i]指定颜色分量cIdx的预测值调色板中的第i个元素。变量numComps是如等式(1)所示导出的。变量CurrentPaletteEntries[cIdx][i]指定颜色分量cIdx的当前调色板中的第i个元素,并且如表9中的以下示例性伪代码所示导出。
[0157] 表9.
[0158]
[0159] 如表9所示,调色板预测值的CurrentPaletteEntries如注释(9-1)和注释(9-2 )所示更新,其中不同颜色分量的do-loop语句对应于内循环。因此,对于每个条目,更新三个颜色分量。此外,来自新调色板条目的CurrentPaletteEntries将更新为注释(9-3)和注释(9-4)所示,其中不同颜色分量的do-loop语句对应于外循环。因此,为每个颜色分量更新CurrentPaletteEntries值。
[0160] 在一个实施例中,三个分量中的每一个的调色板预测值可以聚集在一起。对现有过程的示例性改变如下所示。
[0161] 如等式(1)所示导出变量numComps。变量CurrentPaletteEntries[cIdx][i] 指定颜色分量cIdx的当前调色板中的第i个元素,并且如表10中的以下示例性伪代码所示导出。
[0162] 表10.
[0163]
[0164]
[0165] 如表10所示,来自调色板预测值的CurrentPaletteEntries如注释(10-1)和注释(10-2)所示更新,其中不同颜色分量的do-loop语句对应于外循环。因此,为每个颜色分量更新CurrentPaletteEntries值。新调色板条目中的CurrentPaletteEn tries如注释(10-3)和注释(10-4)所示更新,且与表9保持一致。
[0166] 在另一实施例中,三个分量可以组合在一起。更改如下所示。
[0167] 如等式(1)所示导出变量numComps:
[0168] 变量CurrentPaletteEntries[cIdx][i]指定用于颜色分量cIdx的当前调色板中的第i个元素,并且如表11中的以下示例性伪代码所示导出。
[0169] 表11.
[0170]
[0171]
[0172] 如表11所示,调色板预测值中的CurrentPaletteEntries和来自新调色板条目的CurrentPaletteEntries如注释(11-1)、注释(11-2)、注释(11-3)和注释(11 -4)所示更新,其中不同颜色分量的do-loop语句对应于外循环。因此,为每个颜色分量更新CurrentPaletteEntries值。
[0173] 根据本发明的实施例,在表10和表11中已经示出了用于更新处理的相同颜色分量的调色板条目语义的聚集的各种示例,其中HEVC语法元素已经用于通过对相同颜色分量的调色板条目语义进行聚集来演示更新过程。然而,本发明不限于这些示例中列出的特定语法元素和特定伪代码。本领域的技术人员可以在不偏离本发明的精神的情况下实践本发明。
[0174] 其他调色板语法聚集
[0175] 在SCM-4.0中,调色板索引被聚集在前面,并且跳出值在最后被聚集。调色板索引和跳出值用旁路二进制文件(bypass bin)编解码。使用调色板索引对跳出值进行聚集(即,聚集旁路编解码的二进制文件)可以增加解析吞吐量。在S CM-4.0中,要解析的跳出值的数量取决于调色板运行模式、调色板索引和调色板运行。因此,跳出值只能在最后聚集。为了使用调色板索引对跳出值进行聚集,公开如下几种方法。
[0176] 方法一:使用调色板索引对前面的跳出值进行聚集:
[0177] 如果跳出值聚集在前面,则要解析的跳出值的数量应该与调色板运行无关。对于跳出值解析,为了去除调色板运行的数据依赖性,当从上方行复制跳出样本时,本发明的实施例改变了复制上方运行模式行为。如果预测变量是跳出样本,则将跳出样本视为预测变量复制模式中的预定义颜色索引。
[0178] 在复制上方运行模式中,传送或导出“调色板运行”值以指示要从上方行复制的随后样本的数量。颜色指数等于上方行中的颜色指数。在一个实施例中,如果上方或左侧样本是跳出样本,则将上方样本的颜色指数视为预定义的颜色指数(例如0)。当前索引设置为预定义的索引。这些预测值复制模式不需要跳出值。在该方法中,即使被标志的索引等于跳出索引,调色板运行也可以被标志用于索引运行模式。如果跳出索引的运行大于0(例如N,N>0),则用编解码的跳出值重构第一个样本。可以将第一个样本的索引设置为跳出索引或预定义的颜色索引。将剩余N个样本的索引设置为预定索引(例如,索引0),并且利用预定索引(例如,索引0)的值重构剩余的N个样本。在一个实施例中,除了索引运行模式的第一个样本之外,运行模式(例如,adjustIndexMax)中的最大码字索引是固定的(例如固定为indexMax-1)。对于CU中的第一个样本,adjus tIndexMax等于indexMax。仍然可以应用冗余索引删除。在这种方法中,需要解析的跳出值的数量取决于等于跳出索引的解析/重构索引的数量。例如,如果调色板索引用截断的二进制代码编解码,并且编解码的二进制文件都是
1,那么解析索引(parsed index)是跳出索引。需要解析的跳出值的数量与调色板运行无关。因此,利用调色板索引,跳出值的语法可以放到前面(即调色板运行之前)。
[0179] 语法顺序示例1:copy_above_run或number_run的数量→last_run_mode→运行类型聚集(上下文编解码)→调色板索引聚集(旁路编解码)→跳出值聚集 (旁路编解码)→运行长度聚集。
[0180] 在这种情况下,last_run_mode表示最后一个运行模式是copy_above_run或in dex_run。例如,在编码/解码运行类型聚集中,如果编解码/解码的index_run数量等于index_run的数量,并且last_run_mode是index_run,则运行类型聚集将被终止。如果编解码/解码的index_run数量等于index_run的数量,而last_run_mode是c opy_above_run,则运行类型聚集也将被终止,而copy_above_run被插入到末尾。
[0181] 语法顺序示例2:copy_above_run或index_run的数量→运行类型聚集(上下文编解码)→last_run_mode→调色板索引聚集(旁路编解码)→跳出值聚集(旁路编解码)→运行长度聚集。
[0182] 在这种情况下,last_run_mode指示最后一个运行模式是copy_above_run还是 index_run。例如,在编码/解码运行类型聚集中,如果编解码/解码的index_run数量等于index_run的数量,则运行类型聚集将被终止,并且last_run_mode被标示。如果last_run_mode为copy_above_run,则在末尾插入copy_above_run。
[0183] 语法顺序示例3:copy_above_run或index_run的数量→运行类型聚集(上下文编解码)→调色板索引聚集(旁路编解码)→跳出值聚集(旁路编解码) →last_run_mode→运行长度聚集。
[0184] 在这种情况下,last_run_mode表示最后一个运行模式是copy_above_run或index_run。例如,在编码/解码运行类型聚集中,如果编解码/解码的index_run数量等于index_run的数量,则运行类型聚集将被终止。标示last_run_mode。如果 last_run_mode为copy_above_run,则在末尾插入一个copy_above_run。
[0185] 语法顺序示例4:copy_above_run的数量或index_run的数量→运行类型聚集 (上下文编解码)→调色板索引聚集(旁路编解码)→last_run_mode→跳出值( 旁路编解码)聚集→运行长度聚集。
[0186] 在这种情况下,last_run_mode指示最后一个运行模式是copy_above_run还是 index_run。例如,在编码/解码运行类型聚集中,如果编解码/解码的index_run数量等于index_run的数量,则运行类型聚集将被终止。标示last_run_mode。如果 last_run_mode为copy_above_run,则在最后插入一个copy_above_run。
[0187] 语法顺序示例5:copy_above_run的数量或index_run的数量→调色板索引聚集→跳出值聚集→last_run_mode→运行类型聚集→运行长度聚集。
[0188] 在这种情况下,last_run_mode指示最后一个运行模式是copy_above_run还是 index_run。例如,在编码/解码运行类型聚集中,如果编解码/解码的index_run数量等于index_run的数量,则运行类型聚集将被终止。如果last_run_mode为 copy_above_run,则在末尾插入一个不被标示的copy_above_run。对于最后一个调色板运行模式,调色板运行被推断为在PU/CU的末尾。
[0189] 语法顺序示例6:copy_above_run的数量或index_run的数量→调色板索引聚集→last_run_mode→跳出值聚集→运行类型聚集→运行长度聚集。
[0190] 在这种情况下,last_run_mode指示最后一个运行模式是copy_above_run还是 index_run。例如,在编码/解码运行类型聚集中,如果编解码/解码的index_run数等于index_run的数量,则运行类型聚集将被终止。如果last_run_mode为 copy_above_run,则copy_above_run被插入在末尾,而不标示。对于最后一个调色板运行模式,调色板运行被推断为在PU/CU的末尾。
[0191] 语法顺序示例7:copy_above_run的数量或index_run的数量→调色板索引聚集→跳出值聚集→last_run_mode→交错{调色板运行类型,调色板运行长度}。
[0192] 在这种情况下,last_run_mode指示最后一个运行模式是copy_above_run还是 index_run。例如,在编码/解码运行类型聚集中,如果编解码/解码的index_run数量等于index_run的数量,则运行类型聚集将被终止。如果last_run_mode为 copy_above_run,则copy_above_run被插入在末尾,而不标示。对于最后一个调色板运行模式,调色板运行被推断为在PU/CU的末尾。
[0193] 语法顺序示例8:copy_above_run的数量或index_run的数量→调色板索引聚集→last_run_mode→跳出值聚集→交错{调色板运行类型,调色板运行长度}。
[0194] 在这种情况下,last_run_mode指示最后一个运行模式是copy_above_run还是 index_run。例如,在编码/解码运行类型聚集中,如果编解码/解码的index_run数量等于index_run的数量,则运行类型聚集将被终止。如果last_run_mode为 copy_above_run,则copy_above_run被插入在末尾,而不被标示。对于最后一个调色板运行模式,调色板运行被推断为在PU/CU的末尾。
[0195] 在上述示例中,copy_above_run对应于上述“复制上方运行模式”的示例性语法元素。此外,index_run对应于“运行模式”的示例性语法元素。
[0196] 在上述语法顺序的示例1、2、3和5中,“调色板索引聚集(旁路编解码)→跳出(旁路编解码)值聚集”可以是“交错{调色板索引,跳出值}”。调色板索引和跳出值可以以交错方式进行编解码。如果解析的索引等于跳出索引,则可以立即解析跳出值。
[0197] 在上述语法顺序的示例2至7中,“last_run_mode”可以在“copy_above_run的数量或index_run的数量”之后被标示。
[0198] 在上述语法顺序的示例1至8中,可以在标示最后一个调色板运行之前的任何地方标示“last_run_mode”。
[0199] 在上述语法顺序的示例1至4中,调色板运行聚集在调色板运行聚集之前被解码。因此,对于调色板运行信令,最大可能运行(maximum possible run)可以进一步减去(subtracted by)剩余的索引运行模式的数量、剩余的复制上方运行模式的数量、或剩余的索引的数量运行模式+剩余的复制上方运行模式的数量。例如,maxPaletteRun=nCbS*nCbS–scanPos–1–剩余的 COPY_INDEX_MODE的数量,或maxPaletteRun=nCbS*nCbS–scanPos–1–剩余的COPY_ABOVE_MODE的数量,或maxPaletteRun=nCbS*nCbS– scanPos–1–剩余的COPY_ABOVE_MODE的数量–剩余的 COPY_INDEX_MODE的数量。在上述示例中,maxPaletteRun对应于用于最大调色板运行的示例性语法元素,nCbS对应于用于当前亮度编解码块的大小的示例性语法元素,scanPos对应于当前像素的扫描位置。
[0200] 在上述语法顺序的示例1至7中,对于最后一个调色板运行模式,调色板运行被推断为在PU/CU的末尾。
[0201] 方法2:使用跳出值将调色板索引聚集到最后。
[0202] 在SCM-4.0中,调色板运行的上下文形成取决于调色板索引。因此,调色板索引只能在调色板运行前进行编解码。为了将调色板索引聚集到最后,调色板运行的上下文形成应该与调色板索引无关。
[0203] 因此,调色板运行的上下文形成需要改变,使得调色板运行的上下文形成将仅取决于当前调色板运行模式、先前调色板运行模式、先前调色板运行、前一样本的调色板运行模式、前一样本的调色板运行,或上述信息的组合。或者,调色板运行可以用旁路二进制文件进行编解码。
[0204] 调色板索引映射编解码的语法顺序的各种示例如下所示。
[0205] 语法顺序示例1:copy_above_run的数量或index_run的数量→last_run_mode→运行类型聚集(上下文编解码)→运行长度聚集(不依赖于调色板索引)→调色板索引聚集(旁路编解码)→跳出值聚集(旁路编解码)。
[0206] 在这种情况下,last_run_mode表示最后一个运行模式是copy_above_run还是 index_run。例如,当编码/解码运行类型聚集时,如果编解码/解码的index_run数量等于index_run的数量,且last_run_mode是index_run,则运行类型聚集将被终止。如果编解码/解码的index_run数量等于index_run的数量,而last_run_mode为c opy_above_run,则运行类型聚集也将被终止,并且copy_above_run被插入至末尾。对于最后一个调色板运行模式,调色板运行被推断为在PU/CU的末尾。
[0207] 语法顺序示例2:copy_above_run的数量或index_run的数量→运行类型聚集→last_run_mode→运行长度聚集→调色板索引聚集→跳出值聚集。
[0208] 在这种情况下,last_run_mode表示最后一个运行模式是copy_above_run还是 index_run。例如,当编码/解码运行类型分组时,如果编解码/解码的index_run 数量等于index_run的数量,则运行类型聚集将被终止,并且标示last_run_mode 。如果last_run_mode为copy_above_run,则将copy_above_run插入到末尾。对于最后一个调色板运行模式,调色板运行被推断为在PU/CU的末尾。
[0209] 语法顺序示例3:交错{调色板运行类型,调色板运行长度},调色板索引聚集→跳出值聚集。
[0210] 在上述语法顺序的示例1至3中,“调色板索引聚集→跳出值聚集”可以是“交错{调色板索引,跳出值}”。调色板索引和跳出值可以以交错方式进行编解码。如果解析的索引等于跳出索引,则可以立即解析跳出值。
[0211] 在上述语法顺序的示例1至3中,可以在标示最后一个调色板运行之前的任何地方标示“last_run_mode”。
[0212] 在上述语法顺序的示例1和2中,调色板运行聚集可以在调色板索引聚集之前被解码。因此,对于调色板运行信令,最大可能的运行可以进一步减去剩余索引运行模式、剩余复制上方运行模式的数量、或剩余索引运行模式的数量+剩余复制上方运行模式的数量。例如,maxPaletteRun=nCbS*nCbS–scanPos–1–剩余COPY_INDEX_MODE的数量,或maxPaletteRun=nCbS*nCbS–scanPos– 1–剩余COPY_ABOVE_MODE的数量,或maxPaletteRun=nCbS*nCbS– scanPos–1–剩余COPY_ABOVE_MODE的数量–剩余COPY_INDEX_MODE的数量。
[0213] 在上述语法顺序的示例1和2中,对于最后一个调色板运行模式,调色板运行被推断为在PU/CU的末尾。
[0214] 本发明还涉及下面所公开的调色板编解码的各个方面。
[0215] 移除调色板索引映射解析中的行缓冲器
[0216] 在SCM-3.0中,以交错方式编解码四个调色板索引映射语法元素(即,调色板运行模式、调色板索引、调色板运行和跳出值)。虽然调色板运行模式的上下文形式被修改为独立于SCM-4.0中的上方样本的调色板运行模式,索引映射解析需要上方行的信息。例如,当使用复制上方运行模式时,要解析的跳出值的数量取决于要从上方行复制的跳出像素的数量。当先前编解码模式是复制上方运行模式时,索引重构也取决于上方样本的调色板索引。为了在调色板索引映射解析中保存(save)行缓冲器,公开了从上述示例中去除数据依赖关系的几种方法。
[0217] 方法-1:如果预测值是跳出样本,则以预测值复制模式直接复制跳出值。
[0218] 为了在计算在复制上方运行模式中要解析的跳出像素的数量期间去除依赖关系,根据本发明的实施例修改了复制上方运行模式行为,用于从上方行复制移除样本。
[0219] 在复制上方运行模式中,传送或导出“调色板运行”值以指示要从上方行复制的以下样本的数量。颜色指数等于上方行中的颜色指数。根据一个实施例,如果预测值(即,上面的位置)是跳出样本,则当前样本不仅复制索引(跳出索引),而且还复制来自上方行的跳出值。在这些样本中不需要解析跳出值。在这种方法中,即使标示的索引等于跳出索引,仍可以标示运行用于索引运行模式。如果跳出索引的运行大于0(例如N,N>0),解码器将从第一个样本开始填充N个样本的重构值(或跳出值)。运行语法之后可以标示跳出值。
[0220] 为了在先前的模式是复制上方运行模式时,去除索引解析和索引运行模式的重构的数据依赖性,当先前的模式是复制上方运行模式时,冗余索引删除被禁用,如JCTVC-T0078(JCTVC-T00784:Kim等,CE1-related:simplification for index map coding in palette mode,ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/ WG 11视频编解码联合协作小组(Joint Collaborative Team on Video Coding)( JCT-VC),第20次会议:Geneva,CH,2015.2.10-18,文档编号:JCTVC-T0078) 中所述。
[0221] 基于方法-1,索引映射解析不依赖于上方行的信息。熵解码器可以通过仅使用先前编解码调色板运行模式和调色板索引的依赖来解析所有调色板索引映射语法。
[0222] 在一个实施例中,在复制索引运行模式中,发送或导出“调色板运行”值以指示要在位流中编解码的以下样本的数量。当前位置的颜色索引被编解码。然而,如果当前位置的样本是跳出样本,则不仅对当前样本的索引(跳出索引)进行编解码,而且对跳出值进行编解码。在这种方法中,即使标示的指数等于跳出索引,也可以为索引运行模式标示运行。如果跳出索引的运行大于0(例如, N,N>0),则解码器将从第一个样本开始填充N个样本的重构值(或跳出值) 。运行语法之后可以标示跳出值。
[0223] 为了在先前的模式是复制索引运行模式时,去除索引解析和复制索引运行模式的重构的数据依赖性,当先前的模式是复制索引运行模式时,禁用冗余索引删除。
[0224] 利用上述方法,索引映射解析不依赖于先前索引的信息。熵解码器可以通过使用对先前编解码的调色板运行模式和调色板索引的依赖来解析所有调色板索引映射语法。
[0225] 方法-2:如果预测值是跳出样本,则将跳出样本作为预测值复制模式中的预定颜色索引进行处理。
[0226] 在复制上方运行模式中,传送或导出“调色板运行”值以指示要从上方行复制的以下样本的数量。颜色索引等于上方行中的颜色索引。根据一个实施例,如果上方或左侧样本是跳出样本,则将上方样本的颜色索引视为预定义的颜色索引(例如0)。当前索引设置为预定义的索引。这些预测值复制模式不需要跳出值。根据一个实施例,即使标示的索引等于跳出索引,也可以为索引运行模式标示调色板运行。运行语法之后可以标示跳出值。如果跳出索引的运行大于0( 例如N,N>0),则用编解码的跳出值重构第一个样本。可以将第一个样本的索引设置为跳出索引或预定义的颜色索引。剩余N个样本的索引被设置为预定索引 (例如,索引0)。其余N个样本用预定义索引(例如索引0)的值重构。在另一个例子中,如果跳出索引的运行大于0(例如N,N>0),则用跳出值重构第一个样本,并且还需要标示随后N个样本的跳出值。剩余的样本分别标示跳出值重构。可以将第一样本和其余N个样本的索引设置为预定索引(例如,索引0)。
[0227] 根据方法-2,除了索引运行模式的第一个样本之外,运行模式(即, adjustedIndexMax)中的最大码字索引是固定的(例如固定为indexMax-1)。对于CU中的第一个样本,adjustIndexMax等于indexMax。可以继续应用冗余索引删除。
[0228] 根据方法-2,虽然索引映射重构仍然需要上述样本的索引值,但是熵解码器可以通过仅使用对先前编解码的调色板运行模式和调色板索引的依赖来解析所有的调色板索引映射语法。
[0229] 根据JCTVC-T0078,为了在先前的模式是复制上方运行模式时,去除索引运行模式的索引重构的数据依赖性,当先前的模式是复制上方运行模式.时,冗余索引删除将被禁用。
[0230] 索引映射翻转下的复制上方模式
[0231] 本发明还涉及与索引映射编解码之前的索引映射翻转有关的问题。在解码器翻转索引映射之后,复制上方运行模式中的预测源是与以前不同的物理位置上的上方像素(physical above pixels)。图3A示出了索引编解码之前的示例索引映射翻转。图3B示出了翻转索引映射的示例。
[0232] 图3A示出了原始编解码单元的示例。在索引映射翻转后,最后一行中的像素(即像素0至像素7)将被翻转到第一行,如图3B所示。如果预测可以跨越CU ,则由上方相邻构造像素(neighboring constructed pixel,简写为NCP)预测现在的第一行像素。如图3B所示,线填充块指示翻转的索引映射,而图3A中的透明块(clear block)表示原始索引映射。对于翻转后的其他行中的像素,复制上方运行模式中的预测成为翻转之前由下面物理位置的像素位置的预测。在该方法中,索引重构不需要第二遍(second pass)。
[0233] 然而,在索引映射编解码之前翻转索引映射意味着使用上述NCP来预测物理位置中最后一行中的像素,如图4所示。这个预测过程是无效的,因为预测值和要预测的潜在索引之间的距离很大。
[0234] 因此,以下公开了提高与索引映射翻转有关的编解码效率的方法。
[0235] 方法1:如图5A和图5B所示,无论索引映射是否被翻转,复制上方运行模式中的索引是从其物理的上方位置(如果转置标志开启(transpose flag is on),则为左侧位置)预测的。如图5A所示,线填充块表示翻转索引映射,而图5B中的透明块代表原始的索引映射。
[0236] 方法2:信令不同的运行扫描起始位置。该方法类似于方法1,其中复制上方运行模式中的索引是从物理的上方位置中的像素预测的。可以标示附加信息以指示“运行扫描起始位置”或“扫描模式”。“运行扫描起始位置”可以是左上、右上、左下或右下。“扫描图案”可以是水平扫描、垂直扫描、水平遍历扫描或垂直遍历扫描。
[0237] 方法3:如果索引映射被翻转,则从其物理的最近位置的样本预测第一行的复制上方运行编解码像素,如图6A和图6B所示。图6A示出了如线填充块所示的翻转样本,图6B示出了原始物理位置的样本。如果转置标志关闭,物理位置中最后一行的复制上方运行编解码像素是从其物理的最近位置的样本中预测的。
[0238] 方法4:如果索引映射被翻转,则从上述相邻CU的物理像素位置预测最后行的复制上方运行编解码像素,如图7A和图7B所示。图7A示出了由线填充块指示的翻转像素,图7B示出了原始物理位置的样本。如果转置标志关闭,则可以从上述相邻CU的物理像素位置预测物理位置的第一行(或前M行)。M可以是1、 2、或3。M也可以取决于CU大小。可以标示M,使得解码器可以相应地进行解码。
[0239] 跨CU预测
[0240] 为了进一步提高编解码效率,公开了一种特殊的运行。这个特别的运行扩展了从调色板编解码CU的第一个样本开始的复制上方运行。该特殊运行可以标示一次(signaled once)。扩展复制上方运行模式中的样本是从相邻CU中的重构像素预测的。使用SCM-4.0或SCM-3.0中指定的调色板语法对该CU中的其余样本进行编解码,不同之处在于PU/CU中的总调色板编解码样本减少。
[0241] 方法1:首先标示语法元素(例如,由L表示的line_num),以指示从相邻 CU中的重构像素预测前L行样本,其中L是正整数。使用SCM-4.0或SCM-3.0中的调色板语法对剩余的样本进行编解码,不同之处在于PU/CU中的总调色板编解码样本减少。对于前L行样本,自其相邻CU中的重构像素预测它们的像素值。例如,如果palette_transpose_flag为0,则使用上方CU中的重构像素。前L行样本的像素值是上方CU的最后一行的重构像素值。类似于将垂直内部预测(Intra vertical prediction)应用于前L行样本,而其余行用正常调色板模式进行编解码。
[0242] 图8A示出了扩展复制上方运行模式的示例,其中从位于CU边界810上方的上一行复制两行像素(即,L=2)。
[0243] 方法2:首先标示语法元素(例如,由M表示的pixel_num),以指示从相邻 CU中的重构像素预测前M个样本,其中M是正整数。使用SCM-4.0或SCM-3.0中的调色板语法对剩余的样本进行编解码,不同之处在于PU/CU中的总调色板编解码样本减少。例如,如果palette_transpose_flag为0,则使用上方CU中的重构像素。前M个样本的像素值是上方CU的最后一行的重构像素值。类似于将垂直内部预测应用于前M行样本。如果CU的宽度为CU_width,根据SCM-4.0中的语法,从(M+1)处的第一个样本开始到CU中的(M+CU_width)个样本的第一个CU_width样本不能在复制上方运行模式中编解码。换句话说,根据SCM-4.0 中的语法,扫描位置等于M到(M+CU_width-1)的样本不能在复制上方运行模式中编解码。图8B示出了通过标示语法元素pixel_num(M)来指示从重构像素预测前M(即,M=11)个样本的跨CU的预测的示例。
[0244] 例如,可以修改SCM-3.0中palette_coding的语法表,如表12所示。
[0245] 表12.
[0246]
[0247]
[0248] 如表12所示,语法元素pixel_num被并入,如注释(12-1)所示,其中在调色板索引映射编解码之前标示pixel_num。从如注释(12-2)所示的pixel_num开始的扫描位置编解码其余的调色板样本。之前的调色板样本位置是根据注释( 12-3)得出的。在前pixel_num样本之后的第一个样本行不允许复制上方模式,如注释(12-4)所示。
[0249] 表示经调整的最大索引的变量adjustIndexMax如下导出:
[0250] adjustedIndexMax=indexMax
[0251] if(scanPos>pixel_num)
[0252] adjustedIndexMax-=1
[0253] 表示经调整的最大参考索引的变量adjustRefIndexMax导出如下:
[0254]
[0255] 在上述方法1和方法2中,可以首先标示语法元素 copy_from_neighboring_CU_flag。如果copy_from_neighboring_CU_flag为0,则不会标示line_num和pixel_num,并将其推断为0。如果 copy_from_neighboring_CU_flag为1,则会标示line_num和pixel_num。与解析的line_num和pixel_num相等的实际line_num和pixel_num增加1。
[0256] 方法3:在该方法中,相邻像素用于预测在调色板模式下编解码的当前像素。首先标示Num_copy_pixel_line,指示从相邻CU中的重构像素预测前 num_copy_pixel_line样本行。除了起始点改变,PU/CU中的总调色板编解码样本减少之外,剩余样本由正常调色板索引映射编解码进行编解码。
[0257] 对于样本的前num_copy_pixel_line行,它们的像素值是从相邻CU中的重构像素预测的,其中语法元素num_copy_pixel_line对应于要复制的像素线的数量。例如,如果palette_transpose_flag为0,则使用上方CU中的重构像素,如图9A所示。通过上方CU的最后一行的重构像素值来预测前num_copy_pixel_line(例如K )行样本的像素值。其类似于将帧内垂直预测(Intra vertical prediction)应用于样本的前K行,而其余行用正常的调色板模式进行编解码。如果 palette_transpose_flag为1,则使用左CU中的重构像素,如图9B所示。
[0258] num_copy_pixel_line的语法可以在调色板模式标示之后并在调色板表编解码之前标示。如果num_copy_pixel_line等于CU宽度或CU高度,则标示 palette_transpose_flag以指示从上方像素或左侧像素预测整个CU。由于预测了当前CU中的所有样本,所以跳过调色板表编解码和索引映射编解码的语法。
[0259] 如果num_copy_pixel_line小于CU宽度或CU高度,则应用普通调色板表编解码和调色板索引映射编解码。在SCM-4.0中,如果MaxPaletteIndex等于0,则 palette_transpose_flag被推断为0。但是,根据当前方法,如果MaxPaletteIndex等于0,且num_copy_pixel_line不等于0,palette_transpose_flag仍然需要标示,以指示要从上方CU或左侧CU中的重构像素预测的前num_copy_pixel_line行或列样本。对于索引映射编解码,起始样本位置设置为num_copy_pixel_line*CU_width 。对于具有num_copy_pixel_line*CU_width和(num_copy_pixel_line+1)*CU_width –1之间的样本位置的样本,无法选择复制上方运行模式。换句话说,样本位置小于CU_width*(num_copy_pixel_line+1)的样本不能标示为复制上方运行模式。
[0260] 表13示出了根据上述公开的方法的实施例的调色板编解码的示例性语法表。
[0261] 表13.
[0262]
[0263]
[0264]
[0265]
[0266] 在表13中,语法元素num_copy_pixel_line被并入所有语法的前面,如注释( 13-1)所示。如果num_copy_pixel_line等于nCbS(即CU宽度或CU高度),则语法palette_transpose_flag如注释(13-2)所示被合并。整个CU的调色板索引被分配为-1,如注释(13-
3)所示,其指示从相邻CU复制像素值。如果  num_copy_pixel_line不等于0,
MaxPaletteIndex不大于0(例如MaxPaletteIndex等于0),则语法元素palette_transpose_flag如注释(13-4)所示被合并。 num_copy_pixel_line行中的样本的调色板索引分配为-
1,如注释(13-5)所示。在前nCbS*num_copy_pixel_line行之后的第一个样本行不允许复制上方模式,如注释(13-6)所示。
[0267] 变量AdjustedMaxPaletteIndex导出如下:
[0268] AdjustedMaxPaletteIndex=MaxPaletteIndex
[0269] if(PaletteScanPos>num_copy_pixel_line*nCbS)
[0270] AdjustedMaxPaletteIndex-=1
[0271] 变量adjustRefPaletteIndex如下导出:
[0272]
[0273]
[0274] 如果PaletteIndexMap[xC][yC]等于-1,则相应的像素值与其相邻像素相同。根据该方法,如果上方或左侧像素不可用(例如,当应用限制性帧内预测时,在帧边界处的样本或帧间编解码的样本),则使用具有等于0的调色板索引的颜色。如果当前CU的调色板表未被编解码(例如,num_copy_pixel_line等于 CU_width),则使用调色板预测值表中的第一个调色板。
[0275] 在另一示例中,如果上方或左侧像素不可用,则可以使用HEVC帧内预测边界像素填充方法来生成替换相邻像素。
[0276] 使用复制上方像素行模式的行数可以根据语法元素 num_copy_pixel_line_indication导出,而不是作为num_copy_pixel_line直接标示。如果num_copy_pixel_line_indication为0,则将num_copy_pixel_line导出为0.如果num_copy_pixel_line_indication为1,则将num_copy_pixel_line导出为N,其为预定义的数字。如果num_copy_pixel_line_indication为k,则将 num_copy_pixel_line导出为k*N。
[0277] 方法4:在该方法中,在palette_transpose_flag语法之前标示 num_copy_pixel_line语法。表14示出了根据该方法的实施例的示例性调色板编解码语法表。
[0278] 表14.
[0279]
[0280]
[0281]
[0282] 在表14中,在palette_escape_val_present_flag信令之后,语法元素 num_copy_pixel_line被并入,如注释(14-1)所示。如果num_copy_pixel_line不等于0,MaxPaletteIndex不大于0(例如MaxPaletteIndex等于0),则语法 palette_transpose_flag如注释(14-2)所示被并入。num_copy_pixel_line行中的样本的调色板索引被分配为-
1,如注释(14-3)所示。在前nCbS* num_copy_pixel_line之后的第一个样本行不允许复制上方模式,如注释(14-4) 所示。
[0283] 语法元素num_copy_pixel_line可以在语法元素 palette_escape_val_present_flag前面标示。表15示出了根据该方法的调色板编解码的示例性语法表。
[0284] 表15.
[0285]
[0286]
[0287] 在表15中,在palette_escape_val_present_flag语法信令之前,语法元素 num_copy_pixel_line被并入,如注释(15-1)所示。如果num_copy_pixel_line不等于0并且MaxPaletteIndex不大于0(例如MaxPaletteIndex等于0),则会按照注释(15-2)所示的方式合并语法palette_transpose_flag。num_copy_pixel_line行中的样本的调色板索引被分配为-1,如注释(15-3)所示。在前个nCbS* num_copy_pixel_line行之后的第一个样本行不允许复制上方模式,如注释(15-4 )所示。
[0288] 在该实施例中,如果语法元素num_copy_pixel_line等于CU_width,则语法元素NumPredictedPaletteEntries和num_signaled_palette_entries均应当为0。第一编解码语法元素palette_predictor_run应为1。
[0289] 在palette_escape_val_present_flag(例如表15)之前的信令(signaling) num_copy_pixel_line的语法设计中,NumPredictedPaletteEntries和 num_signaled_palette_entries应当都为0,第一个编解码的palette_predictor_run应为1,而palette_escape_val_present_flag被推断为0。
[0290] 方法5:根据该方法,在palette_transpose_flag之后标示num_copy_pixel_line 。在这种语法设计中,即使MaxPaletteIndex等于0,也需要标示语法元素 palette_transpose_flag。表16示出了根据该方法的实施例的调色板编解码的示例性语法表。
[0291] 表16.
[0292]
[0293]
[0294] 由于语法元素palette_transpose_flag即使在MaxPaletteIndex等于0的情况下也需要标示,所以在测试“if(MaxPaletteIndex>0)”之外会合并语法(如注释(16-1 )所示)。同时,测试“if(MaxPaletteIndex>0)”中的语法元素palette_transpose_flag 如注释(16-2)中的行填充文本所示删除。语法元素num_copy_pixel_line如注释 (16-3)所示被并入。num_copy_pixel_line行中的样本的调色板索引被分配为-1 ,如注释(16-4)所示。
[0295] 如果num_copy_pixel_line是偶数,则对于第一法线(normal line)使用从左到右扫描是自然的,如图10A所示。但是,如果num_copy_pixel_line是奇数,则有两种类型的扫描可以选择。一个是如图10B所示的第一法线的从左到右的扫描,另一个是如图10C所示的第一法线的从右到左的扫描。
[0296] 如图10B所示,它向下移动遍历扫描(traverse scan downward)或从第一个法线使用遍历。在图10C,它是使用从当前CU中第一个样本的遍历扫描,并跳过前num_copy_pixel_line行的扫描。在表13至16中,使用图10C中的扫描。可以相应地修改语法表用于图10B中的扫描。
[0297] 方法6:表17示出了用于图10B中扫描的调色板编解码的示例性语法表。
[0298] 表17.
[0299]
[0300]
[0301]
[0302]
[0303]
[0304] 在表17中,语法元素num_copy_pixel_line被并入所有语法的前面,如注释( 17-1)所示。如果num_copy_pixel_line等于nCbS(即CU宽度或CU高度),则语法palette_transpose_flag被并入,如注释(17-2)所示。整个CU的调色板索引被分配为-1,如注释(17-
3)所示,其指示从相邻CU复制像素值。如果 num_copy_pixel_line不等于0,并且MaxPaletteIndex不大于0(例如MaxPaletteIndex 等于0),则会按照注释(17-4)的方式合并语法palette_transpose_flag。 num_copy_pixel_line行中的样本的调色板索引分配给-1,如注释(17-5)所示。 PaletteScanPos将重置为0,如注释(17-6)所示。由于PaletteScanPos被复位(reset ),实际的样本索引需要增加num_copy_pixel_line*nCbS,如注释(17-7和17-10 到17-12)所示。垂直位置需要增加num_copy_pixel_line,如注释(17-8,17-9和 17-13)所示。
[0305] 变量AdjustedMaxPaletteIndex如下导出:
[0306] AdjustedMaxPaletteIndex=MaxPaletteIndex
[0307] if(PaletteScanPos>0)
[0308] AdjustedMaxPaletteIndex-=1
[0309] 变量adjustRefPaletteIndex如下导出:
[0310]
[0311]
[0312] 注意,在上述方法3至方法6中,num_copy_pixel_line的信令也可以通过使用现有HEVC SCC规范中的palette_run语法元素和上下文来构造。例如,其可以如表18所示标示。
[0313] 表18.
[0314]
[0315] 在表18中,使用上述语法,解码的copy_pixel_line_length可以在语义上是复制像素行的数量。该编解码元素的最大值为块高度-1。
[0316] 解码的copy_pixel_line长度也可以是使用复制像素模式的实际样本数,并且将复制像素线的数量导出为copy_pixel_line长度/block_width。注意,在该方法中,对copy_pixel_line长度施加一致性约束(conformance constraint),使得它必须是block_width的倍数。
[0317] 方法7:在该方法中,使用具有修改解码过程的当前语法结构来标示块是否从当前CU外部的复制像素模式开始的指示,以及使用复制像素模式的行数(样本数)。例如,这可以通过以下方式实现:
[0318] ●允许复制上方运行模式用于块中的第一个样本。这通过使用语法元素 palette_run_type_flag[0][0]来指示。如果palette_run_type_flag[0][0]为1,以下行使用复制像素填充标示行数的样本。如果palette_run_type_flag[0] [0]为0,剩余的语法信令(syntax signaling)将保持与当前语法结构相同。
[0319] ●当palette_run_type_flag[0][0]为1时,使用用于信令调色板运行长度的相同的语法元素来标示使用复制像素的行数。有两种方法可以使用调色板运行长度语法来通知行数。
[0320] ○用于复制像素模式的解码调色板运行长度R语义意味着行数(而不是样本数)。因此,复制像素的实际运行是水平扫描的解码值R *block_width,或垂直扫描的解码值R*block_height。该解码的R 的最大值应为块高度(或宽度)。
[0321] ○另一种方法是解码的调色板运行长度R是实际的复制像素运行。该方法不需要更改复制像素运行的语义和解码过程。
[0322] 注意,对于该方法,必须对解码值R施加一致性约束,使得它必须是block_width的倍数。
[0323] ●当palette_run_type_flag[0][0]为1时,复制像素行之后,下一行样本不能使用复制上方运行模式。根据此条件修改解析标准,以不解析此行的 run_type标志。
[0324] ●当palette_run_type_flag[0][0]为0时,第一行中的其余样本不能使用复制上方运行模式。解析标准根据此条件进行修改,以不解析这些样本的 run_type标志。
[0325] 表19示出了根据该方法的调色板编解码的示例性语法表。复制像素模式的“调色板运行长度R”的编解码语义上意味着行数(不是样本数)。
[0326] 表19.
[0327]
[0328]
[0329]
[0330]
[0331] 在表19中,由于即使MaxPaletteIndex等于0,也需要标示语法元素 palette_transpose_flag,所以在测试“if(MaxPaletteIndex>0)”之外,结合了语法 (如注(19-1)所示)。同时,注释(19-2)中的行填充文本表示删除测试“if (MaxPaletteIndex>0)”内的语法元素palette_transpose_flag。整个CU的调色板索引首先被重新设置为-1,如注释(19-3)所示,其指示像素值从相邻CU复制。第一个样本(PaletteScanPos==0)的Palette_run_type_flag和paletteRun用于指示num_copy_pixel_line。如注释(19-5)所示,对于第一个样本,如果 palette_run_type_flag等于COPY_ABOVE_MODE,所述maxPaletteRun被设定为等于nCbS–1,如注释(19-4)所示,并且num_copy_pixel_line等于解码的 paletteRun。否则,num_copy_pixel_line设置为0。
[0332] 表20示出了根据该方法的调色板编解码的另一示例性语法表。复制像素模式的“调色板运行长度R”的编解码是实际的运行长度,并且施加一致性约束使得 R必须是CU_width的倍数。
[0333] 表20.
[0334]
[0335]
[0336]
[0337] 在表20中,由于即使MaxPaletteIndex等于0,也需要标示语法元素 palette_transpose_flag,所以在测试“if(MaxPaletteIndex>0”之外,结合了语法( 如注(20-1)所示)。同时,注释(20-2)中的行填充文本表示删除测试“if( MaxPaletteIndex>0)”内的语法元素palette_transpose_flag。整个CU的调色板索引首先被重新设置为-1,如注释(20-3)所示,表示像素值从相邻的CU复制。第一个样本(PaletteScanPos==0)的palette_run_type_flag和paletteRun用于指示 num_copy_pixel_line。如注释(20-4)所示,对于第一个样本,如果 palette_run_type_flag等于COPY_ABOVE_MODE,则num_copy_pixel_line等于解码的paletteRun/nCbs。请注意,在这种情况下,对paletteRun施加一致性约束,使其必须是nCbs的倍数。否则(即palette_run_type_flag不等于 COPY_ABOVE_MODE),num_copy_pixel_line设置为0。
[0338] 方法8:根据该方法,仅测试num_copy_pixel_line=0或CU_width。通过引入新的语法元素pred_from_neighboring_pixels提供调色板模式的快捷方式。如果 pred_from_neighboring_pixels为1,则显示palette_transpose_flag。
[0339] 如果pred_from_neighboring_pixels为1,并且palette_transpose_flag为0,则从上方CU的像素预测所有样本。如果pred_from_neighboring_pixels为1,且 palette_transpose_flag为1,则从左侧CU的像素预测所有样本。如果相邻像素不可用,则有两种方法来生成替换像素。根据第一种方法,可以使用帧内预测边界  (Intra  prediction boundary)像素生成方法。它类似于没有残差编解码的水平或垂直帧内预测。根据第二种方法,使用调色板指数等于0的颜色。如果当前CU 的调色板表未被编解码(例如,num_copy_pixel_line等于CU_width),则使用调色板预测值表中的第一个调色板。
[0340] 表21示出了根据该方法的调色板编解码的示例性语法表。
[0341] 表21.
[0342]
[0343] 在表21中,语法元素pred_from_neighboring_pixels语法如注释(21-1)所示被合并。如果pred_from_neighboring_pixels为真实(true),palette_transpose_flag 被合并,并且整个CU的调色板索引被设置为-1,如注释(21-2)所示。
[0344] 在方法3至方法8中,仅标示一个palette_transpose_flag。如果 palette_transpose_flag等于0,则首先使用垂直复制像素模式,然后使用索引水平扫描。否则,首先使用水平复制像素,然后使用索引垂直扫描。
[0345] 或者,可以标示两个转置标志,例如palette_copy_pixel_transpose_flag和 palette_scan_transpose_flag。Palette_copy_pixel_transpose_flag表示来自相邻CU的复制像素模式的方向。Palette_scan_transpose_flag指示调色板扫描的方向。例如,palette_copy_pixel_transpose_flag等于0表示来自上方CU的复制像素模式,而 palette_copy_pixel_transpose_flag等于1表示来自左侧CU的复制像素模式。 Palette_scan_transpose_flag等于0表示使用水平扫描,而 Palette_scan_transpose_flag等于1表示使用垂直扫描。
[0346] 例如,在图11A中,palette_copy_pixel_transpose_flag为0, palette_scan_transpose_flag为0。在图11B中,palette_copy_pixel_transpose_flag为0 ,palette_scan_transpose_flag为1。在图11C中,palette_copy_pixel_transpose_flag 为1,palette_scan_transpose_flag为0。
[0347] 通过反向遍历扫描和旋转遍历扫描在CU上进行预测
[0348] 根据一个实施例,跨CU的预测可以用反向遍历扫描和旋转遍历扫描来实现。图12A示出了通过反向遍历扫描跨CU预测的示例,图12B示出了通过旋转遍历扫描跨CU预测的示例。两个扫描的正常索引映射编解码的扫描位置从0开始,结束于nCbS*nCbS-num_copy_pixel_line*nCbS–1。对于样本位置等于或大于 nCbS*nCbS-num_copy_pixel_line*nCbS的其余样本,PaletteIndexMap[xC] [yC]设置为-1,这意味着它们的像素值与相邻像素相同。
[0349] num_copy_pixel_line的上下文形成和二值化(Binarization)
[0350] 语法元素num_copy_pixel_line可以使用K阶(EG-K代码)的指数-哥伦布( Exponential-Golomb)码,K阶的截断的指数-哥伦布码(截断的EG-K码),N 位截断的一元码(Unary code)+EG-K代码,或调色板运行中使用的相同的二值化方法(二值化为palette_run_msb_id_plus1和palette_run_refinement_bits)。
[0351] 上下文二进制文件(context bins)可以用于编解码num_copy_pixel_line。例如,我们可以使用与num_copy_pixel_line的调色板运行中使用的相同的二值化方法。palette_run_msb_id_plus1的前N个位可以使用上下文编解码二进制文件(bins )。例如,N可以是3。剩余的二进制文件(bins)被编解码在旁路二进制文件( bins)中。可以通过调色板运行编解码共享上下文。例如,上下文可以与扩展的复制上方运行模式共享。
[0352] 由于num_copy_pixel_line等于CU_width和0的概率大于num_copy_pixel_line 作为其他数字的概率,因此修改了代码二值化以便将等于CU_width的 num_copy_pixel_line的码字(codeword)减小。例如,CU_width的值可以插入到用于二值化的码字表中的数字P(例如1)之前。等于或大于P的 num_copy_pixel_line的值在编码器侧将增加1。在解码器侧,如果解析的码字为P ,则表示num_copy_pixel_line等于CU_width。如果解析的码字小于P,则 num_copy_pixel_line等于解析的码字。如果解析的码字大于P,则 num_copy_pixel_line等于解析的码字减1。
[0353] 在另一个实施例中,两个附加位用于指示num_copy_pixel_line是否等于0、 CU_width、或其他数字。例如,“0”表示num_copy_pixel_line等于0,“10”表示 num_copy_pixel_line等于CU_width,而“11+codeord-L”表示num_copy_pixel_line 等于L+1。
[0354] 在另一个实施例中,使用两个附加位来指示num_copy_pixel_line是否等于0 、CU_width、或其他数字。例如,“0”表示num_copy_pixel_line等于CU_width,“10”表示num_copy_pixel_line等于0,而“11+codeord-L”表示 num_copy_pixel_line等于L+1。
[0355] 对于跨CU区域预测中提到的方法4至方法7,在调色板表编解码之后标示 num_copy_pixel_line。num_copy_pixel_line的二值化可以根据调色板表编解码的解码信息进行修改。例如,如果NumPredictedPaletteEntries和 num_signaled_palette_entries都为0,则这意味着至少一个样本行/列通过正常调色板模式进行编解码。因此,num_copy_pixel_line不应等于CU_width。因此, num_copy_pixel_line的码字范围被限制为从0到(CU_width-1)。例如,如果使用K阶的截断的指数-哥伦布码(截断的EG-K码)、N位截断的一元代码+EG-K 代码,或在调色板运行中使用的相同的二值化方法用于对num_copy_pixel_line 进行编解码,则cMax、MaxPaletteRun、或最大可能值设置为CU_width-1。用于调色板运行的二值化方法将把调色板运行二值化为palette_run_msb_id_plus1和 palette_run_refinement_bits。
[0356] 确定num_copy_pixel_line的搜索方法
[0357] 在另一个实施例中,公开了用于确定复制像素行数(即,num_copy_pixel_line )的搜索方法。
[0358] 方法1:在编码器侧,确定num_copy_pixel_line的值。从相邻像素预测前 num_copy_pixel_line列/行。剩下的样本用于导出剩余样本和索引映射的调色板。
[0359] 方法2:在编码器侧,使用整个CU的样本来首先导出调色板。根据该调色板表,可以使用速率失真优化(ate-distortion-optimization,简写为RDO)过程来确定num_copy_pixel_line的最佳值。内插(interpolation)可用于估计不同 num_copy_pixel_line的位成本。例如,如果num_copy_pixel_line=0的位成本为 R0,且CU_width为16,则num_copy_pixel_line=3的位成本等于R0*(CU_width -3)/CU_width(即13/16*R0)。
[0360] 在确定num_copy_pixel_line之后,从相邻像素预测前num_copy_pixel_line列 /行。剩余的样本用于重新导出剩余样本和索引映射的调色板。
[0361] 来自相邻CU的基于行的复制像素
[0362] 在前面的部分中,公开了来自相邻CU的基于行的复制像素用于调色板模式编解码。首先标示表示复制像素行数的语法元素num_copy_pixel_row,以从相邻 CU中的重构像素指示要预测的前num_copy_pixel_row行样本。类似的概念可以应用于其他模式,如帧间模式,帧内BC模式和帧内BC模式。
[0363] 在一个实施例中,来自相邻CU的基于行的复制像素被应用于帧间模式和/ 或帧内模式PU或CU。首先标示语法元素num_copy_pixel_row。如果 num_copy_pixel_row不等于0,则标示语法元素copy_pixel_row_direction_flag以指示复制像素行的方向。如果copy_pixel_row_direction_flag为0,则 num_copy_pixel_row表示从上方CU中的重构像素预测的前num_copy_pixel_row 行样本。如果copy_pixel_row_direction_flag为1,则num_copy_pixel_row表示从左 CU中的重构像素预测的前num_copy_pixel_row列样本。例如,图13示出了在帧间模式中编解码的8×8CU的示例。该CU的num_copy_pixel_row的值为3,且该CU 的copy_pixel_row_direction_flag为0。上三行中的预测值由上方CU的最后一行的重构像素值代替。其余像素由原始帧间模式预测。它类似于对整个CU/PU执行帧间模式预测,然后用相邻像素代替前num_copy_pixel_row行或列。
[0364] 帧内预测相邻像素构造可用于生成相邻参考像素。如果相邻像素不可用( 例如,在图像边界之外),则可以应用帧内预测中的参考像素填充方法来生成相邻参考像素。帧内预测中的平滑滤波器可以被应用或关闭。
[0365] 语法元素num_copy_pixel_row和copy_pixel_row_direction_flag可以以CU级或PU级标示信号。可以在CU或PU前面标示Num_copy_pixel_row和 copy_pixel_row_direction_flag,或者可以在CU或PU的中间标示,或者可以在CU 或PU的末尾标示。例如,如果num_copy_pixel_row和 copy_pixel_row_direction_flag以CU级标示并且在CU前面标示,则可以在 part_mode之前标示num_copy_pixel_row和copy_pixel_row_direction_flag。可以根据num_copy_pixel_row和copy_pixel_row_direction_flag的值自适应地改变 part_mode的码字。例如,如果copy_pixel_row_direction_flag为0并且 num_copy_pixel_row等于或大于CU_height/2,则PART_2NxN和PART_2NxnU 无效。修改part_mode的码字二值化。例如,如果删除了PART_2NxN和 PART_2NxnU,则part_mode的二值化显示在表22中。
[0366] 表22.
[0367]
[0368]
[0369] 在表22中,具有线填充背景的文本对应于删除的文本。在另一个示例中,如果在CU级标示了num_copy_pixel_row和copy_pixel_row_direction_flag,并且在 CU的结尾处或在CU的中间标示num_copy_pixel_row和copy_pixel_row_direction_flag,则可以在part_mode之后标示num_opy_pixel_row 和copy_pixel_row_direction_flag。在接收到part_mode之后,可以限制 num_copy_pixel_row和copy_pixel_row_direction_flag的值。例如,如果part_mode 为PART_2NxN且copy_pixel_row_direction_flag为0,则num_copy_pixel_row的值将被限制在从0到CU_height/2的范围内。
[0370] 帧内边界(Intra Boundary)参考像素
[0371] 在帧内模式中,如果num_copy_pixel_row不为0,则相邻参考像素可以与从源自HEVC的像素相同。它与执行PU的帧内预测相同,然后用相邻CU的像素替换前几行或列。
[0372] 在另一个实施例中,如果num_copy_pixel_row不为0,则相邻参考像素的位置被改变。图14和图15示出了根据本实施例的改变相邻参考像素的位置的示例。在图14和图15中,num_copy_pixel_row为3,而copy_pixel_row_direction_flag 为0。上方参考像素和左上参考像素移动到第三行。如图14所示,从右上方的CU 复制右上方的参考像素。如图15所示,从第三行的最右边的像素复制右上方的参考像素。
[0373] 对于从相邻CU预测的区域的残差编解码
[0374] 根据一个实施例,如果num_copy_pixel_row为N且 copy_pixel_row_direction_flag为0,则从相邻CU预测上方N行。可以将上方N行的残差限制为0。根据另一实施例,可以标示上方N行的残差。对于帧间模式,应用HEVC残差四叉树。
[0375] num_copy_pixel_row的上下文形成和二值化
[0376] num_copy_pixel_row可以使用K阶的指数Golomb码(EG-K码),K阶截断的指数Golomb码(截断的EG-K代码),N位截断的一元码+EG-K代码或调色板运行中使用的相同二值化方法(即,被二值化为palette_run_msb_id_plus1和 palette_run_refinement_bits)。
[0377] 上下文二进制文件可以用于对num_copy_pixel_row进行编解码。例如,可以使用与调色板运行编解码中的num_copy_pixel_row相同的二值化方法。 palette_run_msb_id_plus1的前N个位可以使用上下文编解码的二进制文件。例如,N可以是3。其余的二进制文件被编解码在旁路二进制文件中。可以通过调色板运行编解码共享上下文。例如,上下文可以与扩展复制上方运行模式共享。
[0378] 由于num_copy_pixel_row等于CU_width和0的概率高于num_copy_pixel_row 作为其他数字的概率,因此可以修改代码二值化以减少等于CU_width的 num_copy_pixel_row的码字。例如,可以在码字表中的数字M(例如1)之前插入CU_width的值。等于或大于M的num_copy_pixel_row的值在编码器侧将增加1 。在解码器侧,如果解析的码字为M,则表示num_copy_pixel_row等于CU_width 。如果解析的码字小于M,则num_copy_pixel_row等于被解析的码字。如果解析的码字大于M,则num_copy_pixel_row等于解析的码字减1。
[0379] 根据另一实施例,使用两个附加位来指示num_copy_pixel_row是否等于0、 CU_width、或其他数。例如,“0”表示num_copy_pixel_row等于0,“10”表示 num_copy_pixel_row等于CU_width,“11+codeord-L”表示num_copy_pixel_row 等于L+1。在另一个例子中,“0”表示num_copy_pixel_row等于CU_width,“10”表示num_copy_pixel_row等于0,“11+codeord-L”表示num_copy_pixel_row等于L +1。
[0380] 对于在跨CU部分的预测中提到的方法4到方法7,可以在调色板表编解码之后标示num_copy_pixel_row。num_copy_pixel_row的二值化可以根据调色板表编解码的解码信息进行修改。例如,如果NumPredictedPaletteEntries和 num_signaled_palette_entries都为0,则表示至少有一个行/列的样本以正常调色板模式进行编解码。num_copy_pixel_row不应等于CU_width。因此, num_copy_pixel_row的码字范围被限制为从0到(CU_width-1)。例如,如果K 阶截断的指数–哥伦布码(截断的EG-K代码)、N位截断的一元代码+EG-K代码、在调色板运行中使用的相同二值化方法(即被二值化为 palette_run_msb_id_plus1和palette_run_refinement_bits)用于对 num_copy_pixel_row进行编解码,将cMax,MaxPaletteRun、或最大可能值设置为CU_width-1。num_copy_pixel_row不应等于CU_width[0381] 在该部分中,上述CU_width可以由来自相邻方法的CU级或PU级的基于行的复制像素的CU_height、PU_width、或PU_height替代。
[0382] 索引编解码数量
[0383] 在SCM-4.0调色板索引映射编解码中,首先标示索引数。为了标示索引的数量,首先导出变量“索引数量-调色板大小”。然后执行映射处理以将“索引数量 -调色板大小”映射到“映射值”。映射值使用与“coeff_abs_level_remaining”相同的二值化方法进行二值化,并标示。前缀部分由截断的Rice码表示。后缀部分由指数哥伦布码表示。这个二值化过程可以被认为具有输入cParam,并且cParam 被设置为(2+indexMax/6)。但是,indexMax/6需要划分或查找表操作。因此,根据本发明的实施例,将cParam设置为(2+indexMax/M),并且M是2 的整数次幂(power-of-2)(例如2n,n是整数)。因此,indexMax/M可以通过将indexMax右移到n位来实现。例如,cParam设置为(2+indexMax/4)或(2+ indexMax/8),可以通过分别将indexMax右移2或3位来实现。
[0384] 在编码/解析调色板索引映射之前聚集所有的跳出颜色
[0385] 在当前的HEVC SCC规范或先前版本中,在索引映射的编解码期间,调制板编解码中的跳出像素的值以其它规则索引以交错方式标示,或者在索引映射的编解码完成之后将像素值聚集在一起。根据本发明的一个实施例,所有跳出像素值被聚集在索引映射编解码之前。
[0386] 假设在当前编解码块内的不同位置存在N个跳出像素,其中N是正整数。在一个实施例中,在对该编解码块的调色板索引映射进行编码/解码之前,这些跳出像素的所有颜色值被一起编码/解码。以这种方式,当索引被解码为跳出索引时,其对应的像素值不再需要被解码。请注意,某些跳出像素可能具有相同的颜色值。在一个实施例中,每个跳出像素出现的像素值仍被写入位流。
[0387] 图16是根据该方法的实施例,用N=5解码跳出颜色的示例,其中每个跳出像素出现的像素值仍然被写入到位流中。在此示例中,使用水平遍历扫描。根据解码顺序,每个跳出像素可以在解码表中找到相应的颜色。
[0388] 在另一个实施例中,仅将非重复的颜色值写入位流中,并且为每个跳出像素发生标示这些写入的颜色的索引。
[0389] 图17示出了根据N=5的方法的实施例来解码跳出颜色的示例,其中只有非重复的颜色值被写入位流。在此示例中,使用水平遍历扫描。只有不重复的颜色被解码(例如M=3),并且用于每个跳出像素出现的该颜色表中的索引被标示通知(例如N=5)。根据解码顺序,每个跳出像素可以在解码表中找到相应的颜色。
[0390] 跳出颜色信令终止
[0391] 在一个实施例中,标示编码/解码的跳出颜色的数量。例如,在每个跳出颜色被编解码或解码之后,如果这是要被编码或解码的最后一个颜色,则使用1 位标志“end_of_escape_color_flag”来发出信号。当解码的 end_of_escape_color_flag为1时,不需要解码更多的跳出颜色。假设当前编解码块中有N个跳出颜色,最后的M个像素具有相同的颜色值,其中M和N是整数, M<=N。在另一个实施例中,仅需要发送这些M个像素的一个颜色值,并且 end_of_escape_color_flag被设置为1。最后(M-1)个跳出像素被推断为共享最后解码的跳出颜色值。对于N=5和M=3,该方法的示例在表23中示出。
[0392] 表23.
[0393]
[0394] 在另一个实施例中,在对颜色值进行编码/解码之前,显式地(explicitly) 标示了跳出颜色的总数。此外,end_of_escape_color_flag可以是旁路编解码或上下文编解码。
[0395] 在编解码块中允许的跳出颜色总数的限制
[0396] 可以通过在诸如序列级、图片级或片(slice)级的高级报头处设置最大允许数量来限制解码的跳出颜色的总数。
[0397] 如果达到该最大数目,则根据一个实施例,推断剩余的跳出像素以共享最后解码的跳出颜色的值。在另一个实施例中,推断剩余的跳出像素以共享特定解码的跳出颜色的值,例如最常用的颜色。
[0398] 从CU外部复制像素
[0399] 在SCM 3.0中,颜色索引值范围取决于调色板大小和跳出标志。如果跳出标志关闭,则最大索引值等于调色板大小。如果跳出标志打开,则最大索引值等于(调色板大小+1)。如果最大索引值等于N,则可能的索引值范围为0到(N-1 )。在SCM 3.0中,禁止等于0的最大索引值。如果最大索引值等于1,则CU中的所有颜色索引将被推定为0。如果只有一个可能的索引值,则假定所有颜色索引应为0。
[0400] 根据上文的公开,可以通过COPY_ABOVE来标示像素。在这种情况下,它不仅将复制上方像素的像素索引,而且还将复制上方像素的像素值。解码器可以从拷贝的像素值重构COPY_ABOVE中的像素,而不必引用调色板。如果上述像素跨越CU边界,根据上文的公开,分配相邻CU的相邻构造像素(NCP)的特殊索引(表示为N)。当像素由COPY_ABOVE标示时,它不仅会复制上方像素的像素索引(N),而且还将复制图18中由点填充区域指示的上方像素的像素值,其中图18展示了CU边界(1810)。
[0401] 基于复制NCP的像素值的方法,以零/一个索引值处理调色板编解码的CU的假设不是真的。对于最大索引值等于0的情况,可以从NCP中预测CU中的所有像素,如图19所示。
[0402] 如果最大索引值等于1,则不是所有的颜色索引都可以为0。像素的一部分可以是0,并且可以从NCP预测一部分像素,如图20所示。
[0403] 在图19和图20所示的例子中,在SCM3.0中没有相应的语法可以使用。因此,以下公开了用于标示这些情况的新语法。
[0404] 用于跨CU的索引预测的语法元素
[0405] 在SCM3.0中,调色板编解码CU包含以下语法:
[0406] ·Palette_share_flag等于1指定调色板大小等于先前的previousPetteBoxEntries,整个调色板条目与先前的调色板条目相同。
[0407] ●Palette_transpose_flag等于1指定将转置过程应用于当前CU的关联调色板索引。Palette_transpose_flag等于0指定转置过程不应用于当前CU 的关联调色板索引。
[0408] ●Palette_escape_val_present_flag指定跳出编解码的样本值。
[0409] ●Palette_prediction_run[i]指定了先前的调色板previousPaletteEntries 中当前重用的索引和下一个重新调用的调色板条目的索引之间的差异,但有以下例外:palette_prediction_run等于0表示当前和下一个重用条目的索引之间的差异为1,palette_prediction_run等于1表示不再重用先前调色板previousPaletteEntries的更多条目。
[0410] ●Num_signaled_palette_entries指定调色板中针对当前编解码单元明确标示的条目数。
[0411] ·Palette_entries指定颜色分量cIdx的调色板中的第i个元素
[0412] ·Palette_run_coding()指定索引映射的运行编解码模式。
[0413] 为了提供跨CU的索引预测的语法,根据本发明的实施例公开了以下语法示例:
[0414] 语法示例1:添加新的标志all_pixel_from_NCP_flag。如果 all_pixel_from_NCP_flag关闭,其他语法与SCM3.0相同。在第一行中,可以标示复制运行模式以允许跨CU预测。如果all_pixel_from_NCP_flag打开,则意味着(imply)所有像素都将从NCP预测。Palette_transpose_flag可以标示来自左 NCP或以上NCP的预测。也可以标示其他预测方向。如果 all_pixel_from_NCP_flag打开,则可以跳过信令palette_share_flag、 palette_escape_val_present_flag、palette_prediction_run、 num_signaled_palette_entries、palette_entries、或palette_run_coding()。
[0415] 图21示出了根据上述示例的用于支持跨CU的索引预测的信令的示例性流程图。在步骤2110中,测试all_pixel_from_NCP_flag是否等于1。如果结果为“是”,则执行步骤2130。如果结果为“否”,则执行步骤2120。在步骤2130中, palette_transpose_flag被标示以指示来自左NCP或上方NCP的预测。在步骤2120 中,基于SCM3.0的语法用于跨CU的索引预测。
[0416] 语法示例2:添加新标志any_pixel_from_NCP_flag。如果 any_pixel_from_NCP_flag关闭,其他语法与SCM3.0相同。在第一行中,复制运行模式没有标示(没有跨CU的预测)。如果any_pixel_from_NCP_flag打开,则暗示(imply)要从NCP中预测部分像素。编码器可以标示palette_share_flag、 palette_prediction_run、num_signaled_palette_entries、 palette_escape_val_present_flag,并且解码器可以基于该信息计算最大索引值。如果最大索引值等于0,则从NCP预测所有像素,并且可以跳过 palette_run_coding()。如果最大索引值大于0,则从NCP预测部分像素,并且可以标示palette_run_coding()。
[0417] 图22示出了根据上述示例的用于支持跨CU的索引预测的信令的示例性流程图。如步骤2210所示,测试any_pixel_from_NCP_flag是否等于1。如果结果为“是”,则执行步骤2230。如果结果为“否”,则执行步骤2220。在步骤2220中,基于SCM3.0的语法用于索引预测,且不需要跨CU预测。在步骤2230中,标示包括 palette_share_flag、palette_prediction_run、num_signaled_palette_entries、以及palette_escape_val_present_flag的各种语法元素。解码器基于该信息计算最大索引值,并且在步骤2240中检查最大索引值是否等于
0。如果结果为“是”,则执行步骤2260。如果结果为“否”,则执行步骤2250。在步骤2250中,标示 palette_transpose_flag和palette_run_coding()。在步骤2260中,标示 palette_transpose_flag,并且跳过palette_run_coding()(即,从NCP预测所有像素)。
[0418] 语法示例3:添加新标志any_pixel_from_NCP_flag。如果 any_pixel_from_NCP_flag关闭,其他语法与SCM3.0相同。在第一行中,复制运行模式没有标示(没有跨CU的预测)。如果any_pixel_from_NCP_flag打开,则暗示要从NCP中预测部分像素。编码器可以标示palette_share_flag、 palette_prediction_run、num_signaled_palette_entries、 palette_escape_val_present_flag,并且解码器可以基于该信息计算最大索引值。如果最大索引值等于0,则从NCP预测所有像素,并且可以跳过 palette_run_coding(),如图2所示。否则,其他语法与SCM3.0相同。在第一行中,复制运行模式被标示(跨CU预测)。请注意,如果最大索引值等于1,则可以跳过palette_run_coding()和palette_transpose_flag。
[0419] 图23示出了根据上述示例的用于支持跨CU的索引预测的信令的示例性流程图。该流程图与图22中基本相同,除了最大索引不为0的情况(即,来自步骤 2240的“否”路径)之外。在这种情况下,如步骤2310所示,根据SCM3.0的语法用于跨CU的预测。
[0420] 语法示例4:语法示例1中的“all_pixel_from_NCP_flag”和语法示例2或3中的“any_pixel_from_NCP_flag”可以组合成palette_prediction_run。在SCM3.0中, palette_prediction_run是运行长度编解码。如果第一次运行(即 palette_prediction_run[0])等于固定或派生值,则all_pixel_from_NCP_flag或 any_pixel_from_NCP_flag被推断为打开(on)。该值可以是0或1。
[0421] 语法示例5:如图24的步骤2410所示,编码器可以标示palette_share_flag、 palette_prediction_run,和num_signaled_palette_entries信号。然后,可以根据信息导出调色板大小。
[0422] 检查调色板大小以确定其是否等于0,如步骤2420所示。如果调色板大小大于0(即,来自步骤2420的“否”路径),其他语法与SCM3.0相同,如步骤2430 所示。在第一行中,可以根据是否是跨CU预测来标示复制运行模式。
[0423] 如果调色板大小等于0(即,来自步骤2420的“是”路径),则标示 signal_from_NCP_flag。在步骤2440中检查any_pixel_from_NCP_flag是否打开。如果any_pixel_from_NCP_flag关闭(即,来自步骤2440的“否”路径),则 palette_escape_val_present_flag被推断为打开,如步骤2450所示,并且基于 SCM3.0的语法用于索引预测,且不需要跨CU预测。如果 any_pixel_from_NCP_flag打开,则标示palette_escape_val_present_flag。如果 any_pixel_from_NCP_flag打开(即,来自步骤2440的“是”路径)且 palette_escape_val_present_flag关闭(即,来自步骤2460的“否”路径),则可以从 NCP预测所有像素,并且可以跳过palette_run_coding(),如步骤2470所示。如果any_pixel_from_NCP_flag打开(即,来自步骤2440的“是”路径),且 palette_escape_val_present_flag打开,则部分像素从NCP预测,并且可以标示 palette_run_coding(),如步骤2480所示。
[0424] 语法示例6:该示例与语法示例5基本相同,除了any_pixel_from_NCP_flag 是打开的(即,来自步骤2440的“是”路径)以及palette_escape_val_present_flag 是打开的(即,来自步骤2460的“是”路径)情况。在这种情况下,如图25的步骤 2510所示,所有像素都是跳出索引。
[0425] 语法示例7:编码器可以标示palette_share_flag、palette_prediction_run、 num_signaled_palette_entries,如图26的步骤2610所示。然后,可以根据信息导出调色板大小。
[0426] 在步骤2620中检查调色板大小以确定其是否等于0。如果调色板大小等于0 (即,来自步骤2620的“是”),则标示all_pixel_from_NCP_flag并且在步骤2640 中检查all_pixel_from_NCP_flag是否打开。如果all_pixel_from_NCP_flag打开( 即,来自步骤2640的“是”路径),则所有像素被暗示为预测自NCP,如步骤2660 所示。在这种情况下,可以标示palette_transpose_flag以暗示预测来自左NCP或上方NCP。也可以标示其他预测方向。否则,语法与步骤2650中所示的SCM3.0 相同。在第一行中,可以标示复制运行模式(即跨CU的预测)。
[0427] 语法示例8:在语法示例8中,可以标示运行编解码以指示图27中的情况。图27中的流程图类似于图26中的流程图。然而,图26中的步骤2630和步骤2650 被替换为步骤2710和步骤2720(即,标示palette_escape_val_Present_flag、 palette_transcope_flag和palette_run_coding())。
[0428] 语法示例9:如图28A的步骤2810所示,编码器可以发送palette_share_flag 、palette_reuse_flag()、num_signaled_palette_entries、 palette_escape_val_present_flag,且解码器可以基于该信息计算最大指标值。如果最大索引值等于0或1(即,来自步骤2820的“否”路径),则可以跳过 palette_run_coding()。如果最大索引值等于0(即,来自步骤2830的“否”路径 ),则如步骤2850所示,从NCP预测所有像素。如步骤2840所示,如果最大索引值大于1(即来自步骤2820的“是”路径),则可以标示palette_transpose_flag以暗示来自左NCP或上方NCP的预测。也可以标示其它预测方向。如果最大索引值等于1(即来自步骤2830的“是”路径),则CU中的所有颜色索引将被推断为0或跳出,如步骤2860所示。
[0429] 语法示例10:如图28B的步骤2812所示,编码器可以标示palette_share_flag 、palette_reuse_flag()、num_signaled_palette_entries、 palette_escape_val_present_flag,解码器可以基于该信息计算最大索引值。如果最大索引值等于0(即,来自步骤2822的“否”路径),则如步骤2832所示,从NCP 预测所有像素。如果最大索引值大于0(即,来自步骤2822的“是”路径),则可以标示palette_transpose_flag以暗示来自左NCP或上方NCP的预测,如步骤2842 所示。也可以标示其它预测方向。可以跳过Palette_run_coding()。如果最大索引值大于0,则可以标示palette_transpose_flag和palette_run_coding(),如图20所示。
[0430] 在上述语法示例中,NCP可以是最靠近的上方行或最靠近的左边列。如果 NCP行的数量大于1(例如,两个最靠近的上方行或两个最靠近的左边列),可能需要额外的信令来指示哪个NCP行被用于预测。在语法示例中“全部像素从 NCP预测”的情况下,NCP可以被限制为最近的上方行或最靠近的左边列。
[0431] 虽然根据本发明的实施例,使用特定语法元素来说明用于支持跨CU的索引预测的语法示例,但是这些特定语法元素不应被解释为对本发明的限制。在不脱离本发明的精神的情况下,本领域技术人员可以使用其他语法元素和语义来跨CU执行索引预测。
[0432] 用于启用跨CU的索引预测的语法元素
[0433] 对于跨CU的索引预测,可以在PPS(图像参数集)或SPS(序列参数集)中标示启用标志。此外,只有当SPS中的palette_mode_enabled_flag为真时,才能标示标志。否则其将被推断为假。当跨CU的索引预测的启用标志为假时,跨CU的索引预测被禁用。在另一实施例中,当跨CU的索引预测的启用标志为假时,可以将相邻的索引或值推定为预定值。例如,可以将每个颜色分量的相邻索引设置为0,并且可以将相邻的值设置为128。在本发明中,预测块中的索引或值的方法不限于相邻像素(或块)的信息。
[0434] 运行模式的上下文选择:在SCM 3.0中,用于索引映射编解码的语法元素 palette_mode被上下文编码。palette_mode有两个上下文。根据上方索引的 palette_mode选择上下文。然而,对于第一行的索引,没有上方索引。
[0435] 在这种情况下公开了处理上下文选择的几种方法:
[0436] 1.第一行的上下文使用一个固定的上下文。该上下文可以是当上方索引通过INDEX-RUN编解码所用的第一个上下文,或者是当上方索引由COPY-运行模式编解码时所用的第二个上下文。
[0437] 2.第一行的索引可以是第三个上下文。
[0438] 3.CU中的所有索引使用相同的上下文来编解码palette_mode。可以根据CU大小选择上下文,并且CU中的所有索引使用相同的上下文来编解码palette_mode。在这种情况下可以有两个上下文。如果CU大小大于固定或派生的阈值,则使用第一个上下文。否则,使用另一个上下文。在另一示例中,上下文的数量可以减少到1。在这种情况下,所有CU大小的上下文是相同的。
[0439] 修改的帧内预测方案
[0440] 在另一个实施例中,为了实现与图19和图20中公开的预测方案相同的效果,基于HEVC、HEVC范围扩展、或HEVC SCC中的常规帧内预测,语法元素 rqt_root_cbf被标示以指示从根源于(rooted from)当前CU的TU(变换单元)是否具有残差。rqt_root_cbf的信令可以与HEVC中CU间(inter CU)冗余编解码的 rqt_root_cbf信令相同。
[0441] 基于根据本发明的实施例的具有rqt_root_cbf的帧内预测,可以将 rqt_root_cbf选择性地应用于包括亮度和色度帧内预测模式的帧内预测模式的子集。rqt_root_cbf仅用于子集中的那些帧内预测模式。在一个示例中,修改方案仅适用于等于水平或垂直预测模式的亮度帧内预测模式,而色度帧内预测模式未被修改。
[0442] 在另一个实施例中,一个CU级标志用于帧内CU(intra CU)指示是否存在用于对该内部CU编解码的残差信号。类似地,该标志可以选择性地应用于帧内预测模式的子集。
[0443] 帧内块复制(IntraBC)搜索
[0444] 本发明的一个实施例改变了IntraBC的源像素。用于IntraBC预测和补偿的像素可以是取决于像素的位置的未滤波像素(即,去块(deblock)之前)或滤波像素(即,在去块和SAO(采样自适应偏移)之后)。
[0445] 例如,如图29所示,用于IntraBC预测和补偿的像素可以基于当前CTU(2910 )和左CTU(2920)中的像素的未滤波像素。其他像素仍然使用滤波像素。图 29示出了根据本发明的实施例的源像素的示例,其中点填充像素来自未滤波的像素,并且透明像素来自用于IntraBC的滤波像素。
[0446] 在另一个示例中,如图30所示,用于IntraBC预测和补偿的像素是当前CTU (3010)、左CTU(3020),以及上方CTU(3030)的底部四行和左上CTU( 3040)的底部四行中的像素的未滤波像素。其他像素使用滤波像素。在图30中,点填充像素来自未经滤波的像素,并且透明像素来自用于IntraBC的滤波像素。
[0447] 在另一示例中,如图31所示,用于IntraBC预测和补偿的像素是当前CTU、左方N个CTU中,以及上方CTU的底部四行和N个左上CTU的底部四行的像素的未滤波像素。N是正整数。其他像素使用滤波像素。在图31中,点填充像素来自未经滤波的像素,而透明像素来自IntraBC的滤波像素。
[0448] 在另一示例中,用于IntraBC预测和补偿的像素是当前CTU、上方CTU的底部四行和左CTU的右四列中的像素的未滤波像素。其他像素使用如图32所示进行滤波。在图32中,点填充像素来自未滤波的像素,并且透明像素来自IntraBC 的滤波像素。
[0449] 在另一示例中,用于IntraBC预测和补偿的像素是当前CTU、N个左CTU,上方CTU中的底部四行和N个左上方CTU的底部四行,以及第(N+1)个左方 CTU的右方四列中的像素的未滤波像素。N是正整数值。其他像素使用滤波像素。在图33中,点填充像素来自未滤波的像素,而透明像素来自IntraBC的滤波像素。
[0450] 图34示出了结合本发明的实施例的用于调色板编解码块共享变换系数缓冲器的系统的示例性流程图。系统在步骤3410中确定当前块的当前预测模式,并在步骤3420中将存储区域指定为变换系数缓冲器。在步骤3430中,如果当前预测模式是帧内预测模式或帧间预测,将由帧内预测或帧间预测产生的当前块的预测残差的变换系数相关的第一信息存储在变换系数缓冲器中。在步骤3440中,如果当前预测模式是调色板编解码模式,则将与当前块相关联的调色板数据相关的信息存储在变换系数缓冲器中。在步骤3450中,如果当前块在帧内预测模式或帧间预测模式下编解码,则基于与变换系数相关的信息,对当前块进行编码或解码,或者如果当前块在调制板编解码模式下编解码,则基于与调色板数据相关的存储在变换系数缓冲器中的信息,对当前块进行编解码或解码。
[0451] 呈现上述描述以使得本领域普通技术人员能够在特定应用及其要求的上下文中实施本发明。对所描述的实施例的各种修改对于本领域技术人员将是显而易见的,并且本文定义的一般原理可以应用于其他实施例。因此,本发明不旨在限于所示出和描述的具体实施例,而是符合与本文所公开的原理和新颖特征相一致的最广范围。在上述详细描述中,示出了各种具体细节以便提供对本发明的透彻理解。然而,本领域技术人员将理解,可以实施本发明。
[0452] 如上所述的本发明的实施例可以以各种硬件软件代码或两者的组合来实现。例如,本发明的实施例可以是集成到视频压缩芯片中的一个或多个电子电路或集成到视频压缩软件中的程序代码,以执行本文所述的处理。本发明的实施例也可以是要在数字信号处理器(DSP)上执行以执行本文所述的处理的程序代码。本发明还可以涉及由计算机处理器、数字信号处理器、微处理器、或现场可编程阵列(FPGA)执行的许多功能。可以通过执行定义本发明所体现的特定方法的机器可读软件代码或固件代码来将这些处理器配置成执行根据本发明的特定任务。软件代码或固件代码可以以不同的编程语言和不同的格式或格开发。也可以为不同的目标平台编译软件代码。然而,根据本发明软件代码的不同的代码格式、样式和语言以及配置代码的其他方式将不会脱离本发明的精神和范围。
[0453] 在不脱离本发明的精神或基本特征的情况下,本发明可以以其它具体形式实施。所描述的例子仅在所有方面被认为是说明性的而不是限制性的。因此,本发明的范围由所附权利要求而不是前面的描述来指示。属于权利要求的等同物的含义和范围内的所有变化将被包括在其范围内。
相关专利内容
标题 发布/更新时间 阅读量
缓冲器 2020-05-11 693
缓冲器 2020-05-11 527
缓冲器 2020-05-11 682
缓冲器 2020-05-12 138
缓冲器 2020-05-12 369
缓冲器 2020-05-11 157
缓冲器 2020-05-11 833
缓冲器 2020-05-13 82
缓冲器 2020-05-12 156
一种缓冲器 2020-05-11 643
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈