CN114007078B - 一种运动信息候选列表的构建方法、装置及其设备 - Google Patents

一种运动信息候选列表的构建方法、装置及其设备 Download PDF

Info

Publication number
CN114007078B
CN114007078B CN202111150918.0A CN202111150918A CN114007078B CN 114007078 B CN114007078 B CN 114007078B CN 202111150918 A CN202111150918 A CN 202111150918A CN 114007078 B CN114007078 B CN 114007078B
Authority
CN
China
Prior art keywords
motion information
current block
backward
block
candidate list
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
CN202111150918.0A
Other languages
English (en)
Other versions
CN114007078A (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 CN202111150918.0A priority Critical patent/CN114007078B/zh
Publication of CN114007078A publication Critical patent/CN114007078A/zh
Application granted granted Critical
Publication of CN114007078B publication Critical patent/CN114007078B/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/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
    • 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/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
    • 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

Abstract

本申请提供一种运动信息候选列表的构建方法、装置及其设备,包括:若当前块所在当前帧为B帧,则从当前帧的同位帧中确定出所述当前块的时域相邻块;基于时域相邻块的运动信息确定当前块的时域运动信息,所述时域运动信息包括前向运动信息和后向运动信息;其中,若所述时域相邻块的前向运动信息不可用,所述时域相邻块的后向运动信息可用,则根据所述时域相邻块的后向运动信息确定所述时域运动信息中的后向运动信息;基于所述当前块的时域运动信息,构建所述当前块的运动信息候选列表。通过本申请提高预测准确性。

Description

一种运动信息候选列表的构建方法、装置及其设备
技术领域
本申请涉及编解码领域,尤其是涉及一种运动信息候选列表的构建方法、装置及其设备。
背景技术
为了达到节约空间的目的,视频图像都是经过编码后才传输的,完整的视频编码可以包括预测、变换、量化、熵编码、滤波等过程。针对预测过程,预测过程可以包括帧内预测和帧间预测,帧间预测是指利用视频时间域的相关性,使用邻近已编码图像的像素预测当前像素,以达到有效去除视频时域冗余的目的。帧内预测是指利用视频空间域的相关性,使用当前帧图像的已编码块的像素预测当前像素,以达到去除视频空域冗余的目的。
在帧间预测过程中,通常需要为当前块构建运动信息候选列表,该运动信息候选列表可以包括多个候选运动信息,运动信息候选列表中的候选运动信息,可以为空域运动信息,也可以为时域运动信息。显然,为了构建运动信息候选列表,就需要获取当前块的时域运动信息,相关技术中获取的时域运动信息,存在预测效果不佳,编码性能较差等问题。
发明内容
本申请提供一种运动信息候选列表的构建方法、装置及其设备,提高预测准确性。
本申请提供一种运动信息候选列表的构建方法,所述方法包括:
若当前块所在当前帧为B帧,则从当前帧的同位帧中确定出所述当前块的时域相邻块;
基于时域相邻块的运动信息确定当前块的时域运动信息,所述时域运动信息包括前向运动信息和后向运动信息;其中,若所述时域相邻块的前向运动信息不可用,所述时域相邻块的后向运动信息可用,则根据所述时域相邻块的后向运动信息确定所述时域运动信息中的后向运动信息;基于所述当前块的时域运动信息,构建所述当前块的运动信息候选列表。
本申请提供一种运动信息候选列表的构建装置,所述装置包括:
确定模块,用于若当前块所在当前帧为B帧,则从当前帧的同位帧中确定出所述当前块的时域相邻块;以及,基于时域相邻块的运动信息确定当前块的时域运动信息,所述时域运动信息包括前向运动信息和后向运动信息;其中,若所述时域相邻块的前向运动信息不可用,所述时域相邻块的后向运动信息可用,则所述确定模块根据所述时域相邻块的后向运动信息确定所述时域运动信息中的后向运动信息;构建模块,用于基于所述当前块的时域运动信息,构建所述当前块的运动信息候选列表。
本申请提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
若当前块所在当前帧为B帧,则从当前帧的同位帧中确定出所述当前块的时域相邻块;
基于时域相邻块的运动信息确定当前块的时域运动信息,所述时域运动信息包括前向运动信息和后向运动信息;其中,若所述时域相邻块的前向运动信息不可用,所述时域相邻块的后向运动信息可用,则根据所述时域相邻块的后向运动信息确定所述时域运动信息中的后向运动信息;基于所述当前块的时域运动信息,构建所述当前块的运动信息候选列表。
本申请提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
若当前块所在当前帧为B帧,则从当前帧的同位帧中确定出所述当前块的时域相邻块;
基于时域相邻块的运动信息确定当前块的时域运动信息,所述时域运动信息包括前向运动信息和后向运动信息;其中,若所述时域相邻块的前向运动信息不可用,所述时域相邻块的后向运动信息可用,则根据所述时域相邻块的后向运动信息确定所述时域运动信息中的后向运动信息;基于所述当前块的时域运动信息,构建所述当前块的运动信息候选列表。
由以上技术方案可见,本申请实施例中,在时域相邻块的前向运动信息不可用,且时域相邻块的后向运动信息可用时,可以根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息,从而获取当前块的时域运动信息,提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值更加接近原始像素,并带来编码性能的提高。
附图说明
图1是视频编码框架的示意图;
图2是本申请一种实施方式中的运动信息候选列表的构建方法的流程图;
图3A-图3C是本申请一种实施方式中的时域运动信息的导出示意图;
图4A-图4C是本申请一种实施方式中的权重预测角度的示意图;
图4D是本申请一种实施方式中的权重预测位置的示意图;
图4E是本申请一种实施方式中的参考权重值的示意图;
图4F是本申请一种实施方式中的当前块的相邻块的示意图;
图4G是本申请一种实施方式中的角度分区的示意图;
图5A是本申请一种实施方式中的UMVE模式预测过程示意图;
图5B是本申请一种实施方式中的AFFINE模式预测过程示意图;
图6A是本申请一种实施方式中的运动信息候选列表的构建装置的结构示意图;
图6B是本申请一种实施方式中的解码端设备的硬件结构图;
图6C是本申请一种实施方式中的编码端设备的硬件结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请实施例和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但是,这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息,取决于语境。此外,所使用的词语“如果”可以被解释成为“在……时”,或“当……时”,或“响应于确定”。
本申请实施例提出一种运动信息候选列表的构建方法、装置及其设备,涉及如下概念:
视频编码框架:参见图1所示,可以使用视频编码框架实现本申请实施例的编码端处理流程,视频解码框架的示意图与图1类似,在此不再赘述,可以使用视频解码框架实现本申请实施例的解码端处理流程。示例性的,在视频编码框架和视频解码框架中,可以包括但不限于:帧内预测/帧间预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端处理流程,在解码端,通过这些模块之间的配合,可以实现解码端处理流程。
帧内预测(intra prediction):考虑到在图像中,相邻块之间存在很强的空域相关性,因此,可以利用周围已经重建的像素作为参考像素对当前未编码块进行预测,因此,只需要对残差信号(原始信号-预测信号)进行后续编码处理,而不是对原始信号进行编码,有效去除了空域上的冗余,达到去除视频空域冗余的目的,大大提高了视频信号的压缩效率。
帧间预测(inter prediction):基于视频时间域的相关性,由于视频序列包含较强的时域相关性,使用邻近已编码图像像素预测当前图像的像素,达到有效去除视频时域冗余的目的。
变换:将以空间域中像素形式描述的图像转换至变换域,以变换系数加以表示。由于大多数图像都含有较多平坦区域和缓慢变化区域,变换可以使图像能量在空间域的分散分布转换为变换域的相对集中分布,去除信号间的频域相关性,配合量化过程,可以有效压缩码流。
熵编码:按照信息熵的原理进行的无损编码方式,将一系列用来表示视频序列的元素符号转变为用来传输或存储的二进制码流,输入的符号可能包括量化后的变换系数、运动矢量信息、预测模式信息,变换量化相关语法等。输出数据即原始视频压缩后的最终码流。熵编码可以有效地去除这些视频元素符号的统计冗余,是保证视频编码压缩效率的重要工具之一。
运动矢量(Motion Vector,MV):在帧间预测中,可以使用运动矢量表示当前帧的当前块与参考帧的参考块之间的相对位移。每个划分的块都有相应的运动矢量传送到解码端,如果对每个块的运动矢量进行独立编码和传输,特别是小尺寸的大量块,则消耗很多比特。为降低用于编码运动矢量的比特数,可以利用相邻块之间的空间相关性,根据相邻已编码块的运动矢量对当前块的运动矢量进行预测,然后对预测差进行编码,这样可以有效降低表示运动矢量的比特数。在对当前块的运动矢量进行编码时,可以先使用相邻已编码块的运动矢量预测当前块的运动矢量,然后对该运动矢量的预测值(MVP,Motion VectorPrediction)与运动矢量的真正估值之间的差值(MVD,Motion Vector Difference)进行编码。
运动信息(Motion Information):由于运动矢量表示当前块与某个参考块之间的位置偏移,为了准确的获取指向块的信息,除了运动矢量,还需要参考帧图像的索引信息来表示当前块使用哪个参考帧图像。在视频编码技术中,对于当前帧,通常可以建立一个参考帧图像列表,参考帧图像索引信息则表示当前块采用了参考帧图像列表中的第几个参考帧图像。
示例性的,很多编码技术还支持多个参考图像列表,因此,还可以使用一个索引值来表示使用了哪一个参考图像列表,这个索引值可以称为参考方向。综上所述,在视频编码技术中,可以将运动矢量,参考帧索引,参考方向等与运动相关的信息统称为运动信息。
Skip模式(跳过模式)和Direct模式(直接模式):在帧间预测过程中,由于视频存在很强的时域相关性,即相邻两帧图像有很多相似块,当前帧的当前块往往在相邻参考图像中进行运动搜索,找到与当前块最匹配的块作为参考块。由于参考块与当前块相似度高,两者的差值非常小,因此,编码差值的码率开销通常远小于编码当前块像素值带来的码率开销。
为了表示与当前块最匹配块的位置,需要编码很多运动信息传递到解码端,使得解码端知晓最匹配块的位置。而运动信息,尤其是运动矢量,需要消耗非常多的码率进行传递。为了节省这部分码率开销,设计了比较节省运动信息的特殊模式:Skip模式和Direct模式。
在Skip模式和Direct模式下,当前块的运动信息完全复用时域或空域某个相邻块的运动信息,即,从周围多个块的运动信息集合中,选择一个运动信息作为当前块的运动信息。
因此,该模式只需要编码一个索引值表示当前块使用运动信息集合中的哪个运动信息,而Skip模式和Direct模式之间的区别在于:Skip模式不需要编码残差,Direct模式需要编码残差,Direct模式是一种帧间预测中的直接模式,它需要传输残差信息,解码端通过解析索引即可推导当前块的运动信息,获取运动信息后将预测值加上残差值得到重建值。
率失真原则(Rate-Distortion Optimized):评价编码效率的有两大指标:码率和PSNR(Peak Signal to Noise Ratio,峰值信噪比),比特流越小,则压缩率越大,PSNR越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:J(mode)=D+λ*R,其中,D表示Distortion(失真),通常可以使用SSE指标来进行衡量,SSE是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。在模式选择时,若使用RDO原则去对编码模式做比较决策,通常可以保证编码性能最佳。
在帧间预测过程中,通常需要为当前块构建运动信息候选列表,该运动信息候选列表可以包括多个候选运动信息,运动信息候选列表中的候选运动信息,可以为空域运动信息,也可以为时域运动信息。显然,为了构建运动信息候选列表,就需要获取当前块的时域运动信息,相关技术中获取的时域运动信息,存在预测效果不佳,编码性能较差等问题。
针对上述发现,本实施例中,在时域相邻块的前向运动信息不可用,且时域相邻块的后向运动信息可用时,可以根据时域相邻块的后向运动信息确定当前块的时域运动信息中的前向运动信息,根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息,从而获取当前块的时域运动信息,提高预测的准确性,提高预测性能,提高编码性能。
以下结合几个具体实施例,对运动信息候选列表的构建方法进行详细说明。
实施例1:参见图2所示,为运动信息候选列表的构建方法的流程示意图,该方法可以应用于解码端(也称为视频解码器)或者编码端(也称为视频编码器),该方法可以包括:
步骤201,若当前块所在当前帧为B帧,则从当前帧的同位帧中确定出当前块的时域相邻块。
示例性的,若当前块所在当前帧为B帧,则可以基于当前块的预设位置,从当前帧的同位帧(也可以称为collocated帧)中确定出与该预设位置对应的时域相邻块(也可以称为collocated位置)。
示例性的,当前块的预设位置可以根据经验进行配置,对此当前块的预设位置不做限制,比如说,当前块的预设位置可以为:当前块的左上角像素位置,或当前块的右上角像素位置,或当前块的左下角像素位置,或当前块的右下角像素位置,或当前块的中心像素位置等。
示例性的,同位帧(collocated帧)可以为当前帧的后向参考帧列表中参考帧索引的对应帧,如后向参考帧列表中的参考帧索引为0的对应帧,或,后向参考帧列表中的参考帧索引为1的对应帧,或,后向参考帧列表中的参考帧索引为2的对应帧,对此不做限制。同位帧也可以为当前帧的前向参考帧列表中参考帧索引的对应帧,如前向参考帧列表中的参考帧索引为0的对应帧,或,前向参考帧列表中的参考帧索引为1的对应帧,或,前向参考帧列表中的参考帧索引为2的对应帧,对此不做限制。当然,上述只是几个示例,对此不做限制。
在一种可能的实现方式中,同位帧的确定方式是,若当前帧为P帧,则当前帧的同位帧是前向参考帧列表(即参考帧列表List0,前向参考帧列表也可以称为参考图像队列0)中参考帧索引为0的帧,若当前帧为B帧,则当前帧的同位帧是后向参考帧列表(即参考帧列表List1,后向参考帧列表也可以称为参考图像队列1)中参考帧索引为0的帧。
示例性的,关于同位帧(collocated帧)的获取方式,可以是预设的同位帧,如将当前帧的前向参考帧列表中的第一个参考帧作为同位帧,或将当前帧的后向参考帧列表中的第一个参考帧作为同位帧;或者,也可以是导出的同位帧,如将当前帧的前向参考帧列表中与当前帧最近的参考帧作为同位帧,或将当前帧的后向参考帧列表中与当前帧最近的参考帧作为同位帧;或者,还可以是从编码比特流中解析出的参考帧,如针对解码端来说,解码端可以从码流中解析出同位帧的指示信息,并根据同位帧的指示信息确定同位帧。
示例性的,collocated位置是同位帧中与当前块的预设位置对应的时域相邻块。
步骤202,基于时域相邻块的运动信息确定当前块的时域运动信息,该时域运动信息可以包括前向运动信息和后向运动信息。示例性的,若时域相邻块的前向运动信息不可用,时域相邻块的后向运动信息可用,则根据时域相邻块的后向运动信息确定该时域运动信息中的后向运动信息。
在另一种可能的实施方式中,若时域相邻块的前向运动信息可用,时域相邻块的后向运动信息不可用,则根据时域相邻块的前向运动信息确定该时域运动信息中的前向运动信息,并根据时域相邻块的前向运动信息确定该时域运动信息中的后向运动信息。
在另一种可能的实施方式中,若时域相邻块的前向运动信息可用,时域相邻块的后向运动信息可用,则根据时域相邻块的前向运动信息确定该时域运动信息中的前向运动信息,并根据时域相邻块的后向运动信息确定该时域运动信息中的后向运动信息。
在另一种可能的实施方式中,若时域相邻块的前向运动信息可用,时域相邻块的后向运动信息可用,则根据时域相邻块的前向运动信息确定该时域运动信息中的前向运动信息,并根据时域相邻块的前向运动信息确定该时域运动信息中的后向运动信息。
在另一种可能的实施方式中,若时域相邻块的前向运动信息可用,时域相邻块的后向运动信息不可用,则根据时域相邻块的前向运动信息确定该时域运动信息中的前向运动信息。
在另一种可能的实施方式中,若时域相邻块的前向运动信息不可用,时域相邻块的后向运动信息可用,则根据时域相邻块的后向运动信息确定该时域运动信息中的前向运动信息,并根据时域相邻块的后向运动信息确定该时域运动信息中的后向运动信息。
在上述实施例中,时域相邻块的运动信息包括时域相邻块的前向运动信息和时域相邻块的后向运动信息。时域相邻块的前向运动信息包括时域相邻块的前向运动矢量和时域相邻块的前向参考帧索引,该前向参考帧索引对应时域相邻块的前向参考帧。时域相邻块的后向运动信息包括时域相邻块的后向运动矢量和时域相邻块的后向参考帧索引,该后向参考帧索引对应时域相邻块的后向参考帧。当前块的时域运动信息包括前向运动信息和后向运动信息,时域运动信息中的前向运动信息包括当前块的前向运动矢量和当前块的前向参考帧索引,该前向参考帧索引对应当前块的前向参考帧。当前块的前向参考帧是当前块的前向参考帧列表中的参考帧,如当前块的前向参考帧列表中的参考帧索引为0的参考帧,或当前块的前向参考帧列表中的参考帧索引为1的参考帧,对此不做限制。时域运动信息中的后向运动信息包括当前块的后向运动矢量和当前块的后向参考帧索引,该后向参考帧索引对应当前块的后向参考帧。当前块的后向参考帧是当前块的后向参考帧列表中的参考帧,如当前块的后向参考帧列表中的参考帧索引为0的参考帧,或当前块的后向参考帧列表中的参考帧索引为1的参考帧,对此不做限制。
示例性的,根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息,可以包括但不限于:基于同位帧与时域相邻块的前向参考帧之间的距离,以及当前帧与当前块的前向参考帧之间的距离,对时域相邻块的前向运动矢量进行伸缩,得到伸缩后的运动矢量,将伸缩后的运动矢量确定为当前块的前向运动矢量;基于当前块的该前向运动矢量和当前块的前向参考帧索引确定当前块的时域运动信息中的前向运动信息。比如说,当前块的时域运动信息中的前向运动信息包括当前块的该前向运动矢量和当前块的前向参考帧索引。
示例性的,根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息,可以包括但不限于:基于同位帧与时域相邻块的后向参考帧之间的距离,以及当前帧与当前块的后向参考帧之间的距离,对时域相邻块的后向运动矢量进行伸缩,得到伸缩后的运动矢量,将伸缩后的运动矢量确定为当前块的后向运动矢量;基于当前块的该后向运动矢量和当前块的后向参考帧索引确定当前块的时域运动信息中的后向运动信息。比如说,当前块的时域运动信息中的后向运动信息包括当前块的该后向运动矢量和当前块的后向参考帧索引。
示例性的,根据时域相邻块的后向运动信息确定当前块的时域运动信息中的前向运动信息,可以包括但不限于:基于同位帧与时域相邻块的后向参考帧之间的距离,以及当前帧与当前块的前向参考帧之间的距离,对时域相邻块的后向运动矢量进行伸缩,得到伸缩后的运动矢量,将伸缩后的运动矢量确定为当前块的前向运动矢量;基于当前块的该前向运动矢量和当前块的前向参考帧索引确定当前块的时域运动信息中的前向运动信息。比如说,当前块的时域运动信息中的前向运动信息包括当前块的该前向运动矢量和当前块的前向参考帧索引。
示例性的,根据时域相邻块的前向运动信息确定当前块的时域运动信息中的后向运动信息,可以包括但不限于:基于同位帧与时域相邻块的前向参考帧之间的距离,以及当前帧与当前块的后向参考帧之间的距离,对时域相邻块的前向运动矢量进行伸缩,得到伸缩后的运动矢量,将伸缩后的运动矢量确定为当前块的后向运动矢量;基于当前块的该后向运动矢量和当前块的后向参考帧索引确定当前块的时域运动信息中的后向运动信息。比如说,当前块的时域运动信息中的后向运动信息包括当前块的该后向运动矢量和当前块的后向参考帧索引。
步骤203,基于当前块的时域运动信息,构建当前块的运动信息候选列表。
由以上技术方案可见,本申请实施例中,在时域相邻块的前向运动信息不可用,且时域相邻块的后向运动信息可用时,可以根据时域相邻块的后向运动信息确定当前块的时域运动信息中的前向运动信息,根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息,从而获取当前块的时域运动信息,提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值更加接近原始像素,并带来编码性能的提高。
实施例2:为了得到当前块的时域运动信息,可以采用如下方式实现:
若当前块所在当前帧为P帧,即当前图像是P图像,采用如下步骤确定时域运动信息:
步骤a1、基于当前块的预设位置,从当前帧的同位帧中确定出与该预设位置对应的时域相邻块,若该时域相邻块的运动信息不可用,则当前块的时域运动信息为零运动信息。
示例性的,该同位帧可以是当前帧的前向参考帧列表中参考索引为0的图像,该前向参考帧列表还可以称为参考图像队列0,即List0。当前块的预设位置可以是左上角亮度样本位置。若时域相邻块的运动信息的参考帧索引为-1,则表示时域相邻块的运动信息不可用。
综上所述,步骤a1还可以表示为:若参考图像队列0中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本(即时域相邻块)所在的时域运动信息存储单元存储的参考帧索引为-1(表示运动信息不可用),则当前块的L0运动矢量MvE0为零矢量,当前块的L0参考索引值RefIdxL0为0,结束时域运动信息导出过程。
步骤a2、若时域相邻块的运动信息可用,则当前块的L0参考索引RefIdxL0为0,L0参考索引对应的图像的距离索引记为DistanceIndexL0,L0参考索引对应的图像的块距离记为BlockDistanceL0。时域相邻块的运动矢量记为mvRef(mvRef_x,mvRef_y),时域相邻块所在图像的距离索引记为DistanceIndexCol,运动矢量指向图像的距离索引记为DistanceIndexRef。
示例性的,若参考图像队列0中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本(即时域相邻块)所在的时域运动信息存储单元存储的参考帧索引不为-1,如存储的参考帧索引大于或者等于0,则表示时域相邻块的运动信息可用。
示例性的,当前块的L0参考索引RefIdxL0为0,表示参考图像队列0中的第一个图像,即L0参考索引对应参考图像队列0中的第一个图像。L0参考索引对应的图像的距离索引DistanceIndexL0,表示参考图像队列0中第一个图像的距离索引,如POC(显示顺序)。L0参考索引对应图像的块距离BlockDistanceL0,表示L0参考索引对应图像与当前帧之间的距离,如参考图像队列0中第一个图像的距离索引DistanceIndexL0与当前帧的距离索引的差值。
示例性的,在参考图像队列0中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L0运动矢量记为mvRef(mvRef_x,mvRef_y),即时域相邻块的运动矢量。该运动信息存储单元所在的图像的距离索引记为DistanceIndexCol,该运动矢量指向的参考单元所在的图像的距离索引记为DistanceIndexRef。
步骤a3、基于DistanceIndexCol和DistanceIndexRef,可以采用如下方式确定时域相邻块所在的图像与时域相邻块的运动矢量指向的图像之间的距离BlockDistanceRef。
BlockDistanceRef=DistanceIndexCol–DistanceIndexRef
步骤a4、令当前块的L0参考索引RefIdxL0为0,采用如下公式确定当前块的L0运动矢量mvE0(mvE0_x,mvE0_y),而L0参考索引和L0运动矢量就组成当前块的时域运动信息。
mvE0_x=Clip3(-32768,32767,Sign(mvRef_x*BlockDistanceL0*BlockDistanceRef)*(((Abs(mvRef_x*BlockDistanceL0*(16384/BlockDistanceRef)))+8192)>>14));
mvE0_y=Clip3(-32768,32767,Sign(mvRef_y*BlockDistanceL0*BlockDistanceRef)*(((Abs(mvRef_y*BlockDistanceL0*(16384/BlockDistanceRef)))+8192)>>14))。
在上述公式中,Clip3(-32768,32767),用于将mvE0_x和mvE0_y的取值范围限制在-32768与32767之间,即取值小于-32768时,令mvE0_x和mvE0_y的取值为-32768,取值大于32767时,令mvE0_x和mvE0_y的取值为32767。Sign表示符号函数,Abs表示求绝对值,>>表示右移。mvRef_x表示时域相邻块的水平运动矢量,mvRef_y表示时域相邻块的垂直运动矢量。mvE0_x表示当前块的时域运动信息的水平运动矢量,mvE0_y表示当前块的时域运动信息的垂直运动矢量。BlockDistanceL0和BlockDistanceRef的定义参见上述步骤,在此不在赘述。当然,上述公式中的各数值,还可以根据实际需要进行调整,对此不做限制。
步骤a5、令interPredRefMode的值等于‘PRED_List0’。
基于上述各步骤,若当前帧为P帧,就可以得到当前块的时域运动信息。
若当前块所在当前帧为B帧,即当前图像是B图像,采用如下步骤确定时域运动信息:
步骤b1、基于当前块的预设位置,从当前帧的同位帧中确定出与该预设位置对应的时域相邻块,若时域相邻块的前向运动信息不可用,根据MVP方式得到当前块的时域运动信息。
示例性的,同位帧可以是当前帧的后向参考帧列表中参考索引为0的图像,后向参考帧列表还可以称为参考图像队列1,即List1。当前块的预设位置可以是左上角亮度样本位置。若时域相邻块的运动信息的参考帧索引为-1,则表示时域相邻块的前向运动信息不可用。
示例性的,根据MVP方式得到当前块的时域运动信息,可以包括但不限于:以当前块所在编码单元的尺寸和位置作为当前块的尺寸和位置,将根据MVP得到的L0运动矢量预测值和L1运动矢量预测值分别作为当前块的L0运动矢量MvE0和L1运动矢量MvE1,并令当前块的L0参考索引RefIdxL0和L1参考索引RefIdxL1均等于0,结束运动信息导出过程。
综上所述,步骤b1还可以表示为:如果参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的参考帧索引为-1(存储单元存储的是前向运动信息的参考帧索引,参考帧索引为-1表示前向运动信息不可用),则当前块的L0参考索引和L1参考索引均等于0。以当前块所在编码单元的尺寸和位置作为当前块的尺寸和位置,然后将根据MVP得到的L0运动矢量预测值和L1运动矢量预测值分别作为当前块的L0运动矢量MvE0和L1运动矢量MvE1,并令当前块的L0参考索引RefIdxL0和L1参考索引RefIdxL1均等于0,结束当前块的时域运动信息导出过程。
步骤b2、若该时域相邻块的前向运动信息可用,则当前块的L0参考索引和L1参考索引均可以等于0。L0参考索引对应的图像的距离索引记为DistanceIndexL0,L1参考索引对应的图像的距离索引记为DistanceIndexL1;L0参考索引对应的图像的块距离记为BlockDistanceL0,L1参考索引对应的图像的块距离记为BlockDistanceL1。
示例性的,如果参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的参考帧索引不为-1,如参考帧索引大于或者等于0,则该时域相邻块的前向运动信息可用。
示例性的,当前块的L0参考索引为0,表示当前块的参考图像队列0中的第一个参考图像,即,L0参考索引对应参考图像队列0中的第一个图像。L0参考索引对应的图像的距离索引DistanceIndexL0,表示参考图像队列0中的第一个图像的距离索引,如第一个图像的POC。L0参考索引对应的图像的块距离BlockDistanceL0,表示L0参考索引对应的图像与当前帧之间的距离,如参考图像队列0中的第一个图像的距离索引与当前帧的距离索引的差值。
示例性的,当前块的L1参考索引为0,表示当前块的参考图像队列1中的第一个图像,即,L1参考索引对应参考图像队列1中的第一个图像。L1参考索引对应的图像的距离索引DistanceIndexL1,表示参考图像队列1中的第一个图像的距离索引,如第一个参考图像的POC。L1参考索引对应的图像的块距离BlockDistanceL1,表示L1参考索引对应的图像与当前帧之间的距离,如参考图像队列1中的第一个图像的距离索引与当前帧的距离索引的差值。
步骤b3、将时域相邻块的运动矢量记为mvRef(mvRef_x,mvRef_y),时域相邻块所在的图像的距离索引记为DistanceIndexCol,时域相邻块的运动矢量指向的参考图像的距离索引记为DistanceIndexRef。比如说,在参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L0运动矢量记为mvRef(mvRef_x,mvRef_y),即时域相邻块的运动矢量。该运动信息存储单元所在的图像的距离索引记为DistanceIndexCol,该运动矢量指向的参考单元所在的图像的距离索引记为DistanceIndexRef。基于DistanceIndexCol和DistanceIndexRef,可以采用如下方式确定时域相邻块所在的图像与时域相邻块的运动矢量指向的参考图像之间的距离BlockDistanceRef。
BlockDistanceRef=DistanceIndexCol–DistanceIndexRef
步骤b4、令当前块的L0参考索引RefIdxL0为0,采用如下公式确定当前块的L0运动矢量mvE0(mvE0_x,mvE0_y),而L0参考索引和L0运动矢量就组成当前块的时域运动信息中的前向运动信息。令当前块的L1参考索引RefIdxL1为0,采用如下公式确定当前块的L1运动矢量mvE1(mvE1_x,mvE1_y),而L1参考索引和L1运动矢量就组成当前块的时域运动信息中的后向运动信息,而该前向运动信息和该后向运动信息就组成当前块的时域运动信息。
mvE0_x=Clip3(-32768,32767,Sign(mvRef_x*BlockDistanceL0*BlockDistanceRef)*(((Abs(mvRef_x*BlockDistanceL0*(16384/BlockDistanceRef)))+8192)>>14))
mvE0_y=Clip3(-32768,32767,Sign(mvRef_y*BlockDistanceL0*BlockDistanceRef)*(((Abs(mvRef_y*BlockDistanceL0*(16384/BlockDistanceRef)))+8192)>>14))
mvE1_x=Clip3(-32768,32767,Sign(mvRef_x*BlockDistanceL1*BlockDistanceRef)*(((Abs(mvRef_x*BlockDistanceL1*(16384/BlockDistanceRef)))+8192)>>14))
mvE1_y=Clip3(-32768,32767,Sign(mvRef_y*BlockDistanceL1*BlockDistanceRef)*(((Abs(mvRef_y*BlockDistanceL1*(16384/BlockDistanceRef)))+8192)>>14))
在上述公式中,各符号的含义可以参见步骤a4,在此不再重复赘述。
基于上述各步骤,若当前帧为B帧,就可以得到当前块的时域运动信息。
在实施例2中,若当前帧为B帧,是以参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L0运动信息作为参考运动信息,而没有考虑参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L1运动信息作为参考运动信息。
实施例3:为了得到当前块的时域运动信息,若当前块所在当前帧为P帧,即当前图像是P图像,则时域运动信息的确定方式参见实施例2,在此不再赘述。若当前块所在当前帧为B帧,即当前图像是B图像,则采用如下步骤确定当前块的时域运动信息。示例性的,P帧是帧间预测中可使用知识图像和显示顺序上过去的图像作为参考图像进行解码的图像。B帧是帧间预测中可使用知识图像,显示顺序上过去的和将来的图像作为参考图像进行解码的图像。
步骤c1、基于当前块的预设位置,从当前帧的同位帧中确定出与该预设位置对应的时域相邻块,该时域相邻块的运动信息包括前向运动信息和后向运动信息。若时域相邻块的前向运动信息不可用,时域相邻块的后向运动信息不可用,则根据MVP方式得到当前块的时域运动信息。
示例性的,当前帧的同位帧(collocated帧)可以为当前帧的后向参考帧列表中参考帧索引的对应图像(图像也可以称为帧),如后向参考帧列表中的参考帧索引为0的对应图像,也可以为当前帧的前向参考帧列表中参考帧索引的对应图像,如前向参考帧列表中的参考帧索引为0的对应图像,对此同位帧不做限制。为了方便描述,以当前帧的后向参考帧列表中参考索引为0的图像为例,后向参考帧列表还可以称为参考图像队列1,即List1。
示例性的,当前块的预设位置可以根据经验进行配置,例如,上角亮度样本位置,右上角亮度样本位置,左下角亮度样本位置,右下角亮度样本位置,中心亮度样本位置等,对此预设位置不做限制。为了方便描述,以当前块的左上角亮度样本位置为例。
示例性的,若时域相邻块的前向运动信息的参考帧索引为-1,则表示时域相邻块的前向运动信息不可用。若时域相邻块的前向运动信息的参考帧索引不为-1,如参考帧索引大于或等于0,则表示时域相邻块的前向运动信息可用。若时域相邻块的后向运动信息的参考帧索引为-1,则表示时域相邻块的后向运动信息不可用。若时域相邻块的后向运动信息的参考帧索引不为-1,如参考帧索引大于或等于0,则表示时域相邻块的后向运动信息可用。
示例性的,根据MVP方式得到当前块的时域运动信息,可以包括但不限于如下方式:以当前块所在编码单元的尺寸和位置作为当前块的尺寸和位置,将根据MVP得到的L0运动矢量预测值和L1运动矢量预测值分别作为当前块的L0运动矢量MvE0和L1运动矢量MvE1,并令当前块的L0参考索引RefIdxL0和L1参考索引RefIdxL1均等于0。
L0运动矢量MvE0和L0参考索引RefIdxL0,组成当前块的时域运动信息中的前向运动信息,L1运动矢量MvE1和L1参考索引RefIdxL1,组成当前块的时域运动信息中的后向运动信息,而该前向运动信息和该后向运动信息就组成当前块的时域运动信息。
L0运动矢量MvE0表示前向运动矢量,L0参考索引RefIdxL0表示前向参考索引,L1运动矢量MvE1表示后向运动矢量,L1参考索引RefIdxL1表示后向参考索引。
步骤c2、若时域相邻块的前向运动信息可用,且时域相邻块的后向运动信息可用,则可以根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息,并根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息。
示例性的,若时域相邻块的前向运动信息的参考帧索引不为-1,如参考帧索引大于或者等于0,则时域相邻块的前向运动信息可用。若时域相邻块的后向运动信息的参考帧索引不为-1,如参考帧索引大于或者等于0,则表示时域相邻块的后向运动信息可用。
时域相邻块的前向运动信息可以包括时域相邻块的前向运动矢量mvRef0(mvRef0_x,mvRef0_y)和时域相邻块的前向参考帧索引,该前向参考帧索引对应时域相邻块的前向参考帧,时域相邻块的后向运动信息包括时域相邻块的后向运动矢量mvRef1(mvRef1_x,mvRef1_y)和时域相邻块的后向参考帧索引,该后向参考帧索引对应时域相邻块的后向参考帧。
当前块的时域运动信息中的前向运动信息包括当前块的前向运动矢量mvE0(mvE0_x,mvE0_y)和当前块的前向参考帧索引,该前向参考帧索引对应当前块的前向参考帧,当前块的前向参考帧是当前块的前向参考帧列表中的参考帧,以当前块的前向参考帧列表中的参考帧索引为0的参考帧为例,即当前块的前向参考帧的参考帧索引(也可以称为L0参考索引)为0,表示当前块的前向参考帧列表(即参考图像队列0)中的第一个图像。当前块的时域运动信息中的后向运动信息包括当前块的后向运动矢量mvE1(mvE1_x,mvE1_y)和当前块的后向参考帧索引,该后向参考帧索引对应当前块的后向参考帧,当前块的后向参考帧是当前块的后向参考帧列表中的参考帧,以当前块的后向参考帧列表中的参考帧索引为0的参考帧为例,即当前块的后向参考帧的参考帧索引(也可以称为L1参考索引)为0,表示当前块的后向参考帧列表(即参考图像队列1)中的第一个图像。
示例性的,可以将当前块的前向参考帧的距离索引(如POC)记为DistanceIndexL0,并将当前块的后向参考帧的距离索引记为DistanceIndexL1,将当前帧与当前块的前向参考帧之间的距离记为BlockDistanceL0,BlockDistanceL0表示当前帧的距离索引与当前块的前向参考帧的距离索引的差值,将当前帧与当前块的后向参考帧之间的距离记为BlockDistanceL1,BlockDistanceL1表示当前帧的距离索引与当前块的后向参考帧的距离索引的差值。
示例性的,可以将时域相邻块所在图像(即当前帧的同位帧)的距离索引记为DistanceIndexCol,并将时域相邻块的前向运动矢量mvRef0指向的图像(即时域相邻块的前向参考帧)的距离索引记为DistanceIndexRef0,并将时域相邻块的后向运动矢量mvRef1指向的图像(即时域相邻块的后向参考帧)的距离索引记为DistanceIndexRef1。基于此,可以将该同位帧与该时域相邻块的前向参考帧之间的距离记为BlockDistanceRef0,并将该同位帧与该时域相邻块的后向参考帧之间的距离记为BlockDistanceRef1。
BlockDistanceRef0表示同位帧的距离索引和时域相邻块的前向参考帧的距离索引的差值,例如,可以通过如下公式表示:BlockDistanceRef0=DistanceIndexCol–DistanceIndexRef0。
BlockDistanceRef1表示同位帧的距离索引和时域相邻块的后向参考帧的距离索引的差值,例如,可以通过如下公式表示:BlockDistanceRef1=DistanceIndexCol–DistanceIndexRef1。
基于上述定义,根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息,可以包括但不限于:基于同位帧与时域相邻块的前向参考帧之间的距离BlockDistanceRef0,以及当前帧与当前块的前向参考帧之间的距离BlockDistanceL0,对时域相邻块的前向运动矢量mvRef0(mvRef0_x,mvRef0_y)进行伸缩,得到伸缩后的运动矢量,将伸缩后的运动矢量作为当前块的前向运动矢量mvE0(mvE0_x,mvE0_y);基于当前块的前向运动矢量和当前块的前向参考帧索引确定当前块的时域运动信息中的前向运动信息,比如说,时域运动信息中的前向运动信息包括mvE0(mvE0_x,mvE0_y)和当前块的前向参考帧索引。
示例性的,可以采用如下公式(1)和公式(2)对时域相邻块的前向运动矢量mvRef0(mvRef0_x,mvRef0_y)进行伸缩,得到伸缩后的运动矢量mvE0(mvE0_x,mvE0_y)。
mvE0_x=Clip3(-32768,32767,Sign(mvRef0_x*BlockDistanceL0*BlockDistanceRef0)*(((Abs(mvRef0_x*BlockDistanceL0*(16384/BlockDistanceRef0)))+8192)>>14))(1)
mvE0_y=Clip3(-32768,32767,Sign(mvRef0_y*BlockDistanceL0*BlockDistanceRef0)*(((Abs(mvRef0_y*BlockDistanceL0*(16384/BlockDistanceRef0)))+8192)>>14))(2)
在公式(1)和公式(2)中,Clip3(-32768,32767),用于将mvE0_x和mvE0_y的取值范围限制在-32768与32767之间,即取值小于-32768时,令mvE0_x和mvE0_y的取值为-32768,取值大于32767时,令mvE0_x和mvE0_y的取值为32767。Sign表示符号函数,Abs表示求绝对值,>>表示右移。mvRef0_x表示时域相邻块的前向运动矢量的水平运动矢量,mvRef0_y表示时域相邻块的前向运动矢量的垂直运动矢量。mvE0_x表示当前块的前向运动矢量的水平运动矢量,mvE0_y表示当前块的前向运动矢量的垂直运动矢量。BlockDistanceL0表示当前帧与当前块的前向参考帧之间的距离,BlockDistanceRef0表示同位帧与时域相邻块的前向参考帧之间的距离。在公式(1)和公式(2)中的各数值,还可以根据实际需要进行调整,对此不做限制。当然,公式(1)和公式(2)只是示例,只要能够基于同位帧与时域相邻块的前向参考帧之间的距离,以及当前帧与当前块的前向参考帧之间的距离,对时域相邻块的前向运动矢量mvRef0进行伸缩,得到伸缩后的运动矢量mvE0即可。比如说,基于同位帧与时域相邻块的前向参考帧之间的距离,以及当前帧与当前块的前向参考帧之间的距离,对时域相邻块的前向运动矢量中的水平运动矢量进行伸缩,得到当前块的前向运动矢量中的水平运动矢量;以及,基于同位帧与时域相邻块的前向参考帧之间的距离,以及当前帧与当前块的前向参考帧之间的距离,对时域相邻块的前向运动矢量中的垂直运动矢量进行伸缩,得到当前块的前向运动矢量中的垂直运动矢量。
基于上述定义,根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息,包括但不限于:基于同位帧与时域相邻块的后向参考帧之间的距离BlockDistanceRef1,以及当前帧与当前块的后向参考帧之间的距离BlockDistanceL1,对时域相邻块的后向运动矢量mvRef1(mvRef1_x,mvRef1_y)进行伸缩,得到伸缩后的运动矢量,并将伸缩后的运动矢量作为当前块的后向运动矢量mvE1(mvE1_x,mvE1_y);基于当前块的后向运动矢量和当前块的后向参考帧索引确定当前块的时域运动信息中的后向运动信息,比如说,当前块的时域运动信息中的后向运动信息包括mvE1(mvE1_x,mvE1_y)和当前块的后向参考帧索引。
示例性的,可以采用如下公式(3)和公式(4)对时域相邻块的后向运动矢量mvRef1(mvRef1_x,mvRef1_y)进行伸缩,得到伸缩后的运动矢量mvE1(mvE1_x,mvE1_y)。
mvE1_x=Clip3(-32768,32767,Sign(mvRef1_x*BlockDistanceL1*BlockDistanceRef1)*(((Abs(mvRef1_x*BlockDistanceL1*(16384/BlockDistanceRef1)))+8192)>>14))(3)
mvE1_y=Clip3(-32768,32767,Sign(mvRef1_y*BlockDistanceL1*BlockDistanceRef1)*(((Abs(mvRef1_y*BlockDistanceL1*(16384/BlockDistanceRef1)))+8192)>>14))(4)
在公式(3)和公式(4)中,Clip3(-32768,32767),用于将mvE1_x和mvE1_y的取值范围限制在-32768与32767之间,即取值小于-32768时,令mvE1_x和mvE1_y的取值为-32768,取值大于32767时,令mvE1_x和mvE1_y的取值为32767。Sign表示符号函数,Abs表示求绝对值,>>表示右移。mvRef1_x表示时域相邻块的后向运动矢量的水平运动矢量,mvRef1_y表示时域相邻块的后向运动矢量的垂直运动矢量。mvE1_x表示当前块的后向运动矢量的水平运动矢量,mvE1_y表示当前块的后向运动矢量的垂直运动矢量。BlockDistanceL1表示当前帧与当前块的后向参考帧之间的距离,BlockDistanceRef1表示同位帧与时域相邻块的后向参考帧之间的距离。在公式(3)和公式(4)中的各数值,还可以根据实际需要进行调整,对此不做限制。当然,公式(3)和公式(4)只是示例,只要能够基于同位帧与时域相邻块的后向参考帧之间的距离,以及当前帧与当前块的后向参考帧之间的距离,对第一后运动矢量mvRef1进行伸缩,得到伸缩后的当前块的后向运动矢量mvE1即可。比如说,基于同位帧与时域相邻块的后向参考帧之间的距离,以及当前帧与当前块的后向参考帧之间的距离,对时域相邻块的后向运动矢量中的水平运动矢量进行伸缩,得到当前块的后向运动矢量中的水平运动矢量;以及,基于同位帧与时域相邻块的后向参考帧之间的距离,以及当前帧与当前块的后向参考帧之间的距离,对时域相邻块的后向运动矢量中的垂直运动矢量进行伸缩,得到当前块的后向运动矢量中的垂直运动矢量。
综上所述,可以得到当前块的时域运动信息中的前向运动信息,当前块的时域运动信息中的后向运动信息,并将该前向运动信息和该后向运动信息组成当前块的时域运动信息。
综上所述,参见图3A所示,若时域相邻块的前向运动信息可用,且时域相邻块的后向运动信息可用,则可以基于同位帧的距离索引DistanceIndexCol与时域相邻块的前向参考帧的距离索引DistanceIndexRef0,确定出同位帧与时域相邻块的前向参考帧之间的距离BlockDistanceRef0,可以基于当前帧的距离索引DistanceIndexCur与当前块的前向参考帧的距离索引DistanceIndexL0,确定出当前帧与当前块的前向参考帧之间的距离BlockDistanceL0,然后,通过BlockDistanceRef0和BlockDistanceL0对时域相邻块的前向运动矢量mvRef0进行伸缩,得到当前块的前向运动矢量mvE0。可以基于同位帧的距离索引DistanceIndexCol与时域相邻块的后向参考帧的距离索引DistanceIndexRef1,确定出同位帧与时域相邻块的后向参考帧之间的距离BlockDistanceRef1,可以基于当前帧的距离索引DistanceIndexCur与当前块的后向参考帧的距离索引DistanceIndexL1,确定出当前帧与当前块的后向参考帧之间的距离BlockDistanceL1,然后,通过BlockDistanceRef1和BlockDistanceL1对时域相邻块的后向运动矢量mvRef1进行伸缩,得到当前块的后向运动矢量mvE1。
然后,当前块的前向运动矢量mvE0,当前块的后向运动矢量mvE1,当前块的前向参考帧索引和当前块的后向参考帧索引,就可以组成当前块的时域运动信息。
步骤c3、若时域相邻块的前向运动信息可用,且时域相邻块的后向运动信息不可用,则可以根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息,并根据时域相邻块的前向运动信息确定当前块的时域运动信息中的后向运动信息。
若时域相邻块的前向运动信息的参考帧索引大于等于0,时域相邻块的前向运动信息可用。若时域相邻块的后向运动信息的参考帧索引为-1,时域相邻块的后向运动信息不可用。
时域相邻块的前向运动信息包括时域相邻块的前向运动矢量mvRef0(mvRef0_x,mvRef0_y)和时域相邻块的前向参考帧索引,该前向参考帧索引对应时域相邻块的前向参考帧,时域相邻块的后向运动信息包括时域相邻块的后向运动矢量mvRef1(mvRef1_x,mvRef1_y)和时域相邻块的后向参考帧索引,该后向参考帧索引对应时域相邻块的后向参考帧。当前块的时域运动信息中的前向运动信息包括当前块的前向运动矢量mvE0(mvE0_x,mvE0_y)和当前块的前向参考帧索引,该前向参考帧索引对应当前块的前向参考帧,当前块的时域运动信息中的后向运动信息包括当前块的后向运动矢量mvE1(mvE1_x,mvE1_y)和当前块的后向参考帧索引,该后向参考帧索引对应当前块的后向参考帧。将当前块的前向参考帧的距离索引记为DistanceIndexL0,将当前块的后向参考帧的距离索引记为DistanceIndexL1,将当前帧与当前块的前向参考帧之间的距离记为BlockDistanceL0,将当前帧与当前块的后向参考帧之间的距离记为BlockDistanceL1。将同位帧的距离索引记为DistanceIndexCol,将时域相邻块的前向参考帧的距离索引记为DistanceIndexRef0,将时域相邻块的后向参考帧的距离索引记为DistanceIndexRef1。将同位帧与时域相邻块的前向参考帧之间的距离记为BlockDistanceRef0,将同位帧与时域相邻块的后向参考帧之间的距离记为BlockDistanceRef1。
基于上述定义,可以根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息,该过程可以参见步骤c2的处理过程,在此不再重复赘述。
基于上述定义,根据时域相邻块的前向运动信息确定当前块的时域运动信息中的后向运动信息,可以包括但不限于:基于同位帧与时域相邻块的前向参考帧之间的距离BlockDistanceRef0,以及当前帧与当前块的后向参考帧之间的距离BlockDistanceL1,对时域相邻块的前向运动矢量mvRef0(mvRef0_x,mvRef0_y)进行伸缩,得到伸缩后的运动矢量,将伸缩后的运动矢量作为当前块的后向运动矢量mvE1(mvE1_x,mvE1_y);基于当前块的后向运动矢量和当前块的后向参考帧索引确定当前块的时域运动信息中的后向运动信息,比如说,时域运动信息中的后向运动信息包括mvE1(mvE1_x,mvE1_y)和当前块的后向参考帧索引。
示例性的,可以采用如下公式(5)和公式(6)对时域相邻块的前向运动矢量mvRef0(mvRef0_x,mvRef0_y)进行伸缩,得到伸缩后的运动矢量mvE1(mvE1_x,mvE1_y)。
mvE1_x=Clip3(-32768,32767,Sign(mvRef0_x*BlockDistanceL1*BlockDistanceRef0)*(((Abs(mvRef0_x*BlockDistanceL1*(16384/BlockDistanceRef0)))+8192)>>14))(5)
mvE1_y=Clip3(-32768,32767,Sign(mvRef0_y*BlockDistanceL1*BlockDistanceRef0)*(((Abs(mvRef0_y*BlockDistanceL1*(16384/BlockDistanceRef0)))+8192)>>14))(6)
在公式(5)和公式(6)中,Clip3(-32768,32767)用于将mvE1_x和mvE1_y的取值范围限制在-32768与32767之间。Sign表示符号函数,Abs表示求绝对值,>>表示右移。mvRef0_x表示时域相邻块的前向运动矢量的水平运动矢量,mvRef0_y表示时域相邻块的前向运动矢量的垂直运动矢量。mvE1_x表示当前块的后向运动矢量的水平运动矢量,mvE1_y表示当前块的后向运动矢量的垂直运动矢量。BlockDistanceL1表示当前帧与当前块的后向参考帧之间的距离,BlockDistanceRef0表示同位帧与时域相邻块的前向参考帧之间的距离。
综上所述,可以得到当前块的时域运动信息中的前向运动信息,当前块的时域运动信息中的后向运动信息,并将该前向运动信息和该后向运动信息组成当前块的时域运动信息。
综上所述,参见图3B所示,若时域相邻块的前向运动信息可用,且时域相邻块的后向运动信息不可用,则基于同位帧的距离索引DistanceIndexCol与时域相邻块的前向参考帧的距离索引DistanceIndexRef0,确定出同位帧与时域相邻块的前向参考帧之间的距离BlockDistanceRef0,可以基于当前帧的距离索引DistanceIndexCur与当前块的前向参考帧的距离索引DistanceIndexL0,确定出当前帧与当前块的前向参考帧之间的距离BlockDistanceL0,然后,通过BlockDistanceRef0和BlockDistanceL0对时域相邻块的前向运动矢量mvRef0进行伸缩,得到当前块的前向运动矢量mvE0。可以基于当前帧的距离索引DistanceIndexCur与当前块的后向参考帧的距离索引DistanceIndexL1,确定出当前帧与当前块的后向参考帧之间的距离BlockDistanceL1,通过BlockDistanceRef0和BlockDistanceL1对时域相邻块的前向运动矢量mvRef0进行伸缩,得到当前块的后向运动矢量mvE1。
当前块的前向运动矢量mvE0,当前块的后向运动矢量mvE1,当前块的前向参考帧索引和当前块的后向参考帧索引,就可以组成当前块的时域运动信息。
步骤c4、若时域相邻块的前向运动信息不可用,且时域相邻块的后向运动信息可用,则可以根据时域相邻块的后向运动信息确定当前块的时域运动信息中的前向运动信息,并根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息。
若时域相邻块的前向运动信息的参考帧索引为-1,则时域相邻块的前向运动信息不可用。若时域相邻块的后向运动信息的参考帧索引大于等于0,则时域相邻块的后向运动信息可用。
基于上述实施例的定义,可以根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息,该过程可以参见步骤c2的处理过程,在此不再重复赘述。
基于上述实施例的定义,根据时域相邻块的后向运动信息确定当前块的时域运动信息中的前向运动信息,可以包括但不限于:基于同位帧与时域相邻块的后向参考帧之间的距离BlockDistanceRef1,以及当前帧与当前块的前向参考帧之间的距离BlockDistanceL0,对时域相邻块的后向运动矢量mvRef1(mvRef1_x,mvRef1_y)进行伸缩,得到伸缩后的运动矢量,并将伸缩后的运动矢量作为当前块的前向运动矢量mvE0(mvE0_x,mvE0_y);基于当前块的前向运动矢量和当前块的前向参考帧索引确定当前块的时域运动信息中的前向运动信息,比如,时域运动信息中的前向运动信息包括mvE0(mvE0_x,mvE0_y)和当前块的前向参考帧索引。
示例性的,可以采用如下公式(7)和公式(8)对时域相邻块的后向运动矢量mvRef1(mvRef1_x,mvRef1_y)进行伸缩,得到伸缩后的运动矢量mvE0(mvE0_x,mvE0_y)。
mvE0_x=Clip3(-32768,32767,Sign(mvRef1_x*BlockDistanceL0*BlockDistanceRef1)*(((Abs(mvRef1_x*BlockDistanceL0*(16384/BlockDistanceRef1)))+8192)>>14))(7)
mvE0_y=Clip3(-32768,32767,Sign(mvRef1_y*BlockDistanceL0*BlockDistanceRef1)*(((Abs(mvRef1_y*BlockDistanceL0*(16384/BlockDistanceRef1)))+8192)>>14))(8)
在公式(7)和公式(8)中,Clip3(-32768,32767)用于将mvE0_x和mvE0_y的取值范围限制在-32768与32767之间。Sign表示符号函数,Abs表示求绝对值,>>表示右移。mvRef1_x表示时域相邻块的后向运动矢量的水平运动矢量,mvRef1_y表示时域相邻块的后向运动矢量的垂直运动矢量。mvE0_x表示当前块的前向运动矢量的水平运动矢量,mvE0_y表示当前块的前向运动矢量的垂直运动矢量。BlockDistanceL0表示当前帧与当前块的前向参考帧之间的距离,BlockDistanceRef1表示同位帧与时域相邻块的后向参考帧之间的距离。
综上所述,可以得到当前块的时域运动信息中的前向运动信息,当前块的时域运动信息中的后向运动信息,并将该前向运动信息和该后向运动信息组成当前块的时域运动信息。
综上所述,参见图3C所示,若时域相邻块的前向运动信息不可用,且时域相邻块的后向运动信息可用,则基于同位帧的距离索引DistanceIndexCol与时域相邻块的后向参考帧的距离索引DistanceIndexRef1,确定出同位帧与时域相邻块的后向参考帧之间的距离BlockDistanceRef1,可以基于当前帧的距离索引DistanceIndexCur与当前块的前向参考帧的距离索引DistanceIndexL0,确定出当前帧与当前块的前向参考帧之间的距离BlockDistanceL0,然后,通过BlockDistanceRef1和BlockDistanceL0对时域相邻块的后向运动矢量mvRef1进行伸缩,得到当前块的前向运动矢量mvE0。可以基于当前帧的距离索引DistanceIndexCur与当前块的后向参考帧的距离索引DistanceIndexL1,确定出当前帧与当前块的后向参考帧之间的距离BlockDistanceL1,通过BlockDistanceRef1和BlockDistanceL1对时域相邻块的后向运动矢量mvRef1进行伸缩,得到当前块的后向运动矢量mvE1。
当前块的前向运动矢量mvE0,当前块的后向运动矢量mvE1,当前块的前向参考帧索引和当前块的后向参考帧索引,就可以组成当前块的时域运动信息。
以下结合一个具体应用场景,对实施例3的上述过程进行说明:
如果参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引和L1参考帧索引均为-1,则当前块的L0参考索引和L1参考索引均等于0。以当前块所在编码单元的尺寸和位置作为当前块的尺寸和位置,然后将根据MVP得到的L0运动矢量预测值和L1运动矢量预测值分别作为当前块的L0运动矢量MvE0和L1运动矢量MvE1,并令当前块的L0参考索引RefIdxL0和L1参考索引RefIdxL1均等于0,结束当前块的时域运动信息的导出过程。
如果参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引和L1参考帧索引不均为-1,则当前块的L0参考索引和L1参考索引均等于0。当前块的L0参考索引对应的图像的距离索引记为DistanceIndexL0,当前块的L1参考索引对应的图像的距离索引记为DistanceIndexL1;当前块的L0参考索引对应的图像的BlockDistance记为BlockDistanceL0,即当前块的L0参考索引对应的图像与当前帧的距离;当前块的L1参考索引对应的图像的BlockDistance记为BlockDistanceL1,即当前块的L1参考索引对应的图像与当前帧的距离。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引大于等于0(即时域相邻块的前向运动信息可用),则在参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L0运动矢量记为mvRef0(mvRef0_x,mvRef0_y),该运动信息存储单元所在的图像的距离索引记为DistanceIndexCol,该L0运动矢量指向的参考单元所在的图像的距离索引记为DistanceIndexRef0。示例性的,可以通过如下公式确定BlockDistanceRef0:BlockDistanceRef0=DistanceIndexCol–DistanceIndexRef0。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L1参考索引大于等于0(即时域相邻块的后向运动信息可用),则在参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L1运动矢量记为mvRef1(mvRef1_x,mvRef1_y),该运动信息存储单元所在的图像的距离索引记为DistanceIndexCol,该L1运动矢量指向的参考单元所在的图像的距离索引记为DistanceIndexRef1。示例性的,可以通过如下公式确定BlockDistanceRef1:BlockDistanceRef1=DistanceIndexCol–DistanceIndexRef1。
然后,令当前块的L0参考索引RefIdxL0等于0,当前块的L0运动矢量为mvE0(mvE0_x,mvE0_y),当前块的L1参考索引RefIdxL1等于0,当前块的L1运动矢量mvE1(mvE1_x,mvE1_y)。L0参考索引RefIdxL0和L0运动矢量mvE0(mvE0_x,mvE0_y)组成前向运动信息,L1参考索引RefIdxL1和L1运动矢量mvE1(mvE1_x,mvE1_y)组成后向运动信息。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引大于等于0,参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L1参考索引大于等于0,采用公式(1)和(2)计算L0运动矢量mvE0(mvE0_x,mvE0_y),采用公式(3)和(4)计算L1运动矢量mvE1(mvE1_x,mvE1_y)。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引大于等于0,参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L1参考索引为-1,则采用公式(1)和(2)计算L0运动矢量mvE0(mvE0_x,mvE0_y),采用公式(5)和(6)计算L1运动矢量mvE1(mvE1_x,mvE1_y)。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引为-1,参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L1参考索引大于等于0,则采用公式(7)和(8)计算L0运动矢量mvE0(mvE0_x,mvE0_y),采用公式(3)和(4)计算L1运动矢量mvE1(mvE1_x,mvE1_y)。
在实施例3中,若当前帧为B帧,是以参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L0运动信息作为参考运动信息,并以参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L1运动信息作为参考运动信息。
实施例4:为了得到当前块的时域运动信息,若当前块所在当前帧为P帧,即当前图像是P图像,则时域运动信息的确定方式参见实施例2,在此不再赘述。若当前块所在当前帧为B帧,即当前图像是B图像,则采用如下步骤确定当前块的时域运动信息:
步骤d1、基于当前块的预设位置,从同位帧中确定出与该预设位置对应的时域相邻块,该时域相邻块的运动信息包括前向运动信息和后向运动信息。若时域相邻块的前向运动信息不可用,时域相邻块的后向运动信息不可用,则根据MVP方式得到当前块的时域运动信息。
示例性的,步骤d1与步骤c1的实现过程类似,在此不再赘述。
步骤d2、若时域相邻块的前向运动信息可用,且时域相邻块的后向运动信息可用,则可以根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息,并根据时域相邻块的前向运动信息确定当前块的时域运动信息中的后向运动信息。
示例性的,与步骤c2相比,若时域相邻块的前向运动信息可用,且时域相邻块的后向运动信息可用,则根据时域相邻块的前向运动信息确定当前块的时域运动信息中的后向运动信息,而不是根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息。
关于根据时域相邻块的前向运动信息确定当前块的时域运动信息中的后向运动信息的过程,可以参见步骤c3,在此不再重复赘述。关于根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息的过程,可以参见步骤c2,在此不再重复赘述。
在另一种可能的实施方式中,若时域相邻块的前向运动信息可用,且时域相邻块的后向运动信息可用,则根据时域相邻块的后向运动信息确定当前块的时域运动信息中的前向运动信息,并根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息。
示例性的,与步骤c2相比,若时域相邻块的前向运动信息可用,且时域相邻块的后向运动信息可用,则根据时域相邻块的后向运动信息确定当前块的时域运动信息中的前向运动信息,而不是根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息。
关于根据时域相邻块的后向运动信息确定当前块的时域运动信息中的前向运动信息的过程,可以参见步骤c4,在此不再重复赘述。关于根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息的过程,可以参见步骤c2,在此不再重复赘述。
步骤d3、若时域相邻块的前向运动信息可用,且时域相邻块的后向运动信息不可用,则可以根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息,并根据时域相邻块的前向运动信息确定当前块的时域运动信息中的后向运动信息。
示例性的,步骤d3与步骤c3的实现过程类似,在此不再赘述。
步骤d4、若时域相邻块的前向运动信息不可用,且时域相邻块的后向运动信息可用,则可以根据时域相邻块的后向运动信息确定当前块的时域运动信息中的前向运动信息,并根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息。
示例性的,步骤d4与步骤c4的实现过程类似,在此不再赘述。
以下结合一个具体应用场景,对实施例4的上述过程进行说明:
如果参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引和L1参考帧索引均为-1,则当前块的L0参考索引和L1参考索引均等于0。以当前块所在编码单元的尺寸和位置作为当前块的尺寸和位置,然后将根据MVP得到的L0运动矢量预测值和L1运动矢量预测值分别作为当前块的L0运动矢量MvE0和L1运动矢量MvE1,并令当前块的L0参考索引RefIdxL0和L1参考索引RefIdxL1均等于0,结束当前块的时域运动信息的导出过程。
如果参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引和L1参考帧索引不均为-1,则当前块的L0参考索引和L1参考索引均等于0。当前块的L0参考索引对应的图像的距离索引记为DistanceIndexL0,当前块的L1参考索引对应的图像的距离索引记为DistanceIndexL1;当前块的L0参考索引对应的图像的BlockDistance记为BlockDistanceL0,即当前块的L0参考索引对应的图像与当前帧的距离;当前块的L1参考索引对应的图像的BlockDistance记为BlockDistanceL1,即当前块的L1参考索引对应的图像与当前帧的距离。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引大于等于0(即时域相邻块的前向运动信息可用),则在参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L0运动矢量记为mvRef0(mvRef0_x,mvRef0_y),该运动信息存储单元所在的图像的距离索引记为DistanceIndexCol,该L0运动矢量指向的参考单元所在的图像的距离索引记为DistanceIndexRef0。示例性的,可以通过如下公式确定BlockDistanceRef0:BlockDistanceRef0=DistanceIndexCol–DistanceIndexRef0。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L1参考索引大于等于0(即时域相邻块的后向运动信息可用),则在参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L1运动矢量记为mvRef1(mvRef1_x,mvRef1_y),该运动信息存储单元所在的图像的距离索引记为DistanceIndexCol,该L1运动矢量指向的参考单元所在的图像的距离索引记为DistanceIndexRef1。示例性的,可以通过如下公式确定BlockDistanceRef1:BlockDistanceRef1=DistanceIndexCol–DistanceIndexRef1。
然后,令当前块的L0参考索引RefIdxL0等于0,当前块的L0运动矢量为mvE0(mvE0_x,mvE0_y),当前块的L1参考索引RefIdxL1等于0,当前块的L1运动矢量mvE1(mvE1_x,mvE1_y)。L0参考索引RefIdxL0和L0运动矢量mvE0(mvE0_x,mvE0_y)组成前向运动信息,L1参考索引RefIdxL1和L1运动矢量mvE1(mvE1_x,mvE1_y)组成后向运动信息。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引大于等于0,采用公式(1)和(2)计算L0运动矢量mvE0(mvE0_x,mvE0_y),并采用公式(5)和(6)计算L1运动矢量mvE1(mvE1_x,mvE1_y)。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引为-1,参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L1参考索引大于等于0,则采用公式(7)和(8)计算L0运动矢量mvE0(mvE0_x,mvE0_y),采用公式(3)和(4)计算L1运动矢量mvE1(mvE1_x,mvE1_y)。
在实施例4中,若当前帧为B帧,是以参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L0运动信息作为参考运动信息,并以参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L1运动信息作为参考运动信息。
实施例5:为了得到当前块的时域运动信息,若当前块所在当前帧为P帧,即当前图像是P图像,则时域运动信息的确定方式参见实施例2,在此不再赘述。若当前块所在当前帧为B帧,即当前图像是B图像,则采用如下步骤确定当前块的时域运动信息:
步骤s1、基于当前块的预设位置,从同位帧中确定出与该预设位置对应的时域相邻块,该时域相邻块的运动信息包括前向运动信息和后向运动信息。若时域相邻块的前向运动信息不可用,时域相邻块的后向运动信息不可用,则根据MVP方式得到当前块的时域运动信息。
步骤s2、若时域相邻块的前向运动信息可用,且时域相邻块的后向运动信息可用,则可以根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息,并根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息。
示例性的,步骤s2与步骤c2的实现过程类似,在此不再赘述。
步骤s3、若时域相邻块的前向运动信息可用,且时域相邻块的后向运动信息不可用,则可以根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息。
示例性的,关于根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息的过程,可以参见步骤c2中确定时域运动信息中的前向运动信息的过程,不再赘述。
步骤s4、若时域相邻块的前向运动信息不可用,且时域相邻块的后向运动信息可用,则可以根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息。
示例性的,关于根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息的过程,可以参见步骤c2中确定时域运动信息中的后向运动信息的过程,不再赘述。
以下结合一个具体应用场景,对实施例5的上述过程进行说明:
如果参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引和L1参考帧索引均为-1,则当前块的L0参考索引和L1参考索引均等于0。以当前块所在编码单元的尺寸和位置作为当前块的尺寸和位置,然后将根据MVP得到的L0运动矢量预测值和L1运动矢量预测值分别作为当前块的L0运动矢量MvE0和L1运动矢量MvE1,并令当前块的L0参考索引RefIdxL0和L1参考索引RefIdxL1均等于0,结束当前块的时域运动信息的导出过程。
如果参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引和L1参考帧索引不均为-1,则当前块的L0参考索引和L1参考索引均等于0。当前块的L0参考索引对应的图像的距离索引记为DistanceIndexL0,当前块的L1参考索引对应的图像的距离索引记为DistanceIndexL1;当前块的L0参考索引对应的图像的BlockDistance记为BlockDistanceL0,即当前块的L0参考索引对应的图像与当前帧的距离;当前块的L1参考索引对应的图像的BlockDistance记为BlockDistanceL1,即当前块的L1参考索引对应的图像与当前帧的距离。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引大于等于0(即时域相邻块的前向运动信息可用),则在参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L0运动矢量记为mvRef0(mvRef0_x,mvRef0_y),该运动信息存储单元所在的图像的距离索引记为DistanceIndexCol,该L0运动矢量指向的参考单元所在的图像的距离索引记为DistanceIndexRef0。示例性的,可以通过如下公式确定BlockDistanceRef0:BlockDistanceRef0=DistanceIndexCol–DistanceIndexRef0。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L1参考索引大于等于0(即时域相邻块的后向运动信息可用),则在参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L1运动矢量记为mvRef1(mvRef1_x,mvRef1_y),该运动信息存储单元所在的图像的距离索引记为DistanceIndexCol,该L1运动矢量指向的参考单元所在的图像的距离索引记为DistanceIndexRef1。示例性的,可以通过如下公式确定BlockDistanceRef1:BlockDistanceRef1=DistanceIndexCol–DistanceIndexRef1。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引大于等于0,参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L1参考索引大于等于0,令当前块的L0参考索引RefIdxL0等于0,L0运动矢量为mvE0(mvE0_x,mvE0_y),L1参考索引RefIdxL1等于0,L1运动矢量mvE1(mvE1_x,mvE1_y)。L0参考索引RefIdxL0和L0运动矢量mvE0(mvE0_x,mvE0_y)组成前向运动信息,L1参考索引RefIdxL1和L1运动矢量mvE1(mvE1_x,mvE1_y)组成后向运动信息。
在此基础上,采用公式(1)和公式(2)计算L0运动矢量mvE0(mvE0_x,mvE0_y),并采用公式(3)和公式(4)计算L1运动矢量mvE1(mvE1_x,mvE1_y)。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引大于等于0,参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L1参考索引为-1,则令当前块的L0参考索引RefIdxL0等于0,当前块的L0运动矢量为mvE0(mvE0_x,mvE0_y),令当前块的L1参考索引RefIdxL1等于-1,令当前块的L1运动矢量为mvE1(0,0)。L0参考索引RefIdxL0和L0运动矢量mvE0(mvE0_x,mvE0_y)组成前向运动信息,且L1参考索引RefIdxL1为-1表示后向运动信息不可用。
在此基础上,采用公式(1)和公式(2)计算L0运动矢量mvE0(mvE0_x,mvE0_y)。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引为-1,参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L1参考索引大于等于0,则令当前块的L0参考索引RefIdxL0等于-1,当前块的L0运动矢量为mvE0(0,0),令当前块的L1参考索引RefIdxL1等于0,令当前块的L1运动矢量为mvE1(mvE1_x,mvE1_y)。L1参考索引RefIdxL1和L1运动矢量mvE1(mvE1_x,mvE1_y)组成后向运动信息,且L0参考索引RefIdxL0为-1表示前向运动信息不可用。
在此基础上,采用公式(3)和公式(4)计算L1运动矢量mvE1(mvE1_x,mvE1_y)。
实施例6:为了得到当前块的时域运动信息,若当前块所在当前帧为P帧,即当前图像是P图像,则时域运动信息的确定方式参见实施例2,在此不再赘述。若当前块所在当前帧为B帧,即当前图像是B图像,则采用如下步骤确定当前块的时域运动信息:
步骤w1、基于当前块的预设位置,从同位帧中确定出与该预设位置对应的时域相邻块,该时域相邻块的运动信息包括前向运动信息和后向运动信息。若时域相邻块的前向运动信息不可用,时域相邻块的后向运动信息不可用,则根据MVP方式得到当前块的时域运动信息。
步骤w2、若时域相邻块的前向运动信息可用,且时域相邻块的后向运动信息可用,则可以根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息,并根据时域相邻块的前向运动信息确定当前块的时域运动信息中的后向运动信息。
示例性的,与步骤c2相比,根据时域相邻块的前向运动信息确定当前块的时域运动信息中的后向运动信息,不是根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息。关于根据时域相邻块的前向运动信息确定当前块的时域运动信息中的后向运动信息的过程,可以参见步骤c3,在此不再赘述。关于根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息的过程,可以参见步骤c2,在此不再赘述。
步骤w3、若时域相邻块的前向运动信息可用,且时域相邻块的后向运动信息不可用,则可以根据时域相邻块的前向运动信息确定当前块的时域运动信息中的前向运动信息。
步骤w4、若时域相邻块的前向运动信息不可用,且时域相邻块的后向运动信息可用,则可以根据时域相邻块的后向运动信息确定当前块的时域运动信息中的后向运动信息。
以下结合一个具体应用场景,对实施例6的上述过程进行说明:
如果参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引和L1参考帧索引均为-1,则当前块的L0参考索引和L1参考索引均等于0。以当前块所在编码单元的尺寸和位置作为当前块的尺寸和位置,然后将根据MVP得到的L0运动矢量预测值和L1运动矢量预测值分别作为当前块的L0运动矢量MvE0和L1运动矢量MvE1,并令当前块的L0参考索引RefIdxL0和L1参考索引RefIdxL1均等于0,结束当前块的时域运动信息的导出过程。
如果参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引和L1参考帧索引不均为-1,则当前块的L0参考索引和L1参考索引均等于0。当前块的L0参考索引对应的图像的距离索引记为DistanceIndexL0,当前块的L1参考索引对应的图像的距离索引记为DistanceIndexL1;当前块的L0参考索引对应的图像的BlockDistance记为BlockDistanceL0,即当前块的L0参考索引对应的图像与当前帧的距离;当前块的L1参考索引对应的图像的BlockDistance记为BlockDistanceL1,即当前块的L1参考索引对应的图像与当前帧的距离。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引大于等于0(即时域相邻块的前向运动信息可用),则在参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L0运动矢量记为mvRef0(mvRef0_x,mvRef0_y),该运动信息存储单元所在的图像的距离索引记为DistanceIndexCol,该L0运动矢量指向的参考单元所在的图像的距离索引记为DistanceIndexRef0。示例性的,可以通过如下公式确定BlockDistanceRef0:BlockDistanceRef0=DistanceIndexCol–DistanceIndexRef0。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L1参考索引大于等于0(即时域相邻块的后向运动信息可用),则在参考图像队列1中参考索引为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元的L1运动矢量记为mvRef1(mvRef1_x,mvRef1_y),该运动信息存储单元所在的图像的距离索引记为DistanceIndexCol,该L1运动矢量指向的参考单元所在的图像的距离索引记为DistanceIndexRef1。示例性的,可以通过如下公式确定BlockDistanceRef1:BlockDistanceRef1=DistanceIndexCol–DistanceIndexRef1。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引大于等于0,参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L1参考索引大于等于0,令当前块的L0参考索引RefIdxL0等于0,L0运动矢量为mvE0(mvE0_x,mvE0_y),L1参考索引RefIdxL1等于0,L1运动矢量mvE1(mvE1_x,mvE1_y)。L0参考索引RefIdxL0和L0运动矢量mvE0(mvE0_x,mvE0_y)组成前向运动信息,L1参考索引RefIdxL1和L1运动矢量mvE1(mvE1_x,mvE1_y)组成后向运动信息。
在此基础上,采用公式(1)和公式(2)计算L0运动矢量mvE0(mvE0_x,mvE0_y),并采用公式(5)和公式(6)计算L1运动矢量mvE1(mvE1_x,mvE1_y)。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引大于等于0,参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L1参考索引为-1,则令当前块的L0参考索引RefIdxL0等于0,当前块的L0运动矢量为mvE0(mvE0_x,mvE0_y),令当前块的L1参考索引RefIdxL1等于-1,令当前块的L1运动矢量为mvE1(0,0)。L0参考索引RefIdxL0和L0运动矢量mvE0(mvE0_x,mvE0_y)组成前向运动信息,且L1参考索引RefIdxL1为-1表示后向运动信息不可用。
在此基础上,采用公式(1)和公式(2)计算L0运动矢量mvE0(mvE0_x,mvE0_y)。
若参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L0参考索引为-1,参考图像队列1中参考索引值为0的图像中与当前块的左上角亮度样本位置对应的亮度样本所在的时域运动信息存储单元存储的L1参考索引大于等于0,则令当前块的L0参考索引RefIdxL0等于-1,当前块的L0运动矢量为mvE0(0,0),令当前块的L1参考索引RefIdxL1等于0,令当前块的L1运动矢量为mvE1(mvE1_x,mvE1_y)。L1参考索引RefIdxL1和L1运动矢量mvE1(mvE1_x,mvE1_y)组成后向运动信息,且L0参考索引RefIdxL0为-1表示前向运动信息不可用。
在此基础上,采用公式(3)和公式(4)计算L1运动矢量mvE1(mvE1_x,mvE1_y)。
在上述各实施例中,当前块也可以称为当前预测单元。
在一种可能的实施方式中,若控制信息允许当前块启用时域运动信息导出模式,则可以采用实施例1-实施例6的任意实施例,导出当前块的时域运动信息。示例性的,控制信息可以包括但不限于:序列级控制信息,帧级控制信息,Slice(片)级控制信息,Tile(片)级控制信息,Patch(片)级控制信息,CTU(Coding Tee Unit,编码树单元)级控制信息,LCU(Largest Coding Unit,最大编码单元)级控制信息,块级控制信息,CU(Coding Unit,编码单元)级控制信息,PU(Prediction Unit,预测单元)级控制信息等,对此不做限制。例如,针对编码端和解码端来说,若获知控制信息允许当前块启用时域运动信息导出模式,则采用实施例1-实施例6的任意实施例,导出当前块的时域运动信息。
实施例7:基于实施例1-实施例6的时域运动信息导出方式,本申请实施例提出一种编解码方法,可以应用于编码端或者解码端。针对编码端来说,可以构建当前块的运动信息候选列表,该运动信息候选列表包括当前块的时域运动信息,当前块的时域运动信息的导出方式可以参见实施例1-实施例6中的任意实施例,在此不再赘述。在得到运动信息候选列表后,编码端依次遍历运动信息候选列表中的每个运动信息,确定该运动信息对应的率失真代价值,并选择最小的率失真代价值所对应的运动信息。将最小的率失真代价值所对应的运动信息在运动信息候选列表中的位置索引信息携带进当前块的编码比特流,传送给解码端。
针对解码端来说,也可以构建当前块的运动信息候选列表,该运动信息候选列表包括当前块的时域运动信息,当前块的时域运动信息的导出方式可以参见实施例1-实施例6中的任意实施例,在此不再赘述。解码端构建的运动信息候选列表与编码端构建的运动信息候选列表相同。解码端可以从当前块的编码比特流中解析出运动信息在运动信息候选列表中的位置索引信息,并从运动信息候选列表中选择与该位置索引信息对应的运动信息,基于选择的运动信息对当前块进行运动补偿,得到当前块的预测值,对此运动补偿过程不做限制。
实施例8:实施例1-实施例7的实现过程,可以应用于AWP(Angular WeightedPrediction,角度加权预测)模式中,即运动信息候选列表可以为AWP模式的运动信息候选列表,AWP模式通过借助帧内角度预测思想,先设置当前块周边位置(整像素位置以及亚像素位置)的参考权重值,而后利用角度得到每个像素位置对应的权重值,通过最终得到的权重阵列实现两个不同的帧间预测值的加权,以下结合AWP模式对运动信息候选列表进行说明。
步骤e1、在确定对当前块启动角度加权预测时,获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率。基于当前块的权重预测角度,当前块的权重预测位置和当前块的尺寸中的至少一个,确定当前块的权重变换的起始位置。示例性的,可以将当前块的权重变换率和当前块的权重变换的起始位置,统称为当前块的权重配置参数。
示例性的,权重预测角度表示当前块内部的像素位置所指向的角度方向,参见图4A所示,基于某一种权重预测角度,示出了当前块内部的像素位置(如像素位置1、像素位置2和像素位置3)所指向的角度方向,该角度方向指向当前块外部的某个周边位置。参见图4B所示,基于另一种权重预测角度,示出了当前块内部的像素位置(如像素位置2、像素位置3和像素位置4)所指向的角度方向,该角度方向指向当前块外部的某个周边位置。
该权重预测角度可以是任意角度,如180度内任意角度,或,360度内任意角度,对此权重预测角度不做限制。例如,该权重预测角度可以为水平角度或垂直角度,或,该权重预测角度的斜率的绝对值可以为2的n次方,n为整数,如正整数,0,负整数等。例如,权重预测角度的斜率的绝对值可以为1(即2的0次方),2(即2的1次方),1/2(即2的-1次方)等。参见图4C所示,示出了8种权重预测角度,其斜率的绝对值为2的n次方。
权重预测位置用于配置当前块外部周边位置的参考权重值。例如,根据当前块的权重预测角度、当前块的尺寸等,确定当前块外部的周边位置的范围(即当前块外部的周边位置的数量),将周边位置的范围进行N等分,N的取值任意配置,如4、6、8等,以8为例进行说明,权重预测位置用于表示当前块外部的哪个周边位置作为当前块的权重变换的起始位置,从而根据权重变换的起始位置配置当前块外部的周边位置的参考权重值。参见图4D所示,在将所有周边位置8等分后,可以得到7个权重预测位置。在此基础上,当权重预测位置为0时,可以表示周边位置a0作为当前块外部周边位置的权重变换的起始位置,以此类推。
权重变换率表示当前块外部的周边位置的参考权重值的变换率,用于表示参考权重值的变化速度,权重变换率可以是不为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等数值。
步骤e2、根据当前块的权重配置参数为当前块外部的周边位置配置参考权重值。
示例性的,当前块外部的周边位置的数量可以是基于当前块的尺寸和/或当前块的权重预测角度确定,例如,基于当前块的尺寸和/或当前块的权重预测角度确定当前块外部的周边位置的数量M,并根据当前块的权重配置参数为M个周边位置配置参考权重值。
示例性的,当前块外部的周边位置可以包括整像素位置,或者,亚像素位置,或者,整像素位置和亚像素位置。当前块外部的周边位置可以包括但不限于:当前块外部上侧一行的周边位置,或者,当前块外部左侧一列的周边位置,或者,当前块外部下侧一行的周边位置,或者,当前块外部右侧一列的周边位置。当然,上述只是周边位置的示例,对此不做限制。
在步骤e2中,需要先获取有效数量(当前块外部的周边位置的数量为有效数量)个参考权重值,该有效数量可以是基于当前块的尺寸和/或当前块的权重预测角度确定,例如,可以采用如下方式确定该有效数量:ValidLenth=(N+(M>>X))<<1,N和M分别是当前块的高和宽,X为当前块的权重预测角度的斜率的绝对值的log2对数值,如0或1。
针对有效数量个参考权重值,可以单调递增,或,单调递减。例如,有效数量个参考权重值可以为[88...88765432100...00],即单调递减。又例如,有效数量个参考权重值可以为[00...00123456788...88],即单调递增。当然,上述只是示例,对此不做限制。
参见图4E所示,为有效数量个参考权重值的几个示例情况,对此不做限制。
在一种可能的实施方式中,可以根据权重变换率和权重变换的起始位置,确定有效数量个参考权重值。例如,可以采用如下方式确定参考权重值:y=Clip3(最小值,最大值,a*(x-s)),x表示周边位置的索引,即x的取值范围可以是1-有效数量值,如x为1,表示第1个周边位置,y表示第1个周边位置的参考权重值,x为2,表示第2个周边位置,y表示第2个周边位置的参考权重值。a用于表示权重变换率,s用于表示权重变换的起始位置。
Clip3用于限制参考权重值位于最小值与最大值之间,最小值和最大值均可以根据经验配置,为了方便描述,在后续过程中,以最小值为0,最大值为8为例进行说明。
s表示权重变换的起始位置,s可以由权重预测位置确定,例如,s=f(权重预测位置),即s是一个与权重预测位置有关的函数。例如,在当前块外部的周边位置的范围确定后,可以确定周边位置的有效数量,并将所有周边位置进行N等分,N的取值可以任意配置,如4、6、8等,而权重预测位置用于表示采用当前块外部的哪个周边位置作为当前块的目标周边区域,而这个权重预测位置对应的周边位置就是权重变换的起始位置。或者,s可以由权重预测角度和权重预测位置确定,例如,s=f(权重预测角度,权重预测位置),即s是一个与权重预测角度和权重预测位置有关的函数。例如,可以根据权重预测角度确定当前块外部的周边位置的范围,在当前块外部的周边位置的范围确定后,可以确定周边位置的有效数量,并将所有周边位置进行N等分,权重预测位置用于表示采用当前块外部的哪个周边位置作为当前块的目标周边区域,而这个权重预测位置对应的周边位置就可以是权重变换的起始位置。
综上所述,可以得到当前块的有效数量个参考权重值,这些参考权重值单调递增或单调递减。然后,根据有效数量个参考权重值,配置当前块外部的周边位置的参考权重值。示例性的,当前块外部的周边位置的数量为有效数量,且参考权重值的数量为有效数量,因此,可以将有效数量个参考权重值,配置为当前块外部的周边位置的参考权重值。
步骤e3、针对当前块的每个像素位置,根据当前块的权重预测角度从当前块外部的周边位置中确定该像素位置指向的周边匹配位置;根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,根据该像素位置的目标权重值确定该像素位置的关联权重值。
示例性的,由于权重预测角度表示当前块内部的像素位置所指向的角度方向,因此,针对当前块的每个像素位置,基于该权重预测角度确定该像素位置所指向的角度方向,继而根据该角度方向从当前块外部的周边位置中确定该像素位置指向的周边匹配位置。
针对当前块的每个像素位置,在确定该像素位置指向的周边匹配位置后,基于该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,例如,将该周边匹配位置关联的参考权重值确定为该像素位置的目标权重值。然后,根据该像素位置的目标权重值确定该像素位置的关联权重值,例如,每个像素位置的目标权重值与关联权重值的和,可以均为固定的预设数值,因此,关联权重值可以为预设数值与目标权重值之差。假设预设数值为8,像素位置的目标权重值为0,则该像素位置的关联权重值为8;若像素位置的目标权重值为1,则该像素位置的关联权重值为7,以此类推,只要目标权重值与关联权重值之和为8即可。
步骤e4,获取运动信息候选列表,该运动信息候选列表包括至少一个候选运动信息;基于该运动信息候选列表获取当前块的第一目标运动信息和第二目标运动信息。
针对编码端来说,可以基于率失真原则,从运动信息候选列表中选择一个候选运动信息作为当前块的第一目标运动信息,从运动信息候选列表中选择另一个候选运动信息作为当前块的第二目标运动信息,第一目标运动信息与第二目标运动信息不同,对此不做限制。
编码端向解码端发送编码比特流时,编码比特流携带指示信息a和指示信息b,指示信息a用于指示当前块的第一目标运动信息的索引值1,索引值1表示第一目标运动信息是运动信息候选列表中的第几个候选运动信息。指示信息b用于指示当前块的第二目标运动信息的索引值2,索引值2表示第二目标运动信息是运动信息候选列表中的第几个候选运动信息。
针对解码端来说,在接收到编码比特流后,从编码比特流中解析出指示信息a和指示信息b。基于指示信息a,解码端从运动信息候选列表中选择索引值1对应的候选运动信息,该候选运动信息作为当前块的第一目标运动信息。基于指示信息b,解码端从运动信息候选列表中选择索引值2对应的候选运动信息,该候选运动信息作为当前块的第二目标运动信息。
步骤e5,针对当前块的每个像素位置,根据当前块的第一目标运动信息确定该像素位置的第一预测值,根据当前块的第二目标运动信息确定该像素位置的第二预测值;根据该第一预测值,该目标权重值,该第二预测值和该关联权重值,确定该像素位置的加权预测值。
示例性的,假设目标权重值是第一目标运动信息对应的权重值,关联权重值是第二目标运动信息对应的权重值,则该像素位置的加权预测值可以为:(该像素位置的第一预测值*该像素位置的目标权重值+该像素位置的第二预测值*该像素位置的关联权重值)/固定的预设数值。或者,假设目标权重值是第二目标运动信息对应的权重值,关联权重值是第一目标运动信息对应的权重值,则该像素位置的加权预测值可以为:(该像素位置的第二预测值*该像素位置的目标权重值+该像素位置的第一预测值*该像素位置的关联权重值)/固定的预设数值。
步骤e6,根据当前块的所有像素位置的加权预测值确定当前块的加权预测值。
例如,将当前块的所有像素位置的加权预测值组成当前块的加权预测值。
综上所述,针对编码端和解码端来说,在步骤e4中,需要获取运动信息候选列表,即需要构建当前块的运动信息候选列表,而本实施例中,可以基于当前块的时域运动信息,构建当前块的运动信息候选列表。例如,基于待加入到运动信息候选列表的可用运动信息,构建当前块的运动信息候选列表,该可用运动信息包括当前块的时域运动信息,当前块的时域运动信息的导出方式可以参见实施例1-实施例6中的任意实施例,在此不再赘述。除了时域运动信息,可用运动信息还包括如下运动信息的至少一种:空域运动信息;HMVP(History-based Motion Vector Prediction,基于历史的运动矢量预测)运动信息;预设运动信息。
示例性的,若可用运动信息包括空域运动信息,则在基于待加入到运动信息候选列表的可用运动信息,构述当前块的运动信息候选列表之前,针对当前块的空域相邻块,若空域相邻块存在,且空域相邻块采用帧间预测模式,则可以将该空域相邻块的运动信息确定为可用运动信息;和/或,针对当前块的第一空域相邻块,若该第一空域相邻块存在,且该第一空域相邻块采用帧间预测模式,且该第一空域相邻块的运动信息与当前块的第二空域相邻块(可以为至少一个第二空域相邻块)的运动信息不同(第二空域相邻块的运动信息已经被确定为可用运动信息),则可以将第一空域相邻块的运动信息确定为可用运动信息。
示例性的,若可用运动信息包括预设运动信息,则在基于待加入到运动信息候选列表的可用运动信息,构述当前块的运动信息候选列表之前,将预设运动信息确定为可用运动信息;该预设运动信息可以包括但不限于如下运动信息的至少一种:零运动信息;基于运动信息候选列表中已存在的运动信息所导出的缺省运动信息;运动信息候选列表中已存在的运动信息。
在一种可能的实施方式中,基于待加入到运动信息候选列表的可用运动信息,构建当前块的运动信息候选列表,包括但不限于:针对待加入到运动信息候选列表的可用运动信息,
若该可用运动信息为单向运动信息,则可以将该单向运动信息加入到运动信息候选列表;若该可用运动信息为双向运动信息,则可以将该双向运动信息裁剪为第一单向运动信息和第二单向运动信息,并将该第一单向运动信息加入到运动信息候选列表;或者,
若该可用运动信息为单向运动信息,且该单向运动信息与运动信息候选列表中已存在的运动信息不重复,则将该单向运动信息加入到运动信息候选列表;若该可用运动信息为双向运动信息,则将该双向运动信息裁剪为第一单向运动信息和第二单向运动信息,并将某个单向运动信息加入到运动信息候选列表;例如,若该第一单向运动信息与运动信息候选列表中已存在的运动信息不重复,则将该第一单向运动信息加入到运动信息候选列表;或者,
若可用运动信息为单向运动信息,且单向运动信息与运动信息候选列表中已存在的运动信息不重复,则将所述单向运动信息加入到运动信息候选列表;若所述可用运动信息为双向运动信息,则将所述双向运动信息裁剪为第一单向运动信息和第二单向运动信息,并将某个单向运动信息加入到运动信息候选列表;例如,若第一单向运动信息与运动信息候选列表中已存在的运动信息不重复,则将所述第一单向运动信息加入到运动信息候选列表;若第一单向运动信息与运动信息候选列表中已存在的运动信息重复,且第二单向运动信息与运动信息候选列表中已存在的运动信息不重复,则将所述第二单向运动信息加入到运动信息候选列表。
在上述实施例中,第一单向运动信息可以是指向第一参考帧列表中参考帧的单向运动信息;第二单向运动信息可以是指向第二参考帧列表中参考帧的单向运动信息。
示例性的,若运动信息候选列表中已存在的候选运动信息的总数量(即运动信息候选列表中当前存在的总数量)为偶数,则第一参考帧列表为当前块的前向参考帧列表,第二参考帧列表为当前块的后向参考帧列表;若运动信息候选列表中已存在的候选运动信息的总数量为奇数,则第一参考帧列表为当前块的后向参考帧列表,第二参考帧列表为当前块的前向参考帧列表。或者,若运动信息候选列表中已存在的候选运动信息的总数量为奇数,则第一参考帧列表为当前块的前向参考帧列表,第二参考帧列表为当前块的后向参考帧列表;若运动信息候选列表中已存在的候选运动信息的总数量为偶数,则第一参考帧列表为当前块的后向参考帧列表,第二参考帧列表为当前块的前向参考帧列表。
示例性的,第一参考帧列表为当前块的前向参考帧列表,第二参考帧列表为当前块的后向参考帧列表。或者,第一参考帧列表为当前块的后向参考帧列表,第二参考帧列表为当前块的前向参考帧列表。
以下结合几个应用场景,对AWP模式的运动信息候选列表的构建过程进行说明。在各应用场景中,将运动信息候选列表称为AwpCandArray,假设AwpCandArray的长度为X,即需要添加X个可用运动信息,X可以根据经验配置,如AwpCandArray的长度为5。
应用场景1:可以通过如下步骤构建AWP模式的运动信息候选列表:
步骤f1、参见图4F所示,F,G,C,A,B,D是当前块的空域相邻块,可以确定F,G,C,A,B,D的运动信息的“可用”性。示例性的,如果F存在且采用帧间预测模式,则F的运动信息为可用运动信息;否则,F的运动信息为不可用运动信息。如果G存在且采用帧间预测模式,则G的运动信息为可用运动信息;否则,G的运动信息为不可用运动信息。如果C存在且采用帧间预测模式,则C的运动信息为可用运动信息;否则,C的运动信息为不可用运动信息。如果A存在且采用帧间预测模式,则A的运动信息为可用运动信息;否则,A的运动信息为不可用运动信息。如果B存在且采用帧间预测模式,则B的运动信息为可用运动信息;否则,B的运动信息为不可用运动信息。如果D存在且采用帧间预测模式,则D的运动信息为可用运动信息;否则,D的运动信息为不可用运动信息。
步骤f2、按F、G、C、A、B和D的顺序(该顺序可变),将单向的可用运动信息添加到AwpCandArray并查重,直至AwpCandArray长度为Y或遍历结束。Y的取值可以小于X的取值,可以根据经验配置,如Y的取值为4,表示至少预留X-Y个位置给时域运动信息。
步骤f3、若AwpCandArray长度小于Y,按F、G、C、A、B和D的顺序(该顺序可变),将双向的可用运动信息拆分为指向前向参考帧列表(即参考帧列表List0)的单向运动信息以及指向后向参考帧列表(即参考帧列表List1)的单向运动信息,先进行单向运动信息的查重操作,若不重复则放入AwpCandArray并查重,直至AwpCandArray长度为Y或遍历结束。
步骤f4、将当前块的时域运动信息拆分为指向前向参考帧列表的单向运动信息以及指向后向参考帧列表的单向运动信息,先进行单向运动信息查重操作,若不重复则放入AwpCandArray,直至AwpCandArray长度为X或遍历结束。
示例性的,关于当前块的时域运动信息的导出方式,可以参见实施例1-实施例6。
步骤f5、若AwpCandArray长度小于X,则将AwpCandArray中最后一个单向运动信息进行重复填充操作,直至AwpCandArray长度为X,得到当前块的AwpCandArray。
应用场景2:可以通过如下步骤构建AWP模式的运动信息候选列表:
步骤g1、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的运动信息为不可用运动信息。
步骤g2、按F、G、C、A、B和D的顺序(该顺序可变),将可用运动信息(单向运动信息或者双向运动信息)放入AwpCandArray,直至AwpCandArray长度为Y或遍历结束。Y的取值可以小于X的取值,可以根据经验配置,如Y的取值为4,表示至少预留X-Y个位置给时域运动信息。
步骤g3、将当前块的时域运动信息放入AwpCandArray,直至AwpCandArray长度为X或遍历结束。
示例性的,关于当前块的时域运动信息的导出方式,可以参见实施例1-实施例6。
步骤g4、若AwpCandArray长度小于X,则可以加入双向零运动信息到AwpCandArray,直至AwpCandArray长度为X,得到当前块的AwpCandArray。在双向零运动信息中,运动矢量值可以为零,L0参考图像索引可以等于0,L1参考图像索引可以等于0。
步骤g5、将AwpCandArray中第AwpCandIdx0+1个运动信息的某一个单向运动信息赋值给mvAwp0L0,mvAwp0L1,RefIdxAwp0L0和RefIdxAwp0L1,如采用如下方式进行赋值:
情况1、若AwpCandIdx0是偶数,则将指向前向参考帧列表的单向运动信息赋值给mvAwp0L0和RefIdxAwp0L0,mvAwp0L1等于零,RefIdxAwp0L1等于-1。如果指向前向参考帧列表的单向运动信息不存在,则将指向后向参考帧列表的单向运动信息赋值给mvAwp0L1和RefIdxAwp0L1,mvAwp0L0等于零,RefIdxAwp0L0等于-1。
情况2、若AwpCandIdx0是奇数,则将指向后向参考帧列表的单向运动信息赋值给mvAwp0L1和RefIdxAwp0L1,mvAwp0L0等于零,RefIdxAwp0L0等于-1。如果指向后向参考帧列表的单向运动信息不存在,则将指向前向参考帧列表的单向运动信息赋值给mvAwp0L0和RefIdxAwp0L0,mvAwp0L1等于零,RefIdxAwp0L1等于-1。
步骤g6、将AwpCandArray中第AwpCandIdx1+1个运动信息的某一个单向运动信息赋值给mvAwp1L0,mvAwp1L1,RefIdxAwp1L0和RefIdxAwp1L1,如采用如下方式进行赋值:
情况1、若AwpCandIdx1是偶数,则将指向前向参考帧列表的单向运动信息赋值给mvAwp1L0和RefIdxAwp1L0,mvAwp1L1等于零,RefIdxAwp1L1等于-1。如果指向前向参考帧列表的单向运动信息不存在,则将指向后向参考帧列表的单向运动信息赋值给mvAwp1L1和RefIdxAwp1L1,mvAwp1L0等于零,RefIdxAwp1L0等于-1。
情况2、若AwpCandIdx1是奇数,则将指向后向参考帧列表的单向运动信息赋值给mvAwp1L1和RefIdxAwp1L1,mvAwp1L0等于零,RefIdxAwp1L0等于-1。如果指向后向参考帧列表的单向运动信息不存在,则将指向前向参考帧列表的单向运动信息赋值给mvAwp1L0和RefIdxAwp1L0,mvAwp1L1等于零,RefIdxAwp1L1等于-1。
应用场景3:可以通过如下步骤构建AWP模式的运动信息候选列表:
步骤h1-步骤h4、实现过程与步骤f1-步骤f4相同,在此不再重复赘述。
步骤h5、若AwpCandArray的长度小于X,依次生成四个单向运动信息,记AwpCandArray中第一个单向运动信息对应的运动矢量为(x,y),生成的四个单向运动信息的参考帧信息与AwpCandArray中第一个单向运动信息的参考帧信息相同,这四个单向运动信息对应的运动矢量分别为(x0,y0),(x1,y1),(x2,y2),(x3,y3),这些运动矢量的生成方式参见如下方式所示。将新生成的运动信息依次加入AwpCandArray,直至AwpCandArray长度为X。
x0=abs(x)<8?8:(abs(x)<=64?((abs(x)*5+2)>>2):((abs(x)*9+4)>>3))
x0=x<0?-x0:x0
y0=y
x1=x
y1=abs(y)<8?8:(abs(y)<=64?((abs(y)*5+2)>>2):((abs(y)*9+4)>>3))
y1=y<0?-y1:y1
x2=abs(x)<8?8:(abs(x)<=64?((abs(x)*3+2)>>2):((abs(x)*7+4)>>3))
x2=x<=0?-x2:x2
y2=y
x3=x
y3=abs(y)<8?8:(abs(y)<=64?((abs(y)*3+2)>>2):((abs(y)*7+4)>>3))
y3=y<=0?-y3:y3
步骤h6、若AwpCandArray长度小于X,则将AwpCandArray中最后一个单向运动信息进行重复填充操作,直至AwpCandArray长度为X,得到当前块的AwpCandArray。
应用场景4:可以通过如下步骤构建AWP模式的运动信息候选列表:
步骤k1-步骤k3,实现过程与步骤g1-步骤g3相同,在此不再重复赘述。
步骤k4、若AwpCandArray的长度小于X,则依次生成四个单向运动信息,将新生成的运动信息依次加入AwpCandArray,直至AwpCandArray长度为X。若AwpCandArray中第一个有效运动信息为单向运动信息,运动矢量记为(x,y),生成的四个单向运动信息的参考帧信息与该第一个有效运动信息的参考帧信息相同,生成的四个单向运动信息的运动矢量分别为(x0,y0),(x1,y1),(x2,y2),(x3,y3),具体方式参见步骤h5,在此不再赘述。
若AwpCandArray中第一个有效运动信息为双向运动信息,运动矢量记为(x,y)和(x’,y’),生成的四个双向运动信息的参考帧信息与第一个有效运动信息的参考帧信息相同。生成的四个双向运动信息的运动矢量分别为(x0,y0)和(x0’,y0’),(x1,y1)和(x1’,y1’),(x2,y2)和(x2’,y2’),(x3,y3)和(x3’,y3’)。(x0,y0),(x1,y1),(x2,y2),(x3,y3)的确定方式参见步骤h5。(x0’,y0’),(x1’,y1’),(x2’,y2’),和(x3’,y3’)的确定方式如下:
x0’=abs(x’)<8?8:(abs(x’)<=64?((abs(x’)*5+2)>>2):((abs(x’)*9+4)>>3))
x0=x’<0?-x0’:x0’
y0’=y’
x1’=x’
y1’=abs(y’)<8?8:(abs(y’)<=64?((abs(y’)*5+2)>>2):((abs(y’)*9+4)>>3))
y1’=y’<0?-y1’:y1’
x2’=abs(x’)<8?8:(abs(x’)<=64?((abs(x’)*3+2)>>2):((abs(x’)*7+4)>>3))
x2’=x’<=0?-x2’:x2’
y2’=y’
x3’=x’
y3’=abs(y’)<8?8:(abs(y’)<=64?((abs(y’)*3+2)>>2):((abs(y’)*7+4)>>3))
y3’=y’<=0?-y3’:y3’
步骤k5、若AwpCandArray长度小于X,则可以加入双向零运动信息到AwpCandArray,直至AwpCandArray长度为X,得到当前块的AwpCandArray。在双向零运动信息中,运动矢量值可以为零,L0参考图像索引可以等于0,L1参考图像索引可以等于0。
步骤k6、将AwpCandArray中第AwpCandIdx0+1个运动信息的某一个单向运动信息赋值给mvAwp0L0,mvAwp0L1,RefIdxAwp0L0和RefIdxAwp0L1,具体方式参见步骤g5。
步骤k7、将AwpCandArray中第AwpCandIdx1+1个运动信息的某一个单向运动信息赋值给mvAwp1L0,mvAwp1L1,RefIdxAwp1L0和RefIdxAwp1L1,具体方式参见步骤g6。
应用场景5:针对上述应用场景1-应用场景4中的任一应用场景,在按F、G、C、A、B和D的顺序将可用运动信息放入AwpCandArray时,可以直至AwpCandArray长度为X或遍历结束。示例性的,若AwpCandArray长度为X,则可以不再将当前块的时域运动信息放入AwpCandArray,即AwpCandArray也可以不包括当前块的时域运动信息。若遍历结束时AwpCandArray长度小于X,则将当前块的时域运动信息放入AwpCandArray。
应用场景6:假设AWP模式支持的最小块尺寸为8,最大块尺寸为64,共支持8种权重预测角度,参见图4C所示,每个权重预测角度支持7种权重预测位置,参见图4D所示,因此,对于每个块而言,共有56种模式。参见图4E所示,为AWP模式支持的权重预测位置的参考权重示意图。参见图4G所示,将权重预测角度分为划分为4个分区,根据权重预测角度所在区域的不同,逐像素权重导出的公式稍有差异,记当前块的块尺寸为MxN,M为宽,N为高,X为log2(权重预测角度的斜率绝对值),Y为权重预测位置。
以针对位于角度分区0的权重预测角度0以及权重预测角度1为例,其导出过程为:
采用如下公式计算有效长度ValidLenth:ValidLenth=(N+(M>>X))<<1。
设置参考权重值ReferenceWeights[x],x的取值范围是0~ValidLength-1;FirstPos=(ValidLength>>1)-6+Y*((ValidLength-1)>>3);ReferenceWeights[x]=Clip3(0,8,x-FirstPos);示例性的,FirstPos表示上述实施例中的权重变换的起始位置。逐像素导出权重SampleWeight[x][y]:SampleWeight[x][y]=ReferenceWeights[(y<<1)+((x<<1)>>X)]
色度权重导出为:直接取对应2*2亮度权重的左上角位置,SampleWeightChroma[x][y]=SampleWeight[x>>1][y>>1],x的取值范围是0~(M/2-1),y的取值范围是0~(N/2-1)。
实施例9:实施例1-实施例7的实现过程,可以应用于UMVE(Ultimate MotionVector Expression,高级运动信息表达)模式中,即运动信息候选列表可以为UMVE模式的运动信息候选列表,UMVE模式是在已经生成的运动信息基础上进行偏移,从而得到更优的运动信息,以下结合UMVE模式的运动信息候选列表,对运动信息候选列表进行说明。
示例性的,针对编码端和解码端来说,需要获取运动信息候选列表,即需要构建当前块的运动信息候选列表,而本实施例中,可以基于当前块的时域运动信息,构建当前块的运动信息候选列表。例如,基于待加入到运动信息候选列表的可用运动信息,构建当前块的运动信息候选列表。示例性的,该可用运动信息包括当前块的时域运动信息,当前块的时域运动信息的导出方式可以参见实施例1-实施例6中的任意实施例,在此不再赘述。除了时域运动信息,可用运动信息还包括如下运动信息的至少一种:空域运动信息;预设运动信息。
示例性的,若可用运动信息包括空域运动信息,则在基于待加入到运动信息候选列表的可用运动信息,构述当前块的运动信息候选列表之前,针对当前块的空域相邻块,若空域相邻块存在,且空域相邻块采用帧间预测模式,则可以将该空域相邻块的运动信息确定为可用运动信息;和/或,针对当前块的第一空域相邻块,若该第一空域相邻块存在,且该第一空域相邻块采用帧间预测模式,且该第一空域相邻块的运动信息与当前块的第二空域相邻块(可以为至少一个第二空域相邻块)的运动信息不同(第二空域相邻块的运动信息已经被确定为可用运动信息),则可以将第一空域相邻块的运动信息确定为可用运动信息。
示例性的,若可用运动信息包括预设运动信息,则在基于待加入到运动信息候选列表的可用运动信息,构述当前块的运动信息候选列表之前,将预设运动信息确定为可用运动信息;该预设运动信息可以包括但不限于如下运动信息的至少一种:零运动信息;基于运动信息候选列表中已存在的运动信息所导出的缺省运动信息;运动信息候选列表中已存在的运动信息。
在一种可能的实施方式中,基于待加入到运动信息候选列表的可用运动信息,构建当前块的运动信息候选列表,可以包括但不限于:针对待加入到运动信息候选列表的可用运动信息,若该可用运动信息为单向运动信息,则将该单向运动信息加入到运动信息候选列表;若该可用运动信息为双向运动信息,则将该双向运动信息加入到运动信息候选列表。
综上所述,针对UMVE模式的运动信息候选列表的构建过程,可以先放入当前块的空域相邻块的运动信息(需要是可用运动信息);然后放入当前块的时域运动信息;然后放入零运动信息,以下结合具体应用场景,对UMVE模式的运动信息候选列表的构建过程进行说明。将UMVE模式的运动信息候选列表称为UmveList,假设UmveList的长度为X,即需要添加X个可用运动信息,X可以根据经验配置,如UmveList的长度可以为2。
步骤t1、参见图4F所示,F,G,C,A,D是当前块的空域相邻块,按照F->G->C->A->D的顺序依次确定F、G、C、A和D的“可用”性。如果F存在且采用帧间预测模式,则F的运动信息为可用运动信息;否则,F的运动信息为不可用运动信息。如果G存在且采用帧间预测模式,G的运动信息与F的运动信息不相同,则G的运动信息为可用运动信息;否则,G的运动信息为不可用运动信息。如果C存在且采用帧间预测模式,C的运动信息与G的运动信息不相同,则C的运动信息为可用运动信息;否则,C的运动信息为不可用运动信息。如果A存在且采用帧间预测模式,A的运动信息与F的运动信息不相同,则A的运动信息为可用运动信息;否则,A的运动信息为不可用运动信息。如果D存在且采用帧间预测模式,D的运动信息与A的运动信息不相同,且D的运动信息与G的运动信息不相同,则D的运动信息为可用运动信息;否则,D的运动信息为不可用运动信息。
步骤t2、按F->G->C->A->D的顺序(该顺序可以根据实际情况改变),依次将可用的空域运动信息添加到UmveList中,直至UmveList长度为X或遍历结束。
步骤t3、如果UmveList的长度小于X,将当前块的时域运动信息(导出方式参见实施例1-实施例6)添加到UmveList中,直至UmveList长度为X或遍历结束。
步骤t4、如果UmveList的长度小于X,将零运动信息加入UmveList中,直至长度为X。
示例性的,基于UMVE模式的运动信息候选列表,UMVE模式的预测过程包括:
参见图5A所示,将经过运动信息候选列表构建的每个初始运动信息作为起始点,从上下左右四个方向进行搜索,偏移分别为1/4、1/2、1、2、4像素,起始点有两个(2base),四个偏移方向(4direction)和5种offset,总共生成40个候选的运动矢量。
编码端通过RDO的方式对生成的候选的运动矢量进行运动补偿,得到最优的预测块,并编码最优预测块对应的运动信息,包括umve_mv_idx(指示初始运动信息),umve_step_idx(指示偏移值)和umve_dir_idx(指示偏移方向)。解码端通过构造运动信息候选列表,并解析出umve_mv_idx(指示初始运动信息)、umve_step_idx(指示偏移值)和umve_dir_idx(指示偏移方向)得到当前块的运动矢量,并进行运动补偿得到当前块的预测值。
实施例10:实施例1-实施例7的实现过程,可以应用于AFFINE(仿射运动补偿)模式中,即运动信息候选列表可以为AFFINE模式的运动信息候选列表。示例性的,AFFINE模式的运动信息是当前块的左上角和右上角的运动信息计算得到,通过多参数模型计算得到当前块的运动信息,AFFINE模式对于有旋转,缩放的场景有很好的预测效果。
示例性的,针对编码端和解码端来说,需要获取AFFINE模式的运动信息候选列表,即需要构建当前块的运动信息候选列表,而本实施例中,可以基于当前块的时域运动信息,构建当前块的运动信息候选列表。例如,基于可用运动信息获取多参数模型,该多参数模型可以包括至少四个参数,该可用运动信息包括当前块的时域运动信息以及当前块的空域相邻块的运动信息;然后,可以根据该多参数模型构建当前块的运动信息候选列表。当前块的时域运动信息的导出方式可以参见实施例1-实施例6中的任意实施例,在此不再赘述。
在一种可能的实施方式中,多参数模型可以包括四参数模型和/或六参数模型;若多参数模型包括四参数模型,则可以基于当前块的时域运动信息和一个空域相邻块的运动信息获取四参数模型。当然,也可以基于两个空域相邻块的运动信息获取四参数模型。若多参数模型包括六参数模型,则可以基于当前块的时域运动信息和两个空域相邻块的运动信息获取六参数模型。当然,也可以基于三个空域相邻块的运动信息获取四参数模型。
示例性的,AFFINE模式采用是多参数模型,如四参数模型和六参数模型,参见图5B所示,通过两个或者三个控制点的运动信息,得到每一个子块的运动信息。AFFINE模式可以分为AFFINE skip/direct和AFFINE inter两个部分。AFFINE skip/direct使用当前块周围的一些信息导出多参数模型,基于多参数模型构建运动信息候选列表,运动信息候选列表可以支持5个多参数模型。AFFINE skip/direct的运动信息候选列表的构建过程包括:从临近AFFINE编码单元拷贝多参数模型;利用当前块周围角点的运动信息生成多参数模型;如果运动信息候选列表的多参数模型数量没有到达五个,就填充零。AFFINE inter是在AFFINE skip/direct基础上加入了MVD,每一个控制点均需传输MVD,其运动信息候选列表构建过程类似。
以下结合具体应用场景,对AFFINE模式的运动信息候选列表的构建过程进行说明。假设运动信息候选列表的长度为X,即需要添加X个多参数模型,X可以根据经验配置,如5。
参见图4F所示,F,G,C,A,B,D是当前块的空域相邻块,如果A、B和D中至少有一个“可用”,则按A、B、D的顺序扫描得到第一个“可用”的相邻块X0;否则,X0“不存在”。示例性的,A、B和D中至少有一个“可用”,表示至少有一个空域相邻块的运动信息为可用运动信息,假设相邻块X0为A,则说明A的运动信息为可用运动信息。
如果G和C中至少有一个“可用”,则按G、C的顺序扫描得到第一个可用的相邻块X1;否则,X1“不存在”。G和C中至少有一个“可用”,表示至少有一个空域相邻块的运动信息为可用运动信息,假设相邻块X1为C,则说明C的运动信息为可用运动信息。
如果F“可用”,则记相邻块F为X2;否则,X2“不存在”。
如果H“存在”,则记H为X3;否则,X3“不存在”,H块为collocated位置,即当前块的时域相邻块,如果H“存在”,则H的运动信息就是当前块的时域运动信息,当前块的时域运动信息的导出方式可以参见实施例1-实施例6中的任意实施例,在此不再赘述。
示例性的,如果X(X为X0、X1或X2)“存在”且X的L0参考索引不等于-1,则X的L0运动矢量为MVX_L0;否则MVX_L0“不存在”。如果X(X为X0、X1或X2)“存在”且X的L1参考索引不等于-1,则X的L1运动矢量为MVX_L1;否则MVX_L1“不存在”。如果X3“存在”且当前图像是B图像,则按时域运动信息的导出方式导出L0运动矢量MVX3_L0和L1运动矢量MVX3_L1,X3的L0和L1的参考索引均等于0;如果X3“存在”且当前图像是P图像,则按时域运动信息的导出方式导出L0运动矢量MVX3_L0,X3的L0参考索引等于0,L1参考索引等于-1;否则MVX3_L0和MVX3_L1“不存在”。
综上所述,可以得到X0的运动信息,X1的运动信息,X2的运动信息,X3的运动信息。
示例性的,基于上述运动信息,可以构建AFFINE模式的运动信息候选列表,该运动信息候选列表依次包括如下多参数模型:{CPMV0,CPMV1,CPMV2},{CPMV0,CPMV1,CPMV3},{CPMV0,CPMV2,CPMV3},{CPMV1,CPMV2,CPMV3},{CPMV0,CPMV1},{CPMV0,CPMV2},CPMV0-CPMV3依次为X0-X3生成的运动信息。
示例性的,如果运动信息候选列表没有到达五个,就填充零运动信息。
示例性的,基于AFFINE模式的运动信息候选列表,AFFINE模式的预测过程包括:
通过构造AFFINE模式的运动信息候选列表,利用运动信息候选列表中的多参数模型计算每个小块的mv(vx,vy),并对小块进行运动补偿。计算公式为:
对于四参数模型来说,采用如下公式计算每个小块的mv(vx,vy):
Figure GDA0003901827630000321
对于六参数模型来说,采用如下公式计算每个小块的mv(vx,vy):
Figure GDA0003901827630000322
仿射运动补偿支持4参数和6参数的运动模型,如果当前块采用双向参考,则按照8*8的小块产生子块mv并对每个子块进行运动补偿,否则,当前块使用单向运动信息(前向参考或后向参考),则按照4*4或8*8的小块产生子块mv,并对每个子块进行运动补偿。
示例性的,实施例1-实施例10可以单独实现,也可以组合实现。例如,实施例1和实施例2-实施例6的任一实施例组合实现,实施例7和实施例1-实施例6的任一实施例组合实现,实施例8和实施例1-实施例6的任一实施例组合实现,实施例9和实施例1-实施例6的任一实施例组合实现,实施例10和实施例1-实施例6的任一实施例组合实现。
当然,上述只是几个示例,对此实施例之间的组合方式不做限制。
实施例11:基于与上述方法同样的申请构思,本申请实施例还提出一种运动信息候选列表的构建装置,应用于编码端或者解码端,参见图6A所示,为所述装置的结构图,包括:
确定模块611,用于若当前块所在当前帧为B帧,则从当前帧的同位帧中确定出所述当前块的时域相邻块;以及,基于时域相邻块的运动信息确定当前块的时域运动信息,所述时域运动信息包括前向运动信息和后向运动信息;其中,若所述时域相邻块的前向运动信息不可用,所述时域相邻块的后向运动信息可用,则所述确定模块611根据所述时域相邻块的后向运动信息确定所述时域运动信息中的后向运动信息;构建模块612,用于基于所述当前块的时域运动信息,构建所述当前块的运动信息候选列表。
在一种可能的实施方式中,若所述时域相邻块的前向运动信息可用,所述时域相邻块的后向运动信息不可用,则所述确定模块611根据所述时域相邻块的前向运动信息确定所述时域运动信息中的前向运动信息,根据所述时域相邻块的前向运动信息确定所述时域运动信息中的后向运动信息。
在一种可能的实施方式中,若所述时域相邻块的前向运动信息可用,所述时域相邻块的后向运动信息可用,则所述确定模块611根据所述时域相邻块的前向运动信息确定所述时域运动信息中的前向运动信息,并根据所述时域相邻块的后向运动信息确定所述时域运动信息中的后向运动信息。
在一种可能的实施方式中,若所述时域相邻块的前向运动信息可用,所述时域相邻块的后向运动信息可用,则所述确定模块611根据所述时域相邻块的前向运动信息确定所述时域运动信息中的前向运动信息,并根据所述时域相邻块的前向运动信息确定所述时域运动信息中的后向运动信息。
在一种可能的实施方式中,若所述时域相邻块的前向运动信息可用,所述时域相邻块的后向运动信息不可用,所述确定模块611根据所述时域相邻块的前向运动信息确定所述时域运动信息中的前向运动信息。
在一种可能的实施方式中,若所述时域相邻块的前向运动信息不可用,所述时域相邻块的后向运动信息可用,则所述确定模块611根据所述时域相邻块的后向运动信息确定所述时域运动信息中的前向运动信息,并根据所述时域相邻块的后向运动信息确定所述时域运动信息中的后向运动信息。
在一种可能的实施方式中,所述运动信息候选列表包括角度加权预测模式的运动信息候选列表;所述构建模块612具体用于:基于待加入到运动信息候选列表的可用运动信息,构建所述当前块的运动信息候选列表;其中,所述可用运动信息包括所述当前块的时域运动信息;所述可用运动信息还包括如下运动信息的至少一种:空域运动信息;HMVP运动信息;预设运动信息。
在一种可能的实施方式中,所述运动信息候选列表包括高级运动信息表达模式的运动信息候选列表;所述构建模块612具体用于:基于待加入到运动信息候选列表的可用运动信息,构建所述当前块的运动信息候选列表;其中,所述可用运动信息包括所述当前块的时域运动信息;所述可用运动信息还包括如下运动信息的至少一种:空域运动信息;预设运动信息。
在一种可能的实施方式中,所述运动信息候选列表包括仿射运动补偿模式的运动信息候选列表;所述构建模块612具体用于:基于可用运动信息获取多参数模型;其中,所述多参数模型包括至少四个参数,所述可用运动信息包括所述当前块的时域运动信息以及所述当前块的空域相邻块的运动信息;根据所述多参数模型构建所述当前块的运动信息候选列表。
基于与上述方法同样的申请构思,本申请实施例提供的解码端设备(也可以称为视频解码器),从硬件层面而言,其硬件架构示意图具体可以参见图6B所示。包括:处理器621和机器可读存储介质622,其中:所述机器可读存储介质622存储有能够被所述处理器621执行的机器可执行指令;所述处理器621用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,所述处理器621用于执行机器可执行指令,以实现如下步骤:
若当前块所在当前帧为B帧,则从当前帧的同位帧中确定出所述当前块的时域相邻块;
基于时域相邻块的运动信息确定当前块的时域运动信息,所述时域运动信息包括前向运动信息和后向运动信息;其中,若所述时域相邻块的前向运动信息不可用,所述时域相邻块的后向运动信息可用,则根据所述时域相邻块的后向运动信息确定所述时域运动信息中的后向运动信息;基于所述当前块的时域运动信息,构建所述当前块的运动信息候选列表。
基于与上述方法同样的申请构思,本申请实施例提供的编码端设备(也可以称为视频编码器),从硬件层面而言,其硬件架构示意图具体可以参见图6C所示。包括:处理器631和机器可读存储介质632,其中:所述机器可读存储介质632存储有能够被所述处理器631执行的机器可执行指令;所述处理器631用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,所述处理器631用于执行机器可执行指令,以实现如下步骤:
若当前块所在当前帧为B帧,则从当前帧的同位帧中确定出所述当前块的时域相邻块;
基于时域相邻块的运动信息确定当前块的时域运动信息,所述时域运动信息包括前向运动信息和后向运动信息;其中,若所述时域相邻块的前向运动信息不可用,所述时域相邻块的后向运动信息可用,则根据所述时域相邻块的后向运动信息确定所述时域运动信息中的后向运动信息;基于所述当前块的时域运动信息,构建所述当前块的运动信息候选列表。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的方法,如上述各实施例中的运动信息候选列表的构建方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (15)

1.一种运动信息候选列表的构建方法,其特征在于,所述方法包括:
若当前块所在当前帧为B帧,则从当前帧的同位帧中确定出所述当前块的时域相邻块;
基于时域相邻块的运动信息确定当前块的时域运动信息,所述时域运动信息包括前向运动信息和后向运动信息;其中,若所述时域相邻块的前向运动信息不可用,所述时域相邻块的后向运动信息可用,则根据所述时域相邻块的后向运动信息确定所述时域运动信息中的后向运动信息,根据所述时域相邻块的后向运动信息确定所述时域运动信息中的前向运动信息;
基于所述当前块的时域运动信息,构建所述当前块的运动信息候选列表;其中,所述运动信息候选列表包括角度加权预测模式的运动信息候选列表;所述基于所述当前块的时域运动信息,构建所述当前块的运动信息候选列表,包括:基于待加入到运动信息候选列表的可用运动信息,构建所述当前块的运动信息候选列表;其中,所述可用运动信息包括所述当前块的时域运动信息。
2.根据权利要求1所述的方法,其特征在于,
所述可用运动信息还包括如下运动信息的至少一种:空域运动信息、预设运动信息。
3.根据权利要求2所述的方法,其特征在于,
若所述可用运动信息包括空域运动信息,所述基于待加入到运动信息候选列表的可用运动信息,构建所述当前块的运动信息候选列表之前,所述方法还包括:
针对所述当前块的空域相邻块,若所述空域相邻块存在,且所述空域相邻块采用帧间预测模式,则将所述空域相邻块的运动信息确定为可用运动信息。
4.根据权利要求2所述的方法,其特征在于,
若所述可用运动信息包括预设运动信息,所述基于待加入到运动信息候选列表的可用运动信息,构建所述当前块的运动信息候选列表之前,所述方法还包括:
将预设运动信息确定为可用运动信息;其中,所述预设运动信息包括:
基于运动信息候选列表中已存在的运动信息所导出的缺省运动信息。
5.根据权利要求1-4任一所述的方法,其特征在于,所述基于待加入到运动信息候选列表的可用运动信息,构建所述当前块的运动信息候选列表,包括:
针对待加入到运动信息候选列表的可用运动信息,
若所述可用运动信息为单向运动信息,且所述单向运动信息与运动信息候选列表中已存在的运动信息不重复,则将所述单向运动信息加入到运动信息候选列表;
若所述可用运动信息为双向运动信息,则将所述双向运动信息裁剪为第一单向运动信息和第二单向运动信息;若所述第一单向运动信息与运动信息候选列表中已存在的运动信息不重复,则将所述第一单向运动信息加入到运动信息候选列表。
6.根据权利要求5所述的方法,其特征在于,
所述第一单向运动信息是指向第一参考帧列表中参考帧的单向运动信息;
所述第二单向运动信息是指向第二参考帧列表中参考帧的单向运动信息;
其中,所述第一参考帧列表为当前块的前向参考帧列表,所述第二参考帧列表为当前块的后向参考帧列表;或,所述第一参考帧列表为当前块的后向参考帧列表,所述第二参考帧列表为当前块的前向参考帧列表。
7.一种运动信息候选列表的构建装置,其特征在于,所述装置包括:
确定模块,用于若当前块所在当前帧为B帧,则从当前帧的同位帧中确定出所述当前块的时域相邻块;基于时域相邻块的运动信息确定当前块的时域运动信息,所述时域运动信息包括前向运动信息和后向运动信息;其中,若所述时域相邻块的前向运动信息不可用,所述时域相邻块的后向运动信息可用,则根据所述时域相邻块的后向运动信息确定所述时域运动信息中的后向运动信息,根据所述时域相邻块的后向运动信息确定所述时域运动信息中的前向运动信息;
构建模块,用于基于所述当前块的时域运动信息,构建所述当前块的运动信息候选列表;其中,所述运动信息候选列表包括角度加权预测模式的运动信息候选列表;构建模块基于所述当前块的时域运动信息,构建所述当前块的运动信息候选列表时具体用于:基于待加入到运动信息候选列表的可用运动信息,构建所述当前块的运动信息候选列表;其中,所述可用运动信息包括所述当前块的时域运动信息。
8.根据权利要求7所述的装置,其特征在于,
所述可用运动信息还包括如下运动信息的至少一种:空域运动信息、预设运动信息。
9.根据权利要求8所述的装置,其特征在于,若所述可用运动信息包括空域运动信息,所述构建模块基于待加入到运动信息候选列表的可用运动信息,构建所述当前块的运动信息候选列表之前还用于:针对所述当前块的空域相邻块,若所述空域相邻块存在,且所述空域相邻块采用帧间预测模式,则将所述空域相邻块的运动信息确定为可用运动信息。
10.根据权利要求8所述的装置,其特征在于,若所述可用运动信息包括预设运动信息,所述构建模块基于待加入到运动信息候选列表的可用运动信息,构建所述当前块的运动信息候选列表之前还用于:将预设运动信息确定为可用运动信息;其中,所述预设运动信息包括:基于运动信息候选列表中已存在的运动信息所导出的缺省运动信息。
11.根据权利要求7-10任一项所述的装置,其特征在于,所述构建模块基于待加入到运动信息候选列表的可用运动信息,构建所述当前块的运动信息候选列表时具体用于:
针对待加入到运动信息候选列表的可用运动信息,
若所述可用运动信息为单向运动信息,且所述单向运动信息与运动信息候选列表中已存在的运动信息不重复,则将所述单向运动信息加入到运动信息候选列表;
若所述可用运动信息为双向运动信息,则将所述双向运动信息裁剪为第一单向运动信息和第二单向运动信息;若所述第一单向运动信息与运动信息候选列表中已存在的运动信息不重复,则将所述第一单向运动信息加入到运动信息候选列表。
12.根据权利要求11所述的装置,其特征在于,
所述第一单向运动信息是指向第一参考帧列表中参考帧的单向运动信息;
所述第二单向运动信息是指向第二参考帧列表中参考帧的单向运动信息;
其中,所述第一参考帧列表为当前块的前向参考帧列表,所述第二参考帧列表为当前块的后向参考帧列表;或,所述第一参考帧列表为当前块的后向参考帧列表,所述第二参考帧列表为当前块的前向参考帧列表。
13.一种解码设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;其中,
所述处理器用于执行所述机器可执行指令,以实现权利要求1-6中任一项所述的方法。
14.一种编码设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;其中,
所述处理器用于执行所述机器可执行指令,以实现权利要求1-6中任一项所述的方法。
15.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有能够被处理器执行的机器可执行指令;其中,所述处理器用于执行所述机器可执行指令,以实现权利要求1-6中任一项所述的方法。
CN202111150918.0A 2020-07-03 2020-07-03 一种运动信息候选列表的构建方法、装置及其设备 Active CN114007078B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111150918.0A CN114007078B (zh) 2020-07-03 2020-07-03 一种运动信息候选列表的构建方法、装置及其设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010637298.2A CN113891089B (zh) 2020-07-03 2020-07-03 一种运动信息候选列表的构建方法、装置及其设备
CN202111150918.0A CN114007078B (zh) 2020-07-03 2020-07-03 一种运动信息候选列表的构建方法、装置及其设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202010637298.2A Division CN113891089B (zh) 2020-07-03 2020-07-03 一种运动信息候选列表的构建方法、装置及其设备

Publications (2)

Publication Number Publication Date
CN114007078A CN114007078A (zh) 2022-02-01
CN114007078B true CN114007078B (zh) 2022-12-23

Family

ID=79000655

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202111150918.0A Active CN114007078B (zh) 2020-07-03 2020-07-03 一种运动信息候选列表的构建方法、装置及其设备
CN202010637298.2A Active CN113891089B (zh) 2020-07-03 2020-07-03 一种运动信息候选列表的构建方法、装置及其设备
CN202111153145.1A Active CN113873257B (zh) 2020-07-03 2020-07-03 一种运动信息候选列表的构建方法、装置及其设备

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN202010637298.2A Active CN113891089B (zh) 2020-07-03 2020-07-03 一种运动信息候选列表的构建方法、装置及其设备
CN202111153145.1A Active CN113873257B (zh) 2020-07-03 2020-07-03 一种运动信息候选列表的构建方法、装置及其设备

Country Status (1)

Country Link
CN (3) CN114007078B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024008011A1 (en) * 2022-07-05 2024-01-11 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015137783A1 (ko) * 2014-03-14 2015-09-17 삼성전자 주식회사 인터 레이어 비디오의 복호화 및 부호화를 위한 머지 후보 리스트 구성 방법 및 장치
CN110809161A (zh) * 2019-03-11 2020-02-18 杭州海康威视数字技术股份有限公司 运动信息候选者列表构建方法及装置
CN110933426A (zh) * 2018-09-20 2020-03-27 杭州海康威视数字技术股份有限公司 一种解码、编码方法及其设备
CN111164976A (zh) * 2019-01-03 2020-05-15 北京大学 视频处理方法和装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11025904B2 (en) * 2018-06-08 2021-06-01 Tencent America LLC Method and apparatus for temporal motion vector prediction
CN110958452B (zh) * 2018-09-27 2023-11-03 华为技术有限公司 视频解码方法及视频解码器
CN111263166B (zh) * 2018-11-30 2022-10-11 华为技术有限公司 一种视频图像预测方法及装置
CN111385569B (zh) * 2018-12-28 2022-04-26 杭州海康威视数字技术股份有限公司 一种编解码方法及其设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015137783A1 (ko) * 2014-03-14 2015-09-17 삼성전자 주식회사 인터 레이어 비디오의 복호화 및 부호화를 위한 머지 후보 리스트 구성 방법 및 장치
CN110933426A (zh) * 2018-09-20 2020-03-27 杭州海康威视数字技术股份有限公司 一种解码、编码方法及其设备
CN111164976A (zh) * 2019-01-03 2020-05-15 北京大学 视频处理方法和装置
CN110809161A (zh) * 2019-03-11 2020-02-18 杭州海康威视数字技术股份有限公司 运动信息候选者列表构建方法及装置

Also Published As

Publication number Publication date
CN113873257A (zh) 2021-12-31
CN113891089A (zh) 2022-01-04
CN113891089B (zh) 2022-12-23
CN114007078A (zh) 2022-02-01
CN113873257B (zh) 2022-12-23

Similar Documents

Publication Publication Date Title
CN111385569B (zh) 一种编解码方法及其设备
JP2020202590A (ja) 動画像復号装置、動画像符号化装置、動画像復号方法及び動画像符号化方法
RU2677588C1 (ru) Устройство кодирования видео с предсказанием, способ кодирования видео с предсказанием, программа кодирования видео с предсказанием, устройство декодирования видео с предсказанием, способ декодирования видео с предсказанием и программа декодирования видео с предсказанием
US20140205013A1 (en) Inter-prediction method and apparatus
JP2010016454A (ja) 画像符号化装置および方法、画像復号装置および方法、並びにプログラム
CN111263144B (zh) 一种运动信息确定方法及其设备
CN113873249B (zh) 一种编解码方法、装置及其设备
JP2012151576A (ja) 画像符号化方法、画像符号化装置、画像復号方法及び画像復号装置
CN114007078B (zh) 一种运动信息候选列表的构建方法、装置及其设备
KR102281514B1 (ko) 인터 예측 방법 및 그 장치
CN112291561B (zh) Hevc最大编码块运动向量计算方法、装置、芯片及存储介质
CN112449180A (zh) 一种编解码方法、装置及其设备
KR102380722B1 (ko) 인터 예측 방법 및 그 장치
JP5946980B1 (ja) 画像復号化方法
JP5750191B2 (ja) 画像復号化方法
JP2012138838A (ja) 動画像復号装置、動画像復号方法、及び動画像復号プログラム
JP2006157214A (ja) 動画像符号化装置
JP2016158306A (ja) 画像復号化方法
JP2016119726A (ja) 画像復号化方法
JP2015111925A (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
GR01 Patent grant
GR01 Patent grant