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

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

Info

Publication number
CN112804534B
CN112804534B CN201911115040.XA CN201911115040A CN112804534B CN 112804534 B CN112804534 B CN 112804534B CN 201911115040 A CN201911115040 A CN 201911115040A CN 112804534 B CN112804534 B CN 112804534B
Authority
CN
China
Prior art keywords
block
value
current block
prediction
motion vector
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
CN201911115040.XA
Other languages
English (en)
Other versions
CN112804534A (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
Priority to CN201911115040.XA priority Critical patent/CN112804534B/zh
Application filed by Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN202010988727.0A priority patent/CN112135145B/zh
Priority to CN202010988777.9A priority patent/CN112135146B/zh
Priority to US17/766,217 priority patent/US20240073447A1/en
Priority to KR1020227011043A priority patent/KR20220050228A/ko
Priority to JP2022520622A priority patent/JP7419511B2/ja
Priority to PCT/CN2020/124311 priority patent/WO2021093589A1/zh
Publication of CN112804534A publication Critical patent/CN112804534A/zh
Application granted granted Critical
Publication of CN112804534B publication Critical patent/CN112804534B/zh
Priority to JP2024001379A priority patent/JP2024045191A/ja
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/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/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/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/186Methods 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 a colour or a chrominance component
    • 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

Landscapes

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

Abstract

本申请提供一种编解码方法、装置及其设备,包括:若如下条件满足,确定对当前块启动双向预测值补偿模式:控制信息为允许当前块使用双向预测值补偿模式;当前块采用平移运动模型;当前块的预测模式不是子块模式,不是SMVD模式,不是CIIP模式;当前块的预测值通过来自两个参考帧的参考块的加权获得,两个参考帧的显示顺序分别位于当前帧的一前一后,两个参考帧与当前帧的距离相同;两个参考帧的加权权重相同;两个参考帧均是短期参考帧;当前块的宽度,高度和面积均在限定范围内;两个参考帧的尺寸与当前帧的尺寸均相同;当前块进行亮度分量预测值补偿;若确定对当前块启动双向预测值补偿模式,则对当前块进行运动补偿。通过本申请提高编码性能。

Description

一种编解码方法、装置及其设备
技术领域
本申请涉及编解码技术领域,尤其是涉及一种编解码方法、装置及其设备。
背景技术
为了达到节约空间的目的,视频图像都是经过编码后才传输的,完整的视频编码方法可以包括预测、变换、量化、熵编码、滤波等过程。预测编码可以包括帧内编码和帧间编码,帧间编码是利用视频时间域的相关性,使用邻近已编码图像的像素预测当前图像的像素,以达到有效去除视频时域冗余的目的。在帧间编码中,可以使用运动矢量(MotionVector,MV)表示当前帧的当前块与参考帧的参考块之间的相对位移。例如,当前帧的视频图像A与参考帧的视频图像B存在很强的时域相关性,在需要传输视频图像A的图像块A1(当前块)时,则在视频图像B中进行运动搜索,找到与图像块A1最匹配的图像块B1(即参考块),并确定图像块A1与图像块B1之间的相对位移,该相对位移也就是图像块A1的运动矢量。
在传统方式中,在当前块是单向块时,获得当前块的单向运动信息后,可以根据该单向运动信息进行编码/解码,从而提高编码性能。但是,在当前块是双向块时,获得当前块的双向运动信息后,可以根据该双向运动信息获取来自两个不同方向的预测图像,而来自两个不同方向的预测图像往往存在镜像对称的关系,当前编码框架中未充分利用这一特性来进一步的去除冗余。也就是说,针对双向块的应用场景,目前存在编码性能比较差等问题。
发明内容
本申请提供了一种编解码方法、装置及其设备,可以提高编码性能。
本申请提供一种编解码方法,所述方法包括:
若如下条件均满足,则确定对当前块启动双向预测值补偿模式:
控制信息为允许当前块使用双向预测值补偿模式;当前块采用平移运动模型;当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;当前块的两个参考帧的加权权重相同;当前块的两个参考帧均是短期参考帧;当前块的宽度,高度和面积均在限定范围内;当前块的两个参考帧的尺寸与当前帧的尺寸均相同;当前块进行亮度分量预测值补偿;
若确定对当前块启动双向预测值补偿模式,则对所述当前块进行基于双向预测值补偿模式的运动补偿。
本申请提供一种编解码方法,所述方法包括:
若如下条件均满足,则确定对当前块启动双向预测值补偿模式:
控制信息为允许当前块使用双向预测值补偿模式;当前块采用平移运动模型;当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;当前块的两个参考帧的加权权重相同;当前块的两个参考帧均是短期参考帧;当前块的宽度,高度和面积均在限定范围内;当前块的两个参考帧的尺寸与当前帧的尺寸均相同;
若确定对当前块启动双向预测值补偿模式,则对所述当前块进行基于双向预测值补偿模式的运动补偿。
本申请提供一种编解码装置,所述装置包括:
确定模块,用于若如下条件均满足,则确定对当前块启动双向预测值补偿模式:
控制信息为允许当前块使用双向预测值补偿模式;当前块采用平移运动模型;当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;当前块的两个参考帧的加权权重相同;当前块的两个参考帧均是短期参考帧;当前块的宽度,高度和面积均在限定范围内;当前块的两个参考帧的尺寸与当前帧的尺寸均相同;当前块进行亮度分量预测值补偿;
运动补偿模块,用于若确定对当前块启动双向预测值补偿模式,则对所述当前块进行基于双向预测值补偿模式的运动补偿。
本申请提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
若如下条件均满足,则确定对当前块启动双向预测值补偿模式:
控制信息为允许当前块使用双向预测值补偿模式;当前块采用平移运动模型;当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;当前块的两个参考帧的加权权重相同;当前块的两个参考帧均是短期参考帧;当前块的宽度,高度和面积均在限定范围内;当前块的两个参考帧的尺寸与当前帧的尺寸均相同;当前块进行亮度分量预测值补偿;
若确定对当前块启动双向预测值补偿模式,则对所述当前块进行基于双向预测值补偿模式的运动补偿。
本申请提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
若如下条件均满足,则确定对当前块启动双向预测值补偿模式:
控制信息为允许当前块使用双向预测值补偿模式;当前块采用平移运动模型;当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;当前块的两个参考帧的加权权重相同;当前块的两个参考帧均是短期参考帧;当前块的宽度,高度和面积均在限定范围内;当前块的两个参考帧的尺寸与当前帧的尺寸均相同;当前块进行亮度分量预测值补偿;
若确定对当前块启动双向预测值补偿模式,则对所述当前块进行基于双向预测值补偿模式的运动补偿。
本申请提供一种摄像机,所述摄像机包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
若如下条件均满足,则确定对当前块启动双向预测值补偿模式:
控制信息为允许当前块使用双向预测值补偿模式;当前块采用平移运动模型;当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;当前块的两个参考帧的加权权重相同;当前块的两个参考帧均是短期参考帧;当前块的宽度,高度和面积均在限定范围内;当前块的两个参考帧的尺寸与当前帧的尺寸均相同;当前块进行亮度分量预测值补偿;
若确定对当前块启动双向预测值补偿模式,则对所述当前块进行基于双向预测值补偿模式的运动补偿。
由以上技术方案可见,本申请实施例中,若确定对当前块启动双向预测值补偿模式,则能够对当前块进行基于双向预测值补偿模式的运动补偿,从而解决预测质量不高,预测错误等问题,并能够提高硬件实现友好性,带来编码性能的提高,提高编码性能和编码效率。
附图说明
为了更加清楚地说明本申请实施例的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
图1A是本申请一种实施方式中的插值的示意图;
图1B是本申请一种实施方式中的视频编码框架的示意图;
图2是本申请一种实施方式中的编解码方法的流程图;
图3是本申请另一种实施方式中的编解码方法的流程图;
图4是本申请另一种实施方式中的编解码方法的流程图;
图5是本申请另一种实施方式中的编解码方法的流程图;
图6A-图6E是本申请一种实施方式中的对参考块进行填充的示意图;
图7是本申请一种实施方式中的目标参考块的示意图;
图8是本申请一种实施方式中的编解码装置的结构图;
图9A是本申请一种实施方式中的解码端设备的硬件结构图;
图9B是本申请一种实施方式中的编码端设备的硬件结构图。
具体实施方式
在本申请实施例中所使用的术语仅仅是出于描述特定实施例的目的,而非用于限制本申请。本申请实施例和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”,或“当……时”,或“响应于确定”。
本申请实施例中提出一种编解码方法、装置及其设备,可以涉及如下概念:
帧内预测与帧间预测(intra prediction and inter prediction)技术:帧内预测是指,利用视频空间域的相关性,使用当前图像已经编码块的像素预测当前像素,以达到去除视频空域冗余的目的。帧间预测是指,利用视频时域的相关性,由于视频序列通常包含有较强的时域相关性,使用邻近已编码图像像素预测当前图像的像素,可以达到有效去除视频时域冗余的目的。主要的视频编码标准帧间预测部分都采用了基于块的运动补偿技术,主要原理是为当前图像的每一个像素块在之前的已编码图像中寻找一个最佳匹配块,该过程称为运动估计。
运动矢量(Motion Vector,MV):在帧间编码中,使用运动矢量表示当前块与其参考图像中的最佳匹配块之间的相对位移。每个划分的块都有相应的运动矢量传输到解码端,若对每个块的运动矢量进行独立编码和传输,特别是划分成小尺寸的块时,需要消耗相当多的比特。为了降低用于编码运动矢量的比特数,则利用相邻图像块之间的空间相关性,根据相邻已编码块的运动矢量对当前块的运动矢量进行预测,然后对预测差进行编码,从而有效地降低表示运动矢量的比特数。在对当前块的运动矢量编码时,使用相邻已编码块的运动矢量预测当前块的运动矢量,对运动矢量的预测值(MVP,Motion VectorPrediction)与运动矢量的真正估值之间的差值(MVD,MotionVector Difference)进行编码,有效降低编码比特数。
运动信息(Motion Information):由于运动矢量表示当前块与某个参考块的位置偏移,为了准确获取指向图像块的信息,除了运动矢量,还需要参考帧图像的索引信息来表示使用哪个参考帧图像。对于当前帧图像,可以建立一个参考帧图像列表,参考帧图像索引信息则表示当前块采用了参考帧图像列表中的第几个参考帧图像。很多编码技术还支持多个参考图像列表,因此,可以使用一个索引值来表示使用哪一个参考图像列表,这个索引值称为参考方向。可以将运动矢量、参考帧索引、参考方向等与运动相关的信息统称为运动信息。
插值(Interpolation):若当前运动矢量为非整像素精度,则无法直接从当前块对应的参考帧中拷贝已有像素值,当前块的所需像素值只能通过插值获得。参见图1A所示,若需要获得偏移为1/2像素的像素值Y1/2,则可以通过对周围的已有像素值X进行插值获得。示例性的,若采用抽头数为N的插值滤波器,则需要通过周围N个整像素插值获得。
例如,若抽头数为8,则
Figure BDA0002273801600000041
ak为滤波器系数,滤波器系数即加权系数。
运动补偿:运动补偿就是通过插值或拷贝获得当前块所有像素值的过程。
融合模式(Merge mode):包括普通融合模式(即Normal Merge模式,也可以称为regular Merge模式),子块模式(采用子块运动信息的融合模式,可以称为Subblock融合模式),MMVD模式(编码运动差的融合模式,可以称为merge with MVD模式),CIIP模式(帧间帧内预测联合生成新的预测值的融合模式,可以称为combine inter intra predicitonmode),TPM模式(用于三角预测的融合模式),GEO模式(基于任意几何划分形状的融合模式)。
跳过模式(skip mode):跳过模式是一种特殊的融合模式,跳过模式与融合模式不同的是,跳过模式不需要编码残差。若当前块为跳过模式时,则CIIP模式默认为关闭,而普通融合模式,子块模式,MMVD模式,TPM模式,GEO模式仍然可以适用。
示例性的,可以基于普通融合模式,子块模式,MMVD模式,CIIP模式,TPM模式,GEO模式等,确定如何生成预测值。在生成预测值后,对于融合模式,可以利用预测值和残差值来获取重建值;对于跳过模式,不存在残差值,直接利用预测值来获取重建值。
序列参数集(SPS,sequence parameter set):在序列参数集中,存在确定整个序列中是否允许某些工具开关的标志位。若标志位为1,则视频序列中,允许启用该标志位对应的工具;若标志位为0,则视频序列中,不允许该标志位对应的工具在编码过程中启用。
普通融合模式:从候选运动信息列表中选择一个运动信息,基于该运动信息生成当前块的预测值,该候选运动信息列表包括:空域相邻块候选运动信息,时域相邻块候选运动信息,空域非相邻块候选运动信息,基于已有运动信息进行组合获取的运动信息,默认运动信息等。
MMVD模式:基于普通融合模式的候选运动信息列表,从普通融合模式的候选运动信息列表中选择一个运动信息作为基准运动信息,通过查表方法获取运动信息差。基于基准运动信息和运动信息差获取最终的运动信息,基于该最终的运动信息生成当前块的预测值。
CIIP模式:通过结合帧内预测值和帧间预测值获取当前块新的预测值。
子块模式:子块模式包括Affine融合模式和子块TMVP模式。
Affine(仿射)融合模式,类似于普通融合模式,也是从候选运动信息列表中选择一个运动信息,基于该运动信息生成当前块的预测值。与普通融合模式不同的是,普通融合模式的候选运动信息列表中的运动信息是2参数的平移运动矢量,而Affine融合模式的候选运动信息列表中的运动信息是4参数的Affine运动信息,或者,6参数的Affine运动信息。
子块TMVP(subblock-based temporal motion vector prediction)模式,在时域参考帧中,直接复用参考块的运动信息用于生成当前块的预测值,该块内的各子块的运动信息可不相同。
TPM模式:将一个块分成两个三角子块(存在45度和135度两种三角子块),这两个三角子块拥有不同的单向运动信息,TPM模式仅用于预测过程,不影响后续的变换、量化过程,这里的单向运动信息也是直接从候选运动信息列表中获取的。
GEO模式:GEO模式与TPM模式类似,只是划分形状不同。GEO模式将一个方形块分成任意形状的两个子块(除了TPM的两个三角子块的形状外的任意其它形状),如一个三角子块,一个五边形子块;或者,一个三角子块,一个四边形子块;或者,两个梯形子块等,对此划分形状不做限制。TPM模式划分的这两个子块拥有不同的单向运动信息。
从上述例子可以看出,本实施例涉及的融合模式和跳过模式,是指一类直接从候选运动信息列表中选择一个运动信息,生成当前块的预测值的一类预测模式,这些预测模式在编码端不需要进行运动搜索过程,除了MMVD模式外,其它模式都不需要编码运动信息差。
SMVD(Symmetric Motion Vector Difference,对称运动矢量差)模式:SMVD模式中双向运动信息中的两个MVD是对称的,即只需要编码其中一个MVD,另一个为负的MVD。SMVD模式指双向预测模式的某一个方向的运动矢量差值,直接通过另一个方向的运动矢量差值推导获得,而不需要进行编码。示例性的,一种简单的推导方法为,直接通过某一个方向的运动矢量差进行缩放获得,缩放因子与两个参考帧到当前帧的距离有关。
平移运动模型:运动模型可以包括但不限于:2参数的运动模型(如2参数的运动矢量),4参数的运动模型(如4参数的仿射模型),6参数的运动模型(如6参数的仿射模型),8参数的运动模型(如投影模型)等。平移运动模型是指2参数的运动模型,平移是指在同一平面内,将一个图像上的所有点都按照某个直线方向做相同距离的移动,这样的图像运动叫做图像的平移运动,简称平移。
视频编码框架:参见图1B所示,可以使用视频编码框架实现本申请实施例的编码端处理流程,此外,视频解码框架的示意图与图1B类似,在此不再重复赘述,而且,可以使用视频解码框架实现本申请实施例的解码端处理流程。具体的,在视频编码框架和视频解码框架中,包括帧内预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端处理流程,在解码端,通过这些模块之间的配合,可以实现解码端处理流程。
在相关技术中,在当前块是双向块(即当前块是采用双向预测的块)时,来自两个不同方向的预测图像往往存在镜像对称的关系,当前编码框架未充分利用这一特性来进一步的去除冗余,从而存在编码性能比较差等问题。针对上述发现,本申请实施例中,在当前块是双向块时,若确定对当前块启动双向预测值补偿模式(即双向光流模式),则能够对当前块进行基于双向预测值补偿模式的运动补偿,从而解决预测质量不高,预测错误等问题,并能够提高硬件实现友好性,带来编码性能的提高,提高编码性能和编码效率。示例性的,当前块是采用双向预测的块是指:当前块的运动信息是双向运动信息,且双向运动信息包括两个不同方向的运动信息,将这两个不同方向的运动信息称为第一单向运动信息和第二单向运动信息。第一单向运动信息可以对应第一参考帧,且第一参考帧位于当前块所处当前帧的前面;第二单向运动信息可以对应第二参考帧,且第二参考帧位于当前块所处当前帧的后面。
以下结合几个具体实施例,对本申请实施例的编解码方法进行详细说明。
实施例1:参见图2所示,为本申请实施例中提出的编解码方法的流程示意图,该编解码方法可以应用于解码端或者编码端,该编解码方法可以包括以下步骤:
步骤201,若如下条件均满足,则确定对当前块启动双向预测值补偿模式:
控制信息为允许当前块使用双向预测值补偿模式;
当前块采用平移运动模型;
当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;
当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;
当前块的两个参考帧的加权权重相同;
当前块的两个参考帧均是短期参考帧;
当前块的宽度,高度和面积均在限定范围内;
当前块的两个参考帧的尺寸与当前帧的尺寸均相同;
当前块进行亮度分量预测值补偿。
在一种可能的实施方式中,若如下条件中的任意一个条件不满足,则确定不对当前块启动双向预测值补偿模式:控制信息为允许当前块使用双向预测值补偿模式;
当前块采用平移运动模型;
当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;
当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;
当前块的两个参考帧的加权权重相同;
当前块的两个参考帧均是短期参考帧;
当前块的宽度,高度和面积均在限定范围内;
当前块的两个参考帧的尺寸与当前帧的尺寸均相同;
当前块进行亮度分量预测值补偿。
在上述实施例中,给出了9个条件,基于所述9个条件是否同时满足,来确定是否对当前块启动双向预测值补偿模式。
在实际应用中,还可以从9个条件中选取部分条件,基于选取的部分条件确定是否对当前块启动双向预测值补偿模式。例如,从9个条件中选取5个条件,对此选取方式不做限制,可以是任意5个条件,若选取的5个条件均满足,则确定对当前块启动双向预测值补偿模式;若选取的5个条件中的任意一个条件不满足,则确定不对当前块启动双向预测值补偿模式。当然,还可以从9个条件中选取其它数量的条件,对此不做限制。
在上述实施例中,当前块的预测值通过来自两个参考帧的参考块的加权获得是指:当前块采用双向预测模式,即当前块的预测值通过来自两个参考帧的参考块(即预测块)的加权获得。当前块对应两个列表的运动信息,记为第一运动信息(即第一单向运动信息)和第二运动信息(即第二单向运动信息),第一运动信息包括第一参考帧和第一原始运动矢量,第二运动信息包括第二参考帧和第二原始运动矢量。上述两个参考帧可以是第一参考帧和第二参考帧,两个参考帧的显示顺序分别位于当前帧的一前一后是指:第一参考帧位于当前块所处当前帧的前面,第二参考帧位于当前帧的后面。第一参考帧称为前向参考帧,前向参考帧位于第一列表(如list0),第二参考帧称为后向参考帧,后向参考帧位于第二列表(如list1)。
在上述实施例中,当前块的宽度,高度和面积均在限定范围内可以包括但不限于:宽度大于或者等于第一阈值,高度大于或者等于第二阈值,面积大于或者等于第三阈值。或者,宽度大于或者等于第一阈值,高度大于或者等于第二阈值,面积大于第四阈值。示例性的,该第三阈值可以大于该第四阈值。例如,第一阈值可以为8,第二阈值可以为8,第三阈值可以为128,第四阈值可以为64。当然,上述数值只是几个示例,对此不做限制。
在上述实施例中,控制信息为允许当前块使用双向预测值补偿模式可以包括但不限于:序列级控制信息(如多帧图像的控制信息)为允许当前块使用双向预测值补偿模式;和/或,帧级控制信息(如一帧图像的控制信息)为允许当前块使用双向预测值补偿模式。
步骤202,若确定对当前块启动双向预测值补偿模式,则对当前块进行基于双向预测值补偿模式的运动补偿。
在一种可能的实施方式中,若确定对当前块启动双向预测值补偿模式,针对当前块包括的至少一个子块中的每个子块:确定该子块的第一原始预测值和第二原始预测值,并根据第一原始预测值和第二原始预测值确定该子块的水平方向速率和垂直方向速率。根据水平方向速率和垂直方向速率获取该子块的预测补偿值,并根据第一原始预测值,第二原始预测值和预测补偿值获取该子块的目标预测值。根据每个子块的目标预测值确定当前块的预测值。
示例性的,确定该子块的第一原始预测值和第二原始预测值,可以包括但不限于:确定该子块对应的单元区块,当前块可以包括该单元区块,该单元区块可以包括该子块。根据该单元区块的第一单向运动信息从第一参考帧中确定第一参考块,对第一参考块进行扩展,得到第二参考块;从第二参考块中选择该子块对应的第一目标参考块,并根据第一目标参考块的像素值确定该子块的第一原始预测值。根据该单元区块的第二单向运动信息从第二参考帧中确定第三参考块,对第三参考块进行扩展,得到第四参考块;从第四参考块中选择该子块对应的第二目标参考块,并根据第二目标参考块的像素值确定该子块的第二原始预测值。
示例性的,对第一参考块进行扩展,得到第二参考块,可以包括:对第一参考块的上边缘和下边缘分别填充N行的整像素点,对第一参考块的左边缘和右边缘分别填充N列的整像素点,得到第二参考块。N为0或正整数。第二参考块中的填充的N行的整像素点的像素值和填充的N列的整像素点的像素值,是通过对第一参考帧中的相邻整像素位置的像素值进行拷贝得到,或者,第二参考块中的填充的N行的整像素点的像素值和填充的N列的整像素点的像素值,是通过对第一参考块中的相邻像素点的像素值进行拷贝得到。
示例性的,对第三参考块进行扩展,得到第四参考块,可以包括:对第三参考块的上边缘和下边缘分别填充N行的整像素点,对第三参考块的左边缘和右边缘分别填充N列的整像素点,得到第四参考块。N为0或正整数。第四参考块中的填充的N行的整像素点的像素值和填充的N列的整像素点的像素值,是通过对第二参考帧中的相邻整像素位置的像素值进行拷贝得到,或者,第四参考块中的填充的N行的整像素点的像素值和填充的N列的整像素点的像素值,是通过对第三参考块中的相邻像素点的像素值进行拷贝得到。
在一种可能的实施方式中,根据第一原始预测值和第二原始预测值确定子块的水平方向速率,可以包括:根据第一原始预测值和第二原始预测值确定系数S1和系数S3;根据系数S1,系数S3和速率阈值确定该子块的水平方向速率。
根据第一原始预测值和第二原始预测值确定子块的垂直方向速率,可以包括:根据第一原始预测值和第二原始预测值确定系数S2,系数S5和系数S6;根据系数S2,系数S5,系数S6,速率阈值和该子块的水平方向速率,确定该子块的垂直方向速率。
示例性的,关于系数S1,系数S3,系数S2,系数S5和系数S6的确定方式及相关定义,可以参见后续实施例,在此不再赘述。
示例性的,子块的水平方向速率可以是指:该子块在参考帧上对应参考块(即位于参考帧的与该子块对应的参考块)的水平方向(即X方向)速率。
示例性的,子块的垂直方向速率可以是指:该子块在参考帧上对应参考块(即位于参考帧的与该子块对应的参考块)的垂直方向(即Y方向)速率。
在一种可能的实施方式中,根据该水平方向速率和该垂直方向速率获取子块的预测补偿值,可以包括但不限于:根据第一原始预测值确定第一水平方向梯度和第一垂直方向梯度;根据第二原始预测值确定第二水平方向梯度和第二垂直方向梯度。然后,根据该水平方向速率,该第一水平方向梯度,该第二水平方向梯度,该垂直方向速率,该第一垂直方向梯度和该第二垂直方向梯度,获取该子块的预测补偿值。
示例性的,针对该子块的每个像素位置来说,第一水平方向梯度是该像素位置在第一参考帧中对应的水平方向梯度,第一垂直方向梯度是该像素位置在第一参考帧中对应的垂直方向梯度,第二水平方向梯度是该像素位置在第二参考帧中对应的水平方向梯度,第二垂直方向梯度是该像素位置在第二参考帧中对应的垂直方向梯度。水平方向速率是该子块的水平方向速率(即该子块内的每个像素位置对应相同的水平方向速率),垂直方向速率是该子块的垂直方向速率(即该子块内的每个像素位置对应相同的垂直方向速率)。
综上所述,针对该子块的每个像素位置来说,可以根据该像素位置对应的第一水平方向梯度,第二水平方向梯度,水平方向速率,垂直方向速率,第一垂直方向梯度和第二垂直方向梯度,确定该像素位置的预测补偿值。然后,根据该像素位置对应的第一原始预测值,第二原始预测值和预测补偿值,获取该像素位置的目标预测值。
示例性的,针对每个子块来说,在得到该子块的每个像素位置的目标预测值之后,可以将这些像素位置的目标预测值组成该子块的目标预测值。针对当前块来说,在得到当前块的每个子块的目标预测值后,可以将这些子块的目标预测值组成当前块的预测值。
由以上技术方案可见,本申请实施例中,若确定对当前块启动双向预测值补偿模式,则能够对当前块进行基于双向预测值补偿模式的运动补偿,从而解决预测质量不高,预测错误等问题,并能够提高硬件实现友好性,带来编码性能的提高,提高编码性能和编码效率。
实施例2:基于与上述方法同样的构思,参见图3所示,为本申请实施例中提出的另一种编解码方法的流程示意图,该方法可以应用于解码端,该方法可以包括以下步骤:
步骤301,解码端确定是否对当前块启动双向预测值补偿模式。如果是,则执行步骤302,如果否,则不需要采用本申请提出的双向预测值补偿模式,对此情况的处理不做限制。
示例性的,若解码端确定对当前块启动双向预测值补偿模式,则说明基于运动信息得到的预测值不够准确,因此,对当前块启动双向预测值补偿模式(即本申请的技术方案),并执行步骤302。若解码端确定不对当前块启动双向预测值补偿模式,则说明基于运动信息得到的预测值已经足够准确,因此,不对当前块启动双向预测值补偿模式。
示例性的,解码端可以接收码流,基于码流中的已解码信息(基于该已解码信息获知实施例1的相关条件是否满足)确定是否对当前块启动双向预测值补偿模式。
步骤302,若确定对当前块启动双向预测值补偿模式,则针对当前块包括的至少一个子块中的每个子块:解码端确定该子块的第一原始预测值和第二原始预测值。
示例性的,可以将当前块划分为至少一个单元区块,比如说,当前块可以包括一个单元区块(即该单元区块就是当前块),或者,当前块可以包括至少两个单元区块。例如,单元区块的宽为dx,高为dy,当前块的宽为W,高为H。若W大于a,则dx为a,若W不大于a,则dx为W。若H大于a,则dy为a,若H不大于a,则dy为H。a的取值可以根据经验配置,如4,8,16,32等,为了方便叙述,后续以a=16为例进行说明。例如,当前块的尺寸为8*16,则当前块只包括一个单元区块,该单元区块的尺寸为8*16。又例如,当前块的尺寸为8*32,则当前块包括单元区块1和单元区块2,单元区块1和单元区块2的尺寸均为8*16。又例如,当前块的尺寸为16*32,则当前块包括单元区块1和单元区块2,单元区块1和单元区块2的尺寸均为16*16。当然,上述只是几个示例,对此不做限制。为了方便描述,后续以将当前块划分为单元区块1和单元区块2,二者的尺寸均为16*16为例进行说明。
针对每个单元区块来说,可以将该单元区块划分为至少一个子块,例如,子块的尺寸为4*4时,可以将单元区块1划分为16个子块,可以将单元区块2划分为16个子块。又例如,子块的尺寸为8*8时,可以将单元区块1划分为4个子块,可以将单元区块2划分为4个子块。又例如,子块的尺寸为16*16时,可以将单元区块1划分为1个子块,可以将单元区块2划分为1个子块。当然,上述只是几个示例,对此不做限制。为了方便描述,后续以将单元区块1划分为16个子块,将单元区块2划分为16个子块为例进行说明。
针对每个单元区块(后续以单元区块1为例)来说,可以根据单元区块1的第一单向运动信息从第一参考帧中确定第一参考块,单元区块1的尺寸为16*16,第一参考块的尺寸为16*16。然后,对第一参考块进行扩展,得到第二参考块,例如,对第一参考块的上边缘和下边缘分别填充N行的整像素点,对第一参考块的左边缘和右边缘分别填充N列的整像素点,得到第二参考块。假设N为1,则第二参考块的尺寸为18*18,假设N为2,则第二参考块的尺寸为20*20,以此类推,后续以第二参考块的尺寸为18*18为例进行说明。可以根据单元区块1的第二单向运动信息从第二参考帧中确定第三参考块,第三参考块的尺寸为16*16。然后,对第三参考块进行扩展,得到第四参考块,例如,对第三参考块的上边缘和下边缘分别填充N行的整像素点,对第三参考块的左边缘和右边缘分别填充N列的整像素点,得到第四参考块。假设N为1,则第四参考块的尺寸为18*18,假设N为2,则第四参考块的尺寸为20*20,以此类推,后续以第四参考块的尺寸为18*18为例进行说明。
示例性的,若当前块是双向块(即当前块是采用双向预测的块),则可以获取当前块对应的双向运动信息,对此获取方式不做限制。这个双向运动信息包括两个不同方向的运动信息,将两个不同方向的运动信息称为第一单向运动信息(如第一运动矢量和第一参考帧索引)和第二单向运动信息(如第二运动矢量和第二参考帧索引)。基于第一单向运动信息可以确定第一参考帧(如参考帧0),且第一参考帧位于当前块所处当前帧的前面;基于第二单向运动信息可以确定第二参考帧(如参考帧1),且第二参考帧位于当前块所处当前帧的后面。
示例性的,针对当前块的每个单元区块,该单元区块的第一单向运动信息与当前块的第一单向运动信息相同,该单元区块的第二单向运动信息与当前块的第二单向运动信息相同。
针对单元区块1的每个子块(后续子块11为例进行说明)来说,从尺寸为18*18的第二参考块中选择子块11对应的第一目标参考块,子块11的尺寸可以为4*4,第一目标参考块的尺寸可以为6*6,并根据第一目标参考块的像素值确定子块11的第一原始预测值。从尺寸为18*18的第四参考块中选择子块11对应的第二目标参考块,第二目标参考块的尺寸可以为6*6,并根据第二目标参考块的像素值确定子块11的第二原始预测值。
步骤303,解码端根据第一原始预测值和第二原始预测值确定子块的水平方向速率。
例如,解码端根据第一原始预测值和第二原始预测值确定系数S1和系数S3,并根据系数S1,系数S3和速率阈值确定该子块的水平方向速率。
步骤304,解码端根据第一原始预测值和第二原始预测值确定子块的垂直方向速率。
例如,解码端根据第一原始预测值和第二原始预测值确定系数S2,系数S5和系数S6,并根据该系数S2,该系数S5,该系数S6,速率阈值和该子块的水平方向速率,确定该子块的垂直方向速率。
步骤305,解码端根据水平方向速率和垂直方向速率获取该子块的预测补偿值。
步骤306,解码端根据第一原始预测值,第二原始预测值和预测补偿值获取该子块的目标预测值。
示例性的,针对步骤305和步骤306,针对该子块的每个像素位置来说,可以确定该像素位置在第一参考帧中对应的第一水平方向梯度和第一垂直方向梯度,并确定该像素位置在第二参考帧中对应的第二水平方向梯度和第二垂直方向梯度。
然后,根据该像素位置对应的第一水平方向梯度,第二水平方向梯度,第一垂直方向梯度,第二垂直方向梯度,水平方向速率(即子块的水平方向速率,子块内的每个像素位置对应相同的水平方向速率),垂直方向速率(即子块的垂直方向速率,子块内的每个像素位置对应相同的垂直方向速率),确定该像素位置的预测补偿值。然后,根据该像素位置对应的第一原始预测值,第二原始预测值和预测补偿值,获取该像素位置的目标预测值。
示例性的,针对每个子块来说,在得到该子块的每个像素位置的目标预测值之后,可以将这些像素位置的目标预测值组成该子块的目标预测值。
步骤307,解码端根据每个子块的目标预测值确定当前块的预测值。
实施例3:基于与上述方法同样的构思,参见图4所示,为本申请实施例中提出的另一种编解码方法的流程示意图,该方法可以应用于编码端,该方法可以包括以下步骤:
步骤401,编码端确定是否对当前块启动双向预测值补偿模式。如果是,则执行步骤402,如果否,则不需要采用本申请提出的双向预测值补偿模式,对此情况的处理不做限制。
示例性的,若编码端确定对当前块启动双向预测值补偿模式,则说明基于运动信息得到的预测值不够准确,因此,对当前块启动双向预测值补偿模式(即本申请的技术方案),并执行步骤402。若编码端确定不对当前块启动双向预测值补偿模式,则说明基于运动信息得到的预测值已经足够准确,因此,不对当前块启动双向预测值补偿模式。
步骤402,若确定对当前块启动双向预测值补偿模式,则针对当前块包括的至少一个子块中的每个子块:编码端确定该子块的第一原始预测值和第二原始预测值。
步骤403,编码端根据第一原始预测值和第二原始预测值确定子块的水平方向速率。
步骤404,编码端根据第一原始预测值和第二原始预测值确定子块的垂直方向速率。
步骤405,编码端根据水平方向速率和垂直方向速率获取该子块的预测补偿值。
步骤406,编码端根据第一原始预测值,第二原始预测值和预测补偿值获取该子块的目标预测值。
步骤407,编码端根据每个子块的目标预测值确定当前块的预测值。
示例性的,步骤401-步骤407可以参见步骤301-步骤307,在此不再赘述。
实施例4:在实施例1-实施例3中,均涉及确定是否对当前块启动双向预测值补偿模式,以下结合实施例4,对双向预测值补偿模式的启动过程进行说明。在一种可能的实施方式中,可以给出如下的启动条件,当然,如下这些启动条件只是本申请的一个示例,在实际应用中,如下这些启动条件可以任意组合,对此不做限制。
示例性的,当如下启动条件中的所有启动条件均满足时,则可以确定对当前块启动双向预测值补偿模式。当如下启动条件中的任意一个或者多个启动条件不满足时,则可以确定不对当前块启动双向预测值补偿模式。
1、控制信息为允许当前块使用双向预测值补偿模式。
示例性的,该控制信息可以包括但不限于:序列级控制信息和/或帧级控制信息。
在一种可能的实施方式中,序列级(如多帧图像)控制信息可以包括但不限于控制标志位(如sps_cur_tool_enabled_flag),帧级(如一帧图像)控制信息可以包括但不限于控制标志位(如pic_cur_tool_disabled_flag)。其中,当sps_cur_tool_enabled_flag为第一取值,并且pic_cur_tool_disabled_flag为第二取值,则表示允许当前块使用双向预测值补偿模式。
sps_cur_tool_enabled_flag表示序列中的所有图像是否允许使用双向预测值补偿模式。pic_cur_tool_disabled_flag表示是否不允许当前图像内的各个块使用双向预测值补偿模式。
例如,当sps_cur_tool_enabled_flag为第一取值时,则可以表示序列中的所有图像允许使用双向预测值补偿模式。当pic_cur_tool_disabled_flag为第二取值时,则可以表示允许当前图像内的各个块使用双向预测值补偿模式。又例如,当sps_cur_tool_enabled_flag为第二取值和/或pic_cur_tool_disabled_flag为第一取值时,则可以表示不允许当前块使用双向预测值补偿模式,即控制信息为不允许当前块使用双向预测值补偿模式。
在另一种可能的实施方式中,序列级(如多帧图像)控制信息可以包括但不限于控制标志位(如sps_cur_tool_disabled_flag),帧级(如一帧图像)控制信息可以包括但不限于控制标志位(如pic_cur_tool_disabled_flag)。其中,当sps_cur_tool_disabled_flag为第二取值,并且pic_cur_tool_disabled_flag为第二取值,则表示允许当前块使用双向预测值补偿模式。
sps_cur_tool_disabled_flag表示序列中的所有图像是否不允许使用双向预测值补偿模式。pic_cur_tool_disabled_flag表示是否不允许当前图像内的各个块使用双向预测值补偿模式。
例如,当sps_cur_tool_disabled_flag为第二取值时,则可以表示序列中的所有图像允许使用双向预测值补偿模式。当pic_cur_tool_disabled_flag为第二取值时,则可以表示允许当前图像内的各个块使用双向预测值补偿模式。又例如,当sps_cur_tool_disabled_flag为第一取值和/或pic_cur_tool_disabled_flag为第一取值时,则可以表示不允许当前块使用双向预测值补偿模式,即控制信息为不允许当前块使用双向预测值补偿模式。
在另一种可能的实施方式中,序列级(如多帧图像)控制信息可以包括但不限于控制标志位(如sps_cur_tool_enabled_flag),帧级(如一帧图像)控制信息可以包括但不限于控制标志位(如pic_cur_tool_enabled_flag)。其中,当sps_cur_tool_enabled_flag为第一取值,并且pic_cur_tool_enabled_flag为第一取值,则表示允许当前块使用双向预测值补偿模式。
sps_cur_tool_enabled_flag表示序列中的所有图像是否允许使用双向预测值补偿模式。pic_cur_tool_enabled_flag表示是否允许当前图像内的各个块使用双向预测值补偿模式。
例如,当sps_cur_tool_enabled_flag为第一取值时,则可以表示序列中的所有图像允许使用双向预测值补偿模式。当pic_cur_tool_enabled_flag为第一取值时,则可以表示允许当前图像内的各个块使用双向预测值补偿模式。又例如,当sps_cur_tool_enabled_flag为第二取值和/或pic_cur_tool_enabled_flag为第二取值时,则可以表示不允许当前块使用双向预测值补偿模式,即控制信息为不允许当前块使用双向预测值补偿模式。
在另一种可能的实施方式中,序列级(如多帧图像)控制信息可以包括但不限于控制标志位(如sps_cur_tool_disabled_flag),帧级(如一帧图像)控制信息可以包括但不限于控制标志位(如pic_cur_tool_enabled_flag)。其中,当sps_cur_tool_disabled_flag为第二取值,并且pic_cur_tool_enabled_flag为第一取值,则表示允许当前块使用双向预测值补偿模式。
sps_cur_tool_disabled_flag表示序列中的所有图像是否不允许使用双向预测值补偿模式。pic_cur_tool_enabled_flag表示是否允许当前图像内的各个块使用双向预测值补偿模式。
例如,当sps_cur_tool_disabled_flag为第二取值时,则可以表示序列中的所有图像允许使用双向预测值补偿模式。当pic_cur_tool_enabled_flag为第一取值时,则可以表示允许当前图像内的各个块使用双向预测值补偿模式。又例如,当sps_cur_tool_disabled_flag为第一取值和/或pic_cur_tool_enabled_flag为第二取值时,则可以表示不允许当前块使用双向预测值补偿模式,即控制信息为不允许当前块使用双向预测值补偿模式。
在上述实施例中,第一取值可以为1,第二取值可以为0,或者,第一取值可以为0,第二取值可以为1,当然,上述只是本申请的两个示例,对此不做限制。
示例性的,本文的帧等同于图像,如当前帧表示当前图像,参考帧表示参考图像。
2、当前块采用平移运动模型。
示例性的,当前块采用平移运动模型,即当前块的运动模型索引MotionModelIdc为0,该运动模型索引是指平移运动模型(即2参数的运动模型)的运动模型索引。
示例性的,当前块采用平移运动模型是指:当前块不采用非平移运动模型,在一种可能的实施方式中,非平移运动模型可以包括但不限于4参数或6参数的affine运动模型。
示例性的,若当前块不采用平移运动模型,则说明启动条件2不满足。或者,若当前块的运动模型索引MotionModelIdc不为0,则说明启动条件2不满足。或者,若当前块采用非平移运动模型(如4参数或6参数的affine运动模型),则说明启动条件2不满足。
3、当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式。
示例性的,若当前块的预测模式不采用子块模式(如当前块的merge_subblock_flag为0),当前块的预测模式不采用SMVD模式(如当前块的sym_mvd_flag为0),当前块的预测模式不采用CIIP模式(如当前块的ciip_flag为0),则表示允许当前块使用双向预测值补偿模式。
例如,若当前块的预测模式(如帧间预测模式)为融合模式或跳过模式,且当前块的预测模式是普通融合模式,则说明当前块的预测模式不是子块模式,不是SMVD模式,不是CIIP模式。例如,若当前块的预测模式为融合模式或跳过模式,且当前块的预测模式是MMVD模式,则说明当前块的预测模式不是子块模式,不是SMVD模式,不是CIIP模式。例如,若当前块的预测模式为融合模式或跳过模式,且当前块的预测模式是TPM模式,则说明当前块的预测模式不是子块模式,不是SMVD模式,不是CIIP模式。例如,若当前块的预测模式为融合模式或跳过模式,且当前块的预测模式是GEO模式,则说明当前块的预测模式不是子块模式,不是SMVD模式,不是CIIP模式。当然,上述只是几个示例,对此不做限制。
示例性的,若当前块的预测模式为子块模式,则表示不允许当前块使用双向预测值补偿模式,即启动条件3不满足。或者,若当前块的预测模式为SMVD模式,则表示不允许当前块使用双向预测值补偿模式,即启动条件3不满足。或者,若当前块的预测模式为CIIP模式,则表示不允许当前块使用双向预测值补偿模式,即启动条件3不满足。
4、当前块的预测值通过来自两个参考帧的参考块(即预测块)的加权获得,且两个参考帧的显示顺序分别位于当前帧的一前一后,且两个参考帧与当前帧的距离相同。
示例性的,当前块的预测值通过来自两个参考帧的参考块的加权获得是指:当前块采用双向预测,即当前块的预测值通过来自两个参考帧的参考块的加权获得。
示例性的,当前块可以对应两个列表的运动信息,这两个运动信息记为第一运动信息和第二运动信息,第一运动信息包括第一参考帧和第一原始运动矢量,第二运动信息包括第二参考帧和第二原始运动矢量。两个参考帧的显示顺序分别位于当前帧的一前一后是指:第一参考帧位于当前块所处当前帧的前面,第二参考帧位于当前帧的后面。
在一种可能的实施方式中,若当前块存在两个列表(如list0和list1)的运动信息(如两个参考帧和两个运动矢量),且两个参考帧的显示顺序分别位于当前帧的一前一后,且两个参考帧到当前帧的距离相同,则表示允许当前块使用双向预测值补偿模式。
两个参考帧的显示顺序分别位于当前帧的一前一后,且两个参考帧到当前帧的距离相同,可以通过当前帧的显示顺序号POC_Cur,list0的参考帧的显示顺序号POC_0,list1的参考帧的显示顺序号POC_1的相对关系来表示:即,(POC_1-POC_Cur)完全等于(POC_Cur-POC_0)。
示例性的,当前块采用双向预测,且当前块对应的两个参考帧来自不同方向,也就是说,当前块对应的一个参考帧位于当前帧之前,当前块对应的另一个参考帧位于当前帧之后。
示例性的,若当前块只存在一个参考帧,则表示不允许当前块使用双向预测值补偿模式,即启动条件4不满足。或者,若当前块存在两个参考帧,但是两个参考帧的显示顺序均位于当前帧的前面,则表示不允许当前块使用双向预测值补偿模式,即启动条件4不满足。或者,若当前块存在两个参考帧,但是两个参考帧的显示顺序均位于当前帧的后面,则表示不允许当前块使用双向预测值补偿模式,即启动条件4不满足。或者,若当前块存在两个参考帧,且两个参考帧的显示顺序分别位于当前帧的一前一后,但是两个参考帧与当前帧的距离不同,则表示不允许当前块使用双向预测值补偿模式,即启动条件4不满足。
5、当前块的两个参考帧的加权权重相同。
在一种可能的实施方式中,若当前块的两个参考帧的加权权重相同,则表示允许当前块使用双向预测值补偿模式。示例性的,若两个参考帧的帧级加权权重相同,如参考帧refIdxL0的亮度加权权重(luma_weight_l0_flag[refIdxL0]),可以等于参考帧refIdxL1的亮度加权权重(luma_weight_l1_flag[refIdxL1]),则表示当前块的两个参考帧的加权权重相同。或者,若两个参考帧的块级加权权重相同,如当前块的块级加权值的索引BcwIdx[xCb][yCb]为0,则表示当前块的两个参考帧的加权权重相同。或者,若两个参考帧的帧级加权权重相同,且两个参考帧的块级加权权重相同,则表示当前块的两个参考帧的加权权重相同。
示例性的,若当前块的两个参考帧的加权权重不同,则表示不允许当前块使用双向预测值补偿模式,即启动条件5不满足。例如,若两个参考帧的帧级加权权重不同,则表示当前块的两个参考帧的加权权重不同。或者,若两个参考帧的块级加权权重不同,则表示当前块的两个参考帧的加权权重不同。或者,若两个参考帧的帧级加权权重不同,且两个参考帧的块级加权权重不同,则表示当前块的两个参考帧的加权权重不同。
示例性的,当前块的两个参考帧的加权权重是指双向加权补偿时采用的权重。例如,针对当前块的每个子块,在得到该子块的两个预测值(获取过程参见后续实施例)后,需要对这两个预测值进行加权,得到该子块的最终预测值。在对这两个预测值进行加权时,这两个预测值对应的权重,就是当前块的两个参考帧的加权权重,即这两个预测值对应的权重相同。
6、当前块的两个参考帧均是短期参考帧。或者说当前块的两个参考帧均不是长期参考帧。
在一种可能的实施方式中,若当前块的两个参考帧都为短期参考帧,则表示允许当前块使用双向预测值补偿模式。短期参考帧表示离当前帧较近的参考帧,一般是实际的图像帧。
示例性的,若当前块的两个参考帧不都为短期参考帧,则表示不允许当前块使用双向预测值补偿模式,即启动条件6不满足。或,若当前块的一个参考帧不是短期参考帧,则表示不允许当前块使用双向预测值补偿模式,即启动条件6不满足。或者,若当前块的两个参考帧都不是短期参考帧,则表示不允许当前块使用双向预测值补偿模式,即启动条件6不满足。
在另一种可能的实施方式中,若当前块的两个参考帧都不是长期参考帧,则表示允许当前块使用双向预测值补偿模式。长期参考帧的显示序号POC并没有实际含义(这会导致条件4失效),长期参考帧表示离当前帧较远的参考帧,或通过几帧实际图像合成出来的图像帧。
示例性的,若当前块的一个参考帧是长期参考帧,则表示不允许当前块使用双向预测值补偿模式,即启动条件6不满足。或者,若当前块的两个参考帧都是长期参考帧,则表示不允许当前块使用双向预测值补偿模式,即启动条件6不满足。
7、当前块的宽度,高度和面积均在限定范围内。
在一种可能的实施方式中,若当前块的宽cbWidth大于或者等于第一阈值(如8),且当前块的高cbHeight大于或者等于第二阈值(如8),且当前块的面积(cbHeight*cbWidth)大于或者等于第三阈值(如128),则表示允许当前块使用双向预测值补偿模式。
示例性的,若当前块的宽cbWidth小于第一阈值,则表示不允许当前块使用双向预测值补偿模式,即启动条件7不满足。或者,若当前块的高cbHeight小于第二阈值,则表示不允许当前块使用双向预测值补偿模式,即启动条件7不满足。或者,且当前块的面积小于第三阈值,则表示不允许当前块使用双向预测值补偿模式,即启动条件7不满足。
在另一种可能的实施方式中,若当前块的宽cbWidth大于或者等于第一阈值(如8),且当前块的高cbHeight大于或者等于第二阈值(如8),且当前块的面积(cbHeight*cbWidth)大于第四阈值(如64),则表示允许当前块使用双向预测值补偿模式。
示例性的,若当前块的宽cbWidth小于第一阈值,则表示不允许当前块使用双向预测值补偿模式,即启动条件7不满足。或者,若当前块的高cbHeight小于第二阈值,则表示不允许当前块使用双向预测值补偿模式,即启动条件7不满足。或者,且当前块的面积小于或者等于第四阈值,则表示不允许当前块使用双向预测值补偿模式,即启动条件7不满足。
8、当前块的两个参考帧的尺寸与当前帧的尺寸均相同(长宽都相等)。
在一种可能的实施方式中,若list0的参考帧的尺寸与当前帧的尺寸相同,例如,list0的参考帧的宽与当前帧的宽相同,list0的参考帧的高与当前帧的高相同,并且,list1的参考帧的尺寸与当前帧的尺寸相同,例如,list1的参考帧的宽与当前帧的宽相同,list1的参考帧的高与当前帧的高相同,则表示允许当前块使用双向预测值补偿模式。
示例性的,若当前块的两个参考帧中的至少一个参考帧的尺寸与当前帧的尺寸不同,则表示不允许当前块使用双向预测值补偿模式,即启动条件8不满足。例如,若list0的参考帧的宽与当前帧的宽不同,则表示不允许当前块使用双向预测值补偿模式。或者,若list0的参考帧的高与当前帧的高不同,则表示不允许当前块使用双向预测值补偿模式。或者,若list1的参考帧的宽与当前帧的宽不同,则表示不允许当前块使用双向预测值补偿模式。或者,若list1的参考帧的高与当前帧的高不同,则表示不允许当前块使用双向预测值补偿模式。
9、当前块进行亮度分量预测值补偿,即需要进行预测值补偿的是亮度分量。
示例性的,当前块的每个像素位置的像素值,可以包括亮度分量和两个色度分量,在对当前块的每个像素位置的像素值进行基于双向预测值补偿模式的运动补偿时,若对该像素值的亮度分量进行运动补偿,即,当前分量为亮度分量,则表示允许当前块使用双向预测值补偿模式。
示例性的,在对当前块的每个像素位置的像素值进行运动补偿时,若对该像素值的色度分量进行运动补偿,即,当前分量为色度分量,则表示不允许当前块使用双向预测值补偿模式,即启动条件9不满足。
实施例5:参见图5所示,为本申请实施例中提出的编解码方法的流程示意图,该编解码方法可以应用于解码端或者编码端,该编解码方法可以包括以下步骤:
步骤501,若如下条件均满足,则确定对当前块启动双向预测值补偿模式:
控制信息为允许当前块使用双向预测值补偿模式;
当前块采用平移运动模型;
当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;
当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;
当前块的两个参考帧的加权权重相同;
当前块的两个参考帧均是短期参考帧;
当前块的宽度,高度和面积均在限定范围内;
当前块的两个参考帧的尺寸与当前帧的尺寸均相同。
在一种可能的实施方式中,若如下条件中的任意一个条件不满足,则确定不对当前块启动双向预测值补偿模式:控制信息为允许当前块使用双向预测值补偿模式;
当前块采用平移运动模型;
当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;
当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;
当前块的两个参考帧的加权权重相同;
当前块的两个参考帧均是短期参考帧;
当前块的宽度,高度和面积均在限定范围内;
当前块的两个参考帧的尺寸与当前帧的尺寸均相同。
在上述实施例中,给出了8个条件,基于所述8个条件是否同时满足,来确定是否对当前块启动双向预测值补偿模式。
在实际应用中,还可以从8个条件中选取部分条件,基于选取的部分条件确定是否对当前块启动双向预测值补偿模式。例如,从8个条件中选取5个条件,对此选取方式不做限制,可以是任意5个条件,若选取的5个条件均满足,则确定对当前块启动双向预测值补偿模式;若选取的5个条件中的任意一个条件不满足,则确定不对当前块启动双向预测值补偿模式。当然,还可以从8个条件中选取其它数量的条件,对此不做限制。
步骤502,若确定对当前块启动双向预测值补偿模式,则对当前块进行基于双向预测值补偿模式的运动补偿,具体实现过程可以参见步骤202,在此不再赘述。
实施例5的实现过程可以参见实施例1-实施例4,不同之处在于:双向预测值补偿模式的启动条件不包括“当前块进行亮度分量预测值补偿”,在此不再重复赘述。
示例性的,若采用双向预测值补偿模式对当前块的色度分量进行预测值补偿的效果比较好时,则也可以对当前块进行色度分量预测值补偿,即不需要采用“当前块进行亮度分量预测值补偿”的启动条件,允许对当前块进行亮度分量和色度分量的预测值补偿。
实施例6:以下结合具体应用场景,对编解码方法进行说明,该编解码方法可以包括:
步骤a1、确定是否对当前块启动双向预测值补偿模式,如果是,则执行步骤a2。
示例性的,可以采用实施例1的方式确定是否对当前块启动双向预测值补偿模式,或者,采用实施例5的方式确定是否对当前块启动双向预测值补偿模式,或者,采用实施例4的方式确定是否对当前块启动双向预测值补偿模式,对此确定方式不再赘述。
步骤a2、将当前块划分为至少一个单元区块,根据单元区块的第一单向运动信息从第一参考帧中确定第一参考块,对第一参考块进行扩展,得到第二参考块。根据单元区块的第二单向运动信息从第二参考帧中确定第三参考块,对第三参考块进行扩展,得到第四参考块。
示例性的,当前块可以包括一个单元区块(即该单元区块就是当前块),或者,当前块可以包括至少两个单元区块。例如,单元区块的宽为dx,高为dy,当前块的宽为W,高为H,则dx=W>a?a:W,dy=H>a?a:H。比如说,若W大于a,则dx为a,若W不大于a,则dx为W。若H大于a,则dy为a,若H不大于a,则dy为H。a的取值可以根据经验配置,如4,8,16,32等,为了方便叙述,后续以a=16为例进行说明。例如,当前块的尺寸为8*16,则当前块只包括一个单元区块,该单元区块的尺寸为8*16。又例如,当前块的尺寸为8*32,则当前块包括单元区块1和单元区块2,单元区块1和单元区块2的尺寸均为8*16。又例如,当前块的尺寸为16*32,则当前块包括单元区块1和单元区块2,单元区块1和单元区块2的尺寸均为16*16。当然,上述只是几个示例,对此不做限制。为了方便描述,后续以将当前块划分为单元区块1和单元区块2,二者的尺寸均为16*16为例进行说明。
示例性的,若当前块是双向块(即当前块是采用双向预测的块),则可以获取当前块对应的双向运动信息,对此获取方式不做限制。这个双向运动信息包括两个不同方向的运动信息,将两个不同方向的运动信息称为第一单向运动信息(如第一运动矢量和第一参考帧索引)和第二单向运动信息(如第二运动矢量和第二参考帧索引)。针对当前块的每个单元区块,该单元区块的第一单向运动信息与当前块的第一单向运动信息相同,该单元区块的第二单向运动信息与当前块的第二单向运动信息相同。基于该第一单向运动信息可以确定第一参考帧(如参考帧0),且第一参考帧位于当前块所处当前帧的前面;基于该第二单向运动信息可以确定第二参考帧(如参考帧1),且第二参考帧位于当前块所处当前帧的后面。
针对每个单元区块(后续以单元区块1为例)来说,根据单元区块1的第一单向运动信息从第一参考帧中确定第一参考块,单元区块1的尺寸为dx*dy(如16*16),第一参考块的尺寸为16*16。然后,对第一参考块进行扩展,得到第二参考块,例如,对第一参考块进行上下左右各N的填充(N可以为0,1,2,3,4等,N为0时,则不进行填充),比如说,对第一参考块的上边缘和下边缘分别填充N行的整像素点,对第一参考块的左边缘和右边缘分别填充N列的整像素点,得到第二参考块,第二参考块的尺寸为(16+2N)*(16+2N)。
在一种可能的实施方式中,N行/N列的整像素点的填充方法可以为:从第一参考帧中相邻整像素区域进行复制。例如,第二参考块中的N行的整像素点的像素值和N列的整像素点的像素值,是通过对第一参考帧中的相邻整像素位置的像素值进行拷贝得到。
例如,假设N为1,则对第一参考块的上边缘填充1行的整像素点,对第一参考块的下边缘填充1行的整像素点,对第一参考块的左边缘填充1列的整像素点,对第一参考块的右边缘填充1列的整像素点,得到第二参考块,第二参考块的尺寸为18*18。
示例性的,考虑到在确定像素位置的梯度值的水平分量时,需要使用该像素位置左侧像素位置的像素值以及该像素位置右侧像素位置的像素值,在确定像素位置的梯度值的垂直分量时,需要使用该像素位置上方像素位置的像素值以及该像素位置下方像素位置的像素值,而第一参考块边缘的像素位置会缺少至少一侧的像素位置。例如,对于第一参考块上边缘的像素位置,在该第一参考块内不存在上方的像素位置;对于第一参考块左边缘的像素位置,在该第一参考块内不存在左侧的像素位置。因此,为了确定各像素位置的梯度值,需要对第一参考块的上下左右边缘分别填充N行/N列的整像素位置(像素为整数)。
示例性的,为了减少带宽增加,填充的行/列的整像素位置的像素值可以直接从第一参考帧中的相邻整像素位置的像素值进行拷贝得到。例如,可以确定第一参考帧中与第一参考块最近的等尺寸整像素块(整像素位置构成的块);然后,将该整像素块周围最近邻的N行/列整像素位置的像素值分别作为第一参考块的上下左右边缘的填充值。
示例性的,对第一参考块的上下左右边缘分别填充N行/N列的整像素位置,可以包括:分别对整像素块正上方、正下方、正左侧以及正右侧的N行/N列的整像素位置进行填充。
例如,考虑到在对第一参考块的上下左右边缘填充N行/N列整像素位置后,会得到一个宽和高均比原来增大2N的块,基于该块中各像素位置的像素值,计算原第一参考块中各像素位置的梯度值时,该块外侧的N层像素位置中各层像素位置的角点并不会被使用。因而,为了减少填充工作量,提高填充效率,在对第一参考块的上下左右边缘分别填充N行/N列整像素位置时,可以分别对第一参考帧中与该第一参考块最近的等尺寸的整像素块正上方、正下方、正左侧以及正右侧的N行/N列的整像素位置进行填充。
当N=1时,对第一参考块的上下左右边缘分别填充N行/N列整像素位置,可以包括:
参见图6A所示,对于第一参考块中的像素位置的预测值的分像素的水平分量和垂直分量均大于或等于半像素的情况,对第一参考块的上边缘填充上方的最近邻整像素位置,对第一参考块的下边缘填充下方的次近邻整像素位置,对第一参考块的左边缘填充左侧最近邻整像素位置,对第一参考块的右边缘填充右侧的次近邻整像素位置。
参见图6B所示,对于第一参考块中的像素位置的预测值的分像素的水平分量大于或等于半像素,垂直分量小于半像素的情况,对第一参考块的上边缘填充上方的次近邻整像素位置,对第一参考块的下边缘填充下方的最近邻整像素位置,对第一参考块的左边缘填充左侧最近邻整像素位置,对第一参考块的右边缘填充右侧的次近邻整像素位置。
参见图6C所示,对于第一参考块中的像素位置的预测值的分像素的水平分量小于半像素,垂直分量大于或等于半像素的情况,对第一参考块的上边缘填充上方的最近邻整像素位置,对第一参考块的下边缘填充下方的次近邻整像素位置,对第一参考块的左边缘填充左侧次近邻整像素位置,对第一参考块的右边缘填充右侧的最近邻整像素位置。
参见图6D所示,对于第一参考块中的像素位置的预测值的分像素的水平分量和垂直分量均小于半像素的情况,对第一参考块的上边缘填充上方的次近邻整像素位置,对第一参考块的下边缘填充下方的最近邻整像素位置,对第一参考块的左边缘填充左侧次近邻整像素位置,对第一参考块的右边缘填充右侧的最近邻整像素位置。
示例性的,在图6A~6D中,三角形为第一参考块各像素位置的预测值,圆形为参考帧中整像素位置的重建值,带阴影的圆形为所选择用于填充的参考帧中的整像素位置的重建值。
在图6A~6D中,是以第一参考块的尺寸为4*4为例,在对第一参考块进行填充后,得到的是6*6的第二参考块。当第一参考块的尺寸为16*16时,在对第一参考块进行填充后,得到的是18*18的第二参考块,具体填充方式参见图6A~6D所示,在此不再重复赘述。
在另一种可能的实施方式中,N行/N列的整像素点的填充方法可以为:直接通过从第一参考块中最近邻像素值复制,即第二参考块中的N行的整像素点的像素值和N列的整像素点的像素值,是通过对第一参考块中的相邻像素点的像素值进行拷贝得到。
参见图6E所示,可以对第一参考块中的相邻像素点的像素值进行拷贝得到,得到第二参考块。比如说,对第一参考块的上下左右边缘分别填充N行/N列整像素位置时,直接从第一参考块中的相邻像素点的像素值进行拷贝得到。在图6E中,示出了将第一参考块中的像素位置的像素值,拷贝到第一参考块的边缘区域,得到第二参考块。
在图6E中,是以第一参考块的尺寸为4*4为例,在对第一参考块进行填充后,得到的是6*6的第二参考块。当第一参考块的尺寸为16*16时,在对第一参考块进行填充后,得到的是18*18的第二参考块,具体填充方式参见图6E所示,在此不再重复赘述。
参见上述实施例,N行/N列的整像素点的填充方法可以为:从第一参考帧中相邻整像素区域进行复制(图6A-6D),或者,通过从第一参考块中最近邻像素值复制(图6E),即,直接使用已有的像素值对N行/N列的整像素点进行填充,而不是通过对多个像素值进行插值,使用插值得到的像素值对N行/N列的整像素点进行填充,这样,可以避免额外的插值过程,间接地避免访问额外的参考像素(在采用插值方式时,需要访问额外的参考像素)。
针对每个单元区块(后续以单元区块1为例)来说,根据单元区块1的第二单向运动信息从第二参考帧中确定第三参考块,单元区块1的尺寸为dx*dy(如16*16),第三参考块的尺寸为16*16。然后,对第三参考块进行扩展,得到第四参考块,例如,对第三参考块进行上下左右各N的填充(N可以为0,1,2,3,4等,N为0时,则不进行填充),比如说,对第三参考块的上边缘和下边缘分别填充N行的整像素点,对第三参考块的左边缘和右边缘分别填充N列的整像素点,得到第四参考块,第四参考块的尺寸为(16+2N)*(16+2N)。
示例性的,N行/N列的整像素点的填充方法为:从第二参考帧中相邻整像素区域复制,或者,直接通过从第三参考块中最近邻像素值复制。例如,第四参考块中的N行的整像素点的像素值和N列的整像素点的像素值,是通过对第二参考帧中的相邻整像素位置的像素值进行拷贝得到,或者,通过对第三参考块中的相邻像素点的像素值进行拷贝得到。
具体填充方式可以参见第一参考块的填充方式,在此不再重复赘述。
步骤a3、针对单元区块包括的至少一个子块中的每个子块:从该单元区块对应的第二参考块中选择该子块对应的第一目标参考块,并根据第一目标参考块的像素值确定该子块的第一原始预测值;从该单元区块对应的第四参考块中选择该子块对应的第二目标参考块,并根据第二目标参考块的像素值确定该子块的第二原始预测值。
例如,针对当前块的每个单元区块来说,可以将该单元区块划分为至少一个子块,例如,当子块的尺寸为4*4,单元区块的尺寸为16*16时,则可以将单元区块划分为16个子块。又例如,当子块的尺寸为8*8时,则可以将单元区块划分为4个子块。又例如,当子块的尺寸为16*16时,则可以将单元区块划分为1个子块。当然,上述只是几个示例,对此不做限制。为了方便描述,后续以将单元区块划分为16个子块为例进行说明。
针对每个dx*dy(如16*16)的单元区块(后续以单元区块1为例)的每个子块(后续子块11为例进行说明)来说,可以从单元区块1对应的第二参考块(尺寸为18*18)中选择子块11对应的第一目标参考块,子块11的尺寸为4*4,第一目标参考块的尺寸为6*6,并根据第一目标参考块的像素值确定子块11的第一原始预测值。可以从单元区块1对应的第四参考块(尺寸为18*18)中选择子块11对应的第二目标参考块,第二目标参考块的尺寸为6*6,并根据第二目标参考块的像素值确定子块11的第二原始预测值。
例如,参见图7所示,针对每个dx*dy(如16*16)的单元区块来说,可以根据该单元区块的第一单向运动信息从第一参考帧(如参考帧0)中确定尺寸为16*16的第一参考块,对第一参考块进行扩展,得到尺寸为18*18的第二参考块。可以根据该单元区块的第二单向运动信息从第二参考帧(如参考帧1)中确定尺寸为16*16的第三参考块,对第三参考块进行扩展,得到尺寸为18*18的第四参考块。然后,针对该单元区块的每个子块(如b*b,b可以为4,8,16等,后续以b=4为例,即子块的尺寸可以为4*4)来说,由于后续过程需要确定子块对应的目标参考块的梯度,因此需要确定尺寸为6*6的目标参考块。例如,从该单元区块对应的第二参考块中选择该子块对应的第一目标参考块,并根据第一目标参考块的像素值确定该子块的第一原始预测值;从该单元区块对应的第四参考块中选择该子块对应的第二目标参考块,并根据第二目标参考块的像素值确定该子块的第二原始预测值。
参见图7所示,子块的像素位置为x=xSb…xSb+3,y=ySb…ySb+3,子块对应的目标参考块(如第一目标参考块和第二目标参考块等)的像素位置为x=xSb…xSb+5,y=ySb…ySb+5。可见,子块的像素位置(x,y)对应的是目标参考块的像素位置(x+1,y+1)。示例性的,xSb和ySb分别为子块的起始像素位置,如xSb=0,4,8…dx/4*4,ySb=0,4,8…dy/4*4等。示例性的,目标参考块的水平像素位置的范围可以为[0,dx+1],垂直像素位置的范围可以为[0,dy+1]。
示例性的,可以将子块的第一原始预测值记为I(0)(x,y),将子块的第二原始预测值记为I(1)(x,y),第一原始预测值和第二原始预测值均为6*6大小的原始预测值。
步骤a4、根据子块的第一原始预测值和第二原始预测值确定该子块的水平方向速率,即根据第一原始预测值和第二原始预测值确定子块在第一参考帧上像素的水平方向(x方向)速率vx。示例性的,该子块在第二参考帧上像素的水平方向速率与该子块在第一参考帧上像素的水平方向速率相反。针对该子块的每个像素位置的像素值(如亮度值)来说,这些像素位置的像素值(如亮度值)的水平方向速率可以相同,均是步骤a4中确定的水平方向速率。
步骤a5、根据子块的第一原始预测值和第二原始预测值确定该子块的垂直方向速率,即根据第一原始预测值和第二原始预测值确定子块在第一参考帧上像素的垂直方向(y方向)速率vy。示例性的,该子块在第二参考帧上像素的垂直方向速率与该子块在第一参考帧上像素的垂直方向速率相反。针对该子块的每个像素位置的像素值(如亮度值)来说,这些像素位置的像素值(如亮度值)的垂直方向速率可以相同,均是步骤a5中确定的垂直方向速率。
针对步骤a4和步骤a5,在得到子块的第一原始预测值和子块的第二原始预测值后,根据子块的第一原始预测值和第二原始预测值确定水平方向梯度和,垂直方向梯度和,两个参考块的亮度差(即两个目标参考块的亮度差,也称为时域预测值差值)。例如,通过公式(1)确定水平方向梯度和,通过公式(2)确定垂直方向梯度和,通过公式(3)确定两个参考块的亮度差:
Figure BDA0002273801600000201
θ(i,j)=(P(1)(i,j)>>shift2)-(P(0)(i,j)>>shift2) (3)
在得到水平方向梯度和ψx(i,j),垂直方向梯度和ψy(i,j),两个参考块的亮度差θ(i,j)后,可以采用如下公式获得系数S1,系数S2,系数S3,系数S5和系数S6。当然,这里只是一个示例,对各系数的获取方式不做限制。示例性的,参见公式(4)所示,系数S1可以为水平方向梯度和的绝对值的和,比如说,先确定水平方向梯度和ψx(i,j)的绝对值abs(ψx(i,j),然后对绝对值求和。参见公式(5)所示,系数S2可以为“水平方向梯度和”与“垂直方向梯度和的符号位”乘积的和,比如说,先确定垂直方向梯度和的符号位Sign[ψy(i,j),然后,确定水平方向梯度和ψx(i,j)与所述符号位Sign[ψy(i,j)的乘积,然后,对二者的乘积求和。参见公式(6)所示,系数S3可以为“两个参考块的亮度差”与“水平方向梯度和的符号位”乘积的和,比如说,先确定水平方向梯度和的符号位Sign[ψx(i,j),然后,确定两个参考块的亮度差θ(i,j)与所述符号位Sign[ψx(i,j)的乘积,然后,对二者的乘积求和。参见公式(7)所示,系数S5可以为垂直方向梯度和的绝对值的和,比如说,先确定垂直方向梯度和ψy(i,j)的绝对值abs(ψy(i,j),然后对该绝对值求和。参见公式(8)所示,系数S6可以为“两个参考块的亮度差”与“垂直方向梯度和的符号位”乘积的和,比如说,先确定垂直方向梯度和的符号位Sign[ψy(i,j),然后,确定两个参考块的亮度差θ(i,j)与所述符号位Sign[ψy(i,j)的乘积,然后,对二者的乘积求和。
S1=∑(i,j)∈Ωabs(ψx(i,j)) (4)
S2=∑(i,j)∈Ωψx(i,j)·Sign[ψy(i,j)] (5)
S3=∑(i,j)∈Ωθ(i,j)·Sign[ψx(i,j)] (6)
S5=∑(i,j)∈Ωabs(ψy(i,j)) (7)
S6=∑(i,j)∈Ωθ(i,j)·Sign[ψy(i,j)] (8)
在公式(4)-公式(8)中,Ω是子块对应的6*6的目标参考块,即上述示例的第一目标参考块和第二目标参考块,第一目标参考块的像素值为子块的第一原始预测值,第二目标参考块的像素值为子块的第二原始预测值。i=xSb…xSb+5,j=ySb…ySb+5。Sign[x]表示取x的符号,即x小于0时为-1,x大于0时为1,x等于0时为0。abs[x]表示取x的绝对值。ψx(i,j)表示水平方向梯度和,ψy(i,j)表示垂直方向梯度和,θ(i,j)表示两个参考块的亮度差。
在公式(1)-公式(3)中,shift2可为固定值,如4,也可为与BD相关的整数值,shift3可为固定值,如1,也可为与BD相关的整数值。当然,这里只是一个示例,对此shift2和shift3的取值不做限制。
Figure BDA0002273801600000211
Figure BDA0002273801600000212
分别表示第一目标参考块和第二目标参考块的水平方向梯度,
Figure BDA0002273801600000213
Figure BDA0002273801600000214
分别表示第一目标参考块和第二目标参考块的垂直方向梯度。
P(0)(i,j)表示第一目标参考块中的像素位置(i,j)的像素值(如亮度值),P(1)(i,j)表示第二目标参考块中的像素位置(i,j)的像素值(如亮度值)。示例性的,关于水平方向梯度,可以通过公式9确定,关于垂直方向梯度,可以通过公式10确定。
Figure BDA0002273801600000215
Figure BDA0002273801600000216
在公式(9)和公式(10)中,shift1可以为固定整数值,如6,shift1也可以为与BD相关的整数值。当然,这里只是一个示例,对此shift1的取值不做限制。P(k)(x,y)表示目标参考块中的像素位置(x,y)的像素值,例如,P(0)(x,y)表示第一目标参考块中的像素位置(x,y)的像素值(如亮度值),P(1)(x,y)表示第二目标参考块中的像素位置(x,y)的像素值(如亮度值)。
在上述各公式中,>>表示右移,右移k,相当于除以2k,BD表示比特深度,即亮度值所需比特宽度,一般为8、10、12。当然,8、10、12只是示例,对此比特深度不做限制。
针对目标参考块中的像素位置(x,y)的像素值,若参考像素刚好位于子块的边缘处,由于像素位置周围没有足够的像素用于计算梯度,因此,这些像素位置的梯度通过复制相邻像素位置的梯度获取。比如说,当x=0,或x=dx+1,或y=0,或y=dy+1时,
Figure BDA0002273801600000217
hx=Clip3(1,dx,x),hy=Clip3(1,dy,y)。A=Clip3(min,max,x)表示将A的值限制在[min,max]范围内,即若x小于min,则A=min,若x大于max,则A=max。
在一种可能的实施方式中,在得到系数S1和系数S3之后,可以根据系数S1,系数S3和速率阈值确定该子块的水平方向速率。例如,可以通过如下公式确定水平方向速率vx
Figure BDA0002273801600000218
当然,公式11只是一个示例,对此不做限制。在公式11中,th′BIO为速率阈值,
Figure BDA0002273801600000219
为向下取整,th′BIO可为固定的整数,如7,15,31,63,127等,优选15,也可以为与BD相关的整数,如213-BD-1。当然,上述只是th′BIO的示例,对此不做限制。th′BIO用于将水平方向速率vx限制在-th′BIO与th′BIO之间,即水平方向速率vx大于或者等于-th′BIO,水平方向速率vx小于或者等于th′BIO。在公式11中,若S1>0成立,则
Figure BDA0002273801600000221
Figure BDA0002273801600000222
若S1>0不成立,则vx=0。Clip3的含义可以参见上述实施例。
在得到系数S2,系数S5和系数S6后,可以根据系数S2,系数S5,系数S6,速率阈值和水平方向速率,确定该子块的垂直方向速率。例如,可以通过如下公式确定垂直方向速率vy
Figure BDA0002273801600000223
当然,公式12只是一个示例,对此不做限制。在公式12中,th′BIO为速率阈值,
Figure BDA0002273801600000224
为向下取整,th′BIO可为固定的整数,如7,15,31,63,127等,优选15,也可以为与BD相关的整数,如213-BD-1。th′BIO用于将垂直方向速率vy限制在-th′BIO与th′BIO之间,即垂直方向速率vy大于或者等于-th′BIO,垂直方向速率vy小于或者等于th′BIO。在公式12中,若S5>0成立,则
Figure BDA0002273801600000225
若S5>0不成立,则vy=0。Clip3的含义可以参见上述实施例,vx可以为水平方向速率。
在另一种可能的实施方式中,还可以通过如下公式确定垂直方向速率vy
Figure BDA0002273801600000226
步骤a6、根据水平方向速率和垂直方向速率获取该子块的预测补偿值。例如,针对子块的每个像素位置,根据该子块的水平方向速率和垂直方向速率获取该像素位置的预测补偿值。
在一种可能的实施方式中,可以根据第一原始预测值确定第一水平方向梯度和第一垂直方向梯度,并根据第二原始预测值确定第二水平方向梯度和第二垂直方向梯度。然后,根据水平方向速率,该第一水平方向梯度,该第二水平方向梯度,垂直方向速率,该第一垂直方向梯度和该第二垂直方向梯度,获取该子块的每个像素位置的预测补偿值。
例如,可以采用如下公式获取该子块的每个像素位置的预测补偿值b(x,y):
Figure BDA0002273801600000227
当然,公式14只是一个示例,对此不做限制。在公式14中,
Figure BDA0002273801600000228
Figure BDA0002273801600000229
分别表示第一目标参考块的水平方向梯度(即第一水平方向梯度)和第二目标参考块的水平方向梯度(即第二水平方向梯度),
Figure BDA00022738016000002210
Figure BDA00022738016000002211
分别表示第一目标参考块的垂直方向梯度(即第一垂直方向梯度)和第二目标参考块的垂直方向梯度(即第二垂直方向梯度)。关于第一水平方向梯度和第二水平方向梯度,可以通过公式9确定,关于第一垂直方向梯度和第二垂直方向梯度,可以通过公式10确定。关于公式9和公式10的相关内容,可以参见上述实施例。
步骤a7、根据第一原始预测值,第二原始预测值和预测补偿值获取子块的目标预测值。例如,针对该子块的每个像素位置来说,可以根据第一原始预测值,第二原始预测值和该像素位置的预测补偿值,获取该像素位置的目标预测值,即每个像素位置对应一个目标预测值。
例如,可以采用如下公式获取该子块的每个像素位置的目标预测值predBDOF(x,y),该目标预测值predBDOF(x,y)是4*4子块的每个像素位置的亮度值的最终预测值:
predBDOF(x,y)=(P0[x+1][y+1]+P1[x+1][y+1]+b(x,y)+offset4)>>shift4
predBDOF(x,y)=Clip3(0,2BD-1,predBDOF(x,y))
在上述公式中,P(0)(x,y)表示第一目标参考块中的像素位置(x,y)的像素值(如亮度值),P(1)(x,y)表示第二目标参考块中的像素位置(x,y)的像素值(如亮度值)。shift4可为固定整数值,如5,也可为与BD相关的整数值,如Max(3,15-BD),对此shift4的取值不做限制。offset4=2shift4-1,当然,这里只是offset4的示例,对此offset4的取值不做限制。
步骤a8、根据每个子块的目标预测值确定当前块的预测值。
实施例7:以下结合具体应用场景,对编解码方法进行说明,该编解码方法可以包括:
步骤b1、确定是否对当前块启动双向预测值补偿模式,如果是,则执行步骤b2。
示例性的,可以采用实施例1的方式确定是否对当前块启动双向预测值补偿模式,或者,采用实施例5的方式确定是否对当前块启动双向预测值补偿模式,或者,采用实施例4的方式确定是否对当前块启动双向预测值补偿模式,对此确定方式不再赘述。
步骤b2、基于原始运动信息(两个运动矢量和参考帧索引,即上述第一单向运动信息和第二单元运动信息)分别获得在第一参考帧和第二参考帧上的原始预测值I(0)(x,y)和I(1)(x,y)。
步骤b3、针对当前块的每个子块,可以基于原始预测值I(0)(x,y)和I(1)(x,y)获取第一参考帧上像素的水平方向(x方向)速率vx和垂直方向(y方向)速率vy
例如,可以采用如下公式获得梯度的自相关和互相关系数S1,S2,S3,S5和S6
Figure BDA0002273801600000231
示例性的,针对上述公式中的ψx(i,j),ψy(i,j)和θ(i,j),可以采用如下公式获取:
Figure BDA0002273801600000232
θ(i,j)=(I(1)(i,j)>>nb)-(I(0)(i,j)>>nb)
在上述公式中,Ω是4*4子块周围的6*6窗,na和nb分别为min(5,BD-7)和min(8,BD-4)。
然后,基于S1,S2,S3,S5和S6,可以通过如下公式确定运动矢量差值(vx,vy):
Figure BDA0002273801600000241
在上述公式中,
Figure BDA0002273801600000242
th′BIO=213-BD
Figure BDA0002273801600000243
为向下取整,Clip3(a,b,x)表示,若x小于a,则x=a;若x大于b,则x=b;否则x不变。
步骤b4、针对子块的每个像素位置,根据该子块的水平方向速率和垂直方向速率获取该像素位置的预测补偿值,例如,通过如下公式,基于(vx,vy)获得补偿值b(x,y):
Figure BDA0002273801600000244
rnd为round取整操作,
Figure BDA0002273801600000245
Figure BDA0002273801600000246
分别表示水平方向和垂直方向的梯度。
Figure BDA0002273801600000247
示例性的,>>表示右移,I(k)(i,j)表示列表k的参考帧在像素位置(i,j)的像素值,shift1=max(2,14-BD),BD表示比特深度,即亮度值所需比特宽度,一般为10或8。
步骤b5、基于补偿值b(x,y)和原始预测值,可以获得最终的预测值predBDOF(x,y):
predBDOF(x,y)=(I(0)(x,y)+I(1)(x,y)+b(x,y)+ooffset)>>shift
示例性的,shift=15-BD,ooffset=2shift-1+214
实施例8:在实施例1-实施例7的基础上,针对当前块的每个单元区块,还可以对该单元区块进行基于运动矢量调整模式的运动补偿。例如,根据该单元区块的第一原始运动矢量(如上述实施例的第一单向运动信息,包括第一原始运动矢量和第一参考帧)确定该单元区块对应的参考块1,根据该单元区块的第二原始运动矢量(如上述实施例的第二单向运动信息,包括第二原始运动矢量和第二参考帧)确定该单元区块对应的参考块2。根据参考块1的像素值和参考块2的像素值,对第一原始运动矢量和第二原始运动矢量进行调整,得到第一原始运动矢量对应的第一目标运动矢量和第二原始运动矢量对应的第二目标运动矢量。
然后,基于第一目标运动矢量从第一参考帧中确定该单元区块对应的参考块3,基于第二目标运动矢量从第二参考帧中确定该单元区块对应的参考块4。示例性的,关于得到单元区块对应的参考块3和参考块4的过程,可以参见运动矢量调整模式,在此不再赘述。
参见上述实施例,该参考块3就是该单元区块对应的第一参考块,该参考块4就是该单元区块对应的第三参考块。在得到单元区块对应的第一参考块和第三参考块之后,就可以采用本申请实施例的双向预测值补偿模式,具体实现过程参见实施例1-实施例7。
例如,在基于运动矢量调整模式的运动补偿过程得到第一参考块和第三参考块之后,可以基于第一参考块和第三参考块执行基于双向预测值补偿模式的运动补偿。例如,对第一参考块进行扩展,得到该单元区块对应的第二参考块,具体扩展方式参见上述实施例。对第三参考块进行扩展,得到该单元区块对应的第四参考块,具体扩展方式参见上述实施例。
然后,针对该单元区块包括的至少一个子块中的每个子块:从该单元区块对应的第二参考块中选择该子块对应的第一目标参考块,根据第一目标参考块的像素值确定该子块的第一原始预测值。从该单元区块对应的第四参考块中选择该子块对应的第二目标参考块,根据第二目标参考块的像素值确定该子块的第二原始预测值。根据第一原始预测值和第二原始预测值值确定子块的水平方向速率和垂直方向速率;根据水平方向速率和垂直方向速率获取子块的预测补偿值,根据第一原始预测值,第二原始预测值和预测补偿值获取子块的目标预测值。
在一种可能的实施方式中,若针对当前块启动运动矢量调整模式,但是不对当前块启动双向预测值补偿模式,则针对当前块的每个单元区块,根据该单元区块的第一原始运动矢量确定该单元区块对应的参考块1,根据该单元区块的第二原始运动矢量确定该单元区块对应的参考块2。根据参考块1的像素值和参考块2的像素值,对第一原始运动矢量和第二原始运动矢量进行调整,得到第一原始运动矢量对应的第一目标运动矢量和第二原始运动矢量对应的第二目标运动矢量。然后,基于第一目标运动矢量从第一参考帧中确定该单元区块对应的参考块3,基于第二目标运动矢量从第二参考帧中确定该单元区块对应的参考块4。对参考块3的像素值和参考块4的像素值进行加权,得到该单元区块的预测值。
在另一种可能的实施方式中,若针对当前块启动双向预测值补偿模式,但是不对当前块启动运动矢量调整模式,则实现过程参见实施例1-实施例7,在此不再赘述。
在另一种可能的实施方式中,若针对当前块启动双向预测值补偿模式,对当前块启动运动矢量调整模式,即启动双向预测值补偿模式和运动矢量调整模式,则采用如下方式:
针对某个尺寸为dx*dy的单元区块来说,若运动矢量调整模式的最小SAD值dmvrSad[xSbIdx][ySbIdxy]小于预设阈值(可以根据经验配置,对此不做限制,如预设阈值可以为2*dx*dy),则不对该单元区块进行双向预测值补偿过程,直接通过该单元区块的第一目标运动矢量从第一参考帧中确定该单元区块对应的参考块3,基于第二目标运动矢量从第二参考帧中确定该单元区块对应的参考块4。对参考块3的像素值和参考块4的像素值进行加权,得到每个像素位置的预测值。例如,每个像素位置的最终预测值为:pbSamples[x][y]=Clip3(0,2BD–1,(P0[x+1][y+1]+P1[x+1][y+1]+offset4)>>shift4)。
针对某个尺寸为dx*dy的单元区块来说,若运动矢量调整模式的最小SAD值dmvrSad[xSbIdx][ySbIdxy]不小于预设阈值(可以根据经验配置,对此不做限制,如预设阈值可以为2*dx*dy),则对该单元区块进行双向预测值补偿过程,即对该单元区块进行运动矢量调整过程和双向预测值补偿过程。例如,通过该单元区块的第一目标运动矢量从第一参考帧中确定该单元区块对应的参考块3,基于第二目标运动矢量从第二参考帧中确定该单元区块对应的参考块4。对参考块3(即上述实施例中的第一参考块)进行扩展,得到该单元区块对应的第二参考块,对参考块4(即上述实施例中的第三参考块)进行扩展,得到该单元区块对应的第四参考块。然后,针对该单元区块包括的至少一个子块中的每个子块:从该单元区块对应的第二参考块中选择该子块对应的第一目标参考块,并根据第一目标参考块的像素值确定该子块的第一原始预测值。从该单元区块对应的第四参考块中选择该子块对应的第二目标参考块,并根据第二目标参考块的像素值确定该子块的第二原始预测值。然后,基于第一原始预测值和第二原始预测值确定水平方向速率和垂直方向速率,并根据水平方向速率和垂直方向速率确定预测补偿值,并根据预测补偿值得到每个像素位置的预测值。例如,每个像素位置的最终预测值可以为:pbSamples[x][y]=Clip3(0,2BD–1,(P0[x+1][y+1]+P1[x+1][y+1]+b(x,y)+offset4)>>shift4)。
在上述实施例中,运动矢量调整模式的最小SAD值可以为:参考块3和参考块4的SAD。例如,参考块3的像素值与参考块4的像素值之间的下采样的SAD,在确定下采样的SAD时,下采样的参数N根据经验配置,为大于或等于0的整数,若N为0,表示不进行下采样。
在一种可能的实施方式中,上述实施例可以单独实现,也可以任意组合实现,对此不做限制。例如,实施例4可以和实施例1组合实现;实施例4可以和实施例2组合实现;实施例4可以和实施例3组合实现;实施例4可以和实施例5组合实现;实施例4可以和实施例6组合实现;实施例4可以和实施例7组合实现。实施例2可以和实施例1组合实现;实施例2可以和实施例5组合实现。实施例3可以和实施例1组合实现;实施例3可以和实施例5组合实现。实施例1可以单独实现,实施例2可以单独实现,实施例3可以单独实现,实施例5可以单独实现,实施例6可以单独实现,实施例7可以单独实现。实施例8可以和实施例1-实施例7的任意实施例组合实现。当然,上述只是本申请的几个示例,对此不做限制,本申请涉及的所有实施例,均可以单独实现或者组合实现,对此不再详加赘述。
基于与上述方法同样的申请构思,本申请实施例还提出一种编解码装置,应用于编码端或者解码端,如图8所示,为所述装置的结构图,所述装置包括:
确定模块81,用于若如下条件均满足,则确定对当前块启动双向预测值补偿模式:
控制信息为允许当前块使用双向预测值补偿模式;当前块采用平移运动模型;当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;当前块的两个参考帧的加权权重相同;当前块的两个参考帧均是短期参考帧;当前块的宽度,高度和面积均在限定范围内;当前块的两个参考帧的尺寸与当前帧的尺寸均相同;当前块进行亮度分量预测值补偿;
运动补偿模块82,用于若确定对当前块启动双向预测值补偿模式,则对所述当前块进行基于双向预测值补偿模式的运动补偿。
所述确定模块81还用于:若如下条件中的任意一个条件不满足,则确定不对当前块启动双向预测值补偿模式:控制信息为允许当前块使用双向预测值补偿模式;当前块采用平移运动模型;当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;当前块的两个参考帧的加权权重相同;当前块的两个参考帧均是短期参考帧;当前块的宽度,高度和面积均在限定范围内;当前块的两个参考帧的尺寸与当前帧的尺寸均相同;当前块进行亮度分量预测值补偿。
所述控制信息为允许当前块使用双向预测值补偿模式包括:序列级控制信息为允许当前块使用双向预测值补偿模式;和/或,帧级控制信息为允许当前块使用双向预测值补偿模式。
当前块的宽度,高度和面积均在限定范围内包括:宽度大于或等于第一阈值,高度大于或等于第二阈值,面积大于或等于第三阈值;或者,宽度大于或等于第一阈值,高度大于或等于第二阈值,面积大于第四阈值;其中,所述第三阈值大于所述第四阈值。
所述第一阈值为8,所述第二阈值为8,所述第三阈值为128,所述第四阈值为64。
所述运动补偿模块82具体用于:针对所述当前块包括的至少一个子块中的每个子块:
确定所述子块的第一原始预测值和第二原始预测值,并根据所述第一原始预测值和所述第二原始预测值确定所述子块的水平方向速率和垂直方向速率;
根据所述水平方向速率和所述垂直方向速率获取所述子块的预测补偿值,并根据所述第一原始预测值,所述第二原始预测值和所述预测补偿值获取所述子块的目标预测值;
根据每个子块的目标预测值确定所述当前块的预测值。
所述运动补偿模块82确定所述子块的第一原始预测值和第二原始预测值时具体用于:
确定所述子块对应的单元区块;其中,所述当前块包括所述单元区块,所述单元区块包括所述子块;根据所述单元区块的第一单向运动信息从第一参考帧中确定第一参考块,对所述第一参考块进行扩展,得到第二参考块;从所述第二参考块中选择所述子块对应的第一目标参考块,根据所述第一目标参考块的像素值确定所述子块的第一原始预测值;
根据所述单元区块的第二单向运动信息从第二参考帧中确定第三参考块,对所述第三参考块进行扩展,得到第四参考块;从所述第四参考块中选择所述子块对应的第二目标参考块,根据所述第二目标参考块的像素值确定所述子块的第二原始预测值。
所述运动补偿模块82对所述第一参考块进行扩展,得到第二参考块时具体用于:对所述第一参考块的上边缘和下边缘分别填充N行的整像素点,对所述第一参考块的左边缘和右边缘分别填充N列的整像素点,得到第二参考块;
所述运动补偿模块82对所述第三参考块进行扩展,得到第四参考块时具体用于:对所述第三参考块的上边缘和下边缘分别填充N行的整像素点,对所述第三参考块的左边缘和右边缘分别填充N列的整像素点,得到第四参考块;
示例性的,N为0或正整数。
所述第二参考块中的填充的所述N行的整像素点的像素值和填充的所述N列的整像素点的像素值,是通过对所述第一参考帧中的相邻整像素位置的像素值进行拷贝得到,或者,通过对所述第一参考块中的相邻像素点的像素值进行拷贝得到;
所述第四参考块中的填充的所述N行的整像素点的像素值和填充的所述N列的整像素点的像素值,是通过对所述第二参考帧中的相邻整像素位置的像素值进行拷贝得到,或者,通过对所述第三参考块中的相邻像素点的像素值进行拷贝得到。
所述运动补偿模块82根据所述水平方向速率和所述垂直方向速率获取所述子块的预测补偿值时具体用于:根据所述第一原始预测值确定第一水平方向梯度和第一垂直方向梯度;根据所述第二原始预测值确定第二水平方向梯度和第二垂直方向梯度;根据所述水平方向速率,所述第一水平方向梯度,所述第二水平方向梯度,所述垂直方向速率,所述第一垂直方向梯度和所述第二垂直方向梯度,获取所述子块的预测补偿值。
基于与上述方法同样的申请构思,本申请实施例还提出一种编解码装置,应用于编码端或者解码端,所述装置包括:确定模块,用于若如下条件均满足,则确定对当前块启动双向预测值补偿模式:控制信息为允许当前块使用双向预测值补偿模式;当前块采用平移运动模型;当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;当前块的两个参考帧的加权权重相同;当前块的两个参考帧均是短期参考帧;当前块的宽度,高度和面积均在限定范围内;当前块的两个参考帧的尺寸与当前帧的尺寸均相同;运动补偿模块,用于若确定对当前块启动双向预测值补偿模式,则对所述当前块进行基于双向预测值补偿模式的运动补偿。
本申请实施例提供的解码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图9A所示。包括:处理器911和机器可读存储介质912,所述机器可读存储介质912存储有能够被所述处理器911执行的机器可执行指令;所述处理器911用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,处理器用于执行机器可执行指令,以实现如下步骤:
若如下条件均满足,则确定对当前块启动双向预测值补偿模式:
控制信息为允许当前块使用双向预测值补偿模式;当前块采用平移运动模型;当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;当前块的两个参考帧的加权权重相同;当前块的两个参考帧均是短期参考帧;当前块的宽度,高度和面积均在限定范围内;当前块的两个参考帧的尺寸与当前帧的尺寸均相同;当前块进行亮度分量预测值补偿;
若确定对当前块启动双向预测值补偿模式,则对所述当前块进行基于双向预测值补偿模式的运动补偿。
本申请实施例提供的编码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图9B所示。包括:处理器921和机器可读存储介质922,所述机器可读存储介质922存储有能够被所述处理器921执行的机器可执行指令;所述处理器921用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,处理器用于执行机器可执行指令,以实现如下步骤:
若如下条件均满足,则确定对当前块启动双向预测值补偿模式:
控制信息为允许当前块使用双向预测值补偿模式;当前块采用平移运动模型;当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;当前块的两个参考帧的加权权重相同;当前块的两个参考帧均是短期参考帧;当前块的宽度,高度和面积均在限定范围内;当前块的两个参考帧的尺寸与当前帧的尺寸均相同;当前块进行亮度分量预测值补偿;
若确定对当前块启动双向预测值补偿模式,则对所述当前块进行基于双向预测值补偿模式的运动补偿。
基于与上述方法同样的申请构思,本申请实施例还提出一种摄像机,所述摄像机包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现如下步骤:
若如下条件均满足,则确定对当前块启动双向预测值补偿模式:
控制信息为允许当前块使用双向预测值补偿模式;当前块采用平移运动模型;当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;当前块的两个参考帧的加权权重相同;当前块的两个参考帧均是短期参考帧;当前块的宽度,高度和面积均在限定范围内;当前块的两个参考帧的尺寸与当前帧的尺寸均相同;当前块进行亮度分量预测值补偿;
若确定对当前块启动双向预测值补偿模式,则对所述当前块进行基于双向预测值补偿模式的运动补偿。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的编解码方法。其中,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的***、装置、模块或单元,可以由计算机芯片或实体实现,或由具有某种功能的产品来实现。一种典型的实现为计算机,计算机的形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (23)

1.一种编解码方法,其特征在于,所述方法包括:
若对当前块启动运动矢量调整模式,则针对所述当前块中的某个尺寸为dx*dy的单元区块,单元区块是所述当前块包括的至少一个子块中的任一个,若其运动矢量调整模式的最小SAD值不小于预设阈值,所述预设阈值为2*dx*dy,且确定对当前块启用双向光流的预测模式,则根据运动矢量调整模式和所述双向光流的预测模式对该单元区块进行运动补偿得到该单元区块的预测值;根据所述当前块的每个单元区块的预测值确定所述当前块的预测值;
其中,所述根据运动矢量调整模式对该单元区块进行运动补偿,包括:根据该单元区块的第一原始运动矢量确定该单元区块对应的第五参考块,根据该单元区块的第二原始运动矢量确定该单元区块对应的第六参考块;根据第五参考块的像素值和第六参考块的像素值,对第一原始运动矢量和第二原始运动矢量进行调整,得到第一原始运动矢量对应的第一目标运动矢量和第二原始运动矢量对应的第二目标运动矢量;基于所述第一目标运动矢量从第一参考帧中确定该单元区块对应的第一参考块,基于所述第二目标运动矢量从第二参考帧中确定该单元区块对应的第三参考块;
其中,所述根据所述双向光流的预测模式对该单元区块进行运动补偿,包括:针对该单元区块包括的至少一个子块中的每个子块:基于所述第一参考块和所述第三参考块确定所述子块的第一原始预测值和第二原始预测值,并根据所述第一原始预测值和所述第二原始预测值确定所述子块的水平方向速率和垂直方向速率;根据所述水平方向速率和所述垂直方向速率获取所述子块的预测补偿值,并根据所述第一原始预测值,所述第二原始预测值和所述预测补偿值获取所述子块的目标预测值;根据每个子块的目标预测值确定该单元区块的预测值。
2.根据权利要求1所述的方法,其特征在于,
其中,当前块启用双向光流的预测模式时,当前块满足的条件至少包括:
控制信息为允许当前块使用双向光流的预测模式;
当前块采用平移运动模型;
当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;
当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;
当前块的两个参考帧的加权权重相同;
当前块的两个参考帧均是短期参考帧;
当前块的宽度,高度和面积均在限定范围内;
当前块的两个参考帧的尺寸与当前帧的尺寸均相同;
当前块进行亮度分量预测值补偿。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若如下条件中的任意一个条件不满足,则确定不对当前块启动双向光流的预测模式:
控制信息为允许当前块使用双向光流的预测模式;
当前块采用平移运动模型;
当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;
当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;
当前块的两个参考帧的加权权重相同;
当前块的两个参考帧均是短期参考帧;
当前块的宽度,高度和面积均在限定范围内;
当前块的两个参考帧的尺寸与当前帧的尺寸均相同;
当前块进行亮度分量预测值补偿。
4.根据权利要求2或3所述的方法,其特征在于,
所述控制信息为允许当前块使用双向光流的预测模式包括:序列级控制信息为允许当前块使用双向光流的预测模式;和/或,帧级控制信息为允许当前块使用双向光流的预测模式。
5.根据权利要求2或3所述的方法,其特征在于,
当前块的宽度,高度和面积均在限定范围内包括:
宽度大于或等于第一阈值,高度大于或等于第二阈值,面积大于或等于第三阈值;
或者,宽度大于或等于第一阈值,高度大于或等于第二阈值,面积大于第四阈值;
其中,所述第三阈值大于所述第四阈值。
6.根据权利要求5所述的方法,其特征在于,
所述第一阈值为8,所述第二阈值为8,所述第三阈值为128,所述第四阈值为64。
7.根据权利要求1所述的方法,其特征在于,所述基于所述第一参考块和所述第三参考块确定所述子块的第一原始预测值和第二原始预测值,包括:
对所述第一参考块进行扩展,得到第二参考块;从所述第二参考块中选择所述子块对应的第一目标参考块,根据所述第一目标参考块的像素值确定所述子块的第一原始预测值;
对所述第三参考块进行扩展,得到第四参考块;从所述第四参考块中选择所述子块对应的第二目标参考块,根据所述第二目标参考块的像素值确定所述子块的第二原始预测值。
8.根据权利要求7所述的方法,其特征在于,
所述对所述第一参考块进行扩展,得到第二参考块,包括:
对所述第一参考块的上边缘和下边缘分别填充N行的整像素点,对所述第一参考块的左边缘和右边缘分别填充N列的整像素点,得到第二参考块;
所述对所述第三参考块进行扩展,得到第四参考块,包括:
对所述第三参考块的上边缘和下边缘分别填充N行的整像素点,对所述第三参考块的左边缘和右边缘分别填充N列的整像素点,得到第四参考块;
其中,N为0或正整数。
9.根据权利要求8所述的方法,其特征在于,
所述第二参考块中的填充的所述N行的整像素点的像素值和填充的所述N列的整像素点的像素值,是通过对所述第一参考帧中的相邻整像素位置的像素值进行拷贝得到,或者,通过对所述第一参考块中的相邻像素点的像素值进行拷贝得到;
所述第四参考块中的填充的所述N行的整像素点的像素值和填充的所述N列的整像素点的像素值,是通过对所述第二参考帧中的相邻整像素位置的像素值进行拷贝得到,或者,通过对所述第三参考块中的相邻像素点的像素值进行拷贝得到。
10.根据权利要求1所述的方法,其特征在于,
所述根据所述水平方向速率和所述垂直方向速率获取所述子块的预测补偿值,包括:
根据所述第一原始预测值确定第一水平方向梯度和第一垂直方向梯度;
根据所述第二原始预测值确定第二水平方向梯度和第二垂直方向梯度;
根据所述水平方向速率,所述第一水平方向梯度,所述第二水平方向梯度,所述垂直方向速率,所述第一垂直方向梯度和所述第二垂直方向梯度,获取所述子块的预测补偿值。
11.一种编解码装置,其特征在于,所述装置包括:
确定模块,用于若对当前块启动运动矢量调整模式,则针对所述当前块中的某个尺寸为dx*dy的单元区块,单元区块是所述当前块包括的至少一个子块中的任一个,若其运动矢量调整模式的最小SAD值不小于预设阈值,所述预设阈值为2*dx*dy,则确定是否对当前块启用双向光流的预测模式;
运动补偿模块,用于若确定对当前块启用双向光流的预测模式,则根据运动矢量调整模式和所述双向光流的预测模式对该单元区块进行运动补偿得到该单元区块的预测值;根据所述当前块的每个单元区块的预测值确定所述当前块的预测值;
其中,所述根据运动矢量调整模式对该单元区块进行运动补偿,包括:根据该单元区块的第一原始运动矢量确定该单元区块对应的第五参考块,根据该单元区块的第二原始运动矢量确定该单元区块对应的第六参考块;根据第五参考块的像素值和第六参考块的像素值,对第一原始运动矢量和第二原始运动矢量进行调整,得到第一原始运动矢量对应的第一目标运动矢量和第二原始运动矢量对应的第二目标运动矢量;基于所述第一目标运动矢量从第一参考帧中确定该单元区块对应的第一参考块,基于所述第二目标运动矢量从第二参考帧中确定该单元区块对应的第三参考块;
其中,所述根据所述双向光流的预测模式对该单元区块进行运动补偿,包括:针对该单元区块包括的至少一个子块中的每个子块:基于所述第一参考块和所述第三参考块确定所述子块的第一原始预测值和第二原始预测值,并根据所述第一原始预测值和所述第二原始预测值确定所述子块的水平方向速率和垂直方向速率;根据所述水平方向速率和所述垂直方向速率获取所述子块的预测补偿值,并根据所述第一原始预测值,所述第二原始预测值和所述预测补偿值获取所述子块的目标预测值;根据每个子块的目标预测值确定该单元区块的预测值。
12.根据权利要求11所述的装置,其特征在于,
所述确定模块确定当前块启用双向光流的预测模式时,当前块满足的条件至少包括:
控制信息为允许当前块使用双向光流的预测模式;
当前块采用平移运动模型;
当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;
当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;
当前块的两个参考帧的加权权重相同;
当前块的两个参考帧均是短期参考帧;
当前块的宽度,高度和面积均在限定范围内;
当前块的两个参考帧的尺寸与当前帧的尺寸均相同;
当前块进行亮度分量预测值补偿。
13.根据权利要求12所述的装置,其特征在于,所述确定模块还用于:
若如下条件中的任意一个条件不满足,则确定不对当前块启动双向光流的预测模式:
控制信息为允许当前块使用双向光流的预测模式;
当前块采用平移运动模型;
当前块的预测模式不是子块模式,且不是SMVD模式,且不是CIIP模式;
当前块的预测值通过来自两个参考帧的参考块的加权获得,且所述两个参考帧的显示顺序分别位于当前帧的一前一后,且所述两个参考帧与当前帧的距离相同;
当前块的两个参考帧的加权权重相同;
当前块的两个参考帧均是短期参考帧;
当前块的宽度,高度和面积均在限定范围内;
当前块的两个参考帧的尺寸与当前帧的尺寸均相同;
当前块进行亮度分量预测值补偿。
14.根据权利要求12或13所述的装置,其特征在于,
所述控制信息为允许当前块使用双向光流的预测模式包括:序列级控制信息为允许当前块使用双向光流的预测模式;和/或,帧级控制信息为允许当前块使用双向光流的预测模式。
15.根据权利要求12或13所述的装置,其特征在于,
当前块的宽度,高度和面积均在限定范围内包括:
宽度大于或等于第一阈值,高度大于或等于第二阈值,面积大于或等于第三阈值;
或者,宽度大于或等于第一阈值,高度大于或等于第二阈值,面积大于第四阈值;
其中,所述第三阈值大于所述第四阈值。
16.根据权利要求15所述的装置,其特征在于,
所述第一阈值为8,所述第二阈值为8,所述第三阈值为128,所述第四阈值为64。
17.根据权利要求11所述的装置,其特征在于,所述运动补偿模块基于所述第一参考块和所述第三参考块确定所述子块的第一原始预测值和第二原始预测值时具体用于:
对所述第一参考块进行扩展,得到第二参考块;从所述第二参考块中选择所述子块对应的第一目标参考块,根据所述第一目标参考块的像素值确定所述子块的第一原始预测值;
对所述第三参考块进行扩展,得到第四参考块;从所述第四参考块中选择所述子块对应的第二目标参考块,根据所述第二目标参考块的像素值确定所述子块的第二原始预测值。
18.根据权利要求17所述的装置,其特征在于,
所述运动补偿模块对所述第一参考块进行扩展,得到第二参考块时具体用于:
对所述第一参考块的上边缘和下边缘分别填充N行的整像素点,对所述第一参考块的左边缘和右边缘分别填充N列的整像素点,得到第二参考块;
所述运动补偿模块对所述第三参考块进行扩展,得到第四参考块时具体用于:
对所述第三参考块的上边缘和下边缘分别填充N行的整像素点,对所述第三参考块的左边缘和右边缘分别填充N列的整像素点,得到第四参考块;
其中,N为0或正整数。
19.根据权利要求18所述的装置,其特征在于,
所述第二参考块中的填充的所述N行的整像素点的像素值和填充的所述N列的整像素点的像素值,是通过对所述第一参考帧中的相邻整像素位置的像素值进行拷贝得到,或者,通过对所述第一参考块中的相邻像素点的像素值进行拷贝得到;
所述第四参考块中的填充的所述N行的整像素点的像素值和填充的所述N列的整像素点的像素值,是通过对所述第二参考帧中的相邻整像素位置的像素值进行拷贝得到,或者,通过对所述第三参考块中的相邻像素点的像素值进行拷贝得到。
20.根据权利要求11所述的装置,其特征在于,所述运动补偿模块根据所述水平方向速率和所述垂直方向速率获取所述子块的预测补偿值时具体用于:
根据所述第一原始预测值确定第一水平方向梯度和第一垂直方向梯度;
根据所述第二原始预测值确定第二水平方向梯度和第二垂直方向梯度;
根据所述水平方向速率,所述第一水平方向梯度,所述第二水平方向梯度,所述垂直方向速率,所述第一垂直方向梯度和所述第二垂直方向梯度,获取所述子块的预测补偿值。
21.一种解码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
若对当前块启动运动矢量调整模式,则针对所述当前块中的某个尺寸为dx*dy的单元区块,单元区块是所述当前块包括的至少一个子块中的任一个,若其运动矢量调整模式的最小SAD值不小于预设阈值,所述预设阈值为2*dx*dy,且确定对当前块启用双向光流的预测模式,则根据运动矢量调整模式和所述双向光流的预测模式对该单元区块进行运动补偿得到该单元区块的预测值;根据所述当前块的每个单元区块的预测值确定所述当前块的预测值;
其中,所述根据运动矢量调整模式对该单元区块进行运动补偿,包括:根据该单元区块的第一原始运动矢量确定该单元区块对应的第五参考块,根据该单元区块的第二原始运动矢量确定该单元区块对应的第六参考块;根据第五参考块的像素值和第六参考块的像素值,对第一原始运动矢量和第二原始运动矢量进行调整,得到第一原始运动矢量对应的第一目标运动矢量和第二原始运动矢量对应的第二目标运动矢量;基于所述第一目标运动矢量从第一参考帧中确定该单元区块对应的第一参考块,基于所述第二目标运动矢量从第二参考帧中确定该单元区块对应的第三参考块;
其中,所述根据所述双向光流的预测模式对该单元区块进行运动补偿,包括:针对该单元区块包括的至少一个子块中的每个子块:基于所述第一参考块和所述第三参考块确定所述子块的第一原始预测值和第二原始预测值,并根据所述第一原始预测值和所述第二原始预测值确定所述子块的水平方向速率和垂直方向速率;根据所述水平方向速率和所述垂直方向速率获取所述子块的预测补偿值,并根据所述第一原始预测值,所述第二原始预测值和所述预测补偿值获取所述子块的目标预测值;根据每个子块的目标预测值确定该单元区块的预测值。
22.一种编码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
若对当前块启动运动矢量调整模式,则针对所述当前块中的某个尺寸为dx*dy的单元区块,单元区块是所述当前块包括的至少一个子块中的任一个,若其运动矢量调整模式的最小SAD值不小于预设阈值,所述预设阈值为2*dx*dy,且确定对当前块启用双向光流的预测模式,则根据运动矢量调整模式和所述双向光流的预测模式对该单元区块进行运动补偿得到该单元区块的预测值;根据所述当前块的每个单元区块的预测值确定所述当前块的预测值;
其中,所述根据运动矢量调整模式对该单元区块进行运动补偿,包括:根据该单元区块的第一原始运动矢量确定该单元区块对应的第五参考块,根据该单元区块的第二原始运动矢量确定该单元区块对应的第六参考块;根据第五参考块的像素值和第六参考块的像素值,对第一原始运动矢量和第二原始运动矢量进行调整,得到第一原始运动矢量对应的第一目标运动矢量和第二原始运动矢量对应的第二目标运动矢量;基于所述第一目标运动矢量从第一参考帧中确定该单元区块对应的第一参考块,基于所述第二目标运动矢量从第二参考帧中确定该单元区块对应的第三参考块;
其中,所述根据所述双向光流的预测模式对该单元区块进行运动补偿,包括:针对该单元区块包括的至少一个子块中的每个子块:基于所述第一参考块和所述第三参考块确定所述子块的第一原始预测值和第二原始预测值,并根据所述第一原始预测值和所述第二原始预测值确定所述子块的水平方向速率和垂直方向速率;根据所述水平方向速率和所述垂直方向速率获取所述子块的预测补偿值,并根据所述第一原始预测值,所述第二原始预测值和所述预测补偿值获取所述子块的目标预测值;根据每个子块的目标预测值确定该单元区块的预测值。
23.一种摄像机,其特征在于,所述摄像机包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
若对当前块启动运动矢量调整模式,则针对所述当前块中的某个尺寸为dx*dy的单元区块,单元区块是所述当前块包括的至少一个子块中的任一个,若其运动矢量调整模式的最小SAD值不小于预设阈值,所述预设阈值为2*dx*dy,且确定对当前块启用双向光流的预测模式,则根据运动矢量调整模式和所述双向光流的预测模式对该单元区块进行运动补偿得到该单元区块的预测值;根据所述当前块的每个单元区块的预测值确定所述当前块的预测值;
其中,所述根据运动矢量调整模式对该单元区块进行运动补偿,包括:根据该单元区块的第一原始运动矢量确定该单元区块对应的第五参考块,根据该单元区块的第二原始运动矢量确定该单元区块对应的第六参考块;根据第五参考块的像素值和第六参考块的像素值,对第一原始运动矢量和第二原始运动矢量进行调整,得到第一原始运动矢量对应的第一目标运动矢量和第二原始运动矢量对应的第二目标运动矢量;基于所述第一目标运动矢量从第一参考帧中确定该单元区块对应的第一参考块,基于所述第二目标运动矢量从第二参考帧中确定该单元区块对应的第三参考块;
其中,所述根据所述双向光流的预测模式对该单元区块进行运动补偿,包括:针对该单元区块包括的至少一个子块中的每个子块:基于所述第一参考块和所述第三参考块确定所述子块的第一原始预测值和第二原始预测值,并根据所述第一原始预测值和所述第二原始预测值确定所述子块的水平方向速率和垂直方向速率;根据所述水平方向速率和所述垂直方向速率获取所述子块的预测补偿值,并根据所述第一原始预测值,所述第二原始预测值和所述预测补偿值获取所述子块的目标预测值;根据每个子块的目标预测值确定该单元区块的预测值。
CN201911115040.XA 2019-11-14 2019-11-14 一种编解码方法、装置及其设备 Active CN112804534B (zh)

Priority Applications (8)

Application Number Priority Date Filing Date Title
CN202010988727.0A CN112135145B (zh) 2019-11-14 2019-11-14 一种编解码方法、装置及其设备
CN202010988777.9A CN112135146B (zh) 2019-11-14 2019-11-14 一种编解码方法、装置及其设备
CN201911115040.XA CN112804534B (zh) 2019-11-14 2019-11-14 一种编解码方法、装置及其设备
KR1020227011043A KR20220050228A (ko) 2019-11-14 2020-10-28 인코딩 및 디코딩 방법, 장치 및 이의 기기
US17/766,217 US20240073447A1 (en) 2019-11-14 2020-10-28 Encoding and decoding method and apparatus, and devices therefor
JP2022520622A JP7419511B2 (ja) 2019-11-14 2020-10-28 符号化及び復号方法、装置及びデバイス
PCT/CN2020/124311 WO2021093589A1 (zh) 2019-11-14 2020-10-28 一种编解码方法、装置及其设备
JP2024001379A JP2024045191A (ja) 2019-11-14 2024-01-09 符号化及び復号方法、装置及びデバイス

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911115040.XA CN112804534B (zh) 2019-11-14 2019-11-14 一种编解码方法、装置及其设备

Related Child Applications (2)

Application Number Title Priority Date Filing Date
CN202010988727.0A Division CN112135145B (zh) 2019-11-14 2019-11-14 一种编解码方法、装置及其设备
CN202010988777.9A Division CN112135146B (zh) 2019-11-14 2019-11-14 一种编解码方法、装置及其设备

Publications (2)

Publication Number Publication Date
CN112804534A CN112804534A (zh) 2021-05-14
CN112804534B true CN112804534B (zh) 2022-03-01

Family

ID=74036799

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202010988727.0A Active CN112135145B (zh) 2019-11-14 2019-11-14 一种编解码方法、装置及其设备
CN202010988777.9A Active CN112135146B (zh) 2019-11-14 2019-11-14 一种编解码方法、装置及其设备
CN201911115040.XA Active CN112804534B (zh) 2019-11-14 2019-11-14 一种编解码方法、装置及其设备

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN202010988727.0A Active CN112135145B (zh) 2019-11-14 2019-11-14 一种编解码方法、装置及其设备
CN202010988777.9A Active CN112135146B (zh) 2019-11-14 2019-11-14 一种编解码方法、装置及其设备

Country Status (5)

Country Link
US (1) US20240073447A1 (zh)
JP (2) JP7419511B2 (zh)
KR (1) KR20220050228A (zh)
CN (3) CN112135145B (zh)
WO (1) WO2021093589A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4391534A1 (en) * 2021-08-16 2024-06-26 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Inter-frame prediction method, coder, decoder, and storage medium
CN117061824B (zh) * 2023-10-12 2024-01-26 深圳云天畅想信息科技有限公司 流媒体视频补帧方法、装置及计算机设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019045427A1 (ko) * 2017-08-29 2019-03-07 에스케이텔레콤 주식회사 양방향 옵티컬 플로우를 이용한 움직임 보상 방법 및 장치
KR20190024553A (ko) * 2017-08-29 2019-03-08 에스케이텔레콤 주식회사 양방향 옵티컬 플로우를 이용한 움직임 보상 방법 및 장치
CN110402579A (zh) * 2017-01-04 2019-11-01 三星电子株式会社 视频解码方法和设备以及视频编码方法和设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6810144B2 (en) * 2001-07-20 2004-10-26 Koninklijke Philips Electronics N.V. Methods of and system for detecting a cartoon in a video data stream
JP4346868B2 (ja) * 2002-06-17 2009-10-21 株式会社日立製作所 動画符号化装置、及び動画記録再生装置、及び動画再生装置、及び動画符号化方法ならびに動画記録再生方法
WO2011126309A2 (ko) * 2010-04-06 2011-10-13 삼성전자 주식회사 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
CN102387360B (zh) * 2010-09-02 2016-05-11 乐金电子(中国)研究开发中心有限公司 视频编解码帧间图像预测方法及视频编解码器
CA2988107A1 (en) * 2015-06-19 2016-12-22 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding
EP3332551A4 (en) * 2015-09-02 2019-01-16 MediaTek Inc. METHOD AND APPARATUS FOR MOVEMENT COMPENSATION FOR VIDEO CODING BASED ON TECHNIQUES FOR OPERATIONAL RADIO RADIATION
US10375413B2 (en) * 2015-09-28 2019-08-06 Qualcomm Incorporated Bi-directional optical flow for video coding
KR102646890B1 (ko) * 2015-10-13 2024-03-12 삼성전자주식회사 영상을 부호화 또는 복호화하는 방법 및 장치
CN116866581A (zh) * 2017-05-17 2023-10-10 株式会社Kt 对视频解码和编码的方法以及存储压缩视频数据的装置
CN110324623B (zh) * 2018-03-30 2021-09-07 华为技术有限公司 一种双向帧间预测方法及装置
CN111385569B (zh) * 2018-12-28 2022-04-26 杭州海康威视数字技术股份有限公司 一种编解码方法及其设备
CN110312132B (zh) * 2019-03-11 2020-05-12 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN113411606B (zh) * 2019-06-21 2022-07-01 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN113596462B (zh) * 2019-09-23 2022-07-01 杭州海康威视数字技术股份有限公司 编解码方法、装置及设备
CN114556955B (zh) * 2019-10-13 2024-04-05 北京字节跳动网络技术有限公司 参考图片重采样与视频编解码工具之间的相互作用

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110402579A (zh) * 2017-01-04 2019-11-01 三星电子株式会社 视频解码方法和设备以及视频编码方法和设备
WO2019045427A1 (ko) * 2017-08-29 2019-03-07 에스케이텔레콤 주식회사 양방향 옵티컬 플로우를 이용한 움직임 보상 방법 및 장치
KR20190024553A (ko) * 2017-08-29 2019-03-08 에스케이텔레콤 주식회사 양방향 옵티컬 플로우를 이용한 움직임 보상 방법 및 장치

Also Published As

Publication number Publication date
CN112135145A (zh) 2020-12-25
CN112804534A (zh) 2021-05-14
JP7419511B2 (ja) 2024-01-22
CN112135145B (zh) 2022-01-25
JP2022550593A (ja) 2022-12-02
KR20220050228A (ko) 2022-04-22
CN112135146A (zh) 2020-12-25
JP2024045191A (ja) 2024-04-02
US20240073447A1 (en) 2024-02-29
WO2021093589A1 (zh) 2021-05-20
CN112135146B (zh) 2021-12-24

Similar Documents

Publication Publication Date Title
CN112866709B (zh) 一种编解码方法、装置及其设备
US20240073437A1 (en) Encoding and decoding method and apparatus, and devices
JP2024045191A (ja) 符号化及び復号方法、装置及びデバイス

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: 40046510

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant