CN113709488B - 一种编解码方法、装置及其设备 - Google Patents

一种编解码方法、装置及其设备 Download PDF

Info

Publication number
CN113709488B
CN113709488B CN202111155088.0A CN202111155088A CN113709488B CN 113709488 B CN113709488 B CN 113709488B CN 202111155088 A CN202111155088 A CN 202111155088A CN 113709488 B CN113709488 B CN 113709488B
Authority
CN
China
Prior art keywords
motion information
weight
current block
value
target
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
CN202111155088.0A
Other languages
English (en)
Other versions
CN113709488A (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.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology 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 Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN202111155088.0A priority Critical patent/CN113709488B/zh
Publication of CN113709488A publication Critical patent/CN113709488A/zh
Application granted granted Critical
Publication of CN113709488B publication Critical patent/CN113709488B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • 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
    • 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/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)

Abstract

本申请提供一种编解码方法、装置及其设备,包括:获取权重预测角度和权重配置参数;根据权重配置参数为当前块外部的周边位置配置参考权重值;根据权重预测角度从当前块外部的周边位置中确定像素位置指向的周边匹配位置;根据周边匹配位置关联的参考权重值确定像素位置的目标权重值,根据像素位置的目标权重值确定像素位置的关联权重值;根据第一目标运动信息确定像素位置的第一预测值,根据第二目标运动信息确定像素位置的第二预测值;根据第一预测值,目标权重值,第二预测值和关联权重值,确定像素位置的加权预测值;根据所有像素位置的加权预测值确定当前块的加权预测值。通过本申请提高预测准确性。

Description

一种编解码方法、装置及其设备
技术领域
本申请涉及编解码技术领域,尤其是涉及一种编解码方法、装置及其设备。
背景技术
为了达到节约空间的目的,视频图像都是经过编码后才传输的,完整的视频编码可以包括预测、变换、量化、熵编码、滤波等过程。针对预测过程,预测过程可以包括帧内预测和帧间预测,帧间预测是指利用视频时间域的相关性,使用邻近已编码图像的像素预测当前像素,以达到有效去除视频时域冗余的目的。帧内预测是指利用视频空间域的相关性,使用当前帧图像的已编码块的像素预测当前像素,以达到去除视频空域冗余的目的。
在相关技术中,当前块为矩形,而实际物体的边缘往往不是矩形,因此,对于物体边缘来说,往往存在两个不同对象(如存在前景的物体和背景)。基于此,当两个对象的运动不一致时,矩形划分不能很好的将两个对象分割,即使将当前块划分为两个非矩形子块,通过两个非矩形子块预测当前块,目前,也存在预测效果不佳,编码性能较差等问题。
发明内容
有鉴于此,本申请提供了一种编解码方法、装置及其设备,提高了预测的准确性。
本申请提供一种编解码方法,所述方法包括:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
获取运动信息候选列表,所述运动信息候选列表包括至少一个候选运动信息;基于所述运动信息候选列表获取所述当前块的第一目标运动信息和第二目标运动信息;
根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
本申请提供一种编解码方法,所述方法包括:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
获取参考帧信息,并获取与所述参考帧信息对应的运动矢量候选列表,所述运动矢量候选列表包括至少一个候选运动矢量,所述参考帧信息包括第一参考帧信息和第二参考帧信息;基于所述运动矢量候选列表获取所述当前块的第一目标运动矢量和第二目标运动矢量;
根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;其中,所述第一目标运动信息包括第一目标运动矢量和所述第一目标运动矢量对应的第一参考帧信息,所述第二目标运动信息包括第二目标运动矢量和所述第二目标运动矢量对应的第二参考帧信息;
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
本申请提供一种编解码装置,所述装置包括:获取模块,用于在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;配置模块,用于根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;确定模块,用于针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;所述获取模块,还用于获取运动信息候选列表,所述运动信息候选列表包括至少一个候选运动信息;基于所述运动信息候选列表获取所述当前块的第一目标运动信息和第二目标运动信息;所述确定模块,还用于根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
本申请提供一种编解码装置,所述装置包括:获取模块,用于在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;配置模块,用于根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;确定模块,用于针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;所述获取模块,还用于获取参考帧信息,并获取与所述参考帧信息对应的运动矢量候选列表,所述运动矢量候选列表包括至少一个候选运动矢量,所述参考帧信息包括第一参考帧信息和第二参考帧信息;基于所述运动矢量候选列表获取所述当前块的第一目标运动矢量和第二目标运动矢量;所述确定模块,还用于根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;所述第一目标运动信息包括第一目标运动矢量和所述第一目标运动矢量对应的第一参考帧信息,所述第二目标运动信息包括第二目标运动矢量和所述第二目标运动矢量对应的第二参考帧信息;根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
本申请提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
获取运动信息候选列表,所述运动信息候选列表包括至少一个候选运动信息;基于所述运动信息候选列表获取所述当前块的第一目标运动信息和第二目标运动信息;
根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
本申请提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
获取运动信息候选列表,所述运动信息候选列表包括至少一个候选运动信息;基于所述运动信息候选列表获取所述当前块的第一目标运动信息和第二目标运动信息;
根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
本申请提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
获取参考帧信息,并获取与所述参考帧信息对应的运动矢量候选列表,所述运动矢量候选列表包括至少一个候选运动矢量,所述参考帧信息包括第一参考帧信息和第二参考帧信息;基于所述运动矢量候选列表获取所述当前块的第一目标运动矢量和第二目标运动矢量;
根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;其中,所述第一目标运动信息包括第一目标运动矢量和所述第一目标运动矢量对应的第一参考帧信息,所述第二目标运动信息包括第二目标运动矢量和所述第二目标运动矢量对应的第二参考帧信息;
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
本申请提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
获取参考帧信息,并获取与所述参考帧信息对应的运动矢量候选列表,所述运动矢量候选列表包括至少一个候选运动矢量,所述参考帧信息包括第一参考帧信息和第二参考帧信息;基于所述运动矢量候选列表获取所述当前块的第一目标运动矢量和第二目标运动矢量;
根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;其中,所述第一目标运动信息包括第一目标运动矢量和所述第一目标运动矢量对应的第一参考帧信息,所述第二目标运动信息包括第二目标运动矢量和所述第二目标运动矢量对应的第二参考帧信息;
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
由以上技术方案可见,本申请实施例中,提出一种配置权重值的有效方式,能够为当前块的每个像素位置配置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值加更接近原始像素,并带来编码性能的提高。
附图说明
图1是视频编码框架的示意图;
图2A-图2E是加权预测的示意图;
图3是本申请一种实施方式中的编解码方法的流程图;
图4A-图4D是当前块外部的周边位置的示意图;
图5是本申请一种实施方式中的编解码方法的流程图;
图6是本申请一种实施方式中的权重预测角度的示意图;
图7是本申请一种实施方式中的四种权重变换率的参考权重值的示意图;
图8A-图8C是本申请一种实施方式中的权重预测角度与角度分区的示意图;
图9A是本申请一种实施方式中的当前块的相邻块的示意图;
图9B-图9D是本申请一种实施方式中的当前块的目标位置的示意图;
图10A是本申请一种实施方式中的编解码装置的结构示意图;
图10B是本申请一种实施方式中的编解码装置的结构示意图;
图10C是本申请一种实施方式中的解码端设备的硬件结构图;
图10D是本申请一种实施方式中的编码端设备的硬件结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请实施例和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但是,这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息,取决于语境。此外,所使用的词语“如果”可以被解释成为“在……时”,或“当……时”,或“响应于确定”。
本申请实施例中提出一种编解码方法、装置及其设备,可以涉及如下概念:
帧内预测(intra prediction),帧间预测(inter prediction)与IBC(帧内块拷贝)预测:
帧内预测是指,基于视频空间域的相关性,使用已编码块进行预测,以达到去除视频空域冗余的目的。帧内预测规定了多种预测模式,每种预测模式对应一种纹理方向(DC模式除外),例如,若图像纹理呈现水平状排布,则水平预测模式可以更好的预测图像信息。
帧间预测是指,基于视频时间域的相关性,由于视频序列包含较强的时域相关性,使用邻近已编码图像像素预测当前图像的像素,可以达到有效去除视频时域冗余的目的。
帧内块拷贝(IBC,Intra Block Copy)是指,允许同帧参考,当前块的参考数据来自同一帧,帧内块拷贝也可以称为帧内块复制。帧内块拷贝技术中,可以使用当前块的块矢量获取当前块的预测值,示例性的,基于屏幕内容中同一帧内存在大量重复出现的纹理这一特性,在采用块矢量获取当前块的预测值时,能够提升屏幕内容序列的压缩效率。
预测像素(Prediction Signal):预测像素是指从已编解码的像素中导出的像素值,通过原始像素与预测像素之差获得残差,进而进行残差变换量化以及系数编码。帧间的预测像素指的是当前块从参考帧导出的像素值,由于像素位置离散,需要通过插值运算来获取最终的预测像素。预测像素与原始像素越接近,两者相减得到的残差能量越小,编码压缩性能越高。
运动矢量(Motion Vector,MV):在帧间预测中,可以使用运动矢量表示当前帧的当前块与参考帧的参考块之间的相对位移。每个划分的块都有相应的运动矢量传送到解码端,如果对每个块的运动矢量进行独立编码和传输,特别是小尺寸的大量块,则消耗很多比特。为降低用于编码运动矢量的比特数,可以利用相邻块之间的空间相关性,根据相邻已编码块的运动矢量对当前块的运动矢量进行预测,然后对预测差进行编码,这样可以有效降低表示运动矢量的比特数。在对当前块的运动矢量进行编码时,可以先使用相邻已编码块的运动矢量预测当前块的运动矢量,然后对该运动矢量的预测值(MVP,Motion VectorPrediction)与运动矢量的真正估值之间的差值(MVD,Motion Vector Difference)进行编码。
运动信息(Motion Information):由于运动矢量表示当前块与某个参考块之间的位置偏移,为了准确的获取指向块的信息,除了运动矢量,还需要参考帧图像的索引信息来表示当前块使用哪个参考帧图像。在视频编码技术中,对于当前帧,通常可以建立一个参考帧图像列表,参考帧图像索引信息则表示当前块采用了参考帧图像列表中的第几个参考帧图像。
此外,很多编码技术还支持多个参考图像列表,因此,还可以使用一个索引值来表示使用了哪一个参考图像列表,这个索引值可以称为参考方向。综上所述,在视频编码技术中,可以将运动矢量,参考帧索引,参考方向等与运动相关的信息统称为运动信息。
率失真原则(Rate-Distortion Optimized):评价编码效率的有两大指标:码率和PSNR(Peak Signal to Noise Ratio,峰值信噪比),比特流越小,则压缩率越大,PSNR越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:J(mode)=D+λ*R,其中,D表示Distortion(失真),通常可以使用SSE指标来进行衡量,SSE是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。在模式选择时,若使用RDO原则去对编码模式做比较决策,通常可以保证编码性能最佳。
视频编码框架:参见图1所示,可以使用视频编码框架实现本申请实施例的编码端处理流程,视频解码框架的示意图与图1类似,在此不再赘述,可以使用视频解码框架实现本申请实施例的解码端处理流程。示例性的,在视频编码框架和视频解码框架中,可以包括但不限于帧内预测/帧间预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端处理流程,在解码端,通过这些模块之间的配合,可以实现解码端处理流程。
在相关技术中,当前块可以为矩形,而实际物体的边缘往往不是矩形,因此,对于物体的边缘来说,往往存在两个不同对象(如存在前景的物体和背景等)。当两个对象的运动不一致时,则矩形划分不能很好的将这两个对象进行分割,为此,可以将当前块划分为两个非矩形子块,并对两个非矩形子块进行加权预测。示例性的,加权预测是利用多个预测值进行加权操作,从而获得最终预测值,加权预测可以包括:帧间和帧内的联合加权预测,帧间和帧间的联合加权预测,帧内和帧内的联合加权预测等。针对加权预测的权重值,可以为当前块的不同像素位置配置相同权重值,也可以为当前块的不同像素位置配置不同权重值。
参见图2A所示,为帧间帧内联合加权预测的示意图。
CIIP(Combined inter/intra prediction,帧间帧内联合预测)预测块由帧内预测块(即采用帧内预测模式得到像素位置的帧内预测值)和帧间预测块(即采用帧间预测模式得到像素位置的帧间预测值)加权得到,每个像素位置采用的帧内预测值与帧间预测值的权重比是1:1。例如,针对每个像素位置,将该像素位置的帧内预测值与该像素位置的帧间预测值进行加权,得到该像素位置的联合预测值,最终将每个像素位置的联合预测值组成CIIP预测块。
参见图2B所示,为帧间三角划分加权预测(Triangular Partition Mode,TPM)的示意图。
TPM预测块由帧间预测块1(即采用帧间预测模式1得到像素位置的帧间预测值)和帧间预测块2(即采用帧间预测模式2得到像素位置的帧间预测值)组合得到。TPM预测块可以划分为两个区域,一个区域可以为帧间区域1,另一个区域可以为帧间区域2,TPM预测块的两个帧间区域可以呈非矩形分布,虚线分界线的角度可以为主对角线或者副对角线两种。
针对帧间区域1的每个像素位置,主要基于帧间预测块1的帧间预测值确定,例如,将该像素位置的帧间预测块1的帧间预测值与该像素位置的帧间预测块2的帧间预测值进行加权时,帧间预测块1的帧间预测值的权重值较大,帧间预测块2的帧间预测值的权重值较小(甚至为0),得到该像素位置的联合预测值。针对帧间区域2的每个像素位置,主要基于帧间预测块2的帧间预测值确定,例如,将该像素位置的帧间预测块1的帧间预测值与该像素位置的帧间预测块2的帧间预测值进行加权时,帧间预测块2的帧间预测值的权重值较大,帧间预测块1的帧间预测值的权重值较小(甚至为0),得到该像素位置的联合预测值。
参见图2C所示,为帧间帧内联合三角加权预测的示意图。通过对帧间帧内联合加权预测进行修改,使CIIP预测块的帧间区域和帧内区域呈现三角加权划分预测的权重分布。
CIIP预测块由帧内预测块(即采用帧内预测模式得到像素位置的帧内预测值)和帧间预测块(即采用帧间预测模式得到像素位置的帧间预测值)组合得到。CIIP预测块可以划分为两个区域,一个区域可以为帧内区域,另一个区域可以为帧间区域,CIIP预测块的帧间帧内可以呈非矩形分布,虚线分界线区域可采用混合加权方式或者直接进行分割,且该虚线分界线的角度可以为主对角线或者副对角线两种,帧内区域和帧间区域的位置可变。
针对帧内区域的每个像素位置,主要基于帧内预测值确定,例如,将该像素位置的帧内预测值与该像素位置的帧间预测值进行加权时,帧内预测值的权重值较大,帧间预测值的权重值较小,得到该像素位置的联合预测值。针对帧间区域的每个像素位置,主要基于帧间预测值确定,例如,将该像素位置的帧内预测值与该像素位置的帧间预测值进行加权时,帧间预测值的权重值较大,帧内预测值的权重值较小,得到该像素位置的联合预测值。
参见图2D所示,为帧间块几何分割模式(Geometrical partitioning for interblocks,GEO)的示意图,GEO模式用于利用一条分割线将帧间预测块划分为两个子块,不同于TPM模式,GEO模式可以采用更多的划分方向,GEO模式的加权预测过程与TPM模式类似。
GEO预测块由帧间预测块1(即采用帧间预测模式1得到像素位置的帧间预测值)和帧间预测块2(即采用帧间预测模式2得到像素位置的帧间预测值)组合得到。GEO预测块可以划分为两个区域,一个区域可以为帧间区域1,另一个区域可以为帧间区域2。
针对帧间区域1的每个像素位置,主要基于帧间预测块1的帧间预测值确定,例如,将该像素位置的帧间预测块1的帧间预测值与该像素位置的帧间预测块2的帧间预测值进行加权时,帧间预测块1的帧间预测值的权重值较大,帧间预测块2的帧间预测值的权重值较小。针对帧间区域2的每个像素位置,主要基于帧间预测块2的帧间预测值确定,例如,将该像素位置的帧间预测块1的帧间预测值与该像素位置的帧间预测块2的帧间预测值进行加权时,帧间预测块2的帧间预测值的权重值较大,帧间预测块1的帧间预测值的权重值较小。
示例性的,GEO预测块的权重值配置与像素位置离分割线的距离有关,参见图2E所示,像素位置A,像素位置B和像素位置C位于分割线右下侧,像素位置D,像素位置E和像素位置F位于分割线左上侧。对于像素位置A,像素位置B和像素位置C来说,帧间区域2的权重值排序为B≥A≥C,帧间区域1的权重值排序为C≥A≥B。对于像素位置D,像素位置E和像素位置F来说,帧间区域1的权重值排序为D≥F≥E,帧间区域2的权重值排序为E≥F≥D。上述方式需要计算像素位置与分割线的距离,继而确定像素位置的权重值。
针对上述各种情况,为了实现加权预测,均需要确定当前块的每个像素位置的权重值,并基于像素位置的权重值对该像素位置进行加权预测。但是,相关技术中,并没有配置权重值的有效方式,无法配置合理的权重值,导致预测效果不佳,编码性能差等问题。
针对上述发现,本申请实施例中提出权重值的导出方式,可以根据当前块外部的周边位置的参考权重值,确定当前块的每个像素位置的目标权重值,能够为每个像素位置配置合理的目标权重值,提高预测准确性,提高预测性能,提高编码性能,预测值更接近原始像素。
以下结合几个具体实施例,对本申请实施例中的编解码方法进行详细说明。
实施例1:参见图3所示,为编解码方法的流程示意图,该方法可以应用于解码端(也可以称为视频解码器)或者编码端(也可以称为视频编码器),该方法可以包括:
步骤301,在确定对当前块启动加权预测时,获取当前块的权重预测角度和权重配置参数,该权重配置参数包括权重变换率和权重变换的起始位置。权重变换的起始位置可以由如下参数的至少一个确定:当前块的权重预测角度,当前块的权重预测位置,当前块的尺寸。
示例性的,在需要对当前块进行预测时,解码端或者编码端可以先确定是否对当前块启动加权预测。若对当前块启动加权预测,则采用本申请实施例的编解码方法,即执行步骤301和后续步骤。若对当前块不启动加权预测,则实现方式本申请实施例中不做限制。
示例性的,在确定对当前块启动加权预测时,可以获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率。然后,可以基于当前块的权重预测角度,当前块的权重预测位置和当前块的尺寸中的至少一个,确定当前块的权重变换的起始位置。至此,可以得到当前块的权重预测角度,当前块的权重变换率和当前块的权重变换的起始位置。
步骤302,根据当前块的权重配置参数为当前块外部的周边位置配置参考权重值。
示例性的,当前块外部的周边位置的数量可以是基于当前块的尺寸和/或当前块的权重预测角度确定,例如,基于当前块的尺寸和/或当前块的权重预测角度确定当前块外部的周边位置的数量M,并根据当前块的权重配置参数为M个周边位置配置参考权重值。
示例性的,当前块外部的周边位置的参考权重值可以单调递增;或者,当前块外部的周边位置的参考权重值可以单调递减。比如说,当前块外部的周边位置的参考权重值的排布可以为00…0024688…88,或者,当前块外部的周边位置的参考权重值的排布可以为88…8864200…00。
示例性的,当前块外部的周边位置可以包括整像素位置,或者,亚像素位置,或者,整像素位置和亚像素位置。当前块外部的周边位置可以包括但不限于:当前块外部上侧一行的周边位置,或者,当前块外部左侧一列的周边位置,或者,当前块外部下侧一行的周边位置,或者,当前块外部右侧一列的周边位置。当然,上述只是周边位置的示例,对此不做限制。
在一种可能的实施方式中,当前块外部的周边位置的参考权重值包括目标区域的参考权重值,目标区域的第一邻近区域的参考权重值,目标区域的第二邻近区域的参考权重值。
示例性的,第一邻近区域的参考权重值均为第一参考权重值,第二邻近区域的参考权重值单调递增。或者,第一邻近区域的参考权重值均为第一参考权重值,第二邻近区域的参考权重值单调递减。或者,第一邻近区域的参考权重值均为第二参考权重值,第二邻近区域的参考权重值均为第三参考权重值,且该第二参考权重值与该第三参考权重值不同。或者,第一邻近区域的参考权重值单调递增,第二邻近区域的参考权重值单调递增。或者,第一邻近区域的参考权重值单调递减,第二邻近区域的参考权重值单调递减。
示例性的,目标区域包括一个参考权重值或者至少两个参考权重值;若目标区域包括至少两个参考权重值,则目标区域的至少两个参考权重值单调递增或单调递减。
步骤303,针对当前块的每个像素位置,根据当前块的权重预测角度从当前块外部的周边位置中确定该像素位置指向的周边匹配位置;根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,根据该像素位置的目标权重值确定该像素位置的关联权重值。
示例性的,权重预测角度表示当前块内部的像素位置所指向的角度方向,例如,基于某一种权重预测角度,该权重预测角度对应的角度方向指向当前块的某个外部周边位置。基于此,针对当前块的每个像素位置,基于该权重预测角度确定该像素位置所指向的角度方向,继而根据该角度方向从当前块外部的周边位置中确定该像素位置指向的周边匹配位置。
针对当前块的每个像素位置,在确定该像素位置指向的周边匹配位置后,基于该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,例如,将该周边匹配位置关联的参考权重值确定为该像素位置的目标权重值。然后,根据该像素位置的目标权重值确定该像素位置的关联权重值,例如,每个像素位置的目标权重值与关联权重值的和,可以均为固定的预设数值,因此,关联权重值可以为预设数值与目标权重值之差。假设预设数值为8,像素位置的目标权重值为0,则该像素位置的关联权重值为8;若像素位置的目标权重值为1,则该像素位置的关联权重值为7,以此类推,只要目标权重值与关联权重值之和为8即可。
步骤304,获取运动信息候选列表,该运动信息候选列表包括至少一个候选运动信息;基于该运动信息候选列表获取当前块的第一目标运动信息和第二目标运动信息。
步骤305,针对当前块的每个像素位置,根据当前块的第一目标运动信息确定该像素位置的第一预测值,根据当前块的第二目标运动信息确定该像素位置的第二预测值;根据该第一预测值,该目标权重值,该第二预测值和该关联权重值,确定该像素位置的加权预测值。
示例性的,假设目标权重值是第一目标运动信息对应的权重值,关联权重值是第二目标运动信息对应的权重值,则该像素位置的加权预测值可以为:(该像素位置的第一预测值*该像素位置的目标权重值+该像素位置的第二预测值*该像素位置的关联权重值)/固定的预设数值。或者,假设目标权重值是第二目标运动信息对应的权重值,关联权重值是第一目标运动信息对应的权重值,则该像素位置的加权预测值可以为:(该像素位置的第二预测值*该像素位置的目标权重值+该像素位置的第一预测值*该像素位置的关联权重值)/固定的预设数值。
步骤306,根据当前块的所有像素位置的加权预测值确定当前块的加权预测值。
例如,将当前块的所有像素位置的加权预测值组成当前块的加权预测值。
由以上技术方案可见,本申请实施例中,提出一种配置权重值的有效方式,能够为当前块的每个像素位置配置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值加更接近原始像素,并带来编码性能的提高。
实施例2:本申请实施例提出另一种编解码方法,可以应用于编码端,该方法包括:
步骤a1,在确定对当前块启动加权预测时,编码端获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率。示例性的,编码端确定是否对当前块启动加权预测,如果是,则执行步骤a1及后续步骤,如果否,则处理方式本申请不做限制。
在一种可能的实施方式中,若当前块满足启动加权预测的条件,则确定对当前块启动加权预测。若当前块不满足启动加权预测的条件,则确定不对当前块启动加权预测。例如,判断当前块的特征信息是否满足特定条件。如果是,确定对当前块启动加权预测;如果否,确定对当前块不启动加权预测。特征信息包括但不限于以下之一或任意组合:当前块所在当前帧的帧类型,当前块的尺寸信息,开关控制信息。开关控制信息可以包括但不限于:序列级(SPS、SH)开关控制信息,或,图像级(PPS、PH)开关控制信息,或,片级(Slice、Tile、Patch),或,最大编码单元级(LCU、CTU),或块级(CU、PU、TU)开关控制信息。
例如,若特征信息为当前块所在当前帧的帧类型,当前块所在当前帧的帧类型满足特定条件,可以包括但不限于:若当前块所在当前帧的帧类型为B帧,则确定帧类型满足特定条件。或者,若当前块所在当前帧的帧类型为I帧,则确定帧类型满足特定条件。
例如,若特征信息为当前块的尺寸信息,如宽度和高度,尺寸信息满足特定条件包括但不限于:若宽度大于或等于第一数值,高度大于或等于第二数值,确定当前块的尺寸信息满足特定条件。或,若宽度大于或等于第三数值,高度大于或等于第四数值,宽度小于或等于第五数值,高度小于或等于第六数值,确定当前块的尺寸信息满足特定条件。或,若宽度和高度的乘积大于或等于第七数值,确定当前块的尺寸信息满足特定条件。上述数值可以根据经验配置,如8、16、32、64、128等。比如说,第一数值为8,第二数值为8,第三数值为8,第四数值为8,第五数值为64,第六数值为64,第七数值为64。综上所述,若宽度大于或等于8,高度大于或等于8,确定当前块的尺寸信息满足特定条件。或,若宽度大于或等于8,高度大于或等于8,宽度小于或等于64,高度小于或等于64,确定当前块的尺寸信息满足特定条件。或,若宽度和高度的乘积大于或等于64,确定当前块的尺寸信息满足特定条件。
例如,若特征信息为当前块的尺寸信息,如当前块的宽度和高度,则当前块的尺寸信息满足特定条件,可以包括但不限于:宽度不小于a,且不大于b,高度不小于a,且不大于b。a可以小于或等于16,b可以大于或等于16。例如,a等于8,b等于64或者b等于32。
例如,若特征信息为开关控制信息,则该开关控制信息满足特定条件,可以包括但不限于:若开关控制信息为允许当前块启用加权预测,则确定该开关控制信息满足特定条件。
例如,若特征信息为当前块所在当前帧的帧类型,当前块的尺寸信息,则帧类型满足特定条件,且尺寸信息满足特定条件时,可以确定当前块的特征信息满足特定条件。或者,若特征信息为当前块所在当前帧的帧类型,开关控制信息,则帧类型满足特定条件,且开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。或者,若特征信息为当前块的尺寸信息、开关控制信息,则尺寸信息满足特定条件,且开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。或者,若特征信息为当前块所在当前帧的帧类型、当前块的尺寸信息、开关控制信息,则帧类型满足特定条件,尺寸信息满足特定条件,且开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。
在一种可能的实施方式中,在确定对当前块启动加权预测时,编码端可以获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率。
示例性的,权重预测角度表示当前块内部的像素位置所指向的角度方向,参见图4A所示,基于某一种权重预测角度,示出了当前块内部的像素位置(如像素位置1、像素位置2和像素位置3)所指向的角度方向,该角度方向指向当前块外部的某个周边位置。参见图4B所示,基于另一种权重预测角度,示出了当前块内部的像素位置(如像素位置2、像素位置3和像素位置4)所指向的角度方向,该角度方向指向当前块外部的某个周边位置。
示例性的,权重预测位置(也可以称为距离参数)用于配置当前块外部周边位置的参考权重值。例如,根据当前块的权重预测角度、当前块的尺寸等参数,确定当前块外部的周边位置的范围(即当前块外部的周边位置的数量),参见图4A或者图4B所示。
然后,将周边位置的范围进行N等分,N的取值可以任意配置,如4、6、8等,以8为例进行说明,权重预测位置用于表示当前块外部的哪个周边位置作为当前块的权重变换的起始位置,从而根据权重变换的起始位置配置当前块外部的周边位置的参考权重值。
参见图4C所示,在将所有周边位置8等分后,可以得到7个权重预测位置。在此基础上,当权重预测位置为0时,可以表示周边位置a0(即虚线0指向的周边位置,在实际应用中,并不存在虚线0,虚线0只是为了方便理解给出的示例,虚线0-虚线6用于将所有周边位置8等分)作为当前块外部周边位置的权重变换的起始位置。以此类推,当权重预测位置为6时,表示周边位置a6作为当前块外部周边位置的权重变换的起始位置。
针对不同的权重预测角度,N的取值可以不同,例如,针对权重预测角度A,N的取值为6,表示将基于权重预测角度A确定的周边位置的范围进行6等分,针对权重预测角度B,N的取值为8,表示将基于权重预测角度B确定的周边位置的范围进行8等分。
针对不同的权重预测角度,N的取值也可以相同,在N的取值相同的情况下,权重预测位置数量可以不同,如针对权重预测角度A,N的取值为8,表示将基于权重预测角度A确定的周边位置的范围进行8等分,针对权重预测角度B,N的取值为8,表示将基于权重预测角度B确定的周边位置的范围进行8等分,但是,权重预测角度A对应的权重预测位置选择a1至a5共5个位置,权重预测角度B对应的权重预测位置选择a0至a6共7个位置。
上述是以将周边位置的范围进行N等分为例,在实际应用中,还可以采用不均匀的划分方式,比如说,将周边位置的范围划分成N份,而不是N等分,对此不做限制。
在将所有的周边位置8等分后,可以得到7个权重预测位置,步骤a1中,编码端可以从7个权重预测位置中获取一个权重预测位置,也可以从7个权重预测位置中选择部分权重预测位置(如5个权重预测位置),从5个权重预测位置获取一个权重预测位置。
示例性的,权重变换率表示当前块外部的周边位置的参考权重值的变换率,用于表示参考权重值的变化速度,权重变换率可以是不为0的任意数,如权重变换率可以是-4、-2、-1、1、2、4、0.5、0.75、1.5等。权重变换率的绝对值为1时,即权重变换率为-1或者1,用于表示参考权重值的变化速度为1,参考权重值从0到8需要经过0,1,2,3,4,5,6,7,8等数值,参考权重值从8到0需要经过8,7,6,5,4,3,2,1,0等数值。权重变换率的绝对值为2时,即权重变换率为-2或者2,用于表示参考权重值的变化速度为2,参考权重值从0到8需要经过0,2,4,6,8等数值,参考权重值从8到0需要经过8,6,4,2,0等数值。权重变换率的绝对值为4时,即权重变换率为-4或者4,用于表示参考权重值的变化速度为4,参考权重值从0到8需要经过0,4,8等数值,参考权重值从8到0需要经过8,4,0等数值。权重变换率的绝对值为0.5时,即权重变换率为-0.5或者0.5,用于表示参考权重值的变化速度为0.5,参考权重从0到8需要经过0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8等数值,参考权重从8到0需要经过8,8,7,7,6,6,5,5,4,4,3,3,2,2,1,1,0,0等数值。当然,上述举例为从0到8,可以将0和8替换为任意数。
步骤a2,编码端根据当前块的权重变换率和权重变换的起始位置(权重变换率和权重变换的起始位置可以称为权重配置参数)为当前块外部的周边位置配置参考权重值。
示例性的,权重变换的起始位置可以由如下参数的至少一个确定:当前块的权重预测角度,当前块的权重预测位置,当前块的尺寸,因此,可以基于当前块的权重预测角度,当前块的权重预测位置和当前块的尺寸中的至少一个,确定当前块的权重变换的起始位置。然后,根据当前块的权重变换率和权重变换的起始位置为当前块外部的周边位置配置参考权重值。
步骤a3,针对当前块的每个像素位置,编码端根据当前块的权重预测角度从当前块外部的周边位置中确定该像素位置指向的周边匹配位置。为了区分方便,本实施例中,可以将该像素位置指向的当前块外部的周边位置,称为该像素位置的周边匹配位置。
示例性的,由于权重预测角度表示当前块内部的像素位置所指向的角度方向,因此,针对当前块的每个像素位置,基于该权重预测角度确定该像素位置所指向的角度方向,继而根据该角度方向从当前块外部的周边位置中确定该像素位置指向的周边匹配位置。
当前块外部周边位置可以包括:当前块外部上侧一行的周边位置,如当前块外部上侧第n1行的周边位置,n1可以为1,也可以为2、3等,对此不做限制。或者,当前块外部左侧一列的周边位置,如当前块外部左侧第n2列的周边位置,n2可以为1,也可以为2、3等,对此不做限制。或者,当前块外部下侧一行的周边位置,如当前块外部下侧第n3行的周边位置,n3可以为1,也可以为2、3等,对此不做限制。或者,当前块外部右侧一列的周边位置,如当前块外部右侧第n4列的周边位置,n4可以为1,也可以为2、3等,对此不做限制。
当然,上述只是周边位置的几个示例,对此不做限制,实际应用中,除了利用当前块外部周边位置,还可以利用当前块内部位置,即使用当前块的内部位置替换当前块外部周边位置,例如,位于当前块内部第n5行的内部位置,n5可以为1,也可以为2、3等,又例如,位于当前块内部第n6列的内部位置,n6可以为1,也可以为2、3等。当然,内部位置的长度可以超出当前块的范围,如第n7行的位置可以超出当前块的范围,即往两边可延伸。
当然,还可以同时使用当前块的内部位置和当前块外部周边位置。
针对使用当前块的内部位置,或者,同时使用当前块的内部位置和当前块外部周边位置的情况,可以将该当前块通过内部位置所在行分为上下两个小块,或者,通过内部位置所在列分为左右两个小块,此时,两个小块拥有相同的权重预测角度以及相同的参考权重配置。
示例性的,当前块外部周边位置可以位于像素位置之间,即亚像素位置,此时,当前块的位置不能简单描述为第x行,而是位于第x行与第y行之间的亚像素位置行。
为了方便描述,在后续实施例中,以当前块外部上侧第1行的周边位置,或者,当前块外部左侧第1列的周边位置为例,针对其它周边位置的情况,实现方式与此类似。
示例性的,针对当前块外部周边位置的范围,可以预先指定某个范围是当前块外部的周边位置的范围;或者,可以根据权重预测角度确定当前块外部的周边位置的范围,例如,根据权重预测角度确定当前块内部的每个像素位置指向的周边位置,所有像素位置指向的周边位置的边界,可以是当前块外部的周边位置的范围,对此周边位置的范围不做限制。
当前块外部周边位置可以包括整像素位置;或者,当前块外部周边位置可以包括非整像素位置,非整像素位置可以为亚像素位置,如1/2亚像素位置,1/4亚像素位置,3/4亚像素位置等,对此不做限制;或者,当前块外部周边位置可以包括整像素位置和亚像素位置。
示例性的,当前块外部的两个周边位置,可以对应一个整像素位置;或者,当前块外部的四个周边位置,可以对应一个整像素位置;或者,当前块外部的一个周边位置,可以对应一个整像素位置;或者,当前块外部的一个周边位置,可以对应两个整像素位置。当然,上述只是几个示例,对此不做限制,周边位置与整像素位置的关系可以任意配置。
参见图4A和图4B所示,是一个周边位置对应一个整像素位置,参见图4D所示,是两个周边位置对应一个整像素位置,对于其它情况,本实施例中不再赘述。
步骤a4,编码端根据周边匹配位置关联的参考权重值确定该像素位置的目标权重值。
针对当前块的每个像素位置,在确定该像素位置指向的周边匹配位置后,编码端确定该周边匹配位置关联的参考权重值,并根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,例如,将该周边匹配位置关联的参考权重值确定为该像素位置的目标权重值。
在一种可能的实施方式中,编码端根据周边匹配位置关联的参考权重值确定该像素位置的目标权重值,可以包括:情况一、若该周边匹配位置是整像素位置,且该整像素位置已配置参考权重值,则根据该整像素位置的参考权重值确定该像素位置的目标权重值。
情况二、若该周边匹配位置是整像素位置,且该整像素位置未配置参考权重值,则可以根据该整像素位置的相邻位置的参考权重值确定该像素位置的目标权重值。例如,可以对相邻位置的参考权重值进行向上取整操作,得到该像素位置的目标权重值;或者,对相邻位置的参考权重值进行向下取整操作,得到该像素位置的目标权重值;或者,根据该整像素位置的相邻位置的参考权重值的插值确定该像素位置的目标权重值,对此不做限制。
情况三、若该周边匹配位置是亚像素位置,且该亚像素位置已配置参考权重值,则可以根据该亚像素位置的参考权重值确定该像素位置的目标权重值。
情况四、若该周边匹配位置是亚像素位置,且该亚像素位置未配置参考权重值,则可以根据该亚像素位置的相邻位置的参考权重值确定该像素位置的目标权重值。例如,可以对相邻位置的参考权重值进行向上取整操作,得到该像素位置的目标权重值;或者,对相邻位置的参考权重值进行向下取整操作,得到该像素位置的目标权重值;或者,根据该亚像素位置的相邻位置的参考权重值的插值确定该像素位置的目标权重值,对此不做限制。
情况五、根据周边匹配位置关联的多个参考权重值确定该像素位置的目标权重值,例如,周边匹配位置是整像素位置或亚像素位置时,获取周边匹配位置的多个相邻位置的参考权重值。若周边匹配位置已配置参考权重值,则根据周边匹配位置的参考权重值和多个相邻位置的参考权重值进行加权运算,得到该像素位置的目标权重值;若周边匹配位置未配置参考权重值,则根据多个相邻位置的参考权重值进行加权运算,得到该像素位置的目标权重值。
步骤a5,编码端根据该像素位置的目标权重值确定该像素位置的关联权重值。
示例性的,针对每个像素位置来说,该像素位置的目标权重值与该像素位置的关联权重值的和,可以为固定的预设数值,即关联权重值可以为预设数值与目标权重值之差。基于此,假设预设数值为8,该像素位置的目标权重值为2,则该像素位置的关联权重值为6。
步骤a6,编码端获取运动信息候选列表,该运动信息候选列表包括至少一个候选运动信息;基于该运动信息候选列表获取当前块的第一目标运动信息和第二目标运动信息。
步骤a7,针对当前块的每个像素位置,编码端根据当前块的第一目标运动信息确定该像素位置的第一预测值,并根据当前块的第二目标运动信息确定该像素位置的第二预测值。
步骤a8,编码端根据该像素位置的第一预测值,该像素位置的目标权重值,该像素位置的第二预测值和该像素位置的关联权重值,确定该像素位置的加权预测值。
例如,该像素位置的加权预测值可以为:(该像素位置的第一预测值*该像素位置的目标权重值+该像素位置的第二预测值*该像素位置的关联权重值)/固定的预设数值。
步骤a9,编码端根据当前块的所有像素位置的加权预测值确定当前块的加权预测值。
实施例3:本申请实施例提出另一种编解码方法,可以应用于解码端,该方法包括:
步骤b1,在确定对当前块启动加权预测时,解码端获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率。示例性的,解码端确定是否对当前块启动加权预测,如果是,则执行步骤b1及后续步骤,如果否,则处理方式本申请不做限制。
在一种可能的实施方式中,编码端判断当前块的特征信息是否满足特定条件,如果是,则确定对当前块启动加权预测。解码端也判断当前块的特征信息是否满足特定条件,如果是,则确定对当前块启动加权预测;如果否,则确定不对当前块启动加权预测。关于解码端如何基于特征信息确定当前块是否启动加权预测,与编码端的确定方式类似,在此不再重复赘述。
在另一种可能的实施方式中,编码端根据当前块的特征信息确定当前块是否支持加权预测,在当前块支持加权预测时,还可以采用其它策略确定是否对当前块启动加权预测,如采用率失真原则确定是否对当前块启动加权预测。在确定是否对当前块启动加权预测后,编码端在发送当前块的编码比特流时,该编码比特流可以包括是否启动加权预测的语法,该语法表示当前块是否启动加权预测。解码端根据当前块的特征信息确定当前块是否支持加权预测,具体方式与编码端的确定方式类似,在此不再赘述。在当前块支持加权预测时,解码端还可以从编码比特流中解析出是否启动加权预测的语法,并根据该语法确定是否对当前块启动加权预测。
示例性的,在确定对当前块启动加权预测时,解码端还可以获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率,关于该权重预测角度,该权重预测位置及该权重变换率的相关说明,可以参见步骤a1,在此不再重复赘述。
步骤b2,解码端根据当前块的权重变换率和权重变换的起始位置(权重变换率和权重变换的起始位置可以称为权重配置参数)为当前块外部的周边位置配置参考权重值。
示例性的,解码端可以基于当前块的权重预测角度,当前块的权重预测位置和当前块的尺寸中的至少一个,确定当前块的权重变换的起始位置。然后,解码端根据当前块的权重变换率和权重变换的起始位置为当前块外部的周边位置配置参考权重值。
步骤b3,针对当前块的每个像素位置,解码端根据当前块的权重预测角度从当前块外部的周边位置中确定该像素位置指向的周边匹配位置。
步骤b4,解码端根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值。
步骤b5,解码端根据该像素位置的目标权重值确定该像素位置的关联权重值。
步骤b6,解码端获取运动信息候选列表,该运动信息候选列表包括至少一个候选运动信息;基于该运动信息候选列表获取当前块的第一目标运动信息和第二目标运动信息。
步骤b7,针对当前块的每个像素位置,解码端根据当前块的第一目标运动信息确定该像素位置的第一预测值,并根据当前块的第二目标运动信息确定该像素位置的第二预测值。
步骤b8,解码端根据该像素位置的第一预测值,该像素位置的目标权重值,该像素位置的第二预测值和该像素位置的关联权重值,确定该像素位置的加权预测值。
步骤b9,解码端根据当前块的所有像素位置的加权预测值确定当前块的加权预测值。
示例性的,针对步骤b2-步骤b8,其实现过程可以参见步骤a2-步骤a8,不同之处在于,步骤b2-步骤b8是解码端的处理流程,而不是编码端的处理流程,在此不再赘述。
实施例4:参见图5所示,为编解码方法的流程示意图,该方法可以应用于解码端(也可以称为视频解码器)或者编码端(也可以称为视频编码器),该方法可以包括:
步骤501,在确定对当前块启动加权预测时,获取当前块的权重预测角度和权重配置参数,该权重配置参数包括权重变换率和权重变换的起始位置。权重变换的起始位置可以由如下参数的至少一个确定:当前块的权重预测角度,当前块的权重预测位置,当前块的尺寸。
步骤502,根据当前块的权重配置参数为当前块外部的周边位置配置参考权重值。
步骤503,针对当前块的每个像素位置,根据当前块的权重预测角度从当前块外部的周边位置中确定该像素位置指向的周边匹配位置;根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,根据该像素位置的目标权重值确定该像素位置的关联权重值。
示例性的,步骤501-步骤503可以参见步骤301-步骤303,在此不再重复赘述。
步骤504,获取参考帧信息,并获取与该参考帧信息对应的运动矢量候选列表,该运动矢量候选列表包括至少一个候选运动矢量,该参考帧信息包括第一参考帧信息和第二参考帧信息;基于该运动矢量候选列表获取当前块的第一目标运动矢量和第二目标运动矢量。
步骤505,针对当前块的每个像素位置,根据当前块的第一目标运动信息确定该像素位置的第一预测值,根据当前块的第二目标运动信息确定该像素位置的第二预测值;根据该第一预测值,该目标权重值,该第二预测值和该关联权重值,确定该像素位置的加权预测值。
在一种可能的实施方式中,当前块的该第一目标运动信息可以包括当前块的该第一目标运动矢量和该第一目标运动矢量对应的第一参考帧信息,当前块的该第二目标运动信息可以包括当前块的该第二目标运动矢量和该第二目标运动矢量对应的第二参考帧信息。
示例性的,第一参考帧信息与第二参考帧信息可以相同,或者,第一参考帧信息与第二参考帧信息可以不同。若第一参考帧信息与第二参考帧信息相同,则第一目标运动矢量指向的参考帧与第二目标运动矢量指向的参考帧为同一帧,若第一参考帧信息与第二参考帧信息不同,则第一目标运动矢量指向的参考帧与第二目标运动矢量指向的参考帧为不同帧。
步骤506,根据当前块的所有像素位置的加权预测值确定当前块的加权预测值。
示例性的,在编解码方法应用于编码端时,针对步骤501-步骤506的详细流程,还可以通过实施例2实现,不同之处在于:在步骤a6中,编码端获取的是运动矢量候选列表,并基于该运动矢量候选列表获取当前块的第一目标运动矢量和第二目标运动矢量,基于第一目标运动矢量和第一目标运动矢量对应的第一参考帧信息得到第一目标运动信息,基于第二目标运动矢量和第二目标运动矢量对应的第二参考帧信息得到第二目标运动信息,在此不再赘述。
示例性的,在编解码方法应用于解码端时,针对步骤501-步骤506的详细流程,还可以通过实施例3实现,不同之处在于:在步骤b6中,解码端获取的是运动矢量候选列表,并基于该运动矢量候选列表获取当前块的第一目标运动矢量和第二目标运动矢量,基于第一目标运动矢量和第一目标运动矢量对应的第一参考帧信息得到第一目标运动信息,基于第二目标运动矢量和第二目标运动矢量对应的第二参考帧信息得到第二目标运动信息,在此不再赘述。
由以上技术方案可见,本申请实施例中,提出一种配置权重值的有效方式,能够为当前块的每个像素位置配置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值加更接近原始像素,并带来编码性能的提高。
实施例5:在实施例1-实施例4中,需要基于权重预测角度进行加权处理,可以将这种加权处理方式记为帧间角度加权预测(Angular Weighted Prediction,AWP)模式,即,在当前块支持AWP模式时,采用实施例1-实施例4对当前块进行预测,得到当前块的预测值。
实施例1-实施例4涉及权重预测角度,该权重预测角度可以是任意角度,如180度内任意角度,或,360度内任意角度,对此权重预测角度不做限制,如10度,20度,30度等。
在一种可能的实施方式中,该权重预测角度可以为水平角度;或者,该权重预测角度可以为垂直角度;或者,该权重预测角度的斜率的绝对值(权重预测角度的斜率的绝对值也就是权重预测角度的tan值)可以为2的n次方,n为整数,如正整数,0,负整数等。
例如,该权重预测角度的斜率的绝对值可以为1(即2的0次方),或者为2(即2的1次方),或者为1/2(即2的-1次方),或者为4(即2的2次方),或者为1/4(即2的-2次方),或者为8(即2的3次方),或者为1/8(即2的-3次方)等。示例性的,参见图6所示,示出了8种权重预测角度,这些权重预测角度的斜率的绝对值为2的n次方。
本申请实施例中,可以对权重预测角度进行移位操作,关于对权重预测角度进行移位操作的例子参见后续实施例,因此,在权重预测角度的斜率的绝对值为2的n次方时,在对权重预测角度进行移位操作时,可以避免出现除法操作,从而方便的进行移位实现。
示例性的,不同块尺寸(即当前块的尺寸)支持的权重预测角度的数量可以相同或者不同。例如,块尺寸A支持8种权重预测角度,块尺寸B和块尺寸C支持6种权重预测角度等。
实施例6:在上述实施例1-实施例4中,编码端/解码端需要根据当前块的权重变换率和当前块的权重变换的起始位置为当前块外部的周边位置配置参考权重值。在一种可能的实施方式中,可以采用如下方式:针对当前块外部的每个周边位置,根据该周边位置的坐标值,该权重变换的起始位置的坐标值,以及该权重变换率,配置该周边位置的参考权重值。
示例性的,针对当前块外部的每个周边位置,若该周边位置是当前块外部上侧一行或者下侧一行的周边位置,则该周边位置的坐标值可以是横坐标值,权重变换的起始位置的坐标值可以是横坐标值。或者,若该周边位置是当前块外部左侧一列或者右侧一列的周边位置,则该周边位置的坐标值可以是纵坐标值,权重变换的起始位置的坐标值可以是纵坐标值。
示例性的,可以将当前块左上角的像素位置(如左上角的第一个像素位置)作为坐标原点,当前块的周边位置的坐标值(如横坐标值或纵坐标值)和权重变换的起始位置的坐标值(如横坐标值或纵坐标值),均是相对于该坐标原点的坐标值。当然,也可以将当前块的其它像素位置作为坐标原点,实现方式与左上角的像素位置作为坐标原点的实现方式类似。
在一种可能的实施方式中,先确定该周边位置的坐标值与权重变换的起始位置的坐标值的差值,并确定该差值与当前块的权重变换率的乘积值。若该乘积值小于第一数值(即参考权重值的最小值,如0等),则确定该周边位置关联的参考权重值为第一数值;若该乘积值大于第二数值(即参考权重值的最大值,如8等),则确定该周边位置关联的参考权重值为第二数值;若该乘积值不小于第一数值,且该乘积值不大于第二数值,则确定该周边位置关联的参考权重值为该乘积值。在另一种可能的实施方式中,还可以根据该周边位置的坐标值与权重变换的起始位置的坐标值的大小关系,直接确定该周边位置关联的参考权重值。例如,若该周边位置的坐标值小于权重变换的起始位置的坐标值,确定该周边位置关联的参考权重值为第一数值;若该周边位置的坐标值不小于权重变换的起始位置的坐标值,确定该周边位置关联的参考权重值为第二数值。又例如,若该周边位置的坐标值小于权重变换的起始位置的坐标值,确定该周边位置关联的参考权重值为第二数值;若该周边位置的坐标值不小于权重变换的起始位置的坐标值,确定该周边位置关联的参考权重值为第一数值。
示例性的,第一数值和第二数值均可以根据经验配置,且第一数值小于第二数值,对此第一数值和第二数值均不做限制。例如,第一数值是预先约定的参考权重值的最小值,如0,第二数值是预先约定的参考权重值的最大值,如8,当然,0和8也只是示例。
示例性的,参见图4C所示,在将所有的周边位置8等分后,可以得到7个权重预测位置,当权重预测位置为0时,表示周边位置a0,权重变换的起始位置的坐标值为周边位置a0的坐标值。当权重预测位置为1时,表示周边位置a1,权重变换的起始位置的坐标值为周边位置a1的坐标值,以此类推,关于权重变换的起始位置的坐标值的确定方式,在此不再赘述。
实施例7:在实施例1-实施例4中,编码端/解码端需要根据当前块的权重变换率和当前块的权重变换的起始位置为当前块外部的周边位置配置参考权重值。在一种可能的实施方式中,可以采用如下方式:获取当前块的权重预测角度、当前块的权重变换率和当前块的权重预测位置,基于当前块的权重预测位置确定当前块的权重变换的起始位置,基于该权重变换的起始位置和该权重变换率确定权重配置参数,即该权重配置参数包括权重变换的起始位置和权重变换率。然后,根据该权重配置参数确定当前块外部的周边位置的参考权重值。
以下结合具体步骤,对为当前块外部的周边位置配置参考权重值的过程进行说明。
步骤c1、获取有效数量个参考权重值。
示例性的,当前块外部的周边位置的数量为有效数量,步骤c1中,需要获取有效数量个参考权重值,该有效数量可以是基于当前块的尺寸和/或当前块的权重预测角度确定。例如,采用如下方式确定该有效数量:ValidLenth=(N+(M>>X))<<1,N和M分别是当前块的高和宽,X为当前块的权重预测角度的斜率的绝对值的log2对数值,如0或1。
在一种可能的实施方式中,针对有效数量个参考权重值,可以单调递增,或,单调递减。或者,针对有效数量个参考权重值,可以先包括多个第一数值,再包括多个第二数值,或,先包括多个第二数值,再包括多个第一数值。以下结合几个具体情况,对此进行说明。
情况1:针对有效数量个参考权重值,可以单调递增,或,单调递减。例如,有效数量个参考权重值可以为[88...88765432100...00],即单调递减。又例如,有效数量个参考权重值可以为[00...00123456788...88],即单调递增。当然,上述只是示例,对此不做限制。
示例性的,参考权重值可以是根据权重配置参数配置的,该权重配置参数可以包括权重变换率和权重变换的起始位置,权重变换率的获取方式可以参见后续实施例,权重变换的起始位置可以是根据经验配置的数值,也可以由权重预测位置确定权重变换的起始位置,还可以由权重预测角度和权重预测位置确定权重变换的起始位置,对此不做限制。
针对有效数量个参考权重值,按照从第一个到最后一个的顺序,可以单调递增或者单调递减。例如,参考权重值的最大值为M1,参考权重值的最小值为M2,针对有效数量个参考权重值,从最大值M1至最小值M2单调递减;或,从最小值M2至最大值M1单调递增。假设M1为8,M2为0,则多个参考权重值,可以从8至0单调递减;或从0至8单调递增。
示例性的,可以先获取权重变换率和权重变换的起始位置,然后,根据权重变换率和权重变换的起始位置,确定多个参考权重值。例如,采用如下方式确定参考权重值:y=Clip3(最小值,最大值,a*(x-s)),x表示周边位置的索引,即x的取值范围是1-有效数量值,如x为1,表示第1个周边位置,y表示第1个周边位置的参考权重值,x为2,表示第2个周边位置,y表示第2个周边位置的参考权重值。a表示权重变换率,s表示权重变换的起始位置。
Clip3用于限制参考权重值位于最小值与最大值之间,最小值和最大值均可以根据经验配置,为了方便描述,在后续过程中,以最小值为0,最大值为8为例进行说明。
a表示权重变换率,a可以是不为0的整数,如a可以是-4、-2、-1、1、2、4等,对此a的取值不做限制。若a的绝对值为1,则参考权重值从0到8需要经过0,1,2,3,4,5,6,7,8,或者,参考权重值从8到0需要经过8,7,6,5,4,3,2,1,0。
s表示权重变换的起始位置,s可以由权重预测位置确定,例如,s=f(权重预测位置),即s是一个与权重预测位置有关的函数。例如,在当前块外部的周边位置的范围确定后,可以确定周边位置的有效数量,并将所有周边位置进行N等分,N的取值可以任意配置,如4、6、8等,而权重预测位置用于表示采用当前块外部的哪个周边位置作为当前块的目标周边区域,而这个权重预测位置对应的周边位置就是权重变换的起始位置。或者,s可以由权重预测角度和权重预测位置确定,例如,s=f(权重预测角度,权重预测位置),即s是一个与权重预测角度和权重预测位置有关的函数。例如,可以根据权重预测角度确定当前块外部的周边位置的范围,在当前块外部的周边位置的范围确定后,可以确定周边位置的有效数量,并将所有周边位置进行N等分,权重预测位置用于表示采用当前块外部的哪个周边位置作为当前块的目标周边区域,而这个权重预测位置对应的周边位置就是权重变换的起始位置。
综上所述,在y=Clip3(最小值,最大值,a*(x-s))中,权重变换率a和权重变换的起始位置s均为已知值,针对当前块外部的每个周边位置,可以通过该函数关系确定该周边位置的参考权重值。例如,假设权重变换率a为2,权重变换的起始位置s为2,则该函数关系可以为y=2*(x-2),针对当前块外部的每个周边位置x,可以得到参考权重值y。
综上所述,可以得到当前块的有效数量个参考权重值,这些参考权重值单调递增或单调递减。在一种可能的实施方式中,当前块外部的周边位置的参考权重值包括目标区域的参考权重值,目标区域的第一邻近区域的参考权重值,目标区域的第二邻近区域的参考权重值。
示例性的,目标区域包括一个参考权重值或者至少两个参考权重值。例如,基于权重变换的起始位置,确定一个参考权重值,将这个参考权重值作为目标区域。又例如,基于权重变换的起始位置,确定至少两个参考权重值,将这至少两个参考权重值作为目标区域。
若目标区域包括至少两个参考权重值,则目标区域的至少两个参考权重值单调递增或单调递减。单调递增可以是严格单调递增(即目标区域的至少两个参考权重值严格单调递增);单调递减可以是严格单调递减(即目标区域的至少两个参考权重值严格单调递减)。例如,目标区域的参考权重值从1-7单调递增,或者,目标区域的参考权重值从7-1单调递减。
示例性的,第一邻近区域的参考权重值可以均为第一参考权重值,第二邻近区域的参考权重值可以单调递增。例如,第一邻近区域的参考权重值可以均为0,目标区域包括一个参考权重值,该参考权重值为1,第二邻近区域的参考权重值从2-8单调递增。
或者,第一邻近区域的参考权重值可以均为第一参考权重值,第二邻近区域的参考权重值可以单调递减。例如,第一邻近区域的参考权重值可以均为8,目标区域包括一个参考权重值,该参考权重值为7,第二邻近区域的参考权重值从6-0单调递减。
或者,第一邻近区域的参考权重值均为第二参考权重值,第二邻近区域的参考权重值均为第三参考权重值,第二参考权重值与第三参考权重值不同。例如,第一邻近区域的参考权重值均为0,目标区域包括至少两个参考权重值,参考权重值从1-7单调递增,第二邻近区域的参考权重值均为8,显然,第一邻近区域的参考权重值与第二邻近区域的参考权重值不同。
或者,第一邻近区域的参考权重值单调递增或单调递减,第二邻近区域的参考权重值单调递增或单调递减;例如,第一邻近区域的参考权重值单调递增,第二邻近区域的参考权重值也单调递增;又例如,第一邻近区域的参考权重值单调递减,第二邻近区域的参考权重值也单调递减。例如,第一邻近区域的参考权重值从0-3单调递增,目标区域包括一个参考权重值,该参考权重值为4,第二邻近区域的参考权重值从5-8单调递增。
情况2:针对有效数量个参考权重值,可以先包括多个第一数值,再包括多个第二数值,或者,可以先包括多个第二数值,再包括多个第一数值。例如,有效数量个参考权重值可以为[88...8800...00]或[00...0088...88]。示例性的,可以根据权重变换的起始位置确定多个参考权重值。例如,权重变换的起始位置表示第s个参考权重值,因此,第s个参考权重值之前(不包括第s个参考权重值)的所有参考权重值为第一数值(如8),第s个参考权重值之后(包括第s个参考权重值)的所有参考权重值为第二数值(如0)。或者,第s个参考权重值之前的所有参考权重值为第二数值,第s个参考权重值之后的所有参考权重值为第一数值。
步骤c2,根据有效数量个参考权重值,配置当前块外部的周边位置的参考权重值。
示例性的,当前块外部的周边位置的数量为有效数量,且参考权重值的数量为有效数量,因此,可以将有效数量个参考权重值,配置为当前块外部的周边位置的参考权重值。
例如,可以将第1个参考权重值配置为当前块外部的第1个周边位置的参考权重值,将第2个参考权重值配置为当前块外部的第2个周边位置的参考权重值,以此类推。
综上所述,由于已经为当前块外部的周边位置配置参考权重值,即每个周边位置均具有参考权重值,因此,在从当前块外部的周边位置中确定像素位置指向的周边匹配位置后,可以确定该周边匹配位置关联的参考权重值,也就是该像素位置的目标权重值。
以下结合几个具体的应用场景,对上述过程的实施方式进行说明。示例性的,在后续几个应用场景中,假设当前块的尺寸为M*N,M为当前块的宽,N为当前块的高。X为权重预测角度的tan值的log2对数值,如0或者1。Y为权重预测位置的索引值,a,b,c,d为预设的常数值。ValidLenth表示有效数量,FirstPos表示权重变换的起始位置,ReferenceWeights[i]表示第i个周边位置的参考权重值,Clip3用于限制参考权重值位于最小值0与最大值8之间,i表示当前块外部的周边位置的索引,a表示权重变换率的绝对值。
应用场景1:基于当前块的尺寸和当前块的权重预测角度确定有效数量(也可以称为参考权重有效长度,即ValidLenth),并获取权重变换的起始位置(即FirstPos)。例如,可以通过如下公式确定ValidLenth:ValidLenth=(N+(M>>X))<<1;通过如下公式确定FirstPos:FirstPos=(ValidLength>>1)-a+Y*((ValidLength-1)>>3)。在此基础上,通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,a*(i-FirstPos))。i的取值范围可以是0~ValidLength-1;或1~ValidLength。在得到当前块的周边位置的参考权重值ReferenceWeights[i]后,通过如下公式导出当前块的像素位置(x,y)的目标权重值:SampleWeight[x][y]=ReferenceWeights[(y<<1)+((x<<1)>>X)],<<表示左移,>>表示右移。
应用场景2:可以通过如下公式确定ValidLenth:ValidLenth=(N+(M>>X))<<1;通过如下公式确定FirstPos:FirstPos=(ValidLength>>1)-b+Y*((ValidLength-1)>>3)–((M<<1)>>X)。在此基础上,通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,a*(i-FirstPos))。可以通过如下公式导出当前块的每个像素位置(x,y)的目标权重值:SampleWeight[x][y]=ReferenceWeights[(y<<1)-((x<<1)>>X)]。
应用场景3:可以通过如下公式确定ValidLenth:ValidLenth=(M+(N>>X))<<1;通过如下公式确定FirstPos:FirstPos=(ValidLength>>1)-c+Y*((ValidLength-1)>>3)–((N<<1)>>X)。在此基础上,可以通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,a*(i-FirstPos))。可以通过如下公式导出当前块的每个像素位置(x,y)的目标权重值:SampleWeight[x][y]=ReferenceWeights[(x<<1)-((y<<1)>>X)]。
应用场景4:可以通过如下公式确定ValidLenth:ValidLenth=(M+(N>>X))<<1;可以通过如下公式确定FirstPos:FirstPos=(ValidLength>>1)-d+Y*((ValidLength-1)>>3);在此基础上,可以通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,a*(i-FirstPos))。可以通过如下公式导出当前块的每个像素位置(x,y)的目标权重值:SampleWeight[x][y]=ReferenceWeights[(x<<1)+((y<<1)>>X)]。
应用场景5:参见图7所示,示出了四种权重变换率的参考权重值的示意图。
在权重变换率的绝对值为1时,即权重变换率为1或者权重变换率为-1,可以通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,1*(i-FirstPos)),上述公式可以等价为ReferenceWeight[i]=Clip3(0,8,i–FirstPos)。在该情况中,参见图7所示的第一类情况,FirstPos可以为4,即第1个到第4个周边位置的参考权重值为0,第5个周边位置的参考权重值为1,第6个周边位置的参考权重值为2,以此类推。
在权重变换率的绝对值为2时,即权重变换率为2或者权重变换率为-2,通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,2*(i-FirstPos)),上述公式可以等价为ReferenceWeight[i]=Clip3(0,8,(i–FirstPos)<<1)。在该情况中,参见图7所示的第二类情况,FirstPos可以为6,即第1个到第6个周边位置的参考权重值为0,第7个周边位置的参考权重值为2,第8个周边位置的参考权重值为4,以此类推。
在权重变换率的绝对值为4时,即权重变换率为4或者权重变换率为-4,可以通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,4*(i-FirstPos)),上述公式可以等价为ReferenceWeight[i]=Clip3(0,8,(i–FirstPos)<<2)。在该情况中,参见图7所示的第三类情况,FirstPos可以为7,第1个到第7个周边位置的参考权重值为0,第8个周边位置的参考权重值为4,第9-17个周边位置的参考权重值为8,以此类推。
在权重变换率的绝对值为8时,即权重变换率为8或者权重变换率为-8,通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,8*(i-FirstPos)),上述公式可以等价为ReferenceWeight[i]=Clip3(0,8,(i–FirstPos)<<3)。在该情况中,参见图7所示的第四类情况,FirstPos可以为8,即第1个到第8个周边位置的参考权重值为0,第9个周边位置的参考权重值为9,第10-17个周边位置的参考权重值为8,以此类推。
综上所述,在权重变换率的绝对值为1时,FirstPos为4,在权重变换率的绝对值为2时,FirstPos为6(即权重变换率1时的FirstPos+2),在权重变换率的绝对值为4时,FirstPos为7(即权重变换率1时的FirstPos+3),基于此,可以对齐参考权重值为4的位置。
示例性的,针对当前块来说,在支持权重变换率切换并启动权重变换率切换时,可以从图7所示的4类权重变换率的参考权重值分布示例中选择一种进行切换,从而通过对图像或者图像的局部区域进行权重变换率的切换,达到减弱一些图像显示场景中的图像显示的跳变突出。比如说,有一些图像显示场景中需要解决跳变比较突出的问题,AWP模式的权重变化率切换能够解决这个问题。例如,混合图像内容包括部分屏幕内容,动画片,包含动画片的图像等,可以对某个含有屏幕内容的区域进行权重变换率切换,解决跳变比较突出的问题。
在上述过程中,ValidLenth与当前块的权重预测角度和当前块的尺寸相关,为了方案简化,可以固化某些参数来达到优化目的,例如,可以将当前块的权重预测角度配置为固定参数值,ValidLenth只与当前块的尺寸相关。FirstPos与当前块的权重预测角度,当前块的尺寸,当前块的权重预测位置相关,为了方案简化,可以固化某些参数来达到优化目的,例如,可以将当前块的权重预测角度配置为固定参数值,FirstPos只与当前块的尺寸和当前块的权重预测位置相关。或,将当前块的权重预测位置配置为固定参数值,FirstPos只与当前块的尺寸和当前块的权重预测角度相关。或,将当前块的权重预测角度和当前块的权重预测位置均配置为固定参数值,这两个固定参数值可以相同或者不同,FirstPos只与当前块的尺寸相关。
实施例8:在实施例1-实施例4中,编码端/解码端需要根据当前块的权重变换率和当前块的权重变换的起始位置为当前块外部的周边位置配置参考权重值。在一种可能的实施方式中,记M和N是当前块的宽和高,角度加权预测模式(AWP)的权重阵列导出方式,包括:
步骤d1,根据AwpIdx获取stepIdx,angleIdx以及subAngleIdx等参数。
示例性的,AwpIdx表示权重预测位置和权重预测角度的索引值,假设存在7种权重预测位置,8种权重预测角度,则AwpIdx的取值范围是0-55。若权重预测位置为-3至3(表示第4个权重预测位置是中心,第4个权重预测位置为0),权重预测角度的索引为0-7,则AwpIdx的56个索引值对应的权重预测位置和权重预测角度,可以参见表1所示。
表1
AwpIdx 权重预测位置 权重预测角度
0 -3 0
1 -3 1
7 -3 7
8 -2 0
9 -2 1
55 3 7
示例性的,stepIdx表示权重预测位置(即权重预测位置的索引值),权重预测位置的范围可以是-3至3。例如,针对第1个权重预测位置,权重预测位置为-3,针对第2个权重预测位置,权重预测位置为-2,以此类推,针对第7个权重预测位置,权重预测位置为3。
angleIdx表示权重预测角度的斜率的绝对值的log2对数值(如0,或1,或较大常数),subAngleIdx表示权重预测角度所在的角度分区。参见图8A所示,示出8种权重预测角度,权重预测角度0的angleIdx为权重预测角度0的斜率的绝对值的log2对数值,权重预测角度1的angleIdx为权重预测角度1的斜率的绝对值的log2对数值,以此类推,权重预测角度7的angleIdx为权重预测角度7的斜率的绝对值的log2对数值。权重预测角度0和权重预测角度1位于角度分区0,权重预测角度2和权重预测角度3位于角度分区1,权重预测角度4和权重预测角度5位于角度分区2,权重预测角度6和权重预测角度7位于角度分区3。
示例性的,可以采用如下公式确定stepIdx:stepIdx=(AwpIdx>>3)–3。
示例性的,可以根据如下公式确定modAngNum(角度编号):modAngNum=AwpIdx%8;基于modAngNum,可以采用如下方式确定angleIdx:若modAngNum等于2,则angleIdx=7;若modAngNum等于6,则angleIdx=8;否则,angleIdx=modAngNum%2。
示例性的,可以采用如下公式确定subAngleIdx:subAngleIdx=modAngNum>>1。
综上所述,编码端在确定出当前块的权重预测角度和当前块的权重预测位置后,可以基于该权重预测角度和该权重预测位置确定AwpIdx的取值,参见表1所示。编码端在向解码端发送编码比特流时,该编码比特流可以携带AwpIdx的取值,基于此,解码端可以得到AwpIdx的取值,并根据AwpIdx获取stepIdx,angleIdx以及subAngleIdx。
示例性的,angleIdx以及subAngleIdx能够唯一确定一个权重预测角度,参见表2所示,当然,也可以采用其它方式确定权重预测角度,例如,更改分区编号等。
表2
角度编号modAngNum 角度分区subAngleIdx 权重预测角度的斜率的绝对值的log2对数值angleIdx
0 0 0
1 0 1
2 1 水平,配置较大值使得((x<<1)>>angleIdx)的值为0
3 1 1
4 2 0
5 2 1
6 3 垂直,配置较大值使得((y<<1)>>angleIdx)的值为0
7 3 1
步骤d2,根据stepIdx,angleIdx和subAngleIdx为当前块外部周边位置配置参考权重值。
情况一、若subAngleIdx为0,即权重预测角度位于角度分区0,比如说,权重预测角度为权重预测角度0或权重预测角度1,则可以采用如下公式确定权重变换的起始位置FirstPos:FirstPos=(ValidLength_H>>1)-6+DeltaPos_H。然后,采用如下公式确定当前块外部的周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,x-FirstPos),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为1为例进行说明,也就是说,上述公式可以等价为ReferenceWeights[x]=Clip3(最小值,最大值,a*(x-FirstPos))。x可以是当前块外部的周边位置的索引,x的取值范围是0~ValidLength_H-1,a表示权重变换率。
在上述公式中,ValidLength_H可以表示当前块外部的周边位置的数量(即有效数量,也可以称为有效长度),在subAngleIdx为0时,权重预测角度指向的当前块外部的周边位置,可以是左侧一列的周边位置,因此,可以将有效数量记为ValidLength_H。示例性的,可以采用如下公式确定有效数量ValidLength_H:ValidLength_H=(N+(M>>angleIdx))<<1。此处左移一位,是因为公式采用1/2-pel精度,若为1-pel精度,则ValidLength_H=(N+(M>>angleIdx));若为1/4-pel精度,则ValidLength_H=(N+(M>>angleIdx))<<2;若为2-pel精度,则ValidLength_H=(N+(M>>angleIdx))>>1,其他像素精度以此类推,在此不在赘述。之后的公式中,涉及的部分>>1操作,均可能因为像素精度的不同而发生改变。
在上述公式中,DeltaPos_H表示位置变化量参数(即一个中间参数),在subAngleIdx为0时,权重预测角度指向的当前块外部的周边位置,可以是当前块外部左侧一列的周边位置,因此,可以将位置变化量参数记为DeltaPos_H。示例性的,可以采用如下公式确定DeltaPos_H:DeltaPos_H=stepIdx*((ValidLength_H>>3)-1)。
情况二、若subAngleIdx为1,即权重预测角度位于角度分区1,比如说,权重预测角度为权重预测角度2或权重预测角度3,则可以采用如下公式确定权重变换的起始位置FirstPos:FirstPos=(ValidLength_H>>1)-4+DeltaPos_H–((M<<1)>>angleIdx)。然后,采用如下公式确定当前块外部的周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,a*(x-FirstPos)),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为a为例进行说明。x可以是当前块外部的周边位置的索引,x的取值范围是0~ValidLength_H-1。
在上述公式中,ValidLength_H和DeltaPos_H可以参见情况一,在此不再赘述。
情况三、若subAngleIdx为2,即权重预测角度位于角度分区2,比如说,权重预测角度为权重预测角度4或权重预测角度5,则可以采用如下公式确定权重变换的起始位置FirstPos:FirstPos=(ValidLength_W>>1)-4+DeltaPos_W–((N<<1)>>angleIdx)。然后,采用如下公式确定当前块外部的周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,a*(x-FirstPos)),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为a为例进行说明。x可以是当前块外部的周边位置的索引,x的取值范围是0~ValidLength_W-1。
在上述公式中,ValidLength_W表示当前块外部的周边位置的数量(即有效数量,也可以称为有效长度),在subAngleIdx为2时,权重预测角度指向的当前块外部的周边位置,可以是上侧一行的周边位置,因此,将有效数量记为ValidLength_W。示例性的,可以采用如下公式确定有效数量ValidLength_W:ValidLength_W=(M+(N>>angleIdx))<<1。
在上述公式中,DeltaPos_W表示位置变化量参数(即一个中间参数),在subAngleIdx为2时,权重预测角度指向的当前块外部的周边位置,可以是当前块外部上侧一行的周边位置,因此,可以将位置变化量参数记为DeltaPos_W。示例性的,可以采用如下公式确定DeltaPos_W:DeltaPos_W=stepIdx*((ValidLength_W>>3)-1)。
情况四、若subAngleIdx为3,即权重预测角度位于角度分区3,比如说,权重预测角度为权重预测角度6或权重预测角度7,则可以采用如下公式确定权重变换的起始位置FirstPos:FirstPos=(ValidLength_W>>1)-6+DeltaPos_W。然后,可以采用如下公式确定当前块外部的周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,a*(x-FirstPos)),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为a为例进行说明。x可以是当前块外部的周边位置的索引,x的取值范围是0~ValidLength_W-1。
在上述公式中,ValidLength_W和DeltaPos_W可以参见情况三,在此不再赘述。
综上所述,可以根据subAngleIdx确定应该采用哪种情况进行处理,例如,在情况一和情况二中,可以根据angleIdx和stepIdx确定ValidLength_H和DeltaPos_H,并可以根据ValidLength_H和DeltaPos_H确定FirstPos,继而根据FirstPos配置参考权重值。在情况三和情况四中,可以根据angleIdx和stepIdx确定ValidLength_W和DeltaPos_W,并可以根据ValidLength_W和DeltaPos_W确定FirstPos,继而根据FirstPos配置参考权重值。
上述各情况中的公式的区别在于,将当前块的左上角作为坐标原点时,参考权重值ReferenceWeights[x]的起始位置发生了变化。例如,参见图8B所示,示出了角度分区2和角度分区3的示例,在1/2-pel精度时,参考权重值ReferenceWeights[x]的起始位置为(高<<1)>>angleIdx,即公式中的偏移“–((N<<1)>>angleIdx)”。角度分区0和角度分区1的实现类似,只是公式中的偏移为“–((M<<1)>>angleIdx)”,即高度改为宽度即可。
步骤d3,根据angleIdx和参考权重值ReferenceWeights[x]获取像素位置的亮度权重值。
情况一、若subAngleIdx为0,则可以采用如下公式确定像素位置(x,y)的亮度权重值:AwpWeightArrayY[x][y]=ReferenceWeights[(y<<1)+((x<<1)>>angleIdx)],(y<<1)+((x<<1)>>angleIdx)表示像素位置(x,y)指向的周边位置,ReferenceWeights[(y<<1)+((x<<1)>>angleIdx)]表示该周边位置的参考权重值。x的取值范围是0~M-1,y的取值范围是0~N-1。
情况二、若subAngleIdx为1,则可以采用如下公式确定像素位置(x,y)的亮度权重值:AwpWeightArrayY[x][y]=ReferenceWeights[(y<<1)-((x<<1)>>angleIdx)],(y<<1)-((x<<1)>>angleIdx)表示像素位置(x,y)指向的周边位置,ReferenceWeights[(y<<1)-((x<<1)>>angleIdx)]表示该周边位置的参考权重值。x的取值范围是0~M-1;y的取值范围是0~N-1。
情况三、若subAngleIdx为2,则可以采用如下公式确定像素位置(x,y)的亮度权重值:AwpWeightArrayY[x][y]=ReferenceWeights[(x<<1)-((y<<1)>>angleIdx)],(x<<1)-((y<<1)>>angleIdx)表示像素位置(x,y)指向的周边位置,ReferenceWeights[(x<<1)-((y<<1)>>angleIdx)]表示该周边位置的参考权重值。x的取值范围是0~M-1;y的取值范围是0~N-1。
情况四、若subAngleIdx为3,则可以采用如下公式确定像素位置(x,y)的亮度权重值:AwpWeightArrayY[x][y]=ReferenceWeights[(x<<1)+((y<<1)>>angleIdx)],(x<<1)+((y<<1)>>angleIdx)表示像素位置(x,y)指向的周边位置,ReferenceWeights[(x<<1)+((y<<1)>>angleIdx)]表示该周边位置的参考权重值。x的取值范围是0~M-1;y的取值范围是0~N-1。
上述步骤d2和步骤d3可联合为一个步骤,即将步骤d2(根据stepIdx,angleIdx以及subAngleIdx为当前块外部的周边位置配置参考权重值)及步骤d3(根据angleIdx和参考权重值ReferenceWeight[x]获取亮度权重值)联合为:根据stepIdx,angleIdx及subAngleIdx获取像素位置的亮度权重值,即根据周边位置的坐标值与权重变换起始位置的坐标值确定。
以情况一为例:若subAngleIdx为0,即权重预测角度位于角度分区0,如权重预测角度为权重预测角度0或权重预测角度1,则采用如下公式确定权重变换的起始位置FirstPos:FirstPos=(ValidLength_H>>1)-6+DeltaPos_H。然后,采用如下公式AwpWeightArrayY[x][y]=Clip3(0,8,(y<<1)+((x<<1)>>angleIdx)-FirstPos)确定像素位置(x,y)的亮度权重值:(y<<1)+((x<<1)>>angleIdx)表示像素位置(x,y)指向的周边匹配位置。
步骤d4,根据像素位置的亮度权重值获取该像素位置的色度权重值,而该像素位置的亮度权重值和该像素位置的色度权重值,就可以组成该像素位置的目标权重值。
例如,若色度分辨率的格式为4:2:0,则采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=AwpWeightArrayY[x<<1][y<<1]。又例如,若色度分辨率的格式为4:4:4,则采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=AwpWeightArrayY[x][y]。其中,x的取值范围是0~M/2-1;y的取值范围是0~N/2-1。
步骤d4的另一种实现方式为:根据angleIdx和参考权重值ReferenceWeight[x]获取像素位置的色度权重值,而不需要根据亮度权重值获取色度权重值。例如,若色度分辨率的格式为4:2:0,则根据angleIdx和参考权重值ReferenceWeight[x]获取像素位置的色度权重值。
例如,若subAngleIdx为0,则可以采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=ReferenceWeights[(y<<2)+((x<<2)>>angleIdx)]。
例如,若subAngleIdx为1,则可以采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=ReferenceWeights[(y<<2)-((x<<2)>>angleIdx)]。
例如,若subAngleIdx为2,则可以采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=ReferenceWeights[(x<<2)-((y<<2)>>angleIdx)]。
例如,若subAngleIdx为3,则可以采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=ReferenceWeights[(x<<2)+((y<<2)>>angleIdx)]。
在上述各公式中,x的取值范围是0~M-1,y的取值范围是0~N-1。
在步骤d3和步骤d4中,各情况中的公式的区别在于,参见图8C所示,示出了角度分区2和角度分区3的示例。将当前块的左上角作为坐标原点时,(x,y)的匹配位置在角度分区2的计算公式可以为:x–y>>angleIdx,(x,y)的匹配位置在角度分区3的计算公式可以为:x+y>>angleIdx。在1/2-pel精度时,(x,y)的匹配位置在角度分区2的计算公式可以为:(x<<1)–(y<<1)>>angleIdx,(x,y)的匹配位置在角度分区3的计算公式可以为:(x<<1)+(y<<1)>>angleIdx。角度分区0和角度分区1的实现类似,只是交换(x,y)的位置即可。
实施例9:在实施例1-实施例4中,编码端/解码端需要获取当前块的权重变换率,若当前块支持权重变换率切换模式,则采用如下方式获取当前块的权重变换率:获取当前块的权重变换率指示信息,并根据该权重变换率指示信息确定当前块的权重变换率。示例性的,若该权重变换率指示信息为第一指示信息,则当前块的权重变换率为第一权重变换率;若权重变换率指示信息为第二指示信息,则当前块的权重变换率为第二权重变换率。若当前块不支持权重变换率切换模式,则将预设的权重变换率确定为当前块的权重变换率。
综上所述,若当前块支持权重变换率切换模式,则当前块的权重变换率可以为第一权重变换率或者第二权重变换率,且第一权重变换率与第二权重变换率不同,即,当前块的权重变换率是可变的,从而能够自适应的切换权重变换率,而不是采用统一的一个权重变换率。
示例性的,若切换控制信息允许当前块启用权重变换率切换模式,则当前块支持权重变换率切换模式,若切换控制信息不允许当前块启用权重变换率切换模式,则当前块不支持权重变换率切换模式。该切换控制信息可以包括但不限于:序列级切换控制信息,帧级切换控制信息,Slice(片)级切换控制信息,Tile(片)级切换控制信息,Patch(片)级切换控制信息,CTU(Coding Tee Unit,编码树单元)级切换控制信息,LCU(Largest CodingUnit,最大编码单元)级切换控制信息,块级切换控制信息,CU(Coding Unit,编码单元)级切换控制信息,PU(Prediction Unit,预测单元)级切换控制信息等,对此不做限制。
对于编码端来说,可以获知切换控制信息,且获知切换控制信息是否允许当前块启用权重变换率切换模式,继而确定当前块是否支持权重变换率切换模式。编码端可以将切换控制信息编码到码流,使得解码端从码流中解析出切换控制信息,获知切换控制信息是否允许当前块启用权重变换率切换模式,继而确定当前块是否支持权重变换率切换模式。编码端也可以不将切换控制信息编码到码流,而是由解码端隐式推导出切换控制信息,获知切换控制信息是否允许当前块启用权重变换率切换模式,继而确定当前块是否支持权重变换率切换模式。
以序列级切换控制信息为例,序列级切换控制信息可以为awp_adptive_flag(帧间角度加权预测适应标志位),若awp_adptive_flag为第一取值,则表示序列级切换控制信息允许当前序列启用权重变换率切换模式,从而允许当前块启用权重变换率切换模式,若awp_adptive_flag为第二取值,则表示序列级切换控制信息不允许当前序列启用权重变换率切换模式,从而不允许当前块启用权重变换率切换莫。示例性的,第一取值为1,第二取值为0,或者,第一取值为0,第二取值为1。当然,上述只是第一取值和第二取值的示例,对此不做限制。针对其它类型的切换控制信息,实现过程与序列级切换控制信息类似,在此不再赘述。
在一种可能的实施方式中,当前块的权重变换率指示信息可以为当前块对应的SCC(Screen Content Coding,屏幕内容编码)标识,第一指示信息用于指示当前块属于屏幕内容编码,第二指示信息用于指示当前块属于非屏幕内容编码。在此基础上,可以获取当前块对应的SCC标识,并根据该SCC标识确定当前块的权重变换率。例如,若该SCC标识用于指示当前块属于屏幕内容编码,则当前块的权重变换率为第一权重变换率;若该SCC标识用于指示当前块属于非屏幕内容编码,则当前块的权重变换率为第二权重变换率。
示例性的,第一权重变换率的绝对值可以大于第二权重变换率的绝对值。例如,第一权重变换率的绝对值可以为4,第二权重变换率的绝对值可以为1或2。又例如,第一权重变换率的绝对值可以为2,第二权重变换率的绝对值可以为1。又例如,第一权重变换率的绝对值可以为8,第二权重变换率的绝对值可以为1或2或4。又例如,第一权重变换率的绝对值可以为8或4,第二权重变换率的绝对值可以为1或2。当然,上述只是几个示例,对此不做限制,只要第一权重变换率的绝对值大于第二权重变换率的绝对值即可。
示例性的,SCC标识可以包括但不限于:序列级SCC标识,帧级SCC标识,Slice级SCC标识,Tile级SCC标识,Patch级SCC标识,CTU级SCC标识,LCU级SCC标识,块级SCC标识,CU级SCC标识,PU级SCC标识等等,对此不做限制。例如,可以将当前块对应的序列级SCC标识确定为当前块对应的SCC标识,或者,将当前块对应的帧级SCC标识确定为当前块对应的SCC标识,以此类推,只要能够得到当前块对应的SCC标识即可。
示例性的,对于编码端来说,可以决策当前块属于屏幕内容编码,还是属于非屏幕内容编码。若当前块属于屏幕内容编码,则编码端确定当前块的权重变换率为第一权重变换率。若当前块属于非屏幕内容编码,则编码端确定当前块的权重变换率为第二权重变换率。或者,对于编码端来说,可以获取当前块对应的SCC标识,若该SCC标识用于指示当前块属于屏幕内容编码,则编码端确定当前块的权重变换率为第一权重变换率。若该SCC标识用于指示当前块属于非屏幕内容编码,则编码端确定当前块的权重变换率为第二权重变换率。
编码端可以将SCC标识(如序列级SCC标识,帧级SCC标识,Slice级SCC标识等等)编码到码流,使得解码端从码流中解析出该SCC标识,并将该SCC标识确定为当前块对应的SCC标识,例如,可以将当前块对应的序列级SCC标识确定为当前块对应的SCC标识。综上所述,解码端可以获知当前块对应的SCC标识,若该SCC标识用于指示当前块属于屏幕内容编码,则解码端确定当前块的权重变换率为第一权重变换率。若该SCC标识用于指示当前块属于非屏幕内容编码,则解码端确定当前块的权重变换率为第二权重变换率。例如,若SCC标识为第一取值,则用于指示当前块属于屏幕内容编码,若SCC标识为第二取值,则用于指示当前块属于非屏幕内容编码。第一取值为1,第二取值为0,或者,第一取值为0,第二取值为1。当然,上述只是第一取值和第二取值的示例,对此不做限制。
编码端也可以不将SCC标识编码到码流,而是利用与解码端一致的信息隐式推导出SCC标识,此时解码端也可以隐式推导出SCC标识,并将该SCC标识确定为当前块对应的SCC标识。例如,若连续多帧均是屏幕内容编码,则推导出当前帧为屏幕内容编码,因此,解码端隐式推导出帧级SCC标识,并将该SCC标识确定为当前块对应的SCC标识,且该SCC标识用于指示当前块属于屏幕内容编码。例如,若连续多帧均是非屏幕内容编码,则推导出当前帧为非屏幕内容编码,因此,解码端隐式推导出帧级SCC标识,且该SCC标识用于指示当前块属于非屏幕内容编码。例如,若IBC模式占比小于一定百分比,将下一帧确定为非屏幕内容编码,否则继续为屏幕内容编码。当然,上述方式只是隐式推导出SCC标识的示例,对此隐式推导方式不做限制。综上所述,解码端可以获取当前块对应的SCC标识,若该SCC标识用于指示当前块属于屏幕内容编码,则解码端确定当前块的权重变换率为第一权重变换率。若该SCC标识用于指示当前块属于非屏幕内容编码,则解码端确定当前块的权重变换率为第二权重变换率。例如,若SCC标识为第一取值,则用于指示当前块属于屏幕内容编码,若SCC标识为第二取值,则用于指示当前块属于非屏幕内容编码。
综上所述,当前块的权重变换率可以为第一权重变换率或者第二权重变换率,即当前块的权重变换率可以进行切换,且权重变换率的切换依赖于某级的SCC显示标识或SCC隐式标识,SCC显示标识是指,将scc_flag(SCC标识)编入码流,使得解码端从码流中解析出SCC标识,SCC隐式标识是指,解码端根据能够得到的信息自适应推导出SCC标识。
某级SCC标识是指:序列级指示当前序列的SCC标识,该SCC标识作为属于当前序列的所有块的SCC标识;帧级指示当前帧的SCC标识,该SCC标识作为属于当前帧的所有块的SCC标识;Slice级指示当前Slice的SCC标识,该SCC标识作为属于当前Slice的所有块的SCC标识;Tile级指示当前Tile的SCC标识,该SCC标识作为属于当前Tile的所有块的SCC标识;Patch级指示当前Patch的SCC标识,该SCC标识作为属于当前Patch的所有块的SCC标识;CTU级指示当前CTU的SCC标识,该SCC标识作为属于当前CTU的所有块的SCC标识;LCU级指示当前LCU的SCC标识,该SCC标识作为属于当前LCU的所有块的SCC标识;块级指示当前块的SCC标识,该SCC标识作为属于当前块的所有块的SCC标识;CU级指示当前CU的SCC标识,该SCC标识作为属于当前CU的SCC标识;PU级指示当前PU的SCC标识,该SCC标识作为属于当前PU的SCC标识。
示例性的,可以将第二权重变换率作为默认的权重变换率,在SCC标识用于指示当前块属于非屏幕内容编码时,不需要对权重变换率进行切换,即确定当前块的权重变换率为第二权重变换率。在SCC标识用于指示当前块属于屏幕内容编码时,需要对权重变换率进行切换,即确定当前块的权重变换率为第一权重变换率。或者,可以将第一权重变换率作为默认的权重变换率,在SCC标识用于指示当前块属于非屏幕内容编码时,需要对权重变换率进行切换,即确定当前块的权重变换率为第二权重变换率。在SCC标识用于指示当前块属于屏幕内容编码时,不需要对权重变换率进行切换,即确定当前块的权重变换率为第一权重变换率。
综上所述,在当前块属于屏幕内容编码时,当前块的权重变换率为第一权重变换率,在当前块属于非屏幕内容编码时,当前块的权重变换率为第二权重变换率,且第一权重变换率的绝对值大于第二权重变换率的绝对值,如第一权重变换率的绝对值为4,第二权重变换率的绝对值为1,使得属于SCC序列的当前块的权重变换率的绝对值增加,即变换速度增加。
在另一种可能的实施方式中,当前块的权重变换率指示信息可以为当前块对应的权重变换率切换标识,第一指示信息用于指示当前块不需要进行权重变换率切换,第二指示信息用于指示当前块需要进行权重变换率切换。在此基础上,可以获取当前块对应的权重变换率切换标识,并根据该权重变换率切换标识确定当前块的权重变换率。例如,若该权重变换率切换标识用于指示当前块不需要进行权重变换率切换,则当前块的权重变换率可以为第一权重变换率;若该权重变换率切换标识用于指示当前块需要进行权重变换率切换,则当前块的权重变换率可以为第二权重变换率。第一权重变换率的绝对值不等于第二权重变换率的绝对值。
例如,第一权重变换率的绝对值可以大于第二权重变换率的绝对值,如第一权重变换率的绝对值可以为4,第二权重变换率的绝对值为1或2。或,第一权重变换率的绝对值可以为2,第二权重变换率的绝对值为1。或,第一权重变换率的绝对值可以为8,第二权重变换率的绝对值为1或2或4。又例如,第一权重变换率的绝对值可以小于第二权重变换率的绝对值,如第一权重变换率的绝对值可以为1,第二权重变换率的绝对值可以为2或4或8。或者,第一权重变换率的绝对值可以为2,第二权重变换率的绝对值可以为4或8。或者,第一权重变换率的绝对值可以为4,第二权重变换率的绝对值可以为8。当然,上述只是几个示例,对此不做限制,只要第一权重变换率的绝对值不等于第二权重变换率的绝对值即可。
示例性的,权重变换率切换标识可以包括但不限于:序列级权重变换率切换标识,帧级权重变换率切换标识,Slice级权重变换率切换标识,Tile级权重变换率切换标识,Patch级权重变换率切换标识,CTU级权重变换率切换标识,LCU级权重变换率切换标识,块级权重变换率切换标识,CU级权重变换率切换标识,PU级权重变换率切换标识等等,对此不做限制。
例如,可以将当前块对应的序列级权重变换率切换标识确定为当前块对应的权重变换率切换标识,或者,将当前块对应的帧级权重变换率切换标识确定为当前块对应的权重变换率切换标识,以此类推,只要能够得到当前块对应的权重变换率切换标识即可。
示例性的,可以将第一权重变换率作为默认的权重变换率,对于编码端来说,可以获知当前块是否需要进行权重变换率切换,若当前块不需要进行权重变换率切换,则编码端确定当前块的权重变换率为第一权重变换率。若当前块需要进行权重变换率切换,则编码端确定当前块的权重变换率为第二权重变换率。或者,对于编码端来说,可以获知当前块对应的权重变换率切换标识,若该权重变换率切换标识用于指示当前块不需要进行权重变换率切换,则编码端可以确定当前块的权重变换率为第一权重变换率。若该权重变换率切换标识用于指示当前块需要进行权重变换率切换,则编码端确定当前块的权重变换率为第二权重变换率。
例如,编码端确定与第一权重变换率对应的率失真代价值1,与第二权重变换率对应的率失真代价值2。若率失真代价值1小于率失真代价值2,则确定当前块不需要进行权重变换率切换,若率失真代价值2小于率失真代价值1,则确定当前块需要进行权重变换率切换。
编码端可以将权重变换率切换标识(如序列级权重变换率切换标识等)编码到码流,使得解码端从码流中解析出该权重变换率切换标识,并将该权重变换率切换标识确定为当前块对应的权重变换率切换标识。综上所述,解码端可以获知当前块对应的权重变换率切换标识,若该权重变换率切换标识用于指示当前块不需要进行权重变换率切换,则解码端确定当前块的权重变换率为第一权重变换率。若该权重变换率切换标识用于指示当前块需要进行权重变换率切换,则解码端确定当前块的权重变换率为第二权重变换率。例如,若权重变换率切换标识为第一取值,则指示当前块不需要进行权重变换率切换,若权重变换率切换标识为第二取值,则指示当前块需要进行权重变换率切换。第一取值为1,第二取值为0,或者,第一取值为0,第二取值为1。当然,上述只是第一取值和第二取值的示例,对此不做限制。
编码端也可以不将权重变换率切换标识编码到码流,而是由解码端隐式推导权重变换率切换标识,并将该权重变换率切换标识确定为当前块对应的权重变换率切换标识。例如,若连续多个块均需要进行权重变换率切换,则当前块也需要进行权重变换率切换,解码端隐式推导出权重变换率切换标识,将该权重变换率切换标识确定为当前块对应的权重变换率切换标识,且该权重变换率切换标识指示当前块需要进行权重变换率切换。若连续多个块均不需要进行权重变换率切换,则当前块也不需要进行权重变换率切换,解码端隐式推导出权重变换率切换标识,且权重变换率切换标识指示当前块不需要进行权重变换率切换。当然,上述方式只是隐式推导出权重变换率切换标识的示例,对此推导方式不做限制。综上所述,解码端可以获知当前块对应的权重变换率切换标识,若该权重变换率切换标识指示当前块不需要进行权重变换率切换,则确定当前块的权重变换率为第一权重变换率。若该权重变换率切换标识指示当前块需要进行权重变换率切换,则确定当前块的权重变换率为第二权重变换率。
综上所述,当前块的权重变换率可以为第一权重变换率或第二权重变换率,即当前块的权重变换率可以进行切换,权重变换率的切换依赖于某级的权重变换率切换标识(refine_flag),该refine_flag为显示标识或隐式标识,显示标识是指将refine_flag编入码流,使得解码端从码流中解析出refine_flag,隐式标识是指编解码端根据能够得到的信息自适应推导refine_flag。
示例性的,某级refine_flag是指:序列级指示当前序列的refine_flag,作为属于当前序列的所有块的refine_flag;帧级指示当前帧的refine_flag,作为属于当前帧的所有块的refine_flag;Slice级指示当前Slice的refine_flag,作为属于当前Slice的所有块的refine_flag;Tile级指示当前Tile的refine_flag,作为属于当前Tile的所有块的refine_flag;Patch级指示当前Patch的refine_flag,作为属于当前Patch的所有块的refine_flag;CTU级指示当前CTU的refine_flag,作为属于当前CTU的所有块的refine_flag;LCU级指示当前LCU的refine_flag,作为属于当前LCU的所有块的refine_flag;块级指示当前块的refine_flag,作为属于当前块的refine_flag;CU级指示当前CU的refine_flag,作为属于当前CU的refine_flag;PU级指示当前PU的refine_flag,作为属于当前PU的refine_flag。当然,上述只是几个示例,对此不做限制。
示例性的,可以将第一权重变换率作为默认的权重变换率,在权重变换率切换标识用于指示当前块不需要进行权重变换率切换时,不对权重变换率进行切换,即确定当前块的权重变换率为第一权重变换率。在权重变换率切换标识用于指示当前块需要进行权重变换率切换时,对权重变换率进行切换,即确定当前块的权重变换率为第二权重变换率。
实施例10:在实施例1-实施例4中,编码端/解码端需要获取当前块的权重预测角度和权重预测位置,在实施例9中,可以得到当前块的权重变换率,如第一权重变换率或者第二权重变换率,在此基础上,采用如下方式获取当前块的权重预测角度和权重预测位置:
方式一、编码端和解码端约定相同的权重预测角度作为当前块的权重预测角度,并约定相同的权重预测位置作为当前块的权重预测位置。例如,编码端和解码端将权重预测角度A作为当前块的权重预测角度,编码端和解码端将权重预测位置4作为当前块的权重预测位置。
方式二、编码端构建权重预测角度列表,权重预测角度列表包括至少一个权重预测角度,如权重预测角度A和权重预测角度B。编码端构建权重预测位置列表,权重预测位置列表包括至少一个权重预测位置,如权重预测位置0-权重预测位置数6。依次遍历权重预测角度列表中的每个权重预测角度,遍历权重预测位置列表中的每个权重预测位置,即遍历每个权重预测角度及每个权重预测位置的组合。将每个组合作为步骤a1中获取的权重预测角度和权重预测位置,基于该权重预测角度,该权重预测位置及权重变换率,得到当前块的加权预测值。
例如,编码端遍历到权重预测角度A和权重预测位置0时,基于权重预测角度A和权重预测位置0得到当前块的加权预测值。遍历到权重预测角度A和权重预测位置1时,基于权重预测角度A和权重预测位置1得到当前块的加权预测值。遍历到权重预测角度B和权重预测位置0时,基于权重预测角度B和权重预测位置0得到当前块的加权预测值,以此类推。编码端可以基于权重预测角度和权重预测位置的每个组合,得到当前块的加权预测值。
编码端基于权重预测角度和权重预测位置的组合得到当前块的加权预测值后,可以根据当前块的加权预测值确定率失真代价值,对此率失真代价值的确定方式不做限制,编码端可以得到每个组合的率失真代价值,并从所有率失真代价值中选择最小率失真代价值。
然后,编码端将最小率失真代价值对应的权重预测角度和权重预测位置组合分别作为目标权重预测角度和目标权重预测位置,最后将目标权重预测角度在权重预测角度列表中的索引值和目标权重预测位置在权重预测位置列表中的索引值编入码流。
针对解码端来说,解码端构建权重预测角度列表,该权重预测角度列表与编码端的权重预测角度列表相同,权重预测角度列表包括至少一个权重预测角度。构建权重预测位置列表,该权重预测位置列表与编码端的权重预测位置列表相同,权重预测位置列表包括至少一个权重预测位置。解码端在接收到当前块的编码比特流后,从编码比特流中解析出指示信息,根据该指示信息从权重预测角度列表中选择一个权重预测角度作为当前块的权重预测角度,根据该指示信息从权重预测位置列表中选择一个权重预测位置作为当前块的权重预测位置。
应用场景1:编码端在向解码端发送编码比特流时,该编码比特流可以包括指示信息1,指示信息1用于指示当前块的权重预测角度(即目标权重预测角度)和当前块的权重预测位置(即目标权重预测位置)。例如,当指示信息1为0时,用于指示权重预测角度列表中的第一个权重预测角度,且指示权重预测位置列表中的第一个权重预测位置,当指示信息1为1时,用于指示权重预测角度列表中的第一个权重预测角度,且指示权重预测位置列表中的第二个权重预测位置,以此类推,对于指示信息1的取值,用于指示哪个权重预测角度和哪个权重预测位置,只要编码端与解码端进行约定即可,本实施例中对此不做限制。
解码端在接收到编码比特流后,从该编码比特流中解析出指示信息1,基于该指示信息1,解码端可以从权重预测角度列表中选择与该指示信息1对应的权重预测角度,该权重预测角度作为当前块的权重预测角度。基于该指示信息1,解码端可以从权重预测位置列表中选择与该指示信息1对应的权重预测位置,该权重预测位置作为当前块的权重预测位置。
应用场景2:编码端在向解码端发送编码比特流时,该编码比特流可以包括指示信息2和指示信息3。指示信息2用于指示当前块的目标权重预测角度,如目标权重预测角度在权重预测角度列表中的索引值1,索引值1表示目标权重预测角度是权重预测角度列表中的第几个权重预测角度。指示信息3用于指示当前块的目标权重预测位置,如目标权重预测位置在权重预测位置列表中的索引值2,索引值2表示目标权重预测位置是权重预测位置列表中的第几个权重预测位置。解码端接收到编码比特流后,从编码比特流中解析出指示信息2和指示信息3,基于指示信息2,从权重预测角度列表中选择与该索引值1对应的权重预测角度,该权重预测角度作为当前块的权重预测角度。基于该指示信息3,从权重预测位置列表中选择与该索引值2对应的权重预测位置,该权重预测位置作为当前块的权重预测位置。
应用场景3:编码端和解码端可以约定优选配置组合,对此优选配置组合不做限制,可以根据实际经验进行配置,例如,编码端和解码端约定包括权重预测角度A和权重预测位置4的优选配置组合1,包括权重预测角度B和权重预测位置4的优选配置组合2。
编码端确定当前块的目标权重预测角度和目标权重预测位置后,确定目标权重预测角度和目标权重预测位置是否为优选配置组合。如果是,则编码端在向解码端发送编码比特流时,该编码比特流可以包括指示信息4和指示信息5。指示信息4用于指示当前块是否采用优选配置组合,如指示信息4为第一取值(如0),表示当前块采用优选配置组合。指示信息5用于指示当前块采用哪个优选配置组合,如指示信息5为0时,用于指示当前块采用优选配置组合1,指示信息5为1时,用于指示当前块采用优选配置组合2。
解码端在接收到编码比特流后,从该编码比特流中解析出指示信息4和指示信息5,基于该指示信息4,解码端确定当前块是否采用优选配置组合。若指示信息4为第一取值,则确定当前块采用优选配置组合。在当前块采用优选配置组合时,解码端基于指示信息5,确定当前块采用哪个优选配置组合,如当指示信息5为0时,确定当前块采用优选配置组合1,即当前块的权重预测角度为权重预测角度A,当前块的权重预测位置为权重预测位置4。又例如,当指示信息5为1时,确定当前块采用优选配置组合2,即当前块的权重预测角度为权重预测角度B,当前块的权重预测位置为权重预测位置4。
示例性的,若编码端和解码端只约定一组优选配置组合,如包括权重预测角度A和权重预测位置4的优选配置组合,则该编码比特流可以包括指示信息4,而不包括指示信息5,指示信息4用于指示当前块采用优选配置组合。解码端从该编码比特流中解析出指示信息4后,若指示信息4为第一取值,则确定当前块采用优选配置组合,基于该优选配置组合,确定当前块的权重预测角度为权重预测角度A,当前块的权重预测位置为权重预测位置4。
应用场景4:编码端和解码端可以约定优选配置组合,编码端确定当前块的目标权重预测角度和目标权重预测位置后,确定目标权重预测角度和目标权重预测位置是否为优选配置组合。如果否,则编码端向解码端发送编码比特流时,该编码比特流包括指示信息4和指示信息6。指示信息4用于指示当前块是否采用优选配置组合,如指示信息4为第二取值(如1),表示当前块未采用优选配置组合。指示信息6用于指示当前块的目标权重预测角度和当前块的目标权重预测位置。例如,当指示信息6为0时,用于指示权重预测角度列表中的第一个权重预测角度,且指示权重预测位置列表中的第一个权重预测位置,以此类推。
解码端在接收到编码比特流后,从该编码比特流中解析出指示信息4和指示信息6,基于该指示信息4,解码端确定当前块是否采用优选配置组合。若指示信息4为第二取值,则确定当前块未采用优选配置组合。在当前块未采用优选配置组合时,解码端基于指示信息6,可以从权重预测角度列表中选择与该指示信息6对应的权重预测角度,该权重预测角度作为当前块的权重预测角度,基于该指示信息6,解码端可以从权重预测位置列表中选择与该指示信息6对应的权重预测位置,该权重预测位置作为当前块的权重预测位置。
应用场景5:编码端和解码端可以约定优选配置组合,编码端确定当前块的目标权重预测角度和目标权重预测位置后,确定目标权重预测角度和目标权重预测位置是否为优选配置组合。如果否,则编码端向解码端发送编码比特流时,该编码比特流包括指示信息4,指示信息7和指示信息8。示例性的,指示信息4用于指示当前块是否采用优选配置组合,如指示信息4为第二取值,表示当前块未采用优选配置组合。指示信息7用于指示当前块的目标权重预测角度,如目标权重预测角度在权重预测角度列表中的索引值1,索引值1表示目标权重预测角度是权重预测角度列表中的第几个权重预测角度。指示信息8用于指示当前块的目标权重预测位置,如目标权重预测位置在权重预测位置列表中的索引值2,索引值2表示目标权重预测位置是权重预测位置列表中的第几个权重预测位置。
解码端在接收到编码比特流后,从该编码比特流中解析出指示信息4,指示信息7和指示信息8,基于该指示信息4,解码端确定当前块是否采用优选配置组合。若指示信息4为第二取值,则确定当前块未采用优选配置组合。在当前块未采用优选配置组合时,解码端基于该指示信息7,从权重预测角度列表中选择与该索引值1对应的权重预测角度,该权重预测角度作为当前块的权重预测角度。解码端基于该指示信息8,从权重预测位置列表中选择与该索引值2对应的权重预测位置,该权重预测位置作为当前块的权重预测位置。
实施例11:在实施例1-实施例4中,编码端/解码端需要获取当前块的权重变换率,若当前块支持权重变换率切换模式,则采用如下方式获取当前块的权重变换率:获取当前块的权重变换率指示信息;从预设的查找表中选择与该权重变换率指示信息对应的权重变换率;该预设的查找表包括至少两个权重变换率。将选择的权重变换率确定为当前块的权重变换率。
由于预设的查找表包括至少两个权重变换率,因此,若当前块支持权重变换率切换模式,则可以从至少两个权重变换率中选择当前块的权重变换率,即,当前块的权重变换率是可变的,从而能够自适应的切换权重变换率,而不是采用统一的一个权重变换率。
示例性的,若切换控制信息允许当前块启用权重变换率切换模式,则当前块支持权重变换率切换模式,若切换控制信息不允许当前块启用权重变换率切换模式,则当前块不支持权重变换率切换模式,关于当前块是否支持权重变换率切换模式的内容,参见实施例9。
在一种可能的实施方式中,预设的查找表可以包括至少两个权重变换率,权重变换率指示信息可以包括权重变换率索引信息(用于指示查找表中所有权重变换率中的某个权重变换率)。基于此,可以从该查找表中选择与该权重变换率索引信息对应的权重变换率。
针对编码端来说,若只存在一个查找表,则针对查找表中的每个权重变换率,编码端可以确定与该权重变换率对应的率失真代价值,并将最小的率失真代价值对应的权重变换率作为当前块的目标权重变换率,确定目标权重变换率在查找表中的索引信息,即权重变换率索引信息,该权重变换率索引信息表示该查找表中的第几个权重变换率。
针对解码端来说,若只存在一个查找表,编码端向解码端发送当前块的编码比特流时,该编码比特流可以携带权重变换率索引信息,该权重变换率索引信息用于指示目标权重变换率在查找表中的索引信息。解码端从该查找表中选择与该权重变换率索引信息对应的权重变换率,该权重变换率作为当前块的目标权重变换率。
在另一种可能的实施方式中,预设的查找表可以包括至少两个查找表,每个查找表中可以包括至少一个权重变换率,权重变换率指示信息可以包括查找表索引信息(用于指示所有查找表中的某个查找表)和权重变换率索引信息(用于指示查找表中所有权重变换率中的某个权重变换率)。基于此,可以从至少两个查找表中选择与该查找表索引信息对应的目标查找表,并从目标查找表中选择与该权重变换率索引信息对应的权重变换率。
示例性的,预设的查找表可以包括第一查找表和第二查找表,第二查找表包括的权重变换率的绝对值的最大值,大于第一查找表包括的权重变换率的绝对值的最大值,比如说,第二查找表包括的权重变换率的绝对值为4,8,第一查找表包括的权重变换率的绝对值为5,7,显然,第二查找表包括的权重变换率的绝对值的最大值为8,第一查找表包括的权重变换率的绝对值的最大值为7。第二查找表包括的权重变换率的绝对值与第一查找表包括的权重变换率的绝对值不完全相同,比如说,第二查找表包括的权重变换率的绝对值为4,8,第一查找表包括的权重变换率的绝对值为1,2,4,两个查找表包括的权重变换率的绝对值不完全相同。或者,第二查找表包括的权重变换率的绝对值与第一查找表包括的权重变换率的绝对值完全不同,比如说,第二查找表包括的权重变换率的绝对值为4,8,第一查找表包括的权重变换率的绝对值为1,2,两个查找表包括的权重变换率的绝对值完全不同。
示例性的,权重变换率指示信息包括查找表索引信息和权重变换率索引信息,该查找表索引信息可以为当前块对应的SCC标识,且该SCC标识用于指示当前块属于屏幕内容编码,或者,该SCC标识用于指示当前块属于非屏幕内容编码。若该SCC标识用于指示当前块属于非屏幕内容编码,则与该SCC标识对应的目标查找表为第一查找表。若该SCC标识用于指示当前块属于屏幕内容编码,则与该SCC标识对应的目标查找表为第二查找表。
综上所述,可以获取当前块对应的SCC标识(即查找表索引信息)和权重变换率索引信息,若该SCC标识用于指示当前块属于非屏幕内容编码,则确定目标查找表为第一查找表,并从第一查找表中选择与该权重变换率索引信息对应的权重变换率,将选择的权重变换率确定为当前块的权重变换率。若该SCC标识用于指示当前块属于屏幕内容编码,则确定目标查找表为第二查找表,并从第二查找表中选择与该权重变换率索引信息对应的权重变换率,将选择的权重变换率确定为当前块的权重变换率。至此,成功得到当前块的权重变换率。
针对编码端来说,关于编码端获取SCC标识的过程,可以参见实施例9,在此不再赘述。
若SCC标识用于指示当前块属于非屏幕内容编码,则目标查找表可以为第一查找表,针对第一查找表中的每个权重变换率,编码端确定与该权重变换率对应的率失真代价值,并将最小的率失真代价值对应的权重变换率作为当前块的目标权重变换率,确定目标权重变换率在第一查找表中的索引信息,即权重变换率索引信息。若SCC标识用于指示当前块属于屏幕内容编码,则目标查找表可以为第二查找表,针对第二查找表中的每个权重变换率,编码端确定与该权重变换率对应的率失真代价值,并将最小的率失真代价值对应的权重变换率作为当前块的目标权重变换率,确定目标权重变换率在第二查找表中的索引信息,即权重变换率索引信息,该权重变换率索引信息表示第二查找表中的第几个权重变换率。
针对解码端来说,关于解码端获取SCC标识的过程,可以参见实施例9,在此不再赘述。
编码端向解码端发送当前块的编码比特流时,该编码比特流可以携带权重变换率索引信息,该权重变换率索引信息用于指示目标权重变换率在第一查找表或者第二查找表中的索引信息。若SCC标识用于指示当前块属于非屏幕内容编码,则目标查找表可以为第一查找表,解码端从第一查找表中选择与该权重变换率索引信息(该权重变换率索引信息表示第一查找表中的第几个权重变换率)对应的权重变换率,该权重变换率作为当前块的目标权重变换率。若SCC标识用于指示当前块属于屏幕内容编码,则目标查找表可以为第二查找表,解码端从第二查找表中选择与该权重变换率索引信息(该权重变换率索引信息表示第二查找表中的第几个权重变换率)对应的权重变换率,该权重变换率作为当前块的目标权重变换率。
示例性的,预设的查找表可以包括第一查找表和第二查找表,第二查找表包括的权重变换率的绝对值与第一查找表包括的权重变换率的绝对值不完全相同,比如说,第二查找表包括的权重变换率的绝对值可以为1,2,4,8,第一查找表包括的权重变换率的绝对值可以为3,4,5,6,显然,两个查找表包括的权重变换率的绝对值不完全相同。或者,第二查找表包括的权重变换率的绝对值与第一查找表包括的权重变换率的绝对值完全不同,比如说,第二查找表包括的权重变换率的绝对值可以为2,4,6,8,第一查找表包括的权重变换率的绝对值可以为1,3,5,7,显然,两个查找表包括的权重变换率的绝对值完全不同。
示例性的,权重变换率指示信息包括查找表索引信息和权重变换率索引信息,该查找表索引信息可以为当前块对应的查找表切换标识,且该查找表切换标识用于指示当前块需要切换查找表,或者,该查找表切换标识用于指示当前块不需要切换查找表。例如,若该查找表切换标识用于指示当前块不需要切换查找表,则目标查找表可以为第一查找表;若该查找表切换标识用于指示当前块需要切换查找表,则目标查找表可以为第二查找表。
综上所述,可以获取当前块对应的查找表切换标识(即查找表索引信息)和权重变换率索引信息,若该查找表切换标识用于指示当前块不需要切换查找表,则可以确定目标查找表为第一查找表,并从第一查找表中选择与该权重变换率索引信息对应的权重变换率,将选择的权重变换率确定为当前块的权重变换率。若该查找表切换标识用于指示当前块需要切换查找表,则可以确定目标查找表为第二查找表,并从第二查找表中选择与该权重变换率索引信息对应的权重变换率,将选择的权重变换率确定为当前块的权重变换率。
针对编码端来说,关于编码端获取查找表切换标识的过程,可以参见实施例9,将实施例9中的权重变换率切换标识替换为查找表切换标识即可,在此不再赘述。例如,编码端依次遍历每个查找表中每个权重变换率,确定每个权重变换率对应的率失真代价值,若最小率失真代价值对应的权重变换率位于第二查找表,则对当前块需要切换查找表,即查找表切换标识用于指示当前块需要切换查找表。若最小率失真代价值对应的权重变换率位于第一查找表,则对当前块不需要切换查找表,即查找表切换标识用于指示当前块不需要切换查找表。
若查找表切换标识用于指示当前块不需要进行查找表切换,目标查找表为第一查找表,针对第一查找表中的每个权重变换率,编码端确定与该权重变换率对应的率失真代价值,将最小率失真代价值对应的权重变换率作为当前块的目标权重变换率,确定目标权重变换率在第一查找表中的索引信息,即权重变换率索引信息。若查找表切换标识用于指示当前块需要切换查找表,目标查找表为第二查找表,针对第二查找表中的每个权重变换率,编码端确定与该权重变换率对应的率失真代价值,将最小率失真代价值对应的权重变换率作为当前块的目标权重变换率,确定目标权重变换率在第二查找表中的索引信息,即权重变换率索引信息。
针对解码端来说,关于解码端获取查找表切换标识的过程,可以参见实施例9,将实施例9中的权重变换率切换标识替换为查找表切换标识即可,在此不再重复赘述。
编码端向解码端发送当前块的编码比特流时,该编码比特流携带权重变换率索引信息,该权重变换率索引信息用于指示目标权重变换率在第一查找表或第二查找表中的索引信息。
若查找表切换标识用于指示当前块不需要切换查找表,目标查找表为第一查找表,解码端从第一查找表中选择与该权重变换率索引信息对应的权重变换率,即当前块的目标权重变换率。若查找表切换标识用于指示当前块需要切换查找表,目标查找表为第二查找表,解码端从第二查找表中选择与该权重变换率索引信息对应的权重变换率,即当前块的目标权重变换率。
实施例12:在实施例1-实施例4中,编码端/解码端需要获取当前块的权重预测角度,当前块的权重预测位置和当前块的权重变换率,在实施例11中,可以得到当前块的权重变换率,在此基础上,可以采用如下方式获取当前块的权重预测角度和权重预测位置:
方式一、编码端和解码端约定相同的权重预测角度作为当前块的权重预测角度,并约定相同的权重预测位置作为当前块的权重预测位置。例如,编码端和解码端将权重预测角度A作为当前块的权重预测角度,编码端和解码端将权重预测位置4作为当前块的权重预测位置。
方式二、编码端构建权重预测角度列表,权重预测角度列表包括至少一个权重预测角度。编码端构建权重预测位置列表,权重预测位置列表包括至少一个权重预测位置。编码端构建至少两个查找表,以第一查找表和第二查找表为例,第一查找表包括至少一个权重变换率,第二查找表包括至少一个权重变换率。编码端确定出目标查找表,确定方式参见实施例11,以目标查找表是第一查找表为例。编码端依次遍历权重预测角度列表中每个权重预测角度,遍历权重预测位置列表中每个权重预测位置,遍历目标查找表中每个权重变换率,即遍历每个权重预测角度,每个权重预测位置,每个权重变换率的组合。针对权重预测角度,权重预测位置及权重变换率的每个组合,作为步骤a1中获取的权重预测角度,权重预测位置及权重变换率,基于权重预测角度,权重预测位置及权重变换率,得到当前块的加权预测值。
综上所述,编码端可以基于每个组合得到当前块的加权预测值。在得到当前块的加权预测值后,编码端可以根据当前块的加权预测值确定率失真代价值,即,编码端可以得到每个组合的率失真代价值,并从所有率失真代价值中选择最小率失真代价值。
然后,编码端将最小率失真代价值对应的权重预测角度,权重预测位置和权重变换率分别作为目标权重预测角度,目标权重预测位置和目标权重变换率,最后,将目标权重预测角度在权重预测角度列表中的索引值,目标权重预测位置在权重预测位置列表中的索引值,及目标权重变换率在目标查找表中的索引值,均编入当前块的码流。
针对解码端来说,解码端构建权重预测角度列表,该权重预测角度列表与编码端的权重预测角度列表相同,解码端构建权重预测位置列表,该权重预测位置列表与编码端的权重预测位置列表相同,解码端构建第一查找表和第二查找表,该第一查找表与编码端的第一查找表相同,该第二查找表与编码端的第二查找表相同。解码端在接收到当前块的编码比特流后,从该编码比特流中解析出指示信息,根据该指示信息从权重预测角度列表中选择一个权重预测角度作为当前块的权重预测角度,根据该指示信息从权重预测位置列表中选择一个权重预测位置作为当前块的权重预测位置,权重预测角度和权重预测位置的获取方式,参见实施例10,在此不再赘述。解码端在接收到当前块的编码比特流后,可以确定目标查找表(如第一查找表或者第二查找表),并根据权重变换率索引信息从目标查找表中选择一个权重变换率作为当前块的权重变换率,关于权重变换率的获取方式,参见实施例11,在此不再赘述。
实施例13:在实施例1-实施例3中,编码端/解码端需要获取运动信息候选列表,如采用如下方式获取运动信息候选列表:获取待加入到运动信息候选列表中的至少一个可用运动信息;基于至少一个可用运动信息获取运动信息候选列表。示例性的,至少一个可用运动信息包括但不限于如下运动信息的至少一种:空域运动信息;时域运动信息;HMVP(History-based Motion Vector Prediction,基于历史的运动矢量预测)运动信息;预设运动信息。
示例性的,针对空域运动信息,可以采用如下方式获取待加入到运动信息候选列表中的至少一个可用运动信息:针对当前块的空域相邻块,若空域相邻块存在,且空域相邻块采用帧间预测模式,则将该空域相邻块的运动信息确定为可用运动信息;和/或,
针对当前块的第一空域相邻块,若该第一空域相邻块存在,且该第一空域相邻块采用帧间预测模式,且该第一空域相邻块的运动信息与当前块的第二空域相邻块(可以为至少一个第二空域相邻块)的运动信息不同(第二空域相邻块的运动信息已经被确定为可用运动信息),则将第一空域相邻块的运动信息确定为可用运动信息。
示例性的,针对时域运动信息,可以采用如下方式获取待加入到运动信息候选列表中的至少一个可用运动信息:基于当前块的预设位置(例如,当前块的左上角像素位置),从当前块的参考帧中选取与该预设位置对应的时域相邻块,并将该时域相邻块的运动信息确定为可用运动信息;和/或,基于当前块的权重预测角度和权重预测位置,确定当前块的目标位置(例如,当前块的右上角像素位置等);从当前块的参考帧中选取与该目标位置对应的时域相邻块,并将该时域相邻块的运动信息确定为可用运动信息。
示例性的,针对预设运动信息,可以采用如下方式获取待加入到运动信息候选列表中的至少一个可用运动信息:将预设运动信息确定为可用运动信息,该预设运动信息可以包括但不限于如下运动信息的至少一种:零运动信息;基于运动信息候选列表中已存在的候选运动信息所导出的缺省运动信息;运动信息候选列表中已存在的候选运动信息。
在一种可能的实施方式中,在得到至少一个可用运动信息后,基于至少一个可用运动信息,可以采用如下方式获取运动信息候选列表:针对当前待加入到运动信息候选列表的可用运动信息,若该可用运动信息为单向运动信息,则可以将该单向运动信息加入到运动信息候选列表;若该可用运动信息为双向运动信息,则可以将该双向运动信息裁剪为第一单向运动信息和第二单向运动信息,并将该第一单向运动信息加入到运动信息候选列表。
在另一种可能的实施方式中,基于至少一个可用运动信息,可以采用如下方式获取运动信息候选列表:针对当前待加入到运动信息候选列表的可用运动信息,若可用运动信息为单向运动信息,且该单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将该单向运动信息加入到运动信息候选列表;若可用运动信息为双向运动信息,则将该双向运动信息裁剪为第一单向运动信息和第二单向运动信息;若第一单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将该第一单向运动信息加入到运动信息候选列表。
在另一种可能的实施方式中,基于至少一个可用运动信息,可以采用如下方式获取运动信息候选列表:针对当前待加入到运动信息候选列表的可用运动信息,若可用运动信息为单向运动信息,且单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,将单向运动信息加入到运动信息候选列表;若可用运动信息为双向运动信息,将双向运动信息裁剪为第一单向运动信息和第二单向运动信息;若第一单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,将第一单向运动信息加入到运动信息候选列表;若第一单向运动信息与运动信息候选列表中已存在的候选运动信息重复,且第二单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,将第二单向运动信息加入到运动信息候选列表。
在上述实施例中,第一单向运动信息可以是指向第一参考帧列表中参考帧的单向运动信息;第二单向运动信息可以是指向第二参考帧列表中参考帧的单向运动信息。示例性的,若运动信息候选列表中已存在的候选运动信息的总数量(即运动信息候选列表中当前存在的总数量)为偶数,则第一参考帧列表为List0,第二参考帧列表为List1;若运动信息候选列表中已存在的候选运动信息的总数量为奇数,则第一参考帧列表为List1,第二参考帧列表为List0。或者,若运动信息候选列表中已存在的候选运动信息的总数量为奇数,则第一参考帧列表为List0,第二参考帧列表为List1;若运动信息候选列表中已存在的候选运动信息的总数量为偶数,则第一参考帧列表为List1,第二参考帧列表为List0。或者,第一参考帧列表为List0,第二参考帧列表为List1。或者,第一参考帧列表为List1,第二参考帧列表为List0。
在一种可能的实施方式中,List0可以是前向参考帧列表,List1可以是后向参考帧列表。
在上述实施例中,针对单向运动信息与运动信息候选列表中已存在的候选运动信息的查重操作,可以包括但不限于:若单向运动信息指向的参考帧列表与候选运动信息指向的参考帧列表相同,且该单向运动信息的refIdx(参考帧索引)与该候选运动信息的refIdx相同,且该单向运动信息的运动矢量与该候选运动信息的运动矢量相同,则确定该单向运动信息与该候选运动信息重复;否则,确定该单向运动信息与该候选运动信息不重复。或者,若单向运动信息指向的参考帧的POC(显示顺序)与候选运动信息指向的参考帧的POC相同,且该单向运动信息的运动矢量与该候选运动信息的运动矢量相同,则确定该单向运动信息与该候选运动信息重复;否则,确定该单向运动信息与该候选运动信息不重复。
针对第一单向运动信息与运动信息候选列表中已存在的候选运动信息的查重操作,可以包括但不限于:若第一单向运动信息指向的参考帧列表与候选运动信息指向的参考帧列表相同,且该第一单向运动信息的refIdx与该候选运动信息的refIdx相同,且该第一单向运动信息的运动矢量与该候选运动信息的运动矢量相同,则确定该第一单向运动信息与该候选运动信息重复;否则,确定该第一单向运动信息与该候选运动信息不重复。或者,若第一单向运动信息指向的参考帧的POC与候选运动信息指向的参考帧的POC相同,且该第一单向运动信息的运动矢量与该候选运动信息的运动矢量相同,则确定该第一单向运动信息与该候选运动信息重复;否则,确定该第一单向运动信息与该候选运动信息不重复。
针对第二单向运动信息与运动信息候选列表中已存在的候选运动信息的查重操作,可以包括但不限于:若第二单向运动信息指向的参考帧列表与候选运动信息指向的参考帧列表相同,且该第二单向运动信息的refIdx与该候选运动信息的refIdx相同,且该第二单向运动信息的运动矢量与该候选运动信息的运动矢量相同,则确定该第二单向运动信息与该候选运动信息重复;否则,确定该第二单向运动信息与该候选运动信息不重复。或者,若第二单向运动信息指向的参考帧的POC与候选运动信息指向的参考帧的POC相同,且该第二单向运动信息的运动矢量与该候选运动信息的运动矢量相同,则确定该第二单向运动信息与该候选运动信息重复;否则,确定该第二单向运动信息与该候选运动信息不重复。
示例性的,上述过程需要比较单向运动信息指向的参考帧的POC与候选运动信息指向的参考帧的POC是否相同,需要注意的是,参考帧的POC只是确认参考帧是否相同的一个示例,除了POC以外,还可以采用其它能够确认参考帧是否相同的属性,如参考帧的DOC(解码顺序标记)等,对此不作限制。综上所述,还可以比较单向运动信息指向的参考帧的DOC与候选运动信息指向的参考帧的DOC是否相同,实现原理与POC的实现原理类似。
实施例14:针对实施例13,可以利用空域运动信息(本文将当前块的空域相邻块的运动信息称为空域运动信息)和/或时域运动信息(本文将当前块的时域相邻块的运动信息称为时域运动信息)获取运动信息候选列表,因此,需要先从空域运动信息和/或时域运动信息中选取出可用运动信息。参见图9A所示,为当前块的空域相邻块的示意图,空域运动信息可以是F,G,C,A,B,D等空域相邻块的运动信息,时域运动信息可以为至少一个。
针对空域运动信息,可以采用如下方式获取待加入到运动信息候选列表的可用运动信息:
方式11、参见图9A所示,F,G,C,A,B,D是当前块E的空域相邻块,可以确定F,G,C,A,B,D的运动信息的“可用”性。示例性的,如果F存在且采用帧间预测模式,则F的运动信息为可用运动信息;否则,F的运动信息为不可用运动信息。如果G存在且采用帧间预测模式,则G的运动信息为可用运动信息;否则,G的运动信息为不可用运动信息。如果C存在且采用帧间预测模式,则C的运动信息为可用运动信息;否则,C的运动信息为不可用运动信息。如果A存在且采用帧间预测模式,则A的运动信息为可用运动信息;否则,A的运动信息为不可用运动信息。如果B存在且采用帧间预测模式,则B的运动信息为可用运动信息;否则,B的运动信息为不可用运动信息。如果D存在且采用帧间预测模式,则D的运动信息为可用运动信息;否则,D的运动信息为不可用运动信息。
方式12、F,G,C,A,B,D是当前块E的空域相邻块,确定F,G,C,A,B,D的运动信息的“可用”性。如果F存在且采用帧间预测模式,则F的运动信息为可用运动信息;否则,F的运动信息为不可用运动信息。如果G存在且采用帧间预测模式,G的运动信息与F的运动信息不相同,则G的运动信息为可用运动信息;否则,G的运动信息为不可用运动信息。如果C存在且采用帧间预测模式,C的运动信息与G的运动信息不相同,则C的运动信息为可用运动信息;否则,C的运动信息为不可用运动信息。如果A存在且采用帧间预测模式,A的运动信息与F的运动信息不相同,则A的运动信息为可用运动信息;否则,A的运动信息为不可用运动信息。如果B存在且采用帧间预测模式,B的运动信息与G的运动信息不相同,则B的运动信息为可用运动信息;否则,B的运动信息为不可用运动信息。如果D存在且采用帧间预测模式,D的运动信息与A的运动信息不相同,且D的运动信息与G的运动信息不相同,则D的运动信息为可用运动信息;否则,D的运动信息为不可用运动信息。
方式13、F,G,C,A,B,D是当前块E的空域相邻块,可以确定F,G,C,A,B,D的运动信息的“可用”性。示例性的,如果F存在且采用帧间预测模式,则F的运动信息为可用运动信息;否则,F的运动信息为不可用运动信息。如果G存在且采用帧间预测模式,G的运动信息与F的运动信息不相同,则G的运动信息为可用运动信息;否则,G的运动信息为不可用运动信息。如果C存在且采用帧间预测模式,C的运动信息与G的运动信息不相同,则C的运动信息为可用运动信息;否则,C的运动信息为不可用运动信息。如果A存在且采用帧间预测模式,A的运动信息与F的运动信息不相同,则A的运动信息为可用运动信息;否则,A的运动信息为不可用运动信息。如果B存在且采用帧间预测模式,则B的运动信息为可用运动信息;否则,B的运动信息为不可用运动信息。如果D存在且采用帧间预测模式,D的运动信息与A的运动信息不相同,且D的运动信息与G的运动信息不相同,则D的运动信息为可用运动信息;否则,D的运动信息为不可用运动信息。
示例性的,在方式12和方式13中,在确定空域相邻块的运动信息是否为可用运动信息时,可能需要比较两个空域相邻块的运动信息是否相同,例如,比较G的运动信息与F的运动信息是否相同,运动信息是否相同的比较过程,实际上就是运动信息的查重操作,若查重结果为重复,则运动信息的比较结果为相同,若查重结果为不重复,则运动信息的比较结果为不同。关于运动信息的查重操作,可以参见后续实施例,在此不再赘述。
针对时域运动信息,可以采用如下方式获取待加入到运动信息候选列表的可用运动信息:
方式21、基于当前块的预设位置,从当前块的参考帧中选取与该预设位置对应的时域相邻块,并将该时域相邻块的运动信息确定为可用运动信息。比如说,若当前块所在当前帧为B帧,则根据co-located参考帧的co-located块导出单向运动信息或双向运动信息,将该单向运动信息或双向运动信息作为可用运动信息。若当前帧为P帧,则根据co-located参考帧的co-located块导出单向运动信息,将该单向运动信息作为可用运动信息。
示例性的,co-located块是co-located参考帧中与当前块的预设位置对应的时域相邻块,当前块的预设位置可以根据经验配置,对此当前块的预设位置不做限制,如当前块的左上角像素位置,当前块的右上角像素位置,当前块的左下角像素位置,当前块的右下角像素位置,当前块的中心像素位置等。关于co-located参考帧可以是预设的参考帧,如将当前块的List0中的第一个参考帧作为co-located参考帧,也可以是导出的参考帧,如将当前块的List0中与当前帧最近的参考帧作为co-located参考帧,还可以是从码流中解析出的参考帧,如针对解码端来说,可以从码流中解析出co-located参考帧的信息,继而确定co-located参考帧。
若当前块所在当前帧为B帧,则根据co-located块的运动信息导出单向运动信息或双向运动信息,若当前块所在当前帧为P帧,则根据co-located块的运动信息导出单向运动信息。
方式22、基于当前块的权重预测角度和权重预测位置,确定当前块的目标位置;从当前块的参考帧中选取与该目标位置对应的时域相邻块,并将该时域相邻块的运动信息确定为可用运动信息。比如说,基于当前块的权重预测角度和权重预测位置,可以确定当前块的目标位置,如基于当前块的权重预测角度和权重预测位置的索引值,确定当前块的目标位置。然后,可以基于当前块的目标位置确定co-located参考帧的co-located块,若当前块所在当前帧为B帧,则根据co-located参考帧的co-located块导出单向运动信息或双向运动信息,将该单向运动信息或双向运动信息作为可用运动信息。若当前帧为P帧,则根据co-located参考帧的co-located块导出单向运动信息,将该单向运动信息作为可用运动信息。
co-located块是co-located参考帧中与当前块的目标位置对应的时域相邻块,目标位置可以是当前块的左上角像素位置,右上角像素位置,左下角像素位置,右下角像素位置等。
例如,基于当前块的权重预测角度和当前块的权重预测位置,可以得到当前块的权重矩阵,参见图9B所示,由于右上侧权重部分的占比较小(黑色部分),空域运动信息与黑色部分的相关性较低,因此,时域运动信息的选择可以偏向于右上侧权重部分,以此来提供合适的候选运动信息,在此基础上,co-located块可以为当前块的右上角像素位置(即占比较小的权重部分)对应的时域相邻块,即,当前块的目标位置为当前块的右上角像素位置。
同理,参见图9C所示,基于当前块的权重预测角度和当前块的权重预测位置,可以确定当前块的目标位置为当前块的右下角像素位置。参见图9D所示,基于当前块的权重预测角度和当前块的权重预测位置,可以确定当前块的目标位置为当前块的左下角像素位置。
针对HMVP运动信息,可以从HMVP列表中选取至少一个HMVP运动信息,并将选取的HMVP运动信息作为待加入到运动信息候选列表的可用运动信息,对此过程不再赘述。
在得到可用运动信息后,针对每个可用运动信息(如空域运动信息,时域运动信息,HMVP运动信息等),可以采用如下方式之一或组合将可用运动信息加入到运动信息候选列表:
方式31、不进行查重处理。比如说,若可用运动信息为单向运动信息,则将该单向运动信息加入到运动信息候选列表。若可用运动信息为双向运动信息,则将该双向运动信息裁剪为第一单向运动信息和第二单向运动信息,并将裁剪后的某个单向运动信息加入到运动信息候选列表,例如,可以将该第一单向运动信息加入到运动信息候选列表。
方式32、进行半查重处理,即不查重双向运动信息的另一半。比如说,若可用运动信息为单向运动信息,且单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将该单向运动信息加入到运动信息候选列表。若可用运动信息为双向运动信息,则将该双向运动信息裁剪为第一单向运动信息和第二单向运动信息,并将某个单向运动信息加入到运动信息候选列表,例如,若双向运动信息中的第一单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将该第一单向运动信息加入到运动信息候选列表。
方式33、进行全查重处理。比如说,若可用运动信息为单向运动信息,且单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将单向运动信息加入到运动信息候选列表。若可用运动信息为双向运动信息,则将该双向运动信息裁剪为第一单向运动信息和第二单向运动信息,并将某个单向运动信息加入到运动信息候选列表,例如,若双向运动信息中的第一单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将第一单向运动信息加入到运动信息候选列表;若第一单向运动信息与运动信息候选列表中已存在的候选运动信息重复,且双向运动信息中的第二单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将第二单向运动信息加入到运动信息候选列表。
在方式31,方式32和方式33中,第一单向运动信息可以是指向第一参考帧列表中参考帧的单向运动信息;第二单向运动信息可以是指向第二参考帧列表中参考帧的单向运动信息。
示例性的,若运动信息候选列表中已存在的候选运动信息的总数量(即在将可用运动信息添加到运动信息候选列表时,该运动信息候选列表中当前已存在的候选运动信息的总数量)偶数,则第一参考帧列表为List0,第二参考帧列表为List1;若运动信息候选列表中已存在的候选运动信息的总数量为奇数,则第一参考帧列表为List1,第二参考帧列表为List0。或者,若运动信息候选列表中已存在的候选运动信息的总数量为奇数,则第一参考帧列表为List0,第二参考帧列表为List1;若运动信息候选列表中已存在的候选运动信息的总数量为偶数,则第一参考帧列表为List1,第二参考帧列表为List0。或者,第一参考帧列表为List0,第二参考帧列表为List1。或者,第一参考帧列表为List1,第二参考帧列表为List0。
在上述实施例中,涉及对单向运动信息(如单向运动信息、第一单向运动信息、第二单向运动信息等)与运动信息候选列表中已存在的候选运动信息进行查重操作,查重操作的结果可以为重复或者不重复。还涉及对两个空域相邻块的运动信息进行查重,查重操作的结果可以为重复或者不重复。在后续实施例19中,还涉及对双向运动信息与运动信息候选列表中已存在的候选运动信息进行查重操作,查重操作的结果可以为重复或者不重复。
为了方便描述,将进行查重操作的两个运动信息称为运动信息1和运动信息2,当运动信息1为待查重的单向运动信息时,运动信息2为运动信息候选列表中已存在的候选运动信息;当运动信息1为待查重的双向运动信息时,运动信息2为运动信息候选列表中已存在的候选运动信息;当运动信息1为需要确定可用性的空域相邻块的运动信息时,运动信息2为已确定可用性的空域相邻块的运动信息,参见方式12,如F的运动信息可用时,当需要确定G的运动信息是否可用时,运动信息1为G的运动信息,运动信息2为F的运动信息。
针对该查重操作,可以采用如下方式实现:
方式41、基于List+refIdx+MV_x+MV_y进行查重操作。比如说,先查指向的List列表是否相同(即是指向List0,还是指向List1,还是同时指向List0和List1),在查refidx是否相同,在查MV是否相同(即水平分量是否相同,以及垂直分量是否相同)。
示例性的,先查询运动信息1指向的参考帧列表与运动信息2指向的参考帧列表是否相同,如果不同,则运动信息1与运动信息2不重复。如果相同,则查询运动信息1的refIdx与运动信息2的refIdx是否相同,若不同,则运动信息1与运动信息2不重复。若相同,则查询运动信息1的运动矢量与运动信息2的运动矢量是否相同,若否,则运动信息1与运动信息2不重复,若是,则确定运动信息1与运动信息2重复。
示例性的,若运动信息1指向的参考帧列表与运动信息2指向的参考帧列表均是List0,则二者相同,或者,若运动信息1指向的参考帧列表与运动信息2指向的参考帧列表均是List1,则二者相同,或者,若运动信息1指向的参考帧列表为List0,运动信息2指向的参考帧列表为List1,则二者不同,或者,若运动信息1指向的参考帧列表为List1,运动信息2指向的参考帧列表为List0,则二者不同,或者,若运动信息1指向的参考帧列表为List0,运动信息2指向的参考帧列表为List0和List1,则二者不同,或者,若运动信息1指向的参考帧列表为List1,运动信息2指向的参考帧列表为List0和List1,则二者不同,或者,若运动信息1指向的参考帧列表List0中参考帧索引为refIdx0的参考帧,并指向List1中参考帧索引为refIdx1的参考帧,运动信息2指向List0中参考帧索引为refIdx2的参考帧,并指向List1中参考帧索引为refIdx3的参考帧,refIdx0不等于refIdx2,或refIdx1不等于refIdx3,则二者不同。当然,上述只是对参考帧列表进行比较的几个示例,对此不做限制。
示例性的,若运动信息1的运动矢量的水平分量与运动信息2的运动矢量的水平分量相同,且运动信息1的运动矢量的垂直分量与运动信息2的运动矢量的垂直分量相同,则说明运动信息1的运动矢量与运动信息2的运动矢量相同。
方式42、基于POC+MV_x+MV_y进行查重操作。
比如说,先查指向的参考帧的POC是否相同(即若指向List0中参考帧索引为refIdx0的参考帧的POC等于指向List1中参考帧索引为refIdx1的参考帧的POC,也判定为相同,针对单向运动信息与单向运动信息的查重,以及,双向运动信息与双向运动信息的查重都适用);在查MV是否相同(即水平分量是否相同,以及垂直分量是否相同)。
示例性的,先查询运动信息1指向的参考帧的POC与运动信息2指向的参考帧的POC是否相同,如果不同,则运动信息1与运动信息2不重复。如果相同,则继续查询运动信息1的运动矢量与运动信息2的运动矢量是否相同,若不同,则运动信息1与运动信息2不重复,若相同,则确定运动信息1与运动信息2重复。
示例性的,指向的参考帧的POC相同,可以包括:运动信息1指向List0中参考帧索引为refIdx0的参考帧,且运动信息2指向List0中参考帧索引为refIdx0的参考帧,且运动信息1指向的参考帧的POC与运动信息2指向的参考帧的POC相同。或者,运动信息1指向List1中参考帧索引为refIdx1的参考帧,且运动信息2指向List1中参考帧索引为refIdx1的参考帧,且运动信息1指向的参考帧的POC与运动信息2指向的参考帧的POC相同。或者,运动信息1指向List0中参考帧索引为refIdx0的参考帧,且运动信息2指向List1中参考帧索引为refIdx1的参考帧,且运动信息1指向的参考帧的POC与运动信息2指向的参考帧的POC相同。或者,运动信息1指向List1中参考帧索引为refIdx1的参考帧,且运动信息2指向List0中参考帧索引为refIdx0的参考帧,且运动信息1指向的参考帧的POC与运动信息2指向的参考帧的POC相同。或者,运动信息1指向List0中参考帧索引为refIdx0的参考帧,并指向List1中参考帧索引为refIdx1的参考帧,运动信息2指向List0中参考帧索引为refIdx2的参考帧,并指向List1中参考帧索引为refIdx3的参考帧,运动信息1指向的List0中参考帧索引为refIdx0的参考帧的POC与运动信息2指向的List1中参考帧索引为refIdx3的参考帧的POC相同,且运动信息1指向的List1中参考帧为refIdx1的参考帧的POC与运动信息2指向的List0中参考帧索引为refIdx2的参考帧的POC相同。当然,上述只是参考帧的POC相同的几个示例,对此不做限制。
示例性的,上述过程是对参考帧的POC进行查重,需要注意的是,参考帧的POC只是查重操作的一个示例,除了POC以外,还可以采用其它能够确认参考帧是否相同的属性,如参考帧的DOC等,对此不作限制。综上所述,可以将上述POC替换为DOC。
综上所述,可以获取运动信息候选列表,该运动信息候选列表也可以称为AwpUniArray,以下结合几个具体应用场景,对上述运动信息候选列表的获取过程进行说明。在后续应用场景中,假设运动信息候选列表的长度为X,即需要添加X个可用运动信息,在将可用运动信息添加到运动信息候选列表后,将已添加的运动信息称为候选运动信息。
应用场景1:将空域运动信息加入到运动信息候选列表,若列表长度等于X,结束添加过程,若列表长度小于X,将预设运动信息加入到运动信息候选列表,直至列表长度为X。
示例性的,先确定待加入到运动信息候选列表的可用运动信息(即空域运动信息)。比如说,采用方式11确定可用运动信息,或,采用方式12确定可用运动信息,或,采用方式13确定可用运动信息。在采用方式12或方式13确定可用运动信息时,涉及两个空域相邻块的运动信息的查重操作,可以采用方式41进行查重操作,或者,采用方式42进行查重操作。
示例性的,参见图9A所示,按照F、G、C、A、B、D中可用运动信息的顺序(该顺序可变),将可用运动信息加入到运动信息候选列表。针对每个可用运动信息,可以采用方式31将该可用运动信息加入到运动信息候选列表,也可以采用方式32将该可用运动信息加入到运动信息候选列表,还可以采用方式33将该可用运动信息加入到运动信息候选列表。
示例性的,在采用方式32或者方式33将该可用运动信息加入到运动信息候选列表时,还可以对单向运动信息与运动信息候选列表中已存在的候选运动信息进行查重操作,例如,可以采用方式41进行查重操作,或者,采用方式42进行查重操作。
应用场景2:将时域运动信息加入到运动信息候选列表,若列表长度等于X,结束添加过程,若列表长度小于X,将预设运动信息加入到运动信息候选列表,直至列表长度为X。
示例性的,先确定待加入到运动信息候选列表的可用运动信息(即时域运动信息)。比如说,采用方式21确定可用运动信息,或,采用方式22确定可用运动信息。
示例性的,针对每个可用运动信息,可以采用方式31将该可用运动信息加入到运动信息候选列表,也可以采用方式32将该可用运动信息加入到运动信息候选列表,还可以采用方式33将该可用运动信息加入到运动信息候选列表。
示例性的,在采用方式32或者方式33将该可用运动信息加入到运动信息候选列表时,还可以对单向运动信息与运动信息候选列表中已存在的候选运动信息进行查重操作,例如,可以采用方式41进行查重操作,或者,采用方式42进行查重操作。
应用场景3:将空域运动信息与时域运动信息一起加入运动信息候选列表(空域运动信息可以位于时域运动信息之前,时域运动信息也可以位于空域运动信息之前,为了方便描述,后续以空域运动信息位于时域运动信息之前为例),若列表长度等于X,结束添加过程,若列表长度小于X,将预设运动信息加入到运动信息候选列表,直至列表长度为X。
示例性的,确定待加入到运动信息候选列表的可用运动信息(即空域运动信息和时域运动信息)。比如说,采用方式11和方式21确定可用运动信息,或,采用方式11和方式22确定可用运动信息,或,采用方式12和方式21确定可用运动信息,或,采用方式12和方式22确定可用运动信息,或,采用方式13和方式21确定可用运动信息,或,采用方式13和方式22确定可用运动信息。当然,上述只是几个示例,对此不做限制。
在采用方式12或方式13确定可用运动信息时,涉及两个空域相邻块的运动信息的查重操作,可以采用方式41进行查重操作,或者,采用方式42进行查重操作。
示例性的,按照F、G、C、A、B、D中可用运动信息的顺序,及时域运动信息(即可用运动信息)的顺序,将可用运动信息加入到运动信息候选列表。针对每个可用运动信息,采用方式31将该可用运动信息加入到运动信息候选列表,或采用方式32将该可用运动信息加入到运动信息候选列表,或采用方式33将该可用运动信息加入到运动信息候选列表。
示例性的,在采用方式32或者方式33将该可用运动信息加入到运动信息候选列表时,还可以对单向运动信息与运动信息候选列表中已存在的候选运动信息进行查重操作,例如,可以采用方式41进行查重操作,或者,采用方式42进行查重操作。
综上所述,基于空域运动信息和时域运动信息的顺序,可以将空域运动信息与时域运动信息一起加入运动信息候选列表,一直到列表长度等于X,或者,遍历结束,列表长度小于X,并将预设运动信息加入到运动信息候选列表,直至列表长度为X。
应用场景4:将空域运动信息加入运动信息候选列表,将空域运动信息加入运动信息候选列表后,预留至少Y个位置给时域运动信息,时域运动信息为双向运动信息或单向运动信息。示例性的,将空域运动信息加入运动信息候选列表,若列表长度等于X-Y,则结束空域运动信息的添加过程,或直至空域运动信息遍历结束,列表长度小于X-Y,结束空域运动信息的添加过程。然后,将时域运动信息加入运动信息候选列表,若列表长度等于X,则结束时域运动信息的添加过程,或直至时域运动信息遍历结束,列表长度小于X,结束时域运动信息的添加过程,将预设运动信息加入到运动信息候选列表,直至列表长度为X。
示例性的,确定待加入到运动信息候选列表的可用运动信息(即空域运动信息和时域运动信息)。比如说,采用方式11和方式21确定可用运动信息,或,采用方式11和方式22确定可用运动信息,或,采用方式12和方式21确定可用运动信息,或,采用方式12和方式22确定可用运动信息,或,采用方式13和方式21确定可用运动信息,或,采用方式13和方式22确定可用运动信息。当然,上述只是几个示例,对此不做限制。
在采用方式12或方式13确定可用运动信息时,涉及两个空域相邻块的运动信息的查重操作,可以采用方式41进行查重操作,或者,采用方式42进行查重操作。
示例性的,按照F、G、C、A、B、D中可用运动信息(即空域运动信息)的顺序,将可用运动信息加入到运动信息候选列表,一直到列表长度等于X-Y,或空域运动信息遍历结束。然后,将时域运动信息(即可用运动信息)加入到运动信息候选列表,一直到列表长度等于X,或时域运动信息遍历结束。在可用运动信息的添加过程中,针对每个可用运动信息,采用方式31将该可用运动信息加入到运动信息候选列表,或采用方式32将该可用运动信息加入到运动信息候选列表,或采用方式33将该可用运动信息加入到运动信息候选列表。
示例性的,在采用方式32或者方式33将该可用运动信息加入到运动信息候选列表时,还可以对单向运动信息与运动信息候选列表中已存在的候选运动信息进行查重操作,例如,可以采用方式41进行查重操作,或者,采用方式42进行查重操作。
应用场景5:在应用场景1的基础上,在将空域运动信息加入到运动信息候选列表后,若空域运动信息遍历结束时,列表长度小于X,则将HMVP运动信息加入到运动信息候选列表,若列表长度等于X,则结束HMVP运动信息的添加过程,若列表长度仍然小于X,则将预设运动信息加入到运动信息候选列表,直至列表长度为X。
在应用场景2的基础上,在将时域运动信息加入到运动信息候选列表后,若时域运动信息遍历结束时,列表长度小于X,则将HMVP运动信息加入到运动信息候选列表,若列表长度等于X,则结束HMVP运动信息的添加过程,若列表长度仍然小于X,则将预设运动信息加入到运动信息候选列表,直至列表长度为X。
在应用场景3的基础上,在将空域运动信息与时域运动信息一起加入运动信息候选列表后,若空域运动信息与时域运动信息遍历结束时,列表长度小于X,则将HMVP运动信息加入到运动信息候选列表,若列表长度等于X,则结束HMVP运动信息的添加过程,若列表长度仍然小于X,则将预设运动信息加入到运动信息候选列表,直至列表长度为X。
在应用场景4的基础上,在将空域运动信息加入到运动信息候选列表后,将时域运动信息加入到运动信息候选列表,若时域运动信息遍历结束时,列表长度小于X,则将HMVP运动信息加入到运动信息候选列表,若列表长度等于X,则结束HMVP运动信息的添加过程,若列表长度仍然小于X,则将预设运动信息加入到运动信息候选列表,直至列表长度为X。
在上述各应用场景中,X可以取任意的正整数,例如,X的取值可以4,5等。
在上述各应用场景中,均可能将预设运动信息(也可以称为缺省运动信息)加入到运动信息候选列表,关于预设运动信息的实现方式,可以包括但不限于如下方式:
方式51、预设运动信息为零运动信息,如指向ListX且refIdx小于ListX中参考帧数量的零运动矢量。比如说,可以进行补0操作,即运动信息可以为(0,0,ref_idx3,ListZ)。
方式52、基于运动信息候选列表中已存在的候选运动信息所导出的缺省运动信息。
比如说,记需要放大或缩小的x轴方向或y轴方向的绝对值为temp_val,结果为result:
1、如果temp_val<8,则result=8,或者,result=-8。
示例性的,若候选运动信息的x轴方向的temp_val小于8,则缺省运动信息的x轴方向的运动矢量为8,或者,缺省运动信息的x轴方向的运动矢量为-8。
若候选运动信息的y轴方向的temp_val小于8,则缺省运动信息的y轴方向的运动矢量为8,或者,缺省运动信息的y轴方向的运动矢量为-8。
2、假设不满足1,如果temp_val<=64,则result=(temp_val*5+2)>>2,或者,result=(temp_val*3+2)>>2,正负号与候选运动信息的运动矢量的正负号相同。
示例性的,若候选运动信息的x轴方向的运动矢量为正,且x轴方向的运动矢量的绝对值(即temp_val)小于或等于64,则缺省运动信息的x轴方向的运动矢量为(temp_val*5+2)>>2,若候选运动信息的x轴方向的运动矢量为负,且x轴方向的运动矢量的绝对值(即temp_val)小于或等于64,则缺省运动信息的x轴方向的运动矢量为result=(temp_val*3+2)>>2。
针对缺省运动信息的y轴方向的运动矢量,与x轴方向的运动矢量类似。
3、假设不满足1和2,如果temp_val<=128,则result=(temp_val*9+4)>>3,或者,result=(temp_val*7+4)>>3,正负号与候选运动信息的运动矢量的正负号相同。
4、假设不满足1,不满足2,且不满足3,则result=(temp_val*33+16)>>5,或者,result=(temp_val*31+16)>>5,正负号与候选运动信息的运动矢量的正负号相同。
方式53、基于运动信息候选列表中已存在的候选运动信息所导出的缺省运动信息。
比如说,以运动信息候选列表中的任意一个有效的候选运动信息(x,y,ref_idx,ListX)为基础,ref_idx和ListX分别为参考帧索引和参考帧列表,且二者统称为参考帧信息,可添加以下至少一个运动信息:(x+a,y+b,ref_idx,ListX),a,b可以取任意整数;(k1*x,k1*y,ref_idx_new1,ListX),k1为任意非0正整数,即对运动矢量进行伸缩操作;(k2*x,k2*y,ref_idx_new2,ListY),k2为任意非0正整数,即对运动矢量进行伸缩操作。
方式54、预设运动信息为运动信息候选列表中已存在的候选运动信息,即进行扩充(padding)操作,可采用运动信息候选列表中已存在的候选运动信息进行重复填充操作。例如,可采用运动信息候选列表中已存在的最后一个单向运动信息进行重复填充。
综上所述,在列表长度小于X,需要将预设运动信息加入到运动信息候选列表时,可以将方式51的预设运动信息加入到运动信息候选列表,直至列表长度为X。或者,可以将方式52的预设运动信息加入到运动信息候选列表,直至列表长度为X。或者,可以将方式53的预设运动信息加入到运动信息候选列表,直至列表长度为X。或者,可以将方式51和方式52的预设运动信息加入到运动信息候选列表,直至列表长度为X。或者,可以将方式51和方式53的预设运动信息加入到运动信息候选列表,直至列表长度为X。或者,可以将方式52和方式53的预设运动信息加入到运动信息候选列表,直至列表长度为X。或者,可以将方式51,方式52和方式53的预设运动信息加入到运动信息候选列表,直至列表长度为X。
示例性的,在采用上述方式,将预设运动信息加入到运动信息候选列表后,若列表长度仍然小于X,则可以将方式54的预设运动信息加入到运动信息候选列表,即,采用运动信息候选列表中已存在的候选运动信息进行重复填充操作,一直到列表长度为X。
在另一种可能的实施方式中,在列表长度小于X,需要将预设运动信息加入到运动信息候选列表时,可以直接将方式54的预设运动信息加入到运动信息候选列表,即,采用运动信息候选列表中已存在的候选运动信息进行重复填充操作,一直到列表长度为X。
在上述实施例中,预设运动信息可以为单向运动信息,也可以为双向运动信息。若预设运动信息为单向运动信息,在将该预设运动信息添加到运动信息候选列表时,可以进行查重操作,也可以不进行查重操作。若不进行查重操作,则直接将该预设运动信息添加到运动信息候选列表。若进行查重操作,则可以采用方式41进行查重操作,或者,采用方式42进行查重操作。若查重操作的结果为不重复,则将该预设运动信息添加到运动信息候选列表。若查重操作的结果为重复,则不将该预设运动信息添加到运动信息候选列表。
实施例15:在实施例1-实施例3中,编码端/解码端在得到运动信息候选列表(参见实施例13和14)后,可以基于该运动信息候选列表获取当前块的第一目标运动信息和第二目标运动信息,关于第一目标运动信息和第二目标运动信息的获取方式,可以采用如下方式实现:
方式一、从运动信息候选列表中选择一个候选运动信息作为当前块的第一目标运动信息,从运动信息候选列表中选择另一个候选运动信息作为当前块的第二目标运动信息。
示例性的,针对编码端和解码端来说,均可以获取运动信息候选列表,且编码端的运动信息候选列表与解码端的运动信息候选列表相同,对此运动信息候选列表不做限制。
针对编码端来说,可以基于率失真原则,从运动信息候选列表中选择一个候选运动信息作为当前块的第一目标运动信息,从运动信息候选列表中选择另一个候选运动信息作为当前块的第二目标运动信息,第一目标运动信息与第二目标运动信息不同,对此不做限制。
在一种可能的实施方式中,编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息a和指示信息b,指示信息a用于指示当前块的第一目标运动信息的索引值1,索引值1表示第一目标运动信息是运动信息候选列表中的第几个候选运动信息。指示信息b用于指示当前块的第二目标运动信息的索引值2,索引值2表示第二目标运动信息是运动信息候选列表中的第几个候选运动信息。示例性的,索引值1和索引值2可以不同。
解码端在接收到编码比特流后,从编码比特流中解析出指示信息a和指示信息b。基于指示信息a,解码端从运动信息候选列表中选择索引值1对应的候选运动信息,该候选运动信息作为当前块的第一目标运动信息。基于指示信息b,解码端从运动信息候选列表中选择索引值2对应的候选运动信息,该候选运动信息作为当前块的第二目标运动信息。
在另一种可能的实施方式中,编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息a和指示信息c,该指示信息a可以用于指示当前块的第一目标运动信息的索引值1,索引值1表示第一目标运动信息是运动信息候选列表中的第几个候选运动信息。该指示信息c可以用于指示索引值2与索引值1的差值,索引值2表示第二目标运动信息是运动信息候选列表中的第几个候选运动信息。示例性的,索引值1和索引值2可以不同。
解码端在接收到编码比特流后,可以从编码比特流中解析出指示信息a和指示信息c。基于指示信息a,解码端可以从运动信息候选列表中选择索引值1对应的候选运动信息,该候选运动信息作为当前块的第一目标运动信息。基于指示信息c,解码端先根据索引值2与索引值1的差值,以及索引值1确定索引值2,然后,解码端可以从运动信息候选列表中选择索引值2对应的候选运动信息,该候选运动信息作为当前块的第二目标运动信息。
示例性的,第一目标运动信息的指示信息与第二目标运动信息的指示信息,可以进行互换,编码端与解码端一致即可,此处是指示信息的互换,不影响解析过程,即不存在解析依赖。第一目标运动信息的指示信息与第二目标运动信息的指示信息不能相等,假设编码两个索引值,索引值a的取值为1,索引值b的取值为3,先编码索引值a时,索引值b可以编码2(3-1),在先编码索引值b时,则索引值b需要编码3。综上所述,先编码索引值小的指示信息,可以降低较大索引值的编码代价。比如说,先编码第一目标运动信息的指示信息,如索引值a,后编码第二目标运动信息的指示信息,如索引值b。也可以先编码第二目标运动信息的指示信息,如索引值b,后编码第一目标运动信息的指示信息,如索引值a。例如,假设索引值a的取值为1,索引值b的取值为3,则先编码索引值a,后编码索引值b。又例如,假设索引值b的取值为1,索引值a的取值为3,则先编码索引值b,后编码索引值a。
方式二、从运动信息候选列表中选择候选运动信息作为当前块的第一原始运动信息,并从运动信息候选列表中选择候选运动信息作为当前块的第二原始运动信息,示例性的,该第一原始运动信息与该第二原始运动信息可以不同,即从运动信息候选列表中选择两个不同的候选运动信息作为第一原始运动信息和第二原始运动信息;或者,该第一原始运动信息与该第二原始运动信息也可以相同,即从运动信息候选列表中选择相同的候选运动信息作为第一原始运动信息和第二原始运动信息。然后,根据该第一原始运动信息确定当前块的第一目标运动信息,并根据该第二原始运动信息确定当前块的第二目标运动信息。示例性的,该第一目标运动信息与该第二目标运动信息可以不同。
关于如何根据原始运动信息确定目标运动信息,本实施例中给出一种单向运动信息叠加运动矢量差(Angular Weighted Prediction with Motion Vector Refinement,AWP_MVR)的方案,比如说,第一原始运动信息包括第一原始运动矢量,第一目标运动信息包括第一目标运动矢量,第二原始运动信息包括第二原始运动矢量,第二目标运动信息包括第二目标运动矢量,在此基础上,可以获取与第一原始运动矢量对应的第一运动矢量差(即MVD);根据第一运动矢量差和第一原始运动矢量确定第一目标运动矢量(即第一运动矢量差与第一原始运动矢量的和作为第一目标运动矢量)。可以获取与第二原始运动矢量对应的第二运动矢量差;根据第二运动矢量差和第二原始运动矢量确定第二目标运动矢量(即第二运动矢量差与第二原始运动矢量的和作为第二目标运动矢量)。
示例性的,在确定第一目标运动矢量时,也可以不叠加第一运动矢量差,即将第一原始运动矢量确定为第一目标运动矢量。但是,在确定第二目标运动矢量,可以叠加第二运动矢量差,即根据第二运动矢量差和第二原始运动矢量确定第二目标运动矢量。或者,
在确定第二目标运动矢量时,也可以不叠加第二运动矢量差,即将第二原始运动矢量确定为第二目标运动矢量。但是,在确定第一目标运动矢量,可以叠加第一运动矢量差,即根据第一运动矢量差和第一原始运动矢量确定第一目标运动矢量。或者,
在确定第一目标运动矢量,可以叠加第一运动矢量差,即根据第一运动矢量差和第一原始运动矢量确定第一目标运动矢量。在确定第二目标运动矢量,可以叠加第二运动矢量差,即根据第二运动矢量差和第二原始运动矢量确定第二目标运动矢量。
示例性的,可以获取第一运动矢量差的方向信息和幅值信息,并根据第一运动矢量差的方向信息和幅值信息确定第一运动矢量差。以及,可以获取第二运动矢量差的方向信息和幅值信息,并根据第二运动矢量差的方向信息和幅值信息确定第二运动矢量差。
示例性的,针对解码端来说,可以采用如下方式获取第一运动矢量差的方向信息:解码端从当前块的编码比特流中解析出第一运动矢量差的方向信息;或者,解码端根据当前块的权重预测角度推导第一运动矢量差的方向信息。针对解码端来说,可以采用如下方式获取第二运动矢量差的方向信息:解码端从当前块的编码比特流中解析出第二运动矢量差的方向信息;或者,解码端根据当前块的权重预测角度推导第二运动矢量差的方向信息。
示例性的,针对解码端来说,可以采用如下方式获取第一运动矢量差的幅值信息:从当前块的编码比特流中解析出第一运动矢量差的幅值信息。可以采用如下方式获取第二运动矢量差的幅值信息:从当前块的编码比特流中解析出第二运动矢量差的幅值信息。
在一种可能的实施方式中,编码端和解码端可以约定运动矢量差的方向信息和幅值信息,若方向信息表示方向为向右,幅值信息表示幅值为A,则运动矢量差为(A,0);若方向信息表示方向为向下,幅值信息表示幅值为A,则运动矢量差为(0,-A);若方向信息表示方向为向左,幅值信息表示幅值为A,则运动矢量差为(-A,0);若方向信息表示方向为向上,幅值信息表示幅值为A,则运动矢量差为(0,A);若方向信息表示方向为向右上,幅值信息表示幅值为A,则运动矢量差为(A,A);若方向信息表示方向为向左上,幅值信息表示幅值为A,则运动矢量差为(-A,A);若方向信息表示方向为向左下,幅值信息表示幅值为A,则运动矢量差为(-A,-A);若方向信息表示方向为向右下,幅值信息表示幅值为A,则运动矢量差为(A,-A)。当然,上述只是几个示例,对此方向信息和幅值信息不做限制。
示例性的,运动矢量差可支持上述方向信息的部分或全部,运动矢量差支持的幅值A的取值范围,根据经验进行配置,至少为一个取值,对此不做限制。如运动矢量差支持上,下,左,右等方向,运动矢量差支持如下5类步长配置:1/4-pel,1/2-pel,1-pel,2-pel,4-pel,即幅值A的取值为1,2,4,8,16。综上所述,在方向为向上时,运动矢量差可以为(0,1),(0,2),(0,4),(0,8),(0,16)。在方向为向下时,运动矢量差可以为(0,-1),(0,-2),(0,-4),(0,-8),(0,-16)。在方向为向左时,运动矢量差可以为(-1,0),(-2,0),(-4,0),(-8,0),(-16,0)。在方向为向右时,运动矢量差可以为(1,0),(2,0),(4,0),(8,0),(16,0)。
又例如,运动矢量差支持上,下,左,右等方向,运动矢量差支持如下6类步长配置:1/4-pel,1/2-pel,1-pel,2-pel,3-pel,4-pel,即幅值A的取值可以为1,2,4,8,12,16。
又例如,运动矢量差支持上,下,左,右,左上,左下,右上,右下等八个方向,运动矢量差支持如下3类步长配置:1/4-pel,1/2-pel,1-pel,即幅值A的取值可以为1,2,4。
又例如,运动矢量差支持上,下,左,右等四个方向,运动矢量差支持如下4类步长配置:1/4-pel,1/2-pel,1-pel,2-pel,即幅值A的取值可以为1,2,4,8。
当然,上述只是给出了几个示例,对此不做限制。例如,运动矢量差支持的方向可以任意选择,如可以支持上,下,左,右,左上,左下等六个方向,或者,可以支持上,下等两个方向。又例如,运动矢量差支持的步长配置可变,可以进行灵活配置。又例如,可根据量化参数QP等编码参数对步长配置进行自适应配置,如对较大QP采用1-pel,2-pel,4-pel,8-pel对较小QP采用1/4-pel,1/2-pel,1-pel,2-pel。又例如,可以在序列级,图像级,帧级,Slice级,tile级,patch级,CTU级等配置合适的步长配置,使得解码端可以根据序列级,图像级,帧级,Slice级,tile级,patch级,CTU级解析到的步长配置进行解码操作。
为了方便描述,在后续实施例中,假设运动矢量差支持上,下等方向,支持1-pel,2-pel等步长配置,按照1/4-pel精度描述,则运动矢量差可以为(0,4),(0,8),(0,-4),(0,-8),即,(0,1<<2),(0,1<<3),(0,-1<<2),(0,-1<<3)。
针对编码端来说,在获取到运动信息候选列表后,依次遍历运动信息候选列表中的每个候选运动信息组合,该候选运动信息组合包括两个候选运动信息,一个候选运动信息作为第一原始运动信息,另一个候选运动信息作为第二原始运动信息。需要注意的是,第一原始运动信息与第二原始运动信息可以相同(即从运动信息候选列表中选出的两个候选运动信息相同),也可以不同。若第一原始运动信息与第二原始运动信息相同,则可以通过叠加不同的运动矢量差来保证第一目标运动信息和第二目标运动信息不同。针对每个候选运动信息组合,依次遍历运动矢量差组合,该运动矢量差组合包括第一运动矢量差和第二运动矢量差,第一运动矢量差和第二运动矢量差可以相同或不同。比如说,存在两个运动矢量差,分别为运动矢量差1和运动矢量差2,运动矢量差组合1为运动矢量差1和运动矢量差1,运动矢量差组合2为运动矢量差1(即第一运动矢量差)和运动矢量差2,运动矢量差组合3为运动矢量差2(即第一运动矢量差)和运动矢量差1,运动矢量差组合4为运动矢量差2和运动矢量差2。
示例性的,针对当前遍历的候选运动信息组合和运动矢量差组合,若第一原始运动信息与第二原始运动信息不同,则第一运动矢量差和第二运动矢量差可以相同或不同。若第一原始运动信息与第二原始运动信息相同,则第一运动矢量差和第二运动矢量差可以不同。
针对当前遍历的候选运动信息组合和运动矢量差组合,将第一原始运动信息的运动矢量与第一运动矢量差的和作为第一目标运动矢量,将第二原始运动信息的运动矢量与第二运动矢量差的和作为第二目标运动矢量,基于第一目标运动矢量和第二目标运动矢量确定率失真代价值,对此确定方式不做限制。针对每个候选运动信息组合和每个运动矢量差组合进行上述处理,均得到率失真代价值。然后,从所有率失真代价值中选择最小率失真代价值,在当前块的编码比特流中编码最小率失真代价值对应的候选运动信息组合(第一原始运动信息和第二原始运动信息)的信息和运动矢量差组合(第一运动矢量差和第二运动矢量差)的信息。
比如说,在当前块的编码比特流中编码最小率失真代价值对应的第一原始运动信息在运动信息候选列表中的索引值,最小率失真代价值对应的第二原始运动信息在运动信息候选列表中的索引值,最小率失真代价值对应的第一运动矢量差的方向信息和幅值信息,最小率失真代价值对应的第二运动矢量差的方向信息和幅值信息。例如,针对第一运动矢量差的方向信息或者第二运动矢量差的方向信息来说,该方向信息的指示信息可以为0,用于表示方向列表中的第一个方向。针对第一运动矢量差的幅值信息或者第二运动矢量差的幅值信息来说,该幅值信息的指示信息可以为0,表示步长配置列表中的第一个步长配置。
示例性的,若运动矢量差支持上,下,左,右等四个方向,运动矢量差支持1/4-pel,1/2-pel,1-pel,2-pel,4-pel等5类步长配置时,则运动矢量差的方向信息可以采用2bin定长码(共4类值)进行编码,2bin定长码的4个取值分别表示上,下,左,右等四个方向。运动矢量差的幅值信息可以采用截断一元码进行编码,即通过截断一元码表示5类步长配置。
又例如,若运动矢量差支持上,下,左,右等四个方向,运动矢量差支持1/4-pel,1/2-pel,1-pel,2-pel,3-pel,4-pel等6类步长配置时,则运动矢量差的方向信息可以采用2bin定长码(共4类值)进行编码,运动矢量差的幅值信息可以采用截断一元码进行编码。
又例如,若运动矢量差支持上,下,左,右,左上,左下,右上,右下等八个方向,运动矢量差支持1/4-pel,1/2-pel,1-pel等3类步长配置时,则运动矢量差的方向信息可以采用3bin定长码(共8类值)进行编码,运动矢量差的幅值信息可以采用截断一元码进行编码。
又例如,若运动矢量差支持上,下,左,右等四个方向,运动矢量差支持1/4-pel,1/2-pel,1-pel,2-pel等4类步长配置时,基于此,则运动矢量差的方向信息可以采用截断一元码进行编码,运动矢量差的幅值信息可以采用2bin定长码(共4类值)进行编码。
当然,上述只是编码方式的几个示例,对此编码方式不做限制。
综上所述,针对编码端来说,可以在一定区域内搜索到最佳运动矢量(即目标运动矢量),而后将最佳运动矢量与原始运动矢量的差值,作为运动矢量差(MVD),将运动矢量差的幅值信息和方向信息编入码流。编码端在一定区域内搜索最佳运动矢量时,需要约定运动矢量差的方向以及幅值,即,在(A,0),(0,-A),(-A,0),(0,A),(A,A),(-A,A),(-A,-A),(A,-A)等运动矢量差的限定范围内,搜索最佳运动矢量。
针对解码端来说,在接收到当前块的编码比特流后,可以从编码比特流中解析出第一原始运动信息在运动信息候选列表中的索引值,并从运动信息候选列表中选择与该索引值对应的候选运动信息,将该候选运动信息作为当前块的第一原始运动信息。解码端可以从编码比特流中解析出第二原始运动信息在运动信息候选列表中的索引值,并从运动信息候选列表中选择与该索引值对应的候选运动信息,将该候选运动信息作为当前块的第二原始运动信息。
解码端还可以从该编码比特流中解析出第一运动矢量差的方向信息和幅值信息,并根据该方向信息和该幅值信息确定第一运动矢量差。以及,从该编码比特流中解析出第二运动矢量差的方向信息和幅值信息,并根据该方向信息和该幅值信息确定第二运动矢量差。
然后,解码端可以根据第一运动矢量差和第一原始运动信息确定当前块的第一目标运动信息,并根据第二运动矢量差和第二原始运动信息确定当前块的第二目标运动信息。
示例性的,在根据第一运动矢量差的方向信息和第一运动矢量差的幅值信息确定第一运动矢量差时,若第一运动矢量差的方向信息表示方向为向右,第一运动矢量差的幅值信息表示幅值为A,则第一运动矢量差为(A,0);若第一运动矢量差的方向信息表示方向为向下,第一运动矢量差的幅值信息表示幅值为A,则第一运动矢量差为(0,-A);若第一运动矢量差的方向信息表示方向为向左,第一运动矢量差的幅值信息表示幅值为A,则第一运动矢量差为(-A,0);若第一运动矢量差的方向信息表示方向为向上,第一运动矢量差的幅值信息表示幅值为A,则第一运动矢量差为(0,A)。在根据第二运动矢量差的方向信息和第二运动矢量差的幅值信息确定第二运动矢量差时,若第二运动矢量差的方向信息表示方向为向右,第二运动矢量差的幅值信息表示幅值为A,则第二运动矢量差为(A,0);若第二运动矢量差的方向信息表示方向为向下,第二运动矢量差的幅值信息表示幅值为A,则第二运动矢量差为(0,-A);若第二运动矢量差的方向信息表示方向为向左,第二运动矢量差的幅值信息表示幅值为A,则第二运动矢量差为(-A,0);若第二运动矢量差的方向信息表示方向为向上,第二运动矢量差的幅值信息表示幅值为A,则第二运动矢量差为(0,A)。
参见上述实施例,编码端在对运动矢量差的方向信息进行编码时,可以采用定长码,截断一元码等方式,因此,解码端可以采用定长码,截断一元码等方式,对运动矢量差的方向信息进解码,得到运动矢量差的方向信息,如上,下,左,右,左上,左下,右上,右下等。
参见上述实施例,编码端在对运动矢量差的幅值信息进行编码时,可以采用定长码,截断一元码等方式,因此,解码端可以采用定长码,截断一元码等方式,对运动矢量差的幅值信息进解码,得到运动矢量差的幅值信息,如1/4-pel,1/2-pel,1-pel,2-pel等步长配置,继而根据1/4-pel,1/2-pel,1-pel,2-pel等步长配置确定出运动矢量差的幅值A的取值。
在一种可能的实施方式中,编码端还可以在编码比特流中编码增强角度加权预测模式的第一子模式标志和第二子模式标志,该第一子模式标志指示对第一原始运动信息叠加运动矢量差,或者,对第一原始运动信息不叠加运动矢量差。该第二子模式标志指示对第二原始运动信息叠加运动矢量差,或者,对第二原始运动信息不叠加运动矢量差。
解码端在接收到当前块的编码比特流后,可以先从当前块的编码比特流中解析出增强角度加权预测模式的第一子模式标志和第二子模式标志。若第一子模式标志指示对第一原始运动信息叠加运动矢量差,则从当前块的编码比特流中解析出第一运动矢量差的方向信息和幅值信息,并根据第一运动矢量差的方向信息和幅值信息确定第一运动矢量差,继而根据第一原始运动信息和第一运动矢量差确定当前块的第一目标运动信息。若第一子模式标志指示对第一原始运动信息不叠加运动矢量差,则不会解析第一运动矢量差的方向信息和幅值信息,可以直接将第一原始运动信息作为当前块的第一目标运动信息。若第二子模式标志指示对第二原始运动信息叠加运动矢量差,则从当前块的编码比特流中解析出第二运动矢量差的方向信息和幅值信息,并根据第二运动矢量差的方向信息和幅值信息确定第二运动矢量差,继而根据第二原始运动信息和第二运动矢量差确定当前块的第二目标运动信息。若第二子模式标志指示对第二原始运动信息不叠加运动矢量差,则不会解析第二运动矢量差的方向信息和幅值信息,可以直接将第二原始运动信息作为当前块的第二目标运动信息。
示例性的,当增强角度加权预测模式的第一子模式标志为第一取值时,指示对第一原始运动信息叠加运动矢量差,当增强角度加权预测模式的第一子模式标志为第二取值时,表示对第一原始运动信息不叠加运动矢量差。当增强角度加权预测模式的第二子模式标志为第一取值时,指示对第二原始运动信息叠加运动矢量差,当增强角度加权预测模式的第二子模式标志为第二取值时,表示对第二原始运动信息不叠加运动矢量差。第一取值和第二取值可以根据经验配置,如第一取值为1,第二取值为0,或者,如第一取值为0,第二取值为1。
在上述实施例中,解码端是从当前块的编码比特流中解析出第一运动矢量差的方向信息和第二运动矢量差的方向信息,在实际应用中,还可以根据当前块的权重预测角度推导第一运动矢量差的方向信息,并根据当前块的权重预测角度推导第二运动矢量差的方向信息。
比如说,当前块的权重预测角度表示一种角度方向,参见图6所示的8种角度方向,当前块的权重预测角度表示8种角度方向中的某一种角度方向,对于解码端来说,可以从所有方向信息(如上,下,左,右,左上,左下,右上,右下等)中选择与该角度方向匹配的方向信息,直接将该方向信息作为第一运动矢量差的方向信息和第二运动矢量差的方向信息。
与该角度方向匹配的方向信息,可以包括:该方向信息与该角度方向之间的角度差为预设角度或接近预设角度,或者,在所有方向信息中,该方向信息与该角度方向之间的角度差与预设角度的差值最小。该预设角度可以根据经验配置,如该预设角度可以为90度。
示例性的,针对编码端来说,也可以根据当前块的权重预测角度推导第一运动矢量差的方向信息,并根据当前块的权重预测角度推导第二运动矢量差的方向信息,而不需要采用率失真代价值的方式确定第一运动矢量差的方向信息和第二运动矢量差的方向信息。编码端在向解码端发送当前块的编码比特流时,也可以不编码第一运动矢量差的方向信息和第二运动矢量差的方向信息,由解码端推导第一运动矢量差的方向信息和第二运动矢量差的方向信息。
实施例16:在实施例15中,解码端可以从编码比特流中解析出第一运动矢量差的幅值信息和第二运动矢量差的幅值信息,在一种可能的实施方式中,编码端和解码端可以构建相同的一个运动矢量差幅值列表,编码端确定第一运动矢量差的幅值信息在该运动矢量差幅值列表中的幅值索引,且编码比特流包括第一运动矢量差的幅值索引。解码端从当前块的编码比特流中解析出第一运动矢量差的幅值索引,并从该运动矢量差幅值列表选取与该幅值索引对应的幅值信息,该幅值信息即第一运动矢量差的幅值信息。编码端确定第二运动矢量差的幅值信息在该运动矢量差幅值列表中的幅值索引,且编码比特流包括第二运动矢量差的幅值索引。解码端从当前块的编码比特流中解析出第二运动矢量差的幅值索引,并从该运动矢量差幅值列表选取与该幅值索引对应的幅值信息,该幅值信息即第二运动矢量差的幅值信息。
在另一种可能的实施方式中,编码端和解码端可以构建相同的至少两个运动矢量差幅值列表,如编码端和解码端构建相同的运动矢量差幅值列表1,并构建相同的运动矢量差幅值列表2。编码端先基于运动矢量差幅值列表的指示信息,从所有运动矢量差幅值列表中选取目标运动矢量差幅值列表;编码端确定第一运动矢量差的幅值信息在该目标运动矢量差幅值列表中的幅值索引,且编码比特流包括第一运动矢量差的幅值索引。解码端先基于运动矢量差幅值列表的指示信息,从所有运动矢量差幅值列表中选取目标运动矢量差幅值列表。从当前块的编码比特流中解析出第一运动矢量差的幅值索引,并从该目标运动矢量差幅值列表中选取与该幅值索引对应的幅值信息,该幅值信息即第一运动矢量差的幅值信息。
编码端还可以确定第二运动矢量差的幅值信息在该目标运动矢量差幅值列表中的幅值索引,且编码比特流可以包括第二运动矢量差的幅值索引。解码端可以从当前块的编码比特流中解析出第二运动矢量差的幅值索引,并从该目标运动矢量差幅值列表中选取与该幅值索引对应的幅值信息,该幅值信息即第二运动矢量差的幅值信息。
示例性的,运动矢量差幅值列表的指示信息,可以是任意级别的指示信息,比如说,可以是序列级的运动矢量差幅值列表的指示信息,帧级的运动矢量差幅值列表的指示信息,Slice级的运动矢量差幅值列表的指示信息,Tile级的运动矢量差幅值列表的指示信息,Patch级的运动矢量差幅值列表的指示信息,CTU级的运动矢量差幅值列表的指示信息,LCU级的运动矢量差幅值列表的指示信息,块级的运动矢量差幅值列表的指示信息,CU级的运动矢量差幅值列表的指示信息,PU级的运动矢量差幅值列表的指示信息,对此不做限制,为了方便描述,以帧级的运动矢量差幅值列表的指示信息为例,帧级的运动矢量差幅值列表的指示信息可以为awp_umve_offset_list_flag,通过awp_umve_offset_list_flag控制运动矢量差幅值列表的切换。
比如说,编码端和解码端可以构建运动矢量差幅值列表1和运动矢量差幅值列表2,参见表3和表4所示。可以对运动矢量差幅值列表1进行二值化处理,并对运动矢量差幅值列表2进行二值化处理,对此处理方式不做限制。例如,对运动矢量差幅值列表1采用截断一元码,对运动矢量差幅值列表2采用截断一元码,或者,对运动矢量差幅值列表1采用截断一元码,对运动矢量差幅值列表2采用定长码,或者,对运动矢量差幅值列表1采用定长码,对运动矢量差幅值列表2采用截断一元码,对此不做限制,参见表5和表6所示。
表3
MVD幅值(像素) 1/4 1/2 1 2 4
表4
MVD幅值(像素) 1/4 1/2 1 2 4 8 16 32
表5
MVD幅值(像素) 1/4 1/2 1 2 4
二值化 1 01 001 0001 0000
表6
MVD幅值(像素) 1/4 1/2 1 2 4 8 16 32
二值化 000 001 011 010 10 110 1110 1111
在上述应用场景下,通过awp_umve_offset_list_flag控制运动矢量差幅值列表的切换,即控制采用表3所示的运动矢量差幅值列表,或表4所示的运动矢量差幅值列表。例如,若awp_umve_offset_list_flag的取值为第一取值,则表3所示的运动矢量差幅值列表为目标运动矢量差幅值列表,若awp_umve_offset_list_flag的取值为第二取值,则表4所示的运动矢量差幅值列表为目标运动矢量差幅值列表;或者,若awp_umve_offset_list_flag的取值为第二取值,则表3所示的运动矢量差幅值列表为目标运动矢量差幅值列表,若awp_umve_offset_list_flag的取值为第一取值,则表4所示的运动矢量差幅值列表为目标运动矢量差幅值列表
在目标运动矢量差幅值列表为表3时,编码端采用表5所示的二值化方式进行编码,解码端采用表5所示的二值化方式进行解码。在目标运动矢量差幅值列表为表4时,编码端采用表6所示的二值化方式进行编码,解码端采用表6所示的二值化方式进行解码。
实施例17:在实施例15或实施例16的基础上,针对第一运动矢量差和第二运动矢量差,以下结合具体应用场景,对单向运动信息叠加运动矢量差AWP_MVR的相关语法进行说明:
应用场景1:参见表7所示,为相关语法的示例,SkipFlag表示当前块是否为Skip模式,DirectFlag表示当前块是否为Direct模式,AwpFlag表示当前块是否为AWP模式。
awp_idx(角度加权预测模式索引):跳过模式或直接模式下的角度加权预测模式索引值,AwpIdx的值,可以等于awp_idx的值。如果码流中不存在awp_idx,则AwpIdx的值等于0。
awp_cand_idx0(角度加权预测模式的第一运动信息索引):跳过模式或直接模式下的角度加权预测模式的第一运动信息索引值。AwpCandIdx0的值等于awp_cand_idx0的值,如果码流中不存在awp_cand_idx0,则AwpCandIdx0的值等于0。
awp_cand_idx1(角度加权预测模式第二运动信息索引):跳过模式或直接模式下的角度加权预测模式的第二运动信息索引值。AwpCandIdx1的值等于awp_cand_idx1的值,如果码流中不存在awp_cand_idx1,则AwpCandIdx1的值等于0。
awp_mvd_flag(增强角度加权预测模式标志),是一个二值变量,awp_mvd_flag为第一取值(如1)时,表示当前块为增强角度加权预测模式,awp_mvd_flag为第二取值(如0)时,表示当前块为非增强角度加权预测模式。示例性的,AwpMvdFlag的取值,可以等于awp_mvd_flag的值,如果码流中不存在awp_mvd_flag,则AwpMvdFlag的值等于0。
awp_mvd_sub_flag0(增强角度加权预测模式第一子模式标志),可以是一个二值变量,awp_mvd_sub_flag0为第一取值时,可以表示角度加权预测模式的第一运动信息需要叠加运动信息差;awp_mvd_sub_flag0为第二取值时,可以表示角度加权预测模式的第一运动信息不需要叠加运动信息差。示例性的,AwpMvdSubFlag0的值可以等于awp_mvd_sub_flag0的值,如果码流中不存在awp_mvd_sub_flag0,则AwpMvdSubFlag0的值等于0。
awp_mvd_sub_flag1(增强角度加权预测模式第二子模式标志),可以是一个二值变量,awp_mvd_sub_flag1为第一取值时,可以表示角度加权预测模式的第二运动信息需要叠加运动信息差;awp_mvd_sub_flag1为第二取值时,可以表示角度加权预测模式的第二运动信息不需要叠加运动信息差。示例性的,AwpMvdSubFlag1的值可以等于awp_mvd_sub_flag1的值,如果码流中不存在awp_mvd_sub_flag1,则还可以存在以下情况:若AwpMvdFlag等于1,那么,AwpMvdSubFlag1的值等于1,否则,AwpMvdSubFlag1的值可以等于0。
awp_mvd_dir0(第一运动信息运动矢量差方向索引值),角度加权预测模式第一运动信息的运动矢量差方向索引值。示例性的,AwpMvdDir0的值可以等于awp_mvd_dir0的值,如果码流中不存在awp_mvd_dir0,则AwpMvdDir0的值可以等于0。
awp_mvd_step0(第一运动信息运动矢量差步长索引值),角度加权预测模式第一运动信息的运动矢量差步长索引值。示例性的,AwpMvdStep0的值可以等于awp_mvd_step0的值,如果码流中不存在awp_mvd_step0,则AwpMvdStep0的值可以等于0。
awp_mvd_dir1(第二运动信息运动矢量差方向索引值),角度加权预测模式第二运动信息的运动矢量差方向索引值。示例性的,AwpMvdIdx1的值可以等于awp_mvd_dir1的值。如果码流中不存在awp_mvd_dir1,则AwpMvdDir1的值可以等于0。
awp_mvd_step1(第二运动信息运动矢量差步长索引值),角度加权预测模式第二运动信息的运动矢量差步长索引值。示例性的,AwpMvdStep1的值可以等于awp_mvd_step1的值。如果码流中不存在awp_mvd_step1,则AwpMvdStep1的值可以等于0。
表7
Figure GDA0003896102320000521
应用场景2:参见表8所示,为相关语法的示例,SkipFlag表示当前块是否为Skip模式,DirectFlag表示当前块是否为Direct模式,AwpFlag表示当前块是否为AWP模式。
关于awp_idx,awp_cand_idx0和awp_cand_idx1,可以参见应用场景1,在此不再赘述。
awp_mvd_sub_flag0(增强角度加权预测模式第一子模式标志),可以是一个二值变量,awp_mvd_sub_flag0为第一取值时,可以表示角度加权预测模式的第一运动信息需要叠加运动信息差;awp_mvd_sub_flag0为第二取值时,可以表示角度加权预测模式的第一运动信息不需要叠加运动信息差。示例性的,AwpMvdSubFlag0的值可以等于awp_mvd_sub_flag0的值,如果码流中不存在awp_mvd_sub_flag0,则AwpMvdSubFlag0的值等于0。
awp_mvd_sub_flag1(增强角度加权预测模式第二子模式标志),可以是一个二值变量,awp_mvd_sub_flag1为第一取值时,可以表示角度加权预测模式的第二运动信息需要叠加运动信息差;awp_mvd_sub_flag1为第二取值时,可以表示角度加权预测模式的第二运动信息不需要叠加运动信息差。示例性的,AwpMvdSubFlag1的值可以等于awp_mvd_sub_flag1的值,如果码流中不存在awp_mvd_sub_flag1,则AwpMvdSubFlag1的值可以等于0。
关于awp_mvd_dir0,awp_mvd_step0,awp_mvd_dir1,awp_mvd_step1,参见应用场景1。
表8
Figure GDA0003896102320000531
示例性的,针对应用场景1和应用场景2,二者的区别在于:在应用场景1中,存在语法awp_mvd_flag,在应用场景2中,不存在语法awp_mvd_flag。在应用场景1中,可以通过awp_mvd_flag控制增强角度加权预测模式,即通过总开关控制增强角度加权预测模式。
应用场景3:可以对应用场景1和应用场景2进行衍生,将AWP模式与AWP_MVR模式融合,即对跨度增加0跨度,从而不需要编码是否使能的标志位。例如,运动矢量差支持上,下,左,右等方向,运动矢量差支持如下步长配置:0-pel,1/4-pel,1/2-pel,1-pel,2-pel,4-pel,即增加步长配置0-pel。在此基础上,表7/表8可以更新为表9,相关语法参见表7。
表9
Figure GDA0003896102320000532
示例性的,针对各应用场景来说,相关语法中语法元素的顺序可进行相应调整,比如说,针对表8所示的相关语法,可以对语法元素的顺序进行相应调整,得到表10所示的相关语法。
表10
Figure GDA0003896102320000541
从表8和表10可以看出,可以对awp_cand_idx0和awp_cand_idx1的顺序进行调整,示例性的,在表10中,awp_cand_idx0和awp_cand_idx1的解析方式,可以根据AwpMvdSubFlag0,AwpMvdSubFlag1,AwpMvdDir0,AwpMvdStep0,AwpMvdDir1,AwpMvdStep1中一个或多个的值进行调整。例如,当AwpMvdSubFlag0,AwpMvdSubFlag1中的至少一个值为1时,awp_cand_idx0以及awp_cand_idx1的解析方式完全一致,否则,解析方式不一致。
示例性的,AwpMvdSubFlag0表示是否对第一原始运动信息叠加MVD,如果叠加,基于AwpMvdDir0和AwpMvdStep0确定出第一原始运动信息对应的MVD值,AwpMvdSubFlag1表示是否对第二原始运动信息叠加MVD,如果叠加,基于AwpMvdDir1和AwpMvdStep1确定出第二原始运动信息对应的MVD值。显然,若一个原始运动信息叠加MVD,另一个原始运动信息不叠加MVD,或两个原始运动信息叠加的MVD值不同,则允许第一原始运动信息和第二原始运动信息相同,awp_cand_idx0表示第一原始运动信息的索引值,awp_cand_idx1表示第二原始运动信息的索引值,因此,awp_cand_idx0和awp_cand_idx1的解析方式完全一致,即从完整的运动信息候选列表中解析出与awp_cand_idx0对应的第一原始运动信息,并从完整的运动信息候选列表中解析出与awp_cand_idx1对应的第二原始运动信息。
若两个原始运动信息均不叠加MVD,或者,两个原始运动信息叠加的MVD值相同,则第一原始运动信息和第二原始运动信息不同,基于此,awp_cand_idx0和awp_cand_idx1的解析方式不一致,从完整的运动信息候选列表中解析出与awp_cand_idx0对应的第一原始运动信息,由于第二原始运动信息与第一原始运动信息不同,因此,不是从完整的运动信息候选列表中解析出与awp_cand_idx1对应的第二原始运动信息,而是在排除第一原始运动信息的基础上,从不完整的运动信息候选列表中解析出与awp_cand_idx1对应的第二原始运动信息。
基于运动信息候选列表AwpUniArray,从AwpUniArray中选择两个候选运动信息,基于该两个候选运动信息确定当前块的第一目标运动信息和第二目标运动信息。比如说,解码端从编码比特流中解析出AwpCandIdx0和AwpCandIdx1,将AwpUniArray中的第AwpCandIdx0+1个运动信息赋值给mvAwp0L0,mvAwp0L1,RefIdxAwp0L0,RefIdxAwp0L1。将AwpUniArray中的第AwpCandIdx1+1个运动信息赋值给mvAwp1L0,mvAwp1L1,RefIdxAwp1L0,RefIdxAwp1L1。当然,也可将AwpUniArray中第AwpCandIdx0+1个运动信息赋值给mvAwp1L0,mvAwp1L1,RefIdxAwp1L0,RefIdxAwp1L1,将AwpUniArray中第AwpCandIdx1+1个运动信息赋值给mvAwp0L0,mvAwp0L1,RefIdxAwp0L0,RefIdxAwp0L1。
AwpCandIdx0表示第一目标运动信息的索引值,因此,可以将AwpUniArray中的第AwpCandIdx0+1个运动信息赋值给第一目标运动信息。例如,若AwpCandIdx0为0,则将AwpUniArray中的第1个运动信息赋值给第一目标运动信息,以此类推。
mvAwp0L0,mvAwp0L1,RefIdxAwp0L0,RefIdxAwp0L1合起来作为第一目标运动信息,即第一目标运动信息包括指向List0的单向运动信息以及指向List1的单向运动信息。
若AwpUniArray中的第AwpCandIdx0+1个运动信息是指向List0的单向运动信息,则第一目标运动信息包括指向List0的单向运动信息,且指向List1的单向运动信息为空。
若AwpUniArray中的第AwpCandIdx0+1个运动信息是指向List1的单向运动信息,则第一目标运动信息包括指向List1的单向运动信息,且指向List0的单向运动信息为空。
示例性的,mvAwp0L0和RefIdxAwp0L0表示第一目标运动信息中指向List0的单向运动信息,mvAwp0L1和RefIdxAwp0L1表示第一目标运动信息中指向List1的单向运动信息。
若RefIdxAwp0L0有效,则表示指向List0的单向运动信息为有效,因此,第一目标运动信息的预测模式为PRED_List0。若RefIdxAwp0L1有效,则表示指向List1的单向运动信息为有效,因此,第一目标运动信息的预测模式为PRED_List1。
示例性的,AwpCandIdx1表示第二目标运动信息的索引值,因此,可以将AwpUniArray中的第AwpCandIdx1+1个运动信息赋值给第二目标运动信息。例如,若AwpCandIdx1为0,则将AwpUniArray中的第1个运动信息赋值给第二目标运动信息,以此类推。
mvAwp1L0,mvAwp1L1,RefIdxAwp1L0,RefIdxAwp1L1合起来作为第二目标运动信息,即第二目标运动信息包括指向List0的单向运动信息以及指向List1的单向运动信息。
若AwpUniArray中的第AwpCandIdx1+1个运动信息是指向List0的单向运动信息,则第二目标运动信息包括指向List0的单向运动信息,且指向List1的单向运动信息为空。
若AwpUniArray中的第AwpCandIdx1+1个运动信息是指向List1的单向运动信息,则第二目标运动信息包括指向List1的单向运动信息,且指向List0的单向运动信息为空。
示例性的,mvAwp1L0和RefIdxAwp1L0表示第二目标运动信息中指向List0的单向运动信息,mvAwp1L1和RefIdxAwp1L1表示第二目标运动信息中指向List1的单向运动信息。
若RefIdxAwp1L0有效,则表示指向List0的单向运动信息为有效,因此,第二目标运动信息的预测模式为PRED_List0。若RefIdxAwp1L1有效,则表示指向List1的单向运动信息为有效,因此,第二目标运动信息的预测模式为PRED_List1。
实施例18:在实施例1-实施例3中,编码端/解码端在得到运动信息候选列表(参见实施例13和14)后,可以基于该运动信息候选列表获取当前块的第一目标运动信息和第二目标运动信息,在确定第一目标运动信息指向的参考帧与第二目标运动信息指向的参考帧为同一帧时,关于第一目标运动信息和第二目标运动信息的获取方式,可以采用如下方式实现:从运动信息候选列表中选择一个候选运动信息作为当前块的原始运动信息;根据该原始运动信息确定当前块的第一目标运动信息。然后,可以根据第一目标运动信息确定当前块的第二目标运动信息,或者,可以根据该原始运动信息确定当前块的第二目标运动信息。
示例性的,该原始运动信息包括原始运动矢量,该第一目标运动信息包括第一目标运动矢量,该第二目标运动信息包括第二目标运动矢量,在一种可能的实施方式中,可以获取与原始运动矢量对应的运动矢量差,并根据该原始运动矢量确定当前块的第一目标运动矢量,并根据第一目标运动矢量和该运动矢量差确定当前块的第二目标运动矢量。
在另一种可能的实施方式中,可以获取与该原始运动矢量对应的运动矢量差,并根据该原始运动矢量和该运动矢量差确定当前块的第一目标运动矢量,并根据该原始运动矢量和该运动矢量差确定当前块的第二目标运动矢量。
在另一种可能的实施方式中,可以获取与该原始运动矢量对应的第一运动矢量差和第二运动矢量差;根据该原始运动矢量和第一运动矢量差确定当前块的第一目标运动矢量,并根据该第一目标运动矢量和第二运动矢量差确定当前块的第二目标运动矢量。
在另一种可能的实施方式中,可以获取与该原始运动矢量对应的第一运动矢量差和第二运动矢量差;根据该原始运动矢量和第一运动矢量差确定当前块的第一目标运动矢量;根据该原始运动矢量和第二运动矢量差确定当前块的第二目标运动矢量。
在上述实施例中,第一目标运动矢量和第二目标运动矢量可以不同。
以下结合具体应用场景,对实施例18的内容进行详细说明。在若干应用中,由于参考帧的存储空间有限,因此,若当前帧为B帧,但List0与List1中的参考帧的POC一致,即为同一帧,则为了最大化AWP模式的性能,可以对传输的两个运动信息的语法元素进行重新设计,即采用本实施例的方式传输运动信息。另一方面,针对P帧的情况,若指向同一帧的两个运动矢量限制在一定范围内,不增加P帧的带宽限制,则AWP模式可以应用于P帧。
针对上述发现,本实施例中,在第一目标运动信息指向的参考帧与第二目标运动信息指向的参考帧为同一帧时,即AWP模式的两个运动矢量指向同一帧,则第二目标运动信息的运动矢量可以由第一目标运动信息的运动矢量导出,即第一个运动信息传递索引值,第二个运动信息为在第一个运动信息的基础上叠加MVD,MVD的编码方式参见实施例15或16。
参见表11所示,为语法元素的一个示例,awp_mvd_dir0表示受限角度加权预测模式第一运动信息运动矢量差方向索引值,AwpMvdDir0的值等于awp_mvd_dir0的值,如果位流中不存在awp_mvd_dir0,则AwpMvdDir0的值等于0。awp_mvd_step0表示受限角度加权预测模式第一运动信息运动矢量差步长索引值,AwpMvdStep0的值等于awp_mvd_step0的值,如果位流中不存在awp_mvd_step0,则AwpMvdStep0的值等于0。awp_mvd_dir1表示受限角度加权预测模式第二运动信息运动矢量差方向索引值,AwpMvdIdx1的值等于awp_mvd_dir1的值,如果位流中不存在awp_mvd_dir1,则AwpMvdDir1的值等于0。awp_mvd_step1表示受限角度加权预测模式第二运动信息运动矢量差步长索引值,AwpMvdStep1的值等于awp_mvd_step1的值,如果位流中不存在awp_mvd_step1,则AwpMvdStep1的值等于0。
表11
Figure GDA0003896102320000561
Figure GDA0003896102320000571
综上所述,可以基于awp_cand_idx确定出原始运动信息(原始运动信息包括原始运动矢量),根据awp_mvd_dir0和awp_mvd_step0确定出第一运动矢量差MVD0和第二运动矢量差MVD1。在此基础上,根据原始运动矢量和第一运动矢量差MVD0确定第一目标运动矢量,如原始运动矢量+MVD0。根据第一目标运动矢量和第二运动矢量差MVD1确定第二目标运动矢量,如第一目标运动矢量+MVD1。得到第一目标运动矢量后,基于第一目标运动矢量得到第一目标运动信息,第一目标运动信息包括第一目标运动矢量。得到第二目标运动矢量后,基于第二目标运动矢量得到第二目标运动信息,第二目标运动信息包括第二目标运动矢量。
又例如,根据原始运动矢量和第一运动矢量差MVD0确定第一目标运动矢量,如原始运动矢量+MVD0。根据原始运动矢量和第二运动矢量差MVD1确定第二目标运动矢量,如原始运动矢量+MVD1。在得到第一目标运动矢量后,基于第一目标运动矢量得到第一目标运动信息,第一目标运动信息包括第一目标运动矢量。在得到第二目标运动矢量后,基于第二目标运动矢量得到第二目标运动信息,第二目标运动信息包括第二目标运动矢量。
参见表12所示,为语法元素的另一个示例,awp_mvd_dir与awp_mvd_step组成第二个运动信息(即第二目标运动信息)在第一个运动信息(即第一目标运动信息)上的MVD的语法表达。awp_mvd_dir表示受限角度加权预测模式运动矢量差方向索引值,AwpMvdDir的值等于awp_mvd_dir的值,如果位流中不存在awp_mvd_dir,AwpMvdDir的值等于0。awp_mvd_step表示受限角度加权预测模式运动矢量差步长索引值,AwpMvdStep的值等于awp_mvd_step的值,如果位流中不存在awp_mvd_step,AwpMvdStep的值等于0。
表12
Figure GDA0003896102320000572
综上所述,可以基于awp_cand_idx确定出原始运动信息(原始运动信息包括原始运动矢量),根据awp_mvd_dir和awp_mvd_step确定出运动矢量差MVD。
在此基础上,根据原始运动矢量确定第一目标运动矢量,如第一目标运动矢量为原始运动矢量。根据第一目标运动矢量和运动矢量差MVD确定第二目标运动矢量,如第一目标运动矢量+MVD。在得到第一目标运动矢量后,基于第一目标运动矢量得到第一目标运动信息,第一目标运动信息包括第一目标运动矢量。在得到第二目标运动矢量后,基于第二目标运动矢量得到第二目标运动信息,第二目标运动信息包括第二目标运动矢量。
又例如,根据原始运动矢量和运动矢量差MVD确定第一目标运动矢量,如原始运动矢量+MVD。根据原始运动矢量和运动矢量差MVD确定第二目标运动矢量,如原始运动矢量-MVD。或者,根据原始运动矢量和运动矢量差MVD确定第一目标运动矢量,如原始运动矢量-MVD。根据原始运动矢量和运动矢量差MVD确定第二目标运动矢量,如原始运动矢量+MVD。在得到第一目标运动矢量后,基于第一目标运动矢量得到第一目标运动信息,第一目标运动信息包括第一目标运动矢量。在得到第二目标运动矢量后,基于第二目标运动矢量得到第二目标运动信息,第二目标运动信息包括第二目标运动矢量。综上可以看出,MVD同时作用在相反的两个方向,使得原始运动信息能够导出两个目标运动信息。
在一种可能的实施方式中,MVD的语法表述还可以为水平分量和垂直分量的分开表述,参见表13所示,为分开表述的一个示例。awp_mv_diff_x_abs表示受限角度加权预测模式运动矢量水平分量差绝对值,awp_mv_diff_y_abs表示受限角度加权预测模式运动矢量垂直分量差绝对值。awp_mv_diff_x_sign表示受限角度加权预测模式运动矢量水平分量差符号值,awp_mv_diff_y_sign表示受限角度加权预测模式运动矢量垂直分量差符号值。
示例性的,受限角度加权预测模式的运动矢量差值的绝对值,AwpMvDiffXAbs等于awp_mv_diff_x_abs的值,AwpMvDiffYAbs等于awp_mv_diff_y_abs的值。
示例性的,受限角度加权预测模式的运动矢量差值的符号位,AwpMvDiffXSign的值等于awp_mv_diff_x_sign的值,AwpMvDiffYSign的值等于awp_mv_diff_y_sign0。如果位流中不存在awp_mv_diff_x_sign或awp_mv_diff_y_sign,则AwpMvDiffXSign或AwpMvDiffYSign的值为0。如果AwpMvDiffXSign的值为0,AwpMvDiffX等于AwpMvDiffXAbs;如果AwpMvDiffXSign的值为1,AwpMvDiffX等于-AwpMvDiffXAbs。如果AwpMvDiffYSign的值为0,AwpMvDiffY等于AwpMvDiffYAbs;如果AwpMvDiffYSign的值为1,AwpMvDiffY等于-AwpMvDiffYAbs。AwpMvDiffX和AwpMvDiffY的取值范围是-32768~32767。
表13
Figure GDA0003896102320000581
在另一种可能的实施方式中,参见表14所示,为分开表述的另一个示例。基于表14所示,可以判断|MVD_X|是否大于0,|...|为绝对值符号,MVD_X表示MVD的横向分量;判断|MVD_Y|是否大于0,|...|为绝对值符号,MVD_Y表示MVD的纵向分量;如果|MVD_X|大于0,判断|MVD_X|是否大于1;如果|MVD_Y|大于0,判断|MVD_Y|是否大于1;如果|MVD_X|大于1,编码|MVD_X|-2;如果|MVD_X|大于0,编码MVD_X的符号位;如果|MVD_Y|大于1,编码|MVD_Y|-2;如果|MVD_Y|大于0,编码MVD_Y的符号位。
表14
Figure GDA0003896102320000591
实施例19:在实施例1-实施例3中,编码端/解码端需要获取运动信息候选列表,如采用如下方式获取运动信息候选列表:获取待加入到运动信息候选列表中的至少一个可用运动信息;基于至少一个可用运动信息获取运动信息候选列表。示例性的,至少一个可用运动信息包括但不限于如下运动信息的至少一种:空域运动信息;时域运动信息;HMVP运动信息;预设运动信息,各可用运动信息的获取方式,可以参见实施例13,在此不再赘述。
示例性的,基于至少一个可用运动信息获取运动信息候选列表,可以包括:针对当前待加入到运动信息候选列表的可用运动信息,将可用运动信息加入到运动信息候选列表。比如说,针对可用运动信息,无论可用运动信息是单向运动信息还是双向运动信息,均将可用运动信息加入到运动信息候选列表。与实施例13和实施例14不同的是,当可用运动信息为双向运动信息时,不需要将双向运动信息裁剪为第一单向运动信息和第二单向运动信息,而是直接将双向运动信息加入到运动信息候选列表,即运动信息候选列表可以包括双向运动信息。
示例性的,在将可用运动信息加入到运动信息候选列表时,可以对可用运动信息进行查重操作,也可以对可用运动信息不进行查重操作,对此不做限制。若对可用运动信息进行查重操作,则可以基于List+refIdx+MV_x+MV_y进行查重操作,或者,可以基于POC+MV_x+MV_y进行查重操作,对此查重操作的方式不再赘述,可以参见实施例14。
示例性的,由于运动信息候选列表中的候选运动信息,可能为单向运动信息,也可能为双向运动信息,因此,在从运动信息候选列表中选择一个候选运动信息作为当前块的原始运动信息(如实施例15-实施例18中的第一原始运动信息,或第二原始运动信息,或原始运动信息等)时,若选择的候选运动信息为单向运动信息,则可以直接将该单向运动信息作为当前块的原始运动信息。若选择的候选运动信息为双向运动信息,则可以将该双向运动信息中的第一单向运动信息作为当前块的原始运动信息。比如说,在从运动信息候选列表中选择一个候选运动信息作为当前块的第一原始运动信息时,若选择的候选运动信息为双向运动信息,则可以将该双向运动信息中的第一单向运动信息作为当前块的第一原始运动信息。
示例性的,若选择的候选运动信息为双向运动信息,则该双向运动信息可以包括第一单向运动信息和第二单向运动信息,第一单向运动信息是指向第一参考帧列表中参考帧的单向运动信息,第二单向运动信息是指向第二参考帧列表中参考帧的单向运动信息。
在一种可能的实施方式中,若该双向运动信息在运动信息候选列表中的索引值(用于表示双向运动信息是运动信息候选列表中的第几个候选运动信息)为偶数,则第一参考帧列表可以为List0,第二参考帧列表可以为List1;若该双向运动信息在运动信息候选列表中的索引值为奇数,则第一参考帧列表可以为List1,第二参考帧列表可以为List0。或者,
在另一种可能的实施方式中,若该双向运动信息在运动信息候选列表中的索引值为奇数,则第一参考帧列表为List0,第二参考帧列表为List1;若该双向运动信息在运动信息候选列表中的索引值为偶数,则第一参考帧列表为List1,第二参考帧列表为List0。或者,
在另一种可能的实施方式中,第一参考帧列表为List0;第二参考帧列表为List1。或者,
在另一种可能的实施方式中,第一参考帧列表为List1;第二参考帧列表为List0。
实施例20:在实施例1-实施例3中,编码端/解码端在得到运动信息候选列表后,可以基于该运动信息候选列表获取当前块的第一目标运动信息和第二目标运动信息,在确定第一目标运动信息指向的参考帧与第二目标运动信息指向的参考帧为同一帧时,运动信息候选列表中的候选运动信息可以均为双向运动信息,基于此,关于第一目标运动信息和第二目标运动信息的获取方式,可以采用如下方式实现:从运动信息候选列表中选择一个候选运动信息,该候选运动信息为双向运动信息,将该双向运动信息中的第一单向运动信息作为当前块的第一目标运动信息,将该双向运动信息中的第二单向运动信息作为当前块的第二目标运动信息。
示例性的,如果限定第一目标运动信息指向的参考帧与第二目标运动信息指向的参考帧为同一帧,即AWP模式的两个运动矢量指向同一帧,则在构建运动信息候选列表时,添加到运动信息候选列表中的可用运动信息均为双向运动信息。基于此,针对编码端来说,可以采用率失真代价值从运动信息候选列表中选择一个候选运动信息,编码端在向解码端发送当前块的编码比特流时,可以携带该候选运动信息在运动信息候选列表中的索引值,针对解码端来说,可以基于该索引值从运动信息候选列表中选择一个候选运动信息。
针对编码端和解码端来说,在从运动信息候选列表中选择一个候选运动信息后,该候选运动信息可以为双向运动信息,可以将该双向运动信息裁剪为第一单向运动信息和第二单向运动信息,将该双向运动信息中的第一单向运动信息作为当前块的第一目标运动信息,将该双向运动信息中的第二单向运动信息作为当前块的第二目标运动信息。
在本实施例中,双向运动信息可以指向同一个List,即本实施例中的双向运动信息本质上是两个单向运动信息的组合。
实施例21:在实施例4中,编码端/解码端需要获取运动矢量候选列表,例如,获取参考帧信息(即当前块的参考帧信息),并获取与该参考帧信息对应的运动矢量候选列表(即当前块的运动矢量候选列表),即运动矢量候选列表是针对参考帧信息创建的。示例性的,该参考帧信息可以包括第一参考帧信息和第二参考帧信息,因此,该运动矢量候选列表可以包括第一参考帧信息(如参考帧索引和参考帧方向等)对应的运动矢量候选列表和第二参考帧信息(如参考帧索引和参考帧方向等)对应的运动矢量候选列表,第一参考帧信息是第一目标运动矢量对应的参考帧信息,第二参考帧信息是第二目标运动矢量对应的参考帧信息。
示例性的,针对编码端来说,可以获取第一参考帧信息和第二参考帧信息,比如说,基于率失真代价值,可以从一个参考帧列表中选取出第一参考帧信息和第二参考帧信息,也可以从两个参考帧列表中选取出第一参考帧信息和第二参考帧信息,例如,两个参考帧列表分别为List0和List1,从List0中选取出第一参考帧信息,从List1中选取出第二参考帧信息。
示例性的,针对解码端来说,可以获取第一参考帧信息和第二参考帧信息,比如说,基于当前块的编码比特流中的索引信息,可以从一个参考帧列表中选取出第一参考帧信息和第二参考帧信息,也可以从两个参考帧列表中选取出第一参考帧信息和第二参考帧信息,例如,两个参考帧列表分别为List0和List1,基于第一参考帧信息的索引信息,从List0中选取出第一参考帧信息,基于第二参考帧信息的索引信息,从List1中选取出第二参考帧信息。
当然,上述只是获取第一参考帧信息和第二参考帧信息的示例,对此不做限制。
在一种可能的实施方式中,第一参考帧信息和第二参考帧信息可以相同,在此情况下,第一目标运动矢量指向的参考帧与第二目标运动矢量指向的参考帧为同一帧,第一参考帧信息对应的运动矢量候选列表与第二参考帧信息对应的运动矢量候选列表为同一个运动矢量候选列表,即,编码端/解码端获取的是一个运动矢量候选列表。
在另一种可能的实施方式中,第一参考帧信息与第二参考帧信息可以不同,在此情况下,第一目标运动矢量指向的参考帧与第二目标运动矢量指向的参考帧为不同帧,第一参考帧信息对应的运动矢量候选列表与第二参考帧信息对应的运动矢量候选列表为不同的运动矢量候选列表,即编码端/解码端获取的是两个不同的运动矢量候选列表。
为了方便描述,无论是一个运动矢量候选列表,还是两个不同的运动矢量候选列表,均记为第一参考帧信息对应的运动矢量候选列表与第二参考帧信息对应的运动矢量候选列表。
基于此,可以采用如下方式获取当前块的第一目标运动矢量和第二目标运动矢量:
方式一、从第一参考帧信息对应的运动矢量候选列表中选择一个候选运动矢量作为当前块的第一目标运动矢量,从第二参考帧信息对应的运动矢量候选列表中选择一个候选运动矢量作为当前块的第二目标运动矢量。第二目标运动矢量与第一目标运动矢量可以不同。
针对编码端来说,可以基于率失真原则,从第一参考帧信息对应的运动矢量候选列表中选择一个候选运动矢量作为当前块的第一目标运动矢量,从第二参考帧信息对应的运动矢量候选列表中选择一个候选运动矢量作为当前块的第二目标运动矢量,对此不做限制。
在一种可能的实施方式中,编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息a和指示信息b,指示信息a用于指示当前块的第一目标运动矢量的索引值1,索引值1表示第一目标运动矢量是第一参考帧信息对应的运动矢量候选列表中的第几个候选运动矢量。指示信息b用于指示当前块的第二目标运动矢量的索引值2,索引值2表示第二目标运动矢量是第二参考帧信息对应的运动矢量候选列表中的第几个候选运动矢量。
解码端在接收到编码比特流后,从编码比特流中解析出指示信息a和指示信息b。基于指示信息a,解码端从第一参考帧信息对应的运动矢量候选列表中选择索引值1对应的候选运动矢量,该候选运动矢量作为当前块的第一目标运动矢量。基于指示信息b,解码端从第二参考帧信息对应的运动矢量候选列表中选择索引值2对应的候选运动矢量,该候选运动矢量作为当前块的第二目标运动矢量。
方式二、从第一参考帧信息对应的运动矢量候选列表中选择一个候选运动矢量作为当前块的第一原始运动矢量,并从第二参考帧信息对应的运动矢量候选列表中选择一个候选运动矢量作为当前块的第二原始运动矢量,示例性的,该第一原始运动矢量与该第二原始运动矢量可以不同,或者,该第一原始运动矢量与该第二原始运动矢量也可以相同。然后,根据该第一原始运动矢量确定当前块的第一目标运动矢量,并根据该第二原始运动矢量确定当前块的第二目标运动矢量。示例性的,该第一目标运动矢量与该第二目标运动矢量可以不同。
关于如何根据原始运动矢量确定目标运动矢量,本实施例中给出一种单向运动矢量叠加运动矢量差的方案,比如说,可以获取与第一原始运动矢量对应的第一运动矢量差(即MVD),并根据第一运动矢量差和第一原始运动矢量确定第一目标运动矢量(即第一运动矢量差与第一原始运动矢量的和作为第一目标运动矢量)。或者,可以将第一原始运动矢量确定为第一目标运动矢量。以及,可以获取与第二原始运动矢量对应的第二运动矢量差,并根据第二运动矢量差和第二原始运动矢量确定第二目标运动矢量(即第二运动矢量差与第二原始运动矢量的和作为第二目标运动矢量)。或者,将第二原始运动矢量确定为第二目标运动矢量。
示例性的,可以获取第一运动矢量差的方向信息和幅值信息,并根据第一运动矢量差的方向信息和幅值信息确定第一运动矢量差。以及,可以获取第二运动矢量差的方向信息和幅值信息,并根据第二运动矢量差的方向信息和幅值信息确定所述第二运动矢量差。
示例性的,针对解码端来说,可以采用如下方式获取第一运动矢量差的方向信息:解码端从当前块的编码比特流中解析出第一运动矢量差的方向信息;或者,解码端根据当前块的权重预测角度推导第一运动矢量差的方向信息。针对解码端来说,可以采用如下方式获取第二运动矢量差的方向信息:解码端从当前块的编码比特流中解析出第二运动矢量差的方向信息;或者,解码端根据当前块的权重预测角度推导第二运动矢量差的方向信息。
示例性的,针对解码端来说,可以采用如下方式获取第一运动矢量差的幅值信息:从当前块的编码比特流中解析出第一运动矢量差的幅值信息。可以采用如下方式获取第二运动矢量差的幅值信息:从当前块的编码比特流中解析出第二运动矢量差的幅值信息。
在一种可能的实施方式中,编码端和解码端可以约定运动矢量差的方向信息和幅值信息,若方向信息表示方向为向右,幅值信息表示幅值为A,则运动矢量差为(A,0);若方向信息表示方向为向下,幅值信息表示幅值为A,则运动矢量差为(0,-A);若方向信息表示方向为向左,幅值信息表示幅值为A,则运动矢量差为(-A,0);若方向信息表示方向为向上,幅值信息表示幅值为A,则运动矢量差为(0,A);若方向信息表示方向为向右上,幅值信息表示幅值为A,则运动矢量差为(A,A);若方向信息表示方向为向左上,幅值信息表示幅值为A,则运动矢量差为(-A,A);若方向信息表示方向为向左下,幅值信息表示幅值为A,则运动矢量差为(-A,-A);若方向信息表示方向为向右下,幅值信息表示幅值为A,则运动矢量差为(A,-A)。当然,上述只是几个示例,对此方向信息和幅值信息不做限制。
示例性的,关于运动矢量差的相关介绍,可以参见实施例15,在此不再赘述。
针对编码端来说,可以基于率失真代价值从第一参考帧信息对应的运动矢量候选列表中选择第一原始运动矢量,从第二参考帧信息对应的运动矢量候选列表中选择第二原始运动矢量,基于率失真代价值确定与第一原始运动矢量对应的第一运动矢量差的方向信息和幅值信息,与第二原始运动矢量对应的第二运动矢量差的方向信息和幅值信息。编码端向解码端发送编码比特流时,在编码比特流中编码第一原始运动矢量在第一参考帧信息对应的运动矢量候选列表中的索引值,第二原始运动矢量在第二参考帧信息对应的运动矢量候选列表中的索引值,第一运动矢量差的方向信息和幅值信息,第二运动矢量差的方向信息和幅值信息。
针对解码端来说,在接收到当前块的编码比特流后,基于第一原始运动矢量在第一参考帧信息对应的运动矢量候选列表中的索引值,从第一参考帧信息对应的运动矢量候选列表中选择第一原始运动矢量,基于第二原始运动矢量在第二参考帧信息对应的运动矢量候选列表中的索引值,从第二参考帧信息对应的运动矢量候选列表中选择第二原始运动矢量。
解码端还可以从编码比特流中解析出第一运动矢量差的方向信息和幅值信息,并根据该方向信息和该幅值信息确定第一运动矢量差。以及,从该编码比特流中解析出第二运动矢量差的方向信息和幅值信息,并根据该方向信息和该幅值信息确定第二运动矢量差。
示例性的,编码比特流中还可以包括第一原始运动矢量对应的第一参考帧信息,解码端可以根据第一原始运动矢量和第一原始运动矢量对应的第一参考帧信息,确定第一原始运动信息。编码比特流中还可以包括第二原始运动矢量对应的第二参考帧信息,解码端可以根据第二原始运动矢量和第二原始运动矢量对应的第二参考帧信息,确定第二原始运动信息。
然后,解码端可以根据第一运动矢量差和第一原始运动信息确定当前块的第一目标运动信息,并根据第二运动矢量差和第二原始运动信息确定当前块的第二目标运动信息。
示例性的,编码端还可以在编码比特流中编码增强角度加权预测模式的第一子模式标志和第二子模式标志,第一子模式标志指示对第一原始运动矢量叠加运动矢量差,或对第一原始运动矢量不叠加运动矢量差。第二子模式标志指示对第二原始运动矢量叠加运动矢量差,或对第二原始运动矢量不叠加运动矢量差。相关处理参见实施例15,在此不再赘述。
在上述实施例中,解码端是从当前块的编码比特流中解析出第一运动矢量差的方向信息和第二运动矢量差的方向信息,在实际应用中,还可以根据当前块的权重预测角度推导第一运动矢量差的方向信息,并根据当前块的权重预测角度推导第二运动矢量差的方向信息。
针对编码端来说,也可以根据当前块的权重预测角度推导第一运动矢量差的方向信息,并根据当前块的权重预测角度推导第二运动矢量差的方向信息。
示例性的,解码端可以从编码比特流中解析出第一运动矢量差的幅值信息和第二运动矢量差的幅值信息,在一种可能的实施方式中,编码端和解码端可以构建相同的一个运动矢量差幅值列表,编码端确定第一运动矢量差的幅值信息在该运动矢量差幅值列表中的幅值索引,且编码比特流包括第一运动矢量差的幅值索引。解码端从当前块的编码比特流中解析出第一运动矢量差的幅值索引,并从该运动矢量差幅值列表选取与该幅值索引对应的幅值信息,该幅值信息即第一运动矢量差的幅值信息。编码端确定第二运动矢量差的幅值信息在该运动矢量差幅值列表中的幅值索引,且编码比特流包括第二运动矢量差的幅值索引。解码端从当前块的编码比特流中解析出第二运动矢量差的幅值索引,并从该运动矢量差幅值列表选取与该幅值索引对应的幅值信息,该幅值信息即第二运动矢量差的幅值信息。
在另一种可能的实施方式中,编码端和解码端可以构建相同的至少两个运动矢量差幅值列表,如编码端和解码端构建相同的运动矢量差幅值列表1,并构建相同的运动矢量差幅值列表2。编码端先基于运动矢量差幅值列表的指示信息,从所有运动矢量差幅值列表中选取目标运动矢量差幅值列表;编码端确定第一运动矢量差的幅值信息在该目标运动矢量差幅值列表中的幅值索引,且编码比特流包括第一运动矢量差的幅值索引。解码端先基于运动矢量差幅值列表的指示信息,从所有运动矢量差幅值列表中选取目标运动矢量差幅值列表。从当前块的编码比特流中解析出第一运动矢量差的幅值索引,并从该目标运动矢量差幅值列表中选取与该幅值索引对应的幅值信息,该幅值信息即第一运动矢量差的幅值信息。
编码端还可以确定第二运动矢量差的幅值信息在该目标运动矢量差幅值列表中的幅值索引,且编码比特流可以包括第二运动矢量差的幅值索引。解码端可以从当前块的编码比特流中解析出第二运动矢量差的幅值索引,并从该目标运动矢量差幅值列表中选取与该幅值索引对应的幅值信息,该幅值信息即第二运动矢量差的幅值信息。
示例性的,关于运动矢量差幅值列表的相关内容,可以参见实施例16,在此不再赘述。
实施例22:在实施例4中,编码端/解码端可以基于第一参考帧信息对应的运动矢量候选列表和第二参考帧信息对应的运动矢量候选列表,获取当前块的第一目标运动矢量和第二目标运动矢量,在第一目标运动矢量指向的参考帧与第二目标运动矢量指向的参考帧为同一帧时,则第一参考帧信息与第二参考帧信息相同,即第一参考帧信息对应的运动矢量候选列表与第二参考帧信息对应的运动矢量候选列表为同一个,基于此,采用如下方式获取第一目标运动矢量和第二目标运动矢量:从运动矢量候选列表中选择一个候选运动矢量作为当前块的原始运动矢量;根据原始运动矢量确定当前块的第一目标运动矢量。根据第一目标运动矢量确定当前块的第二目标运动矢量,或,根据原始运动矢量确定当前块的第二目标运动矢量。
示例性的,获取与原始运动矢量对应的运动矢量差,根据该原始运动矢量确定当前块的第一目标运动矢量,根据第一目标运动矢量和该运动矢量差确定当前块的第二目标运动矢量。或者,获取与该原始运动矢量对应的运动矢量差,根据该原始运动矢量和该运动矢量差确定当前块的第一目标运动矢量,根据该原始运动矢量和该运动矢量差确定当前块的第二目标运动矢量。或者,获取与该原始运动矢量对应的第一运动矢量差和第二运动矢量差;根据该原始运动矢量和第一运动矢量差确定当前块的第一目标运动矢量,根据该第一目标运动矢量和第二运动矢量差确定当前块的第二目标运动矢量。或者,获取与该原始运动矢量对应的第一运动矢量差和第二运动矢量差;根据该原始运动矢量和第一运动矢量差确定当前块的第一目标运动矢量;根据该原始运动矢量和第二运动矢量差确定当前块的第二目标运动矢量。
在上述实施例中,第一目标运动矢量和第二目标运动矢量可以不同。
示例性的,关于上述实现过程,可以参见实施例18,在此不再重复赘述。
在实施例21或者实施例22中,是构建第一参考帧信息对应的运动矢量候选列表和第二参考帧信息对应的运动矢量候选列表,而不是构建运动信息候选列表,例如,采用针对参考帧列表ListX的第refIdx帧构建运动矢量候选列表,构建方式可以为帧间普通模式的运动矢量候选列表构建方式,也可以在实施例13或者实施例14的基础上,添加指向参考帧的限制,在添加指向参考帧的限制时,运动信息候选列表可以为运动矢量候选列表。示例性的,在构建运动矢量候选列表时,在判定可用性时增加对参考帧的判断,或者,在加入单向运动矢量时,可以采用进行伸缩操作(Scale)等手段。
在实施例1-实施例4中,编码端/解码端可以根据第一目标运动信息确定像素位置的第一预测值,根据第二目标运动信息确定像素位置的第二预测值,该过程可以参见帧间预测过程,对此不做限制。示例性的,在根据第一目标运动信息确定像素位置的第一预测值时,可以采用帧间加权预测模式得到像素位置的第一预测值。例如,先利用第一目标运动信息确定像素位置的初始预测值,然后对该初始预测值乘以预设因子,得到调整预测值。若调整预测值大于最大预测值,则将最大预测值作为当前块的第一预测值,若调整预测值小于最小预测值,则将最小预测值作为当前块的第一预测值,若调整预测值不小于最小预测值,且不大于最大预测值,则将调整预测值作为当前块的第一预测值。当然,上述方式只是示例,对此不做限制。同理,在根据第二目标运动信息确定像素位置的第二预测值时,也可以采用帧间加权预测模式得到像素位置的第二预测值,具体实现方式参见上述示例,在此不再重复赘述。
示例性的,实施例1-实施例3,实施例5-实施例12,实施例13-实施例20,可以单独实现,也可以组合实现。例如,实施例1和实施例2组合实现;实施例1和实施例3组合实现;实施例1和实施例5-实施例12中的至少一个实施例组合实现;实施例1和实施例13-实施例20中的至少一个实施例组合实现;实施例2和实施例5-实施例12中的至少一个实施例组合实现;实施例2和实施例13-实施例20中的至少一个实施例组合实现;实施例3和实施例5-实施例12中的至少一个实施例组合实现;实施例3和实施例13-实施例20中的至少一个实施例组合实现;当然,对实施例之间的组合方式不做限制。
示例性的,实施例4,实施例5-实施例12,实施例21-实施例22,可以单独实现,也可以组合实现。例如,实施例4和实施例5-实施例12中的至少一个实施例组合实现;实施例4和实施例21组合实现;实施例4和实施例22组合实现;实施例4和实施例21,实施例22组合实现;当然,对实施例之间的组合方式不做限制。
实施例23:基于与上述方法同样的申请构思,本申请实施例还提出一种编解码装置,所述装置应用于编码端或者解码端,参见图10A所示,为所述装置的结构图,包括:
获取模块111,用于在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;配置模块112,用于根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;确定模块113,用于针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;所述获取模块111,还用于获取运动信息候选列表,所述运动信息候选列表包括至少一个候选运动信息;基于所述运动信息候选列表获取所述当前块的第一目标运动信息和第二目标运动信息;所述确定模块113,还用于根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
示例性的,所述获取模块111获取运动信息候选列表时具体用于:
获取待加入到运动信息候选列表中的至少一个可用运动信息;基于所述至少一个可用运动信息,获取所述运动信息候选列表;其中,所述可用运动信息包括如下运动信息的至少一种:空域运动信息;时域运动信息;HMVP运动信息;预设运动信息。
示例性的,所述获取模块111基于所述至少一个可用运动信息,获取所述运动信息候选列表时具体用于:针对当前待加入到运动信息候选列表的可用运动信息,
若所述可用运动信息为单向运动信息,则将所述单向运动信息加入到运动信息候选列表;
若所述可用运动信息为双向运动信息,则将所述双向运动信息裁剪为第一单向运动信息和第二单向运动信息,将所述第一单向运动信息加入到运动信息候选列表。
或者,针对当前待加入到运动信息候选列表的可用运动信息,
若所述可用运动信息为单向运动信息,且所述单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将所述单向运动信息加入到运动信息候选列表;
若所述可用运动信息为双向运动信息,则将所述双向运动信息裁剪为第一单向运动信息和第二单向运动信息;若所述第一单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将所述第一单向运动信息加入到运动信息候选列表。
或者,针对当前待加入到运动信息候选列表的可用运动信息,
若所述可用运动信息为单向运动信息,且所述单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将所述单向运动信息加入到运动信息候选列表;
若所述可用运动信息为双向运动信息,则将所述双向运动信息裁剪为第一单向运动信息和第二单向运动信息;若第一单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将所述第一单向运动信息加入到运动信息候选列表;若第一单向运动信息与运动信息候选列表中已存在的候选运动信息重复,且第二单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将所述第二单向运动信息加入到运动信息候选列表。
示例性的,所述获取模块111基于所述运动信息候选列表获取所述当前块的第一目标运动信息和第二目标运动信息时具体用于:从所述运动信息候选列表中选择候选运动信息作为所述当前块的第一原始运动信息,并从所述运动信息候选列表中选择候选运动信息作为所述当前块的第二原始运动信息;根据所述第一原始运动信息确定所述当前块的第一目标运动信息;根据所述第二原始运动信息确定所述当前块的第二目标运动信息。
示例性的,所述第一原始运动信息包括第一原始运动矢量,所述第一目标运动信息包括第一目标运动矢量,所述获取模块111根据所述第一原始运动信息确定所述当前块的第一目标运动信息时具体用于:获取与所述第一原始运动矢量对应的第一运动矢量差;根据所述第一运动矢量差和所述第一原始运动矢量确定所述第一目标运动矢量;或者,将第一原始运动矢量确定为第一目标运动矢量;所述第二原始运动信息包括第二原始运动矢量,所述第二目标运动信息包括第二目标运动矢量,所述获取模块111根据所述第二原始运动信息确定所述当前块的第二目标运动信息时具体用于:获取与所述第二原始运动矢量对应的第二运动矢量差;根据所述第二运动矢量差和所述第二原始运动矢量确定所述第二目标运动矢量;或者,将第二原始运动矢量确定为第二目标运动矢量。
示例性的,在所述第一目标运动信息指向的参考帧与所述第二目标运动信息指向的参考帧为同一帧时,所述获取模块111基于所述运动信息候选列表获取所述当前块的第一目标运动信息和第二目标运动信息时具体用于:从所述运动信息候选列表中选择一个候选运动信息作为所述当前块的原始运动信息;根据所述原始运动信息确定所述当前块的第一目标运动信息;根据所述第一目标运动信息确定所述当前块的第二目标运动信息,或者,根据所述原始运动信息确定所述当前块的第二目标运动信息。
示例性的,所述原始运动信息包括原始运动矢量,所述第一目标运动信息包括第一目标运动矢量,所述第二目标运动信息包括第二目标运动矢量,所述获取模块111具体用于:获取与所述原始运动矢量对应的运动矢量差;根据所述原始运动矢量确定所述当前块的第一目标运动矢量;根据所述第一目标运动矢量和所述运动矢量差确定所述当前块的第二目标运动矢量;或者,获取与所述原始运动矢量对应的运动矢量差;根据所述原始运动矢量和所述运动矢量差确定所述当前块的第一目标运动矢量;根据所述原始运动矢量和所述运动矢量差确定所述当前块的第二目标运动矢量;或者,获取与所述原始运动矢量对应的第一运动矢量差和第二运动矢量差;根据所述原始运动矢量和所述第一运动矢量差确定所述当前块的第一目标运动矢量;根据所述第一目标运动矢量和所述第二运动矢量差确定所述当前块的第二目标运动矢量;或者,获取与所述原始运动矢量对应的第一运动矢量差和第二运动矢量差;根据所述原始运动矢量和所述第一运动矢量差确定所述当前块的第一目标运动矢量;根据所述原始运动矢量和所述第二运动矢量差确定所述当前块的第二目标运动矢量。
在上述实施例中,第一目标运动矢量与第二目标运动矢量可以不同。
基于与上述方法同样的申请构思,本申请实施例还提出一种编解码装置,所述装置应用于编码端或者解码端,参见图10B所示,为所述装置的结构图,包括:
获取模块121,用于在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;配置模块122,用于根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;确定模块123,用于针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;所述获取模块121,还用于获取参考帧信息,并获取与所述参考帧信息对应的运动矢量候选列表,所述运动矢量候选列表包括至少一个候选运动矢量,所述参考帧信息包括第一参考帧信息和第二参考帧信息;基于所述运动矢量候选列表获取所述当前块的第一目标运动矢量和第二目标运动矢量;所述确定模块123,还用于根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;其中,所述第一目标运动信息包括第一目标运动矢量和所述第一目标运动矢量对应的第一参考帧信息,所述第二目标运动信息包括第二目标运动矢量和所述第二目标运动矢量对应的第二参考帧信息;根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
示例性的,所述权重配置参数包括权重变换率,若所述当前块支持权重变换率切换模式,所述获取模块121采用如下方式获取所述当前块的权重变换率:获取所述当前块的权重变换率指示信息;根据所述权重变换率指示信息确定所述当前块的权重变换率:其中,若所述权重变换率指示信息为第一指示信息,则所述当前块的权重变换率为第一权重变换率;若所述权重变换率指示信息为第二指示信息,则所述当前块的权重变换率为第二权重变换率。
示例性的,所述当前块的权重变换率指示信息为所述当前块对应的权重变换率切换标识,所述第一指示信息用于指示所述当前块不需要进行权重变换率切换,所述第二指示信息用于指示所述当前块需要进行权重变换率切换。
所述权重配置参数包括权重变换率和权重变换的起始位置,所述配置模块122根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值时具体用于:
针对所述当前块外部的周边位置,根据所述周边位置的坐标值,所述权重变换的起始位置的坐标值,以及所述权重变换率,配置所述周边位置的参考权重值。
示例性的,所述运动矢量候选列表包括第一参考帧信息对应的运动矢量候选列表和第二参考帧信息对应的运动矢量候选列表,所述获取模块121基于所述运动矢量候选列表获取所述当前块的第一目标运动矢量和第二目标运动矢量时具体用于:
从所述第一参考帧信息对应的运动矢量候选列表中选择一个候选运动矢量作为所述当前块的第一原始运动矢量,并从所述第二参考帧信息对应的运动矢量候选列表中选择一个候选运动矢量作为所述当前块的第二原始运动矢量;根据所述第一原始运动矢量确定所述当前块的第一目标运动矢量;根据所述第二原始运动矢量确定所述当前块的第二目标运动矢量。
示例性的,所述获取模块121根据所述第一原始运动矢量确定所述当前块的第一目标运动矢量时具体用于:获取与所述第一原始运动矢量对应的第一运动矢量差;根据所述第一运动矢量差和所述第一原始运动矢量确定所述第一目标运动矢量;或者,将第一原始运动矢量确定为第一目标运动矢量。
示例性的,所述获取模块121根据所述第二原始运动矢量确定所述当前块的第二目标运动矢量时具体用于:获取与所述第二原始运动矢量对应的第二运动矢量差;根据所述第二运动矢量差和所述第二原始运动矢量确定所述第二目标运动矢量;或者,将第二原始运动矢量确定为第二目标运动矢量。
示例性的,在所述第一目标运动矢量指向的参考帧与所述第二目标运动矢量指向的参考帧为同一帧时,所述第一参考帧信息与所述第二参考帧信息相同,所述运动矢量候选列表为一个运动矢量候选列表,所述获取模块121基于所述运动矢量候选列表获取所述当前块的第一目标运动矢量和第二目标运动矢量时具体用于:从所述运动矢量候选列表中选择一个候选运动矢量作为所述当前块的原始运动矢量;根据所述原始运动矢量确定所述当前块的第一目标运动矢量;根据所述第一目标运动矢量确定所述当前块的第二目标运动矢量,或者,根据所述原始运动矢量确定所述当前块的第二目标运动矢量。
示例性的,所述获取模块121具体用于:
获取与所述原始运动矢量对应的运动矢量差;根据所述原始运动矢量确定所述当前块的第一目标运动矢量;根据所述第一目标运动矢量和所述运动矢量差确定所述当前块的第二目标运动矢量;或者,获取与所述原始运动矢量对应的运动矢量差;根据所述原始运动矢量和所述运动矢量差确定所述当前块的第一目标运动矢量;根据所述原始运动矢量和所述运动矢量差确定所述当前块的第二目标运动矢量。或者,获取与所述原始运动矢量对应的第一运动矢量差和第二运动矢量差;根据所述原始运动矢量和所述第一运动矢量差确定所述当前块的第一目标运动矢量;根据所述第一目标运动矢量和所述第二运动矢量差确定所述当前块的第二目标运动矢量;或者,获取与所述原始运动矢量对应的第一运动矢量差和第二运动矢量差;根据所述原始运动矢量和所述第一运动矢量差确定所述当前块的第一目标运动矢量;根据所述原始运动矢量和所述第二运动矢量差确定所述当前块的第二目标运动矢量。
在上述实施例中,第一目标运动矢量和第二目标运动矢量可以不同。
基于与上述方法同样的申请构思,本申请实施例提供的解码端设备(也可以称为视频解码器),从硬件层面而言,其硬件架构示意图具体可以参见图10C所示。包括:处理器131和机器可读存储介质132,其中:所述机器可读存储介质132存储有能够被所述处理器131执行的机器可执行指令;所述处理器131用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,所述处理器131用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
获取运动信息候选列表,所述运动信息候选列表包括至少一个候选运动信息;基于所述运动信息候选列表获取所述当前块的第一目标运动信息和第二目标运动信息;
根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。或者,在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
获取参考帧信息,并获取与所述参考帧信息对应的运动矢量候选列表,所述运动矢量候选列表包括至少一个候选运动矢量,所述参考帧信息包括第一参考帧信息和第二参考帧信息;基于所述运动矢量候选列表获取所述当前块的第一目标运动矢量和第二目标运动矢量;
根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;其中,所述第一目标运动信息包括第一目标运动矢量和所述第一目标运动矢量对应的第一参考帧信息,所述第二目标运动信息包括第二目标运动矢量和所述第二目标运动矢量对应的第二参考帧信息;
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
基于与上述方法同样的申请构思,本申请实施例提供的编码端设备(也可以称为视频编码器),从硬件层面而言,其硬件架构示意图具体可以参见图10D所示。包括:处理器141和机器可读存储介质142,其中:所述机器可读存储介质142存储有能够被所述处理器141执行的机器可执行指令;所述处理器141用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,所述处理器141用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
获取运动信息候选列表,所述运动信息候选列表包括至少一个候选运动信息;基于所述运动信息候选列表获取所述当前块的第一目标运动信息和第二目标运动信息;
根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。或者,在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
获取参考帧信息,并获取与所述参考帧信息对应的运动矢量候选列表,所述运动矢量候选列表包括至少一个候选运动矢量,所述参考帧信息包括第一参考帧信息和第二参考帧信息;基于所述运动矢量候选列表获取所述当前块的第一目标运动矢量和第二目标运动矢量;
根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;其中,所述第一目标运动信息包括第一目标运动矢量和所述第一目标运动矢量对应的第一参考帧信息,所述第二目标运动信息包括第二目标运动矢量和所述第二目标运动矢量对应的第二参考帧信息;
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的方法,如上述各实施例中的编解码方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (22)

1.一种解码方法,其特征在于,所述方法包括:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
获取运动信息候选列表,所述运动信息候选列表包括至少一个候选运动信息;基于所述运动信息候选列表获取所述当前块的第一目标运动信息和第二目标运动信息;
根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值;
其中,所述获取运动信息候选列表,包括:获取待加入到运动信息候选列表中的至少一个可用运动信息;基于所述至少一个可用运动信息,获取所述运动信息候选列表;所述可用运动信息包括如下运动信息的至少一种:空域运动信息;时域运动信息;预设运动信息;
其中,所述基于所述至少一个可用运动信息,获取所述运动信息候选列表,包括:针对当前待加入到运动信息候选列表的可用运动信息,若所述可用运动信息为单向运动信息,且所述单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将所述单向运动信息加入到运动信息候选列表;若所述可用运动信息为双向运动信息,则将所述双向运动信息裁剪为第一单向运动信息和第二单向运动信息,若所述第一单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将所述第一单向运动信息加入到运动信息候选列表;
其中,针对单向运动信息与运动信息候选列表中已存在的候选运动信息的查重操作,包括:若单向运动信息指向的参考帧的显示顺序POC与候选运动信息指向的参考帧的POC相同,且该单向运动信息的运动矢量与该候选运动信息的运动矢量相同,则确定该单向运动信息与该候选运动信息重复;否则,确定该单向运动信息与该候选运动信息不重复。
2.根据权利要求1所述的方法,其特征在于,
所述获取待加入到运动信息候选列表中的至少一个可用运动信息,包括:
针对所述当前块的空域相邻块,若所述空域相邻块存在,且所述空域相邻块采用帧间预测模式,则将所述空域相邻块的运动信息确定为可用运动信息。
3.根据权利要求1所述的方法,其特征在于,
所述获取待加入到运动信息候选列表中的至少一个可用运动信息,包括:
基于所述当前块的预设位置,从所述当前块的参考帧中选取与所述预设位置对应的时域相邻块,将所述时域相邻块的运动信息确定为可用运动信息。
4.根据权利要求1所述的方法,其特征在于,
所述获取待加入到运动信息候选列表中的至少一个可用运动信息,包括:
将预设运动信息确定为可用运动信息,所述预设运动信息包括:
基于运动信息候选列表中已存在的候选运动信息所导出的缺省运动信息。
5.根据权利要求1所述的方法,其特征在于,
所述基于所述至少一个可用运动信息,获取所述运动信息候选列表,包括:
针对当前待加入到运动信息候选列表的可用运动信息,若所述可用运动信息为预设运动信息,则将所述可用运动信息加入到运动信息候选列表。
6.根据权利要求1所述的方法,其特征在于,
所述第一单向运动信息是指向第一参考帧列表中参考帧的单向运动信息;
所述第二单向运动信息是指向第二参考帧列表中参考帧的单向运动信息;
其中,所述第一参考帧列表为List0,所述第二参考帧列表为List1;或者,
所述第一参考帧列表为List1,所述第二参考帧列表为List0。
7.根据权利要求1所述的方法,其特征在于,所述基于所述运动信息候选列表获取所述当前块的第一目标运动信息和第二目标运动信息,包括:
从所述运动信息候选列表中选择候选运动信息作为所述当前块的第一原始运动信息,并从所述运动信息候选列表中选择候选运动信息作为所述当前块的第二原始运动信息;
根据所述第一原始运动信息确定所述当前块的第一目标运动信息;
根据所述第二原始运动信息确定所述当前块的第二目标运动信息。
8.根据权利要求7所述的方法,其特征在于,
所述第一原始运动信息包括第一原始运动矢量,所述第一目标运动信息包括第一目标运动矢量,所述根据所述第一原始运动信息确定所述当前块的第一目标运动信息,包括:
获取与所述第一原始运动矢量对应的第一运动矢量差;根据所述第一运动矢量差和所述第一原始运动矢量确定所述第一目标运动矢量;或者,
将所述第一原始运动矢量确定为所述第一目标运动矢量;
所述第二原始运动信息包括第二原始运动矢量,所述第二目标运动信息包括第二目标运动矢量,所述根据所述第二原始运动信息确定所述当前块的第二目标运动信息,包括:
获取与所述第二原始运动矢量对应的第二运动矢量差;根据所述第二运动矢量差和所述第二原始运动矢量确定所述第二目标运动矢量;或者,
将所述第二原始运动矢量确定为所述第二目标运动矢量;
其中,所述获取与所述第一原始运动矢量对应的第一运动矢量差,包括:获取所述第一运动矢量差的方向信息和幅值信息;根据所述第一运动矢量差的方向信息和幅值信息确定所述第一运动矢量差;
其中,所述获取与所述第二原始运动矢量对应的第二运动矢量差,包括:获取所述第二运动矢量差的方向信息和幅值信息;根据所述第二运动矢量差的方向信息和幅值信息确定所述第二运动矢量差。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述权重配置参数包括权重变换率和权重变换的起始位置;所述权重变换的起始位置由如下参数的至少一个确定:所述当前块的权重预测角度,所述当前块的权重预测位置,所述当前块的尺寸;
其中,所述权重预测角度为水平角度;或者,所述权重预测角度为垂直角度;或者,所述权重预测角度的斜率的绝对值为2的n次方,n为整数;
其中,若所述当前块支持权重变换率切换模式,则采用如下方式获取所述当前块的权重变换率:获取所述当前块的权重变换率指示信息;根据所述权重变换率指示信息确定所述权重变换率:若所述权重变换率指示信息为第一指示信息,则所述权重变换率为第一权重变换率;若所述权重变换率指示信息为第二指示信息,则所述权重变换率为第二权重变换率;
其中,所述当前块的权重变换率指示信息为所述当前块对应的权重变换率切换标识,所述第一指示信息用于指示所述当前块不需要进行权重变换率切换,所述第二指示信息用于指示所述当前块需要进行权重变换率切换。
10.根据权利要求9所述的方法,其特征在于,所述当前块外部的周边位置的数量是基于所述当前块的尺寸和/或所述当前块的权重预测角度确定;所述当前块外部的周边位置包括:所述当前块外部上侧一行的周边位置,或者,所述当前块外部左侧一列的周边位置;
所述当前块外部的周边位置的参考权重值单调递增或者单调递减;
所述当前块外部的周边位置的参考权重值包括目标区域的参考权重值,目标区域的第一邻近区域的参考权重值,目标区域的第二邻近区域的参考权重值;其中:
所述第一邻近区域的参考权重值均为第二参考权重值,所述第二邻近区域的参考权重值均为第三参考权重值,且所述第二参考权重值与所述第三参考权重值不同;
所述目标区域包括一个参考权重值或者至少两个参考权重值;若所述目标区域包括至少两个参考权重值,则所述目标区域的至少两个参考权重值单调递增或单调递减;
其中,所述当前块外部的周边位置包括整像素位置,或者,亚像素位置,或者,整像素位置和亚像素位置;所述根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,包括:若所述周边匹配位置是整像素位置,且所述整像素位置已配置参考权重值,则根据所述整像素位置的参考权重值确定所述像素位置的目标权重值;或者,
若所述周边匹配位置是亚像素位置,且所述亚像素位置已配置参考权重值,则根据所述亚像素位置的参考权重值确定所述像素位置的目标权重值。
11.一种解码装置,其特征在于,应用于解码端,所述解码装置包括:
获取模块,用于在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;
配置模块,用于根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
确定模块,用于针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
所述获取模块,还用于获取运动信息候选列表,所述运动信息候选列表包括至少一个候选运动信息;基于所述运动信息候选列表获取所述当前块的第一目标运动信息和第二目标运动信息;
所述确定模块,还用于根据所述当前块的第一目标运动信息确定所述像素位置的第一预测值,根据所述当前块的第二目标运动信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值;
其中,所述获取模块获取运动信息候选列表时具体用于:获取待加入到运动信息候选列表中的至少一个可用运动信息;基于所述至少一个可用运动信息,获取所述运动信息候选列表;所述可用运动信息包括如下运动信息的至少一种:空域运动信息;时域运动信息;预设运动信息;
其中,所述获取模块基于所述至少一个可用运动信息,获取所述运动信息候选列表时具体用于:针对当前待加入到运动信息候选列表的可用运动信息,若所述可用运动信息为单向运动信息,且所述单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将所述单向运动信息加入到运动信息候选列表;若所述可用运动信息为双向运动信息,则将所述双向运动信息裁剪为第一单向运动信息和第二单向运动信息,若所述第一单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则将所述第一单向运动信息加入到运动信息候选列表;其中,针对单向运动信息与运动信息候选列表中已存在的候选运动信息的查重操作,若单向运动信息指向的参考帧的显示顺序POC与候选运动信息指向的参考帧的POC相同,且该单向运动信息的运动矢量与该候选运动信息的运动矢量相同,则确定该单向运动信息与该候选运动信息重复;否则,确定该单向运动信息与该候选运动信息不重复。
12.根据权利要求11所述的装置,其特征在于,
所述获取模块获取待加入到运动信息候选列表中的至少一个可用运动信息时具体用于:针对所述当前块的空域相邻块,若所述空域相邻块存在,且所述空域相邻块采用帧间预测模式,则将所述空域相邻块的运动信息确定为可用运动信息。
13.根据权利要求11所述的装置,其特征在于,
所述获取模块获取待加入到运动信息候选列表中的至少一个可用运动信息时具体用于:基于所述当前块的预设位置,从所述当前块的参考帧中选取与所述预设位置对应的时域相邻块,将所述时域相邻块的运动信息确定为可用运动信息。
14.根据权利要求11所述的装置,其特征在于,
所述获取模块获取待加入到运动信息候选列表中的至少一个可用运动信息时具体用于:将预设运动信息确定为可用运动信息,所述预设运动信息包括:基于运动信息候选列表中已存在的候选运动信息所导出的缺省运动信息。
15.根据权利要求11所述的装置,其特征在于,
所述获取模块基于所述至少一个可用运动信息,获取所述运动信息候选列表时具体用于:针对当前待加入到运动信息候选列表的可用运动信息,若所述可用运动信息为预设运动信息,则将所述可用运动信息加入到运动信息候选列表。
16.根据权利要求11所述的装置,其特征在于,
所述第一单向运动信息是指向第一参考帧列表中参考帧的单向运动信息;
所述第二单向运动信息是指向第二参考帧列表中参考帧的单向运动信息;
其中,所述第一参考帧列表为List0,所述第二参考帧列表为List1;或者,
所述第一参考帧列表为List1,所述第二参考帧列表为List0。
17.根据权利要求11所述的装置,其特征在于,
所述获取模块基于所述运动信息候选列表获取所述当前块的第一目标运动信息和第二目标运动信息时具体用于:从所述运动信息候选列表中选择候选运动信息作为所述当前块的第一原始运动信息,并从所述运动信息候选列表中选择候选运动信息作为所述当前块的第二原始运动信息;根据所述第一原始运动信息确定所述当前块的第一目标运动信息;根据所述第二原始运动信息确定所述当前块的第二目标运动信息。
18.根据权利要求17所述的装置,其特征在于,
所述第一原始运动信息包括第一原始运动矢量,所述第一目标运动信息包括第一目标运动矢量,所述获取模块根据所述第一原始运动信息确定所述当前块的第一目标运动信息时具体用于:获取与所述第一原始运动矢量对应的第一运动矢量差;根据所述第一运动矢量差和所述第一原始运动矢量确定所述第一目标运动矢量;或者,
将所述第一原始运动矢量确定为所述第一目标运动矢量;
所述第二原始运动信息包括第二原始运动矢量,所述第二目标运动信息包括第二目标运动矢量,所述获取模块根据所述第二原始运动信息确定所述当前块的第二目标运动信息时具体用于:获取与所述第二原始运动矢量对应的第二运动矢量差;根据所述第二运动矢量差和所述第二原始运动矢量确定所述第二目标运动矢量;或者,
将所述第二原始运动矢量确定为所述第二目标运动矢量;
其中,所述获取模块获取与所述第一原始运动矢量对应的第一运动矢量差时具体用于:获取所述第一运动矢量差的方向信息和幅值信息;根据所述第一运动矢量差的方向信息和幅值信息确定所述第一运动矢量差;其中,所述获取模块获取与所述第二原始运动矢量对应的第二运动矢量差时具体用于:获取所述第二运动矢量差的方向信息和幅值信息;根据所述第二运动矢量差的方向信息和幅值信息确定所述第二运动矢量差。
19.根据权利要求11-18任一项所述的装置,其特征在于,所述权重配置参数包括权重变换率和权重变换的起始位置;所述权重变换的起始位置由如下参数的至少一个确定:所述当前块的权重预测角度,所述当前块的权重预测位置,所述当前块的尺寸;
其中,所述权重预测角度为水平角度;或者,所述权重预测角度为垂直角度;或者,所述权重预测角度的斜率的绝对值为2的n次方,n为整数;
其中,若所述当前块支持权重变换率切换模式,则采用如下方式获取所述当前块的权重变换率:获取所述当前块的权重变换率指示信息;根据所述权重变换率指示信息确定所述权重变换率:若所述权重变换率指示信息为第一指示信息,则所述权重变换率为第一权重变换率;若所述权重变换率指示信息为第二指示信息,则所述权重变换率为第二权重变换率;
其中,所述当前块的权重变换率指示信息为所述当前块对应的权重变换率切换标识,所述第一指示信息用于指示所述当前块不需要进行权重变换率切换,所述第二指示信息用于指示所述当前块需要进行权重变换率切换。
20.根据权利要求19所述的装置,其特征在于,所述当前块外部的周边位置的数量是基于所述当前块的尺寸和/或所述当前块的权重预测角度确定;所述当前块外部的周边位置包括:所述当前块外部上侧一行的周边位置,或者,所述当前块外部左侧一列的周边位置;
所述当前块外部的周边位置的参考权重值单调递增或者单调递减;
所述当前块外部的周边位置的参考权重值包括目标区域的参考权重值,目标区域的第一邻近区域的参考权重值,目标区域的第二邻近区域的参考权重值;其中:
所述第一邻近区域的参考权重值均为第二参考权重值,所述第二邻近区域的参考权重值均为第三参考权重值,且所述第二参考权重值与所述第三参考权重值不同;
所述目标区域包括一个参考权重值或者至少两个参考权重值;若所述目标区域包括至少两个参考权重值,则所述目标区域的至少两个参考权重值单调递增或单调递减;
其中,所述当前块外部的周边位置包括整像素位置,或者,亚像素位置,或者,整像素位置和亚像素位置;所述确定模块根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值时具体用于:若所述周边匹配位置是整像素位置,且所述整像素位置已配置参考权重值,则根据所述整像素位置的参考权重值确定所述像素位置的目标权重值;或者,若所述周边匹配位置是亚像素位置,且所述亚像素位置已配置参考权重值,则根据所述亚像素位置的参考权重值确定所述像素位置的目标权重值。
21.一种解码设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;其中,所述处理器用于执行所述机器可执行指令,以实现权利要求1-10中任一项所述的方法。
22.一种机器可读存储介质,其特征在于,
所述机器可读存储介质存储有能够被处理器执行的机器可执行指令;其中,所述处理器用于执行所述机器可执行指令,以实现权利要求1-10中任一项所述的方法。
CN202111155088.0A 2020-06-30 2020-06-30 一种编解码方法、装置及其设备 Active CN113709488B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111155088.0A CN113709488B (zh) 2020-06-30 2020-06-30 一种编解码方法、装置及其设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202111155088.0A CN113709488B (zh) 2020-06-30 2020-06-30 一种编解码方法、装置及其设备
CN202010622752.7A CN113873249B (zh) 2020-06-30 2020-06-30 一种编解码方法、装置及其设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202010622752.7A Division CN113873249B (zh) 2020-06-30 2020-06-30 一种编解码方法、装置及其设备

Publications (2)

Publication Number Publication Date
CN113709488A CN113709488A (zh) 2021-11-26
CN113709488B true CN113709488B (zh) 2023-02-28

Family

ID=78668983

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010622752.7A Active CN113873249B (zh) 2020-06-30 2020-06-30 一种编解码方法、装置及其设备
CN202111155088.0A Active CN113709488B (zh) 2020-06-30 2020-06-30 一种编解码方法、装置及其设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202010622752.7A Active CN113873249B (zh) 2020-06-30 2020-06-30 一种编解码方法、装置及其设备

Country Status (9)

Country Link
US (1) US20230344985A1 (zh)
EP (1) EP4152750A4 (zh)
JP (1) JP2023531010A (zh)
KR (1) KR20230006017A (zh)
CN (2) CN113873249B (zh)
AU (1) AU2021298606C1 (zh)
TW (1) TWI790662B (zh)
WO (1) WO2022001837A1 (zh)
ZA (1) ZA202213605B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113873249B (zh) * 2020-06-30 2023-02-28 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN114598889B (zh) * 2020-12-03 2023-03-28 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN115002486A (zh) * 2022-05-26 2022-09-02 百果园技术(新加坡)有限公司 编码单元预测块的权重确定方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170347102A1 (en) * 2016-05-25 2017-11-30 Arris Enterprises Llc Weighted angular prediction for intra coding
CN110225346A (zh) * 2018-12-28 2019-09-10 杭州海康威视数字技术股份有限公司 一种编解码方法及其设备
CN110324637A (zh) * 2018-03-29 2019-10-11 华为技术有限公司 一种双向帧间预测方法及装置
CN110933426A (zh) * 2018-09-20 2020-03-27 杭州海康威视数字技术股份有限公司 一种解码、编码方法及其设备
CN113873249A (zh) * 2020-06-30 2021-12-31 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008153856A1 (en) * 2007-06-08 2008-12-18 Thomson Licensing Methods and apparatus for in-loop de-artifacting filtering based on multi-lattice sparsity-based filtering
CN103533376B (zh) * 2012-07-02 2017-04-12 华为技术有限公司 帧间预测编码运动信息的处理方法、装置和编解码系统
CN107113425A (zh) * 2014-11-06 2017-08-29 三星电子株式会社 视频编码方法和设备以及视频解码方法和设备
US10542264B2 (en) * 2017-04-04 2020-01-21 Arris Enterprises Llc Memory reduction implementation for weighted angular prediction
CN110800302A (zh) * 2017-06-07 2020-02-14 联发科技股份有限公司 用于视频编解码的帧内-帧间预测的方法及装置
BR112021002857A8 (pt) * 2018-08-17 2023-02-07 Mediatek Inc Métodos e aparelhos de processamento de vídeo com predição bidirecional em sistemas de codificação de vídeo
EP3644612A1 (en) * 2018-10-23 2020-04-29 InterDigital VC Holdings, Inc. Method and device for picture encoding and decoding
CN111385581B (zh) * 2018-12-28 2022-04-26 杭州海康威视数字技术股份有限公司 一种编解码方法及其设备
CN113810687B (zh) * 2019-09-23 2022-12-23 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN112584142B (zh) * 2019-09-30 2022-09-30 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN113452997B (zh) * 2020-03-25 2022-07-29 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
US20230267573A1 (en) * 2022-02-22 2023-08-24 V-Silicon Semiconductor (Hefei) Co.,Ltd Mosquito noise filtering

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170347102A1 (en) * 2016-05-25 2017-11-30 Arris Enterprises Llc Weighted angular prediction for intra coding
CN110324637A (zh) * 2018-03-29 2019-10-11 华为技术有限公司 一种双向帧间预测方法及装置
CN110933426A (zh) * 2018-09-20 2020-03-27 杭州海康威视数字技术股份有限公司 一种解码、编码方法及其设备
CN110225346A (zh) * 2018-12-28 2019-09-10 杭州海康威视数字技术股份有限公司 一种编解码方法及其设备
CN113873249A (zh) * 2020-06-30 2021-12-31 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备

Also Published As

Publication number Publication date
KR20230006017A (ko) 2023-01-10
WO2022001837A1 (zh) 2022-01-06
CN113709488A (zh) 2021-11-26
AU2021298606C1 (en) 2024-05-09
TWI790662B (zh) 2023-01-21
EP4152750A1 (en) 2023-03-22
CN113873249A (zh) 2021-12-31
AU2021298606A1 (en) 2023-02-02
US20230344985A1 (en) 2023-10-26
CN113873249B (zh) 2023-02-28
JP2023531010A (ja) 2023-07-20
ZA202213605B (en) 2024-04-24
EP4152750A4 (en) 2023-10-18
AU2021298606B2 (en) 2024-02-01
TW202205852A (zh) 2022-02-01

Similar Documents

Publication Publication Date Title
CN110463201B (zh) 使用参考块的预测方法和装置
US20210044832A1 (en) Method for deriving a temporal predictive motion vector, and apparatus using the method
CN111567045A (zh) 使用帧间预测信息的方法和装置
CN116320498A (zh) 用于滤波的方法和装置
CN115002458A (zh) 图像编码和解码方法和图像解码设备
CN113709488B (zh) 一种编解码方法、装置及其设备
CN113794881B (zh) 一种编解码方法、装置及其设备
US20230421804A1 (en) Method and device using inter prediction information
CN113709460B (zh) 一种编解码方法、装置及其设备
CN113766222B (zh) 一种编解码方法、装置及其设备
CN113709499B (zh) 一种编解码方法、装置及其设备
CN114598889B (zh) 一种编解码方法、装置及其设备
RU2809701C1 (ru) Способ, оборудование и устройство для кодирования и декодирования
US20220295059A1 (en) Method, apparatus, and recording medium for encoding/decoding image by using partitioning

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40064022

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant