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

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

Info

Publication number
CN112449180A
CN112449180A CN201910798481.8A CN201910798481A CN112449180A CN 112449180 A CN112449180 A CN 112449180A CN 201910798481 A CN201910798481 A CN 201910798481A CN 112449180 A CN112449180 A CN 112449180A
Authority
CN
China
Prior art keywords
motion information
motion
backward
weighted
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.)
Granted
Application number
CN201910798481.8A
Other languages
English (en)
Other versions
CN112449180B (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 CN201910798481.8A priority Critical patent/CN112449180B/zh
Publication of CN112449180A publication Critical patent/CN112449180A/zh
Application granted granted Critical
Publication of CN112449180B publication Critical patent/CN112449180B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Abstract

本申请提供一种编解码方法、装置及其设备,该方法包括:获取当前块的候选运动信息;其中,所述候选运动信息包括HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息;从当前块的候选运动信息中选择第一运动信息和第二运动信息;其中,所述第一运动信息和所述第二运动信息不同;根据所述第一运动信息和所述第二运动信息确定加权运动信息;根据所述加权运动信息和当前块的候选运动信息确定目标运动信息;根据所述目标运动信息对当前块进行解码或编码。通过本申请的技术方案,能够提高编码性能。

Description

一种编解码方法、装置及其设备
技术领域
本申请涉及编解码技术领域,尤其是涉及一种编解码方法、装置及其设备。
背景技术
为了达到节约空间的目的,视频图像都是经过编码后才传输的,完整的视频编码方法可以包括预测、变换、量化、熵编码、滤波等过程。其中,预测编码可以包括帧内编码和帧间编码,帧间编码是利用视频时间域的相关性,使用邻近已编码图像的像素预测当前块的像素,从而达到有效去除视频时域冗余的目的。在帧间编码中,可以使用运动矢量(Motion Vector,MV)表示当前帧的当前块与参考帧的参考块之间的相对位移。例如,当前帧的图像A与参考帧的图像B存在很强的时域相关性,在传输图像A的图像块A1(当前块)时,则可以在图像B中进行运动搜索,找到与图像块A1最匹配的图像块B1(即参考块),并确定图像块A1与图像块B1的相对位移,该相对位移也就是图像块A1的运动矢量。
现有技术中,为了实现帧间编码,需要为当前块创建运动信息预测模式候选列表,运动信息预测模式候选列表可以包括多种类型的运动信息。例如,针对某些模式,如跳过模式,直接模式,运动信息预测模式候选列表包括时域候选运动信息、MHBSKIP候选运动信息等。
虽然运动信息预测模式候选列表包括多种类型的运动信息,但是,在采用运动信息预测模式候选列表中的运动信息进行编码时,仍然存在编码性能比较差等问题。
发明内容
本申请提供一种编解码方法、装置及其设备,可以提高编码性能。
本申请提供一种编解码方法,所述方法包括:
获取当前块的候选运动信息;其中,所述候选运动信息包括HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息;
从当前块的候选运动信息中选择第一运动信息和第二运动信息;其中,所述第一运动信息和所述第二运动信息不同;
根据所述第一运动信息和所述第二运动信息确定加权运动信息;
根据所述加权运动信息和当前块的候选运动信息确定目标运动信息;
根据所述目标运动信息对当前块进行解码或编码。
本申请提供一种编解码装置,所述装置包括:
获取模块,用于获取当前块的候选运动信息;其中,所述候选运动信息包括HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息;
选择模块,用于从当前块的候选运动信息中选择第一运动信息和第二运动信息;其中,所述第一运动信息和所述第二运动信息不同;
确定模块,用于根据所述第一运动信息和所述第二运动信息确定加权运动信息;根据所述加权运动信息和当前块的候选运动信息确定目标运动信息;
处理模块,用于根据所述目标运动信息对当前块进行解码或编码。
本申请提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
获取当前块的候选运动信息;其中,所述候选运动信息包括HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息;
从当前块的候选运动信息中选择第一运动信息和第二运动信息;其中,所述第一运动信息和所述第二运动信息不同;
根据所述第一运动信息和所述第二运动信息确定加权运动信息;
根据所述加权运动信息和当前块的候选运动信息确定目标运动信息;
根据所述目标运动信息对当前块进行解码或编码。
本申请提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
获取当前块的候选运动信息;其中,所述候选运动信息包括HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息;
从当前块的候选运动信息中选择第一运动信息和第二运动信息;其中,所述第一运动信息和所述第二运动信息不同;
根据所述第一运动信息和所述第二运动信息确定加权运动信息;
根据所述加权运动信息和当前块的候选运动信息确定目标运动信息;
根据所述目标运动信息对当前块进行解码或编码。
由以上技术方案可见,本申请实施例中,可以获取当前块的第一运动信息和第二运动信息,并根据该第一运动信息和该第二运动信息确定加权运动信息,并将该加权运动信息加入到运动信息预测模式候选列表。这样,能够丰富运动信息预测模式候选列表中的运动信息的类型,使得该运动信息预测模式候选列表可以包括加权运动信息。然后,在采用该运动信息预测模式候选列表中的运动信息进行编码时,能够提高编码性能。
附图说明
图1是本申请一种实施方式中的视频编码框架的示意图;
图2是本申请一种实施方式中的编解码方法的流程图;
图3是本申请一种实施方式中的当前块对应的空域相邻块示意图;
图4是本申请另一种实施方式中的编解码方法的流程图;
图5是本申请另一种实施方式中的编解码方法的流程图;
图6是本申请一种实施方式中的编解码装置的结构图;
图7是本申请一种实施方式中的解码端设备的硬件结构图;
图8是本申请一种实施方式中的编码端设备的硬件结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请实施例。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但是,这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,所使用的词语“如果”可以被解释成为“在……时”,或“当……时”,或“响应于确定”。
本申请实施例中提出一种编解码方法,该编解码方法可以涉及如下概念:
运动矢量(Motion Vector,MV):在帧间编码中,使用运动矢量表示当前帧图像的当前块与参考帧图像的参考块之间的相对位移,例如,当前帧的图像A与参考帧的图像B之间存在很强的时域相关性,在传输图像A的图像块A1(当前块)时,可以在图像B中进行运动搜索,找到与图像块A1最匹配的图像块B1(参考块),并确定图像块A1与图像块B1之间的相对位移,该相对位移也就是图像块A1的运动矢量。每个划分的块都有相应的运动矢量传送到解码端,如果对每个块的运动矢量进行独立编码和传输,特别是,划分成小尺寸的大量块,则会消耗相当多的比特。为降低用于编码运动矢量的比特数,可以利用相邻块之间的空间相关性,根据相邻已编码块的运动矢量对当前待编码块的运动矢量进行预测,然后对预测差进行编码,这样可以有效降低表示运动矢量的比特数。示例性的,在对当前块的运动矢量编码过程中,可以先使用相邻已编码块的运动矢量预测当前块的运动矢量,然后对该运动矢量的预测值(MVP,Motion Vector Prediction)与运动矢量的真正估值之间的运动矢量差值(MVD,MotionVector Difference)进行编码,从而有效降低运动矢量的编码比特数。
运动信息(Motion Information):由于运动矢量表示当前块与某个参考块之间的位置偏移,因此,为了准确获取指向当前块的信息,除了运动矢量,还需要参考帧图像的索引信息来表示使用哪个参考帧图像。在视频编码技术中,对于当前帧图像,通常可以建立一个参考帧图像列表,参考帧图像索引信息则表示当前块采用了参考帧图像列表中的第几个参考帧图像。示例性的,很多编码技术还支持多个参考图像列表,因此,还可以使用一个索引值,来表示使用了哪一个参考图像列表,这个索引值可以被称为参考方向。在视频编码技术中,可以将运动矢量、参考帧索引、参考方向等与运动相关的信息统称为运动信息。
率失真原则(Rate-Distortion Optimized):评价编码效率的有两大指标:码率和PSNR(Peak Signal to Noise Ratio,峰值信噪比),比特流越小,则压缩率越大,PSNR越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:J(mode)=D+λ*R,示例性的,D表示Distortion(失真),通常可以使用SSE指标来进行衡量,SSE是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。
帧内预测与帧间预测(intra prediction and inter prediction)技术:帧内预测是指,可以利用当前块的空域相邻块(即与当前块处于同一帧图像)的重建像素值进行预测编码。帧间预测是指,利用当前块的时域相邻块(与当前块处于不同帧图像)的重建像素值进行预测编码。
帧间预测是利用视频时域的相关性,由于视频序列包含较强的时域相关性,则使用邻近已编码图像像素预测当前图像的像素,从而达到有效去除视频时域冗余的目的。
视频编码框架:参见图1所示,为视频编码框架的示意图,可以使用视频编码框架实现本申请实施例的编码端处理流程,视频解码框架的示意图与图1类似,在此不再赘述,可以使用视频解码框架实现本申请实施例的解码端处理流程。在视频编码框架和视频解码框架中,可以包括帧内预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端处理流程,在解码端,通过这些模块之间的配合,可以实现解码端处理流程。
跳过模式和直接模式:在帧间预测中,由于视频存在很强的时域相关性,即时域相邻的两帧图像有很多相似块,因此,当前帧的块在相邻参考图像中进行运动搜索,找到与当前块最匹配的块作为参考块。由于参考块与当前块相似度高,两者的差值小,因此,编码差值的码率开销远小于直接编码当前块像素值带来的码率开销。为了表示与当前块最匹配块的位置,需要编码很多运动信息传递到解码端,使得解码端知晓最匹配块的位置。而运动信息,尤其是运动矢量信息,需要消耗较多的码率进行编码传递。为节省这部分的码率开销,视频编码标准中设计了比较节省运动矢量信息编码的特殊模式:跳过模式和直接模式。
在跳过模式或者直接模式下,当前块的运动信息完全复用时域或空域某个相邻块的运动信息,比如说,从周围多个块的运动信息集合中,选择一个运动信息作为当前块的运动信息。因此,在跳过模式或直接模式下,只需要编码一个索引值表示当前块使用运动信息集合中的哪个运动信息,而跳过模式和直接模式之间的区别在于:跳过模式不需要编码残差,直接模式需要编码残差。显然,跳过模式或者直接模式可以大大节省运动信息的编码开销。
跳过(Skip)模式:一种帧间预测的模式,编码端不需要传输残差信息,也不需要传输MVD,只需要传输运动信息的索引即可。解码端通过解析运动信息的索引,即可推导当前块的运动信息,获取运动信息后,利用运动信息确定预测值,并将预测值直接作为重建值。
直接(Direct)模式:一种帧间预测的模式,编码端需要传输残差信息,但不需要传输MVD,只需要传输运动信息的索引即可。解码端通过解析运动信息的索引,即可推导当前块的运动信息,获取运动信息后,利用运动信息确定预测值,将预测值加上残差值得到重建值。
HMVP(History based Motion Vector Prediction,基于历史信息的运动矢量预测)模式:HMVP模式是新一代视频编码标准中采纳的技术,其原理是利用先前重建块的运动信息来预测当前块的运动信息。通过建立一个HMVP的列表,来保存先前重建块的运动信息,当解码一个块且运动信息发生变化,则更新HMVP的列表。因此,对于当前块,始终有HMVP的列表中的运动信息可以利用,而通过利用HMVP的列表中的运动信息,可以提高预测精度。
MHBSKIP模式:MHBSKIP模式是跳过模式或直接模式的一种预测模式,利用当前块的空域相邻块的运动信息来预测当前块的运动信息。示例性的,MHBSKIP模式通过当前块的空域相邻块的运动信息,构建双向、后向和前向三个运动信息来给当前块进行预测。
在跳过模式或直接模式下,对当前块进行预测时,需要为当前块创建运动信息预测模式候选列表,并利用运动信息预测模式候选列表对当前块进行预测。在创建运动信息预测模式候选列表时,运动信息预测模式候选列表依次包括时域候选运动信息、MHBSKIP模式的候选运动信息(为区分方便,称为MHBSKIP候选运动信息)、HMVP模式的候选运动信息(为区分方便,称为HMVP候选运动信息)。时域候选运动信息为1个,MHBSKIP候选运动信息为3个,HMVP候选运动信息为8个。当然,时域候选运动信息的数量可以为其它数值,MHBSKIP候选运动信息的数量为其它数值,HMVP候选运动信息的数量为其它数值。
例如,参见表1所示,为跳过模式或直接模式的运动信息预测模式候选列表,运动信息预测模式候选列表包括时域候选运动信息、MHBSKIP候选运动信息、HMVP候选运动信息。
表1
Figure BDA0002181629310000061
虽然运动信息预测模式候选列表包括多种类型的运动信息,但是,在采用运动信息预测模式候选列表中的运动信息进行编码时,仍然存在编码性能较差等问题。
针对上述发现,本申请实施例中提出一种新的预测模式(即加权模式),能够将多种模式的运动信息进行加权,如对HMVP候选运动信息和时域候选运动信息进行加权、对HMVP候选运动信息和MHBSKIP候选运动信息进行加权、或对时域候选运动信息和MHBSKIP候选运动信息进行加权,得到加权运动信息。
然后,将加权运动信息加入到运动信息预测模式候选列表。显然,由于加权运动信息考虑了两种运动信息的结合特征,从而能够丰富运动信息预测模式候选列表中的运动信息的类型,在采用该运动信息预测模式候选列表中的运动信息进行编码时,能够提高编码性能。
以下结合几个具体实施例,对本申请实施例中的编解码方法进行说明。
实施例1:参见图2所示,为本申请实施例中的编解码方法的流程示意图,该编解码方法可以应用于解码端或者编码端,该编解码方法可以包括以下步骤:
步骤201,获取当前块的候选运动信息;示例性的,该候选运动信息可以包括但不限于:HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息。
示例性的,HMVP候选运动信息是HMVP模式的运动信息,HMVP模式的原理是利用先前重建块的运动信息来预测当前块的运动信息。因此,HMVP候选运动信息可以包括:利用当前块的先前重建块(对于编码端来说,先前重建块是先前编码块,对于解码端来说,先前重建块是先前解码块)的运动信息构建的历史运动信息。MHBSKIP候选运动信息是MHBSKIP模式的运动信息,MHBSKIP模式的原理是利用当前块的空域相邻块的运动信息来预测当前块的运动信息,MHBSKIP模式通过当前块的空域相邻块的运动信息,构建双向、后向和前向三个运动信息来给当前块进行预测。因此,MHBSKIP候选运动信息包括:利用当前块的空域相邻块的运动信息构建的双向运动信息、后向运动信息和前向运动信息。
例如,可以维护一个HMVP列表,在对每个块进行编码/解码时,对块A1(在对当前块进行编码/解码时,块A1已经是已重建块)进行编码/解码时,将块A1的运动信息添加到HMVP列表,块A1的运动信息作为HMVP候选运动信息。对块A2进行编码/解码时,将块A2的运动信息添加到HMVP列表,块A2的运动信息作为HMVP候选运动信息。以此类推,在对每个块进行编码/解码时,若该块的运动信息与HMVP列表中的运动信息不重复,就可以将该块的运动信息添加到HMVP列表,且作为HMVP候选运动信息。假设HMVP列表中的HMVP候选运动信息数量为M,则将每个块的运动信息添加到HMVP列表时,先判断HMVP列表中的HMVP候选运动信息数量是否为M,如果是,则将最先添加的HMVP候选运动信息删除,然后将该块的运动信息添加到HMVP列表,使得HMVP候选运动信息数量不超过M。M可以根据实际需要配置,如M为6、8、10等,对此不做限制。
综上所述,在对当前块进行编码/解码时,可以从HMVP列表中获取当前块的HMVP候选运动信息,如从HMVP列表中获取当前块的M个HMVP候选运动信息。
例如,在对当前块进行编码/解码时,可以从当前块所在当前帧对应的时域参考帧中,为当前块选择参考块,并将参考块的运动信息作为时域候选运动信息。
例如,在对当前块进行编码/解码时,可以确定当前块的空域相邻块,并根据空域相邻块的运动信息确定MHBSKIP候选运动信息。MHBSKIP候选运动信息可以包括:从当前块的空域相邻块中获取到的前向运动信息、后向运动信息和双向运动信息。参见图3所示,为当前块的空域相邻块的示例,假设这些空域相邻块的选取顺序依次是相邻块F、相邻块A、相邻块D、相邻块B、相邻块G、相邻块C,当然,上述选取顺序只是示例。先获取相邻块F的运动信息,若相邻块F的运动信息是双向运动信息,则将相邻块F的运动信息作为MHBSKIP候选运动信息(双向)。若相邻块F的运动信息是后向运动信息,则将相邻块F的运动信息作为MHBSKIP候选运动信息(后向)。若相邻块F的运动信息是前向运动信息,则将相邻块F的运动信息作为MHBSKIP候选运动信息(前向)。然后,获取相邻块A的运动信息,若相邻块A的运动信息是双向运动信息,则判断当前是否已经存在MHBSKIP候选运动信息(双向),如果否,则将相邻块A的运动信息作为MHBSKIP候选运动信息(双向),如果是,则不将相邻块A的运动信息作为MHBSKIP候选运动信息。若相邻块A的运动信息是后向运动信息,则判断当前是否已经存在MHBSKIP候选运动信息(后向),如果否,则将相邻块A的运动信息作为MHBSKIP候选运动信息(后向),如果是,则不将相邻块A的运动信息作为MHBSKIP候选运动信息。若相邻块A的运动信息是前向运动信息,则判断当前是否已经存在MHBSKIP候选运动信息(前向),如果否,则将相邻块A的运动信息作为MHBSKIP候选运动信息(前向),如果是,则不将相邻块A的运动信息作为MHBSKIP候选运动信息。以此类推,可以依次对相邻块F、相邻块A、相邻块D、相邻块B、相邻块G、相邻块C进行上述处理,直到从这些空域相邻块中获取到一个双向的MHBSKIP候选运动信息、一个后向的MHBSKIP候选运动信息、一个前向的MHBSKIP候选运动信息。
综上所述,可以获取到当前块的HMVP候选运动信息(如多个HMVP候选运动信息)、时域候选运动信息(如1个时域候选运动信息)和MHBSKIP候选运动信息(如3个MHBSKIP候选运动信息)。当然,上述候选运动信息还可以为其它数量,对此不做限制。
步骤202,从当前块的候选运动信息中选择第一运动信息和第二运动信息;第一运动信息和第二运动信息不同。例如,第一运动信息为HMVP候选运动信息,第二运动信息为时域候选运动信息;或第一运动信息为HMVP候选运动信息,第二运动信息为MHBSKIP候选运动信息;或第一运动信息为时域候选运动信息,第二运动信息为MHBSKIP候选运动信息。
在一种可能的实施方式中,第一运动信息可以是从HMVP候选运动信息中选择的;第二运动信息可以是从时域候选运动信息和MHBSKIP候选运动信息中选择的。
例如,第一运动信息是从HMVP候选运动信息中选择的至少一个运动信息;第二运动信息是从时域候选运动信息和MHBSKIP候选运动信息中选择的至少一个运动信息。
首先,获取当前块的多个HMVP候选运动信息,并从多个HMVP候选运动信息中选择至少一个运动信息作为第一运动信息。例如,假设HMVP候选运动信息的数量为8,第一运动信息的数量为3,则从8个HMVP候选运动信息中随机选择3个HMVP候选运动信息作为第一运动信息;或者,从8个HMVP候选运动信息中选择前3个HMVP候选运动信息作为第一运动信息;或者,从8个HMVP候选运动信息中选择后3个HMVP候选运动信息作为第一运动信息;或者,从8个HMVP候选运动信息中选择第1、3、5个HMVP候选运动信息作为第一运动信息。当然,上述只是几个示例,对此选择方式不做限制。
其次,获取当前块的时域候选运动信息和MHBSKIP候选运动信息,并从时域候选运动信息和MHBSKIP候选运动信息中选择至少一个运动信息作为第二运动信息。例如,将一个时域候选运动信息作为第二运动信息;或者,将一个时域候选运动信息和一个MHBSKIP候选运动信息作为第二运动信息;或者,将一个时域候选运动信息和三个MHBSKIP候选运动信息作为第二运动信息。当然,上述只是几个示例,对此选择方式不做限制。
又例如,第一运动信息可以是按照编码或解码从后往前的顺序从HMVP候选运动信息中选择的。针对编码端来说,可以按照编码从后往前的顺序,从多个HMVP候选运动信息中选择HMVP候选运动信息作为第一运动信息。针对解码端来说,可以按照解码从后往前的顺序,从多个HMVP候选运动信息中选择HMVP候选运动信息作为第一运动信息。第二运动信息是从时域候选运动信息和MHBSKIP候选运动信息中选择的至少一个运动信息。
首先,获取当前块的多个HMVP候选运动信息,并确定所述多个HMVP候选运动信息对应的已重建块的编码顺序/解码顺序(针对编码端来说,已重建块是已编码块,且基于编码顺序进行处理;针对解码端来说,已重建块是已解码块,且基于解码顺序进行处理)。根据每个HMVP候选运动信息对应的已重建块的编码顺序/解码顺序,从所述多个HMVP候选运动信息中选择编码顺序/解码顺序靠后的HMVP候选运动信息作为第一运动信息。例如,假设HMVP候选运动信息的数量为8,第一运动信息的数量为1,则从8个HMVP候选运动信息中选择编码顺序/解码顺序靠后的一个HMVP候选运动信息作为第一运动信息。
其次,获取当前块的时域候选运动信息和MHBSKIP候选运动信息,并从时域候选运动信息和MHBSKIP候选运动信息中选择至少一个运动信息作为第二运动信息。例如,将一个时域候选运动信息作为第二运动信息;或者,将一个时域候选运动信息和一个MHBSKIP候选运动信息作为第二运动信息;或者,将一个时域候选运动信息和三个MHBSKIP候选运动信息作为第二运动信息。当然,上述只是几个示例,对此选择方式不做限制。
在另一种可能的实施方式中,第一运动信息可以是从时域候选运动信息和MHBSKIP候选运动信息中选择的;第二运动信息可以是从时域候选运动信息和MHBSKIP候选运动信息中选择的。例如,第一运动信息是从时域候选运动信息中选择的至少一个运动信息;第二运动信息是从MHBSKIP候选运动信息中选择的至少一个运动信息。
首先,获取当前块的时域候选运动信息,从时域候选运动信息中选择至少一个运动信息作为第一运动信息。例如,将一个时域候选运动信息作为第一运动信息。其次,获取当前块的MHBSKIP候选运动信息,从MHBSKIP候选运动信息中选择至少一个运动信息作为第二运动信息。例如,将一个MHBSKIP候选运动信息作为第二运动信息,或者,将三个MHBSKIP候选运动信息作为第二运动信息。当然,上述只是示例,对此选择方式不做限制。
步骤203,根据第一运动信息和第二运动信息确定加权运动信息。
示例性的,第一运动信息的数量可以为一个或者多个,第二运动信息的数量也可以为一个或者多个,例如,第一运动信息包括第一运动信息1和第一运动信息2,第二运动信息包括第二运动信息1,则根据第一运动信息1和第二运动信息1确定加权运动信息;根据第一运动信息2和第二运动信息1确定加权运动信息。又例如,第一运动信息包括第一运动信息1,第二运动信息包括第二运动信息1和第二运动信息2,则根据第一运动信息1和第二运动信息1确定加权运动信息;根据第一运动信息1和第二运动信息2确定加权运动信息。又例如,第一运动信息包括第一运动信息1和第一运动信息2,第二运动信息包括第二运动信息1和第二运动信息2,则根据第一运动信息1和第二运动信息1确定加权运动信息;根据第一运动信息1和第二运动信息2确定加权运动信息;根据第一运动信息2和第二运动信息1确定加权运动信息;根据第一运动信息2和第二运动信息2确定加权运动信息。
在一种可能的实施方式中,根据第一运动信息和第二运动信息确定加权运动信息,可以包括但不限于:对该第一运动信息的水平运动矢量和该第二运动信息的水平运动矢量进行加权,得到加权运动信息的水平运动矢量;对该第一运动信息的垂直运动矢量和该第二运动信息的垂直运动矢量进行加权,得到加权运动信息的垂直运动矢量。
在一种可能的实施方式中,根据第一运动信息和第二运动信息确定加权运动信息,可以包括但不限于:对该第一运动信息的水平运动矢量和该第二运动信息的水平运动矢量进行加权,得到加权运动信息的水平运动矢量;对该第一运动信息的垂直运动矢量和该第二运动信息的垂直运动矢量进行加权,得到加权运动信息的垂直运动矢量;根据该第一运动信息的参考帧索引和该第二运动信息的参考帧索引确定加权运动信息的参考帧索引。
示例性的,针对“对该第一运动信息的水平运动矢量和该第二运动信息的水平运动矢量进行加权,得到加权运动信息的水平运动矢量”的过程,可以包括但不限于:
情况一、当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,则可以对该第一运动信息的前向水平运动矢量和该第二运动信息的前向水平运动矢量进行加权,得到加权运动信息的前向水平运动矢量。或者,当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息不可用时,则可以将该第一运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量。或者,当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息可用时,则可以将第二运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量。或者,当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息不可用时,则加权运动信息的前向运动信息不可用。
示例性的,对该第一运动信息的前向水平运动矢量和该第二运动信息的前向水平运动矢量进行加权,得到加权运动信息的前向水平运动矢量,可以包括但不限于:对第一运动信息的前向水平运动矢量、第一运动信息的前向水平运动矢量的权重值(后续将该权重值称作第一权重值)、第二运动信息的前向水平运动矢量、第二运动信息的前向水平运动矢量的权重值(后续将该权重值称作第二权重值)进行加权,得到前向水平运动矢量的加权值。然后,根据前向水平运动矢量的加权值获得加权运动信息的前向水平运动矢量,例如,将前向水平运动矢量的加权值向上取整或向下取整后,得到加权运动信息的前向水平运动矢量。示例性的,第一权重值与第二权重值可以相同或者不同,对此不做限制。
例如,将第一运动信息的前向水平运动矢量记为MVXL0A,将第一运动信息的前向水平运动矢量的第一权重值记为a0,将第二运动信息的前向水平运动矢量记为MVXL0b,将第二运动信息的前向水平运动矢量的第二权重值记为b0,则前向水平运动矢量的加权值可以为(MVXL0A*a0+MVXL0b*b0)/(a0+b0)。作为一种可能,若前向水平运动矢量的加权值为整数,则将前向水平运动矢量的加权值作为加权运动信息的前向水平运动矢量。作为另一种可能,若前向水平运动矢量的加权值不为整数,则将前向水平运动矢量的加权值向上取整或向下取整后,得到加权运动信息的前向水平运动矢量。第一权重值a0和第二权重值b0均可以根据经验配置,第一权重值a0和第二权重值b0可以相同,也可以不同,对此不做限制。例如,第一权重值a0为0.5,第二权重值b0为0.5;或者,第一权重值a0为1,第二权重值b0为1;或者,第一权重值a0为0.3,第二权重值b0为0.7;或者,第一权重值a0为0.6,第二权重值b0为0.4。当然,上述只是几个示例。
以第一权重值a0为1,第二权重值b0为1为例,则前向水平运动矢量的加权值为(MVXL0A+MVXL0b)/2。假设(MVXL0A+MVXL0b)/2为整数,则加权运动信息的前向水平运动矢量为前向水平运动矢量的加权值,即加权运动信息的前向水平运动矢量为(MVXL0A+MVXL0b)/2。假设(MVXL0A+MVXL0b)/2不为整数,则加权运动信息的前向水平运动矢量为对前向水平运动矢量的加权值向上取整(或向下取整,以向上取整为例),即加权运动信息的前向水平运动矢量为(MVXL0A+MVXL0b+1)/2,通过“+1”达到向上取整效果。
当然,上述是针对第一权重值a0为1,第二权重值b0为1的示例,其它权重值的实现方式类似,对MVXL0A、a0、MVXL0b、b0进行加权,得到前向水平运动矢量的加权值,将前向水平运动矢量的加权值向上取整或向下取整后,得到加权运动信息的前向水平运动矢量。
情况二、当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,则可以对该第一运动信息的后向水平运动矢量和该第二运动信息的后向水平运动矢量进行加权,得到加权运动信息的后向水平运动矢量。或者,当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息不可用时,则可以将该第一运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量。或者,当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息可用时,则可以将该第二运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量。或者,当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息不可用时,则加权运动信息的后向运动信息不可用。
示例性的,对该第一运动信息的后向水平运动矢量和该第二运动信息的后向水平运动矢量进行加权,得到加权运动信息的后向水平运动矢量,可以包括但不限于:对第一运动信息的后向水平运动矢量、第一运动信息的后向水平运动矢量的权重值(后续将该权重值称第三权重值)、第二运动信息的后向水平运动矢量、第二运动信息的后向水平运动矢量的权重值(后续将该权重值称第四权重值)进行加权,得到后向水平运动矢量的加权值。然后,根据后向水平运动矢量的加权值获得加权运动信息的后向水平运动矢量,例如,将后向水平运动矢量的加权值向上取整或向下取整后,得到加权运动信息的后向水平运动矢量。示例性的,第三权重值与第四权重值可以相同或者不同,对此不做限制。
例如,将第一运动信息的后向水平运动矢量记为MVXL1A,将第一运动信息的后向水平运动矢量的第一权重值记为a1,将第二运动信息的后向水平运动矢量记为MVXL1b,将第二运动信息的后向水平运动矢量的第二权重值记为b1,则后向水平运动矢量的加权值可以为(MVXL1A*a1+MVXL1b*b1)/(a1+b1)。作为一种可能,若后向水平运动矢量的加权值为整数,将后向水平运动矢量的加权值作为加权运动信息的后向水平运动矢量。作为另一种可能,若后向水平运动矢量的加权值不为整数,将后向水平运动矢量的加权值向上取整或向下取整后,得到加权运动信息的后向水平运动矢量。第三权重值a1和第四权重值b1均可以根据经验配置,第三权重值a1和第四权重值b1可以相同,也可以不同,对此不做限制。例如,第三权重值a1为0.5,第四权重值b1为0.5;或者,第三权重值a1为1,第四权重值b1为1;或者,第三权重值a1为0.3,第四权重值b1为0.7;或者,第三权重值a1为0.6,第四权重值b1为0.4。当然,上述只是几个示例。
以第三权重值a1为1,第四权重值b1为1为例,则后向水平运动矢量的加权值为(MVXL1A+MVXL1b)/2。假设(MVXL1A+MVXL1b)/2为整数,则加权运动信息的后向水平运动矢量为后向水平运动矢量的加权值,即加权运动信息的后向水平运动矢量为(MVXL0A+MVXL0b)/2。假设(MVXL0A+MVXL0b)/2不为整数,则加权运动信息的后向水平运动矢量为对后向水平运动矢量的加权值向上取整(或向下取整,以向上取整为例),即加权运动信息的后向水平运动矢量为(MVXL0A+MVXL0b+1)/2,通过“+1”达到向上取整效果。
当然,上述是针对第三权重值a1为1,第四权重值b1为1的示例,其它权重值的实现方式类似,对MVXL1A、a1、MVXL1b、b1进行加权,得到后向水平运动矢量的加权值,将后向水平运动矢量的加权值向上取整或向下取整后,得到加权运动信息的后向水平运动矢量。
情况三、当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,判断第一运动信息的前向参考帧索引和第二运动信息的前向参考帧索引是否相同;若相同,则对第一运动信息的前向水平运动矢量和第二运动信息的前向水平运动矢量进行加权,得到加权运动信息的前向水平运动矢量。若不同,则将第一运动信息的前向水平运动矢量或者第二运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量。或者,当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息不可用时,将该第一运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量。或者,当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息可用时,将第二运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量。或者,当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息不可用时,加权运动信息的前向运动信息不可用。
情况三与情况一相比,二者的不同之处在于:在情况三中,当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,还需要判断第一运动信息的前向参考帧索引和第二运动信息的前向参考帧索引是否相同。若相同,则对第一运动信息的前向水平运动矢量和第二运动信息的前向水平运动矢量进行加权,得到加权运动信息的前向水平运动矢量,具体加权方式参见情况一,在此不再重复赘述。若不同,则可以直接将第一运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量,或者,可以直接将第二运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量。
情况四、当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,判断第一运动信息的后向参考帧索引和第二运动信息的后向参考帧索引是否相同;若相同,则对第一运动信息的后向水平运动矢量和第二运动信息的后向水平运动矢量进行加权,得到加权运动信息的后向水平运动矢量。若不同,则将第一运动信息的后向水平运动矢量或者第二运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量。或者,当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息不可用时,将该第一运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量。或者,当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息可用时,将第二运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量。或者,当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息不可用时,加权运动信息的后向运动信息不可用。
情况四与情况二相比,二者的不同之处在于:在情况四中,当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,还需要判断第一运动信息的后向参考帧索引和第二运动信息的后向参考帧索引是否相同。若相同,则对第一运动信息的后向水平运动矢量和第二运动信息的后向水平运动矢量进行加权,得到加权运动信息的后向水平运动矢量,具体加权方式参见情况二,在此不再重复赘述。若不同,则可以直接将第一运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量,或者,可以直接将第二运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量。
在上述情况一至情况四中,在获取水平运动矢量的加权值之后,还可以将水平运动矢量的加权值向上取整或向下取整后,得到加权运动信息的水平运动矢量。
水平运动矢量的加权值包括前向水平运动矢量的加权值和/或后向水平运动矢量的加权值。针对前向水平运动矢量的加权值,对前向水平运动矢量的加权值向上取整或向下取整后,得到加权运动信息的前向水平运动矢量。针对后向水平运动矢量的加权值,对后向水平运动矢量的加权值向上取整或向下取整后,得到加权运动信息的后向水平运动矢量。
示例性的,针对“对该第一运动信息的垂直运动矢量和该第二运动信息的垂直运动矢量进行加权,得到加权运动信息的垂直运动矢量”的过程,可以包括但不限于:
情况1、当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,则可以对该第一运动信息的前向垂直运动矢量和该第二运动信息的前向垂直运动矢量进行加权,得到加权运动信息的前向垂直运动矢量。或者,当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息不可用时,则可以将该第一运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量。或者,当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息可用时,则可以将第二运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量。或者,当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息不可用时,则加权运动信息的前向运动信息不可用。
示例性的,对该第一运动信息的前向垂直运动矢量和该第二运动信息的前向垂直运动矢量进行加权,得到加权运动信息的前向垂直运动矢量,可以包括但不限于:对第一运动信息的前向垂直运动矢量、第一运动信息的前向垂直运动矢量的权重值(后续将该权重值称作第五权重值)、第二运动信息的前向垂直运动矢量、第二运动信息的前向垂直运动矢量的权重值(后续将该权重值称作第六权重值)进行加权,得到前向垂直运动矢量的加权值。然后,根据前向垂直运动矢量的加权值获得加权运动信息的前向垂直运动矢量,例如,将前向垂直运动矢量的加权值向上取整或向下取整后,得到加权运动信息的前向垂直运动矢量。示例性的,第五权重值与第六权重值可以相同或者不同,对此不做限制。
例如,将第一运动信息的前向垂直运动矢量记为MVYL0A,将第一运动信息的前向垂直运动矢量的第五权重值记为a2,将第二运动信息的前向垂直运动矢量记为MVYL0b,将第二运动信息的前向垂直运动矢量的第六权重值记为b2,则前向垂直运动矢量的加权值可以为(MVYL0A*a2+MVYL0b*b2)/(a2+b2)。作为一种可能,若前向垂直运动矢量的加权值为整数,将前向垂直运动矢量的加权值作为加权运动信息的前向垂直运动矢量。作为另一种可能,若前向垂直运动矢量的加权值不为整数,将前向垂直运动矢量的加权值向上取整或向下取整后,得到加权运动信息的前向垂直运动矢量。第五权重值a2和第六权重值b2均可以根据经验配置,第五权重值a2和第六权重值b2可以相同,也可以不同,对此不做限制。例如,第五权重值a2为0.5,第六权重值b2为0.5;或者,第五权重值a2为1,第六权重值b2为1;或者,第五权重值a2为0.3,第六权重值b2为0.7;或者,第五权重值a2为0.6,第六权重值b2为0.4。当然,上述只是几个示例。
以第五权重值a2为1,第六权重值b2为1为例,则前向垂直运动矢量的加权值为(MVYL0A+MVYL0b)/2。假设(MVYL0A+MVYL0b)/2为整数,则加权运动信息的前向垂直运动矢量为前向垂直运动矢量的加权值,即加权运动信息的前向垂直运动矢量为(MVXL0A+MVXL0b)/2。假设(MVYL0A+MVYL0b)/2不为整数,则加权运动信息的前向垂直运动矢量为对前向垂直运动矢量的加权值向上取整(或向下取整,以向上取整为例),即加权运动信息的前向垂直运动矢量为(MVYL0A+MVYL0b+1)/2,通过“+1”达到向上取整效果。
当然,上述是针对第五权重值a2为1,第六权重值b2为1的示例,其它权重值的实现方式类似,对MVYL0A、a2、MVYL0b、b2进行加权,得到前向垂直运动矢量的加权值,将前向垂直运动矢量的加权值向上取整或向下取整后,得到加权运动信息的前向垂直运动矢量。
情况2、当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,则可以对该第一运动信息的后向垂直运动矢量和该第二运动信息的后向垂直运动矢量进行加权,得到加权运动信息的后向垂直运动矢量。或者,当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息不可用时,则可以将该第一运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量。或者,当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息可用时,则可以将该第二运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量。或者,当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息不可用时,则加权运动信息的后向运动信息不可用。
示例性的,对该第一运动信息的后向垂直运动矢量和该第二运动信息的后向垂直运动矢量进行加权,得到加权运动信息的后向垂直运动矢量,可以包括但不限于:对第一运动信息的后向垂直运动矢量、第一运动信息的后向垂直运动矢量的权重值(后续将该权重值称作第七权重值)、第二运动信息的后向垂直运动矢量、第二运动信息的后向垂直运动矢量的权重值(后续将该权重值称作第八权重值)进行加权,得到后向垂直运动矢量的加权值。然后,根据后向垂直运动矢量的加权值获得加权运动信息的后向垂直运动矢量,例如,将后向垂直运动矢量的加权值向上取整或向下取整后,得到加权运动信息的后向垂直运动矢量。示例性的,第七权重值与第八权重值可以相同或者不同,对此不做限制。
例如,将第一运动信息的后向垂直运动矢量记为MVYL1A,将第一运动信息的后向垂直运动矢量的第七权重值记为a3,将第二运动信息的后向垂直运动矢量记为MVYL1b,将第二运动信息的后向垂直运动矢量的第八权重值记为b3,则后向垂直运动矢量的加权值可以为(MVYL1A*a3+MVYL1b*b3)/(a3+b3)。作为一种可能,若后向垂直运动矢量的加权值为整数,将后向垂直运动矢量的加权值作为加权运动信息的后向垂直运动矢量。作为另一种可能,若后向垂直运动矢量的加权值不为整数,将后向垂直运动矢量的加权值向上取整或向下取整后,得到加权运动信息的后向垂直运动矢量。第七权重值a3和第八权重值b3均可以根据经验配置,第七权重值a3和第八权重值b3可以相同,也可以不同,对此不做限制。例如,第七权重值a3为0.5,第八权重值b3为0.5;或者,第七权重值a3为1,第八权重值b3为1;或者,第七权重值a3为0.3,第八权重值b3为0.7;或者,第七权重值a3为0.6,第八权重值b3为0.4。当然,上述只是几个示例。
以第七权重值a3为1,第八权重值b3为1为例,则后向垂直运动矢量的加权值为(MVYL1A+MVYL1b)/2。假设(MVYL1A+MVYL1b)/2为整数,则加权运动信息的后向垂直运动矢量为后向垂直运动矢量的加权值,即加权运动信息的后向垂直运动矢量为(MVYL0A+MVYL0b)/2。假设(MVYL0A+MVYL0b)/2不为整数,则加权运动信息的后向垂直运动矢量为对后向垂直运动矢量的加权值向上取整(或向下取整,以向上取整为例),即加权运动信息的后向垂直运动矢量为(MVYL0A+MVYL0b+1)/2,通过“+1”达到向上取整效果。
当然,上述是针对第七权重值a3为1,第八权重值b3为1的示例,其它权重值的实现方式类似,对MVYL1A、a3、MVYL1b、b3进行加权,得到后向垂直运动矢量的加权值,将后向垂直运动矢量的加权值向上取整或向下取整后,得到加权运动信息的后向垂直运动矢量。
情况3、当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,判断第一运动信息的前向参考帧索引和第二运动信息的前向参考帧索引是否相同;若相同,则对第一运动信息的前向垂直运动矢量和第二运动信息的前向垂直运动矢量进行加权,得到加权运动信息的前向垂直运动矢量。若不同,则将第一运动信息的前向垂直运动矢量或者第二运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量。或者,当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息不可用时,将该第一运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量。或者,当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息可用时,将第二运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量。或者,当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息不可用时,加权运动信息的前向运动信息不可用。
情况3与情况1相比,二者的不同之处在于:在情况3中,当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,还需要判断第一运动信息的前向参考帧索引和第二运动信息的前向参考帧索引是否相同。若相同,则对第一运动信息的前向垂直运动矢量和第二运动信息的前向垂直运动矢量进行加权,得到加权运动信息的前向垂直运动矢量,具体加权方式参见情况1,在此不再重复赘述。若不同,则可以直接将第一运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量,或者,可以直接将第二运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量。
情况4、当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,判断第一运动信息的后向参考帧索引和第二运动信息的后向参考帧索引是否相同;若相同,则对第一运动信息的后向垂直运动矢量和第二运动信息的后向垂直运动矢量进行加权,得到加权运动信息的后向垂直运动矢量。若不同,则将第一运动信息的后向垂直运动矢量或者第二运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量。或者,当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息不可用时,将该第一运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量。或者,当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息可用时,将第二运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量。或者,当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息不可用时,加权运动信息的后向运动信息不可用。
情况4与情况2相比,二者的不同之处在于:在情况4中,当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,还需要判断第一运动信息的后向参考帧索引和第二运动信息的后向参考帧索引是否相同。若相同,则对第一运动信息的后向垂直运动矢量和第二运动信息的后向垂直运动矢量进行加权,得到加权运动信息的后向垂直运动矢量,具体加权方式参见情况2,在此不再重复赘述。若不同,则可以直接将第一运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量,或者,可以直接将第二运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量。
在上述情况1至情况4中,在获取垂直运动矢量的加权值之后,还可以将垂直运动矢量的加权值向上取整或向下取整后,得到加权运动信息的垂直运动矢量。
垂直运动矢量的加权值包括前向垂直运动矢量的加权值和/或后向垂直运动矢量的加权值。针对前向垂直运动矢量的加权值,对前向垂直运动矢量的加权值向上取整或向下取整后,得到加权运动信息的前向垂直运动矢量。针对后向垂直运动矢量的加权值,对后向垂直运动矢量的加权值向上取整或向下取整后,得到加权运动信息的后向垂直运动矢量。
示例性的,针对“根据该第一运动信息的参考帧索引和该第二运动信息的参考帧索引确定加权运动信息的参考帧索引”的过程,可以包括但不限于:当第一运动信息的前向运动信息和第二运动信息的前向运动信息都可用,可以将第一运动信息的前向参考帧索引或者第二运动信息的前向参考帧索引,确定为加权运动信息的前向参考帧索引。当第一运动信息的后向运动信息和第二运动信息的后向运动信息都可用,可以将第一运动信息的后向参考帧索引或者第二运动信息的后向参考帧索引,确定为加权运动信息的后向参考帧索引。或者,当第一运动信息的前向运动信息可用,第二运动信息的前向运动信息不可用,可以将第一运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引;当第一运动信息的后向运动信息可用,第二运动信息的后向运动信息不可用,可以将第一运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引。或者,当第一运动信息的前向运动信息不可用,第二运动信息的前向运动信息可用,可以将第二运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引;当第一运动信息的后向运动信息不可用,第二运动信息的后向运动信息可用,可以将第二运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引。
例如,针对加权运动信息的前向参考帧索引的确定方式,可以包括:当第一运动信息的前向运动信息和第二运动信息的前向运动信息都可用时,可以将第一运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引;也可以将第二运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引。或者,当第一运动信息的前向运动信息可用,第二运动信息的前向运动信息不可用时,可以将第一运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引。当第一运动信息的前向运动信息不可用,第二运动信息的前向运动信息可用时,可以将第二运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引。
例如,针对加权运动信息的后向参考帧索引的确定方式,可以包括:当第一运动信息的后向运动信息和第二运动信息的后向运动信息都可用时,可以将第一运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引;也可以将第二运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引。或者,当第一运动信息的后向运动信息可用,第二运动信息的后向运动信息不可用时,可以将第一运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引。当第一运动信息的后向运动信息不可用,第二运动信息的后向运动信息可用时,可以将第二运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引。
再例如,上述情况三中,当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,判断第一运动信息的前向参考帧索引和第二运动信息的前向参考帧索引是否相同;若相同,则对第一运动信息的前向水平运动矢量和第二运动信息的前向水平运动矢量进行加权,得到加权运动信息的前向水平运动矢量,并将相同的参考帧索引确定为加权运动信息的前向参考帧索引。若不同,则将第一运动信息的前向水平运动矢量或者第二运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量,此时可以将第一运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引;也可以将第二运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引。或者,当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息不可用时,将该第一运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量,并将第一运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引。或者,当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息可用时,将第二运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量,并将第二运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引。
再例如,上述情况四中,当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,判断第一运动信息的后向参考帧索引和第二运动信息的后向参考帧索引是否相同;若相同,则对第一运动信息的后向水平运动矢量和第二运动信息的后向水平运动矢量进行加权,得到加权运动信息的后向水平运动矢量,并将相同的参考帧索引确定为加权运动信息的后向参考帧索引。若不同,则将第一运动信息的后向水平运动矢量或者第二运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量,此时可以将第一运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引;也可以将第二运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引。或者,当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息不可用时,将该第一运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量,并将第一运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引。或者,当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息可用时,将第二运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量,并将第二运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引。
再例如,上述情况3中,当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,判断第一运动信息的前向参考帧索引和第二运动信息的前向参考帧索引是否相同;若相同,则对第一运动信息的前向垂直运动矢量和第二运动信息的前向垂直运动矢量进行加权,得到加权运动信息的前向垂直运动矢量,并将相同的参考帧索引确定为加权运动信息的前向参考帧索引。若不同,则将第一运动信息的前向垂直运动矢量或者第二运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量,此时可以将第一运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引;也可以将第二运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引。或者,当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息不可用时,将该第一运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量,并将第一运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引。或者,当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息可用时,将第二运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量,并将第二运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引。
再例如,上述情况4中,当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,判断第一运动信息的后向参考帧索引和第二运动信息的后向参考帧索引是否相同;若相同,则对第一运动信息的后向垂直运动矢量和第二运动信息的后向垂直运动矢量进行加权,得到加权运动信息的后向垂直运动矢量,并将相同的参考帧索引确定为加权运动信息的后向参考帧索引。若不同,则将第一运动信息的后向垂直运动矢量或者第二运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量,此时可以将第一运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引;也可以将第二运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引。或者,当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息不可用时,将该第一运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量,并将第一运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引。或者,当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息可用时,将第二运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量,并将第二运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引。
步骤204,根据加权运动信息和当前块的候选运动信息确定目标运动信息。
在一种可能的实施方式中,步骤204中,可以将加权运动信息和当前块的候选运动信息先进行查重,将和当前块的候选运动信息都不重复的加权运动信息加入到当前块的候选运动信息列表。然后,根据当前块的候选运动信息列表中的候选运动信息,确定目标运动信息。
示例性的,可以对加权运动信息和当前块的候选运动信息进行查重,需要与加权运动信息进行查重的候选运动信息可以为时域候选运动信息和MHBSKIP候选运动信息,也可以为时域候选运动信息、MHBSKIP候选运动信息和HMVP候选运动信息,对此不做限制。
针对每个加权运动信息来说,若该加权运动信息与任意一个候选运动信息相同时,则可以确定该加权运动信息与候选运动信息重复,禁止将该加权运动信息加入到当前块的候选运动信息列表。若该加权运动信息与所有候选运动信息均不同,则可以确定该加权运动信息与当前块的候选运动信息都不重复,将该加权运动信息加入到当前块的候选运动信息列表。
在另一种可能的实施方式中,步骤204中,直接将加权运动信息加入到当前块的候选运动信息列表。然后根据当前块的候选运动信息列表中的候选运动信息,确定目标运动信息。
示例性的,针对每个加权运动信息来说,可以不对该加权运动信息进行查重处理,而是直接将该加权运动信息加入到当前块的候选运动信息列表。
示例性的,根据当前块的候选运动信息列表中的候选运动信息(如时域候选运动信息、MHBSKIP候选运动信息、加权候选运动信息、HMVP候选运动信息等,这些类型的候选运动信息的顺序可以根据实际需要设定),确定目标运动信息,可以包括:
针对编码端来说,针对候选运动信息列表中的每个候选运动信息,编码端可以采用率失真原则确定与该候选运动信息对应的率失真代价值,对此确定方式不做限制。编码端在得到每个候选运动信息对应的率失真代价值后,可以确定率失真代价值最小的候选运动信息,并将率失真代价值最小的候选运动信息确定为当前块的目标运动信息。
编码端还可以向解码端发送编码比特流,该编码比特流可以包括目标运动信息的指示信息,所述指示信息用于指示目标运动信息在候选运动信息列表中的索引值。
针对解码端来说,可以从编码比特流中获取指示信息,所述指示信息用于指示目标运动信息在候选运动信息列表中的索引值,且目标运动信息为候选运动信息列表中候选运动信息的其中一个。然后,基于所述指示信息,解码端可以从候选运动信息列表中选择与该索引值对应的候选运动信息,并将选择的候选运动信息确定为目标运动信息。
步骤205,根据目标运动信息对当前块进行解码或编码。
针对编码端来说,编码端可以根据目标运动信息对当前块进行编码,例如,根据目标运动信息确定当前块的预测值,这个过程也称为运动补偿过程,对此不再赘述。
针对解码端来说,解码端可以根据目标运动信息对当前块进行解码,例如,根据目标运动信息确定当前块的预测值,这个过程也称为运动补偿过程,对此不再赘述。
在上述实施例中,候选运动信息列表可以为跳过模式的候选运动信息列表;和/或,直接模式的候选运动信息列表。候选运动信息列表为跳过模式的候选运动信息列表和直接模式的候选运动信息列表,可以包括:跳过模式和直接模式共用同一个候选运动信息列表。
由以上技术方案可见,本申请实施例中,可以获取当前块的第一运动信息和第二运动信息,并根据该第一运动信息和该第二运动信息确定加权运动信息,并将该加权运动信息加入到运动信息预测模式候选列表。这样,能够丰富运动信息预测模式候选列表中的运动信息的类型,使得该运动信息预测模式候选列表可以包括加权运动信息。然后,在采用该运动信息预测模式候选列表中的运动信息进行编码时,能够提高编码性能。
实施例2:基于与上述方法同样的申请构思,参见图4所示,为本申请实施例中的编解码方法的流程示意图,该编解码方法可以应用于编码端,该编解码方法可以包括:
步骤401,编码端获取当前块的候选运动信息;示例性的,该候选运动信息可以包括但不限于:HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息。
步骤402,编码端从当前块的候选运动信息中选择第一运动信息和第二运动信息;第一运动信息和第二运动信息不同。第一运动信息为HMVP候选运动信息,第二运动信息为时域候选运动信息;或第一运动信息为HMVP候选运动信息,第二运动信息为MHBSKIP候选运动信息;或第一运动信息为时域候选运动信息,第二运动信息为MHBSKIP候选运动信息。
步骤403,编码端根据第一运动信息和第二运动信息确定加权运动信息。
步骤404,编码端将加权运动信息和当前块的候选运动信息进行查重,将和当前块的候选运动信息都不重复的加权运动信息加入到当前块的候选运动信息列表。
步骤405,针对候选运动信息列表中的每个候选运动信息,编码端采用率失真原则确定与该候选运动信息对应的率失真代价值。编码端在得到每个候选运动信息对应的率失真代价值后,将率失真代价值最小的候选运动信息确定为当前块的目标运动信息。
步骤406,编码端根据目标运动信息对当前块进行编码。
示例性的,步骤401-步骤406可以参见实施例1,在此不再赘述。
实施例3:基于与上述方法同样的申请构思,参见图5所示,为本申请实施例中的编解码方法的流程示意图,该编解码方法可以应用于解码端,该编解码方法可以包括:
步骤501,解码端获取当前块的候选运动信息;示例性的,该候选运动信息可以包括但不限于:HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息。
步骤502,解码端从当前块的候选运动信息中选择第一运动信息和第二运动信息;第一运动信息和第二运动信息不同。第一运动信息为HMVP候选运动信息,第二运动信息为时域候选运动信息;或第一运动信息为HMVP候选运动信息,第二运动信息为MHBSKIP候选运动信息;或第一运动信息为时域候选运动信息,第二运动信息为MHBSKIP候选运动信息。
步骤503,解码端根据第一运动信息和第二运动信息确定加权运动信息。
步骤504,解码端将加权运动信息和当前块的候选运动信息进行查重,将和当前块的候选运动信息都不重复的加权运动信息加入到当前块的候选运动信息列表。
步骤505,解码端从编码比特流中获取指示信息,所述指示信息用于指示目标运动信息在候选运动信息列表中的索引值,并从候选运动信息列表中选择与该索引值对应的候选运动信息,将选择的候选运动信息确定为目标运动信息。
步骤506,解码端根据目标运动信息对当前块进行解码。
示例性的,步骤501-步骤506可以参见实施例1,在此不再赘述。
实施例4:以下结合几个具体应用场景,对本申请实施例的编解码方法进行说明。
应用场景1:第一运动信息为HMVP候选运动信息,第二运动信息为时域候选运动信息和MHBSKIP候选运动信息。根据编码或解码从后往前的顺序,从多个HMVP候选运动信息中选择靠后的一个HMVP候选运动信息作为当前块的第一运动信息。
若当前块所在当前帧是P帧,将当前块的一个时域候选运动信息和一个MHBSKIP候选运动信息(如前向运动信息、或后向运动信息、或双向运动信息)作为当前块的第二运动信息。若当前块所在当前帧是B帧,将当前块的一个时域候选运动信息和三个MHBSKIP候选运动信息(如前向运动信息、后向运动信息和双向运动信息)作为当前块的第二运动信息。
若当前块所在当前帧是P帧,第一运动信息为1个,第二运动信息为2个,加权运动信息为2个,第一运动信息记为HmvpMotion,第二运动信息记为motionInfoX,加权运动信息记为AWmotionX,X为0或1。motionInfo0表示第一个第二运动信息,motionInfo1表示第二个第二运动信息。Awmotion0表示第一个加权运动信息,根据HmvpMotion和/或motionInfo0确定,Awmotion1表示第二个加权运动信息,根据HmvpMotion和/或motionInfo1确定。
若当前块所在当前帧是B帧,则第一运动信息为1个,第二运动信息为4个,加权运动信息为4个,第一运动信息记为HmvpMotion,第二运动信息记为motionInfoX,加权运动信息记为AWmotionX,X为0、1、2或3。motionInfo0表示第一个第二运动信息,motionInfo1表示第二个第二运动信息,motionInfo2表示第三个第二运动信息,motionInfo3表示第四个第二运动信息。Awmotion0表示第一个加权运动信息,可以根据HmvpMotion和/或motionInfo0确定,Awmotion1表示第二个加权运动信息,可以根据HmvpMotion和/或motionInfo1确定,Awmotion2表示第三个加权运动信息,可以根据HmvpMotion和/或motionInfo2确定,Awmotion3表示第四个加权运动信息,可以根据HmvpMotion和/或motionInfo3确定。
当然,上述只是第一运动信息、第二运动信息和加权运动信息的示例,对此不做限制。
示例性的,如果当前块所在当前帧是P帧或B帧,针对HmvpMotion的前向运动信息(即L0方向)来说,水平运动矢量为MVXL0A,垂直运动矢量为MVYL0A,参考帧索引为RefidxL0A,前向运动信息是否可用的标记为PredFlagL0A。如果当前块所在当前帧是B帧,针对HmvpMotion的后向运动信息(即L1方向)来说,水平运动矢量为MVXL1A,垂直运动矢量为MVYL1A,参考帧索引为RefidxL1A,后向运动信息是否可用的标记为PredFlagL1A
如果当前块所在当前帧是P帧或B帧,针对motionInfoX的前向运动信息来说,水平运动矢量为MVXL0B,垂直运动矢量为MVYL0B,参考帧索引为RefidxL0B,前向运动信息是否可用的标记为PredFlagL0B。如果当前块所在当前帧是B帧,针对motionInfoX的后向运动信息来说,水平运动矢量为MVXL1B,垂直运动矢量为MVYL1B,参考帧索引为RefidxL1B,后向运动信息是否可用的标记为PredFlagL1B。X的初始值可以为0,若当前块所在当前帧是P帧,则X的取值可以为0或1,若当前块所在当前帧是B帧,X的取值为0、1、2或3。
如果当前块所在当前帧是P帧或B帧,针对AWmotionX的前向运动信息来说,水平运动矢量为MVXL0C,垂直运动矢量为MVYL0C,参考帧索引为RefidxL0C,前向运动信息是否可用的标记为PredFlagL0C。如果当前块所在当前帧是B帧,针对AWmotionX的后向运动信息来说,水平运动矢量为MVXL1C,垂直运动矢量为MVYL1C,参考帧索引为RefidxL1C,后向运动信息是否可用的标记为PredFlagL1C。X的初始值可以为0,若当前块所在当前帧是P帧,则X的取值可以为0或1,若当前块所在当前帧是B帧,X的取值为0、1、2或3。
基于HmvpMotion和/或motionInfoX获得AWmotionX的过程,可以包括:
针对前向运动信息的加权处理:1、如果PredFlagL0A和PredFlagL0B都等于1(用于表示前向运动信息可用)、且RefidxL0A等于RefidxL0B,对MVXL0A和MVXL0B进行加权,得到MVXL0C,如MVXL0C=((MVXL0A+MVXL0B)>>1),当然,上述只是对MVXL0A和MVXL0B进行加权的示例,以MVXL0A和MVXL0B的权重值相同为例,对此不做限制,例如,MVXL0A和MVXL0B的权重值也可不同,只要对MVXL0A和MVXL0B进行加权,得到MVXL0C即可。
对MVYL0A和MVYL0B进行加权,得到MVYL0C,如MVYL0C=((MVYL0A+MVYL0B)>>1),当然,上述只是对MVYL0A和MVYL0B进行加权的示例,以MVYL0A和MVYL0B的权重值相同为例,对此不做限制,例如,MVYL0A和MVYL0B的权重值也可以不同,只要对MVYL0A和MVYL0B进行加权,得到MVYL0C即可。RefidxL0C=RefidxL0B。PredFlagL0C=1。
2、如果PredFlagL0A和PredFlagL0B都等于1、且RefidxL0A不等于RefidxL0B,则MVXL0C=MVXL0B,MVYL0C=MVYL0B,RefidxL0C=RefidxL0B,PredFlagL0C=1。
3、如果PredFlagL0A等于1,PredFlagL0B等于0(用于表示前向运动信息不可用),则MVXL0C=MVXL0A,MVYL0C=MVYL0A,RefidxL0C=RefidxL0A,PredFlagL0C=1。
4、如果PredFlagL0A等于0,PredFlagL0B等于1,则MVXL0C=MVXL0B,MVYL0C=MVYL0B,RefidxL0C=RefidxL0B,PredFlagL0C=1。
5、如果PredFlagL0A等于0,PredFlagL0B等于0,则PredFlagL0C=0。
基于上述方式,能够得到AWmotionX的前向运动信息。
针对后向运动信息的加权处理:1、如果PredFlagL1A和PredFlagL1B都等于1、且RefidxL1A等于RefidxL1B,对MVXL1A和MVXL1B进行加权,得到MVXL1C,如采用如下方式进行加权:MVXL1C=((MVXL1A+MVXL1B)>>1),当然,上述只是对MVXL1A和MVXL1B进行加权的示例,以MVXL1A和MVXL1B的权重值相同为例,对此不做限制,例如,MVXL1A和MVXL1B的权重值也可以不同,只要对MVXL1A和MVXL1B进行加权,得到MVXL1C即可。
对MVYL1A和MVYL1B进行加权,得到MVYL1C,如MVYL1C=((MVYL1A+MVYL1B)>>1),当然,上述只是对MVYL1A和MVYL1B进行加权的示例,以MVYL1A和MVYL1B的权重值相同为例,对此不做限制,例如,MVYL1A和MVYL1B的权重值也可以不同,只要对MVYL1A和MVYL1B进行加权,得到MVYL1C即可。RefidxL1C=RefidxL1B。PredFlagL1C=1。
2、如果PredFlagL1A和PredFlagL1B都等于1、且RefidxL1A不等于RefidxL1B,则MVXL1C=MVXL1B,MVYL1C=MVYL1B,RefidxL1C=RefidxL1B,PredFlagL1C=1。
3、如果PredFlagL1A等于1,PredFlagL1B等于0,则MVXL1C=MVXL1A,MVYL1C=MVYL1A,RefidxL1C=RefidxL1A,PredFlagL1C=1。
4、如果PredFlagL1A等于0,PredFlagL1B等于1,则MVXL1C=MVXL1B,MVYL1C=MVYL1B,RefidxL1C=RefidxL1B,PredFlagL1C=1。
5、如果PredFlagL1A等于0,PredFlagL1B等于0,则PredFlagL1C=0。
基于上述方式,能够得到AWmotionX的后向运动信息,并将AWmotionX的前向运动信息和AWmotionX的后向运动信息组合成加权运动信息。
综上所述,若当前块所在当前帧是P帧,当X为0时,采用上述方式可以得到加权运动信息Awmotion0,当X为1时,采用上述方式可以得到加权运动信息Awmotion1。若当前块所在当前帧是B帧,当X为0时,采用上述方式可以得到加权运动信息Awmotion0,当X为1时,采用上述方式可以得到加权运动信息Awmotion1,当X为2时,采用上述方式可以得到加权运动信息Awmotion2,当X为3时,采用上述方式可以得到加权运动信息Awmotion3。
针对得到的每个加权运动信息,可以判断该加权运动信息与当前块的候选运动信息(如时域候选运动信息和MHBSKIP候选运动信息等)是否相同。
如果加权运动信息与任意一个候选运动信息相同,则禁止将该加权运动信息添加到当前块的运动信息预测模式候选列表。如果加权运动信息与所有候选运动信息不同,则将该加权运动信息添加到当前块的运动信息预测模式候选列表。
应用场景2:与应用场景1类似,不同之处在于:针对前向运动信息的加权处理过程,如果PredFlagL0A和PredFlagL0B都等于1、且RefidxL0A等于RefidxL0B,在对MVXL0A和MVXL0B进行加权,得到MVXL0C时,MVXL0C=((MVXL0A+MVXL0B+1>>1),当然,上述只是示例,以MVYL0A和MVYL0B的权重值相同为例,MVYL0A和MVYL0B的权重值也可以不同,对此不做限制。在对MVYL0A和MVYL0B进行加权,得到MVYL0C时,MVYL0C=((MVYL0A+MVYL0B+1)>>1),当然,上述只是示例,以MVYL0A和MVYL0B的权重值相同为例,MVYL0A和MVYL0B的权重值也可以不同,对此不做限制。针对后向运动信息的加权处理过程,如果PredFlagL1A和PredFlagL1B都等于1、且RefidxL1A等于RefidxL1B,在对MVXL1A和MVXL1B进行加权,得到MVXL1C时,MVXL1C=((MVXL1A+MVXL1B+1>>1),当然,上述只是示例,以MVYL1A和MVYL1B的权重值相同为例,MVYL1A和MVYL1B的权重值也可以不同,对此不做限制。在对MVYL1A和MVYL1B进行加权,得到MVYL1C时,MVYL1C=((MVYL1A+MVYL1B+1)>>1),当然,上述只是示例,以MVYL1A和MVYL1B的权重值相同为例,MVYL1A和MVYL1B的权重值也可以不同,对此不做限制。
应用场景2的其它实现过程与应用场景1类似,在此不再重复赘述。
应用场景3:与应用场景1类似,不同之处在于:针对前向运动信息的加权处理,如果PredFlagL0A和PredFlagL0B都等于1、RefidxL0A等于RefidxL0B,则RefidxL0C=RefidxL0A。如果PredFlagL0A和PredFlagL0B都等于1、RefidxL0A不等于RefidxL0B,MVXL0C=MVXL0A,MVYL0C=MVYL0A,RefidxL0C=RefidxL0A,PredFlagL0C=1。针对后向运动信息的加权处理过程,如果PredFlagL1A和PredFlagL1B都等于1、且RefidxL1A等于RefidxL1B,RefidxL1C=RefidxL1A。如果PredFlagL1A和PredFlagL1B都等于1、且RefidxL1A不等于RefidxL1B,则MVXL1C=MVXL1A,MVYL1C=MVYL1A,RefidxL1C=RefidxL1A,PredFlagL1C=1。
应用场景3的其它实现过程与应用场景1类似,在此不再重复赘述。
应用场景4:与应用场景1类似,不同之处在于:针对前向运动信息的加权处理过程,如果PredFlagL0A和PredFlagL0B都等于1、且RefidxL0A等于RefidxL0B,在对MVXL0A和MVXL0B进行加权,得到MVXL0C时,MVXL0C=((MVXL0A+MVXL0B+1>>1),在对MVYL0A和MVYL0B进行加权,得到MVYL0C时,MVYL0C=((MVYL0A+MVYL0B+1)>>1),RefidxL0C=RefidxL0A。如果PredFlagL0A和PredFlagL0B都等于1、RefidxL0A不等于RefidxL0B,MVXL0C=MVXL0A,MVYL0C=MVYL0A,RefidxL0C=RefidxL0A,PredFlagL0C=1。
针对后向运动信息的加权处理过程,如果PredFlagL1A和PredFlagL1B都等于1、且RefidxL1A等于RefidxL1B,在对MVXL1A和MVXL1B进行加权,得到MVXL1C时,MVXL1C=((MVXL1A+MVXL1B+1>>1)。在对MVYL1A和MVYL1B进行加权,得到MVYL1C时,MVYL1C=((MVYL1A+MVYL1B+1)>>1)。RefidxL1C=RefidxL1A。如果PredFlagL1A和PredFlagL1B都等于1、且RefidxL1A不等于RefidxL1B,则MVXL1C=MVXL1A,MVYL1C=MVYL1A,RefidxL1C=RefidxL1A,PredFlagL1C=1。
应用场景4的其它实现过程与应用场景1类似,在此不再重复赘述。
应用场景5:与应用场景1类似,不同之处在于:针对得到的每个加权运动信息,不需要对该加权运动信息进行查重处理,直接将该加权运动信息添加到当前块的运动信息预测模式候选列表。应用场景5的其它实现过程与应用场景1类似,在此不再重复赘述。
应用场景6:与应用场景2类似,不同之处在于:针对得到的每个加权运动信息,不需要对该加权运动信息进行查重处理,直接将该加权运动信息添加到当前块的运动信息预测模式候选列表。应用场景6的其它实现过程与应用场景2类似,在此不再重复赘述。
应用场景7:与应用场景3类似,不同之处在于:针对得到的每个加权运动信息,不需要对该加权运动信息进行查重处理,直接将该加权运动信息添加到当前块的运动信息预测模式候选列表。应用场景7的其它实现过程与应用场景3类似,在此不再重复赘述。
应用场景8:与应用场景4类似,不同之处在于:针对得到的每个加权运动信息,不需要对该加权运动信息进行查重处理,直接将该加权运动信息添加到当前块的运动信息预测模式候选列表。应用场景8的其它实现过程与应用场景4类似,在此不再重复赘述。
应用场景9:基于HmvpMotion(相关解释参见应用场景1)和motionInfoX(相关解释参见应用场景1)获得AWmotionX(相关解释参见应用场景1)的过程,可以包括:
针对前向运动信息的加权处理:
如果PredFlagL0A和PredFlagL0B都等于1,则对MVXL0A和MVXL0B进行加权,得到MVXL0C,如MVXL0C=((MVXL0A+MVXL0B)>>1),当然,上述只是对MVXL0A和MVXL0B进行加权的示例,以MVXL0A和MVXL0B的权重值相同为例,对此不做限制,例如,MVXL0A和MVXL0B的权重值也可不同,只要对MVXL0A和MVXL0B进行加权,得到MVXL0C即可。
对MVYL0A和MVYL0B进行加权,得到MVYL0C,如MVYL0C=((MVYL0A+MVYL0B)>>1),当然,上述只是对MVYL0A和MVYL0B进行加权的示例,以MVYL0A和MVYL0B的权重值相同为例,对此不做限制,例如,MVYL0A和MVYL0B的权重值也可以不同,只要对MVYL0A和MVYL0B进行加权,得到MVYL0C即可。RefidxL0C=RefidxL0B。PredFlagL0C=1。
如果PredFlagL0A等于1,PredFlagL0B等于0,则MVXL0C=MVXL0A,MVYL0C=MVYL0A,RefidxL0C=RefidxL0A,PredFlagL0C=1。如果PredFlagL0A等于0,PredFlagL0B等于1,则MVXL0C=MVXL0B,MVYL0C=MVYL0B,RefidxL0C=RefidxL0B,PredFlagL0C=1。如果PredFlagL0A等于0,PredFlagL0B等于0,则PredFlagL0C=0。
基于上述方式,能够得到AWmotionX的前向运动信息。
针对后向运动信息的加权处理:
如果PredFlagL1A和PredFlagL1B都等于1,则对MVXL1A和MVXL1B进行加权,得到MVXL1C,如MVXL1C=((MVXL1A+MVXL1B)>>1),当然,上述只是对MVXL1A和MVXL1B进行加权的示例,以MVXL1A和MVXL1B的权重值相同为例,对此不做限制,例如,MVXL1A和MVXL1B的权重值也可不同,只要对MVXL1A和MVXL1B进行加权,得到MVXL1C即可。
对MVYL1A和MVYL1B进行加权,得到MVYL1C,如MVYL1C=((MVYL1A+MVYL1B)>>1),当然,上述只是对MVYL1A和MVYL1B进行加权的示例,以MVYL1A和MVYL1B的权重值相同为例,对此不做限制,例如,MVYL1A和MVYL1B的权重值也可以不同,只要对MVYL1A和MVYL1B进行加权,得到MVYL1C即可。RefidxL1C=RefidxL1B。PredFlagL1C=1。
如果PredFlagL1A等于1,PredFlagL1B等于0,则MVXL1C=MVXL1A,MVYL1C=MVYL1A,RefidxL1C=RefidxL1A,PredFlagL1C=1。如果PredFlagL1A等于0,PredFlagL1B等于1,则MVXL1C=MVXL1B,MVYL1C=MVYL1B,RefidxL1C=RefidxL1B,PredFlagL1C=1如果PredFlagL1A等于0,PredFlagL1B等于0,则PredFlagL1C=0。
基于上述方式,能够得到AWmotionX的后向运动信息,并将AWmotionX的前向运动信息和AWmotionX的后向运动信息组合成加权运动信息。
综上所述,若当前块所在当前帧是P帧,当X为0时,采用上述方式可以得到加权运动信息Awmotion0,当X为1时,采用上述方式可以得到加权运动信息Awmotion1。若当前块所在当前帧是B帧,当X为0时,采用上述方式可以得到加权运动信息Awmotion0,当X为1时,采用上述方式可以得到加权运动信息Awmotion1,当X为2时,采用上述方式可以得到加权运动信息Awmotion2,当X为3时,采用上述方式可以得到加权运动信息Awmotion3。
针对得到的每个加权运动信息,可以判断该加权运动信息与当前块的候选运动信息(如时域候选运动信息和MHBSKIP候选运动信息等)是否相同。
如果加权运动信息与任意一个候选运动信息相同,则禁止将该加权运动信息添加到当前块的运动信息预测模式候选列表。如果加权运动信息与所有候选运动信息不同,则将该加权运动信息添加到当前块的运动信息预测模式候选列表。
应用场景10:与应用场景9类似,不同之处在于:针对前向运动信息的加权处理过程,如果PredFlagL0A和PredFlagL0B都等于1,在对MVXL0A和MVXL0B进行加权,得到MVXL0C时,MVXL0C=((MVXL0A+MVXL0B+1>>1)。在对MVYL0A和MVYL0B进行加权,得到MVYL0C时,MVYL0C=((MVYL0A+MVYL0B+1)>>1)。针对后向运动信息的加权处理过程,如果PredFlagL1A和PredFlagL1B都等于1,在对MVXL1A和MVXL1B进行加权,得到MVXL1C时,MVXL1C=((MVXL1A+MVXL1B+1>>1)。在对MVYL1A和MVYL1B进行加权,得到MVYL1C时,MVYL1C=((MVYL1A+MVYL1B+1)>>1)。
应用场景10的其它实现过程与应用场景9类似,在此不再重复赘述。
应用场景11:与应用场景9类似,不同之处在于:针对前向运动信息的加权处理,如果PredFlagL0A和PredFlagL0B都等于1,则RefidxL0C=RefidxL0A。针对后向运动信息的加权处理过程,如果PredFlagL1A和PredFlagL1B都等于1,RefidxL1C=RefidxL1A
应用场景11的其它实现过程与应用场景9类似,在此不再重复赘述。
应用场景12:与应用场景9类似,不同之处在于:针对前向运动信息的加权处理过程,如果PredFlagL0A和PredFlagL0B都等于1,在对MVXL0A和MVXL0B进行加权,得到MVXL0C时,MVXL0C=((MVXL0A+MVXL0B+1>>1),在对MVYL0A和MVYL0B进行加权,得到MVYL0C时,MVYL0C=((MVYL0A+MVYL0B+1)>>1),RefidxL0C=RefidxL0A。针对后向运动信息的加权处理过程,如果PredFlagL1A和PredFlagL1B都等于1,在对MVXL1A和MVXL1B进行加权,得到MVXL1C时,MVXL1C=((MVXL1A+MVXL1B+1>>1)。在对MVYL1A和MVYL1B进行加权,得到MVYL1C时,MVYL1C=((MVYL1A+MVYL1B+1)>>1)。RefidxL1C=RefidxL1A。应用场景12的其它实现过程与应用场景9类似,在此不再重复赘述。
应用场景13:与应用场景9类似,不同之处在于:针对得到的每个加权运动信息,不需要对该加权运动信息进行查重处理,直接将该加权运动信息添加到当前块的运动信息预测模式候选列表。应用场景13的其它实现过程与应用场景9类似,在此不再重复赘述。
应用场景14:与应用场景10类似,不同之处在于:针对得到的每个加权运动信息,不需要对该加权运动信息进行查重处理,直接将该加权运动信息添加到当前块的运动信息预测模式候选列表。应用场景14的其它实现过程与应用场景10类似,在此不再重复赘述。
应用场景15:与应用场景11类似,不同之处在于:针对得到的每个加权运动信息,不需要对该加权运动信息进行查重处理,直接将该加权运动信息添加到当前块的运动信息预测模式候选列表。应用场景15的其它实现过程与应用场景11类似,在此不再重复赘述。
应用场景16:与应用场景12类似,不同之处在于:针对得到的每个加权运动信息,不需要对该加权运动信息进行查重处理,直接将该加权运动信息添加到当前块的运动信息预测模式候选列表。应用场景16的其它实现过程与应用场景12类似,在此不再重复赘述。
应用场景17:与应用场景1类似,不同之处在于:可以从多个HMVP候选运动信息中选择至少一个HMVP候选运动信息作为当前块的第一运动信息。在选择至少一个HMVP候选运动信息时,可以不考虑编码或解码的顺序,即不需要选择排序靠后的HMVP候选运动信息,而是从多个HMVP候选运动信息中任意选择至少一个HMVP候选运动信息作为第一运动信息。第一运动信息的数量可以为至少一个第一运动信息,而不是一个第一运动信息。
应用场景17的其它实现过程与应用场景1类似,在此不再重复赘述。
应用场景18-应用场景32:与应用场景2-16类似,不同之处在于:可以从多个HMVP候选运动信息中选择至少一个HMVP候选运动信息作为当前块的第一运动信息。在选择至少一个HMVP候选运动信息时,可以不考虑编码或解码的顺序,即不需要选择排序靠后的HMVP候选运动信息,而是从多个HMVP候选运动信息中任意选择至少一个HMVP候选运动信息作为第一运动信息。第一运动信息的数量为至少一个第一运动信息,不是一个第一运动信息。
应用场景18-应用场景32的其它实现过程与应用场景2-16类似,如应用场景18的其它实现过程与应用场景2类似,应用场景19的其它实现过程与应用场景3类似,以此类推,应用场景32的其它实现过程与应用场景16类似,在此不再重复赘述。
应用场景33:与应用场景1类似,不同之处在于:第一运动信息是从时域候选运动信息和MHBSKIP候选运动信息中选择的;第二运动信息是从时域候选运动信息和MHBSKIP候选运动信息中选择的。例如,第一运动信息是从时域候选运动信息中选择的至少一个运动信息;第二运动信息是从MHBSKIP候选运动信息中选择的至少一个运动信息。
应用场景33的其它实现过程与应用场景1类似,在此不再重复赘述。
应用场景34-应用场景48:与应用场景2-16类似,不同之处在于:第一运动信息是从时域候选运动信息和MHBSKIP候选运动信息中选择的;第二运动信息是从时域候选运动信息和MHBSKIP候选运动信息中选择的。例如,第一运动信息是从时域候选运动信息中选择的至少一个运动信息;第二运动信息是从MHBSKIP候选运动信息中选择的至少一个运动信息。
应用场景34-应用场景48的其它实现过程与应用场景2-16类似,如应用场景34的其它实现过程与应用场景2类似,应用场景35的其它实现过程与应用场景3类似,以此类推,应用场景48的其它实现过程与应用场景16类似,在此不再重复赘述。
实施例5:若当前块采用联合直接模式和帧内模式进行预测时,则可以不进行(比如禁止启用)双向光流技术(BIO)和/或解码端运动矢量导出技术(DMVR)。
直接模式是帧间模式中的直接模式,实现方式可以参见上述实施例,在此不再赘述。
联合直接模式和帧内模式进行预测是指:采用直接模式对当前块进行预测,得到帧间预测值,对此过程不做限制;采用帧内模式对当前块进行预测,得到帧内预测值,对此过程不做限制;然后,对帧间预测值和帧内预测值进行加权,得到最终预测值。
当联合直接模式和帧内模式进行预测时,可以不进行双向光流技术;或者,不进行解码端运动矢量导出技术;或者,不进行双向光流技术、且不进行解码端运动矢量导出技术。
示例性的,当联合直接模式和帧内模式进行预测时,不进行双向光流技术,其相关实现过程可以参见应用场景1和应用场景2;当联合直接模式和帧内模式进行预测时,不进行解码端运动矢量导出技术,其相关实现过程可以参见应用场景1和应用场景3;当联合直接模式和帧内模式进行预测时,不进行双向光流技术、且不进行解码端运动矢量导出技术,其相关实现过程可以参见应用场景1、应用场景2和应用场景3。
应用场景1:联合直接模式和帧内模式进行预测的实现过程可以如下所示:
a)、获取当前块周围的参考样本点。
对于亮度块,当前块上边的参考样本记为r[i],左边的参考样本记为c[j],r[0]等于c[0],如果i大于2M,则r[i]=r[2M],如果j大于2N,则c[j]=c[2N]。
对于色度块,当前块上边的参考样本记为row[i],左边的参考样本记为col[j],row[0]等于col[0],如果i大于2M,则row[i]=row[2M],如果j大于2N,则col[i]=col[2N]。
如果当前块为亮度块,记topPel[i]=r[i],leftPel[j]=c[j](i=0至2M,j=0至2N);如果当前块为色度块,记topPel[i]=row[i],leftPel[j]=col[j](i=0至2M,j=0至2N)。
示例性的,M和N分别是当前块的宽度和高度。
b)、获取预测样本矩阵predMaxtrixTmp。
1),通过Planar模式(即帧内模式中的Planar模式)获取帧内预测样本矩阵predPlane:
predV=((N–1-y)*topPel[x+1]+(y+1)*leftPel[N+1]+(N>>1))>>log2(N);
predH=((M–1-x)*leftPel[y+1]+(x+1)*topPel[M+1]+(M>>1))>>log2(M);
predPlane[x][y]=(predV+predH+1)>>1。
2),通过帧间预测样本和帧内预测样本进行加权获取最终预测样本矩阵predMatrixTmp。例如,可以根据帧内预测样本矩阵predPlane和帧间预测样本矩阵predMatrixPrev获得最终预测样本矩阵predMatrixTmp。参见如下公式,为计算方式的一个示例。
predMatrixTmp[x][y]=((predMatrixPrev[x][y]*5+predPlane[x][y]*3+4)>>3)。
当然,上述最终预测样本矩阵predMatrixTmp的确定方式只是一个示例,还可以采用其它方式确定最终预测样本矩阵predMatrixTmp,对此不做限制。
在上述公式中,x的取值范围是0至M-1;y的取值范围是0至N-1。
在上述公式中,predMatrixPrev是帧间预测样本矩阵,是基于帧间模式中的直接模式计算出来的预测样本矩阵,对此帧间预测样本矩阵predMatrixPrev的计算方式不做限制。
应用场景2:双向光流技术(BIO)的实现过程可以如下所示:
a)、采用如下公式计算梯度和S1、S2、S3、S5、S6
Figure BDA0002181629310000311
Figure BDA0002181629310000312
Figure BDA0002181629310000313
Figure BDA0002181629310000314
Figure BDA0002181629310000315
示例性的,ψx(i,j)、ψy(i,j)和θ(i,j)的计算如下所示:
Figure BDA0002181629310000316
Figure BDA0002181629310000317
θ(i,j)=I(1)(i,j)-I(0)(i,j)
在上述公式中,I0(x,y)为前向参考帧的像素值,I(1)(x,y)为后向参考帧的像素值,ψx(i,j)为像素点在前向参考帧的水平和垂直分量的变化率,ψx(i,j)表示水平方向梯度和,ψy(i,j)为像素点在后向参考帧的水平和垂直分量的变化率,ψy(i,j)表示垂直方向梯度和,θ(i,j)表示前向参考帧和后向参考帧对应位置的像素差值,即θ(i,j)表示时域预测值差值。
S1表示水平方向梯度和的自相关系数,S2表示水平方向梯度和与垂直方向梯度和的互相关系数,S3表示时域预测值差值与水平方向梯度和的互相关系数,S5表示垂直方向梯度和的自相关系数,S6表示时域预测值差值与垂直方向梯度和的互相关系数。
b)、计算改善运动矢量vx和vy。示例性的,改善运动矢量vx也可以称为水平方向速率vx,改善运动矢量vy也可以称为垂直方向速率vy。例如,可以根据S1和S3计算改善运动矢量vx,并根据S2、S5和S6计算改善运动矢量vy,参见如下公式,为计算方式的一个示例:
vx=(S1+r)>m?clip3(-thBIO,thBIO,(S3<<5)/(S1+r)):0
vy=(S5+r)>m?clip3(-thBIO,thBIO,((S6<<6)-vxS2)/((S5+r)<<1)):0
在上述公式中,m和thBIO均为阈值,可以根据经验配置,r为正则项,避免除0操作。clip3表示的是将vx的值保证在-thBIO和thBIO之间,并将vy的值保证在-thBIO和thBIO之间。
示例性的,若(S1+r)>m?成立,则vx=clip3(-thBIO,thBIO,(S3<<5)/(S1+r))。若(S1+r)>m?不成立,则vx=0。vx表示水平方向速率,th′BIO用于将水平方向速率vx限制在-th′BIO与th′BIO之间,即水平方向速率vx大于或等于-th′BIO,水平方向速率vx小于或等于th′BIO
对于水平方向速率vx来说,Clip3(a,b,x)表示,若x小于a,则x=a;若x大于b,则x=b;否则x不变,在上述公式中,-th′BIO为a,th′BIO为b,(S3<<5)/(S1+r)为x,综上所述,若(S3<<5)/(S1+r)大于-th′BIO,且小于th′BIO,则水平方向速率vx为(S3<<5)/(S1+r)。
若(S5+r)>m成立,则vy=clip3(-thBIO,thBIO,((S6<<6)-vxS2)/((S5+r)<<1)。若(S5+r)>m不成立,则vy=0。vy表示垂直方向速率,th′BIO用于将垂直方向速率vy限制在-th′BIO与th′BIO之间,即垂直方向速率vy大于或等于-th′BIO,垂直方向速率vy小于或等于th′BIO
对于垂直方向速率vy来说,Clip3(a,b,x)表示,若x小于a,则x=a;若x大于b,则x=b;否则x不变,在上述公式中,-th′BIO为a,th′BIO为b,((S6<<6)-vxS2)/((S5+r)<<1)为x,综上所述,若,((S6<<6)-vxS2)/((S5+r)<<1)大于-th′BIO,且小于th′BIO,则垂直方向速率vy为((S6<<6)-vxS2)/((S5+r)<<1)。
当然,上述只是计算改善运动矢量vx和vy的示例,还可以采用其它方式计算改善运动矢量vx和vy,例如,可以根据S1和S3计算改善运动矢量vx,并根据S2、S5和S6计算改善运动矢量vy,上述公式是根据S1和S3计算改善运动矢量vx,并根据S2、S5和S6计算改善运动矢量vy的示例,对此不做限制,只要参考这些参数计算改善运动矢量vx和vy即可。
c)、根据改善运动矢量获取光流偏移值b。例如,根据改善运动矢量vx、改善运动矢量vy、前向参考帧的像素值I0(x,y)和后向参考帧的像素值I(1)(x,y)计算光流偏移值b,参见如下公式,为计算光流偏移值b的一个示例:
Figure BDA0002181629310000321
在上述公式中,(x,y)为当前块内部每个像素的坐标,vx和vy为改善运动矢量,I0(x,y)为前向参考帧的像素值,I(1)(x,y)为后向参考帧的像素值。上述只是获取光流偏移值b的示例,还可以采用其它方式计算光流偏移值b,例如,根据vx、vy、I0(x,y)和I(1)(x,y)计算光流偏移值b,上述公式是一个示例,对此不做限制,只要参考这些参数计算光流偏移值b即可。
d)、基于如下公式,根据光流偏移值b计算当前块的每个像素的预测值predBIO(x,y)。
predBIO(x,y)=(I(0)(x,y)+I(1)(x,y)+b+1)>>1
在上述公式中,I0(x,y)为前向参考帧的像素值,I(1)(x,y)为后向参考帧的像素值。
应用场景3:解码端运动矢量导出技术(DMVR)可以应用于直接模式或者跳过模式,且解码端运动矢量导出技术(DMVR)的实现过程可以如下所示:
a)、利用初始的运动矢量获取预测块和搜索区域内所需的参考像素。
b)、获取最优整像素位置。
示例性的,将当前块的亮度图像块划分为不重叠且位置相邻的子块,所有子块的初始运动矢量均为MV0和MV1。对于每个子块,以初始MV0和初始MV1所对应的位置为中心,开始寻找附近一定范围内模板匹配失真最小的位置。模板匹配失真的计算方式为:计算前向搜索区域中以中心位置开始的子块宽度乘以子块高度的块,和后向搜索区域中以中心位置开始的子块宽度乘以子块高度的块之间的SAD值。
c)、获取最优亚像素位置。
亚像素位置的确认使用整数位置最优位置、其左侧、其右侧、其上方、其下方共五处的模板匹配失真值,估计整数位置最优位置附近的二次失真平面,计算得到失真平面中失真最小的位置作为亚像素位置。例如,根据整数位置最优位置、其左侧、其右侧、其上方、其下方共五处的模板匹配失真值计算水平亚像素位置和垂直亚像素位置,参见如下公式,为计算水平亚像素位置和垂直亚像素位置的一个示例:
水平亚像素位置=(sad_left-sad_right)*N/((sad_right+sad_left-2*sad_mid)*2)
垂直亚像素位置=(sad_btm-sad_top)*N/((sad_top+sad_btm-2*sad_mid)*2)
示例性的,sad_mid、sad_left、sad_right、sad_top和sad_btm分别是整数位置最优位置、其左侧、其右侧、其上方、其下方共五处的模板匹配失真值,N是精度。
当然,上述只是计算水平亚像素位置和垂直亚像素位置的示例,还可以采用其它方式计算水平亚像素位置和垂直亚像素位置,例如,根据整数位置最优位置、其左侧、其右侧、其上方、其下方共五处的模板匹配失真值计算水平亚像素位置和垂直亚像素位置,上述公式是参考这些参数计算水平亚像素位置和垂直亚像素位置的示例,对此不做限制,只要参考这些参数计算水平亚像素位置和垂直亚像素位置即可。
d)、根据最优MV计算得到最终预测块。
实施例6:当前块的前向参考帧与当前帧的时间上的距离、和当前块的后向参考帧与当前帧的时间上的距离相等,作为开启双向光流技术(BIO)的其中一个条件。
比如,当前块所在图像的顺序号为poc0,当前块的前向参考图像的顺序号为poc1,当前块的后向参考图像的顺序号为poc2,距离相等的意思是poc0-poc1=poc2-poc0。
当前块的前向参考帧与当前帧的时间上的距离、和当前块的后向参考帧与当前帧的时间上的距离相等,作为开启双向光流技术(BIO)的其中一个条件,可以是指:
若当前块的前向参考帧与当前帧的时间上的距离、和当前块的后向参考帧与当前帧的时间上的距离不相等,则不开启双向光流技术(BIO)。
在一种可能的实施方式中,在实施例6的基础上,提出一种双向光流技术(BIO)的实现方式,双向光流技术(BIO)的实现过程可以参见实施例5的应用场景2,在此不再赘述。
实施例7:如下的两个条件作为开启双向光流技术(BIO)的其中两个条件。
a),当前块的前向参考帧与当前帧的时间上的距离、和当前块的后向参考帧与当前帧的时间上的距离相等,作为开启双向光流技术(BIO)的其中一个条件。
比如,当前块所在图像的顺序号为poc0,当前块的前向参考图像的顺序号为poc1,当前块的后向参考图像的顺序号为poc2,距离相等的意思是poc0-poc1=poc2-poc0。
b),当前块不使用联合直接模式和帧内模式预测。
例如,若当前块的前向参考帧与当前帧的时间上的距离、和当前块的后向参考帧与当前帧的时间上的距离不相等,则不开启双向光流技术(BIO)。或者,若当前块使用联合直接模式和帧内模式预测,则不开启双向光流技术(BIO)。或者,若当前块的前向参考帧与当前帧的时间上的距离、和当前块的后向参考帧与当前帧的时间上的距离不相等,且当前块使用联合直接模式和帧内模式预测,则不开启双向光流技术(BIO)。
在一种可能的实施方式中,在实施例7的基础上,提出一种双向光流技术(BIO)的实现方式,双向光流技术(BIO)的实现过程可以参见实施例5的应用场景2,在此不再赘述。
在一种可能的实施方式中,在实施例7的基础上,提出一种联合直接模式和帧内模式预测的实现方式,联合直接模式和帧内模式预测的实现过程可以参见实施例5的应用场景1,在此不再赘述。
在一种可能的实施方式中,在实施例7的基础上,提出一种联合直接模式和帧内模式预测的实现方式,以及一种双向光流技术(BIO)的实现方式,联合直接模式和帧内模式预测的实现过程可以参见实施例5的应用场景1,双向光流技术(BIO)的实现过程可以参见实施例5的应用场景2,在此不再赘述。
基于与上述方法同样的申请构思,本申请实施例提出一种编解码装置,所述编解码装置应用于解码端或编码端,如图6所示,为所述编解码装置的结构图,所述装置包括:
获取模块61,用于获取当前块的候选运动信息;其中,所述候选运动信息包括HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息;
选择模块62,用于从当前块的候选运动信息中选择第一运动信息和第二运动信息;其中,所述第一运动信息和所述第二运动信息不同;
确定模块63,用于根据所述第一运动信息和所述第二运动信息确定加权运动信息;根据所述加权运动信息和当前块的候选运动信息确定目标运动信息;
处理模块64,用于根据所述目标运动信息对当前块进行解码或编码。
示例性的,所述第一运动信息是从HMVP候选运动信息中选择的;所述第二运动信息是从时域候选运动信息和MHBSKIP候选运动信息中选择的。
所述第一运动信息是从HMVP候选运动信息中选择的至少一个运动信息;所述第二运动信息是从时域候选运动信息和MHBSKIP候选运动信息中选择的至少一个运动信息。
所述第一运动信息是按照编码或解码从后往前的顺序从HMVP候选运动信息中选择的。
示例性的,所述第一运动信息是从时域候选运动信息和MHBSKIP候选运动信息中选择的;所述第二运动信息是从时域候选运动信息和MHBSKIP候选运动信息中选择的。
示例性的,HMVP候选运动信息包括:利用当前块的先前重建块的运动信息构建的历史运动信息;MHBSKIP候选运动信息包括:利用当前块的空域相邻块的运动信息构建的双向运动信息、后向运动信息和前向运动信息。
所述确定模块63根据所述第一运动信息和所述第二运动信息确定加权运动信息时具体用于:对第一运动信息的水平运动矢量和第二运动信息的水平运动矢量进行加权,得到加权运动信息的水平运动矢量;对第一运动信息的垂直运动矢量和第二运动信息的垂直运动矢量进行加权,得到加权运动信息的垂直运动矢量;根据第一运动信息的参考帧索引和第二运动信息的参考帧索引确定加权运动信息的参考帧索引。
所述确定模块63对第一运动信息的水平运动矢量和第二运动信息的水平运动矢量进行加权,得到加权运动信息的水平运动矢量时具体用于:当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,对第一运动信息的前向水平运动矢量和第二运动信息的前向水平运动矢量进行加权,得到加权运动信息的前向水平运动矢量;当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息不可用时,将第一运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量;当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息可用时,将第二运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量;当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息不可用时,加权运动信息的前向运动信息不可用。
所述确定模块63对第一运动信息的水平运动矢量和第二运动信息的水平运动矢量进行加权,得到加权运动信息的水平运动矢量时具体用于:当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,对第一运动信息的后向水平运动矢量和第二运动信息的后向水平运动矢量进行加权,得到加权运动信息的后向水平运动矢量;当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息不可用时,将第一运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量;当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息可用时,将第二运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量;当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息不可用时,加权运动信息的后向运动信息不可用。
所述确定模块63对第一运动信息的垂直运动矢量和第二运动信息的垂直运动矢量进行加权,得到加权运动信息的垂直运动矢量时具体用于:当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,对第一运动信息的前向垂直运动矢量和第二运动信息的前向垂直运动矢量进行加权,得到加权运动信息的前向垂直运动矢量;当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息不可用时,将第一运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量;当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息可用时,将第二运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量;当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息不可用时,加权运动信息的前向运动信息不可用。
所述确定模块63对第一运动信息的垂直运动矢量和第二运动信息的垂直运动矢量进行加权,得到加权运动信息的垂直运动矢量时具体用于:当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,对第一运动信息的后向垂直运动矢量和第二运动信息的后向垂直运动矢量进行加权,得到加权运动信息的后向垂直运动矢量;当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息不可用时,将第一运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量;当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息可用时,将第二运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量;当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息不可用时,加权运动信息的后向运动信息不可用。
当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,所述确定模块63对第一运动信息的水平运动矢量和第二运动信息的水平运动矢量进行加权,得到加权运动信息的水平运动矢量时具体用于:判断第一运动信息的前向参考帧索引和第二运动信息的前向参考帧索引是否相同;若相同,对第一运动信息的前向水平运动矢量和第二运动信息的前向水平运动矢量进行加权,得到加权运动信息的前向水平运动矢量;若不同,将第一运动信息的前向水平运动矢量或者第二运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量。
当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,所述确定模块63对第一运动信息的水平运动矢量和第二运动信息的水平运动矢量进行加权,得到加权运动信息的水平运动矢量时具体用于:判断第一运动信息的后向参考帧索引和第二运动信息的后向参考帧索引是否相同;若相同,对第一运动信息的后向水平运动矢量和第二运动信息的后向水平运动矢量进行加权,得到加权运动信息的后向水平运动矢量;若不同,将第一运动信息的后向水平运动矢量或者第二运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量。
当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,所述确定模块63对第一运动信息的垂直运动矢量和第二运动信息的垂直运动矢量进行加权,得到加权运动信息的前向垂直运动矢量时具体用于:判断第一运动信息的前向参考帧索引和第二运动信息的前向参考帧索引是否相同;若相同,对第一运动信息的前向垂直运动矢量和第二运动信息的前向垂直运动矢量进行加权,得到加权运动信息的前向垂直运动矢量;若不同,将第一运动信息的前向垂直运动矢量或者第二运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量。
当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,所述确定模块63对第一运动信息的垂直运动矢量和第二运动信息的垂直运动矢量进行加权,得到加权运动信息的垂直运动矢量时具体用于:判断第一运动信息的后向参考帧索引和第二运动信息的后向参考帧索引是否相同;若相同,对第一运动信息的后向垂直运动矢量和第二运动信息的后向垂直运动矢量进行加权,得到加权运动信息的后向垂直运动矢量;若不同,将第一运动信息的后向垂直运动矢量或者第二运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量。
所述确定模块63还用于:在获取水平运动矢量的加权值之后,将水平运动矢量的加权值向上取整或向下取整后得到加权运动信息的水平运动矢量;水平运动矢量的加权值包括前向水平运动矢量的加权值和/或后向水平运动矢量的加权值。
所述确定模块63还用于:在获取垂直运动矢量的加权值之后,将垂直运动矢量的加权值向上取整或向下取整后得到加权运动信息的垂直运动矢量;垂直运动矢量的加权值包括前向垂直运动矢量的加权值和/或后向垂直运动矢量的加权值。
所述确定模块63根据第一运动信息的参考帧索引和第二运动信息的参考帧索引确定加权运动信息的参考帧索引时具体用于:当第一运动信息的前向运动信息和第二运动信息的前向运动信息都可用,将第一运动信息的前向参考帧索引或者第二运动信息的前向参考帧索引,确定为加权运动信息的前向参考帧索引;当第一运动信息的后向运动信息和第二运动信息的后向运动信息都可用,将第一运动信息的后向参考帧索引或者第二运动信息的后向参考帧索引,确定为加权运动信息的后向参考帧索引;或者,当第一运动信息的前向运动信息可用,第二运动信息的前向运动信息不可用,将第一运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引;当第一运动信息的后向运动信息可用,第二运动信息的后向运动信息不可用,将第一运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引;或者,当第一运动信息的前向运动信息不可用,第二运动信息的前向运动信息可用,将第二运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引;当第一运动信息的后向运动信息不可用,第二运动信息的后向运动信息可用,将第二运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引。
所述确定模块63根据所述加权运动信息和当前块的候选运动信息确定目标运动信息时具体用于:将所述加权运动信息和当前块的候选运动信息进行查重,将和当前块的候选运动信息都不重复的加权运动信息加入到当前块的候选运动信息列表;根据当前块的候选运动信息列表中的候选运动信息,确定目标运动信息。
本申请实施例提供的解码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图7所示。包括:处理器71和机器可读存储介质72,所述机器可读存储介质72存储有能够被所述处理器71执行的机器可执行指令;所述处理器71用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,所述处理器用于执行机器可执行指令,以实现如下步骤:
获取当前块的候选运动信息;其中,所述候选运动信息包括HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息;
从当前块的候选运动信息中选择第一运动信息和第二运动信息;其中,所述第一运动信息和所述第二运动信息不同;
根据所述第一运动信息和所述第二运动信息确定加权运动信息;
根据所述加权运动信息和当前块的候选运动信息确定目标运动信息;
根据所述目标运动信息对当前块进行解码或编码。
本申请实施例提供的编码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图8所示。包括:处理器81和机器可读存储介质82,所述机器可读存储介质82存储有能够被所述处理器81执行的机器可执行指令;所述处理器81用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,所述处理器用于执行机器可执行指令,以实现如下步骤:
获取当前块的候选运动信息;其中,所述候选运动信息包括HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息;
从当前块的候选运动信息中选择第一运动信息和第二运动信息;其中,所述第一运动信息和所述第二运动信息不同;
根据所述第一运动信息和所述第二运动信息确定加权运动信息;
根据所述加权运动信息和当前块的候选运动信息确定目标运动信息;
根据所述目标运动信息对当前块进行解码或编码。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的编解码方法。示例性的,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (22)

1.一种编解码方法,其特征在于,所述方法包括:
获取当前块的候选运动信息;其中,所述候选运动信息包括HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息;
从当前块的候选运动信息中选择第一运动信息和第二运动信息;其中,所述第一运动信息和所述第二运动信息不同;
根据所述第一运动信息和所述第二运动信息确定加权运动信息;
根据所述加权运动信息和当前块的候选运动信息确定目标运动信息;
根据所述目标运动信息对当前块进行解码或编码。
2.根据权利要求1所述的方法,其特征在于,
所述第一运动信息是从HMVP候选运动信息中选择的;
所述第二运动信息是从时域候选运动信息和MHBSKIP候选运动信息中选择的。
3.根据权利要求2所述的方法,其特征在于,
所述第一运动信息是从HMVP候选运动信息中选择的至少一个运动信息;所述第二运动信息是从时域候选运动信息和MHBSKIP候选运动信息中选择的至少一个运动信息。
4.根据权利要求2所述的方法,其特征在于,
所述第一运动信息是按照编码或解码从后往前的顺序从HMVP候选运动信息中选择的。
5.根据权利要求1所述的方法,其特征在于,
所述第一运动信息是从时域候选运动信息和MHBSKIP候选运动信息中选择的;
所述第二运动信息是从时域候选运动信息和MHBSKIP候选运动信息中选择的。
6.根据权利要求1至5任一项所述的方法,其特征在于,HMVP候选运动信息包括:利用当前块的先前重建块的运动信息构建的历史运动信息;MHBSKIP候选运动信息包括:利用当前块的空域相邻块的运动信息构建的双向运动信息、后向运动信息和前向运动信息。
7.根据权利要求1至5任一项所述的方法,其特征在于,
所述根据所述第一运动信息和所述第二运动信息确定加权运动信息,包括:
对第一运动信息的水平运动矢量和第二运动信息的水平运动矢量进行加权,得到加权运动信息的水平运动矢量;
对第一运动信息的垂直运动矢量和第二运动信息的垂直运动矢量进行加权,得到加权运动信息的垂直运动矢量;
根据第一运动信息的参考帧索引和第二运动信息的参考帧索引确定加权运动信息的参考帧索引。
8.根据权利要求7所述的方法,其特征在于,对第一运动信息的水平运动矢量和第二运动信息的水平运动矢量进行加权,得到加权运动信息的水平运动矢量,包括:
当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,对第一运动信息的前向水平运动矢量和第二运动信息的前向水平运动矢量进行加权,得到加权运动信息的前向水平运动矢量;
当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息不可用时,将第一运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量;
当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息可用时,将第二运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量;
当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息不可用时,加权运动信息的前向运动信息不可用。
9.根据权利要求7所述的方法,其特征在于,对第一运动信息的水平运动矢量和第二运动信息的水平运动矢量进行加权,得到加权运动信息的水平运动矢量,包括:
当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,对第一运动信息的后向水平运动矢量和第二运动信息的后向水平运动矢量进行加权,得到加权运动信息的后向水平运动矢量;
当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息不可用时,将第一运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量;
当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息可用时,将第二运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量;
当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息不可用时,加权运动信息的后向运动信息不可用。
10.根据权利要求7所述的方法,其特征在于,对第一运动信息的垂直运动矢量和第二运动信息的垂直运动矢量进行加权,得到加权运动信息的垂直运动矢量,包括:
当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,对第一运动信息的前向垂直运动矢量和第二运动信息的前向垂直运动矢量进行加权,得到加权运动信息的前向垂直运动矢量;
当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息不可用时,将第一运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量;
当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息可用时,将第二运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量;
当第一运动信息的前向运动信息不可用,且第二运动信息的前向运动信息不可用时,加权运动信息的前向运动信息不可用。
11.根据权利要求7所述的方法,其特征在于,对第一运动信息的垂直运动矢量和第二运动信息的垂直运动矢量进行加权,得到加权运动信息的垂直运动矢量,包括:
当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,对第一运动信息的后向垂直运动矢量和第二运动信息的后向垂直运动矢量进行加权,得到加权运动信息的后向垂直运动矢量;
当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息不可用时,将第一运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量;
当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息可用时,将第二运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量;
当第一运动信息的后向运动信息不可用,且第二运动信息的后向运动信息不可用时,加权运动信息的后向运动信息不可用。
12.根据权利要求7所述的方法,其特征在于,当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,对第一运动信息的水平运动矢量和第二运动信息的水平运动矢量进行加权,得到加权运动信息的水平运动矢量,包括:
判断第一运动信息的前向参考帧索引和第二运动信息的前向参考帧索引是否相同;
若相同,对第一运动信息的前向水平运动矢量和第二运动信息的前向水平运动矢量进行加权,得到加权运动信息的前向水平运动矢量;
若不同,将第一运动信息的前向水平运动矢量或者第二运动信息的前向水平运动矢量确定为加权运动信息的前向水平运动矢量。
13.根据权利要求7所述的方法,其特征在于,当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,对第一运动信息的水平运动矢量和第二运动信息的水平运动矢量进行加权,得到加权运动信息的水平运动矢量,包括:
判断第一运动信息的后向参考帧索引和第二运动信息的后向参考帧索引是否相同;
若相同,对第一运动信息的后向水平运动矢量和第二运动信息的后向水平运动矢量进行加权,得到加权运动信息的后向水平运动矢量;
若不同,将第一运动信息的后向水平运动矢量或者第二运动信息的后向水平运动矢量确定为加权运动信息的后向水平运动矢量。
14.根据权利要求7所述的方法,其特征在于,当第一运动信息的前向运动信息可用,且第二运动信息的前向运动信息可用时,对第一运动信息的垂直运动矢量和第二运动信息的垂直运动矢量进行加权,得到加权运动信息的前向垂直运动矢量,包括:
判断第一运动信息的前向参考帧索引和第二运动信息的前向参考帧索引是否相同;
若相同,对第一运动信息的前向垂直运动矢量和第二运动信息的前向垂直运动矢量进行加权,得到加权运动信息的前向垂直运动矢量;
若不同,将第一运动信息的前向垂直运动矢量或者第二运动信息的前向垂直运动矢量确定为加权运动信息的前向垂直运动矢量。
15.根据权利要求7所述的方法,其特征在于,当第一运动信息的后向运动信息可用,且第二运动信息的后向运动信息可用时,对第一运动信息的垂直运动矢量和第二运动信息的垂直运动矢量进行加权,得到加权运动信息的垂直运动矢量,包括:
判断第一运动信息的后向参考帧索引和第二运动信息的后向参考帧索引是否相同;
若相同,对第一运动信息的后向垂直运动矢量和第二运动信息的后向垂直运动矢量进行加权,得到加权运动信息的后向垂直运动矢量;
若不同,将第一运动信息的后向垂直运动矢量或者第二运动信息的后向垂直运动矢量确定为加权运动信息的后向垂直运动矢量。
16.根据权利要求8-9、12-13中任一项所述的方法,其特征在于,
在获取水平运动矢量的加权值之后,所述方法还包括:
将水平运动矢量的加权值向上取整或向下取整后得到加权运动信息的水平运动矢量;水平运动矢量的加权值包括前向水平运动矢量的加权值和/或后向水平运动矢量的加权值。
17.根据权利要求10-11、14-15中任一项所述的方法,其特征在于,
在获取垂直运动矢量的加权值之后,所述方法还包括:
将垂直运动矢量的加权值向上取整或向下取整后得到加权运动信息的垂直运动矢量;垂直运动矢量的加权值包括前向垂直运动矢量的加权值和/或后向垂直运动矢量的加权值。
18.根据权利要求7所述的方法,其特征在于,所述根据第一运动信息的参考帧索引和第二运动信息的参考帧索引确定加权运动信息的参考帧索引,包括:
当第一运动信息的前向运动信息和第二运动信息的前向运动信息都可用,将第一运动信息的前向参考帧索引或者第二运动信息的前向参考帧索引,确定为加权运动信息的前向参考帧索引;当第一运动信息的后向运动信息和第二运动信息的后向运动信息都可用,将第一运动信息的后向参考帧索引或者第二运动信息的后向参考帧索引,确定为加权运动信息的后向参考帧索引;或者
当第一运动信息的前向运动信息可用,第二运动信息的前向运动信息不可用,将第一运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引;当第一运动信息的后向运动信息可用,第二运动信息的后向运动信息不可用,将第一运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引;或者
当第一运动信息的前向运动信息不可用,第二运动信息的前向运动信息可用,将第二运动信息的前向参考帧索引确定为加权运动信息的前向参考帧索引;当第一运动信息的后向运动信息不可用,第二运动信息的后向运动信息可用,将第二运动信息的后向参考帧索引确定为加权运动信息的后向参考帧索引。
19.根据权利要求1所述的方法,其特征在于,根据所述加权运动信息和当前块的候选运动信息确定目标运动信息,包括:
将所述加权运动信息和当前块的候选运动信息进行查重,将和当前块的候选运动信息都不重复的加权运动信息加入到当前块的候选运动信息列表;
根据当前块的候选运动信息列表中的候选运动信息,确定目标运动信息。
20.一种编解码装置,其特征在于,所述装置包括:
获取模块,用于获取当前块的候选运动信息;其中,所述候选运动信息包括HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息;
选择模块,用于从当前块的候选运动信息中选择第一运动信息和第二运动信息;其中,所述第一运动信息和所述第二运动信息不同;
确定模块,用于根据所述第一运动信息和所述第二运动信息确定加权运动信息;根据所述加权运动信息和当前块的候选运动信息确定目标运动信息;
处理模块,用于根据所述目标运动信息对当前块进行解码或编码。
21.一种解码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
获取当前块的候选运动信息;其中,所述候选运动信息包括HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息;
从当前块的候选运动信息中选择第一运动信息和第二运动信息;其中,所述第一运动信息和所述第二运动信息不同;
根据所述第一运动信息和所述第二运动信息确定加权运动信息;
根据所述加权运动信息和当前块的候选运动信息确定目标运动信息;
根据所述目标运动信息对当前块进行解码或编码。
22.一种编码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
获取当前块的候选运动信息;其中,所述候选运动信息包括HMVP候选运动信息、时域候选运动信息和MHBSKIP候选运动信息;
从当前块的候选运动信息中选择第一运动信息和第二运动信息;其中,所述第一运动信息和所述第二运动信息不同;
根据所述第一运动信息和所述第二运动信息确定加权运动信息;
根据所述加权运动信息和当前块的候选运动信息确定目标运动信息;
根据所述目标运动信息对当前块进行解码或编码。
CN201910798481.8A 2019-08-27 2019-08-27 一种编解码方法、装置及其设备 Active CN112449180B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910798481.8A CN112449180B (zh) 2019-08-27 2019-08-27 一种编解码方法、装置及其设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910798481.8A CN112449180B (zh) 2019-08-27 2019-08-27 一种编解码方法、装置及其设备

Publications (2)

Publication Number Publication Date
CN112449180A true CN112449180A (zh) 2021-03-05
CN112449180B CN112449180B (zh) 2023-02-28

Family

ID=74741604

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910798481.8A Active CN112449180B (zh) 2019-08-27 2019-08-27 一种编解码方法、装置及其设备

Country Status (1)

Country Link
CN (1) CN112449180B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023044917A1 (zh) * 2021-09-27 2023-03-30 Oppo广东移动通信有限公司 帧内预测的方法、编码器、解码器和编解码系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101686393A (zh) * 2008-09-28 2010-03-31 华为技术有限公司 应用于模板匹配的快速运动搜索方法及装置
WO2016078511A1 (en) * 2014-11-18 2016-05-26 Mediatek Inc. Method of bi-prediction video coding based on motion vectors from uni-prediction and merge candidate
CN109819255A (zh) * 2018-12-28 2019-05-28 杭州海康威视数字技术股份有限公司 一种编解码方法及其设备
CN109963155A (zh) * 2017-12-23 2019-07-02 华为技术有限公司 图像块的运动信息的预测方法、装置及编解码器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101686393A (zh) * 2008-09-28 2010-03-31 华为技术有限公司 应用于模板匹配的快速运动搜索方法及装置
WO2016078511A1 (en) * 2014-11-18 2016-05-26 Mediatek Inc. Method of bi-prediction video coding based on motion vectors from uni-prediction and merge candidate
CN109963155A (zh) * 2017-12-23 2019-07-02 华为技术有限公司 图像块的运动信息的预测方法、装置及编解码器
CN109819255A (zh) * 2018-12-28 2019-05-28 杭州海康威视数字技术股份有限公司 一种编解码方法及其设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023044917A1 (zh) * 2021-09-27 2023-03-30 Oppo广东移动通信有限公司 帧内预测的方法、编码器、解码器和编解码系统

Also Published As

Publication number Publication date
CN112449180B (zh) 2023-02-28

Similar Documents

Publication Publication Date Title
CN111385569B (zh) 一种编解码方法及其设备
JP2019115060A (ja) 符号化装置、符号化方法、復号装置、復号方法、及びプログラム
CN112584160A (zh) 一种编解码方法及其设备
CN110933426B (zh) 一种解码、编码方法及其设备
CN112449180B (zh) 一种编解码方法、装置及其设备
CN111510726B (zh) 一种编解码方法及其设备
CN113747166B (zh) 一种编解码方法、装置及其设备
CN112565747B (zh) 一种解码、编码方法、装置及其设备
JP6390275B2 (ja) 符号化回路、符号化方法
CN112449181B (zh) 一种编解码方法、装置及其设备
CN110662074B (zh) 一种运动矢量确定方法和设备
CN112073734B (zh) 一种编解码方法、装置及其设备
CN113422951B (zh) 一种解码、编码方法、装置及其设备
CN110691247B (zh) 一种解码、编码方法和设备
CN113709486B (zh) 一种编解码方法、装置及其设备

Legal Events

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