CN117981301A - 帧内预测的方法、编码器、解码器和编解码系统 - Google Patents

帧内预测的方法、编码器、解码器和编解码系统 Download PDF

Info

Publication number
CN117981301A
CN117981301A CN202180102584.1A CN202180102584A CN117981301A CN 117981301 A CN117981301 A CN 117981301A CN 202180102584 A CN202180102584 A CN 202180102584A CN 117981301 A CN117981301 A CN 117981301A
Authority
CN
China
Prior art keywords
sub
current block
prediction
template
mode
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202180102584.1A
Other languages
English (en)
Inventor
王凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Publication of CN117981301A publication Critical patent/CN117981301A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请实施例提供了一种帧内预测的方法、编码器、解码器和编解码系统。在该方法中,通过将当前块的模板划分为子模板,并根据候选模式在当前块的子模板上代价,确定预测模式,然后可以根据该预测模式,确定当前帧的帧内预测值。由于预测模式是根据子模板确定的,因此该预测模式在该子模板上的代价小,即该预测模式可以在局部表现好,从而有助于更准确的进行帧内预测,进而提高压缩效率。本申请实施例的方案能够适用于对纹理复杂的场景,例如有些扭曲的线条、表面不均匀的场景等。

Description

帧内预测的方法、编码器、解码器和编解码系统 技术领域
本申请实施例涉及视频编解码领域,并且更具体地,涉及帧内预测的方法、编码器、解码器和编解码系统。
背景技术
随着人们对视频显示质量要求的提高,高清和超高清视频等新视频应用形式应运而生。H.265/高效率视频编码(High Efficiency Video Coding,HEVC)已经无法满足视频应用迅速发展的需求,联合视频研究组(Joint Video Exploration Team,JVET)提出了下一代视频编码标准H.266/多功能视频编码(Versatile Video Coding,VVC)。
在H.266/VVC中,基于模板的帧内模式导出(template-based intra mode derivation,TIMD)方案利用模板与当前块的相关性,采用帧内预测模式在模板上的预测效果来估计其在当前块上的预测效果,最终选择代价最小的一个或两个模式作为当前块的预测模式。但是,TIMD方案预测效果的准确性还需要进一步提高。
发明内容
本申请实施例提供了一种帧内预测的方法、编码器、解码器和编解码系统,通过根据候选模式在当前块的子模板上代价确定预测模式,从而有助于更准确的进行帧内预测,进而提高压缩效率。
第一方面,提供了一种帧内预测的方法,该方法应用于编码器,包括:
获取当前块的预测模式参数,所述预测模式参数用于指示使用基于模板的帧内模式导出TIMD方式确定所述当前块的帧内预测值;
确定所述当前块的模板,所述模板包括至少两个子模板;
根据候选模式在所述至少两个子模板中的部分子模板上的代价,确定预测模式;
根据所述预测模式,确定所述当前块的帧内预测值。
第二方面,提供了一种帧内预测的方法,该方法应用于解码器,包括:
获取当前块的预测模式参数,所述预测模式参数用于指示使用基于模板的帧内模式导出TIMD方式确定所述当前块的帧内预测值;
确定所述当前块的模板,所述模板包括至少两个子模板;
根据候选模式在所述至少两个子模板中的部分子模板上的代价,确定预测模式;
根据所述预测模式,确定所述当前块的帧内预测值。
第三方面,提供了一种编码器,包括:
获取单元,用于获取当前块的预测模式参数,所述预测模式参数用于指示使用基于模板的帧内模式导出TIMD方式确定所述当前块的帧内预测值;
确定单元,用于确定所述当前块的模板,所述模板包括至少两个子模板;
所述确定单元还用于根据候选模式在所述至少两个子模板中的部分子模板上的代价,确定预测模式;
所述确定单元还用于根据所述预测模式,确定所述当前块的帧内预测值。
第四方面,提供了一种解码器,包括:
获取单元,用于获取当前块的预测模式参数,所述预测模式参数用于指示使用基于模板的帧内模式导出TIMD方式确定所述当前块的帧内预测值;
确定单元,用于确定所述当前块的模板,所述模板包括至少两个子模板;
所述确定单元还用于根据候选模式在所述至少两个子模板中的部分子模板上的代价,确定预测模式;
所述确定单元还用于根据所述预测模式,确定所述当前块的帧内预测值。
第五方面,提供了一种电子设备,包括处理器和存储器。该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,执行上述第一方面中的方法。
第六方面,提供了一种编解码系统,其特征在于,包括第三方面的编码器和第四方面的解码器。
第七方面,提供了一种芯片,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行如上述第一方面,或第二方面的方法。
第八方面,提供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序使得计算机执行上述第一方面,或第二方面中的方法。
第九方面,提供了一种计算机程序产品,包括计算机程序指令,所述计算机程序指令使得计算机 执行上述第一方面或第二方面的方法。
第十方面,提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面的方法。
因此,本申请实施例通过将当前块的模板划分为子模板,并根据候选模式在当前块的子模板上代价,确定预测模式,然后可以根据该预测模式,确定当前帧的帧内预测值。由于预测模式是根据子模板确定的,因此该预测模式在该子模板上的代价小,即该预测模式可以在局部表现好,从而有助于更准确的进行帧内预测,进而提高压缩效率。
本申请实施例的方案能够适用于对纹理复杂的场景,例如有些扭曲的线条、表面不均匀的场景等。也就是说,在这些纹理更加复杂的场景,本申请实施例能够根据候选模式在当前块的子模板上代价,确定预测模式,从而本申请实施例能够有助于使用尽可能少的标志位的情况下做出复杂的预测,从而有助于提升压缩效率。
附图说明
图1是本申请实施例提供的编码器的示意性框图;
图2是本申请实施例提供的解码器的示意性框图;
图3是使用重建像素作为参考像素对当前块进行预测的一个例子;
图4是帧内预测模式的一个示例;
图5是帧内预测模式的另一个示例;
图6是TIMD方法的当前CU和模板的一个示意图;
图7是本申请实施例提供的一种帧内预测的方法的示意性流程图;
图8是本申请实施例提供的子模板的具体例子;
图9是本申请实施例提供的子块的具体例子;
图10是本申请实施例提供的子模板的具体例子;
图11是本申请实施例提供的子模板和子块的具体例子;
图12是本申请实施例提供的另一种帧内预测的方法的示意性流程图;
图13是本申请实施例提供的当前块中的三个单元的具体的例子;
图14是本申请实施例提供的另一种帧内预测的方法的示意性流程图;
图15是本申请实施例提供的一种帧内预测的装置的示意性框图;
图16是本申请实施例提供的电子设备的示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本申请适用于视频编解码领域。首先,结合图1和图2对本申请实施例的可适用的编解码框架进行说明。其中,该编解码框架为目前统一的视频编解码标准采用的基于块的混合编码框架。
图1是本申请实施例提供的编码器100的示意性框图。如图1所示,编码器100可以包括分割单元101、预测单元102、第一加法器107、变换单元108、量化单元109、反量化单元110、逆变换单元111、第二加法器112、滤波单元113、解码图片缓存(Decoded Picture Buffer,DPB)单元114和熵编码单元115。
其中,分割单元101将输入视频中的图片分成一个或多个相同大小的正方形的编码树单元(codingtree units,CTUs)或最大编码单元(cargest coding units,LCUs)。示例性的,CTU或LCU的大小为128×128,或64×64像素点。分割单元101将图片分成多个图块(tiles),还可以进一步将一个tile分成一个或多个砖块(bricks),这里,一个tile或者一个brick中可以包括一个或多个完整的和/或部分的CTUs或LCUs。另外,分割单元101可以形成一个或多个切片(slices),其中一个slice可以包括图片中按照栅格顺序排列的一个或多个tiles,或者覆盖图片中矩形区域的一个或多个tiles。分割单元101还可形成一个或多个子图片,其中,一个子图片可以包括一个或多个slices、tiles或bricks。
在编码器100中,分割单元101将CTU或LCU传送到预测单元102。通常,预测单元102可以由块分割单元103、运动估计(Motion Estimation,ME)单元104、运动补偿(MotionCompensation,MC)单元105和帧内预测单元106组成。其中,ME单元104和MC单元105可以组成帧间预测单元。
具体地,块分割单元103可以进一步将输入CTU或LCT划分成更小的编码单元(CodingUnits,CUs)。CU可能还会被划分预测单元(prediction unit,PU)等,不做限定。
预测单元102可使用ME单元104和MC单元105获取当前块(例如CU或PU等)的帧间预测块。帧内预测单元106可使用包括TIMD模式的各种帧内预测模式获取当前块的帧内预测块。
由于视频的一个帧中的相邻像素之间存在很强的相关性,在视频编解码技术中使用帧内预测的方 法能够有助于消除相邻像素之间的空间冗余。由于视频中的相邻帧之间存在着很强的相似性,在视频编解码技术中使用帧间预测方法能够有助于消除相邻帧之间的时间冗余,从而提高编码效率。
预测单元102输出当前块的预测块,第一加法器107计算分割单元101的输出中的当前块和当前块的预测块之间的差值,即残差块。变换单元108读取残差块并对残差块执行一个或多个变换操作以获取系数。量化单元109对系数进行量化并输出量化系数(即水平)。反量化单元110对量化系数执行缩放操作以输出重构系数。逆变换单元111执行对应于变换单元108中的变换的一个或多个逆变换并输出残差块。第二加法器112通过使残差块和来自预测单元102的当前块的预测块相加而计算出重块。第二加法器112还将其输出发送到预测单元102以用作帧内预测参考。在图像片中的所有块被重建之后,滤波单元113对重建图像执行环路滤波。
滤波单元113的输出是解码图像,这些解码图像缓存至DPB单元114。DPB 114根据时序和控制信息输出解码图像。这里,存储在DPB 114中的图片还可用作预测单元102执行帧间预测或帧内预测的参考。最后熵编码单元115将来自编码器100中解码图片所必需的参数(比如块划分信息,预测、变换、量化、熵编码、环路滤波等模式信息或者参数信息等)写入码流中,即编码器100最终输出码流。
进一步地,编码器100可以是具有处理器和包括计算机程序的存储器。当处理器读取并运行计算机程序时,编码器100读取输入视频并生成对应的码流。另外,编码器100还可以是具有一个或多个芯片的计算设备。在芯片上实现为集成电路的这些单元具有与图1中相应单元类似的连接和数据交换功能。
图2是本申请实施例提供的一种解码器200的示意性框图。如图2所示,该解码器200可以包括:解析单元201、预测单元202、缩放单元205、变换单元206、加法器207、滤波单元208和解码图片缓存单元209。
其中,解码器200的输入码流可以是编码器100所输出的码流。解析单元201对输入码流进行解析,例如,根据已有信息进行分析,确定与编码端相同的块划分信息、模式信息(预测、变换、量化、熵编码、环路滤波等)或者参数信息,从而保证编码端获得的重建图像和解码端获得的解码图像相同。解析单元201将获取的模式信息或参数信息发送到解码器200中的单元。
预测单元202确定当前解码块(例如CU或PU等)的预测块。这里,预测单元202可以包括运动补偿单元203和帧内预测单元204。具体地,当指示帧间解码模式用于对当前解码块进行解码时,预测单元202将来自解析单元201的相关参数传递到运动补偿单元203以获取帧间预测块;当指示帧内预测模式(包括基于TIMD标志的TIMD模式)用于对当前解码块进行解码时,预测单元202将来自解析单元201的相关参数传送到帧内预测单元204以获取帧内预测块。
缩放单元205具有与编码器100中的反量化单元110相同的功能。缩放单元205对来自解析单元201的量化系数(即水平)执行缩放操作以获取重构系数。变换单元206具有与编码器100中的逆变换单元111相同的功能。变换单元206执行一个或多个变换操作(即通过编码器100中的逆变换单元111执行的一个或多个变换操作的反操作)以获取残差块。
加法器207对其输入(来自预测单元202的预测块和来自变换单元206的残差块)执行相加操作以获取当前解码块的重建块。重建块还发送到预测单元202以用作在帧内预测模式下编码的其它块的参考。
在图像中的所有块被重建之后,滤波单元208对重建图像执行环路滤波。这里,滤波单元208的输出是解码图像,解码图像缓存至DPB 209。DPB 209根据时序和控制信息输出解码图像。存储在DPB 209中的图像还可用作通过预测单元202执行帧间预测或帧内预测的参考。
进一步地,解码器200可以是具有处理器和包括计算机程序的存储器。当处理器读取并运行计算机程序时,解码器200读取输入码流并生成对应的解码视频。另外,解码器200还可以是具有一个或多个芯片的计算设备。在芯片上实现为集成电路的这些单元具有与图2中相应单元类似的连接和数据交换功能。
需要说明的是,以上结合图1或图2描述了基于块的混合编码框架下的视频编解码器的基本流程,该编解码框架或基本流程仅用于说明本申请实施例而非限定。例如,随着技术的发展,该框架或流程的一些模块或步骤可能会被优化。在具体实施时,可以根据实际需要灵活地应用本申请实施例提供的技术方案。
在本申请实施例中,当前块(current block)指的是当前编码单元CU,或当前预测单元PU,或者其他编码块,不做限定。
示例性的,在编码器100的帧内预测单元106或解码器200的帧内预测单元204中,可以使用当前块周边已经编码的重建像素(例如上文中重建图像中的像素)作为参考像素来对当前块进行预测。 图3示出了使用重建像素作为参考像素对当前块进行预测的一个例子。如图3所示,白色填充的4x4块是当前块,当前块左边一行和上面一列的阴影填充的像素为当前块的参考像素。帧内预测单元使用这些参考像素对当前块进行预测。在一些实施例中,参考像素可能已经全部可得,即全部已经编解码。在另一些实施例中,参考像素也可能有部分不可得,比如当前块是整帧的最左侧,那么当前块的左边的参考像素不可得。或者编解码当前块时,当前块左下方的部分还没有编解码,那么左下方的参考像素也不可得。对于参考像素不可得的情况,可以使用可得的参考像素或某些值或某些方法进行填充,或者不进行填充,本申请对此不做限定。在一些实施例中,可以利用多参考行(Multiple reference line,MRL)帧内预测方法,即使用更多的参考像素来提高编码效率。
帧内预测有多种预测模式。例如,在H.264中,可以使用9种模式(模式0至模式8)对4×4的块进行帧内预测。其中,模式0将当前块上面的像素按数值方向复制到当前块作为预测值,模式1将左边的参考像素按水平方向复制到当前块作为预测值,模式2DC将A~D和I~L这8个点的平均值作为所有点的预测值,模式3~8分别按某一个角度将参考像素复制到当前块的对应位置。因为当前块某些位置不能正好对应到参考像素,可能需要使用参考像素的加权平均值,或者说是插值的参考像素的分像素。
除此之外,还有Plane,Planar等模式。而随着技术的发展以及块的扩大,角度预测模式也越来越多。例如HEVC使用的帧内预测模式有Planar、DC和33种角度模式共35种预测模式。又例如,如图4所示,VVC有67种帧内预测模式,其中除模式0Planar,模式1DC外,有65种角度预测模式。Planar通常处理一些渐变的纹理,DC通常处理一些平坦区域,而对于角度纹理比较明显的块通常会使用帧内角度预测。角度预测按照指定的角度将参考像素平铺到当前块作为预测值。当然VVC中对非正方形的块还可以使用宽角度预测模式,宽角度预测模式使得预测的角度会比正方形的块的角度范围更大。如图5所示,2~66为正方形块的预测模式对应的角度。-1~-14以及67~80代表宽角度预测模式下扩展的角度。需要说明的是,这里说的都是单个分量的预测模式,比如Y分量单独一个分量的预测模式。由于VVC中引入了跨分量的预测,即利用通道间的相关性,可以利用同一个块里的Y分量的重建值对U、V分量进行预测,上述模式中并不包含这些跨分量的预测模式。
在一些实施例中,解码器可以根据一些标志信息来确定当前块使用的帧内预测模式。为了减小这些标志信息在码流中的开销,引入了最有可能模式(mostprobablemode,MPM)。解码器可以根据块之间的相关性推导出一些MPM。由于MPM被选中的概率更大,因此通常可以使用较短的码字来表示MPM中的描述,而用较长的码字来表示非MPM的模式。MPM通常使用相邻块使用的模式,比如左边的相邻块,上面相邻块使用的描述。因为空间上的相关性,相邻块使用的模式在当前块也可能使用。另外,这些相邻块的模式的相关的模式,比如角度相近的模式,比如当前块和相邻块发生了细微的纹理变化。还有就是最常用的模式,比如planar模式。
有鉴于此,TIMD方法被提出。图6示出了TIMD方法的当前CU(current CU)和模板(template)的一个示意图。如图6所示,可以在当前CU相邻的左侧和上面设置模板,该模板的区域是已经解码过的。例如,当前CU的尺寸为M*N,模板在当前CU的左侧部分的尺寸为L1*N,模板在当前CU上边部分的尺寸为M*L2。由于模板和当前CU是相邻的,具有一定的相关性。因此可以用某个帧内预测模式在模板上的预测效果来估计其在当前CU上的预测效果。换言之,如果一个预测模式在模板上预测效果好,那么它有很大的可能在当前CU上的预测效果也好。
TIMD可以确定一个或两个预测模式对当前块进行帧内预测。示例性的,当选择两个预测模式时,可以将该两个预测模式的预测值按一定的比例(即权重)进行加权,得到当前块的帧内预测值。但是,目前TIMD技术对当前块的每个点都设置相同的权重。而对于具有复杂纹理的图像,两个预测模式对当前块中不同位置的预测效果可能是不一样的,例如其中一个模式对当前块的左边预测效果好,但是对右边预测效果不好,而另一个模式对当前块右边预测效果好,但是对左边预测效果不好。因此,亟需一种方案来提高帧内预测的准确性。
有鉴于此,本申请实施例提供了一种帧内预测的方法,通过将当前块的模板划分为子模板,根据该子模板确定至少两个预测模式在当前块中的单元(比如子块、部分或像素点等)上的权重,进而根据至少两个预测模式在当前块的单元的权重,确定当前块的帧内预测值。由于本申请实施例能够确定至少两个预测模式分别在当前块的不同单元上的权重,从而能够对当前块内的不同的位置点设置不同的权重,因此本申请实施例有助于更准确的确定当前块的帧内预测值,进而提高压缩效率。
图7示出了本申请实施例提供的一种帧内预测的方法300的示意性流程图。方法300可以应用于编码器,例如图1中的编码器100,或应用于解码器,例如图2中的解码器200。进一步的,方法300可以应用于编码器100中的帧内预测单元106,或解码器200中的帧内预测单元204。如图7所示,方法300包括步骤310至步骤340。
310,获取当前块的预测模式参数,所述预测模式参数用于指示使用基于模板的帧内模式导出TIMD确定所述当前块的帧内预测值。
本申请实施例中,当前块可以指当前正在进行编码的块或编码块,例如CU、PU或其他等,不做限定。当前块也可以替换为“编码块”、“块”、“当前编码块”等,均可以表示相同或相似的含义。
在一些实施例中,当方法300应用于编码端时,编码器可以确定当前块是否使用TIMD模式。可选的,编码器可以在码流中传输指示当前块是否使用TIMD模式的信息,即预测模式参数。示例性的,编码器可以计算使用TIMD模式的代价,以及其他模式(例如选择某一个MPM模式,选择某一个非MPM模式)的代价,如果TIMD模式的代价最小,则可以确定当前块使用TIMD模式确定当前块的帧内预测值。否则,确定当前块不使用TIMD模式来预测当前块的帧内预测值。
在另一些实施例中,当方法300应用于解码端,解码器可以确定当前块是否使用TIMD模式。例如,解码器可以获取输入码流,并从该码流中获取指示当前块是否使用TIMD模式的信息,即预测模式参数。
在本申请实施例中,该预测模式参数用于指示当前块使用TIMD模式,即使用TIMD方式确定当前块的帧内预测值。
320,确定所述当前块的模板,所述模板包括至少两个子模板。
一个示例,可以确定当前块的模板(也可以称为当前块的整个模板),然后将该模板划分为至少两个子模板。例如可以根据上文图6所述的方式确定当前块的整个模板,或者也可以根据其他方式来确定当前块的模板,例如将当前块的左边部分、上边部分和左上部分均确定为当前块的整个模板,本申请对此不做限定。
另一个示例,可以直接根据当前块的位置,确定至少两个子模板,作为当前块的模板。
在一些可选的实施例中,所述至少两个子模板包括与所述当前块左侧相邻、上侧相邻、左上、左下和右上的像素块中的至少一种。
示例性的,该至少两个子模板可以属于当前块的模板的不同部分。作为示例,当前块的模板可以是根据图6所示的模板确定的。参见图8,在(a)图中,可以将模板分为2部分,包括子模板0和子模板1,其中,子模板0为当前块的左侧相邻像素组成,子模板1为当前块上边相邻像素组成。在一些示例中,可以进一步对当前块的左侧的子模板进行进一步划分,和/或进一步对当前块上面的子模板进行进一步划分。例如,在图8的(b)图中,模板可以包括子模板0、子模板1、子模板2和子模板3。
另外,在图6所示的模板中,只使用了当前块的左边和上边相邻的部分像素作为模板,但是当前块的左上、左下、右上等部分像素块与当前块也可能具有一定的相关性,特别是在当前块的纹理呈现一些角度的情况下。因此也可以将当前块的左上、左下或右上的部分像素块作为模板的一部分。
继续参见图8,(c)图中模板相对于(a)图中的模板,进一步还可以包括子模板2、子模板3和子模板4,其中子模板2为当前块左下部分的一些像素组成,子模板3为当前块左上部分的一些像素组成,子模板4为当前块的右上部分的一些像素组成。(d)图中的模板相对于(b)图中的模板,进一步还可以包括当前块左下部分的子模板4、左上部分的子模板5和右上部分的子模板6。
需要说明的是,(c)图中的扩展模板也可以直接使用在现有的TIMD方法上,本申请对此不做限定。
应理解,图8示出了本申请提供的子模板的几个具体的例子,但这并不构成对本申请的限定,例如模板还可以包括其他的已编码或未编码的像素部分。这些像素部分可以与当前块相邻,或不相邻,不做限定。
在一些可选的实施例中,可以将所述当前块分为至少两个单元。示例性的,该单元可以为子块(subblock),或部分,或像素点。以下以单元为子块为例进行描述。
示例性的,假设当前块为正方形,可以将该当前块分成如图9中(a)所示的4个子块,或(b)所示的16个子块,不做限定。如图9中(a)所示,子块0包括当前块中的左上角的部分像素,子块1包括当前块中右上角的部分像素,子块2包括当前块中左下角的部分像素,子块3包括当前块右下角的部分像素。图9中(b)图与(a)图相似,不再赘述。
应理解,图9示出了本申请实施例提供的子块的两个具体的例子,但这并不构成对本申请的限定,例如当前块还可以不是正方形,比如为长方形、圆形、梯形或不规则形状,或者当前块还可以划分为其他个数的子块,不做限定。
在一些实施例中,不论当前块的大小是多少,均将当前块分为固定个数的部分。在另一些实施例中,可以根据当前块的大小将当前块划分为不同的部分,例如对较小的块(例如32×32、16×16、4×4等)可以将其分为4个部分,对较大的块(例如128×128、64×64、32×32等)可以将其分为16个部 分。在另一些实施例中,可以根据当前块的纹理复杂程度将当前块划分为不同的部分,例如对纹理较简单的块可以将其分为4个部分,对纹理较复杂的块可以将其分为16个部分。
需要说明的是,本申请实施例中,一个单元(比如子块,或部分,或像素点)中的像素点的数量可以为一个,或多个,不做限定。一些实施例中,当一个单元包括一个像素点时,可以不需要执行将当前块划分为至少两个单元的步骤。
330,根据至少两个预测模式分别在第一子模板的代价,确定所述至少两个预测模式分别在第一单元上的权重。以将当前块划分为至少一个子块为例,第一单元例如可以为第一子块,该至少两个子块包括该第一子块,该至少两个子模板包括该第一子模板。以下可以将预测模式简称为模式。
在一些可选的实施例中,该至少两个预测模式可以是在候选模式中选择的在当前块的整个模板上代价最小的至少两个模式。
示例性的,可以将一些候选模式分别在当前块的整个模板上进行尝试,选择代价最小的至少两个模式。候选模式可能是MPM列表中的模式,或者根据相邻块的信息推导出来的一些模式,或者是一些其他信息推导出的模式,或者是全部可能的模式,不作限定。在一些实施例中,TIMD已经将67种帧内预测模式扩展到了131种帧内预测模式,把角度预测的角度分得更细了。
作为示例,可以根据绝对变换差之和(Sum of Absolute Transformed Difference,SATD)来计算代价。作为具体的例子,假设模式0(mode 0)在当前块的整个模板上的代价最小,该最小代价可以记为costMode0,模式1(记为mode 1)在当前块的整个模板上的代价第二小(即次小),该第二小即(次小)的代价记为costMode1,以此类推。可选的,可以将在当前块的整个模板上的代价最小的至少两个(例如两个、三个或其他数量)的预测模式作为上述至少两个预测模式。
在一些可选的实施例中,如果至少两个预测模式对应的代价差距不大,那么可以同时使用该至少两个预测模式确定当前块的预测值,例如可以将该至少两个预测模式的预测值按照一定的比例进行加权。相反,如果至少两个预测模式对应的代价相差太大,那么可以使用其中的部分代价较小的模式确定当前块的预测值。
一个具体的例子,当mode 0和mode 1分别为在当前块的整个模板上代价最小的两个模式时,可以判断如下语句是否成立:
costMode1<2*costMode0
如果成立,则使用mode 0和mode 1的组合。否则,只使用mode 0。
在另一些可选的实施例中,该至少两个预测模式可以是在候选模式中选择的在当前块的部分子模板上代价最小的至少两个模式。
具体而言,本申请实施例支持将当前块的模板划分为多个部分(即子模板),在空间上距离近的点相关性强,距离远的点相关性弱。这里以将模板分为上边和左边两个子模板(即图8中(a))为例进行说明。例如,一些像素点距离上边的子模板近而距离左边的子模板远,那么这些点跟上边的子模板的相关性强,即在上边的子模板上表现好的帧内预测模式也更适合这些像素点。但是,一些帧内预测模式在上面的子模板上表现好,而在左边的模板表现差,导致这些模式在整个模板上表现并不好,因此这些模式在现有技术中可能会被舍弃。但是,在本申请实施例中,可以采用这些帧内预测模式。
示例性的,可以将一些候选模式分别在当前块的子模板上进行尝试,例如选择在每个子模板上代价最小的模式作为至少两个预测模式。候选模式或代价可以参见上文中的描述,不再赘述。
作为具体的例子,参见图10,假设模式0(mode 0)在当前块的整个模板(记为模板0)上的代价最小,该最小代价可以记为costMode0,模式1(记为mode 1)在当前块的子模板1上的代价最小,该最小代价可以记为costMode1Tem1,模式2(记为mode 2)在当前块的子模板2上的代价最小,该最小代价可以记为costMode2Tem2。可选的,可以将在当前块的整个模板上的代价最小的模式mode 0、在子模板1上代价最小的模式mode1以及在子模板2上代价最小的模式mode2等3个模式作为上述至少两个预测模式。这样,选出来的3个模式,其中一个模式(mode 0)在整体表现上最好,另外两个在局部表现最好,比如mode 1在子模板1上表现最好,mode 2在子模板2上表现最好。
在一些可选的实施例中,在局部模板表现好(即代价小)的模式不一定在整体模板上表现好,因此在选择至少两个预测模式时,可以进一步设置一些限定条件。例如,可以限定该至少两个预测模式在整个模板上的代价不超过第一值,其中,该第一值为预设阈值,或第一值为在所述模板上的代价最小的模式(即mode 0)在整个模板上的代价(例如costMode0)的整数倍,例如2倍,或其他,不作限定。
一个具体的例子,当mode0、mode1和mode2分别为在当前块的整个模板、子模板1、子模板2上代价最小的模式时,可以进一步设置mode1或mode 2在整个模板上的代价不超过costMode0的2倍。
在确定至少两个模式之后,可以根据该至少两个预测模式分别在第一子模板的代价,确定所述至少两个预测模式分别在第一子块上的权重。示例性的,第一子模板可以为步骤320中确定的至少一个子模板中的一个,第一子块可以为上文中确定的至少一个子块中的一个。也就是说,可以根据至少两个预测模式在模板上的不同部分子模板的代价来计算该至少两个预测模式在当前块的不同位置的权重。
在一些可选的实施例中,第一子模板包括至少两个子模板中与第一子块距离最近的子模板。例如,第一子模板可以与第一子块相邻。也就是说,本申请实施例可以根据至少两个预测模式在模板上的不同部分子模板的预测效果来估计该预测模式在当前块的对应相邻部分的预测效果。
以下结合图11,以选择在当前块的整个模板上代价最小的两个模式为例,对根据至少两个预测模式分别在第一子模板的代价,确定至少两个预测模式分别在第一子块上的权重的过程进行描述。可以理解的是,本申请实施例可以扩展到更多的模式的组合的情况。当选择的模式大于两个时,可以基于与模式为两个相同或相似的方式,来确定每个模式在子块上的权重,不再赘述。
作为一个具体的例子,参见图11中(a)图,其中子模板例如为图8中的(a)中的两个子模板,子块例如为图9(a)中的子块。以(a)图为例,在图中子块0与子模板0和子模板1的距离可以认为是相同的,子块3与子模板0和子模板1的距离可以认为是相同的。但是,子块1与子模板1的距离比子块1与子模板0的距离近,子块2与子模板0的距离比子块2与子模板1的距离近。因此子块1可以给在子模板1中表现更好的模式以更大的权重,而子块2可以给在子模板0中表现更好的模式以更大的权重。这里,模式在子模板中表现好可以理解为该模式在该子模板中的代价小,表现差可以理解为该模式在该子模板中的代价大。
作为示例,上述在当前块的整个模板上代价最小的模式,记为mode 0,其在整个模板上的代价为costMode0,其在子模板0上的代价为costMode0Tem0,其在子模板1上的代价为costMode0tem1。上述在当前块的整个模板上代价第二小的模式,记为mode1,其在整个模板上的代价为costMode1,其在子模板0上的代价为costMode1Tem0,其在子模板1上的代价为costMode1Tem1。
示例性的,对于子块1(上述第一子块的一个示例),在使用两个模式(即mode 0和mode1)组合的情况下,各个模式权重的计算如下公式(1)和公式(2)所示:
weight1Part1=1-weight0Part1 (2)
其中,weight0Part1是mode 0在子块1的权重,weight1Part1是mode 1在子块1的权重。
类似的,对于子块2(上述第一子块的另一个示例),在使用两个模式(即例如mode 0和mode1)组合的情况下,各个模式权重的计算如下公式(3)和公式(4)所示:
weight1Part2=1-weight0Part2 (4)
其中,weight0Part2是mode 0在子块2的权重,weight1Part2是mode 1在子块2的权重。
可以看出,由于子块1更接近子模板1,因此根据该两个模式mode 0和mode 1在子模板1上的表现来确定这两个模式在子块1上所占的权重,由于子块2更接近子模板0,因此根据该两个模式mode0和mode 1在子模板1上的表现来确定这两个模式在子块2上所占的权重。
在一些可选的实施例中,还可以根据至少两个预测模式分别在模板(即当前块的整个模板)的代价,确定该至少两个预测模式分别在第二子块上的权重。这里第二子块为第二单元的一个具体示例,其中,上述至少两个子块包括该第二子块。作为示例,该第二子块距离至少两个子模板的距离相同(或近似相同)。
示例性的,对于图11中(a)图中的子块0和子块3(上述第二子块的具体示例),由于子块0与子模板0和子模板1的距离可以认为是相同的,子块3与子模板0和子模板1的距离可以认为是相同的,因此可以根据mode 0和mode1分别在整个模板(即子模板0与子模板1之和)的代价,确定该至少两个预测模式分别在子块0和子块3上的权重。这里,mode 0和mode1在子块0和子块3上的权重是相同的。
在一些可选的实施例中,还可以根据上述至少两个预测模式分别在第一子模板的代价,以及该至少两个预测模式分别在第二子模板上的代价,确定所述至少两个预测模式分别在第一子块上的权重,其中,该至少两个子模板包括所述第二子模板。
示例性的,上述第一子模板与第一子块的距离可以小于第二子模板与第一子块的距离。此时,该至少两个预测模式在第一子模板的代价对权重的影响大于该至少两个预测模式在第二子模板的代价对权重的影响。也就是说,子模板与子块的距离越小,预测模式在该子模板上的代价对该预测模式在该子块上的权重的影响越大。
继续上面图11中(a)图的例子,可能两个模式mode 0和mode 1在子块1上的权重也可以考虑该两个模式在子模板0上的表现,但是该两个模式在子模板1上的影响更大。可能两个模式mode 0和mode 1在子块2上的权重也可以考虑该两个模式在子模板1上的表现,但是该两个模式在子模板0上的影响更大。
示例性的,对于子块1(上述第一子块的一个示例),在使用两个模式(即例如mode 0和mode1)组合的情况下,各个模式权重的计算如下公式(5)和公式(6)所示:
weight1Part1=1-weight0Part1 (6)
其中,weight0Part1是mode 0在子块1的权重,weight1Part1是mode 1在子块1的权重。
类似的,对于子块2(上述第一子块的另一个示例),在使用两个模式(即例如mode 0和mode1)组合的情况下,各个模式权重的计算如下公式(7)和公式(8)所示:
weight1Part2=1-weight0Part2 (8)
其中,weight0Part2是mode 0在子块2的权重,weight1Part2是mode 1在子块2的权重。
也就是说,在上面的例子中,使用了1:3,或3:1的权重对两个子模板的代价进行了加权。
在一些可选的实施例中,还可以根据至少两个预测模式分别在第一子模板的代价,以及该至少两个预测模式分别在模板(即当前块的整个模板)上的代价,确定该至少两个预测模式分别在第一子块上的权重。
继续上面图11中(a)图的例子,可能两个模式mode 0和mode 1在子块1上的权重也可以考虑该两个模式在当前块的整个模板上的表现。可选的,该两个模式在子模板上的影响可能大于该两个模式在整体模板上的影响,或者小于该两个模式在整体模板上的影响,不做限定。
示例性的,对于子块1,在使用两个模式(即例如mode 0和mode1)组合的情况下,各个模式权重的计算如下公式(9)和公式(10)所示:
weight1Part1=1-weight0Part1 (10)
类似的,mode 0以及mode 1在子块2的权重可以参考mode 0以及mode 1在子块1的计算过程,mode 0和mode 1在子块0和子块3的权重可以参考图11中(a)图中mode 0和mode 1在子块0和子块3的权重的计算过程,不再赘述。
也就是说,在上面的例子中,使用了1:3,或3:1的权重对子模板1和整个模板的代价进行了加权。
在一些可选的实施例中,可以将当前块的模板划分为更多的子模板,例如4个子模板,或16个子模板,这样可以获得一个模式在更细粒度的模板上的表现,进而使得权重的计算能够参考更多的信息,从而有助于更精细的确定各个模式在各个子块的上的权重。
在一些可选的实施例中,可以将当前块划分为更多的子块,例如16个子块,32子块等,这样可以对当前块进行一个更细粒度的划分,进而能够对更细粒度的子块进行权重的计算,从而有助于更精细的确定各个模式在各个子块上的权重。
作为一个具体的例子,参见图11中的(b)图,其中子模板例如为图8中的(b)中的四个子模板,子块例如为图9(a)中的子块。与图11中(a)类似,子块0和子块3分别与各个子模板的距离可以认为是相同的,均可以根据至少两个预测模式分别在模板(即当前块的整个模板)的代价,确定该至少两个预测模式分别在子块0和子块3上的权重。对于子块1和子块2,可以根据至少两个预测模式分别在子模板0~3的代价,确定该至少两个预测模式分别在子块1和子块2上的权重。
作为示例,上述当前块的整个模板上代价最小的模式mode 0,其在整个模板上的代价为costMode0,其在模板X上的代价为costMode0TemX,其中X为0,1,2,3。该当前块的整个模板上代价第二小的模式mode 1,其在整个模板上的代价为costMode1,其在模板X上的代价为costMode1TemX。
示例性的,对于子块1,在使用两个模式(即mode 0和mode1)组合的情况下,各个模式权重的计算如下公式(11)和公式(12)所示:
其中,
A=4*costMode1Tem3+3*costMode1Tem2+2*costMode1Tem1+costMode1Tem0
B=4*(costMode0Tem3+costMode1Tem3)+3*(costMode0Tem2+costMode1Tem2)+2*(costMode0Tem1+costMode1Tem1)+(costMode0Tem0+costMode1Tem0)
weight1Part1=1-weight0Part1 (12)
类似的,mode 0以及mode 1在子块2的权重可以参考mode 0以及mode 1在子块1的计算过程,mode 0和mode 1在子块0和子块3的权重可以参考图11中(a)图中mode 0和mode 1在子块0和子块3的权重的计算过程,不再赘述。
需要说明的是,本申请实施例中,对计算出来的权重,最大值不能超过1。如果计算出来的权重大于1,那么该权重值要clip到1。
作为另一个具体的例子,参见图11中的(c)图,其中子模板和当前块的划分的更细、例如,按4×4的尺寸将当前块划分为若干子块,对应的将左边的模板按L1*4的尺寸划分成子模板,上面的模板也按4*L2的尺寸划分成子模板。具体的例如在图11的(c)图中,当前块是一个16×16的块,可以将当前块按4×4的尺寸划分成16个子块,模板对应划分为8个子模板,例如为可表示为图中的Tem0~Tem8。
作为示例,对图11的(c)图中的子块计算预测模式所占的权重时,可以使用当前子块对应的水平和垂直方向上最近的1个或多个子模板。例如,对图11的(c)图中的子块6,可以使用其水平方向最近的3个子模板,比如Tem1、Tem2和Tem3,以及使用其垂直方向最近的3个子模板,比如Tem5、Tem6和Tem7。具体的,计算至少两个模式在每个子块上的权重的方式可以参见上文中的描述,这里不再赘述。
在一些可选的实施例中,当一个预测模式在当前块的第一子模板上代价最小时,可以设置该预测模式在离该第一子模板更近的子块或点的权重更大,离该第一子模板远的地方可以设置较小的权重,甚至为0。例如,参见图10,对于模式(mode 0)在整体模板表现上最好,mode 1在子模板1上表现最好,mode 2在子模板2上表现最好的情况,可以设置mode2在当前块上从上到下的权重由大到小,mode1在当前块上从左到右权重由大到小。例如,对于将当前块分为4个子块的情况,mode2在上面两个子块(例如子块0和子块1)的权重不为0,在下面两个子块(例如子块2和子块3)的权重为0,mode1在左边两个子块(子块0和子块2)的权重不为0,在右边两个子块(例如子块1和子块3)的权重为0。
需要说明的是,如果一个模式在子模板上的代价过大,则该模式在该子模板上的权重可以设置为0。示例性的,当mode1在子模板1上的代价大于mode0在该子模板1上的代价的2倍时,可以确定mode1在该子模板1上的代价过大。
340,根据所述至少两个预测模式分别在所述第一单元上的权重,确定所述当前块的帧内预测值。
示例性的,以第一单元为第一子块为例,当第一像素点位于当前块的子块N(第一子块的一个示例)中时,该第一像素点的帧内预测值可以为每个模式在第一位置的帧内预测值与该模式在子块N中的权重的乘积之和。其中,N为大于或等于0的整数,例如对于将当前块分为4个子块的情况,N=0,1,2,3。
作为一个具体的例子,上述第一像素点可以表示为(x,y),对于至少两个预测模式为mode0和mode1的情况,可以假设mode 0在(x,y)位置的预测值为pred0XY,mode 1在(x,y)位置的预测值为pred1XY。那么在(x,y)的预测值predXY可表示为如下公式(13):
predXY=pred0XY*weight0PartN+pred1XY*weight1PartN (13)
当根据所述至少两个预测模式分别在所述模板的代价,确定所述至少两个预测模式分别在第二单元上的权重时,步骤340具体可以为根据所述至少两个预测模式分别在所述第一单元上的权重,以及所述至少两个预测模式分别在所述第二单元上的权重,确定所述当前块的帧内预测值。
具体的,以单元包括子块为例,确定子块N中的位置上的帧内预测值的方式可以参见上面的描述。对于子块M(第二子块的一个示例)上的第二像素点,其预测值可以为每个模式在第二像素点的预测值与该模式在子块M中的权重的乘积之和。其中,M为大于或等于0的整数,N与M不相等。类似的,可以参见上面公式13的描述。与确定第一像素点的预测值的过程不同的是,第二像素点上的各个预测模式的权重的确定方式与第一像素点上的各个预测模式的权重的确定方式不同。
在一些实施例中,例如在实际实施时,为了避免小数的使用,可以使用先放大再归一化的方法。例如可以将权重都放大8倍,为了达到类似四舍五入的效果,可以加入一个偏移值,最后的预测值再右移3位。
因此,本申请实施例通过确定当前块的至少两个子模板,从而可以根据至少两个预测模式分别在子模板的代价,确定该至少两个预测模式分别在当前块的第一单元上的权重,进一步可以根据该权重, 确定当前块的预测值。由于本申请实施例能够确定至少两个预测模式分别在当前块的不同单元上的权重,从而能够实现对当前块的不同的点设置不同的权重,从而有助于更准确的确定当前块的帧内预测值,进而提高压缩效率。
需要说明的是,本申请实施例中第一单元和第二单元可以分别为当前块中的不同的像素点,或当前块中的不同子块中的像素点,或当前块中的不同部分的像素点,不作限定。也就是说,本申请实施例可以以点(即像素点)为单位计算权重,也可以以子块为单元计算权重,还可以以部分为单位计算权重,不做限定。换言之,本申请实施例中计算权重的粒度可以为以点为点位,或以子块为单位,或以部分为单位,不做限定。
示例性的,通过对当前块计算预测模式在各单元(例如子块、部分,或像素点)的权重,可以尽可能在单元上给某个表现更好的模式以更多权重,给某个表现不好的模式以较少的权重,即给一个模式在其预测效果好的地方(例如子块、部分或像素点)上设置更大的权重,而在其预测效果不好的地方设置更少的权重,这样比在整个当前块上统一权重的方法更加合理,从而可以制作出纹理更加复杂的预测块。
本申请实施例的方案能够适用于对纹理复杂的场景,例如有些扭曲的线条、表面不均匀的场景等。也就是说,在这些纹理更加复杂的场景,本申请实施例不需要编码更多的残差或者划分更小的块来使得单个块内的纹理变得简单,而是直接进行帧内预测,从而本申请实施例能够有助于使用尽可能少的标志位的情况下做出复杂的预测,从而有助于提升压缩效率。
在一些可选的实施例中,在根据上述方法300进行帧内预测之后,上述至少两个预测模式在当前块中各个单元(例如子块、部分、像素点等)之间的交界的位置上的权重不同,这可能导致当前块的预测块在一些单元的交界的位置上出现边界。作为一种可能的处理方法,可以在根据权重对各个模式的预测值进行加权之后做一个平滑滤波处理,例如类似于去块效应滤波的操作。作为另一种可能的处理方法,可以通过一定的算法保证相邻部分之间的权重变化不会过大。作为另一种可能的处理方法,可以在计算各个模式在各个部分的权重的过程中,将当前块划分为更细的粒度,例如对每个4×4的子块分别计算一个权重,或者每个像素点分别计算一个权重,以保证相邻单元之间的权重变化不会过大。
可选的,当将当前块划分为更细的粒度时,可以划分出更多的子模板,以更好的匹配权重计算的粒度。例如,参见图11中(b)图所示的例子,可以将当前块在水平方向和竖直方向各分两块,即总共分成四个子块。对应的,可以将左边的模板也分成两块,如图所示的子模板0和子模板1,上边的模板也分成两块,如图所示的子模板2和子模板3,这样可以得到某一个模式在更细粒度的模板上的表现,同时权重的计算也可以参考更多的信息。
同时,本申请实施例还提供了一种帧内预测的方法,在确定至少两个预测模式在当前块中的至少两个单元(例如子块,部分,或像素点等)上的权重之后,可以进一步根据该至少两个单元的权重,确定第一方向(例如垂直方向或水平方向)上权重的变化率,根据该变化率,进而可以通过平滑过渡的方式,确定该当前块上的其他单元上的权重,以确定当前块的帧内预测值。由于本申请实施例能够确定至少两个预测模式分别在当前块的不同单元上的权重,从而能够对当前块内的不同的位置设置不同的权重,因此本申请实施例有助于更准确的确定当前块的帧内预测值,进而提高压缩效率。
图12示出了本申请实施例提供的另一种帧内预测的方法400的示意性流程图。方法400可以应用于编码器,例如图1中的编码器100,或应用于解码器,例如图2中的解码器200。进一步的,方法400可以应用于编码器100中的帧内预测单元106,或解码器200中的帧内预测单元204。如图12所示,方法400包括步骤410至步骤340。
410,获取当前块的预测模式参数,所述预测模式参数用于指示使用基于模板的帧内模式导出TIMD确定所述当前块的帧内预测值。
具体的,步骤410可以参见方法300中步骤310的描述,不再赘述。
420,确定至少两个预测模式分别在所述当前块的第一单元上的第一权重,以及在所述第二单元上的第二权重,其中,所述第一单元和所述第二单元在第一方向上的坐标不同。
在一些可选的实施例中,上述至少两个预测模式是根据候选模式在当前块的模板(即整个模板)上的代价确定的,和/或根据候选模式在所述模板中的部分子模板上的代价确定的。
可选的,当所述至少两个预测模式是根据候选模式在所述至少两个子模板中的部分子模板上的代价确定的情况下,所述至少两个预测模式在所述模板上的代价不超过第一值,其中,所述第一值为预设阈值,或第一预测模式的2倍,所述第一预测模式为在所述模板上的最小模式。
示例性的,至少两个预测模式可以包括两个预测模式,或三个预测模式,或者更多,不做限定。具体的,确定预测模式的方式可以参见图7中步骤340中的描述,这里不再赘述。
示例性的,第一单元和第二单元可以分别为当前块中的不同的像素点,或当前块中的不同子块中 的像素点,或当前块中的不同部分的像素点,不作限定。可选的,当第一单元和第二单元为不同部分,或不同子块中的像素点时,方法400还包括将当前块分为至少两个子块,或至少两个部分。也就是说,本申请实施例可以以点(即像素点)为单位计算权重,也可以以子块为单元计算权重,还可以以部分为单位计算权重,不做限定。换言之,本申请实施例中权重变化的粒度可以为以点为点位,或以子块为单位,或以部分为单位,不做限定。
在一些实施例中,可以根据方法300,来确定至少两个预测模式在当前块的第一单元上的第一权重,以及第二单元上的第二权重,具体可以参见方法300中的描述,不再赘述。在另一些实施例中,还可以根据其他方法来确定当前块中的第一单元和第二单元的权重,本申请对此不作限定。
在一些可选的实施例中,方法400还可以包括确定所述至少两个预测模式分别在所述当前块的第三单元上的第三权重,其中,所述第一单元和所述第三单元在第二方向上的坐标不同,所述第二方向与所述第一方向垂直。
示例性的,第三单元可以为当前块中的与第一单元、第二单元不同的像素点,或者与第一单元、第二单元不同子块中的像素点,或者与第一单元、第二单元不同部分的像素点,不作限定。
示例性的,第一方向可以为竖直方向,第二方向为水平方向,不作限定。
具体的,可以根据方法300,或者其他方式来确定至少两个预测模式在当前块的第三单元上的第三权重,不作限定。
在一些可选的实施例中,上述第一单元可以为当前块的左上角位置,第二单元为当前块的左下角位置,第三单元为当前块的右上角位置。参见图13中的(a)图,作为示例,当前块的尺寸为M×N,则第一单元可以为左上角位置(表示为LT),坐标可以记为(0,0),第二单元为左下角位置(表示为LB),坐标可以记为(0,N-1),第三单元为右上角位置(表示为RT),坐标可以记为(M-1,0)。
在另一些可选的实施例中,上述第一单元可以为当前块的左上角位置,第二单元为当前块的右侧中间位置,第三单元为当前块的上侧中间位置。参见图13中的(b)图,作为示例,当前块的尺寸为M×N,则第一单元可以为左上角位置(表示为LT),坐标可以记为(0,0),第二单元为右侧中间位置(表示为LM),坐标可以记为(0,N/2),第三单元为上侧中间位置(表示为MU),坐标可以记为(M/2,0)。
应注意,在本申请实施例中,坐标均为相对于当前块左上角的坐标。换言之,本申请实施例在局部范围内(即当前块内部)将左上角位置的坐标记为(0,0)。
作为一个具体的例子,以选择在当前块的整个模板上代价最小的两个模式,例如mode0和mode1为例,参见图13中(a)图,mode0在左下角位置的权重可以表示为weight0LB,在左上角位置的权重可以表示为weight0LT,在右上角位置的权重可以表示为weight0RT。示例性的,以将当前块的模板划分为子模板0、子模板1、子模板2和子模板3为例,mode0在上述三个位置的权重可以分别如下公式(14)-(16)所示:
示例性的,mode1在上述三个位置上的权重分别为1减去mode0的权重。
作为另一个具体的例子,以选择在当前块的整个模板上代价最小的模式,以及在子模板上代价最小的模式为例。例如参见图10,在整个模板上代价最小的模式mode0,在子模板1上代价最小的模式mode1和在子模板2上代价最小的模式mode2,可以根据这些模式在各个模板中的代价来计算各个位置的权重。假设modeX在子模板Y上的代价为costModeXtemY,其中X的取值范围为0,1,2,Y的取值范围为0,1,2。参见图13中(a)和(b)图,可以记左上角位置LT为pos0,左下角位置LB或左中位置LU为pos1,右上角位置RT或中上位置MU为pos2。那么,ModeX在posZ(Z取值为0,1,2)的权重可以记为weightXposZ。
那么,在posZ的3个模式的权重分别如下公式所示:
weight0PosZ=1-weight1PosZ-weight2PosZ (19)
其中,TemZ表示posZ对应的模板(或子模板)。例如,对于pos0,TemZ为整个模板,比如模 板0,对于pos1,TemZ为与pos1最近(例如相邻)的子模板1,对于pos2,TemZ为与pos2最近(例如相邻)的子模板2。
430,根据所述第一权重、所述第二权重,以及所述第一单元的坐标、所述第二单元的坐标,确定所述至少两个预测模式在所述第一方向上的第一变化率;
也就是说,根据第一单元和第二单元的权重和坐标,可以确定预测模式在第一方向的变化率。示例性的,当第一单元和第二单元为像素点时,第一方向可以为第一单元和第二单元所在直线的方向;当第一单元和第二单元为子块或部分时,第一方向可以为第一单元的中心与第二单元的中心所在直线的方向。作为具体的例子,在图13中(a)和(b)图中,第一方向为竖直方向。
在一些可选的实施例中,还可以根据所述第一权重、所述第三权重,以及所述第一单元的坐标、所述第三单元的坐标,确定所述至少两个预测模式在所述第二方向上的第二变化率。
示例性的,当第一单元与第三单元为像素点时,第二方向可以为第一单元与第三单元所在直线的方向;当第一单元和第三单元为子块或部分时,第二方向可以为第一单元的中心与第三单元的中心所在直线的方向。作为具体的例子,在图13(a)和(b)图中,第二方向为水平方向。
可选的,可以采用线性模型(例如一次函数)或非线性模型(例如二次函数,或三次函数等)来推导权重在第一方向或第二方向上的变化率。也就是说,当认为权重在点到点(或在子块之间、部分之间)是均匀变化的情况下,可以采用线性模型来计算权重在第一方向或第二方向上的变化率。另一方面,采用线性模型能够使得计算复杂度较低。
作为一个具体的示例,参见图13(a)图,当采用线性模型来计算权重在竖直方向的第一变化率时,mode0在竖直方向上的第一变化率可以表示为如下公式(20):
当采用线性模型来计算权重在水平方向的第二变化率时,mode0在水平方向上的第二变化率可以表示为如下公式(21):
作为另一个具体的示例,参见图13(b)图,当采用线性模型来计算权重在竖直方向的第一变化率时,mode0在竖直方向上的第一变化率可以表示为如下公式(22):
当采用线性模型来计算权重在水平方向的第二变化率时,mode0在水平方向上的第二变化率可以表示为如下公式(23):
440,根据所述第一变化率和所述第四单元的坐标,确定所述至少两个预测模式在所述第四单元的第四权重。
示例性的,当第四单元为像素点时,可以记第四单元的坐标为(x,y)。作为具体的例子,第四单元可以为与第一单元和第二单元在同一条直线上的一个像素点,此时根据第一变化率和该第四单元的坐标,可以确定至少两个预测模式在该第四单元上的权重。
在一些可选的实施例中,可以根据第一变化率、第二变化率和第四单元的坐标,确定所述第四权重。这里,第四单元可以为当前块中的任一单元。
作为一个具体的例子,继续参见图13中(a)图,当第一变化率表示为公式(20),第二变化率表示为公式(21),第四单元表示为(x,y)时,mode0在第四单元上的权重weight0XY可以如公式(24)所示:
需要说明的是,在公式(20)、(21)和(24)中,(M-1)或(N-1)做分母。在视频编解码领域,M、M通常是2的整次幂,比如4,8,16,32等,此时除以M或N可以使用右移来处理,这对硬件来说是友好的。在一些可选的实现方式中,可以将公式(20)、(21)和(24)中的分母(M-1)替换为M,(N-1)替换为N。也就是说,对于图13中(a)图左下角位置的坐标可以替换为(0,N),右上角位置的坐标可以理解为(M,0),以使得计算简便。此时,可以理解为左下角位置和右上角位置的点并不在整像素点上。
在一些实施例中,当权重计算的粒度为子块或部分或像素点时,可以选取适当的子块,或部分,或像素点,使得变化率公式中的分母为2的整次幂,本申请对此不做限定。
作为另一个具体的例子,继续参见图13中(b)图,当第一变化率表示为公式(22),第二变化 率表示为公式(23),第四单元表示为(x,y)时,mode0在第四单元上的权重weight0XY可以如公式(25)所示:
需要说明的是,对于公式(24)或(25)计算出来的权重值,其最大值不能超过1。如果计算出来的权重大于1,那么该值要clip到1。另外,对于每个单元上,mode1所占的权重weight1XY取值为1减去weight0XY,即weight1XY=1-weight0XY。
450,根据所述第一权重、所述第二权重和所述第四权重,确定所述当前块的帧内预测值。
也就是说,可以根据至少两个预测模式在当前块中的单元(例如子块,部分,或像素点等)的权重,确定当前块的帧内预测值。示例性的,对每一个单元,其帧内预测值为每个模式在该单元的帧内预测值与该模式在该单元的权重的乘积之和。
继续图13中的例子,对于(a)和(b)而言,在(x,y)的预测值predXY可表示为如下公式(26):
predXY=pred0XY*weight0XY+pred1XY*weight1XY (26)
在一些实施例中,例如在实际实施时,为了避免小数的使用,可以使用先放大再归一化的方法。例如可以将权重都放大8倍,为了达到类似四舍五入的效果,可以加入一个偏移值,最后的预测值再右移3位。
因此,本申请实施例在确定至少两个预测模式在当前块中的至少两个单元(比如子块,或部分,或像素点等)上的权重之后,可以进一步根据该至少两个单元的权重,确定某一方向(例如垂直方向或水平方向)上权重的变化率,根据该变化率,进而可以通过平滑过渡的方式确定该当前块上的其他单元上的权重,以确定当前块的帧内预测值。由于本申请实施例能够确定至少两个预测模式分别在当前块的不同单元上的权重,从而能够实现对当前块的不同的点设置不同的权重,从而有助于更准确的确定当前块的帧内预测值,进而提高压缩效率。
本申请实施例的方案能够适用于对纹理复杂的场景,例如有些扭曲的线条、表面不均匀的场景等。也就是说,在这些纹理更加复杂的场景,本申请实施例不需要编码更多的残差或者划分更小的块来使得单个块内的纹理变得简单,而是直接进行帧内预测,从而本申请实施例能够有助于使用尽可能少的标志位的情况下做出复杂的预测,从而有助于提升压缩效率。
本申请实施例还提供了一种帧内预测的方法,通过将当前块的模板划分为子模板,并在根据候选模式中在当前块的子模板上代价,确定预测模式,然后可以根据该预测模式,确定当前帧的帧内预测值。本申请实施例中,由于预测模式是根据子模板确定的,因此该预测模式在该子模板上的代价小,即该预测模式可以在局部表现好,从而有助于更准确的进行帧内预测,进而提高压缩效率。
图14示出了本申请实施例提供的另一种帧内预测的方法500的示意性流程图。方法500可以应用于编码器,例如图1中的编码器100,或应用于解码器,例如图2中的解码器200。进一步的,方法500可以应用于编码器100中的帧内预测单元106,或解码器200中的帧内预测单元204。如图14所示,方法500包括步骤510至步骤540。
510,获取当前块的预测模式参数,所述预测模式参数用于指示使用基于模板的帧内模式导出TIMD方式确定所述当前块的帧内预测值。
520,确定所述当前块的模板,所述模板包括至少两个子模板。
具体的,步骤510和520可以参见图3中步骤310和320的描述,这里不再赘述。
530,根据候选模式在所述至少两个子模板中的部分子模板上的代价,确定预测模式。
示例性的,当将当前块的整个模板划分为至少两个子模板时,部分子模板可以为该至少两个子模板的其中一部分,例如一个子模板,或两个子模板,或者更多,不做限定。
具体而言,当将当前块的模板划分为多个子模板时,在空间上距离近的点相关性强,距离远的点相关性弱。以将模板分为上边和左边两个子模板(例如上文中图8中(a))为例,一些像素点距离上边的子模板近而距离左边的子模板远,那么这些点跟上边的子模板的相关性强,即在上边的子模板上表现好的帧内预测模式也更适合这些像素点。但是,一些帧内预测模式在上面的子模板上表现好,而在左边的模板表现差,导致这些模式在整个模板上表现并不好,因此这些模式在现有技术中可能会被舍弃。但是,在本申请实施例中,当根据候选模式在部分子模板上的代价,确定预测模式时,可以采用这些帧内预测模式。
示例性的,可以将一些候选模式分别在当前块的子模板上进行尝试,例如选择在每个子模板上代价最小的模式作为预测模式。
在一些可选的实施例中,还可以根据候选模式在至少两个子模板中的部分子模板上的代价,以及候选模式在模板(即当前块的整个模板)上的代价,确定至少两个预测模式。也就是说,本申请实施 例所确定的预测模式,可以包括在在当前块的子模板上表现好的模式,还可以包括在当前块的整体模板上表现好的模式。具体的,可以参见上文中图10,以及相关描述。
在一些可选的实施例中,在局部模板表现好(即代价小)的模式不一定在整体模板上表现好,因此在选择至少两个预测模式时,可以进一步设置一些限定条件。例如,可以限定该至少两个预测模式在整个模板上的代价不超过第一值,其中,该第一值为预设阈值,或第一值为在所述模板上的代价最小的模式(即mode 0)在整个模板上的代价(例如costMode0)的整数倍,例如2倍,或其他,不作限定。
一个具体的例子,当mode0、mode1和mode2分别为在当前块的整个模板、子模板1、子模板2上代价最小的模式时,可以进一步设置mode1或mode 2在整个模板上的代价不超过costMode0的2倍。
540,根据所述预测模式,确定所述当前块的帧内预测值。
在一些实施例中,当预测模式为一个时,可以根据该预测模式计算当前块的帧内预测值。
在一些实施例中,当预测模式为至少两个时,可以根据该至少两个预测模式分别在子模板的代价,确定该至少两个预测模式分别在当前块上的权重。然后,可以根据该至少两个预测模式分别在当前块上的权重,确定当前块的帧内预测值。
作为一种具体的实现方式,该至少两个预测模式在当前块上的每个单元上的权重相同。
作为另一种具体的实现方式,该至少两个预测模式在当前块上的不同单元的权重不同。可选的,方法500还可以包括将当前块分为至少两个单元。然后,根据至少两个预测模式在子模板的代价,确定该至少两个预测模式分别在第一单元的权重,其中,该至少两个单元包括该第一单元。之后,可以根据所述至少两个预测模式分别在所述第一单元上的权重,确定所述当前块的帧内预测值。
也就是说,可以根据至少两个预测模式在模板上的不同部分子模板的代价来计算该至少两个预测模式在当前块的不同单元的权重。可选的,在根据至少两个预测模式在子模板的代价,确定该至少两个预测模式分别在第一单元的权重时,该子模板包括该两个子模板中与第一单元距离最近的子模板,例如,该子模板可以与第一单元相邻。具体的,可以参考上文中方法300或400来确定该权重,本申请对此不做限定。
因此,本申请实施例通过将当前块的模板划分为子模板,并在根据候选模式中在当前块的子模板上代价,确定预测模式,然后可以根据该预测模式,确定当前帧的帧内预测值。由于预测模式是根据子模板确定的,因此该预测模式在该子模板上的代价小,即该预测模式可以在局部表现好,从而有助于更准确的进行帧内预测,进而提高压缩效率。
进一步的,由于本申请实施例能够确定至少两个预测模式分别在当前块的不同单元(比如子块,或部分,或像素点等)上的权重,从而能够对当前块内的不同的单元设置不同的权重,因此本申请实施例有助于更准确的确定当前块的帧内预测值,进而提高压缩效率。
需要说明的是,本申请实施例中,帧内预测的方法,既可以应用于编码器,也可以应用于解码器,本申请对此不作限定。通过本申请实施例提供的帧内预测的方法在编码器100能够得到一个较好的预测效果,提高编码性能,并且相应的,在解码器200也能够改善视频解码恢复质量,从而提高解码性能。具体而言,编码器编码或尝试编码TIMD,解码器解码TIMD时,编码过程和解码过程可以使用相同的预设规则或者步骤,例如上述方法300,或方法400,或方法500,计算出TIMD模式的预测值。换句话说,给定TIMD模式,使用TIMD模式产生的预测块的过程在编码端和解码端是相同的。
以上结合附图详细描述了本申请的具体实施方式,但是,本申请并不限于上述实施方式中的具体细节,在本申请的技术构思范围内,可以对本申请的技术方案进行多种简单变型,这些简单变型均属于本申请的保护范围。例如,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本申请对各种可能的组合方式不再另行说明。又例如,本申请的各种不同的实施方式之间也可以进行任意组合,只要其不违背本申请的思想,其同样应当视为本申请所公开的内容。
还应理解,在本申请的各种方法实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。应理解这些序号在适当情况下可以互换,以便描述的本申请的实施例能够以除了在图示或描述的那些以外的顺序实施。
上文结合图1至图14,详细描述了本申请的方法实施例,下文结合图15和图16,详细描述本申请的装置实施例。
图15是本申请实施例的帧内预测的装置700的示意性框图。该装置可以为编码器,例如图1中的编码器100,或解码器,例如图1中的解码器200。如图15所示,所述装置700可包括获取单元 710和确定单元720。
获取单元710,用于获取当前块的预测模式参数,所述预测模式参数用于指示使用基于模板的帧内模式导出TIMD方式确定所述当前块的帧内预测值;
确定单元720,用于确定所述当前块的模板,所述模板包括至少两个子模板;
所述确定单元720还用于根据候选模式在所述至少两个子模板中的部分子模板上的代价,确定预测模式;
所述确定单元720还用于根据所述预测模式,确定所述当前块的帧内预测值。
在一些可选的实施例中,所述预测模式在所述模板上的代价不超过第一值,其中,所述第一值为预设阈值,或第一预测模式在所述模板上的代价的整数倍,所述第一预测模式为在所述模板上的代价最小的模式。
在一些可选的实施例中,所述确定单元720具体用于:
根据候选模式在所述至少两个子模板中的部分子模板上的代价,以及候选模式在所述模板上的代价,确定至少两个预测模式;
根据所述至少两个预测模式分别在所述子模板的代价,确定所述至少两个预测模式分别在所述当前块上的权重;
根据所述至少两个预测模式分别在所述当前块上的权重,确定所述当前块的帧内预测值。
在一些可选的实施例中,还包括划分单元,用于将所述当前块分为至少两个子块。
其中,确定单元720具体用于:
根据所述至少两个预测模式在所述子模板的代价,确定所述至少两个预测模式分别在第一子块的权重,其中,所述至少两个子块包括所述第一子块;
根据所述至少两个预测模式分别在所述第一子块上的权重,确定所述当前块的帧内预测值。
在一些可选的实施例中,所述至少两个子模板包括与所述当前块左侧相邻、上侧相邻、左上、左下和右上的像素块中的至少一种。
在一些可选的实施例中,所述当前块包括编码单元CU或预测单元PU。
应理解,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,在该实施例中帧内预测的装置700可以对应于执行本申请实施例的方法400的相应主体,并且帧内预测的装置700中的各个模块的前述和其它操作和/或功能分别为了实现图12中的各个方法,或图12中的方法中的相应流程,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的装置和系统。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
如图16是本申请实施例提供的电子设备800的示意性框图。
如图16所示,该电子设备800可包括:
存储器810和处理器820,该存储器810用于存储计算机程序,并将该程序代码传输给该处理器820。换言之,该处理器820可以从存储器810中调用并运行计算机程序,以实现本申请实施例中的帧内预测的方法。
例如,该处理器820可用于根据该计算机程序中的指令执行上述方法300、400或500中的步骤。
在本申请的一些实施例中,该处理器820可以包括但不限于:
通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
在本申请的一些实施例中,该存储器810包括但不限于:
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM, SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在本申请的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器810中,并由该处理器820执行,以完成本申请提供的编码方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该电子设备800中的执行过程。
可选的,如图8所示,该电子设备800还可包括:
收发器830,该收发器830可连接至该处理器820或存储器810。
其中,处理器820可以控制该收发器830与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器830可以包括发射机和接收机。收发器830还可以进一步包括天线,天线的数量可以为一个或多个。
应当理解,该电子设备800中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
根据本申请的一个方面,提供了一种通信装置,包括处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行所述存储器中存储的计算机程序,使得所述编码器执行上述方法实施例的方法。
根据本申请的一个方面,提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
根据本申请的另一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方法实施例的方法。
换言之,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
应理解,在本申请实施例中,“与A对应的B”表示B与A相关联。在一种实现方式中,可以根据A确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
在本申请的描述中,除非另有说明,“至少一个”是指一个或多个,“多个”是指两个或多于两个。另外,“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
还应理解,本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。
还应理解,说明书中与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执 行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。

Claims (13)

  1. 一种帧内预测的方法,应用于编码器,其特征在于,包括:
    获取当前块的预测模式参数,所述预测模式参数用于指示使用基于模板的帧内模式导出TIMD方式确定所述当前块的帧内预测值;
    确定所述当前块的模板,所述模板包括至少两个子模板;
    根据候选模式在所述至少两个子模板中的部分子模板上的代价,确定预测模式;
    根据所述预测模式,确定所述当前块的帧内预测值。
  2. 根据权利要求1所述的方法,其特征在于,所述预测模式在所述模板上的代价不超过第一值,其中,所述第一值为预设阈值,或第一预测模式在所述模板上的代价的整数倍,所述第一预测模式为在所述模板上的代价最小的模式。
  3. 根据权利要求1所述的方法,其特征在于,所述根据候选模式在所述至少两个子模板中的部分子模板上的代价,确定预测模式,包括:
    根据候选模式在所述至少两个子模板中的部分子模板上的代价,以及候选模式在所述模板上的代价,确定至少两个预测模式;
    其中,所述根据所述预测模式,确定所述当前块的帧内预测值,包括:
    根据所述至少两个预测模式分别在所述子模板的代价,确定所述至少两个预测模式分别在所述当前块上的权重;
    根据所述至少两个预测模式分别在所述当前块上的权重,确定所述当前块的帧内预测值。
  4. 根据权利要求3所述的方法,其特征在于,还包括:
    将所述当前块分为至少两个子块;
    其中,根据所述至少两个预测模式在所述当前块的代价,确定所述至少两个预测模式分别在所述当前块的权重,包括:
    根据所述至少两个预测模式在所述子模板的代价,确定所述至少两个预测模式分别在第一子块的权重,其中,所述至少两个子块包括所述第一子块;
    其中,所述根据所述至少两个预测模式分别在所述当前块上的权重,确定所述当前块的帧内预测值,包括:
    根据所述至少两个预测模式分别在所述第一子块上的权重,确定所述当前块的帧内预测值。
  5. 根据权利要求1所述的方法,其特征在于,所述至少两个子模板包括与所述当前块左侧相邻、上侧相邻、左上、左下和右上的像素块中的至少一种。
  6. 根据权利要求1所述的方法,其特征在于,所述当前块包括编码单元CU或预测单元PU。
  7. 一种帧内预测的方法,应用于解码器,其特征在于,包括:
    获取当前块的预测模式参数,所述预测模式参数用于指示使用基于模板的帧内模式导出TIMD方式确定所述当前块的帧内预测值;
    确定所述当前块的模板,所述模板包括至少两个子模板;
    根据候选模式在所述至少两个子模板中的部分子模板上的代价,确定预测模式;
    根据所述预测模式,确定所述当前块的帧内预测值。
  8. 一种编码器,其特征在于,包括:
    获取单元,用于获取当前块的预测模式参数,所述预测模式参数用于指示使用基于模板的帧内模式导出TIMD方式确定所述当前块的帧内预测值;
    确定单元,用于确定所述当前块的模板,所述模板包括至少两个子模板;
    所述确定单元还用于根据候选模式在所述至少两个子模板中的部分子模板上的代价,确定预测模式;
    所述确定单元还用于根据所述预测模式,确定所述当前块的帧内预测值。
  9. 一种解码器,其特征在于,包括:
    获取单元,用于获取当前块的预测模式参数,所述预测模式参数用于指示使用基于模板的帧内模式导出TIMD方式确定所述当前块的帧内预测值;
    确定单元,用于确定所述当前块的模板,所述模板包括至少两个子模板;
    所述确定单元还用于根据候选模式在所述至少两个子模板中的部分子模板上的代价,确定预测模式;
    所述确定单元还用于根据所述预测模式,确定所述当前块的帧内预测值。
  10. 一种编解码系统,其特征在于,包括如权利要求8所述的编码器和如权利要求9所示的解码器。
  11. 一种电子设备,其特征在于,包括处理器和存储器;
    所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,使得所述电子设备执行如权利要求1-7任一项所述的方法。
  12. 一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行如权利要求1-7任一项所述的方法。
  13. 一种计算机程序产品,其特征在于,包括计算机程序代码,当所述计算机程序代码被电子设备运行时,使得所述电子设备执行权利要求1-7中任一项所述的方法。
CN202180102584.1A 2021-09-27 2021-09-27 帧内预测的方法、编码器、解码器和编解码系统 Pending CN117981301A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/121044 WO2023044916A1 (zh) 2021-09-27 2021-09-27 帧内预测的方法、编码器、解码器和编解码系统

Publications (1)

Publication Number Publication Date
CN117981301A true CN117981301A (zh) 2024-05-03

Family

ID=85719906

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180102584.1A Pending CN117981301A (zh) 2021-09-27 2021-09-27 帧内预测的方法、编码器、解码器和编解码系统

Country Status (2)

Country Link
CN (1) CN117981301A (zh)
WO (1) WO2023044916A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102045554A (zh) * 2009-10-22 2011-05-04 浙江大学 视频和图像的空域预测方法及装置
US11647222B2 (en) * 2018-06-18 2023-05-09 Industry Academy Cooperation Foundation Of Sejong University Method and apparatus for encoding/decoding image
CN110662033B (zh) * 2018-06-28 2021-11-23 杭州海康威视数字技术股份有限公司 一种解码、编码方法及其设备

Also Published As

Publication number Publication date
WO2023044916A1 (zh) 2023-03-30

Similar Documents

Publication Publication Date Title
US11876979B2 (en) Image encoding device, image decoding device, image encoding method, image decoding method, and image prediction device
TWI759389B (zh) 用於視訊寫碼之低複雜度符號預測
CN113612994B (zh) 具有仿射运动补偿的视频编解码的方法
RU2699258C2 (ru) Способ прогнозирования изображения и устройство прогнозирования изображения
US10057592B2 (en) Video encoding and decoding
CN111373749B (zh) 视频编码和解码中的低复杂度双向帧内预测的方法和装置
CN110933411A (zh) 用于帧内编码的邻近的相邻块的选择
TW201739252A (zh) 具有仿射運動補償的視訊編碼的方法以及裝置
US11212554B2 (en) Method and apparatus for low-complexity bi-directional intra prediction in video encoding and decoding
CN106604036B (zh) 数据编码设备和数据编码方法
GB2519514A (en) Method and apparatus for displacement vector component prediction in video coding and decoding
CN104604232A (zh) 用于编码多视点图像的方法及装置,以及用于解码多视点图像的方法及装置
JP7311635B2 (ja) コーデック方法、デバイス及びその機器
US11245905B2 (en) Method and apparatus for blended intra prediction
WO2020063599A1 (zh) 图像预测方法、装置以及相应的编码器和解码器
US20140219355A1 (en) Motion estimation device
US20130294511A1 (en) Methods and Devices for Intra Coding of Video
CN110475116B (zh) 一种运动矢量导出方法、装置及电子设备
CN117981301A (zh) 帧内预测的方法、编码器、解码器和编解码系统
CN118020295A (zh) 帧内预测的方法、编码器、解码器和编解码系统
CN117981299A (zh) 帧内预测的方法、编码器、解码器和编解码系统
CN112806006B (zh) 使用由预定义准则确定的参考样本以编解码的方法和设备
CN105812819B (zh) 执行混成多重假设移动补偿预测的方法以及装置
WO2023050370A1 (zh) 帧内预测的方法、解码器、编码器和编解码系统
KR20190027406A (ko) 계층적 임의 영상 블록 분할 부/복호화 방법 및 장치

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication