[0129] -否则,candIntraPredModeX被设置为等于IntraPredModeY[xNbX][yNbX]。
[0130] 3.candModeList[x],其中x=0..2,如下推导:
[0131] -如果candIntraPredModeB等于candIntraPredModeA,则以下适用:
[0132] -如果candIntraPredModeA小于2(即等于INTRA_PLANAR或INTRA_DC),则candModeList[x],其中x=0..2,如下推导:
[0133] candModeList[0]=INTRA_PLANAR (8-1)
[0134] candModeList[1]=INTRA_DC (8-2)
[0135] candModeList[2]=INTRA_ANGULAR50 (8-3)
[0136] -否则,candModeList[x],其中x=0..2,如下推导:
[0137] candModeList[0]=candIntraPredModeA (8-4)
[0138] candModeList[1]=2+((candIntraPredModeA+61)%64)(8-5)
[0139] candModeList[2]=2+((candIntraPredModeA-1)%64)(8-6)
[0140] -否则(candIntraPredModeB不等于candIntraPredModeA),以下适用:
[0141] -candModeList[0]和candModeList[1]如下推导:
[0142] candModeList[0]=candIntraPredModeA (8-7)
[0143] candModeList[1]=candIntraPredModeB (8-8)
[0144] -如果candModeList[0]和candModeList[1]都不等于INTRA_PLANAR,则candModeList[2]被设置为等于INTRA_PLANAR,
[0145] -否则,如果candModeList[0]和candModeList[1]都不等于INTRA_DC,则candModeList[2]被设置为等于INTRA_DC,
[0146] -否则,candModeList[2]被设置为等于INTRA_ANGULAR50。
[0147] 4.IntraPredModeY[xPb][yPb]通过应用以下过程而被推导:
[0148] -如果intra_luma_mpm_flag[xPb][yPb]等于1,则IntraPredModeY[xPb][yPb]被设置为等于candModeList[intra_luma_mpm_idx[xPb][yPb]]。
[0149] -否则,IntraPredModeY[xPb][yPb]通过应用以下顺序步骤而被推导:
[0150] 1.阵列candModeList[x],其中x=0..2,通过以下顺序步骤而被修改:
[0151] i.当candModeList[0]大于candModeList[1]时,两个
[0152] 值如下交换:
[0153] (candModeList[0],candModeList[1])=Swap(candModeList[0],candModeList[1])
[0154] (8-9)
[0155] ii.candModeList[0]大于candModeList[2]时,两个值
[0156] 如下交换:
[0157] (candModeList[0],candModeList[2])=Swap(candModeList[0],candModeList[2])
[0158] (8-10)
[0159] iii.candModeList[1]大于candModeList[2]时,两个值如下交换:
[0160] (candModeList[1],candModeList[2])=Swap(candModeList[1],candModeList[2])
[0161] (8-11)
[0162] 2.IntraPredModeY[xPb][yPb]通过以下顺序步骤而被推导:
[0163] i.IntraPredModeY[xPb][yPb]被设置为等于intra_luma_mpm_remainder[xPb][yPb]。
[0164] ii.对于i等于0至2(含0和2),当IntraPredModeY[xPb][yPb]大于或等于candModeList[i]时,IntraPredModeY[xPb][yPb]的值以1递增。
[0165] 变量IntraPredModeY[x][y],其中x=xPb..xPb+cbWidth–1且y=yPb..yPb+cbHeight–1,被设置为等于IntraPredModeY[xPb][yPb]。
[0166] 推导色度帧内预测模式的示例。在一些实施例中,该过程的输入是亮度位置(xPb,yPb),其指定当前色度预测块的相对于当前图片的左上角亮度样点的左上角样点。在该过程中,推导色度帧内预测模式IntraPredModeC[xPb][yPb]。
[0167] 在一些实施例中,使用如表5和表6中指定的intra_chroma_pred_mode[xPb][yPb]和IntraPredModeY[xPb][yPb]推导色度帧内预测模式IntraPredModeC[xPb][yPb]。
[0168] 表5:针对sps_cclm_enabled_flag=0的IntraPredModeC[xPb][yPb]的示例规范[0169]
[0170] 表6:针对sps_cclm_enabled_flag=1的IntraPredModeC[xPb][yPb]的示例规范[0171]
[0172] 1.7多直接模式(DM)的示例
[0173] 最近JEM采用了现有实施方式(例如,JVET-D0111)。由于I条带中的亮度和色度分量的单独块分割结构,一个色度CB可以对应于几个亮度CB。因此,为了进一步提高编码效率,提出了一种用于色度帧内编码的多直接模式(Multiple Direct Modes,MDM)方法。在MDM中,色度模式候选的列表包括以下三个部分:
[0174] (1)CCLM模式
[0175] (2)从覆盖当前色度块的并置的五个位置的亮度CB推导的帧内预测模式:要按顺序检查的五个位置被定义为:在I条带的当前色度块的对应亮度块内的中心、左上角、右上角、左下角和右下角4x4块。对于P条带和B条带,不需要检查这五个子块,因为它们将在一个CB内。图11A和图11B中示出了五个并置亮度位置的示例,它们分别由CR、TL、TR、BL和BR表示。
[0176] (3)用来统一亮度和色度模式推导过程的来自空域相邻块的色度预测模式(注明移除和添加):
[0177] ○来自当前块的左侧、上侧、左下侧、右上侧和左上侧空域相邻块的5个色度预测模式,以及如Merge模式中的5个空域块的位置(平面模式和DC模式被移除)
[0178] ○平面模式和DC模式被添加
[0179] ○推导的模式被添加,这些帧内模式通过将-1或+1添加到已经被包括到列表中的角度模式而获得
[0180] ○默认模式按以下顺序被添加:垂直(模式18)、水平(模式50)、模式2、模式34、模式66、模式10、模式26(模式66、模式10和模式26被添加)
[0181] ○添加以下规则:如果四个默认模式(平面模式、水平模式、垂直模式和DC模式)中的任何一个不被包括在列表中,则缺失的默认模式用来替换最后一个或多个候选。
[0182] 在一些实施例中,每当新的色度帧内模式被添加到候选列表时,都应用修剪过程。在该贡献中,色度帧内模式候选列表尺寸总是被设置为10。
[0183] 1.8帧内块复制的示例
[0184] 在一些实施例中,HEVC屏幕内容编码(Screen Content Coding,SCC)扩展采用新的编码工具,帧内块复制(IBC),也名为帧内块补偿或当前图片参考(Current Picture Referencing,CPR),在编码性能改进方面是非常有效的技术。IBC是从位于相同图片的已经重构的区域的参考块预测当前预测块的
块匹配技术。
[0185] 在IBC中,位移矢量(称为块矢量或BV、或运动矢量)用来信令通知从当前块的位置到参考块的位置的相对位移。此外,相同图片内的先前重构的参考块被添加到预测误差,以形成重构的当前块。在该技术中,参考样点对应于环路滤波操作之前的当前图片的重构样点。在HEVC中,环路滤波是指去方块滤波和样点自适应偏移(Sample Adaptive Offset,SAO)滤波。图12中示出了帧内块补偿的示例。
[0186] 在一些实施例中,在序列和图片级别处信令通知对IBC模式的使用。当IBC模式在序列参数集(Sequence Parameter Set,SPS)处被启用时,它可以在图片级别处被启用。当IBC模式在图片级别处被启用时,当前重构图片被视为参考图片。因此,在HEVC SCC中,除了现有的HEVC帧间模式之外,不需要块级别上的语法改变来信令通知对IBC模式的使用。
[0187] 在一些实施例中,以下是HEVC SCC中的IBC模式的特征的列表:
[0188] --在IBC模式中支持HEVC帧间模式中的所有预测单元分割模式,例如2N×2N或2N×N或N×2N或N×N和非对称运动分割(Asymmetrical Motion Partitioning,AMP)模式。
[0189] --Merge和跳过模式也可用于IBC模式。Merge候选列表构建是统一的,包含来自相邻位置的以IBC模式或以HEVC帧间模式编码的Merge候选。取决于所选择的Merge索引,Merge或跳过模式下的当前块可以合并到IBC模式编码的邻居或HEVC帧间模式编码的邻居中。
[0190] --用于IBC模式的块矢量预测和编码方案重用用于HEVC帧间模式中的运动矢量预测和编码的方案(AMVP和MVD编码)。
[0191] --残差变换、量化和系数编码与HEVC帧间模式中相同。
[0192] 除了上面列举的特征之外,一些实施例包括用于IBC模式的附加的特征(或处理),包括:
[0193] --IBC模式的运动矢量,也称为块矢量,以整数
像素精度编码,但解码后以四分之一像素精度存储在
存储器中,因为插值和去方块阶段需要四分之一像素精度。当所存储的矢量预测值用于IBC模式的运动矢量预测时,所存储的矢量预测值将被右移2。
[0194] --具有启用的IBC模式的条带将被视为P条带或B条带,即使除了当前图片本身之外没有其他图片被用作参考图片。
[0195] --对于IBC模式禁用加权预测,因为没有观察到明显的压缩益处。
[0196] 2现有实施方式中的缺点的示例
[0197] JEM或VTM中的当前帧内模式编码实施方式至少展示出以下问题:
[0198] ·对于亮度编码,仅考虑邻近的空域相邻块的预测模式。先前编码块的统计帧内预测信息的缺乏导致有限的编码性能改进。
[0199] ·在现有实施方式中,提出检查要被添加到MPM列表的更多相邻块,以便更好地编码帧内预测模式。由于邻近的空域相邻块的多次访问,复杂性也增加了。
[0200] ·对于色度编码,多DM解决方案可以带来附加的编码增益,代价是更高的复杂性,因为相邻色度模式需要被存储,而这在HEVC中是不需要的。
[0201] ·IBC可以处理远离当前块的重复图案,并且帧内编码模式可以处理减少更少的空域相关性。然而,两个中的任何一个都只能对某种情况有益。
[0202] 3基于过去信息的帧内模式编码的示例方法
[0203] 本公开技术的实施例克服了现有实施方式的缺点,从而提供了编码效率更高但计算复杂性更低的视频编码。基于过去信息的帧内模式编码,如在本文档中所描述的,可以增强现有视频编码标准和未来视频编码标准,在针对各种实施方式描述的以下示例中被阐述。下面提供的所公开技术的示例解释了一般概念,并且不意味着被解释为限制。在示例中,除非明确相反指示,否则这些示例中描述的各种特征可以被组合。
[0204] 基于历史信息的帧内模式编码的示例
[0205] 示例1。在一个示例中,可以在编码/解码过程中维护具有帧内预测模式(Intra Prediction Mode,IPM)的统计信息的表,以帮助帧内模式编码。
[0206] (a)在一个示例中,该表包括每个IPM的出现(occurrence)和/或
频率。可替代地,该表可以具有允许的IPM的部分集合的条目。
[0207] (b)表中列出的部分IPM可以作为新的MPM被添加到MPM列表。
[0208] (i)在一个示例中,来自空域相邻块的IPM首先按顺序被添加到MPM列表。之后,来自该表的一些IPM可以在修剪之后按顺序被添加。如果列表未满,则还可以添加推导的IPM。
[0209] (ii)在一个示例中,MPM列表尺寸可以扩展。在这种情况下,来自空域相邻块和推导的模式的IPM可以首先按顺序被添加到MPM列表。之后,来自该表的一些IPM可以在修剪之后按顺序被添加。
[0210] (c)被包括在MPM列表中的IPM可以基于该表而重新排序。
[0211] (i)在一个示例中,首先基于相邻块和推导的模式来构建MPM列表(例如,如章节1.2中所描述的)。之后,基于与记录在表中的IPM相关联的出现或频率的降序,对MPM列表进行重新排序。这样,MPM列表中具有最高出现或频率的IPM将被调整为处于MPM列表的第一位置。
[0212] 示例2。不同的表可以用于不同的颜色分量。
[0213] (a)例如,一个表用于亮度帧内模式编码,并且另一个表用于色度帧内模式编码。
[0214] (b)可替代地,仅一个表用于亮度帧内模式编码。
[0215] (c)可替代地,使用多个表还是一个表取决于单独的编码树是否分
[0216] 别用于亮度和色度。
[0217] 示例3。表中的一个模式M的频率或出现在用模式M对块进行解码之后被累加K(例如,K=1)
[0218] (a)在一个示例中,模式的出现具有最大值(例如,255)。
[0219] (b)如果模式的至少一个出现达到最大值,则应用规则化(regulation)(或归一化)过程。
[0220] (i)在一个示例中,表中的所有出现数被右移一个数,诸如2。
[0221] (ii)在另一示例中,表中的所有出现数减去一个数,诸如表中的最小出现数。
[0222] 示例4。代替利用邻近的相邻块的IPM来对块进行编码,可以利用非邻近的相邻块的帧内预测模式。
[0223] (a)非邻近的相邻块的IPM可以被添加到MPM列表。可替代地,可以应用IPM的修剪。如果非邻近的相邻块的IPM不同于MPM列表中的任何IPM,则它可以被添加到MPM列表。
[0224] (b)在一个示例中,MPM列表尺寸可以被扩展。在这种情况下,来自邻近的相邻块和推导的模式的IPM可以首先按顺序被添加到MPM列表。之后,来自非邻近的相邻块的IPM可以在修剪之后按顺序被添加。
[0225] (c)非邻近的相邻块的IPM可以用来对非MPM IPM进行重新排序。在一个示例中,对于与非邻近的相邻块相关联的那些IPM,可以分配更高的优先级,例如,可以使用更少的比特来对它们进行编码。
[0226] 示例5。与当前块相关联的IPM的编码可以取决于该表、来自邻近的空域相邻块的IPM、来自非邻近的空域相邻块的IPM。
[0227] 对邻近的相邻块的选择的示例
[0228] 示例6。代替使用相对于当前块的左上角位置的上侧和左侧相邻块来用于帧内模式编码(诸如使用上侧和左侧相邻块的帧内预测模式来构建MPM列表),可以利用不同的位置。
[0229] (a)在一个示例中,相对于当前块的左上角位置的上侧相邻块由相对于当前块的第一行的中心位置的上侧相邻块替换,如图13A至图13C所示。
[0230] (b)在一个示例中,相对于当前块的左上角位置的左侧相邻块由相对于当前块的第一列的中心位置的左侧相邻块替换,如图13D至图13F所示。
[0231] 示例7。代替利用所有种类的块的固定的M个相对相邻块,对M个相邻块的选择可以取决于块形状和/或块尺寸。
[0232] (a)在一个示例中,如果块是方形块,则相对于用于帧内模式编码的当前块的左上角位置的上侧和左侧相邻块的帧内预测模式可以用于编码当前块的帧内预测模式。
[0233] (b)在一个示例中,如果块是非方形块,则相对于用于帧内模式编码的当前块的第一行和/或第一列的中心位置的上侧和/或左侧相邻块的帧内预测模式可以用于编码当前块的帧内预测模式。
[0234] 一个帧内编码块的多个预测块的示例
[0235] 示例8。来自包含当前块的相同片/条带/图片的重构样点可以用来生成多个预测块。
[0236] (a)在一个示例中,可以首先生成两个预测块,并且从这两个预测块生成最终预测块。其中它们中的一个通过帧内预测模式而生成,并且另一个通过指向包含当前块的相同片/条带/图片(例如,帧内块复制;并且运动矢量也称为块矢量)的运动矢量而生成。
[0237] (b)在一个示例中,线性函数被应用于两个预测块,以推导最终帧内预测块。
[0238] (i)可替代地,仅最终预测块的一部分从多个(例如,两个)预测块生成,并且剩余部分从多个预测块中的一个直接复制。
[0239] (ii)在一个示例中,两个预测块的平均(即,两个预测块的权重相等)被用作最终帧内预测块。
[0240] (iii)在一个示例中,可以对相对于一个块的不同的位置应用不同的权重,和/或可以对不同的帧内预测模式应用不同的权重。
[0241] (iv)在一个示例中,可以在SPS/PPS/VPS/图片或序列或条带报头/片/CTU组/CTU/CU/PU/TU中信令通知权重。
[0242] (v)可以预先定义应用于两个预测块的权重。
[0243] 示例9。上述方法可以在某些条件下应用。
[0244] (a)它可以应用于某些颜色分量,例如,仅亮度分量。
[0245] (b)它可以应用于某个块尺寸/块形状等。
[0246] 示例10。当IBC被视为帧间模式(即,具有用来推导预测块的至少一个运动矢量)时,可以使用基于历史的运动矢量预测(History-based Motion Vector Prediction,HMVP)方法,该方法利用用于运动信息预测的先前编码的运动信息。HMVP方法允许基于历史数据(例如,已经被处理的块)执行编码/解码过程。在编码/解码过程期间,具有来自先前编码块的运动信息的一个或多个表被维护。每个表可以与计数器相关联,以
跟踪存储在表中的运动候选的数量。在一个块的编码/解码期间,可以取决于块的编码特性(例如,块是否是IBC编码)(例如,通过添加到运动候选列表)使用表中的相关联的运动信息。在对块进行编码/解码之后,可以基于块的编码特性来更新表。也就是说,表的更新基于编码/解码顺序。在一些实施例中,在处理新的条带、新的最大编码单元(Largest Coding Unit,LCU)行或新的片之前,可以重置表(例如,移除所存储的候选并将相关联的计数器设置为0)。
[0247] (a)在一个示例中,可以用来自IBC编码块的运动信息更新查找表。
[0248] (b)可替代地,不允许用来自IBC编码块的运动信息更新查找表。
[0249] (c)在一个示例中,对于IBC模式,不允许来自先前编码块的运动信息预测IBC编码块的运动信息。
[0250] (d)在一个示例中,仅来自先前IBC编码块的运动信息可以用来预测当前IBC编码块的运动信息。一个查找表用来仅包括来自IBC编码块的运动信息,并且这样的查找表仅用于IBC编码块。
[0251] (e)可替代地,对于IBC模式,允许来自先前编码块的运动信息预测IBC编码块的运动信息。
[0252] (i)在一个示例中,查找表可以包括来自IBC编码块和其他种类的帧间编码块的运动信息。例如,如果查找表中的运动候选是从IBC编码块推导的,则它可以用来对当前IBC编码块进行编码/解码。
[0253] (ii)可替代地,可能需要多个查找表,并且它们中的至少一个仅包括来自IBC编码块的运动信息,并且它们中的一个仅包括来自其他种类的帧间编码块的运动信息。例如,第一查找表可以包括IBC编码块的运动信息。不同的第二查找表可以包括不是IBC编码的块(例如,该块可以用帧间模式编码)的运动信息。在相应的转换完成之后,可以更新第一查找更新表和第二查找更新表。在一些实施例中,可以使用更新后的第一查找表来执行IBC编码块的第一后续转换,并且可以使用更新后的第二查找表来执行帧间编码块的第二后续转换。
[0254] 在一些实施例中,在通过添加从编码块获得的运动候选来如示例10所述更新查找表之前,可以应用修剪。
[0255] (a)在一个示例中,要添加的新运动候选需要与所选择的表中的所有现有运动候选进行修剪。也就是说,可以将新运动候选与所选择的表中的所有现有运动候选进行比较,以确保没有重复的候选。
[0256] (b)可替代地,新运动候选可以仅与某个数量的现有运动候选进行修剪。例如,在选择性地将它添加作为LUT的最后条目之前,可以将其与查找表中的最后m个运动候选(m是整数)进行比较。
[0257] (c)在一些实施例中,所选择的表是用来构建编码块的从其获得运动候选的运动候选列表的表。在一些实施例中,运动候选可以用来更新可用查找表的部分或全部。
[0258] 在一些实施例中,当用Merge或AMVP模式对块进行编码时,可以使用如示例10所述的查找表。也就是说,可以使用IBC Merge模式或IBC AMVP模式对当前块进行编码。
[0259] 在一些实施例中,除了邻近候选之外,非邻近候选(例如,Merge候选或AMVP候选)可以在查找表中被组合。
[0260] (a)在一个示例中,m个候选(非邻近和/或邻近候选)和来自查找表的n个运动候选可以被添加(例如,当列表未满时)。m和n都是正整数(>0)。
[0261] (b)在一个示例中,m个候选(非邻近和/或邻近候选)可以被检查和/或来自查找表的n个运动候选可以被检查。当列表未满时,经检查的候选可以被添加。
[0262] (c)在一个示例中,可以以交错方式添加邻近或非邻近候选和来自查找表的运动候选。
[0263] (i)检查邻近或非邻近候选的顺序保持不变。检查一个候选,随后是来自查找表的运动候选。
[0264] (ii)检查非邻近块的顺序保持不变。然而,如果一个非邻近块位于某个范围之外(例如,在当前LCU行之外),则它将由查找表中的运动候选替换。
[0265] (iii)在一个示例中,检查非邻近块的顺序保持不变。然而,如果一个邻近或非邻近块是用帧内模式或帧内块复
制模式编码的,则它将由查找表中的运动候选替换(例如,在确定查找表中的运动候选不同于邻近或非邻近块时)。
[0266] (d)在一个示例中,与来自查找表的运动候选相比,非邻近候选具有更高的优先级。
[0267] (i)在这种情况下,首先检查所有非邻近块。如果候选的总数仍然小于最大允许数量,则进一步检查来自查找表的运动候选。
[0268] (ii)可替代地,与非邻近运动候选相比,来自查找表的运动候选具有更高的优先级。首先检查来自查找表的运动候选。如果候选的总数仍然小于最大允许数量,则检查非邻近块以将非邻近候选添加到Merge候选列表。
[0269] (iii)类似地,当在高级运动矢量预测(Advanced Motion Vector Prediction,AMVP)编码过程中允许非邻近方法和基于查找表的方法两者时,可以以与上述示例中描述的方式类似方式来处理优先级。
[0270] 在一些实施例中,类似于将具有运动候选的查找表用于运动矢量预测,提出可以构建、和/或更新一个或多个查找表以存储来自先前编码块的帧内预测模式,并且查找表可以用于对帧内编码块进行编码/解码。
[0271] (a)每个LUT的条目的数量相同,例如,等于允许的帧内预测的总数。
[0272] (b)还可以为每个帧内预测模式分配变量(即,cnt),以记录帧内预测模式已经在先前编码块中被使用了多少次。
[0273] (c)当用所选择的帧内预测模式更新查找表时,可以修改相关联的cnt,诸如增加1。
[0274] 在一些实施例中,非邻近块的帧内预测模式可以用作用于对帧内编码块进行编码的帧内预测模式预测值。
[0275] 在一些实施例中,可以联合利用基于查找表的方法和基于非邻近的方法。在一个示例中,可以在MPM列表构建过程中使用查找表或非邻近块中的帧内预测模式。可替代地,可以使用查找表或非邻近块中的帧内预测模式来对非MPM帧内预测模式进行重新排序。
[0276] 在一些实施例中,IBC编码块的运动候选列表可以如下构建:
[0277] (a)如果存在与当前块的两个空域相邻块相关联的唯一块矢量(也称为如上所讨论的位移矢量或运动矢量),则将它们添加到列表。
[0278] (b)检查表中的最后的可用运动候选(即,最新候选)。如果列表中没有重复的候选,那么最后的可用运动候选被添加到列表。
[0279] (c)如果列表未满,则添加查找表中的剩余运动候选。
[0280] 上述示例可以被并入以下描述的例如可以在视频编码器和/或解码器处实施的方法1400、1500和1600的方法的上下文中。
[0281] 图14示出了用于跨分量预测的示例方法的流程图。方法1400包括,在步骤1410处,对于可视媒体数据的当前块的比特流表示,基于过去帧内编码信息的第一集合从帧内预测模式集合中选择第一帧内预测模式。在一些实施例中,过去帧内编码信息的第一集合包括历史帧内编码信息。
[0282] 在一些实施例中,并且在示例1的上下文中,过去帧内编码信息的第一集合包括统计帧内编码信息。在一个示例中,统计帧内编码信息包括持续时间内帧内预测模式集合中的每一个帧内预测模式的出现次数,并且方法1400进一步包括以下步骤:基于当前块的相邻块来构建最可能模式(MPM)列表,以及基于出现次数对MPM列表进行重新排序。
[0283] 方法1400包括,在步骤1420处,基于第一帧内预测模式来处理比特流表示以生成当前块。
[0284] 在一些实施例中,并且在示例2的上下文中,当前块包括亮度分量和色度分量,过去帧内编码信息的第一集合用于对亮度分量进行帧内模式编码,并且过去帧内编码信息的第二集合用于对色度分量进行帧内模式编码。在示例中,亮度分量基于第一编码树,色度分量基于不同的第二编码树。
[0285] 在一些实施例中,并且在示例3的上下文中,对于帧内预测模式集合中对应于第一帧内预测模式的帧内预测模式,出现次数递增。然后,方法1400进一步包括以下步骤:确定出现次数中的至少一个等于最大出现次数。在一个示例中,该方法进一步包括将出现次数中的每一个右移一个预定义的数。在另一示例中,该方法进一步包括从出现次数中的每一个减去最小出现次数。
[0286] 在一些实施例中,并且在示例4的上下文中,方法1400进一步包括以下步骤:将帧内预测模式集合中的第一子集添加到最可能模式(MPM)列表。在其他实施例中,方法1400可以进一步包括增加MPM列表的尺寸,以及将帧内预测模式集合中的第一子集添加到MPM列表,其中帧内预测模式的第一子集对应于作为当前块的空域邻居的块。在这些情况下,方法1400可以进一步包括修剪MPM列表,以及将帧内预测模式集合的第二子集添加到MPM列表,其中第二子集中的帧内预测模式的排序在MPM列表中被维持。
[0287] 图15示出了用于跨分量预测的另一示例方法的流程图。方法1500包括,在步骤1510处,对于可视媒体数据的当前块的比特流表示,从与当前块邻近或不邻近的空域相邻块中的至少一个选择帧内预测模式。
[0288] 在一些实施例中,并且在示例6的上下文中,邻近的空域相邻块中的至少一个是相对于当前块的左上角位置的上侧相邻块、或相对于当前块的第一行的中心位置的上侧相邻块、或相对于当前块的右上角位置的上侧相邻块、或相对于当前块的左上角位置的左侧相邻块、或相对于当前块的第一列的中心位置的左侧相邻块、或相对于当前块的左下角位置的左侧相邻块。
[0289] 方法1500包括,在步骤1520处,基于帧内预测模式来处理比特流表示以生成当前块。
[0290] 图16示出了用于跨分量预测的又一示例方法的流程图。方法1600包括,在步骤1610处,对于可视媒体数据的当前块的比特流表示,生成基于来自包括当前块的图像段的重构样点的第一预测块和第二预测块。
[0291] 方法1600包括,在步骤1620处,基于第一预测块和第二预测块的线性函数来生成最终预测块的至少一部分。在一些实施例中,最终预测块是第一预测块和第二预测块的平均。
[0292] 在一些实施例中,并且在示例8的上下文中,最终预测块的一部分基于第一预测块和第二预测块的线性函数,并且剩余部分直接从第一预测块或第二预测块复制。在一些实施例中,线性函数的权重是在序列参数集(SPS)、图片参数集(PPS)、视频参数集(VPS)、条带报头、片报头、编码树单元(Coding Tree Unit,CTU)组、编码单元(CU)、预测单元(Prediction Unit,PU)或变换单元(Transform Unit,TU)中信令通知的。
[0293] 方法1600包括,在步骤1630处,基于最终预测块来处理比特流表示以生成当前块。
[0294] 5所公开技术的示例实施方式
[0295] 图17是视频处理装置1700的框图。装置1700可以用来实施本文描述的方法中的一种或多种。装置1700可以体现在智能电话、
平板电脑、计算机、
物联网(Internet of Things,IoT)接收器等中。装置1700可以包括一个或多个处理器1702、一个或多个存储器1704、以及视频处理硬件1706。(多个)处理器1702可以被配置为实施本文档中描述的一种或多种方法(包括但不限于方法1400、1500和1600)。存储器(多个存储器)1704可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件1706可以用来在硬件电路中实施本文档中描述的一些技术。
[0296] 在一些实施例中,视频编码方法可以使用如参考图17所描述的在硬件平台上实施的装置而实施。
[0297] 图18是示出可以在其中实施本文公开的各种技术的示例视频处理系统1800的框图。各种实施方式可以包括系统1800的一些或所有组件。系统1800可以包括用于接收视频内容的输入1802。视频内容可以以原始或未压缩格式(例如,8或10比特多分量像素值)接收,或者可以是压缩或编码格式。输入1802可以表示网络
接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(Passive Optical Network,PON)等的有线接口和诸如Wi-Fi或蜂窝接口的无线接口。
[0298] 系统1800可以包括可以实施本文档中描述的各种编码或编码方法的编码组件1804。编码组件1804可以将来自输入1802的视频的平均比特率减小到编码组件1804的输出,以产生视频的编码表示。编码技术因此有时被称为视频压缩或视频转码技术。编码组件
1804的输出可以被存储,或者经由如由组件1806表示的通信连接而发送。在输入1802处接收的视频的存储或通信传送的比特流(或编码)表示可以由组件1808用于生成像素值或被传送到显示接口1810的可显示视频。从比特流表示生成用户可视视频的过程有时被称为视频解压缩。此外,虽然某些视频处理操作被称为“编码”操作或工具,但是将理解,编码工具或操作在编码器处使用,并且反转编码结果的对应解码工具或操作将由解码器执行。
[0299] 外围总线接口或显示接口的示例可以包括通用
串行总线(Universal Serial Bus,USB)、或
高清晰度多媒体接口(High Definition Multimedia Interface,HDMI)、或显示端口(Displayport)等。存储接口的示例包括SATA(Serial Advanced Technology Attachment,串行高级技术附件)、PCI、IDE接口等。本文档中描述的技术可以体现在诸如
移动电话、膝上型电脑、智能电话、或能够执行数字
数据处理和/或视频显示的其他设备的各种电子设备中。
[0300] 图19示出了根据所公开技术的用于视频编码的示例方法1900的流程图。方法1900包括,在操作1910处,对于可视媒体数据的当前块和当前块的比特流表示之间的转换,至少基于包括帧内预测模式集合的统计信息的历史帧内编码信息的第一集合来选择第一帧内预测模式。方法1900还包括,在操作1920处,基于第一帧内预测模式来执行该转换。
[0301] 在一些实施例中,该转换包括对当前块进行编码以生成比特流表示。在一些实施例中,该转换包括对比特流表示进行解码以生成当前块。在一些实施例中,统计帧内编码信息包括持续时间内帧内预测模式集合中的每一个帧内预测模式的出现次数。在一些实施例中,统计帧内编码信息包括持续时间内帧内预测模式集合中的一部分帧内预测模式的出现次数。
[0302] 在一些实施例中,该方法进一步包括,在执行该转换之后,更新历史帧内编码信息的集合。在一些实施例中,更新包括在历史帧内编码信息的第一集合中将第一帧内预测模式的出现次数累加k,k是正整数。在一些实施例中,当前块的后续块基于更新后的历史帧内编码信息而处理。
[0303] 在一些实施例中,历史帧内编码信息的第一集合中的每个帧内预测模式与出现次数的限值(limit)相关联。在一些实施例中,该方法包括,在出现次数达到限值之后,基于预定义规则来减少出现次数。在一些实施例中,预定义规则包括将出现次数除以第一预定义值,或者从出现次数减去第二预定义值。
[0304] 在一些实施例中,该方法包括至少基于帧内预测模式集合来构建最可能模式(MPM)列表。在一些实施例中,该方法包括将帧内预测模式集合的子集添加到MPM列表。在一些实施例中,该方法包括:将与当前块的空域邻居相关联的帧内预测模式添加到MPM列表;将帧内预测模式集合的子集添加到MPM列表;以及修剪MPM列表。在一些实施例中,该方法包括将推导的帧内预测模式添加到MPM列表。在一些实施例中,该方法包括增加MPM列表的尺寸。在一些实施例中,该方法包括基于历史帧内编码信息的集合对MPM列表进行重新排序。
在一些实施例中,MPM列表是基于帧内预测模式集合的统计信息的降序而重新排序的。
[0305] 在一些实施例中,当前块包括亮度分量和色度分量。历史帧内编码信息的第一集合用于对亮度分量进行帧内模式编码。在一些实施例中,历史帧内编码信息的第二集合用于对色度分量进行帧内模式编码。在一些实施例中,亮度分量基于第一编码树,色度分量基于不同于第一编码树的第二编码树。
[0306] 在一些实施例中,选择第一帧内预测模式进一步基于当前块的空域邻居的帧内预测模式或当前块的非邻近邻居的帧内预测模式。在一些实施例中,历史帧内编码信息被存储在表中。
[0307] 图20示出了根据所公开技术的用于视频处理的另一示例方法2000的流程图。方法2000包括,在操作2010处,对于可视媒体数据的当前块和当前块的比特流表示之间的转换,至少基于与当前块的非邻近邻居相关联的帧内预测模式来选择第一帧内预测模式。方法
2000还包括,在操作2020处,基于第一帧内预测模式来执行该转换。
[0308] 在一些实施例中,该转换包括对当前块进行编码以生成比特流表示。在一些实施例中,该转换包括对比特流表示进行解码以生成当前块。
[0309] 在一些实施例中,该方法进一步包括,对于当前块和当前块的比特流表示之间的转换,基于与当前块的非邻近邻居相关联的帧内预测模式来构建最可能模式(MPM)列表。该转换进一步基于MPM列表而执行。在一些实施例中,构建MPM列表包括将与当前块的空域邻居相关联的帧内预测模式添加到MPM列表并修剪MPM列表。在一些实施例中,构建MPM列表包括将推导的帧内预测模式添加到MPM列表。在一些实施例中,该方法包括增加MPM列表的尺寸。
[0310] 在一些实施例中,该方法包括根据与当前块的非邻近邻居相关联的帧内预测模式对不在MPM列表中的帧内预测模式进行重新排序。在一些实施例中,对于重新排序,与当前块的非邻近邻居相关联的帧内预测模式与更高优先级相关联。
[0311] 图21示出了根据所公开技术的用于视频处理的示例方法2100的流程图。方法2100包括,在操作2110处,对于可视媒体数据的当前块和当前块的比特流表示之间的转换,基于当前块的空域相邻块中的至少一个来选择帧内预测模式。空域相邻块中的至少一个与位于当前块的第一行的左侧的第一块和位于当前块的第一列的上侧的第二块不同。方法2100还包括,在操作2110处,基于帧内预测模式来执行该转换。
[0312] 在一些实施例中,该转换包括对当前块进行编码以生成比特流表示。在一些实施例中,该转换包括对比特流表示进行解码以生成当前块。
[0313] 在一些实施例中,空域相邻块中的至少一个包括与当前块邻近的块。在一些实施例中,空域相邻块中的至少一个包括与当前块不邻近的块。在一些实施例中,邻近的空域相邻块中的至少一个包括与当前块的左上角位置邻近的块。在一些实施例中,邻近的空域相邻块中的至少一个包括与当前块的第一行的中心位置邻近的块。在一些实施例中,邻近的空域相邻块中的至少一个包括与当前块的第一列的中心位置邻近的块。
[0314] 在一些实施例中,基于当前块的一个或多个维度来选择空域相邻块中的至少一个。在一些实施例中,当前块具有方形形状,并且邻近的空域相邻块中的至少一个包括与当前块的左上角位置邻近的块。所选择的帧内预测模式可以被添加到当前块的最可能模式列表。
[0315] 在一些实施例中,当前块具有非方形形状,并且空域相邻块中的至少一个包括与当前块的第一行的中心位置邻近的块或与当前块的第一列的中心位置邻近的块。
[0316] 图22示出了根据所公开技术的用于视频处理的示例方法2200的流程图。方法2200包括,在操作2210处,对于可视媒体数据的当前块和当前块的比特流表示之间的转换,生成最终预测块。方法2200包括,在操作2220处,基于最终预测块来执行该转换。最终预测块的至少一部分基于第一预测块和第二预测块的组合而生成,其中该第一预测块和第二预测块基于来自包括当前块的图像段的重构样点。在一些实施例中,该转换包括对当前块进行编码以生成比特流表示。在一些实施例中,该转换包括对比特流表示进行解码以生成当前块。
[0317] 在一些实施例中,第一预测块根据帧内预测模式而生成。在一些实施例中,第二预测块基于指向图像段的运动矢量而生成。在一些实施例中,第二预测块基于其中运动矢量指向的重构样点被复制的帧内块复制技术而生成。在一些实施例中,第二预测块基于其中在应用环路滤波操作之前,
运动补偿被应用于运动矢量指向的重构样点的帧内块复制技术而生成。
[0318] 在一些实施例中,在应用环路滤波操作之前,重构样点被生成。在一些实施例中,最终预测块的剩余部分直接从第一预测块或第二预测块复制。在一些实施例中,第一预测块和第二预测块的组合包括第一预测块和第二预测块的线性函数。在一些实施例中,线性函数包括第一预测块和第二预测块的平均。在一些实施例中,线性函数包括第一预测块和第二预测块的加权线性函数。在一些实施例中,对于相对于第一预测块或第二预测块的不同的位置,应用不同的权重。在一些实施例中,对于不同的帧内预测模式,应用不同的权重。在一些实施例中,加权线性函数的权重是在序列参数集(SPS)、图片参数集(PPS)、视频参数集(VPS)、条带报头、片报头、编码树单元(CTU)组、编码单元(CU)、预测单元(PU)或变换单元(TU)中信令通知的。在一些实施例中,加权线性函数的权重是预定义的。
[0319] 在一些实施例中,图像段包括图片、条带或片。在一些实施例中,第一预测块和第二预测块是针对当前块的所选择的颜色分量而生成的。在一些实施例中,所选择的颜色分量包括亮度颜色分量。在一些实施例中,在确定当前块的尺寸或形状满足预定义准则时,生成第一预测块和第二预测块。
[0320] 图23示出了根据所公开技术的用于视频处理的示例方法2300的流程图。方法2300包括,在操作2310处,在可视媒体数据的当前块和当前块的比特流表示之间的转换期间,维护运动候选的第一表。方法2300包括,在操作2320处,至少基于运动候选的第一表来确定使用帧内块复制(IBC)模式编码的当前块的运动信息,在该IBC模式中,至少一个运动矢量指向包括当前块的图像段。方法2300还包括,在操作2330处,基于运动信息来执行该转换。在一些实施例中,该转换包括对当前块进行编码以生成比特流表示。在一些实施例中,该转换包括对比特流表示进行解码以生成当前块。
[0321] 在一些实施例中,该方法包括基于规则使用用于该转换的运动信息来选择性地更新运动候选的第一表。在一些实施例中,该规则指定将运动信息添加到运动候选的第一表。在一些实施例中,该规则指定从运动候选的第一表排除运动信息。
[0322] 在一些实施例中,该方法包括,在转换之后,基于当前块的运动信息来更新运动候选的第一表。在一些实施例中,该方法包括使用更新后的运动候选的第一表来执行可视媒体数据的第二块和第二块的比特流表示之间的第二转换。第二块可以是使用帧内块复制模式而编码的。在一些实施例中,运动候选的第一表仅包括来自使用帧内块复制模式而编码的块的运动信息。在一些实施例中,运动候选的第一表仅用于处理使用帧内块复制模式而编码的块。在一些实施例中,运动候选的第一表包括来自使用帧内块复制模式而编码的块的运动信息,并且排除来自使用其他技术而编码的块的运动信息。在一些实施例中,运动候选的第一表包括来自使用帧内块复制模式而编码的块的运动信息和来自使用其他技术而编码的块的运动信息。在一些实施例中,第二转换是使用与更新后的运动候选的第一表中的IBC编码块相关联的运动候选而执行的。
[0323] 在一些实施例中,该方法包括:对于可视媒体数据的第三块和第三块的比特流表示之间的第三转换,维护运动候选的第二表;基于运动候选的第二表来执行第三块和第三块的比特流表示之间的第三转换。在一些实施例中,第三转换在不使用更新后的运动候选的第一表的情况下而执行。在一些实施例中,第二表包括来自使用不同于IBC模式的其他技术而编码的块的运动信息。在一些实施例中,第三块是使用不同于IBC模式的技术而编码的。在一些实施例中,该技术包括帧间模式。在一些实施例中,该方法包括使用用于第三转换的运动信息来更新运动候选的第二表。在一些实施例中,该方法包括基于更新后的第一表来执行IBC编码块之间的第四转换,以及基于更新后的第二表来执行帧间编码块之间的第五转换。
[0324] 在一些实施例中,该方法包括将与当前块相关联的运动候选与第一表中的多个条目进行比较。第一表基于该比较而更新。在一些实施例中,多个条目对应于第一表中的所有条目。在一些实施例中,条目的数量是m,m是整数,并且m个条目是第一表中的最后m个条目。在一些实施例中,更新第一表包括将运动候选添加到第一表。在一些实施例中,第一表不包括重复的条目。
[0325] 在一些实施例中,该方法包括确定当前块是使用IBC Merge模式或IBC高级运动矢量预测(AMVP)模式进一步编码的。在一些实施例中,该方法包括通过组合运动候选的第一表和当前块的邻近或非邻近候选集合来确定当前块的运动候选的列表,并且基于该列表来执行该转换。在一些实施例中,该组合包括检查来自邻近或非邻近候选集合的m个候选,以及检查来自运动候选的第一表的n个运动候选,其中m和n是正整数。在一些实施例中,该方法包括,在确定运动候选的列表未满时,将来自邻近或非邻近候选集合的m个候选中的至少一个添加到运动候选的列表。在一些实施例中,该方法包括,在确定运动候选的列表未满时,将来自运动候选的第一表的n个运动候选中的至少一个添加到运动候选的列表。
[0326] 在一些实施例中,该组合包括以交错方式检查来自邻近或非邻近候选集合和运动候选的第一表的候选。在一些实施例中,该方法包括,在检查来自第一表的运动候选之前,检查来自邻近或非邻近候选集合的候选。在一些实施例中,该检查包括检查来自邻近或非邻近候选集合的候选,并且基于与邻近或非邻近候选相关联的邻近或非邻近块的编码特性,用来自运动候选的第一表的运动候选替换该候选。在一些实施例中,邻近或非邻近块的编码特性指示邻近或非邻近块位于预定义范围之外。在一些实施例中,邻近或非邻近块的编码特性指示邻近或非邻近块是帧内编码的。在一些实施例中,添加运动候选进一步包括,在确定来自运动候选的第一表的运动候选与来自邻近或非邻近候选集合的至少一个候选不同时,将运动候选添加到列表。在一些实施例中,邻近或非邻近候选集合具有比运动候选的第一表更高的优先级。
[0327] 在一些实施例中,运动候选的列表包括用于IBC Merge编码块的多个Merge候选。在一些实施例中,运动候选的列表包括用于IBC AMVP编码块的多个AMVP候选。在一些实施例中,运动候选的列表包括用于帧内编码块的帧内预测模式。在一些实施例中,第一表的尺寸是预先定义的或在比特流表示中信令通知的。在一些实施例中,第一表与指示第一表中的可用运动候选的数量的计数器相关联。
[0328] 在一些实施例中,该方法包括,在处理新的条带、新的LCU行或新的片之前,重置第一表。在一些实施例中,在处理新的条带、新的LCU行或新的片之前,计数器被设置为零。
[0329] 根据前述内容,可以理解本文已经出于说明的目的描述了本公开技术的具体实施方案,但是在不脱离本发明范围的情况下可以进行各种修改。因此,本公开技术不受除了所附权利要求之外的限制。
[0330] 本专利文档中描述的主题和功能操作的实施方式可以在各种系统、数字
电子电路或计算机软件、
固件或硬件(包括本说明书中公开的结构及其结构等同物、或者它们中的一个或多个的组合)中实施。本说明书中描述的主题的实施方式可以实施为一个或多个
计算机程序产品,即编码在有形和非暂时性计算机可读介质上的计算机程序指令的一个或多个模块,该计算机程序指令用于由数据处理装置运行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储
基板、存储器设备、影响机器可读传播信号的物质的组合、或它们中的一个或多个的组合。术语“数据处理单元”或“数据处理装置”包含用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机、或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、
数据库管理系统、
操作系统、或它们中的一个或多个的组合的代码。
[0331] 计算机程序(也已知为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言(包括编译或解释语言)编写,并且其可以以任何形式部署,包括作为独立程序或作为适合在计算环境中使用的模块、组件、子例程或其他单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在
标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署以在一个计算机上或在位于一个
站点上或跨多个站点分布并通过通信网络互连的多个计算机上运行。
[0332] 本说明书中描述的过程和逻辑流程可以由运行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由
专用逻辑电路执行,并且装置也可以实施为专用
逻辑电路,例如,FPGA(Field Programmable Gate Array,现场可编程
门阵列)或ASIC(Application Specific Integrated Circuit,
专用集成电路)。
[0333] 适合于运行计算机程序的处理器包括例如通用和专用
微处理器、以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从
只读存储器或
随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个
大容量存储设备(例如,磁盘、磁光盘或光盘),或可操作地耦合以从该一个或多个大容量存储设备接收数据或向该一个或多个大容量存储设备传递数据、或者从其接收数据并向其传递数据。然而,计算机不需要这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的
非易失性存储器、介质和存储器设备,包括例如
半导体存储器设备,例如EPROM、EEPROM和闪存设备。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
[0334] 说明书与附图一起旨在被视为是示例性的,其中示例性意味着示例。如本文所使用的,除非上下文另有清楚说明,否则单数形式“一”和“该”旨在也包括复数形式。另外,除非上下文另有清楚说明,否则使用“或”旨在包括“和/或”。
[0335] 虽然本专利文档包含许多细节,但这些细节不应被解释为对任何发明或可能要求保护的范围的限制,而是作为特定于特定发明的特定实施例的特征的描述。在单独的实施例的上下文中在本专利文档中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以分别在多个实施例中或以任何合适的子组合实施。此外,尽管特征可以在上面描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合排除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变化。
[0336] 类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为要求以所示的特定顺序或以先后顺序执行这样的操作或者执行所有示出的操作以实现期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离。
[0337] 仅描述了一些实施方式和示例,并且可以基于本专利文档中描述和示出的内容来进行其他实施方式、增强和变化。