CN110868602B - 视频编码器、视频解码器及相应方法 - Google Patents

视频编码器、视频解码器及相应方法 Download PDF

Info

Publication number
CN110868602B
CN110868602B CN201810992362.1A CN201810992362A CN110868602B CN 110868602 B CN110868602 B CN 110868602B CN 201810992362 A CN201810992362 A CN 201810992362A CN 110868602 B CN110868602 B CN 110868602B
Authority
CN
China
Prior art keywords
motion vector
block
control point
current
candidate motion
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.)
Active
Application number
CN201810992362.1A
Other languages
English (en)
Other versions
CN110868602A (zh
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201810992362.1A priority Critical patent/CN110868602B/zh
Priority to PCT/CN2019/079955 priority patent/WO2020042604A1/zh
Publication of CN110868602A publication Critical patent/CN110868602A/zh
Application granted granted Critical
Publication of CN110868602B publication Critical patent/CN110868602B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/567Motion estimation based on rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding

Landscapes

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

Abstract

本发明实施例提供一种视频编码器、视频解码器及相应方法,该方法包括:解析码流,以得到索引,索引用于指示当前解码块的目标候选运动矢量组;根据索引,从候选运动矢量列表中确定目标候选运动矢量组,如果第一相邻仿射解码块为四参数仿射解码块,且第一相邻仿射解码块位于当前解码块的上方CTU,则候选运动矢量列表包括第一组候选运动矢量预测值,第一组候选运动矢量预测值是基于第一相邻仿射解码块的左下控制点和右下控制点得到的;基于目标候选运动矢量组得到当前解码块的像素预测值。采用本发明实施例,能够减少内存读取,从而提提升编解码性能。

Description

视频编码器、视频解码器及相应方法
技术领域
本申请涉及视频编解码技术领域,尤其涉及一种视频图像的帧间预测方法、装置以及相应的编码器和解码器。
背景技术
数字视频能力可并入到多种多样的装置中,包含数字电视、数字直播***、无线广播***、个人数字助理(PDA)、膝上型或桌上型计算机、平板计算机、电子图书阅读器、数码相机、数字记录装置、数字媒体播放器、视频游戏装置、视频游戏控制台、蜂窝式或卫星无线电电话(所谓的“智能电话”)、视频电话会议装置、视频流式传输装置及其类似者。数字视频装置实施视频压缩技术,例如,在由MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4第10部分高级视频编码(AVC)定义的标准、视频编码标准H.265/高效视频编码(HEVC)标准以及此类标准的扩展中所描述的视频压缩技术。视频装置可通过实施此类视频压缩技术来更有效率地发射、接收、编码、解码和/或存储数字视频信息。
视频压缩技术执行空间(图像内)预测和/或时间(图像间)预测以减少或去除视频序列中固有的冗余。对于基于块的视频编码,视频条带(即,视频帧或视频帧的一部分)可分割成若干图像块,所述图像块也可被称作树块、编码单元(CU)和/或编码节点。使用关于同一图像中的相邻块中的参考样本的空间预测来编码图像的待帧内编码(I)条带中的图像块。图像的待帧间编码(P或B)条带中的图像块可使用相对于同一图像中的相邻块中的参考样本的空间预测或相对于其它参考图像中的参考样本的时间预测。图像可被称作帧,且参考图像可被称作参考帧。
其中,包含高效视频编码(HEVC)标准在内的各种视频编码标准提出了用于图像块的预测性编码模式,即基于已经编码的视频数据块来预测当前待编码的块。在帧内预测模式中,基于与当前块在相同的图像中的一或多个先前经解码相邻块来预测当前块;在帧间预测模式中,基于不同图像中的已经解码块来预测当前块。
运动矢量预测是一种影响编/解码性能的关键技术。现有运动矢量预测过程中,针对画面中的平动物体有基于平动运动模型的运动矢量预测方法;针对非平动的物体有基于运动模型的运动矢量预测方法和基于控制点组合的运动矢量预测方法。其中,基于运动模型的运动矢量预测方法读取的内存较多,从而导致编/解码速度较慢。如何降低运动矢量预测过程中的内存读取量是本领域技术人员正在研究的技术问题。
发明内容
本申请实施例提供一种视频图像的帧间预测方法、装置及相应的编码器和编码器,一定程度上降低内存的读取量,从而提高编编码性能。
第一方面,本申请实施例公开了一种编码方法,该方法包括:根据率失真代价准则,从候选运动矢量列表(例如,仿射变换候选运动矢量列表)中确定目标候选运动矢量组;所述目标候选运动矢量组表示当前编码块(可以具体为当前仿射编码块)的一组控制点的运动矢量预测值,其中,如果第一相邻仿射编码块为四参数仿射编码块,且所述第一相邻仿射编码块位于所述当前编码块的上方编码树单元CTU,则所述候选运动矢量列表包括第一组候选运动矢量预测值,所述第一组候选运动矢量预测值是基于所述第一相邻仿射编码块的左下控制点和右下控制点得到的;可选的,其中候选运动矢量列表的构建方式可以为:按照相邻块A、相邻块B、相邻块C、相邻块D、相邻块E(如图7A)的顺序确定当前编码块的一个或多个相邻仿射编码块,所述一个或多个相邻仿射编码块包括第一相邻仿射编码块;然后若所述第一相邻仿射编码块为四参数仿射编码块,则基于第一相邻仿射编码块的左下控制点和右下控制点采用第一仿射模型得到所述当前编码块的第一组控制点的运动矢量预测值,其中所述当前编码块的第一组控制点的运动矢量预测值作为所述候选运动矢量列表的第一组候选运动矢量;通过以上方式确定目标候选运动矢量组之后,将与所述目标候选运动矢量对应的索引编入待传输的码流(可选的,当候选运动矢量列表的长度为1时,不需索引来指示该目标运动矢量组)。
在上述方法中,候选运动矢量列表中可能只有一个候选运动矢量组,也可能有多个候选运动矢量组,其中,每个候选运动矢量组可以为一个运动矢量二元组或者运动矢量三元组。当存在多个候选运动矢量组时,该第一组候选运动矢量预测值为该多个候选运动矢量组中的一个候选运动矢量组,该多个候选运动矢量组中的其他候选运动矢量组的生成原理可以与第一组候选运动矢量预测值的生成原理相同,也可以与第一组候选运动矢量预测值的生成原理不同。进一步地,上述目标候选运动矢量组为根据率失真代价准则,从候选运动矢量列表中选择出的最优的候选运动矢量组,如果该第一组候选运动矢量预测值是最优的,那么,选择出的目标候选运动矢量组即为第一组候选运动矢量预测值;如果该第一组候选运动矢量预测值不是最优的,那么,选择出的目标候选运动矢量组不是第一组候选运动矢量预测值。上述第一相邻仿射编码块为该当前编码块的相邻块中的某一个四参数仿射编码块,具体为哪一个此处不作限定,以图7A为,可能是其中的相邻块A,或者相邻块B,或者其他相邻块。除此之外,本申请实施例其他地方出现的“第一”、“第二”、“第三”等都表示某一个的意思,其中,“第一”表示的某一个、“第二”表示的某一个、“第三”表示的某一个各指代不同的对象,例如,假若出现了第一组控制点和第二组控制点,那么第一组控制点和第二组控制点各指代不同的控制点;另外,本申请实施例中的“第一”、“第二”等也没有先后次序的含义。
可以理解的是,当所述第一相邻仿射编码块所在的编码树单元CTU在所述当前编码块位置的上方时,该第一相邻仿射编码块最下方控制点的信息已经从内存中读取过;因此上述方案在根据第一相邻仿射编码块的第一组控制点构建候选运动矢量的过程中,该第一组控制点包括所述第一相邻仿射编码块的左下控制点和右下控制点;而不是像现有技术那样固定将第一相邻编码块的左上控制点、右上控制点和左下控制点作为第一组控制点(或者固定将第一相邻编码块的左上控制点和右上控制点作为第一组控制点)。因此采用本申请中确定第一组控制点的方法,第一组控制点的信息(例如,位置坐标、运动矢量等)很大概率上可以直接复用从内存中读取过的信息,从而减少了内存的读取,提高了编码性能。另外,由于特地规定第一相邻仿射编码块为四参数仿射编码块,因此在根据第一相邻仿射编码块的组控制点构建候选运动矢量时,只需用到第一相邻仿射编码块的左下控制点和右下控制点即可,不需要再用到额外的控制点,因此进一步保证了内存读取不会太高。
在一种可能的实现方式中,如果所述当前编码块为四参数仿射编码块,则所述第一组候选运动矢量预测值用于表示所述当前编码块的左上控制点和右上控制点的运动矢量预测值,例如,将所述当前编码块的左上控制点和右上控制点的位置坐标代入第一仿射模型,从而得到当前编码块的左上控制点和右上控制点的运动矢量预测值,其中,所述第一仿射模型是基于所述第一相邻仿射编码块的左下控制点和右下控制点的运动矢量及位置坐标确定的。
如果所述当前编码块为六参数仿射编码块,则所述第一组候选运动矢量预测值用于表示所述当前编码块的左上控制点、右上控制点和左下定点控制点的运动矢量预测值。例如,将所述当前编码块的左上控制点、右上控制点和左下定点控制点的位置坐标代入第一仿射模型,从而得到当前编码块的左上控制点、右上控制点和左下定点控制点的运动矢量预测值。
在又一种可能的实现方式中,在先进运动矢量预测AMVP模式下,还包括:以所述目标候选运动矢量组为搜索起始点在预设搜索范围内按照率失真代价准则搜索代价最低的一组控制点的运动矢量;然后,确定所述一组控制点的运动矢量与所述目标候选运动矢量组之间的运动矢量差值MVD,例如,假若第一组控制点包括第一控制点和第二控制点,那么需要确定第一控制点的运动矢量与所述目标候选运动矢量组表示的一组控制点中的第一控制点的运动矢量预测值的运动矢量差值MVD,以及确定第二控制点的运动矢量与所述目标候选运动矢量组表示的一组控制点中的第二控制点的运动矢量预测值的运动矢量差值MVD。在这种情况下,所述将与所述目标候选运动矢量组对应的索引编入待传输的码流,可以具体包括:将所述MVD和与所述目标候选运动矢量组对应的索引编入待传输的码流。
在又一种可选的方案中,在融合merge模式下,所述将与所述目标候选运动矢量组对应的索引编入待传输的码流,可以具体包括:将与所述目标候选运动矢量组、参考帧索引和预测方向对应的索引编入待传输的码流。
在一种可能的实现方式中,所述第一相邻仿射编码块的左下控制点的位置坐标(x6,y6)和所述右下控制点的位置坐标(x7,y7)均为根据所述第一相邻仿射编码块的左上控制点的位置坐标(x4,y4)计算得到的,其中,所述第一相邻仿射编码块的左下控制点的位置坐标(x6,y6)为(x4,y4+cuH),所述第一相邻仿射编码块的右下控制点的位置坐标(x7,y7)为(x4+cuW,y4+cuH),cuW为所述第一相邻仿编码块的宽度,cuH为所述第一相邻仿射编码块的高度;另外,所述第一相邻仿射编码块的左下控制点的运动矢量为所述第一相邻仿射编码块的左下子块的运动矢量,所述第一相邻仿射编码块的右下控制点的运动矢量为第一相邻仿射编码块的右下子块的运动矢量。可以看出,第一相邻仿射编码块的左下控制点的位置坐标和所述右下控制点的位置坐标均是推导得到的,而不是从内存中读取得到的,因此采用该方法能够进一步减少内存的读取,提高了编码性能。作为另外一种可选方案,也可以在内存中预选存储左下控制点和右下控制点的位置坐标,后续要用的时候从内存中读取。
在又一种可选的方案中,所述根据率失真代价准则,从候选运动矢量列表中确定目标候选运动矢量组之后,该方法还包括:基于所述目标候选运动矢量组得到所述当前编码块的一个或多个子块的运动矢量;基于所述当前编码块的一个或多个子块的运动矢量,预测得到所述当前编码块的像素预测值。可选的,在基于所述目标候选运动矢量组得到所述当前编码块的一个或多个子块的运动矢量时,若所述当前编码块的下边界与所述当前编码块所在的CTU的下边界重合,则所述当前编码块的左下角的子块的运动矢量为根据所述目标候选运动矢量组和所述当前编码块的左下角的位置坐标(0,H)计算得到,所述当前编码块的右下角的子块的运动矢量为根据所述目标候选运动矢量组和所述当前编码块的右下角的位置坐标(W,H)计算得到。例如,根据目标候选运动矢量构建仿射模型,然后将当前编码块的左下角的位置坐标(0,H)代入到该仿射模型即可得到当前编码块的左下角的子块的运动矢量(而不是将左下角的子块的中心点坐标代入该仿射模型进行计算),将当前编码块的右下角的位置坐标(W,H)代入到该仿射模型即可得到当前编码块的右下角的子块的运动矢量(而不是将右下角的子块的中心点坐标代入该仿射模型进行计算)。这样一来,该当前编码块的左下控制点的运动矢量和右下控制点的运动矢量被用到时(例如,后续其他块基于该当前块的左下控制点和右下控制点的运动矢量构建该其他块的候选运动矢量列表),用到的是准确的值而不是估算值;其中,W为当前编码块的宽,H为当前编码块的高。
第二方面,本申请实施例提供一种视频编码器,包括用于实施第一方面的任意一种方法的若干个功能单元。举例来说,视频编码器可以包括:
帧间预测单元,用于根据率失真代价准则,从候选运动矢量列表中确定目标候选运动矢量组;所述目标候选运动矢量组表示当前编码块的一组控制点的运动矢量预测值;
熵编码单元,用于将与所述目标候选运动矢量对应的索引编入码流,并传输所述码流;
其中,如果第一相邻仿射编码块为四参数仿射编码块,且所述第一相邻仿射编码块位于所述当前编码块的上方编码树单元CTU,则所述候选运动矢量列表包括第一组候选运动矢量预测值,所述第一组候选运动矢量预测值是基于所述第一相邻仿射编码块的左下控制点和右下控制点得到的。
第三方面,本申请实施例提供一种用于编码视频数据的设备,所述设备包括:
存储器,用于存储码流形式的视频数据;
视频编码器,用于根据率失真代价准则,从候选运动矢量列表中确定目标候选运动矢量组;所述目标候选运动矢量组表示当前编码块的一组控制点的运动矢量预测值;以及用于将与所述目标候选运动矢量对应的索引编入码流,并传输所述码流;其中,如果第一相邻仿射编码块为四参数仿射编码块,且所述第一相邻仿射编码块位于所述当前编码块的上方编码树单元CTU,则所述候选运动矢量列表包括第一组候选运动矢量预测值,所述第一组候选运动矢量预测值是基于所述第一相邻仿射编码块的左下控制点和右下控制点得到的。
第四方面,本申请实施例提供一种编码设备,包括:相互耦合的非易失性存储器和处理器,所述处理器调用存储在所述存储器中的程序代码以执行第一方面的任意一种方法的部分或全部步骤。
第五方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储了程序代码,其中,所述程序代码包括用于执行第一方面的任意一种方法的部分或全部步骤的指令。
第六方面,本申请实施例提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行第一方面的任意一种方法的部分或全部步骤。
应当理解的是,本申请的第二至第六方面与本申请的第一方面的技术方案一致,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
第七方面,本申请实施例公开了一种解码方法,该方法包括:解析码流,以得到索引,所述索引用于指示当前解码块(可以具体为当前仿射解码块)的目标候选运动矢量组;接着根据所述索引,从候选运动矢量列表(例如,仿射变换候选运动矢量列表)中确定所述目标候选运动矢量组(可选的,当候选运动矢量列表的长度为1时,不需要解析码流得到索引,直接可以确定目标运动矢量组),所述目标候选运动矢量组表示当前解码块的一组控制点的运动矢量预测值;其中,如果第一相邻仿射解码块为四参数仿射解码块,且所述第一相邻仿射解码块位于所述当前解码块的上方解码树单元CTU,则所述候选运动矢量列表包括第一组候选运动矢量预测值,所述第一组候选运动矢量预测值是基于所述第一相邻仿射解码块的左下控制点和右下控制点得到的;可选的,其中候选运动矢量列表的构建方式可以为:按照相邻块A、相邻块B、相邻块C、相邻块D、相邻块E(如图7A)的顺序确定当前解码块的一个或多个相邻仿射解码块,所述一个或多个相邻仿射解码块包括第一相邻仿射解码块;然后若所述第一相邻仿射解码块为四参数仿射解码块,则基于第一相邻仿射解码块的左下控制点和右下控制点采用第一仿射模型得到所述当前解码块的第一组控制点的运动矢量预测值,其中所述当前编码块的第一组控制点的运动矢量预测值作为所述候选运动矢量列表的第一组候选运动矢量;通过以上方式确定目标候选运动矢量组之后,将与所述目标候选运动矢量对应的索引编入待传输的码流(可选的,当候选运动矢量列表的长度为1时,不需索引来指示该目标运动矢量组)。
在上述方法中,候选运动矢量列表中可能只有一个候选运动矢量组,也可能有多个候选运动矢量组,其中,每个候选运动矢量组可以为一个运动矢量二元组或者运动矢量三元组。当存在多个候选运动矢量组时,该第一组候选运动矢量预测值为该多个候选运动矢量组中的一个候选运动矢量组,该多个候选运动矢量组中的其他候选运动矢量组的生成原理可以与第一组候选运动矢量预测值的生成原理相同,也可以与第一组候选运动矢量预测值的生成原理不同。进一步地,上述目标候选运动矢量组为根据率失真代价准则,从候选运动矢量列表中选择出的最优的候选运动矢量组,如果该第一组候选运动矢量预测值是最优的,那么,选择出的目标候选运动矢量组即为第一组候选运动矢量预测值;如果该第一组候选运动矢量预测值不是最优的,那么,选择出的目标候选运动矢量组不是第一组候选运动矢量预测值。上述第一相邻仿射解码块为该当前解码块的相邻块中的某一个四参数仿射解码块,具体为哪一个此处不作限定,以图7A为,可能是其中的相邻块A,或者相邻块B,或者其他相邻块。除此之外,本申请实施例其他地方出现的“第一”、“第二”、“第三”等都表示某一个的意思,其中,“第一”表示的某一个、“第二”表示的某一个、“第三”表示的某一个各指代不同的对象,例如,假若出现了第一组控制点和第二组控制点,那么第一组控制点和第二组控制点各指代不同的控制点;另外,本申请实施例中的“第一”、“第二”等也没有先后次序的含义。
可以理解的是,当所述第一相邻仿射解码块所在的解码树单元CTU在所述当前解码块位置的上方时,该第一相邻仿射解码块最下方控制点的信息已经从内存中读取过;因此上述方案在根据第一相邻仿射解码块的第一组控制点构建候选运动矢量的过程中,该第一组控制点包括所述第一相邻仿射解码块的左下控制点和右下控制点;而不是像现有技术那样固定将第一相邻解码块的左上控制点、右上控制点和左下控制点作为第一组控制点(或者固定将第一相邻解码块的左上控制点和右上控制点作为第一组控制点)。因此采用本申请中确定第一组控制点的方法,第一组控制点的信息(例如,位置坐标、运动矢量等)很大概率上可以直接复用从内存中读取过的信息,从而减少了内存的读取,提高了解码性能。另外,由于特地规定第一相邻仿射解码块为四参数仿射解码块,因此在根据第一相邻仿射解码块的组控制点构建候选运动矢量时,只需用到第一相邻仿射解码块的左下控制点和右下控制点即可,不需要再用到额外的控制点,因此进一步保证了内存读取不会太高。
在一种可能的实现方式中,如果所述当前解码块为四参数仿射解码块,则所述第一组候选运动矢量预测值用于表示所述当前解码块的左上控制点和右上控制点的运动矢量预测值,例如,将所述当前解码块的左上控制点和右上控制点的位置坐标代入第一仿射模型,从而得到当前解码块的左上控制点和右上控制点的运动矢量预测值,其中,所述第一仿射模型是基于所述第一相邻仿射解码块的左下控制点和右下控制点的运动矢量及位置坐标确定的。
如果所述当前解码块为六参数仿射解码块,则所述第一组候选运动矢量预测值用于表示所述当前解码块的左上控制点、右上控制点和左下定点控制点的运动矢量预测值。例如,将所述当前解码块的左上控制点、右上控制点和左下定点控制点的位置坐标代入第一仿射模型,从而得到当前解码块的左上控制点、右上控制点和左下定点控制点的运动矢量预测值。
在又一种可选的方案中,所述基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量,具体为:基于第二仿射模型得到所述当前解码块的一个或多个子块的运动矢量(例如,将该一个或者多个子块的中心点的坐标代入该第二仿射模型,从而得到一个或多个子块的运动矢量),其中,所述第二仿射模型是基于所述目标候选运动矢量组和所述当前解码块的一组控制点的位置坐标确定的。
在一种可选的方案中,在先进运动矢量预测AMVP模式下,所述基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量,可以具体包括:基于从所述码流中解析得到的运动矢量差值MVD与所述索引指示的目标候选运动矢量组,得到新的候选运动矢量组;然后基于所述新的候选运动矢量组,得到所述当前解码块的一个或多个子块的运动矢量,例如,先基于所述新的候选运动矢量组和所述当前解码块的一组控制点的位置坐标确定第二仿射模型,再基于第二仿射模型得到所述当前解码块的一个或多个子块的运动矢量。
在又一种可能的实现方式中,在融合merge模式下,所述基于所述当前解码块的一个或多个子块的运动矢量,预测得到所述当前解码块的像素预测值,可以具体包括:根据所述当前解码块的一个或多个子块的运动矢量,以及所述索引指示的参考帧索引和预测方向,预测得到所述当前解码块的像素预测值。
在又一种可选的方案中,所述第一相邻仿射解码块的左下控制点的位置坐标(x6,y6)和所述右下控制点的位置坐标(x7,y7)均为根据所述第一相邻仿射解码块的左上控制点的位置坐标(x4,y4)计算得到的,其中,所述第一相邻仿射解码块的左下控制点的位置坐标(x6,y6)为(x4,y4+cuH),所述第一相邻仿射解码块的右下控制点的位置坐标(x7,y7)为(x4+cuW,y4+cuH),cuW为所述第一相邻仿解码块的宽度,cuH为所述第一相邻仿射解码块的高度;另外,所述第一相邻仿射解码块的左下控制点的运动矢量为所述第一相邻仿射解码块的左下子块的运动矢量,所述第一相邻仿射解码块的右下控制点的运动矢量为第一相邻仿射解码块的右下子块的运动矢量。可以看出,第一相邻仿射解码块的左下控制点的位置坐标和所述右下控制点的位置坐标均是推导得到的,而不是从内存中读取得到的,因此采用该方法能够进一步减少内存的读取,提高了解码性能。作为另外一种可选方案,也可以在内存中预选存储左下控制点和右下控制点的位置坐标,后续要用的时候从内存中读取。
在又一种可选的方案中,在基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量时,若所述当前解码块的下边界与所述当前解码块所在的CTU的下边界重合,则所述当前解码块的左下角的子块的运动矢量为根据所述目标候选运动矢量组和所述当前解码块的左下角的位置坐标(0,H)计算得到,所述当前解码块的右下角的子块的运动矢量为根据所述目标候选运动矢量组和所述当前解码块的右下角的位置坐标(W,H)计算得到。例如,根据目标候选运动矢量构建仿射模型,然后将当前解码块的左下角的位置坐标(0,H)代入到该仿射模型即可得到当前解码块的左下角的子块的运动矢量(而不是将左下角的子块的中心点坐标代入该仿射模型进行计算),将当前解码块的右下角的位置坐标(W,H)代入到该仿射模型即可得到当前解码块的右下角的子块的运动矢量(而不是将右下角的子块的中心点坐标代入该仿射模型进行计算)。这样一来,该当前解码块的左下控制点的运动矢量和右下控制点的运动矢量被用到时(例如,后续其他块基于该当前块的左下控制点和右下控制点的运动矢量构建该其他块的候选运动矢量列表),用到的是准确的值而不是估算值。其中,W为该当前解码块的宽,H为该当前解码块的高。
第八方面,本申请实施例提供一种视频解码器,该视频解码器包括:
熵解码单元,用于解析码流,以得到索引,所述索引用于指示当前解码块的目标候选运动矢量组;
帧间预测单元,用于根据所述索引,从候选运动矢量列表中确定所述目标候选运动矢量组,所述目标候选运动矢量组表示当前解码块的一组控制点的运动矢量预测值,其中,如果第一相邻仿射解码块为四参数仿射解码块,且所述第一相邻仿射解码块位于所述当前解码块的上方解码树单元CTU,则所述候选运动矢量列表包括第一组候选运动矢量预测值,所述第一组候选运动矢量预测值是基于所述第一相邻仿射解码块的左下控制点和右下控制点得到的;以及基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量;基于所述当前解码块的一个或多个子块的运动矢量,预测得到所述当前解码块的像素预测值。
第九方面,本申请实施例提供一种用于解码视频数据的设备,所述设备包括:
存储器,用于存储码流形式的视频数据;
视频解码器,用于解析码流,以得到索引,所述索引用于指示当前解码块的目标候选运动矢量组;以及用于根据所述索引,从候选运动矢量列表中确定所述目标候选运动矢量组,所述目标候选运动矢量组表示当前解码块的一组控制点的运动矢量预测值,其中,如果第一相邻仿射解码块为四参数仿射解码块,且所述第一相邻仿射解码块位于所述当前解码块的上方解码树单元CTU,则所述候选运动矢量列表包括第一组候选运动矢量预测值,所述第一组候选运动矢量预测值是基于所述第一相邻仿射解码块的左下控制点和右下控制点得到的;以及基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量;基于所述当前解码块的一个或多个子块的运动矢量,预测得到所述当前解码块的像素预测值。
第十方面,本申请实施例提供一种解码设备,包括:相互耦合的非易失性存储器和处理器,所述处理器调用存储在所述存储器中的程序代码以执行第七方面的任意一种方法的部分或全部步骤。
第十一方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储了程序代码,其中,所述程序代码包括用于执行第七方面的任意一种方法的部分或全部步骤的指令。
第十二方面,本申请实施例提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行第七方面的任意一种方法的部分或全部步骤。
应当理解的是,本申请的第八至第十二方面与本申请的第七方面的技术方案一致,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1为本申请实施例中一种视频编码及解码***的示意性框图;
图2A为本申请实施例中一种视频编码器的示意性框图;
图2B为本申请实施例中一种视频解码器的示意性框图;
图3为本申请实施例中一种用于编码视频图像的帧间预测的方法的流程图;
图4为本申请实施例中一种用于解码视频图像的帧间预测的方法的流程图;
图5为本申请实施例中的一种当前图像块和参考块的运动信息示意图;
图6是本申请实施例提供的一种编码方法的流程示意图;
图7A是本申请实施例提供的一种相邻块的场景示意图;
图7B是本申请实施例提供的一种相邻块的场景示意图;
图8A是本申请实施例提供的一种运动补偿单元的结构示意图;
图8B是本申请实施例提供的又一种运动补偿单元的结构示意图;
图9是本申请实施例提供的一种解码方法的流程示意图;
图9A是本申请实施例提供的一种构建候选运动矢量列表的流程示意图;
图10是本身实施例提供的一种编码设备或解码设备的结构示意图;
图11是根据一示例性实施例的包含图2A的编码器100和/或图2B的解码器200的视频编码***1100。
具体实施方式
下面结合本申请实施例中的附图对本申请实施例进行描述。
非平动运动模型预测指在编解码端(例如,视频编码器和视频解码器两端)使用相同的运动模型推导出当前编/解码块内每一个子运动补偿单元(也称子块)的运动信息(如运动矢量),根据子运动补偿单元的运动信息进行运动补偿,得到预测块,从而提高预测效率。在推导当前编/解码块内的运动补偿单元(也称子块)的运动信息的过程中涉及基于运动模型的运动矢量预测,目前通常采用当前编/解码块的相邻仿射解码块的左上控制点、右上控制点、左下控制点的位置坐标和运动矢量推导仿射模型;然后根据该仿射模型推导该当前编/解码块的一组控制点的运动矢量预测值,以作为候选运动矢量列表中的一组候选运动矢量预测值。然而,运动矢量预测过程中用到的相邻仿射解码块的左上控制点、右上控制点、左下控制点的位置坐标和运动矢量,均需要实时从内存中读取,这会增加内存读取的压力。本申请实施例重点讲述如何减少内存读取压力,涉及对编解码端的优化,为了更好的理解本申请实施例的思想,下面首先对本申请实施例的应用场景进行介绍。
编码视频流,或者其一部分,诸如视频帧或者图像块可以使用视频流中的时间和空间相似性以改善编码性能。例如,视频流的当前图像块可以通过基于视频流中的先前已编码块预测用于当前图像块的运动信息,并识别预测块和当前图像块(即原始块)之间的差值(亦称为残差),从而基于先前已编码块对当前图像块进行编码。以这种方法,仅仅将用于产生当前图像块的残差和一些参数包括于数字视频输出位流中,而不是将当前图像块的整体包括于数字视频输出位流。这种技术可以称为帧间预测。
运动矢量是帧间预测过程中的一个重要参数,其表示先前已编码块相对于该当前编码块的空间位移。可以使用运动估算的方法,诸如运动搜索来获取运动矢量。初期的帧间预测技术,将表示运动矢量的位包括在编码的位流中,以允许解码器再现预测块,进而得到重建块。为了进一步的改善编码效率,后来又提出使用参考运动矢量差分地编码运动矢量,即取代编码运动矢量整体,而仅仅编码运动矢量和参考运动矢量之间的差值。在有些情况下,参考运动矢量可以是从在视频流中先前使用的运动矢量中选择出来的,选择先前使用的运动矢量编码当前的运动矢量可以进一步减少包括在编码的视频位流中的位数。
图1为本申请实施例中所描述的一种实例的视频译码***1的框图。如本文所使用,术语“视频译码器”一般是指视频编码器和视频解码器两者。在本申请中,术语“视频译码”或“译码”可一般地指代视频编码或视频解码。视频译码***1的视频编码器100和视频解码器200用于根据本申请提出的多种新的帧间预测模式中的任一种所描述的各种方法实例来预测当前经译码图像块或其子块的运动信息,例如运动矢量,使得预测出的运动矢量最大程度上接近使用运动估算方法得到的运动矢量,从而编码时无需传送运动矢量差值,从而进一步的改善编解码性能。
如图1中所示,视频译码***1包含源装置10和目的地装置20。源装置10产生经编码视频数据。因此,源装置10可被称为视频编码装置。目的地装置20可对由源装置10所产生的经编码的视频数据进行解码。因此,目的地装置20可被称为视频解码装置。源装置10、目的地装置20或两个的各种实施方案可包含一或多个处理器以及耦合到所述一或多个处理器的存储器。所述存储器可包含但不限于RAM、ROM、EEPROM、快闪存储器或可用于以可由计算机存取的指令或数据结构的形式存储所要的程序代码的任何其它媒体,如本文所描述。
源装置10和目的地装置20可以包括各种装置,包含桌上型计算机、移动计算装置、笔记型(例如,膝上型)计算机、平板计算机、机顶盒、例如所谓的“智能”电话等电话手持机、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机或其类似者。
目的地装置20可经由链路30从源装置10接收经编码视频数据。链路30可包括能够将经编码视频数据从源装置10移动到目的地装置20的一或多个媒体或装置。在一个实例中,链路30可包括使得源装置10能够实时将经编码视频数据直接发射到目的地装置20的一或多个通信媒体。在此实例中,源装置10可根据通信标准(例如无线通信协议)来调制经编码视频数据,且可将经调制的视频数据发射到目的地装置20。所述一或多个通信媒体可包含无线和/或有线通信媒体,例如射频(RF)频谱或一或多个物理传输线。所述一或多个通信媒体可形成基于分组的网络的一部分,基于分组的网络例如为局域网、广域网或全球网络(例如,因特网)。所述一或多个通信媒体可包含路由器、交换器、基站或促进从源装置10到目的地装置20的通信的其它设备。
在另一实例中,可将经编码数据从输出接口140输出到存储装置40。类似地,可通过输入接口240从存储装置40存取经编码数据。存储装置40可包含多种分布式或本地存取的数据存储媒体中的任一者,例如硬盘驱动器、蓝光光盘、DVD、CD-ROM、快闪存储器、易失性或非易失性存储器,或用于存储经编码视频数据的任何其它合适的数字存储媒体。
在另一实例中,存储装置40可对应于文件服务器或可保持由源装置10产生的经编码视频的另一中间存储装置。目的地装置20可经由流式传输或下载从存储装置40存取所存储的视频数据。文件服务器可为任何类型的能够存储经编码的视频数据并且将经编码的视频数据发射到目的地装置20的服务器。实例文件服务器包含网络服务器(例如,用于网站)、FTP服务器、网络附接式存储(NAS)装置或本地磁盘驱动器。目的地装置20可通过任何标准数据连接(包含因特网连接)来存取经编码视频数据。这可包含无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等),或适合于存取存储在文件服务器上的经编码视频数据的两者的组合。经编码视频数据从存储装置40的传输可为流式传输、下载传输或两者的组合。
本申请的运动矢量预测技术可应用于视频编解码以支持多种多媒体应用,例如空中电视广播、有线电视发射、***发射、串流视频发射(例如,经由因特网)、用于存储于数据存储媒体上的视频数据的编码、存储在数据存储媒体上的视频数据的解码,或其它应用。在一些实例中,视频译码***1可用于支持单向或双向视频传输以支持例如视频流式传输、视频回放、视频广播和/或视频电话等应用。
图1中所说明的视频译码***1仅为实例,并且本申请的技术可适用于未必包含编码装置与解码装置之间的任何数据通信的视频译码设置(例如,视频编码或视频解码)。在其它实例中,数据从本地存储器检索、在网络上流式传输等等。视频编码装置可对数据进行编码并且将数据存储到存储器,和/或视频解码装置可从存储器检索数据并且对数据进行解码。在许多实例中,由并不彼此通信而是仅编码数据到存储器和/或从存储器检索数据且解码数据的装置执行编码和解码。
在图1的实例中,源装置10包含视频源120、视频编码器100和输出接口140。在一些实例中,输出接口140可包含调节器/解调器(调制解调器)和/或发射器。视频源120可包括视频捕获装置(例如,摄像机)、含有先前捕获的视频数据的视频存档、用以从视频内容提供者接收视频数据的视频馈入接口,和/或用于产生视频数据的计算机图形***,或视频数据的此些来源的组合。
视频编码器100可对来自视频源120的视频数据进行编码。在一些实例中,源装置10经由输出接口140将经编码视频数据直接发射到目的地装置20。在其它实例中,经编码视频数据还可存储到存储装置40上,供目的地装置20以后存取来用于解码和/或播放。
在图1的实例中,目的地装置20包含输入接口240、视频解码器200和显示装置220。在一些实例中,输入接口240包含接收器和/或调制解调器。输入接口240可经由链路30和/或从存储装置40接收经编码视频数据。显示装置220可与目的地装置20集成或可在目的地装置20外部。一般来说,显示装置220显示经解码视频数据。显示装置220可包括多种显示装置,例如,液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或其它类型的显示装置。
尽管图1中未图示,但在一些方面,视频编码器100和视频解码器200可各自与音频编码器和解码器集成,且可包含适当的多路复用器-多路分用器单元或其它硬件和软件,以处置共同数据流或单独数据流中的音频和视频两者的编码。在一些实例中,如果适用的话,那么MUX-DEMUX单元可符合ITU H.223多路复用器协议,或例如用户数据报协议(UDP)等其它协议。
视频编码器100和视频解码器200各自可实施为例如以下各项的多种电路中的任一者:一或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、硬件或其任何组合。如果部分地以软件来实施本申请,那么装置可将用于软件的指令存储在合适的非易失性计算机可读存储媒体中,且可使用一或多个处理器在硬件中执行所述指令从而实施本申请技术。前述内容(包含硬件、软件、硬件与软件的组合等)中的任一者可被视为一或多个处理器。视频编码器100和视频解码器200中的每一者可包含在一或多个编码器或解码器中,所述编码器或解码器中的任一者可集成为相应装置中的组合编码器/解码器(编码解码器)的一部分。
本申请可大体上将视频编码器100称为将某些信息“发信号通知”或“发射”到例如视频解码器200的另一装置。术语“发信号通知”或“发射”可大体上指代用以对经压缩视频数据进行解码的语法元素和/或其它数据的传送。此传送可实时或几乎实时地发生。替代地,此通信可经过一段时间后发生,例如可在编码时在经编码位流中将语法元素存储到计算机可读存储媒体时发生,解码装置接着可在所述语法元素存储到此媒体之后的任何时间检索所述语法元素。
视频编码器100和视频解码器200可根据例如高效视频编码(HEVC)等视频压缩标准或其扩展来操作,并且可符合HEVC测试模型(HM)。或者,视频编码器100和视频解码器200也可根据其它业界标准来操作,所述标准例如是ITU-T H.264、H.265标准,或此类标准的扩展。然而,本申请的技术不限于任何特定编解码标准。
在一个实例中,一并参阅图3,视频编码器100用于:将与当前待编码的图像块相关的语法元素编码入数字视频输出位流(简称为位流或码流),这里将用于当前图像块帧间预测的语法元素简称为帧间预测数据;为了确定用于对当前图像块进行编码的帧间预测模式,视频编码器100还用于确定或选择(S301)上述候选帧间预测模式集合中用于对当前图像块进行帧间预测的帧间预测模式(例如选择多种新的帧间预测模式中编码当前图像块的码率失真代价折中或最小的帧间预测模式);以及基于确定的帧间预测模式,编码所述当前图像块(S303),这里的编码过程可以包括基于确定的帧间预测模式,预测所述当前图像块中一个或多个子块的运动信息(具体可以是每个子块或者所有子块的运动信息),并利用所述当前图像块中一个或多个子块的运动信息对所述当前图像块执行帧间预测;
应当理解的是,如果由基于本申请提出的新的帧间预测模式预测出的运动信息产生的预测块与当前待编码图像块(即原始块)之间的差值(即残差)为0,则视频编码器100中只需要将与当前待编码的图像块相关的语法元素编入位流(亦称为码流);反之,除了语法元素外,还需要将相应的残差编入位流。
在另一实例中,一并参阅图4,视频解码器200用于:从位流中解码出与当前待解码的图像块相关的语法元素(S401),当所述帧间预测数据指示采用候选帧间预测模式集合(即新的帧间预测模式)来对当前图像块进行预测时,确定所述候选帧间预测模式集合中用于对当前图像块进行帧间预测的帧间预测模式(S403),并基于确定的帧间预测模式解码所述当前图像块(S405),这里的解码过程可以包括基于确定的帧间预测模式,预测所述当前图像块中一个或多个子块的运动信息,并利用所述当前图像块中一个或多个子块的运动信息对所述当前图像块执行帧间预测。
可选的,如果所述帧间预测数据还包括用于指示所述当前图像块采用何种帧间预测模式的第二标识,视频解码器200用于确定所述第二标识指示的帧间预测模式为用于对所述当前图像块进行帧间预测的帧间预测模式;或者,如果所述帧间预测数据未包括用于指示所述当前图像块采用何种帧间预测模式的第二标识,视频解码器200用于确定用于非方向性的运动场的第一帧间预测模式为用于对所述当前图像块进行帧间预测的帧间预测模式。
图2A为本申请实施例中所描述的一种实例的视频编码器100的框图。视频编码器100用于将视频输出到后处理实体41。后处理实体41表示可处理来自视频编码器100的经编码视频数据的视频实体的实例,例如媒体感知网络元件(MANE)或拼接/编辑装置。在一些情况下,后处理实体41可为网络实体的实例。在一些视频编码***中,后处理实体41和视频编码器100可为单独装置的若干部分,而在其它情况下,相对于后处理实体41所描述的功能性可由包括视频编码器100的相同装置执行。在某一实例中,后处理实体41是图1的存储装置40的实例。
视频编码器100可根据本申请提出的包括模式0,1,2…或10的候选帧间预测模式集合中的任一种新的帧间预测模式执行视频图像块的编码,例如执行视频图像块的帧间预测。
在图2A的实例中,视频编码器100包括预测处理单元108、滤波器单元106、经解码图像缓冲单元(DPB)107、求和单元112、变换单元101、量化单元102和熵编码单元103。预测处理单元108包括帧间预测单元110和帧内预测单元109。为了图像块重构,视频编码器100还包含反量化单元104、反变换单元105和求和单元111。滤波器单元106既定表示一或多个环路滤波单元,例如去块滤波单元、自适应环路滤波单元(ALF)和样本自适应偏移(SAO)滤波单元。尽管在图2A中将滤波单元106示出为环路内滤波器,但在其它实现方式下,可将滤波单元106实施为环路后滤波器。在一种示例下,视频编码器100还可以包括视频数据存储单元、分割单元(图中未示意)。
视频数据存储单元可存储待由视频编码器100的组件编码的视频数据。可从视频源120获得存储在视频数据存储单元中的视频数据。DPB 107可为参考图像存储单元,其存储用于由视频编码器100在帧内、帧间译码模式中对视频数据进行编码的参考视频数据。视频数据存储单元和DPB 107可由多种存储单元装置中的任一者形成,例如包含同步DRAM(SDRAM)的动态随机存取存储单元(DRAM)、磁阻式RAM(MRAM)、电阻式RAM(RRAM),或其它类型的存储单元装置。视频数据存储单元和DPB 107可由同一存储单元装置或单独存储单元装置提供。在各种实例中,视频数据存储单元可与视频编码器100的其它组件一起在芯片上,或相对于那些组件在芯片外。
如图2A中所示,视频编码器100接收视频数据,并将所述视频数据存储在视频数据存储单元中。分割单元将所述视频数据分割成若干图像块,而且这些图像块可以被进一步分割为更小的块,例如基于四叉树结构或者二叉树结构的图像块分割。此分割还可包含分割成条带(slice)、片(tile)或其它较大单元。视频编码器100通常说明编码待编码的视频条带内的图像块的组件。所述条带可分成多个图像块(并且可能分成被称作片的图像块集合)。预测处理单元108可选择用于当前图像块的多个可能的译码模式中的一者,例如多个帧内译码模式中的一者或多个帧间译码模式中的一者,其中所述多个帧间译码模式包括但不限于本申请提出的模式0,1,2,3…10中的一个或多个。预测处理单元108可将所得经帧内、帧间译码的块提供给求和单元112以产生残差块,且提供给求和单元111以重构用作参考图像的经编码块。
预测处理单元108内的帧内预测单元109可相对于与待编码当前块在相同帧或条带中的一或多个相邻块执行当前图像块的帧内预测性编码,以去除空间冗余。预测处理单元108内的帧间预测单元110可相对于一或多个参考图像中的一或多个预测块执行当前图像块的帧间预测性编码以去除时间冗余。
具体的,帧间预测单元110可用于确定用于编码当前图像块的帧间预测模式。举例来说,帧间预测单元110可使用速率-失真分析来计算候选帧间预测模式集合中的各种帧间预测模式的速率-失真值,并从中选择具有最佳速率-失真特性的帧间预测模式。速率失真分析通常确定经编码块与经编码以产生所述经编码块的原始的未经编码块之间的失真(或误差)的量,以及用于产生经编码块的位速率(也就是说,位数目)。例如,帧间预测单元110可确定候选帧间预测模式集合中编码所述当前图像块的码率失真代价最小的帧间预测模式为用于对当前图像块进行帧间预测的帧间预测模式。下文将详细介绍帧间预测性编码过程,尤其是在本申请各种用于非方向性或方向性的运动场的帧间预测模式下,预测当前图像块中一个或多个子块(具体可以是每个子块或所有子块)的运动信息的过程。
帧间预测单元110用于基于确定的帧间预测模式,预测当前图像块中一个或多个子块的运动信息(例如运动矢量),并利用当前图像块中一个或多个子块的运动信息(例如运动矢量)获取或产生当前图像块的预测块。帧间预测单元110可在参考图像列表中的一者中定位所述运动向量指向的预测块。帧间预测单元110还可产生与图像块和视频条带相关联的语法元素以供视频解码器200在对视频条带的图像块解码时使用。又或者,一种示例下,帧间预测单元110利用每个子块的运动信息执行运动补偿过程,以生成每个子块的预测块,从而得到当前图像块的预测块;应当理解的是,这里的帧间预测单元110执行运动估计和运动补偿过程。
具体的,在为当前图像块选择帧间预测模式之后,帧间预测单元110可将指示当前图像块的所选帧间预测模式的信息提供到熵编码单元103,以便于熵编码单元103编码指示所选帧间预测模式的信息。在本申请中,视频编码器100可在所发射的位流中包含与当前图像块相关的帧间预测数据,其可包括第一标识block_based_enable_flag,以表示是否对当前图像块采用本申请提出的新的帧间预测模式进行帧间预测;可选的,还可以包括第二标识block_based_index,以指示当前图像块使用的是哪一种新的帧间预测模式。本申请中,在不同的模式0,1,2…10下,利用多个参考块的运动矢量来预测当前图像块或其子块的运动矢量的过程,将在下文详细描述。
帧内预测单元109可对当前图像块执行帧内预测。明确地说,帧内预测单元109可确定用来编码当前块的帧内预测模式。举例来说,帧内预测单元109可使用速率-失真分析来计算各种待测试的帧内预测模式的速率-失真值,并从待测试模式当中选择具有最佳速率-失真特性的帧内预测模式。在任何情况下,在为图像块选择帧内预测模式之后,帧内预测单元109可将指示当前图像块的所选帧内预测模式的信息提供到熵编码单元103,以便熵编码单元103编码指示所选帧内预测模式的信息。
在预测处理单元108经由帧间预测、帧内预测产生当前图像块的预测块之后,视频编码器100通过从待编码的当前图像块减去所述预测块来形成残差图像块。求和单元112表示执行此减法运算的一或多个组件。所述残差块中的残差视频数据可包含在一或多个TU中,并应用于变换单元101。变换单元101使用例如离散余弦变换(DCT)或概念上类似的变换等变换将残差视频数据变换成残差变换系数。变换单元101可将残差视频数据从像素值域转换到变换域,例如频域。
变换单元101可将所得变换系数发送到量化单元102。量化单元102量化所述变换系数以进一步减小位速率。在一些实例中,量化单元102可接着执行对包含经量化的变换系数的矩阵的扫描。或者,熵编码单元103可执行扫描。
在量化之后,熵编码单元103对经量化变换系数进行熵编码。举例来说,熵编码单元103可执行上下文自适应可变长度编码(CAVLC)、上下文自适应二进制算术编码(CABAC)、基于语法的上下文自适应二进制算术编码(SBAC)、概率区间分割熵(PIPE)编码或另一熵编码方法或技术。在由熵编码单元103熵编码之后,可将经编码位流发射到视频解码器200,或经存档以供稍后发射或由视频解码器200检索。熵编码单元103还可对待编码的当前图像块的语法元素进行熵编码。
反量化单元104和反变换单元105分别应用逆量化和逆变换以在像素域中重构所述残差块,例如以供稍后用作参考图像的参考块。求和单元111将经重构的残差块添加到由帧间预测单元110或帧内预测单元109产生的预测块,以产生经重构图像块。滤波器单元106可以适用于经重构图像块以减小失真,诸如方块效应(block artifacts)。然后,该经重构图像块作为参考块存储在经解码图像缓冲单元107中,可由帧间预测单元110用作参考块以对后续视频帧或图像中的块进行帧间预测。
应当理解的是,视频编码器100的其它的结构变化可用于编码视频流。例如,对于某些图像块或者图像帧,视频编码器100可以直接地量化残差信号而不需要经变换单元101处理,相应地也不需要经反变换单元105处理;或者,对于某些图像块或者图像帧,视频编码器100没有产生残差数据,相应地不需要经变换单元101、量化单元102、反量化单元104和反变换单元105处理;或者,视频编码器100可以将经重构图像块作为参考块直接地进行存储而不需要经滤波器单元106处理;或者,视频编码器100中量化单元102和反量化单元104可以合并在一起。环路滤波单元是可选的,以及针对无损压缩编码的情况下,变换单元101、量化单元102、反量化单元104和反变换单元105是可选的。应当理解的是,根据不同的应用场景,帧间预测单元和帧内预测单元可以是被选择性的启用,而在本案中,帧间预测单元被启用。
图2B为本申请实施例中所描述的一种实例的视频解码器200的框图。在图2B的实例中,视频解码器200包括熵解码单元203、预测处理单元208、反量化单元204、反变换单元205、求和单元211、滤波器单元206以及经解码图像缓冲单元207。预测处理单元208可以包括帧间预测单元210和帧内预测单元209。在一些实例中,视频解码器200可执行大体上与相对于来自图2A的视频编码器100描述的编码过程互逆的解码过程。
在解码过程中,视频解码器200从视频编码器100接收表示经编码视频条带的图像块和相关联的语法元素的经编码视频位流。视频解码器200可从网络实体42接收视频数据,可选的,还可以将所述视频数据存储在视频数据存储单元(图中未示意)中。视频数据存储单元可存储待由视频解码器200的组件解码的视频数据,例如经编码视频位流。存储在视频数据存储单元中的视频数据,例如可从存储装置40、从相机等本地视频源、经由视频数据的有线或无线网络通信或者通过存取物理数据存储媒体而获得。视频数据存储单元可作为用于存储来自经编码视频位流的经编码视频数据的经解码图像缓冲单元(CPB)。因此,尽管在图2B中没有示意出视频数据存储单元,但视频数据存储单元和DPB 207可以是同一个的存储单元,也可以是单独设置的存储单元。视频数据存储单元和DPB 207可由多种存储单元装置中的任一者形成,例如:包含同步DRAM(SDRAM)的动态随机存取存储单元(DRAM)、磁阻式RAM(MRAM)、电阻式RAM(RRAM),或其它类型的存储单元装置。在各种实例中,视频数据存储单元可与视频解码器200的其它组件一起集成在芯片上,或相对于那些组件设置在芯片外。
网络实体42可例如为服务器、MANE、视频编辑器/剪接器,或用于实施上文所描述的技术中的一或多者的其它此装置。网络实体42可包括或可不包括视频编码器,例如视频编码器100。在网络实体42将经编码视频位流发送到视频解码器200之前,网络实体42可实施本申请中描述的技术中的部分。在一些视频解码***中,网络实体42和视频解码器200可为单独装置的部分,而在其它情况下,相对于网络实体42描述的功能性可由包括视频解码器200的相同装置执行。在一些情况下,网络实体42可为图1的存储装置40的实例。
视频解码器200的熵解码单元203对位流进行熵解码以产生经量化的系数和一些语法元素。熵解码单元203将语法元素转发到预测处理单元208。视频解码器200可接收在视频条带层级和/或图像块层级处的语法元素。
当视频条带被解码为经帧内解码(I)条带时,预测处理单元208的帧内预测单元209可基于发信号通知的帧内预测模式和来自当前帧或图像的先前经解码块的数据而产生当前视频条带的图像块的预测块。当视频条带被解码为经帧间解码(即,B或P)条带时,预测处理单元208的帧间预测单元210可基于从熵解码单元203接收到的语法元素,确定用于对当前视频条带的当前图像块进行解码的帧间预测模式,基于确定的帧间预测模式,对所述当前图像块进行解码(例如执行帧间预测)。具体的,帧间预测单元210可确定是否对当前视频条带的当前图像块采用新的帧间预测模式进行预测,如果语法元素指示采用新的帧间预测模式来对当前图像块进行预测,基于新的帧间预测模式(例如通过语法元素指定的一种新的帧间预测模式或默认的一种新的帧间预测模式)预测当前视频条带的当前图像块或当前图像块的子块的运动信息,从而通过运动补偿过程使用预测出的当前图像块或当前图像块的子块的运动信息来获取或生成当前图像块或当前图像块的子块的预测块。这里的运动信息可以包括参考图像信息和运动矢量,其中参考图像信息可以包括但不限于单向/双向预测信息,参考图像列表号和参考图像列表对应的参考图像索引。对于帧间预测,可从参考图像列表中的一者内的参考图像中的一者产生预测块。视频解码器200可基于存储在DPB207中的参考图像来建构参考图像列表,即列表0和列表1。当前图像的参考帧索引可包含于参考帧列表0和列表1中的一或多者中。在一些实例中,可以是视频编码器100发信号通知指示是否采用新的帧间预测模式来解码特定块的特定语法元素,或者,也可以是发信号通知指示是否采用新的帧间预测模式,以及指示具体采用哪一种新的帧间预测模式来解码特定块的特定语法元素。应当理解的是,这里的帧间预测单元210执行运动补偿过程。下文将详细的阐述在各种新的帧间预测模式下,利用参考块的运动信息来预测当前图像块或当前图像块的子块的运动信息的帧间预测过程。
反量化单元204将在位流中提供且由熵解码单元203解码的经量化变换系数逆量化,即去量化。逆量化过程可包括:使用由视频编码器100针对视频条带中的每个图像块计算的量化参数来确定应施加的量化程度以及同样地确定应施加的逆量化程度。反变换单元205将逆变换应用于变换系数,例如逆DCT、逆整数变换或概念上类似的逆变换过程,以便产生像素域中的残差块。
在帧间预测单元210产生用于当前图像块或当前图像块的子块的预测块之后,视频解码器200通过将来自反变换单元205的残差块与由帧间预测单元210产生的对应预测块求和以得到重建的块,即经解码图像块。求和单元211表示执行此求和操作的组件。在需要时,还可使用环路滤波单元(在解码环路中或在解码环路之后)来使像素转变平滑或者以其它方式改进视频质量。滤波器单元206可以表示一或多个环路滤波单元,例如去块滤波单元、自适应环路滤波单元(ALF)以及样本自适应偏移(SAO)滤波单元。尽管在图2B中将滤波单元206示出为环路内滤波单元,但在其它实现方式中,可将滤波器单元206实施为环路后滤波单元。在一种示例下,滤波器单元206适用于重建块以减小块失真,并且该结果作为经解码视频流输出。并且,还可以将给定帧或图像中的经解码图像块存储在经解码图像缓冲单元207中,经解码图像缓冲单元207存储用于后续运动补偿的参考图像。经解码图像缓冲单元207可为存储单元的一部分,其还可以存储经解码视频,以供稍后在显示装置(例如图1的显示装置220)上呈现,或可与此类存储单元分开。
应当理解的是,视频解码器200的其它结构变化可用于解码经编码视频位流。例如,视频解码器200可以不经滤波单元206处理而生成输出视频流;或者,对于某些图像块或者图像帧,视频解码器200的熵解码单元203没有解码出经量化的系数,相应地不需要经反量化单元204和反变换单元205处理。环路滤波单元是可选的;以及针对无损压缩的情况下,反量化单元204和反变换单元205是可选的。应当理解的是,根据不同的应用场景,帧间预测单元和帧内预测单元可以是被选择性的启用,而在本案中,帧间预测单元被启用。
图5是示出本申请实施例中一种示例性的当前图像块600和参考块的运动信息示意图。如图5所示,W和H是当前图像块600以及当前图像块600的同位置co-located块(简称为并置块)600’的宽度和高度。当前图像块600的参考块包括:当前图像块600的上侧空域邻近块和左侧空域邻近块,以及并置块600’的下侧空域邻近块和右侧空域邻近块,其中并置块600’为参考图像中与当前图像块600具有相同的大小、形状和坐标的图像块。应当注意的是,当前图像块的下侧空域邻近块和右侧空域邻近块的运动信息不存在,还没编码。应当理解的是,当前图像块600和并置块600’可以是任意块大小。例如,当前图像块600和并置块600’可以包括但不限于16x16像素,32x32像素,32x16像素和16x32像素等。如上所述,每个图像帧可以被分割为用于编码的图像块。这些图像块可以被进一步分割为更小的块,例如当前图像块600和并置块600’可以被分割成多个MxN子块,即每个子块的大小均为MxN像素,而且,每个参考块的大小也为MxN像素,即与当前图像块的子块的大小相同。图5中的坐标以MxN块为衡量单位。“M×N”与“M乘N”可互换使用以指依照水平维度及垂直维度的图像块的像素尺寸,即在水平方向上具有M个像素,且在垂直方向上具有N个像素,其中M、N表示非负整数值。此外,块未必需要在水平方向上与在垂直方向上具有相同数目个像素。举例说明,这里的M=N=4,当然当前图像块的子块大小和参考块的大小也可以是8x8像素,8x4像素,或4x8像素,或者最小的预测块大小。此外,本申请描述的图像块可以理解为但不限于:预测单元(prediction unit,PU)或者编码单元(coding unit,CU)或者变换单元(transformunit,TU)等。根据不同视频压缩编解码标准的规定,CU可包含一个或多个预测单元PU,或者PU和CU的尺寸相同。图像块可具有固定或可变的大小,且根据不同视频压缩编解码标准而在大小上不同。此外,当前图像块是指当前待编码或解码的图像块,例如待编码或解码的预测单元。
在一种示例下,可以沿着方向1依序判断当前图像块600的每个左侧空域邻近块是否可用,以及可以沿着方向2依序判断当前图像块600的每个上侧空域邻近块是否可用,例如判断邻近块(亦称为参考块,可互换使用)是否帧间编码,如果邻近块存在且是帧间编码,则所述邻近块可用;如果邻近块不存在或者是帧内编码,则所述邻近块不可用。如果一个邻近块是帧内编码,则复制邻近的其它参考块的运动信息作为该邻近块的运动信息。按照类似方法检测并置块600’的下侧空域邻近块和右侧空域邻近块是否可用,在此不再赘述。
进一步的,如果可用参考块的大小与当前图像块的子块的大小是4x4,可以直接获取fetch可用参考块的运动信息;如果可用参考块的大小例如是8x4,8x8,可以获取其中心4x4块的运动信息作为该可用参考块的运动信息,该中心4x4块的左上角顶点相对于该参考块的左上角顶点的坐标为((W/4)/2*4,(H/4)/2*4),这里除运算为整除运算,若M=8,N=4,则中心4x4块的左上角顶点相对于该参考块的左上角顶点的坐标为(4,0)。可选地,也可以获取该参考块的左上角4x4块的运动信息作为该可用参考块的运动信息,但本申请并不限于此。
为了简化描述,下文以子块表示MxN子块,以邻近块表示邻近MxN块来进行说明。
图6是示出根据本申请一种实施例的编码方法的过程700的流程图。过程700可由视频编码器100执行,具体的,可以由视频编码器100的帧间预测单元110,以及熵编码单元(也称熵编码器)103来执行。过程700描述为一系列的步骤或操作,应当理解的是,过程700可以以各种顺序执行和/或同时发生,不限于图6所示的执行顺序。假设具有多个视频帧的视频数据流正在使用视频编码器,若其中第一相邻仿射编码块位于当前编码块上方的编码树单元(Coding Tree Unit,CTU),则基于第一相邻仿射编码块的左下控制点和右下控制点确定一组候选运动矢量预测值,对应图6所示流程,相关描述如下:
步骤S700:视频编码器确定当前编码块的帧间预测模式。
具体的,帧间预测模式可能为先进的运动矢量预测(Advanced Motion VectorPrediction,AMVP)模式,也可能为融合(merge)模式。
若确定出当前编码块的帧间预测模式为AMVP模式,则执行步骤S711-S713。
若确定出当前编码块的帧间预测模式为merge模式,则执行步骤S721-S723。
AMVP模式:
步骤S711:视频编码器构建候选运动矢量预测值MVP列表。
具体地,视频编码器通过帧间预测单元(也称帧间预测模块)来构建候选运动矢量预测值MVP列表(也称候选运动矢量列表),可以采用如下提供的两种方式中的一种方式来构建,或者采用两种方式结合的形式来构建,构建的候选运动矢量预测值MVP列表可以为三元组的候选运动矢量预测值MVP列表,也可以为二元组的候选运动矢量预测值MVP列表;以上两种方式具体如下:
方式一,采用基于运动模型的运动矢量预测方法构建候选运动矢量预测值MVP列表。
首先,按照预先规定的顺序遍历当前编码块的全部或部分相邻块,从而确定其中的相邻仿射编码块,确定出的相邻仿射编码块的数量可能为一个也可能为多个。例如,可以依次遍历图7A所示的相邻块A、B、C、D、E,以确定出相邻块A、B、C、D、E中的相邻仿射编码块。该帧间预测单元至少会根据一个相邻仿射编码块确定一组候选运动矢量预测值(每一组候选运动矢量预测值为一个二元组或者三元组),下面以一个相邻仿射编码块为例进行介绍,为了便于描述称该一个相邻仿射编码块为第一相邻仿射编码块,具体如下:
根据第一相邻仿射编码块的控制点的运动矢量确定第一仿射模型,进而根据第一仿射模型预测该当前编码块的控制点的运动矢量。当前编码块的参数模型不同时,基于第一相邻仿射编码块的控制点的运动矢量预测当前编码块的控制点的运动矢量的方式也不同,因此下面分情况进行描述。
A、当前编码块的参数模型为4参数仿射变换模型,推导的方式可以为:
若第一相邻仿射编码块位于当前编码块上方的编码树单元(Coding Tree Unit,CTU)且所述第一相邻仿射编码块为四参数仿射编码块,则获取该第一相邻仿射编码块最下侧两个控制点的运动矢量,例如,可以获取该第一相邻仿射编码块左下控制点的位置坐标(x6,y6)和运动矢量(vx6,vy6),以及右下控制点的位置坐标(x7,y7)和运动矢量值(vx7,vy7)。
根据该第一相邻仿射编码块最下侧两个控制点的运动矢量和坐标位置组成第一仿射模型(这时得到的第一仿射模型为4参数仿射模型)。
根据该第一仿射模型预测当前编码块的控制点的运动矢量,例如,可以将该当前编码块的左上控制点的位置坐标和右上控制点的位置坐标分别带入到该第一仿射模型,从而预测出当前编码块的左上控制点的运动矢量、右上控制点的运动矢量,具体如公式(1)、(2)所示。
在公式(1)、(2)中,(x0,y0)为当前编码块的左上控制点的坐标,(x1,y1)为当前编码块的右上控制点的坐标;另外,(vx0,vy0)为预测的当前编码块的左上控制点的运动矢量,(vx1,vy1)为预测的当前编码块的右上控制点的运动矢量。
可选的,所述第一相邻仿射编码块的左下控制点的位置坐标(x6,y6)和所述右下控制点的位置坐标(x7,y7)均为根据所述第一相邻仿射编码块的左上控制点的位置坐标(x4,y4)计算得到的,其中,所述第一相邻仿射编码块的左下控制点的位置坐标(x6,y6)为(x4,y4+cuH),所述第一相邻仿射编码块的右下控制点的位置坐标(x7,y7)为(x4+cuW,y4+cuH),cuW为所述第一相邻仿编码块的宽度,cuH为所述第一相邻仿射编码块的高度;另外,所述第一相邻仿射编码块的左下控制点的运动矢量为所述第一相邻仿射编码块的左下子块的运动矢量,所述第一相邻仿射编码块的右下控制点的运动矢量为第一相邻仿射编码块的右下子块的运动矢量。可以看出,第一相邻仿射编码块的左下控制点的位置坐标和所述右下控制点的位置坐标均是推导得到的,而不是从内存中读取得到的,因此采用该方法能够进一步减少内存的读取,提高了编码性能。作为另外一种可选方案,也可以在内存中预选存储左下控制点和右下控制点的位置坐标,后续要用的时候从内存中读取。
若第一相邻仿射编码块位于当前编码块上方的编码树单元(Coding Tree Unit,CTU)且所述第一相邻仿射编码块为六参数仿射编码块,则不基于第一相邻仿射编码块生成当前块的控制点的候选运动矢量预测值。
若该第一相邻仿射编码块不位于当前编码块的上方CTU,则预测当前编码块的控制点的运动矢量的方式此处不作限定。但是为了便于理解,下面也例举一种可选的确定方式:
可以获取该第一相邻仿射编码块的三个控制点的位置坐标和运动矢量,例如,左上控制点的位置坐标(x4,y4)和运动矢量值(vx4,vy4)、右上控制点的位置坐标(x5,y5)和运动矢量值(vx5,vy5)、左下控制点的位置坐标(x6,y6)和运动矢量(vx6,vy6)。
根据该第一相邻仿射编码块的三个控制点的位置坐标和运动矢量组成6参数仿射模型。
将该当前编码块的左上控制点的位置坐标(x0,y0)和右上控制点的位置坐标(x1,y1)代入6参数仿射模型预测当前编码块的左上控制点的运动矢量,以及右上控制点的运动矢量,具体如公式(4)、(5)所示。
在公式(4)、(5)中,(vx0,vy0)为预测的当前编码块的左上控制点的运动矢量,(vx1,vy1)为预测的当前编码块的右上控制点的运动矢量。
B、当前编码块的参数模型为6参数仿射变换模型,推导的方式可以为:
若该第一相邻仿射编码块位于当前编码块的上方CTU且第一相邻仿射编码块为四参数仿射编码块,则获取该第一相邻仿射编码块最下侧两个控制点的位置坐标和运动矢量,例如,可以获取该第一相邻仿射编码块左下控制点的位置坐标(x6,y6)和运动矢量(vx6,vy6),以及右下控制点的位置坐标(x7,y7)和运动矢量值(vx7,vy7)。
根据该第一相邻仿射编码块最下侧两个控制点的运动矢量组成第一仿射模型(此时得到的第一仿射模型为一个4参数仿射模型)。
根据该第一仿射模型预测当前编码块的控制点的运动矢量,例如,可以将该当前编码块的左上控制点的位置坐标、右上控制点的位置坐标、左下控制点的位置坐标分别带入到该第一仿射模型,从而预测当前编码块的左上控制点的运动矢量、右上控制点的运动矢量和左下控制点的运动矢量,具体如公式(1)、(2)、(3)所示。
公式(1)、(2)以上已有描述,在公式(1)、(2)、(3)中,(x0,y0)为当前编码块的左上控制点的坐标,(x1,y1)为当前编码块的右上控制点的坐标,(x2,y2)为当前编码块的左下控制点的坐标;另外,(vx0,vy0)为预测的当前编码块的左上控制点的运动矢量,(vy1,vy1)为预测的当前编码块的右上控制点的运动矢量,(vx2,vy2)为预测的当前编码块的右左下控制点的运动矢量。
若第一相邻仿射编码块位于当前编码块上方的编码树单元(Coding Tree Unit,CTU)且所述第一相邻仿射编码块为六参数仿射编码块,则不基于第一相邻仿射编码块生成当前块的控制点的候选运动矢量预测值。
若该第一相邻仿射编码块不位于当前编码块的上方CTU,则预测当前编码块的控制点的运动矢量的方式此处不作限定。但是为了便于理解,下面也例举一种可选的确定方式:
可以获取该第一相邻仿射编码块的三个控制点的位置坐标和运动矢量,例如,左上控制点的位置坐标(x4,y4)和运动矢量值(vx4,vy4)、右上控制点的位置坐标(x5,y5)和运动矢量值(vx5,vy5)、左下控制点的位置坐标(x6,y6)和运动矢量(vx6,vy6)。
根据该第一相邻仿射编码块的三个控制点的位置坐标和运动矢量组成6参数仿射模型。
将该当前编码块的左上控制点的位置坐标(x0,y0)、右上控制点的位置坐标(x1,y1)和左下控制点的位置坐标(x2,y2)代入6参数仿射模型预测当前编码块的左上控制点的运动矢量,右上控制点的运动矢量,及左下控制点的运动矢量,如公式(4)、(5)、(6)所示。
公式(4)、(5)前面已有描述,在公式(4)、(5)、(6)中,(vy0,vy0)为预测的当前编码块的左上控制点的运动矢量,(vx1,vy1)为预测的当前编码块的右上控制点的运动矢量,(vx2,vy2)为预测的当前编码块的左下控制点的运动矢量。
方式二,采用基于控制点组合的运动矢量预测方法构建候选运动矢量预测值MVP列表。
当前编码块的参数模型不同时构建候选运动矢量预测值MVP列表的方式也不同,下面展开描述。
A、当前编码块的参数模型为4参数仿射变换模型,推导的方式可以为:
利用当前编码块周边邻近的已编码块的运动信息预估当前编码块左上顶点和右上顶点的运动矢量。如图7B所示:首先,利用左上顶点相邻已编码块A和/或B和/或C块的运动矢量,作为当前编码块左上顶点的运动矢量的候选运动矢量;利用右上顶点相邻已编码块D和/或E块的运动矢量,作为当前编码块右上顶点的运动矢量的候选运动矢量。将上述左上顶点的一个候选运动矢量和右上顶点的一个候选运动矢量进行组合可得到一组候选运动矢量预测值,按照这种组合方式组合得到的多条记录可以构成候选运动矢量预测值MVP列表。
B、当前编码块参数模型是6参数仿射变换模型,推导的方式可以为:
利用当前编码块周边邻近的已编码块的运动信息预估当前编码块左上顶点和右上顶点的运动矢量。如图7B所示:首先,利用左上顶点相邻已编码块A和/或B和/或C块的运动矢量,作为当前编码块左上顶点的运动矢量的候选运动矢量;利用右上顶点相邻已编码块D和/或E块的运动矢量,作为当前编码块右上顶点的运动矢量的候选运动矢量;利用右上顶点相邻已编码块F和/或G块的运动矢量,作为当前编码块右上顶点的运动矢量的候选运动矢量。将上述左上顶点的一个候选运动矢量、右上顶点的一个候选运动矢量和左下顶点的一个候选运动矢量进行组合可得到一组候选运动矢量预测值,按照这种组合方式组合得到的多多组候选运动矢量预测值可以构成候选运动矢量预测值MVP列表。
需要说明的是,可仅采用方式一预测得到的候选运动矢量预测值来构建候选运动矢量预测值MVP列表,也可仅采用方式二预测得到的候选运动矢量预测值来构建候选运动矢量预测值MVP列表,还可采用方式一预测得到的候选运动矢量预测值和方式二预测得到的候选运动矢量预测值来共同构建候选运动矢量预测值MVP列表。另外,还可将候选运动矢量预测值MVP列表按照预先配置的规则进行剪枝和排序,然后将其截断或填充至特定个数。当候选运动矢量预测值MVP列表中的每一组候选运动矢量预测值包括三个控制点的运动矢量预测值时,可称该候选运动矢量预测值MVP列表为三元组列表;当候选运动矢量预测值MVP列表中的每一组候选运动矢量预测值包括两个控制点的运动矢量预测值时,可称该候选运动矢量预测值MVP列表为二元组列表。
步骤S712:视频编码器根据率失真代价准则,从候选运动矢量预测值MVP列表中确定目标候选运动矢量组。具体地,针对候选运动矢量预测值MVP列表中的每一个候选运动矢量组,计算得到当前块每个子块的运动矢量,进行运动补偿得到每个子块的预测值,从而得到当前块的预测值。选择出预测值与原始值误差最小的候选运动矢量组作为一组最佳的运动矢量预测值,即目标候选运动矢量组。另外,确定出的目标候选运动矢量组用于作为一组控制点的最优候选运动矢量预测值,该目标候选运动矢量组在该候选运动矢量预测值MVP列表中对应有一个唯一的索引号。
步骤S713:视频编码器将与所述目标候选运动矢量对应的索引和运动矢量差值MVD编入待传输的码流。
具体地,该视频编码器还可以以所述目标候选运动矢量组为搜索起始点在预设搜索范围内按照率失真代价准则搜索代价最低的一组控制点的运动矢量;然后确定所述一组控制点的运动矢量与所述目标候选运动矢量组之间的运动矢量差值MVD,例如,假若第一组控制点包括第一控制点和第二控制点,那么需要确定第一控制点的运动矢量与所述目标候选运动矢量组表示的一组控制点中的第一控制点的运动矢量预测值的运动矢量差值MVD,以及确定第二控制点的运动矢量与所述目标候选运动矢量组表示的一组控制点中的第二控制点的运动矢量预测值的运动矢量差值MVD。
可选的,AMVP模式下除了执行上述步骤S711-S713之外,还可以执行步骤S714-S715。
步骤S714:视频编码器根据以上确定出的当前编码块的控制点的运动矢量值采用仿射变换模型获得当前编码块中每个子块的运动矢量值。
具体地,基于目标候选运动矢量组和MVD得到的新的候选运动矢量组中包括两个(左上控制点和右上控制点)或者三个控制点(例如,左上控制点、右上控制点和左下控制点)的运动矢量。对于当前编码块的每一个子块(一个子块也可以等效为一个运动补偿单元),可采用运动补偿单元中预设位置像素点的运动信息来表示该运动补偿单元内所有像素点的运动信息。假设运动补偿单元的尺寸为MxN(M小于等于当前编码块的宽度W,N小于等于当前编码块的高度H,其中M、N、W、H为正整数,通常为2的幂次方,如4、8、16、32、64、128等),则预设位置像素点可以为运动补偿单元中心点(M/2,N/2)、左上像素点(0,0),右上像素点(M-1,0),或其他位置的像素点。图8A示意了4x4的运动补偿单元,图8B示意了8x8的运动补偿单元。
运动补偿单元中心点相对于当前编码块左上顶点像素的坐标使用公式(5)计算得到,其中i为水平方向第i个运动补偿单元(从左到右),j为竖直方向第j个运动补偿单元(从上到下),(x(i,j),y(i,j))表示第(i,j)个运动补偿单元中心点相对于当前编码块左上控制点像素的坐标。再根据当前编码块的仿射模型类型(6参数或4参数),将(x(i,j),y(i,j))代入6参数仿射模型公式(6-1)或者将(x(i,j),y(i,j))代入4参数仿射模型公式(6-2),获得每个运动补偿单元中心点的运动信息,作为该运动补偿单元内所有像素点的运动矢量(vx(i,j),vy(i,j))。
可选的,当前编码块为6参数编码块时,在基于所述目标候选运动矢量组得到所述当前编码块的一个或多个子块的运动矢量时,若所述当前编码块的下边界与所述当前编码块所在的CTU的下边界重合,则所述当前编码块的左下角的子块的运动矢量为根据所述三个控制点构造的6参数仿射模型和所述当前编码块的左下角的位置坐标(0,H)计算得到,所述当前编码块的右下角的子块的运动矢量为根据所述三个控制点构造的6参数仿射模型和所述当前编码块的右下角的位置坐标(W,H)计算得到。例如,将当前编码块的左下角的位置坐标(0,H)代入到该6参数仿射模型即可得到当前编码块的左下角的子块的运动矢量(而不是将左下角的子块的中心点坐标代入该仿射模型进行计算),将当前编码块的右下角的位置坐标(W,H)代入到该6参数仿射模型即可得到当前编码块的右下角的子块的运动矢量(而不是将右下角的子块的中心点坐标代入该仿射模型进行计算)。这样一来,该当前编码块的左下控制点的运动矢量和右下控制点的运动矢量被用到时(例如,后续其他块基于该当前块的左下控制点和右下控制点的运动矢量构建该其他块的候选运动矢量预测值MVP列表),用到的是准确的值而不是估算值。其中,W为该当前编码块的宽,H为该当前编码块的高。
可选的,当前编码块为4参数编码块时,在基于所述目标候选运动矢量组得到所述当前编码块的一个或多个子块的运动矢量时,若所述当前编码块的下边界与所述当前编码块所在的CTU的下边界重合,则所述当前编码块的左下角的子块的运动矢量为根据所述两个控制点构造的4参数仿射模型和所述当前编码块的左下角的位置坐标(0,H)计算得到,所述当前编码块的右下角的子块的运动矢量为根据所述两个控制点构造的4参数仿射模型和所述当前编码块的右下角的位置坐标(W,H)计算得到。例如,将当前编码块的左下角的位置坐标(0,H)代入到该4参数仿射模型即可得到当前编码块的左下角的子块的运动矢量(而不是将左下角的子块的中心点坐标代入该仿射模型进行计算),将当前编码块的右下角的位置坐标(W,H)代入到该四参数仿射模型即可得到当前编码块的右下角的子块的运动矢量(而不是将右下角的子块的中心点坐标代入该仿射模型进行计算)。这样一来,该当前编码块的左下控制点的运动矢量和右下控制点的运动矢量被用到时(例如,后续其他块基于该当前块的左下控制点和右下控制点的运动矢量构建该其他块的候选运动矢量预测值MVP列表),用到的是准确的值而不是估算值。其中,W为该当前编码块的宽,H为该当前编码块的高。
步骤S715:该视频编码器根据该当前编码块中每个子块的运动矢量值进行运动补偿,以得到每个子块的像素预测值,例如,通过每个子块的运动矢量和参考帧索引值,在参考帧中找到对应的子块,进行插值滤波,得到每个子块的像素预测值。
Merge模式:
步骤S721:视频编码器构建候选运动信息列表。
具体地,视频编码器通过帧间预测单元(也称帧间预测模块)来构建候选运动信息列表(也称候选运动矢量列表),可以采用如下提供的两种方式中的一种方式来构建,或者采用两种方式结合的形式来构建,构建的候选运动信息列表为三元组的候选运动信息列表;以上两种方式具体如下:
方式一,采用基于运动模型的运动矢量预测方法构建候选运动信息列表。
首先,按照预先规定的顺序遍历当前编码块的全部或部分相邻块,从而确定其中的相邻仿射编码块,确定出的相邻仿射编码块的数量可能为一个也可能为多个。例如,可以依次遍历图7A所示的相邻块A、B、C、D、E,以确定出相邻块A、B、C、D、E中的相邻仿射编码块。该帧间预测单元会根据每个相邻仿射编码块确定一组候选运动矢量预测值(每一组候选运动矢量预测值为一个二元组或者三元组),下面以一个相邻仿射编码块为例进行介绍,为了便于描述称该一个相邻仿射编码块为第一相邻仿射编码块,具体如下:
根据第一相邻仿射编码块的控制点的运动矢量确定第一仿射模型,进而根据第一仿射模型预测该当前编码块的控制点的运动矢量,具体描述如下:
若该第一相邻仿射编码块位于当前编码块的上方CTU且该第一相邻仿射编码块为四参数仿射编码块,则获取该第一相邻仿射编码块最下侧两个控制点的位置坐标和运动矢量,例如,可以获取该第一相邻仿射编码块左下控制点的位置坐标(x6,y6)和运动矢量(vx6,vy6),以及右下控制点的位置坐标(x7,y7)和运动矢量值(vx7,vy7)。
根据该第一相邻仿射编码块最下侧两个控制点的运动矢量组成第一仿射模型(此时得到的第一仿射模型为一个4参数仿射模型)。
可选的,根据该第一仿射模型预测当前编码块的控制点的运动矢量,例如,可以将该当前编码块的左上控制点的位置坐标、右上控制点的位置坐标、左下控制点的位置坐标分别带入到该第一仿射模型,从而预测当前编码块的左上控制点的运动矢量、右上控制点的运动矢量和左下控制点的运动矢量,组成候选运动矢量三元组,加入候选运动信息列表,具体如公式(1)、(2)、(3)所示。
可选的,根据该第一仿射模型预测当前编码块的控制点的运动矢量,例如,可以将该当前编码块的左上控制点的位置坐标、右上控制点的位置坐标分别带入到该第一仿射模型,从而预测当前编码块的左上控制点的运动矢量和右上控制点的运动矢量,组成候选运动矢量二元组,加入候选运动信息列表,具体如公式(1)、(2)所示。
在公式(1)、(2)、(3)中,(x0,y0)为当前编码块的左上控制点的坐标,(x1,y1)为当前编码块的右上控制点的坐标,(x2,y2)为当前编码块的左下控制点的坐标;另外,(vx0,vy0)为预测的当前编码块的左上控制点的运动矢量,(vx1,vy1)为预测的当前编码块的右上控制点的运动矢量,(vx2,vy2)为预测的当前编码块的左下控制点的运动矢量。
若第一相邻仿射编码块位于当前编码块上方的编码树单元(Coding Tree Unit,CTU)且所述第一相邻仿射编码块为六参数仿射编码块,则不基于第一相邻仿射编码块生成当前块的控制点的候选运动矢量预测值。
若该第一相邻仿射编码块不位于当前编码块的上方CTU,则预测当前编码块的控制点的运动矢量的方式此处不作限定。但是为了便于理解,下面也例举一种可选的确定方式:
可以获取该第一相邻仿射编码块的三个控制点的位置坐标和运动矢量,例如,左上控制点的位置坐标(x4,y4)和运动矢量值(vx4,vy4)、右上控制点的位置坐标(x5,y5)和运动矢量值(vx5,vy5)、左下控制点的位置坐标(x6,y6)和运动矢量(vx6,vy6)。
根据该第一相邻仿射编码块的三个控制点的位置坐标和运动矢量组成6参数仿射模型。
将该当前编码块的左上控制点的位置坐标(x0,y0)、右上控制点的位置坐标(x1,y1)和左下控制点的位置坐标(x2,y2)代入6参数仿射模型预测当前编码块的左上控制点的运动矢量,右上控制点的运动矢量,及左下控制点的运动矢量,如公式(4)、(5)、(6)所示。
公式(4)、(5)前面已有描述,在公式(4)、(5)、(6)中,(vx0,vy0)为预测的当前编码块的左上控制点的运动矢量,(vx1,vy1)为预测的当前编码块的右上控制点的运动矢量,(vx2,vy2)为预测的当前编码块的左下控制点的运动矢量。
方式二,采用基于控制点组合的运动矢量预测方法构建候选运动信息列表。
下面例举两种方案,分别表示为方案A和方案B:
方案A:将2个当前编码块的控制点的运动信息进行组合,用来构建4参数仿射变换模型。2个控制点的组合方式为{CP1,CP4},{CP2,CP3},{CP1,CP2},{CP2,CP4},{CP1,CP3},{CP3,CP4}。例如,采用CP1和CP2控制点构建的4参数仿射变换模型,记做Affine(CP1,CP2)。
需要说明的是,亦可将不同控制点的组合转换为同一位置的控制点。例如:将{CP1,CP4},{CP2,CP3},{CP2,CP4},{CP1,CP3},{CP3,CP4}组合得到的4参数仿射变换模型转换为控制点{CP1,CP2}或{CP1,CP2,CP3}来表示。转换方法为将控制点的运动矢量及其坐标信息,代入公式(9-1),得到模型参数,再将{CP1,CP2}的坐标信息代入,得到其运动矢量,作为一组候选运动矢量预测值。
在公式(9-1)中,a0,a1,a2,a3均为参数模型中的参数,(x,y)表示位置坐标。
更直接地,也可以按照以下公式进行转换得到以左上控制点、右上控制点表示的一组运动矢量预测值,并加入候选运动信息列表:
{CP1,CP2}转换得到{CP1,CP2,CP3}的公式(9-2):
{CP1,CP3}转换得到{CP1,CP2,CP3}的公式(9-3):
{CP2,CP3}转换得到{CP1,CP2,CP3}的公式(10):
{CP1,CP4}转换得到{CP1,CP2,CP3}的公式(11):
{CP2,CP4}转换得到{CP1,CP2,CP3}的公式(12):
{CP3,CP4}转换得到{CP1,CP2,CP3}的公式(13):
方案B:将当前编码块的3个控制点的运动信息进行组合,用来构建6参数仿射变换模型。3个控制点的组合方式为{CP1,CP2,CP4},{CP1,CP2,CP3},{CP2,CP3,CP4},{CP1,CP3,CP4}。例如,采用CP1、CP2和CP3控制点构建的6参数仿射变换模型,记做Affine(CP1,CP2,CP3)。
要说明的是,亦可将不同控制点的组合转换为同一位置的控制点。例如:将{CP1,CP2,CP4},{CP2,CP3,CP4},{CP1,CP3,CP4}组合的6参数仿射变换模型转换为控制点{CP1,CP2,CP3}来表示。转换方法为将控制点的运动矢量及其坐标信息,代入公式(14),得到模型参数,再将{CP1,CP2,CP3}的坐标信息代入,得到其运动矢量,作为一组候选运动矢量预测值。
在公式(14)中,a1,a2,a3,a4,a5,a6为参数模型中的参数,(x,y)表示位置坐标。
更直接地,也可以按照以下公式进行转换得到以左上控制点、右上控制点、左下控制点表示的一组运动矢量预测值,并加入候选运动信息列表:
{CP1,CP2,CP4}转换得到{CP1,CP2,CP3}的公式(15):
{CP2,CP3,CP4}转换得到{CP1,CP2,CP3}的公式(16):
{CP1,CP3,CP4}转换得到{CP1,CP2,CP3}的公式(17):
需要说明的是,可仅采用方式一预测得到的候选运动矢量预测值来构建候选运动信息列表,也可仅采用方式二预测得到的候选运动矢量预测值来构建候选运动信息列表,还可采用方式一预测得到的候选运动矢量预测值和方式二预测得到的候选运动矢量预测值来共同构建候选运动信息列表。另外,还可将候选运动信息列表按照预先配置的规则进行剪枝和排序,然后将其截断或填充至特定个数。当候选运动信息列表中的每一组候选运动矢量预测值包括三个控制点的运动矢量预测值时,可称该候选运动信息列表为三元组列表;当候选运动信息列表中的每一组候选运动矢量预测值包括两个控制点的运动矢量预测值时,可称该候选运动信息列表为二元组列表。
步骤S722:视频编码器根据率失真代价准则,从候选运动信息列表中确定目标候选运动矢量组。具体地,针对候选运动信息列表中的每一个候选运动矢量组,计算得到当前块每个子块的运动矢量,进行运动补偿得到每个子块的预测值,从而得到当前块的预测值。选择出预测值与原始值误差最小的候选运动矢量组作为一组最佳的运动矢量预测值,即目标候选运动矢量组。另外,确定出的目标候选运动矢量组用于作为一组控制点的最优候选运动矢量预测值,该目标候选运动矢量组在该候选运动信息列表中对应有一个唯一的索引号。
步骤S723:视频编码器将与所述目标候选运动矢量组、参考帧索引和预测方向对应的索引编入待传输的码流。
可选的,merge模式下除了执行上述步骤S721-S723之外,还可以执行步骤S724-S725。
步骤S724:视频编码器根据以上确定出的当前编码块的控制点的运动矢量值采用参数仿射变换模型获得当前编码块中每个子块的运动矢量值。
具体地,即目标候选运动矢量组中包括的两个(左上控制点和右上控制点)或者三个控制点(例如,左上控制点、右上控制点和左下控制点)的运动矢量。对于当前编码块的每一个子块(一个子块也可以等效为一个运动补偿单元),可采用运动补偿单元中预设位置像素点的运动信息来表示该运动补偿单元内所有像素点的运动信息。假设运动补偿单元的尺寸为MxN(M小于等于当前编码块的宽度W,N小于等于当前编码块的高度H,其中M、N、W、H为正整数,通常为2的幂次方,如4、8、16、32、64、128等),则预设位置像素点可以为运动补偿单元中心点(M/2,N/2)、左上像素点(0,0),右上像素点(M-1,0),或其他位置的像素点。图8A示意了4x4的运动补偿单元,图8B示意了8x8的运动补偿单元。
运动补偿单元中心点相对于当前编码块左上顶点像素的坐标使用公式(5)计算得到,其中i为水平方向第i个运动补偿单元(从左到右),j为竖直方向第j个运动补偿单元(从上到下),(x(i,j),y(i,j))表示第(i,j)个运动补偿单元中心点相对于当前编码块左上控制点像素的坐标。再根据当前编码块的仿射模型类型(6参数或4参数),将(x(i,j),y(i,j))代入6参数仿射模型公式(6-1)或者将(x(i,j),y(i,j))代入4参数仿射模型公式(6-2),获得每个运动补偿单元中心点的运动信息,作为该运动补偿单元内所有像素点的运动矢量(vx(i,j),vy(i,j))。
可选的,当前编码块为6参数编码块时,在基于所述目标候选运动矢量组得到所述当前编码块的一个或多个子块的运动矢量时,若所述当前编码块的下边界与所述当前编码块所在的CTU的下边界重合,则所述当前编码块的左下角的子块的运动矢量为根据所述三个控制点构造的6参数仿射模型和所述当前编码块的左下角的位置坐标(0,H)计算得到,所述当前编码块的右下角的子块的运动矢量为根据所述三个控制点构造的6参数仿射模型和所述当前编码块的右下角的位置坐标(W,H)计算得到。例如,将当前编码块的左下角的位置坐标(0,H)代入到该6参数仿射模型即可得到当前编码块的左下角的子块的运动矢量(而不是将左下角的子块的中心点坐标代入该仿射模型进行计算),将当前编码块的右下角的位置坐标(W,H)代入到该6参数仿射模型即可得到当前编码块的右下角的子块的运动矢量(而不是将右下角的子块的中心点坐标代入该仿射模型进行计算)。这样一来,该当前编码块的左下控制点的运动矢量和右下控制点的运动矢量被用到时(例如,后续其他块基于该当前块的左下控制点和右下控制点的运动矢量构建该其他块的候选运动信息列表),用到的是准确的值而不是估算值。其中,W为该当前编码块的宽,H为该当前编码块的高。
可选的,当前编码块为4参数编码块时,在基于所述目标候选运动矢量组得到所述当前编码块的一个或多个子块的运动矢量时,若所述当前编码块的下边界与所述当前编码块所在的CTU的下边界重合,则所述当前编码块的左下角的子块的运动矢量为根据所述两个控制点构造的4参数仿射模型和所述当前编码块的左下角的位置坐标(0,H)计算得到,所述当前编码块的右下角的子块的运动矢量为根据所述两个控制点构造的4参数仿射模型和所述当前编码块的右下角的位置坐标(W,H)计算得到。例如,将当前编码块的左下角的位置坐标(0,H)代入到该4参数仿射模型即可得到当前编码块的左下角的子块的运动矢量(而不是将左下角的子块的中心点坐标代入该仿射模型进行计算),将当前编码块的右下角的位置坐标(W,H)代入到该四参数仿射模型即可得到当前编码块的右下角的子块的运动矢量(而不是将右下角的子块的中心点坐标代入该仿射模型进行计算)。这样一来,该当前编码块的左下控制点的运动矢量和右下控制点的运动矢量被用到时(例如,后续其他块基于该当前块的左下控制点和右下控制点的运动矢量构建该其他块的候选运动信息列表),用到的是准确的值而不是估算值。其中,W为该当前编码块的宽,H为该当前编码块的高。
步骤S725:该视频编码器根据该当前编码块中每个子块的运动矢量值进行运动补偿,以得到每个子块的像素预测值,具体来说,根据所述当前编码块的一个或多个子块的运动矢量,以及所述索引指示的参考帧索引和预测方向,预测得到所述当前编码块的像素预测值。
可以理解的是,当所述第一相邻仿射编码块所在的编码树单元CTU在所述当前编码块位置的上方时,该第一相邻仿射编码块最下方控制点的信息已经从内存中读取过;因此上述方案在根据第一相邻仿射编码块的第一组控制点构建候选运动矢量的过程中,该第一组控制点包括所述第一相邻仿射编码块的左下控制点和右下控制点;而不是像现有技术那样固定将第一相邻编码块的左上控制点、右上控制点和左下控制点作为第一组控制点。因此采用本申请中确定第一组控制点的方法,第一组控制点的信息(例如,位置坐标、运动矢量等)可以直接复用从内存中读取过的信息,从而减少了内存的读取,提高了编码性能。
图9是示出根据本申请一种实施例的解码方法的过程900的流程图。过程900可由视频解码器200执行,具体的,可以由视频解码器200的帧间预测单元210,以及熵解码单元(也称熵解码器)203来执行。过程900描述为一系列的步骤或操作,应当理解的是,过程900可以以各种顺序执行和/或同时发生,不限于图9所示的执行顺序。假设具有多个视频帧的视频数据流正在使用视频解码器,若其中第一相邻仿射解码块位于当前解码块上方的解码树单元(Coding Tree Unit,CTU),则基于第一相邻仿射解码块的左下控制点和右下控制点确定一组候选运动矢量预测值,对应图9所示流程,相关描述如下:
若第一相邻仿射解码块位于当前解码块上方的编码树单元(Coding Tree Unit,CTU),则基于第一相邻仿射解码块的左下控制点和右下控制点确定一组候选运动矢量预测值,详细描述如下:
步骤S1200:视频解码器确定当前解码块的帧间预测模式。
具体的,帧间预测模式可能为先进的运动矢量预测(Advanced Motion VectorPrediction,AMVP)模式,也可能为融合(merge)模式。
若确定出当前解码块的帧间预测模式为AMVP模式,则执行步骤S1211-S1216。
若确定出当前解码块的帧间预测模式为merge模式,则执行步骤S1221-S1225。
AMVP模式:
步骤S1211:视频解码器构建候选运动矢量预测值MVP列表。
具体地,视频解码器通过帧间预测单元(也称帧间预测模块)来构建候选运动矢量预测值MVP列表(也称候选运动矢量列表),可以采用如下提供的两种方式中的一种方式来构建,或者采用两种方式结合的形式来构建,构建的候选运动矢量预测值MVP列表可以为三元组的候选运动矢量预测值MVP列表,也可以为二元组的候选运动矢量预测值MVP列表;以上两种方式具体如下:
方式一,采用基于运动模型的运动矢量预测方法构建候选运动矢量预测值MVP列表。
首先,按照预先规定的顺序遍历当前解码块的全部或部分相邻块,从而确定其中的相邻仿射解码块,确定出的相邻仿射解码块的数量可能为一个也可能为多个。例如,可以依次遍历图7A所示的相邻块A、B、C、D、E,以确定出相邻块A、B、C、D、E中的相邻仿射解码块。该帧间预测单元至少会根据一个相邻仿射解码块确定一组候选运动矢量预测值(每一组候选运动矢量预测值为一个二元组或者三元组),下面以一个相邻仿射解码块为例进行介绍,为了便于描述称该一个相邻仿射解码块为第一相邻仿射解码块,具体如下:
根据第一相邻仿射解码块的控制点的运动矢量确定第一仿射模型,进而根据第一仿射模型预测该当前解码块的控制点的运动矢量。当前解码块的参数模型不同时,基于第一相邻仿射解码块的控制点的运动矢量预测当前解码块的控制点的运动矢量的方式也不同,因此下面分情况进行描述。
A、当前解码块的参数模型为4参数仿射变换模型,推导的方式可以为(如图9A):
若第一相邻仿射解码块位于当前解码块上方的编码树单元(Coding Tree Unit,CTU)且所述第一相邻仿射解码块为四参数仿射解码块,则获取该第一相邻仿射解码块最下侧两个控制点的运动矢量,例如,可以获取该第一相邻仿射解码块左下控制点的位置坐标(x6,y6)和运动矢量(vx6,vy6),以及右下控制点的位置坐标(x7,y7)和运动矢量值(vx7,vy7)(步骤S1201)。
根据该第一相邻仿射解码块最下侧两个控制点的运动矢量和坐标位置组成第一仿射模型(这时得到的第一仿射模型为4参数仿射模型)(步骤S1202)。
根据该第一仿射模型预测当前解码块的控制点的运动矢量,例如,可以将该当前解码块的左上控制点的位置坐标和右上控制点的位置坐标分别带入到该第一仿射模型,从而预测出当前解码块的左上控制点的运动矢量、右上控制点的运动矢量,具体如公式(1)、(2)所示(步骤S1203)。
在公式(1)、(2)中,(x0,y0)为当前解码块的左上控制点的坐标,(x1,y1)为当前解码块的右上控制点的坐标;另外,(vx0,vy0)为预测的当前解码块的左上控制点的运动矢量,(vx1,vy1)为预测的当前解码块的右上控制点的运动矢量。
可选的,所述第一相邻仿射解码块的左下控制点的位置坐标(x6,y6)和所述右下控制点的位置坐标(x7,y7)均为根据所述第一相邻仿射解码块的左上控制点的位置坐标(x4,y4)计算得到的,其中,所述第一相邻仿射解码块的左下控制点的位置坐标(x6,y6)为(x4,y4+cuH),所述第一相邻仿射解码块的右下控制点的位置坐标(x7,y7)为(x4+cuW,y4+cuH),cuW为所述第一相邻仿解码块的宽度,cuH为所述第一相邻仿射解码块的高度;另外,所述第一相邻仿射解码块的左下控制点的运动矢量为所述第一相邻仿射解码块的左下子块的运动矢量,所述第一相邻仿射解码块的右下控制点的运动矢量为第一相邻仿射解码块的右下子块的运动矢量。可以看出,第一相邻仿射解码块的左下控制点的位置坐标和所述右下控制点的位置坐标均是推导得到的,而不是从内存中读取得到的,因此采用该方法能够进一步减少内存的读取,提高了解码性能。作为另外一种可选方案,也可以在内存中预选存储左下控制点和右下控制点的位置坐标,后续要用的时候从内存中读取。
若第一相邻仿射解码块位于当前解码块上方的编码树单元(Coding Tree Unit,CTU)且所述第一相邻仿射解码块为六参数仿射解码块,则不基于第一相邻仿射解码块生成当前块的控制点的候选运动矢量预测值。
若该第一相邻仿射解码块不位于当前解码块的上方CTU,则预测当前解码块的控制点的运动矢量的方式此处不作限定。但是为了便于理解,下面也例举一种可选的确定方式:
可以获取该第一相邻仿射解码块的三个控制点的位置坐标和运动矢量,例如,左上控制点的位置坐标(x4,y4)和运动矢量值(vx4,vy4)、右上控制点的位置坐标(x5,y5)和运动矢量值(vx5,vy5)、左下控制点的位置坐标(x6,y6)和运动矢量(vx6,vy6)。
根据该第一相邻仿射解码块的三个控制点的位置坐标和运动矢量组成6参数仿射模型。
将该当前解码块的左上控制点的位置坐标(x0,y0)和右上控制点的位置坐标(x1,y1)代入6参数仿射模型预测当前解码块的左上控制点的运动矢量,以及右上控制点的运动矢量,具体如公式(4)、(5)所示。
在公式(4)、(5)中,(vx0,vy0)为预测的当前解码块的左上控制点的运动矢量,(vx1,vy1)为预测的当前解码块的右上控制点的运动矢量。
B、当前解码块的参数模型为6参数仿射变换模型,推导的方式可以为:
若该第一相邻仿射解码块位于当前解码块的上方CTU且第一相邻仿射解码块为四参数仿射解码块,则获取该第一相邻仿射解码块最下侧两个控制点的位置坐标和运动矢量,例如,可以获取该第一相邻仿射解码块左下控制点的位置坐标(x6,y6)和运动矢量(vx6,vy6),以及右下控制点的位置坐标(x7,y7)和运动矢量值(vx7,vy7)。
根据该第一相邻仿射解码块最下侧两个控制点的运动矢量组成第一仿射模型(此时得到的第一仿射模型为一个4参数仿射模型)。
根据该第一仿射模型预测当前解码块的控制点的运动矢量,例如,可以将该当前解码块的左上控制点的位置坐标、右上控制点的位置坐标、左下控制点的位置坐标分别带入到该第一仿射模型,从而预测当前解码块的左上控制点的运动矢量、右上控制点的运动矢量和左下控制点的运动矢量,具体如公式(1)、(2)、(3)所示。
公式(1)、(2)以上已有描述,在公式(1)、(2)、(3)中,(x0,y0)为当前解码块的左上控制点的坐标,(x1,y1)为当前解码块的右上控制点的坐标,(x2,y2)为当前解码块的左下控制点的坐标;另外,(vx0,vy0)为预测的当前解码块的左上控制点的运动矢量,(vx1,vy1)为预测的当前解码块的右上控制点的运动矢量,(vx2,vy2)为预测的当前解码块的右左下控制点的运动矢量。
若第一相邻仿射解码块位于当前解码块上方的编码树单元(Coding Tree Unit,CTU)且所述第一相邻仿射解码块为六参数仿射解码块,则不基于第一相邻仿射解码块生成当前块的控制点的候选运动矢量预测值。
若该第一相邻仿射解码块不位于当前解码块的上方CTU,则预测当前解码块的控制点的运动矢量的方式此处不作限定。但是为了便于理解,下面也例举一种可选的确定方式:
可以获取该第一相邻仿射解码块的三个控制点的位置坐标和运动矢量,例如,左上控制点的位置坐标(x4,y4)和运动矢量值(vx4,vy4)、右上控制点的位置坐标(x5,y5)和运动矢量值(vx5,vy5)、左下控制点的位置坐标(x6,y6)和运动矢量(vx6,vy6)。
根据该第一相邻仿射解码块的三个控制点的位置坐标和运动矢量组成6参数仿射模型。
将该当前解码块的左上控制点的位置坐标(x0,y0)、右上控制点的位置坐标(x1,y1)和左下控制点的位置坐标(x2,y2)代入6参数仿射模型预测当前解码块的左上控制点的运动矢量,右上控制点的运动矢量,及左下控制点的运动矢量,如公式(4)、(5)、(6)所示。
公式(4)、(5)前面已有描述,在公式(4)、(5)、(6)中,(vx0,vy0)为预测的当前解码块的左上控制点的运动矢量,(vx1,vy1)为预测的当前解码块的右上控制点的运动矢量,(vx2,vy2)为预测的当前解码块的左下控制点的运动矢量。
方式二,采用基于控制点组合的运动矢量预测方法构建候选运动矢量预测值MVP列表。
当前解码块的参数模型不同时构建候选运动矢量预测值MVP列表的方式也不同,下面展开描述。
A、当前解码块的参数模型为4参数仿射变换模型,推导的方式可以为:
利用当前解码块周边邻近的已解码块的运动信息预估当前解码块左上顶点和右上顶点的运动矢量。如图7B所示:首先,利用左上顶点相邻已解码块A和/或B和/或C块的运动矢量,作为当前解码块左上顶点的运动矢量的候选运动矢量;利用右上顶点相邻已解码块D和/或E块的运动矢量,作为当前解码块右上顶点的运动矢量的候选运动矢量。将上述左上顶点的一个候选运动矢量和右上顶点的一个候选运动矢量进行组合可得到一组候选运动矢量预测值,按照这种组合方式组合得到的多条记录可以构成候选运动矢量预测值MVP列表。
B、当前解码块参数模型是6参数仿射变换模型,推导的方式可以为:
利用当前解码块周边邻近的已解码块的运动信息预估当前解码块左上顶点和右上顶点的运动矢量。如图7B所示:首先,利用左上顶点相邻已解码块A和/或B和/或C块的运动矢量,作为当前解码块左上顶点的运动矢量的候选运动矢量;利用右上顶点相邻已解码块D和/或E块的运动矢量,作为当前解码块右上顶点的运动矢量的候选运动矢量;利用右上顶点相邻已解码块F和/或G块的运动矢量,作为当前解码块右上顶点的运动矢量的候选运动矢量。将上述左上顶点的一个候选运动矢量、右上顶点的一个候选运动矢量和左下顶点的一个候选运动矢量进行组合可得到一组候选运动矢量预测值,按照这种组合方式组合得到的多组候选运动矢量预测值可以构成候选运动矢量预测值MVP列表。
需要说明的是,可仅采用方式一预测得到的候选运动矢量预测值来构建候选运动矢量预测值MVP列表,也可仅采用方式二预测得到的候选运动矢量预测值来构建候选运动矢量预测值MVP列表,还可采用方式一预测得到的候选运动矢量预测值和方式二预测得到的候选运动矢量预测值来共同构建候选运动矢量预测值MVP列表。另外,还可将候选运动矢量预测值MVP列表按照预先配置的规则进行剪枝和排序,然后将其截断或填充至特定个数。当候选运动矢量预测值MVP列表中的每一组候选运动矢量预测值包括三个控制点的运动矢量预测值时,可称该候选运动矢量预测值MVP列表为三元组列表;当候选运动矢量预测值MVP列表中的每一组候选运动矢量预测值包括两个控制点的运动矢量预测值时,可称该候选运动矢量预测值MVP列表为二元组列表。
步骤S1212:视频解码器解析码流,以得到索引和运动矢量差值MVD。
具体地,视频解码器可以通过熵解码单元解析码流,该索引用于指示当前解码块的目标候选运动矢量组,该目标候选运动矢量表示当前解码块的一组控制点的运动矢量预测值。
步骤S1213:视频解码器根据所述索引,从候选运动矢量预测值MVP列表中确定目标运动矢量组。
具体地,视频解码器根据该索引从候选运动矢量中确定出的目标候选运动矢量组用于作为最优候选运动矢量预测值(可选的,当候选运动矢量预测值MVP列表的长度为1时,不需要解析码流得到索引,直接可以确定目标运动矢量组),下面对该最优优选运动矢量预测值进行简单介绍。
若当前解码块的参数模型是4参数仿射变换模型,那么从以上建立的候选运动矢量预测值MVP列表中选择的是2个控制点的最优运动矢量预测值;例如,该视频解码器从码流中解析索引号,再根据索引号从二元组的候选运动矢量预测值MVP列表中确定2个控制点的最优运动矢量预测值,该候选运动矢量预测值MVP列表中每组候选运动矢量预测值各自对应有各自的索引号。
若当前解码块的参数模型是6参数仿射变换模型,那么从以上建立的候选运动矢量预测值MVP列表中选择的是3个控制点的最优运动矢量预测值;例如,该视频解码器从码流中解析索引号,再根据索引号从三元组的候选运动矢量预测值MVP列表中确定3个控制点的最优运动矢量预测值,该候选运动矢量预测值MVP列表中每组候选运动矢量预测值各自对应有各自的索引号。
步骤S1214:视频解码器根据目标候选运动矢量组和从码流中解析出的运动矢量差值MVD确定当前解码块的控制点的运动矢量。
若当前解码块的参数模型是4参数仿射变换模型,那么从码流中解码得到当前解码块2个控制点的运动矢量差值,分别根据各控制点的运动矢量差值和所述索引指示的目标候选运动矢量组获得新的候选运动矢量组。例如,从码流中解码得到左上控制点的运动矢量差值MVD和右上控制点的运动矢量差值MVD,并分别与目标候选运动矢量组中左上控制点和右上控制点的运动矢量相加从而得到新的候选运动矢量组,因此,该新的候选运动矢量组包括当前解码块左上控制点和右上控制点的新的运动矢量值。
可选的,还可以根据新的候选运动矢量组中当前解码块2个控制点的运动矢量值,采用4参数仿射变换模型获得第3个控制点的运动矢量值。例如,获得当前解码块左上控制点的运动矢量(vx0,vy0)和右上控制点的运动矢量(vx1,vy1),然后利用公式(7)计算获得当前解码块左下控制点(x2,y2)的运动矢量(vx2,vy2)。
其中,(x0,y0)为左上控制点的位置坐标,(x1,y1)为右上控制点的位置坐标,W为当前解码块的宽,H为当前解码块的高。
若当前解码块参数模型是6参数仿射变换模型,那么从码流中解码得到当前解码块3个控制点的运动矢量差值,分别根据各控制点的运动矢量差值MVD和所述索引指示的目标候选运动矢量组获得新的候选运动矢量组。例如,从码流中解码得到左上控制点的运动矢量差值MVD、右上控制点的运动矢量差值MVD和左下控制点的运动矢量差值,并分别与目标候选运动矢量组中左上控制点、右上控制点、左下控制点的运动矢量相加从而得到新的候选运动矢量组,因此该新的候选运动矢量组包括当前解码块左上控制点、右上控制点和左下控制点的运动矢量值。
步骤S1215:视频解码器根据以上确定出的当前解码块的控制点的运动矢量值采用仿射变换模型获得当前解码块中每个子块的运动矢量值。
具体地,基于目标候选运动矢量组和MVD得到的新的候选运动矢量组中包括两个(左上控制点和右上控制点)或者三个控制点(例如,左上控制点、右上控制点和左下控制点)的运动矢量。对于当前解码块的每一个子块(一个子块也可以等效为一个运动补偿单元),可采用运动补偿单元中预设位置像素点的运动信息来表示该运动补偿单元内所有像素点的运动信息。假设运动补偿单元的尺寸为MxN(M小于等于当前解码块的宽度W,N小于等于当前解码块的高度H,其中M、N、W、H为正整数,通常为2的幂次方,如4、8、16、32、64、128等),则预设位置像素点可以为运动补偿单元中心点(M/2,N/2)、左上像素点(0,0),右上像素点(M-1,0),或其他位置的像素点。图8A示意了4x4的运动补偿单元,图8B示意了8x8的运动补偿单元。
运动补偿单元中心点相对于当前解码块左上顶点像素的坐标使用公式(8-1)计算得到,其中i为水平方向第i个运动补偿单元(从左到右),j为竖直方向第j个运动补偿单元(从上到下),(x(i,j),y(i,j))表示第(i,j)个运动补偿单元中心点相对于当前解码块左上控制点像素的坐标。再根据当前解码块的仿射模型类型(6参数或4参数),将(x(i,j),y(i,j))代入6参数仿射模型公式(8-2)或者将(x(i,j),y(i,j))代入4参数仿射模型公式(8-3),获得每个运动补偿单元中心点的运动信息,作为该运动补偿单元内所有像素点的运动矢量(vx(i,j),vy(i,j))。
/>
可选的,当前解码块为6参数解码块时,在基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量时,若所述当前解码块的下边界与所述当前解码块所在的CTU的下边界重合,则所述当前解码块的左下角的子块的运动矢量为根据所述三个控制点构造的6参数仿射模型和所述当前解码块的左下角的位置坐标(0,H)计算得到,所述当前解码块的右下角的子块的运动矢量为根据所述三个控制点构造的6参数仿射模型和所述当前解码块的右下角的位置坐标(W,H)计算得到。例如,将当前解码块的左下角的位置坐标(0,H)代入到该6参数仿射模型即可得到当前解码块的左下角的子块的运动矢量(而不是将左下角的子块的中心点坐标代入该仿射模型进行计算),将当前解码块的右下角的位置坐标(W,H)代入到该6参数仿射模型即可得到当前解码块的右下角的子块的运动矢量(而不是将右下角的子块的中心点坐标代入该仿射模型进行计算)。这样一来,该当前解码块的左下控制点的运动矢量和右下控制点的运动矢量被用到时(例如,后续其他块基于该当前块的左下控制点和右下控制点的运动矢量构建该其他块的候选运动矢量预测值MVP列表),用到的是准确的值而不是估算值。其中,W为该当前解码块的宽,H为该当前解码块的高。
可选的,当前解码块为4参数解码块时,在基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量时,若所述当前解码块的下边界与所述当前解码块所在的CTU的下边界重合,则所述当前解码块的左下角的子块的运动矢量为根据所述两个控制点构造的4参数仿射模型和所述当前解码块的左下角的位置坐标(0,H)计算得到,所述当前解码块的右下角的子块的运动矢量为根据所述两个控制点构造的4参数仿射模型和所述当前解码块的右下角的位置坐标(W,H)计算得到。例如,将当前解码块的左下角的位置坐标(0,H)代入到该4参数仿射模型即可得到当前解码块的左下角的子块的运动矢量(而不是将左下角的子块的中心点坐标代入该仿射模型进行计算),将当前解码块的右下角的位置坐标(W,H)代入到该四参数仿射模型即可得到当前解码块的右下角的子块的运动矢量(而不是将右下角的子块的中心点坐标代入该仿射模型进行计算)。这样一来,该当前解码块的左下控制点的运动矢量和右下控制点的运动矢量被用到时(例如,后续其他块基于该当前块的左下控制点和右下控制点的运动矢量构建该其他块的候选运动矢量预测值MVP列表),用到的是准确的值而不是估算值。其中,W为该当前解码块的宽,H为该当前解码块的高。
步骤S1216:该视频解码器根据该当前解码块中每个子块的运动矢量值进行运动补偿,以得到每个子块的像素预测值,例如,通过每个子块的运动矢量和参考帧索引值,在参考帧中找到对应的子块,进行插值滤波,得到每个子块的像素预测值。
Merge模式:
步骤S1221:视频解码器构建候选运动信息列表。
具体地,视频解码器通过帧间预测单元(也称帧间预测模块)来构建候选运动信息列表(也称候选运动矢量列表),可以采用如下提供的两种方式中的一种方式来构建,或者采用两种方式结合的形式来构建,构建的候选运动信息列表为三元组的候选运动信息列表;以上两种方式具体如下:
方式一,采用基于运动模型的运动矢量预测方法构建候选运动信息列表。
首先,按照预先规定的顺序遍历当前解码块的全部或部分相邻块,从而确定其中的相邻仿射解码块,确定出的相邻仿射解码块的数量可能为一个也可能为多个。例如,可以依次遍历图7A所示的相邻块A、B、C、D、E,以确定出相邻块A、B、C、D、E中的相邻仿射解码块。该帧间预测单元会根据每个相邻仿射解码块确定一组候选运动矢量预测值(每一组候选运动矢量预测值为一个二元组或者三元组),下面以一个相邻仿射解码块为例进行介绍,为了便于描述称该一个相邻仿射解码块为第一相邻仿射解码块,具体如下:
根据第一相邻仿射解码块的控制点的运动矢量确定第一仿射模型,进而根据第一仿射模型预测该当前解码块的控制点的运动矢量,具体描述如下:
若该第一相邻仿射解码块位于当前解码块的上方CTU且该第一相邻仿射解码块为四参数仿射解码块,则获取该第一相邻仿射解码块最下侧两个控制点的位置坐标和运动矢量,例如,可以获取该第一相邻仿射解码块左下控制点的位置坐标(x6,y6)和运动矢量(vx6,vy6),以及右下控制点的位置坐标(x7,y7)和运动矢量值(vx7,vy7)。
根据该第一相邻仿射解码块最下侧两个控制点的运动矢量组成第一仿射模型(此时得到的第一仿射模型为一个4参数仿射模型)。
可选的,根据该第一仿射模型预测当前解码块的控制点的运动矢量,例如,可以将该当前解码块的左上控制点的位置坐标、右上控制点的位置坐标、左下控制点的位置坐标分别带入到该第一仿射模型,从而预测当前解码块的左上控制点的运动矢量、右上控制点的运动矢量和左下控制点的运动矢量,组成候选运动矢量三元组,加入候选运动信息列表,具体如公式(1)、(2)、(3)所示。
可选的,根据该第一仿射模型预测当前解码块的控制点的运动矢量,例如,可以将该当前解码块的左上控制点的位置坐标、右上控制点的位置坐标分别带入到该第一仿射模型,从而预测当前解码块的左上控制点的运动矢量和右上控制点的运动矢量,组成候选运动矢量二元组,加入候选运动信息列表,具体如公式(1)、(2)所示。
在公式(1)、(2)、(3)中,(x0,y0)为当前解码块的左上控制点的坐标,(x1,y1)为当前解码块的右上控制点的坐标,(x2,y2)为当前解码块的左下控制点的坐标;另外,(vx0,vy0)为预测的当前解码块的左上控制点的运动矢量,(vx1,vy1)为预测的当前解码块的右上控制点的运动矢量,(vx2,vy2)为预测的当前解码块的左下控制点的运动矢量。
若第一相邻仿射解码块位于当前解码块上方的编码树单元(Coding Tree Unit,CTU)且所述第一相邻仿射解码块为六参数仿射解码块,则不基于第一相邻仿射解码块生成当前块的控制点的候选运动矢量预测值。
若该第一相邻仿射解码块不位于当前解码块的上方CTU,则预测当前解码块的控制点的运动矢量的方式此处不作限定。但是为了便于理解,下面也例举一种可选的确定方式:
可以获取该第一相邻仿射解码块的三个控制点的位置坐标和运动矢量,例如,左上控制点的位置坐标(x4,y4)和运动矢量值(vx4,vy4)、右上控制点的位置坐标(x5,y5)和运动矢量值(vx5,vy5)、左下控制点的位置坐标(x6,y6)和运动矢量(vx6,vy6)。
根据该第一相邻仿射解码块的三个控制点的位置坐标和运动矢量组成6参数仿射模型。
将该当前解码块的左上控制点的位置坐标(x0,y0)、右上控制点的位置坐标(x1,y1)和左下控制点的位置坐标(x2,y2)代入6参数仿射模型预测当前解码块的左上控制点的运动矢量,右上控制点的运动矢量,及左下控制点的运动矢量,如公式(4)、(5)、(6)所示。
公式(4)、(5)前面已有描述,在公式(4)、(5)、(6)中,(vx0,vy0)为预测的当前解码块的左上控制点的运动矢量,(vx1,vy1)为预测的当前解码块的右上控制点的运动矢量,(vx2,vy2)为预测的当前解码块的左下控制点的运动矢量。
方式二,采用基于控制点组合的运动矢量预测方法构建候选运动信息列表。
下面例举两种方案,分别表示为方案A和方案B:
方案A:将当前解码块的2个控制点的运动信息进行组合,用来构建4参数仿射变换模型。2个控制点的组合方式为{CP1,CP4},{CP2,CP3},{CP1,CP2},{CP2,CP4},{CP1,CP3},{CP3,CP4}。例如,采用CP1和CP2控制点构建的4参数仿射变换模型,记做Affine(CP1,CP2)。
需要说明的是,亦可将不同控制点的组合转换为同一位置的控制点。例如:将{CP1,CP4},{CP2,CP3},{CP2,CP4},{CP1,CP3},{CP3,CP4}组合得到的4参数仿射变换模型转换为控制点{CP1,CP2}或{CP1,CP2,CP3}来表示。转换方法为将控制点的运动矢量及其坐标信息,代入公式(9-1),得到模型参数,再将{CP1,CP2}的坐标信息代入,得到其运动矢量,作为一组候选运动矢量预测值。
在公式(9-1)中,a0,a1,a2,a3均为参数模型中的参数,(x,y)表示位置坐标。
更直接地,也可以按照以下公式进行转换得到以左上控制点、右上控制点表示的一组运动矢量预测值,并加入候选运动信息列表:
{CP1,CP2}转换得到{CP1,CP2,CP3}的公式(9-2):
{CP1,CP3}转换得到{CP1,CP2,CP3}的公式(9-3):
{CP2,CP3}转换得到{CP1,CP2,CP3}的公式(10):
{CP1,CP4}转换得到{CP1,CP2,CP3}的公式(11):
{CP2,CP4}转换得到{CP1,CP2,CP3}的公式(12):
{CP3,CP4}转换得到{CP1,CP2,CP3}的公式(13):
方案B:将当前解码块的3个控制点的运动信息进行组合,用来构建6参数仿射变换模型。3个控制点的组合方式为{CP1,CP2,CP4},{CP1,CP2,CP3},{CP2,CP3,CP4},{CP1,CP3,CP4}。例如,采用CP1、CP2和CP3控制点构建的6参数仿射变换模型,记做Affine(CP1,CP2,CP3)。
要说明的是,亦可将不同控制点的组合转换为同一位置的控制点。例如:将{CP1,CP2,CP4},{CP2,CP3,CP4},{CP1,CP3,CP4}组合的6参数仿射变换模型转换为控制点{CP1,CP2,CP3}来表示。转换方法为将控制点的运动矢量及其坐标信息,代入公式(14),得到模型参数,再将{CP1,CP2,CP3}的坐标信息代入,得到其运动矢量,作为一组候选运动矢量预测值。
在公式(14)中,a1,a2,a3,a4,a5,a6为参数模型中的参数,(x,y)表示位置坐标。
更直接地,也可以按照以下公式进行转换得到以左上控制点、右上控制点、左下控制点表示的一组运动矢量预测值,并加入候选运动信息列表:
{CP1,CP2,CP4}转换得到{CP1,CP2,CP3}的公式(15):
{CP2,CP3,CP4}转换得到{CP1,CP2,CP3}的公式(16):
{CP1,CP3,CP4}转换得到{CP1,CP2,CP3}的公式(17):
需要说明的是,可仅采用方式一预测得到的候选运动矢量预测值来构建候选运动信息列表,也可仅采用方式二预测得到的候选运动矢量预测值来构建候选运动信息列表,还可采用方式一预测得到的候选运动矢量预测值和方式二预测得到的候选运动矢量预测值来共同构建候选运动信息列表。另外,还可将候选运动信息列表按照预先配置的规则进行剪枝和排序,然后将其截断或填充至特定个数。当候选运动信息列表中的每一组候选运动矢量预测值包括三个控制点的运动矢量预测值时,可称该候选运动信息列表为三元组列表;当候选运动信息列表中的每一组候选运动矢量预测值包括两个控制点的运动矢量预测值时,可称该候选运动信息列表为二元组列表。
步骤S1222:视频解码器解析码流,以得到索引。
具体地,视频解码器可以通过熵解码单元解析码流,该索引用于指示当前解码块的目标候选运动矢量组,该目标候选运动矢量表示当前解码块的一组控制点的运动矢量预测值。
步骤S1223:视频解码器根据所述索引,从候选运动信息列表中确定目标运动矢量组。具体地,频解码器根据该索引从候选运动矢量中确定出的目标候选运动矢量组用于作为最优候选运动矢量预测值(可选的,当候选运动信息列表的长度为1时,不需要解析码流得到索引,直接可以确定目标运动矢量组),具体来说是2个或3个控制点的最优运动矢量预测值;例如,视频解码器从码流中解析索引号,再根据索引号从候选运动信息列表中确定2个或3个控制点的最优运动矢量预测值,候选运动信息列表中每组候选运动矢量预测值各自对应有各自的索引号。
步骤S1224:视频解码器根据以上确定出的当前解码块的控制点的运动矢量值采用参数仿射变换模型获得当前解码块中每个子块的运动矢量值。
具体地,即目标候选运动矢量组中包括的两个(左上控制点和右上控制点)或者三个控制点(例如,左上控制点、右上控制点和左下控制点)的运动矢量。对于当前解码块的每一个子块(一个子块也可以等效为一个运动补偿单元),可采用运动补偿单元中预设位置像素点的运动信息来表示该运动补偿单元内所有像素点的运动信息。假设运动补偿单元的尺寸为MxN(M小于等于当前解码块的宽度W,N小于等于当前解码块的高度H,其中M、N、W、H为正整数,通常为2的幂次方,如4、8、16、32、64、128等),则预设位置像素点可以为运动补偿单元中心点(M/2,N/2)、左上像素点(0,0),右上像素点(M-1,0),或其他位置的像素点。图8A示意了4x4的运动补偿单元,图8B示意了8x8的运动补偿单元。
运动补偿单元中心点相对于当前解码块左上顶点像素的坐标使用公式(5)计算得到,其中i为水平方向第i个运动补偿单元(从左到右),j为竖直方向第j个运动补偿单元(从上到下),(x(i,j),y(i,j))表示第(i,j)个运动补偿单元中心点相对于当前解码块左上控制点像素的坐标。再根据当前解码块的仿射模型类型(6参数或4参数),将(x(i,j),y(i,j))代入6参数仿射模型公式(6-1)或者将(x(i,j),y(i,j))代入4参数仿射模型公式(6-2),获得每个运动补偿单元中心点的运动信息,作为该运动补偿单元内所有像素点的运动矢量(vx(i,j),vy(i,j))。
可选的,当前解码块为6参数解码块时,在基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量时,若所述当前解码块的下边界与所述当前解码块所在的CTU的下边界重合,则所述当前解码块的左下角的子块的运动矢量为根据所述三个控制点构造的6参数仿射模型和所述当前解码块的左下角的位置坐标(0,H)计算得到,所述当前解码块的右下角的子块的运动矢量为根据所述三个控制点构造的6参数仿射模型和所述当前解码块的右下角的位置坐标(W,H)计算得到。例如,将当前解码块的左下角的位置坐标(0,H)代入到该6参数仿射模型即可得到当前解码块的左下角的子块的运动矢量(而不是将左下角的子块的中心点坐标代入该仿射模型进行计算),将当前解码块的右下角的位置坐标(W,H)代入到该6参数仿射模型即可得到当前解码块的右下角的子块的运动矢量(而不是将右下角的子块的中心点坐标代入该仿射模型进行计算)。这样一来,该当前解码块的左下控制点的运动矢量和右下控制点的运动矢量被用到时(例如,后续其他块基于该当前块的左下控制点和右下控制点的运动矢量构建该其他块的候选运动信息列表),用到的是准确的值而不是估算值。其中,W为该当前解码块的宽,H为该当前解码块的高。
可选的,当前解码块为4参数解码块时,在基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量时,若所述当前解码块的下边界与所述当前解码块所在的CTU的下边界重合,则所述当前解码块的左下角的子块的运动矢量为根据所述两个控制点构造的4参数仿射模型和所述当前解码块的左下角的位置坐标(0,H)计算得到,所述当前解码块的右下角的子块的运动矢量为根据所述两个控制点构造的4参数仿射模型和所述当前解码块的右下角的位置坐标(W,H)计算得到。例如,将当前解码块的左下角的位置坐标(0,H)代入到该4参数仿射模型即可得到当前解码块的左下角的子块的运动矢量(而不是将左下角的子块的中心点坐标代入该仿射模型进行计算),将当前解码块的右下角的位置坐标(W,H)代入到该四参数仿射模型即可得到当前解码块的右下角的子块的运动矢量(而不是将右下角的子块的中心点坐标代入该仿射模型进行计算)。这样一来,该当前解码块的左下控制点的运动矢量和右下控制点的运动矢量被用到时(例如,后续其他块基于该当前块的左下控制点和右下控制点的运动矢量构建该其他块的候选运动信息列表),用到的是准确的值而不是估算值。其中,W为该当前解码块的宽,H为该当前解码块的高。
步骤S1225:该视频解码器根据该当前解码块中每个子块的运动矢量值进行运动补偿,以得到每个子块的像素预测值,具体来说,根据所述当前解码块的一个或多个子块的运动矢量,以及所述索引指示的参考帧索引和预测方向,预测得到所述当前解码块的像素预测值。
可以理解的是,当所述第一相邻仿射解码块所在的解码树单元CTU在所述当前解码块位置的上方时,该第一相邻仿射解码块最下方控制点的信息已经从内存中读取过;因此上述方案在根据第一相邻仿射解码块的第一组控制点构建候选运动矢量的过程中,该第一组控制点包括所述第一相邻仿射解码块的左下控制点和右下控制点;而不是像现有技术那样固定将第一相邻解码块的左上控制点、右上控制点和左下控制点作为第一组控制点(或者固定将第一相邻解码块的左上控制点和右上控制点作为第一组控制点)。因此采用本申请中确定第一组控制点的方法,第一组控制点的信息(例如,位置坐标、运动矢量等)可以直接复用从内存中读取过的信息,从而减少了内存的读取,提高了解码性能。
图10为本申请实施例的编码设备或解码设备(简称为译码设备1000)的一种实现方式的示意性框图。其中,译码设备1000可以包括处理器1010、存储器1030和总线***1050。其中,处理器和存储器通过总线***相连,该存储器用于存储指令,该处理器用于执行该存储器存储的指令。编码设备的存储器存储程序代码,且处理器可以调用存储器中存储的程序代码执行本申请描述的各种视频编码或解码方法,尤其是在各种新的帧间预测模式下的视频编码或解码方法,以及在各种新的帧间预测模式下预测运动信息的方法。为避免重复,这里不再详细描述。
在本申请实施例中,该处理器1010可以是中央处理单元(Central ProcessingUnit,简称为“CPU”),该处理器1010还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器1030可以包括只读存储器(ROM)设备或者随机存取存储器(RAM)设备。任何其他适宜类型的存储设备也可以用作存储器1030。存储器1030可以包括由处理器1010使用总线1050访问的代码和数据1031。存储器1030可以进一步包括操作***1033和应用程序1035,该应用程序1035包括允许处理器1010执行本申请描述的视频编码或解码方法(尤其是本申请描述的编码方法或解码方法)的至少一个程序。例如,应用程序1035可以包括应用1至N,其进一步包括执行在本申请描述的视频编码或解码方法的视频编码或解码应用(简称视频译码应用)。
该总线***1050除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线***1050。
可选的,译码设备1000还可以包括一个或多个输出设备,诸如显示器1070。在一个示例中,显示器1070可以是触感显示器,其将显示器与可操作地感测触摸输入的触感单元合并。显示器1070可以经由总线1050连接到处理器1010。
图11是根据一示例性实施例的包含图2A的编码器100和/或图2B的解码器200的视频编码***1100的实例的说明图。***1100可以实现本申请的各种技术的组合。在所说明的实施方式中,视频编码***1100可以包含成像设备1101、视频编码器100、视频解码器200(和/或藉由处理单元1106的逻辑电路1107实施的视频编码器)、天线1102、一个或多个处理器1103、一个或多个存储器1104和/或显示设备1105。
如图所示,成像设备1101、天线1102、处理单元1106、逻辑电路1107、视频编码器100、视频解码器200、处理器1103、存储器1104和/或显示设备1105能够互相通信。如所论述,虽然用视频编码器100和视频解码器200绘示视频编码***1100,但在不同实例中,视频编码***1100可以只包含视频编码器100或只包含视频解码器200。
在一些实例中,如图所示,视频编码***1100可以包含天线1102。例如,天线1102可以用于传输或接收视频数据的经编码比特流。另外,在一些实例中,视频编码***1100可以包含显示设备1105。显示设备1105可以用于呈现视频数据。在一些实例中,如图所示,逻辑电路1107可以通过处理单元1106实施。处理单元1106可以包含专用集成电路(application-specific integrated circuit,ASIC)逻辑、图形处理器、通用处理器等。视频编码***1100也可以包含可选处理器1103,该可选处理器1103类似地可以包含专用集成电路(application-specific integrated circuit,ASIC)逻辑、图形处理器、通用处理器等。在一些实例中,逻辑电路1107可以通过硬件实施,如视频编码专用硬件等,处理器1103可以通过通用软件、操作***等实施。另外,存储器1104可以是任何类型的存储器,例如易失性存储器(例如,静态随机存取存储器(Static Random Access Memory,SRAM)、动态随机存储器(Dynamic Random Access Memory,DRAM)等)或非易失性存储器(例如,闪存等)等。在非限制性实例中,存储器1104可以由超速缓存内存实施。在一些实例中,逻辑电路1107可以访问存储器1104(例如用于实施图像缓冲器)。在其它实例中,逻辑电路1107和/或处理单元1106可以包含存储器(例如,缓存等)用于实施图像缓冲器等。
在一些实例中,通过逻辑电路实施的视频编码器100可以包含(例如,通过处理单元1106或存储器1104实施的)图像缓冲器和(例如,通过处理单元1106实施的)图形处理单元。图形处理单元可以通信耦合至图像缓冲器。图形处理单元可以包含通过逻辑电路1107实施的视频编码器100,以实施参照图2A和/或本文中所描述的任何其它编码器***或子***所论述的各种模块。逻辑电路可以用于执行本文所论述的各种操作。
视频解码器200可以以类似方式通过逻辑电路1107实施,以实施参照图2B的解码器200和/或本文中所描述的任何其它解码器***或子***所论述的各种模块。在一些实例中,逻辑电路实施的视频解码器200可以包含(通过处理单元2820或存储器1104实施的)图像缓冲器和(例如,通过处理单元1106实施的)图形处理单元。图形处理单元可以通信耦合至图像缓冲器。图形处理单元可以包含通过逻辑电路1107实施的视频解码器200,以实施参照图2B和/或本文中所描述的任何其它解码器***或子***所论述的各种模块。
在一些实例中,视频编码***1100的天线1102可以用于接收视频数据的经编码比特流。如所论述,经编码比特流可以包含本文所论述的与编码视频帧相关的数据、指示符、索引值、模式选择数据等,例如与编码分割相关的数据(例如,变换系数或经量化变换系数,(如所论述的)可选指示符,和/或定义编码分割的数据)。视频编码***1100还可包含耦合至天线1102并用于解码经编码比特流的视频解码器200。显示设备1105用于呈现视频帧。
以上方法流程的步骤中,步骤的描述顺序并不代表步骤的执行顺序,按照以上的描述顺序来执行是可行的,不按照以上的描述顺序来执行也是可行的。例如上述步骤S1211可以在步骤S1212之后执行,也可以在步骤S1212之前执行;上述步骤S1221可以在步骤S1222之后执行,也可以在步骤S1222之前执行;其余步骤此处不再一一举例。
本领域技术人员能够领会,结合本文公开描述的各种说明性逻辑框、模块和算法步骤所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么各种说明性逻辑框、模块、和步骤描述的功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包括任何促进将计算机程序从一处传送到另一处的媒体(例如,根据通信协议)的通信媒体。以此方式,计算机可读媒体大体上可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本申请中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。
作为实例而非限制,此类计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来存储指令或数据结构的形式的所要程序代码并且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,那么同轴缆线、光纤缆线、双绞线、DSL或例如红外线、无线电和微波等无线技术包含在媒体的定义中。但是,应理解,所述计算机可读存储媒体和数据存储媒体并不包括连接、载波、信号或其它暂时媒体,而是实际上针对于非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
可通过例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文中所描述的各种说明性逻辑框、模块、和步骤所描述的功能可以提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或者并入在组合编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。
本申请的技术可在各种各样的装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本申请中描述各种组件、模块或单元是为了强调用于执行所揭示的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元(包含如上文所描述的一或多个处理器)来提供。
以上所述,仅为本申请示例性的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

Claims (32)

1.一种编码方法,其特征在于,包括:
根据率失真代价准则,从候选运动矢量列表中确定目标候选运动矢量组;所述目标候选运动矢量组表示当前编码块的一组控制点的运动矢量预测值;
将与所述目标候选运动矢量对应的索引编入码流,并传输所述码流;
其中,如果第一相邻仿射编码块为四参数仿射编码块,且所述第一相邻仿射编码块位于所述当前编码块的上方编码树单元CTU,则所述候选运动矢量列表包括第一组候选运动矢量预测值,所述第一组候选运动矢量预测值是基于所述第一相邻仿射编码块的左下控制点和右下控制点得到的,所述第一组候选运动矢量预测值对应于所述当前编码块的仿射模型。
2.根据权利要求1所述的方法,其特征在于:
如果所述当前编码块为四参数仿射编码块,则所述第一组候选运动矢量预测值用于表示所述当前编码块的左上控制点和右上控制点的运动矢量预测值;
如果所述当前编码块为六参数仿射编码块,则所述第一组候选运动矢量预测值用于表示所述当前编码块的左上控制点、右上控制点和左下定点控制点的运动矢量预测值。
3.根据权利要求2所述的方法,其特征在于:所述第一组候选运动矢量预测值是基于所述第一相邻仿射编码块的左下控制点和右下控制点得到的,具体为:
如果所述当前编码块为四参数仿射编码块,所述第一组候选运动矢量预测值是将所述当前编码块的左上控制点和右上控制点的位置坐标代入第一仿射模型得到的;或者,
如果所述当前编码块为六参数仿射编码块,所述第一组候选运动矢量预测值是将所述当前编码块的左上控制点、右上控制点和左下定点控制点的位置坐标代入第一仿射模型得到的;
其中,所述第一仿射模型是基于所述第一相邻仿射编码块的左下控制点和右下控制点的运动矢量及位置坐标确定的。
4.根据权利要求1-3任一项所述的方法,其特征在于,还包括:
以所述目标候选运动矢量组为搜索起始点在预设搜索范围内按照率失真代价准则搜索代价最低的一组控制点的运动矢量;
确定所述一组控制点的运动矢量与所述目标候选运动矢量组之间的运动矢量差值MVD;
所述将与所述目标候选运动矢量对应的索引编入码流,并传输所述码流,包括:
将所述MVD和与所述目标候选运动矢量组对应的索引编入待传输的码流,并传输所述码流。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述将与所述目标候选运动矢量对应的索引编入码流,并传输所述码流,包括:
将与所述目标候选运动矢量组、参考帧索引和预测方向对应的索引编入码流,并传输所述码流。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述第一相邻仿射编码块的左下控制点的位置坐标(x6,y6)和所述右下控制点的位置坐标(x7,y7)均为基于所述第一相邻仿射编码块的左上控制点的位置坐标(x4,y4)计算推导得到的,其中,所述第一相邻仿射编码块的左下控制点的位置坐标(x6,y6)为(x4,y4+cuH),所述第一相邻仿射编码块的右下控制点的位置坐标(x7,y7)为(x4+cuW,y4+cuH),cuW为所述第一相邻仿编码块的宽度,cuH为所述第一相邻仿射编码块的高度。
7.根据权利要求6所述的方法,其特征在于,所述第一相邻仿射编码块的左下控制点的运动矢量为所述第一相邻仿射编码块的左下子块的运动矢量,所述第一相邻仿射编码块的右下控制点的运动矢量为所述第一相邻仿射编码块的右下子块的运动矢量。
8.一种解码方法,其特征在于,包括:
解析码流,以得到索引,所述索引用于指示当前解码块的目标候选运动矢量组;
根据所述索引,从候选运动矢量列表中确定所述目标候选运动矢量组,所述目标候选运动矢量组表示当前解码块的一组控制点的运动矢量预测值,其中,如果第一相邻仿射解码块为四参数仿射解码块,且所述第一相邻仿射解码块位于所述当前解码块的上方解码树单元CTU,则所述候选运动矢量列表包括第一组候选运动矢量预测值,所述第一组候选运动矢量预测值是基于所述第一相邻仿射解码块的左下控制点和右下控制点得到的,所述第一组候选运动矢量预测值对应于当前编码块的仿射模型;
基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量;
基于所述当前解码块的一个或多个子块的运动矢量,预测得到所述当前解码块的像素预测值。
9.根据权利要求8所述的方法,其特征在于:
如果所述当前解码块为四参数仿射解码块,则所述第一组候选运动矢量预测值用于表示所述当前解码块的左上控制点和右上控制点的运动矢量预测值;
如果所述当前解码块为六参数仿射解码块,则所述第一组候选运动矢量预测值用于表示所述当前解码块的左上控制点、右上控制点和左下定点控制点的运动矢量预测值。
10.根据权利要求9所述的方法,其特征在于:所述第一组候选运动矢量预测值是基于所述第一相邻仿射解码块的左下控制点和右下控制点得到的,具体为:
如果所述当前解码块为四参数仿射解码块,所述第一组候选运动矢量预测值是将所述当前解码块的左上控制点和右上控制点的位置坐标代入第一仿射模型得到的;或者,
如果所述当前解码块为六参数仿射解码块,所述第一组候选运动矢量预测值是将所述当前解码块的左上控制点、右上控制点和左下定点控制点的位置坐标代入第一仿射模型得到的;
其中,所述第一仿射模型是基于所述第一相邻仿射解码块的左下控制点和右下控制点的运动矢量及位置坐标确定的。
11.根据权利要求8-10任一项所述的方法,其特征在于,所述基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量,具体为:
基于第二仿射模型得到所述当前解码块的一个或多个子块的运动矢量,所述第二仿射模型是基于所述目标候选运动矢量组和所述当前解码块的一组控制点的位置坐标确定的。
12.根据权利要求8-10任一项所述的方法,其特征在于,所述基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量,包括:
基于从所述码流中解析得到的运动矢量差值MVD与所述索引指示的目标候选运动矢量组,得到新的候选运动矢量组;
基于所述新的候选运动矢量组,得到所述当前解码块的一个或多个子块的运动矢量。
13.根据权利要求8-10任一项所述的方法,其特征在于,所述基于所述当前解码块的一个或多个子块的运动矢量,预测得到所述当前解码块的像素预测值,包括:
根据所述当前解码块的一个或多个子块的运动矢量,以及所述索引指示的参考帧索引和预测方向,预测得到所述当前解码块的像素预测值。
14.根据权利要求8-10任一项所述的方法,其特征在于,所述第一相邻仿射解码块的左下控制点的位置坐标(x6,y6)和所述右下控制点的位置坐标(x7,y7)均为根据所述第一相邻仿射解码块的左上控制点的位置坐标(x4,y4)计算推导得到的,其中,所述第一相邻仿射解码块的左下控制点的位置坐标(x6,y6)为(x4,y4+cuH),所述第一相邻仿射解码块的右下控制点的位置坐标(x7,y7)为(x4+cuW,y4+cuH),cuW为所述第一相邻仿射解码块的宽度,cuH为所述第一相邻仿射解码块的高度。
15.根据权利要求14所述的方法,其特征在于,所述第一相邻仿射解码块的左下控制点的运动矢量为所述第一相邻仿射解码块的左下子块的运动矢量,所述第一相邻仿射解码块的右下控制点的运动矢量为第一相邻仿射解码块的右下子块的运动矢量。
16.根据权利要求15任一项所述的方法,其特征在于,在所述基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量的过程中,若所述当前解码块的下边界与所述当前解码块所在的CTU的下边界重合,则所述当前解码块的左下顶点的子块的运动矢量为根据所述目标候选运动矢量组和所述当前解码块的左下顶点的位置坐标(0,H)计算得到,所述当前解码块的右下顶点的子块的运动矢量为根据所述目标候选运动矢量组和所述当前解码块的右下顶点的位置坐标(W,H)计算得到,其中,W等于所述当前解码块的宽,H等于所述当前解码块的高,当前解码块的左上顶点的坐标是(0,0)。
17.一种视频编码器,其特征在于,包括:
帧间预测单元,用于根据率失真代价准则,从候选运动矢量列表中确定目标候选运动矢量组;所述目标候选运动矢量组表示当前编码块的一组控制点的运动矢量预测值;
熵编码单元,用于将与所述目标候选运动矢量对应的索引编入码流,并传输所述码流;
其中,如果第一相邻仿射编码块为四参数仿射编码块,且所述第一相邻仿射编码块位于所述当前编码块的上方编码树单元CTU,则所述候选运动矢量列表包括第一组候选运动矢量预测值,所述第一组候选运动矢量预测值是基于所述第一相邻仿射编码块的左下控制点和右下控制点得到的,所述第一组候选运动矢量预测值对应于所述当前编码块的仿射模型。
18.根据权利要求17所述的视频编码器,其特征在于:
如果所述当前编码块为四参数仿射编码块,则所述第一组候选运动矢量预测值用于表示所述当前编码块的左上控制点和右上控制点的运动矢量预测值;
如果所述当前编码块为六参数仿射编码块,则所述第一组候选运动矢量预测值用于表示所述当前编码块的左上控制点、右上控制点和左下定点控制点的运动矢量预测值。
19.根据权利要求18所述的视频编码器,其特征在于:所述第一组候选运动矢量预测值是基于所述第一相邻仿射编码块的左下控制点和右下控制点得到的,具体为:
如果所述当前编码块为四参数仿射编码块,所述第一组候选运动矢量预测值是将所述当前编码块的左上控制点和右上控制点的位置坐标代入第一仿射模型得到的;或者,
如果所述当前编码块为六参数仿射编码块,所述第一组候选运动矢量预测值是将所述当前编码块的左上控制点、右上控制点和左下定点控制点的位置坐标代入第一仿射模型得到的;
其中,所述第一仿射模型是基于所述第一相邻仿射编码块的左下控制点和右下控制点的运动矢量及位置坐标确定的。
20.根据权利要求17-19任一项所述的视频编码器,其特征在于:
所述帧间预测单元,还用于以所述目标候选运动矢量组为搜索起始点在预设搜索范围内按照率失真代价准则搜索代价最低的一组控制点的运动矢量;以及,确定所述一组控制点的运动矢量与所述目标候选运动矢量组之间的运动矢量差值MVD;
所述熵编码单元具体用于,将所述MVD和与所述目标候选运动矢量组对应的索引编入待传输的码流,并传输所述码流。
21.根据权利要求17-19任一项所述的视频编码器,其特征在于,所述熵编码单元具体用于,将与所述目标候选运动矢量组、参考帧索引和预测方向对应的索引编入码流,并传输所述码流。
22.根据权利要求17-19任一项所述的视频编码器,其特征在于,所述第一相邻仿射编码块的左下控制点的位置坐标(x6,y6)和所述右下控制点的位置坐标(x7,y7)均为基于所述第一相邻仿射编码块的左上控制点的位置坐标(x4,y4)计算推导得到的,其中,所述第一相邻仿射编码块的左下控制点的位置坐标(x6,y6)为(x4,y4+cuH),所述第一相邻仿射编码块的右下控制点的位置坐标(x7,y7)为(x4+cuW,y4+cuH),cuW为所述第一相邻仿编码块的宽度,cuH为所述第一相邻仿射编码块的高度。
23.根据权利要求22所述的视频编码器,其特征在于,所述第一相邻仿射编码块的左下控制点的运动矢量为所述第一相邻仿射编码块的左下子块的运动矢量,所述第一相邻仿射编码块的右下控制点的运动矢量为所述第一相邻仿射编码块的右下子块的运动矢量。
24.一种视频解码器,其特征在于,包括:
熵解码单元,用于解析码流,以得到索引,所述索引用于指示当前解码块的目标候选运动矢量组;
帧间预测单元,用于根据所述索引,从候选运动矢量列表中确定所述目标候选运动矢量组,所述目标候选运动矢量组表示当前解码块的一组控制点的运动矢量预测值,其中,如果第一相邻仿射解码块为四参数仿射解码块,且所述第一相邻仿射解码块位于所述当前解码块的上方解码树单元CTU,则所述候选运动矢量列表包括第一组候选运动矢量预测值,所述第一组候选运动矢量预测值是基于所述第一相邻仿射解码块的左下控制点和右下控制点得到的,所述第一组候选运动矢量预测值对应于当前编码块的仿射模型;以及基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量;基于所述当前解码块的一个或多个子块的运动矢量,预测得到所述当前解码块的像素预测值。
25.根据权利要求24所述的视频解码器,其特征在于:
如果所述当前解码块为四参数仿射解码块,则所述第一组候选运动矢量预测值用于表示所述当前解码块的左上控制点和右上控制点的运动矢量预测值;
如果所述当前解码块为六参数仿射解码块,则所述第一组候选运动矢量预测值用于表示所述当前解码块的左上控制点、右上控制点和左下定点控制点的运动矢量预测值。
26.根据权利要求25所述的视频解码器,其特征在于:所述第一组候选运动矢量预测值是基于所述第一相邻仿射解码块的左下控制点和右下控制点得到的,具体为:
如果所述当前解码块为四参数仿射解码块,所述第一组候选运动矢量预测值是将所述当前解码块的左上控制点和右上控制点的位置坐标代入第一仿射模型得到的;或者,
如果所述当前解码块为六参数仿射解码块,所述第一组候选运动矢量预测值是将所述当前解码块的左上控制点、右上控制点和左下定点控制点的位置坐标代入第一仿射模型得到的;
其中,所述第一仿射模型是基于所述第一相邻仿射解码块的左下控制点和右下控制点的运动矢量及位置坐标确定的。
27.根据权利要求24-26任一项所述的视频解码器,其特征在于,所述帧间预测单元,用于基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量,具体为:基于第二仿射模型得到所述当前解码块的一个或多个子块的运动矢量,所述第二仿射模型是基于所述目标候选运动矢量组和所述当前解码块的一组控制点的位置坐标确定的。
28.根据权利要求24-26任一项所述的视频解码器,其特征在于,所述帧间预测单元,用于基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量,具体为:基于从所述码流中解析得到的运动矢量差值MVD与所述索引指示的目标候选运动矢量组,得到新的候选运动矢量组;以及基于所述新的候选运动矢量组,得到所述当前解码块的一个或多个子块的运动矢量。
29.根据权利要求24-26任一项所述的视频解码器,其特征在于,所述帧间预测单元,用于基于所述当前解码块的一个或多个子块的运动矢量,预测得到所述当前解码块的像素预测值,具体为:根据所述当前解码块的一个或多个子块的运动矢量,以及所述索引指示的参考帧索引和预测方向,预测得到所述当前解码块的像素预测值。
30.根据权利要求24-26任一项所述的视频解码器,其特征在于,所述第一相邻仿射解码块的左下控制点的位置坐标(x6,y6)和所述右下控制点的位置坐标(x7,y7)均为根据所述第一相邻仿射解码块的左上控制点的位置坐标(x4,y4)计算推导得到的,其中,所述第一相邻仿射解码块的左下控制点的位置坐标(x6,y6)为(x4,y4+cuH),所述第一相邻仿射解码块的右下控制点的位置坐标(x7,y7)为(x4+cuW,y4+cuH),cuW为所述第一相邻仿射解码块的宽度,cuH为所述第一相邻仿射解码块的高度。
31.根据权利要求30所述的视频解码器,其特征在于,所述第一相邻仿射解码块的左下控制点的运动矢量为所述第一相邻仿射解码块的左下子块的运动矢量,所述第一相邻仿射解码块的右下控制点的运动矢量为第一相邻仿射解码块的右下子块的运动矢量。
32.根据权利要求31所述的视频解码器,其特征在于,在所述基于所述目标候选运动矢量组得到所述当前解码块的一个或多个子块的运动矢量的过程中,若所述当前解码块的下边界与所述当前解码块所在的CTU的下边界重合,则所述当前解码块的左下顶点的子块的运动矢量为根据所述目标候选运动矢量组和所述当前解码块的左下顶点的位置坐标(0,H)计算得到,所述当前解码块的右下顶点的子块的运动矢量为根据所述目标候选运动矢量组和所述当前解码块的右下顶点的位置坐标(W,H)计算得到,其中,W等于所述当前解码块的宽,H等于所述当前解码块的高,当前解码块的左上顶点的坐标是(0,0)。
CN201810992362.1A 2018-08-27 2018-08-27 视频编码器、视频解码器及相应方法 Active CN110868602B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810992362.1A CN110868602B (zh) 2018-08-27 2018-08-27 视频编码器、视频解码器及相应方法
PCT/CN2019/079955 WO2020042604A1 (zh) 2018-08-27 2019-03-27 视频编码器、视频解码器及相应方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810992362.1A CN110868602B (zh) 2018-08-27 2018-08-27 视频编码器、视频解码器及相应方法

Publications (2)

Publication Number Publication Date
CN110868602A CN110868602A (zh) 2020-03-06
CN110868602B true CN110868602B (zh) 2024-04-12

Family

ID=69643826

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810992362.1A Active CN110868602B (zh) 2018-08-27 2018-08-27 视频编码器、视频解码器及相应方法

Country Status (2)

Country Link
CN (1) CN110868602B (zh)
WO (1) WO2020042604A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111327901B (zh) * 2020-03-10 2023-05-30 北京达佳互联信息技术有限公司 视频编码方法、装置、存储介质及编码设备
CN113709484B (zh) * 2020-03-26 2022-12-23 杭州海康威视数字技术股份有限公司 解码方法、编码方法、装置、设备及机器可读存储介质
CN113747172A (zh) * 2020-05-29 2021-12-03 Oppo广东移动通信有限公司 帧间预测方法、编码器、解码器以及计算机存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102595110A (zh) * 2011-01-10 2012-07-18 华为技术有限公司 视频编码方法、解码方法及终端
CN103329537A (zh) * 2011-01-21 2013-09-25 Sk电信有限公司 基于预测运动矢量索引编码产生/恢复运动信息的设备和方法及用于使用该运动信息进行视频编码/解码的设备和方法
CN106331722A (zh) * 2015-07-03 2017-01-11 华为技术有限公司 图像预测方法和相关设备
WO2017147765A1 (en) * 2016-03-01 2017-09-08 Mediatek Inc. Methods for affine motion compensation
CN108271023A (zh) * 2017-01-04 2018-07-10 华为技术有限公司 图像预测方法和相关设备
CN108432250A (zh) * 2016-01-07 2018-08-21 联发科技股份有限公司 用于视频编解码的仿射帧间预测的方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080279478A1 (en) * 2007-05-09 2008-11-13 Mikhail Tsoupko-Sitnikov Image processing method and image processing apparatus
US9083983B2 (en) * 2011-10-04 2015-07-14 Qualcomm Incorporated Motion vector predictor candidate clipping removal for video coding
US9438910B1 (en) * 2014-03-11 2016-09-06 Google Inc. Affine motion prediction in video coding
CN104935938B (zh) * 2015-07-15 2018-03-30 哈尔滨工业大学 一种混合视频编码标准中帧间预测方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102595110A (zh) * 2011-01-10 2012-07-18 华为技术有限公司 视频编码方法、解码方法及终端
CN103329537A (zh) * 2011-01-21 2013-09-25 Sk电信有限公司 基于预测运动矢量索引编码产生/恢复运动信息的设备和方法及用于使用该运动信息进行视频编码/解码的设备和方法
CN106331722A (zh) * 2015-07-03 2017-01-11 华为技术有限公司 图像预测方法和相关设备
CN108432250A (zh) * 2016-01-07 2018-08-21 联发科技股份有限公司 用于视频编解码的仿射帧间预测的方法及装置
WO2017147765A1 (en) * 2016-03-01 2017-09-08 Mediatek Inc. Methods for affine motion compensation
CN108271023A (zh) * 2017-01-04 2018-07-10 华为技术有限公司 图像预测方法和相关设备

Also Published As

Publication number Publication date
CN110868602A (zh) 2020-03-06
WO2020042604A1 (zh) 2020-03-05

Similar Documents

Publication Publication Date Title
US11252436B2 (en) Video picture inter prediction method and apparatus, and codec
KR102607443B1 (ko) 비디오 데이터 인터 예측 방법 및 장치
KR102606146B1 (ko) 모션 벡터 예측 방법 및 관련 장치
CN110868587B (zh) 一种视频图像预测方法及装置
US20230239494A1 (en) Video encoder, video decoder, and corresponding method
CN110868602B (zh) 视频编码器、视频解码器及相应方法
CN110832859B (zh) 一种基于模板匹配的解码方法及装置
CN110677645B (zh) 一种图像预测方法及装置
US12015780B2 (en) Inter prediction method and apparatus, video encoder, and video decoder
CN111355958B (zh) 视频解码方法及装置
CN118301334A (zh) 视频编码器、视频解码器及相应方法
CN118301333A (zh) 视频编码器、视频解码器及相应方法
CN118301332A (zh) 视频编码器、视频解码器及相应方法
WO2019237287A1 (zh) 视频图像的帧间预测方法、装置及编解码器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant