CN111510726A - 一种编解码方法及其设备 - Google Patents
一种编解码方法及其设备 Download PDFInfo
- Publication number
- CN111510726A CN111510726A CN201910092345.7A CN201910092345A CN111510726A CN 111510726 A CN111510726 A CN 111510726A CN 201910092345 A CN201910092345 A CN 201910092345A CN 111510726 A CN111510726 A CN 111510726A
- Authority
- CN
- China
- Prior art keywords
- reference frame
- list
- motion vector
- target
- image block
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 98
- 238000012545 processing Methods 0.000 claims abstract description 66
- 239000013598 vector Substances 0.000 claims description 411
- 238000003860 storage Methods 0.000 claims description 18
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 claims description 7
- 230000002123 temporal effect Effects 0.000 description 39
- 230000008569 process Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 238000010276 construction Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 230000002457 bidirectional effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000003672 processing method Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000004927 fusion Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000013139 quantization Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/573—Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/577—Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请提供一种编解码方法及其设备,该方法包括:根据图像块的两个参考帧列表构建第三参考帧列表;其中,第三参考帧列表中的参考帧包括第一参考帧列表中的参考帧但不包括第二参考帧列表中的至少一个参考帧,第一参考帧列表为两个参考帧列表中的其中一个,第二参考帧列表为两个参考帧列表中的另一个;从第一参考帧列表中选择第一目标参考帧,根据第一目标参考帧确定第一预测像素;从第三参考帧列表中选择第二目标参考帧,根据第二目标参考帧确定第二预测像素;对第一预测像素和第二预测像素进行加权处理,得到目标预测像素;根据目标预测像素对图像块进行编码处理或者解码处理。通过本申请的技术方案,可以提高编码性能。
Description
技术领域
本申请涉及编解码技术领域,尤其是涉及一种编解码方法及其设备。
背景技术
为了达到节约空间的目的,视频图像都是经过编码后才进行传输的,完整的视频编码方法可以包括预测、变换、量化、熵编码、滤波等过程。其中,预测编码可以包括帧内编码和帧间编码。进一步的,帧间编码是利用视频时间域的相关性,使用邻近已编码图像的像素预测当前像素,以达到有效去除视频时域冗余的目的。此外,帧内编码是指利用视频空间域的相关性,使用当前帧图像的已经编码块的像素预测当前像素,以达到去除视频空域冗余的目的。
在帧间编码中,可以对单向块采用多假设帧间预测技术。具体的,可以为当前块构建两个初始参考帧列表,在两个初始参考帧列表的基础上,构建一个新参考帧列表,从某个初始参考帧列表和新参考帧列表中分别选择一个参考帧,并利用这两个参考帧的预测像素进行加权,得到最终的预测像素。
但是,在采用多假设帧间预测技术的场景下,对于相同的加权预测像素组合,会存在一些语法冗余,从而导致编码性能比较差等。
发明内容
本申请提供了一种编解码方法及其设备,可以提高编码性能。
本申请提供一种编解码方法,所述方法包括:
根据图像块的两个参考帧列表构建第三参考帧列表;其中,所述第三参考帧列表中的参考帧包括第一参考帧列表中的参考帧但不包括第二参考帧列表中的至少一个参考帧,所述第一参考帧列表为所述两个参考帧列表中的其中一个,所述第二参考帧列表为所述两个参考帧列表中的另一个;
从所述第一参考帧列表中选择第一目标参考帧,根据所述第一目标参考帧确定第一预测像素;
从所述第三参考帧列表中选择第二目标参考帧,根据所述第二目标参考帧确定第二预测像素;
对所述第一预测像素和所述第二预测像素进行加权处理,得到目标预测像素;根据所述目标预测像素对所述图像块进行编码处理或者解码处理。
本申请提供一种编解码方法,所述方法包括:
从第一参考帧列表中选择第一目标参考帧,从第二参考帧列表中选择第二目标参考帧,根据第一参考帧列表和第二参考帧列表构建第三参考帧列表;所述第三参考帧列表不包括所述第一目标参考帧和/或所述第二目标参考帧;
从所述第三参考帧列表中选择第三目标参考帧;
根据所述第一目标参考帧确定第一预测像素,根据所述第二目标参考帧确定第二预测像素,根据所述第三目标参考帧确定第三预测像素;
对所述第一预测像素、所述第二预测像素和所述第三预测像素进行加权处理,得到目标预测像素;
根据所述目标预测像素对所述图像块进行编码处理或者解码处理。
本申请提供一种解码端设备,该解码端设备包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现上述的编解码方法步骤。
本申请提供一种编码端设备,该编码端设备包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现上述的编解码方法步骤。
由以上技术方案可见,本申请实施例中,在构建第三参考帧列表时,第三参考帧列表中的参考帧包括第一参考帧列表中的参考帧,但不包括第二参考帧列表中的至少一个参考帧,这样,在采用多假设帧间预测技术的应用场景下,可以避免或者减少出现语法冗余,去除单向块多假设预测与双向块的语法冗余,可以提高编码性能。在有限编码代价下,通过对多假设预测的参考区域以及多假设预测数量进行限制,在考虑硬件实现代价的同时带来编码性能的增益。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
图1是本申请一种实施方式中的视频编码框架的示意图;
图2是本申请一种实施方式中的编解码方法的流程图;
图3是本申请另一种实施方式中的编解码方法的流程图;
图4是本申请另一种实施方式中的编解码方法的流程图;
图5是本申请一种实施方式中的解码端设备的硬件结构图;
图6是本申请一种实施方式中的编码端设备的硬件结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例中提出一种编解码方法,可以涉及如下概念:
帧内预测与帧间预测(intra prediction and inter prediction)技术:
帧内预测是指,利用视频空间域的相关性,使用当前图像已经编码块的像素预测当前像素,以达到去除视频空域冗余的目的。帧内预测中规定了多种预测模式,每一种预测模式都对应一种纹理方向(DC模式除外),当前块预测像素由其预测方向上相邻块的边界重构像素值生成。举例说明,如果图像的纹理是呈现水平状排布的,那么选择水平预测模式可以更好的预测图像信息。
帧间预测是指,利用视频时域的相关性,由于视频序列通常包含有较强的时域相关性,使用邻近已编码图像像素预测当前图像的像素,可以达到有效去除视频时域冗余的目的。主要的视频编码标准帧间预测部分都采用了基于块的运动补偿技术,主要原理是为当前图像的每一个像素块在之前的已编码图像中寻找一个最佳匹配块,该过程称为运动估计(Motion Estimation,ME)。
运动矢量(Motion Vector,MV):在帧间编码中,使用运动矢量表示当前编码块与其参考图像中的最佳匹配块之间的相对位移。每个划分的块都有相应的运动矢量传输到解码端,如果对每个块的运动矢量进行独立编码和传输,特别是划分成小尺寸的块时,需要消耗相当多的比特。为了降低用于编码运动矢量的比特数,则利用相邻图像块之间的空间相关性,根据相邻已编码块的运动矢量对当前待编码块的运动矢量进行预测,然后对预测差进行编码。这样,可以有效地降低表示运动矢量的比特数。在对当前块的运动矢量编码过程中,首先使用相邻已编码块的运动矢量预测当前块的运动矢量,然后对运动矢量的预测值(MVP,Motion Vector Prediction)与运动矢量的真正估值之间的差值(MVD,MotionVectorDifference)进行编码,从而有效降低MV的编码比特数。
运动信息(Motion Information):由于运动矢量表示当前图像块与某个参考图像块的位置偏移,为了准确获取指向图像块的信息,除了运动矢量,还需要参考帧图像的索引信息来表示使用哪个参考帧图像。在视频编码技术中,对于当前帧图像,通常可以建立一个参考帧图像列表,参考帧图像索引信息则表示当前图像块采用了参考帧图像列表中的第几个参考帧图像。此外,很多编码技术还支持多个参考图像列表,因此,还可以使用一个索引值来表示使用了哪一个参考图像列表,这个索引值可以称为参考方向。在视频编码技术中,可以将运动矢量、参考帧索引、参考方向等与运动相关的信息统称为运动信息。
率失真原则(Rate-Distortion Optimized):评价编码效率的有两大指标:码率和PSNR(Peak Signal to Noise Ratio,峰值信噪比),比特流越小,则压缩率越大,PSNR越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:J(mode)=D+λ*R,其中,D表示Distortion(失真),通常使用SSE指标来进行衡量,SSE是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。在模式选择时,若使用率失真原则对编码模式做比较决策,可以保证编码性能最佳。
CTU(Coding Tree Unit,编码树单元),是编码端支持的最大编码单元、以及解码端支持的最大解码单元。进一步的,一帧图像可以先分成若干个不相交的CTU,每个CTU再基于实际情况确定是否进一步划分成更小的块。
预测像素(Prediction Signal):预测像素是指从已经编解码的像素中导出的像素值,通过原始像素与预测像素之差获得残差,进而进行残差变换量化和系数编码。特别的,帧间的预测像素指的是当前块从参考帧(重建像素帧)导出的像素值,由于像素位置离散,需要通过插值运算来获取最终的预测像素。预测像素与原始像素越接近,两者相减得到的残差能量越小,编码压缩性能越高。
多假设预测(Multi-Hypothesis Predition):多假设预测是指对多个预测块加权得到最终预测块的技术。例如,在当前预测模式的预测像素基础上,叠加一个或多个新预测像素的模式,需要额外语法来表述的新的预测像素块的模式。
视频编码框架:参见图1所示,可以使用视频编码框架实现本申请实施例的编码端处理流程,此外,视频解码框架的示意图与图1类似,在此不再重复赘述,而且,可以使用视频解码框架实现本申请实施例的解码端处理流程。具体的,在视频编码框架和视频解码框架中,可以包括帧内预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端处理流程,在解码端,通过这些模块之间的配合,可以实现解码端处理流程。
以下结合几个具体实施例,对编解码方法进行详细说明。
实施例1:参见图2所示,为本申请实施例中提出的编解码方法的流程示意图,该编解码方法可以应用于解码端,该方法可以包括以下步骤:
步骤201,解码端根据图像块的两个参考帧列表构建第三参考帧列表;其中,第三参考帧列表中的参考帧包括第一参考帧列表中的参考帧但不包括第二参考帧列表中的至少一个参考帧,该第一参考帧列表为所述两个参考帧列表中的其中一个,该第二参考帧列表为所述两个参考帧列表中的另一个。
在一个例子中,所述两个参考帧列表可以是两个初始参考帧列表,或者,所述两个参考帧列表可以是对两个初始参考帧列表进行查重之后,得到的两个参考帧列表,查重方式参见后续实施例,在此不再赘述。
在一个例子中,第三参考帧列表中的参考帧包括第一参考帧列表中的参考帧,可以理解为,第三参考帧列表包括第一参考帧列表中的至少一个参考帧,可以是第一参考帧列表的全部参考帧或者部分参考帧,对于第三参考帧列表包括第一参考帧列表中的哪些参考帧,将在后续实施例中介绍。
步骤202,解码端从该第一参考帧列表中选择第一目标参考帧,并根据该第一目标参考帧确定第一预测像素;解码端从该第三参考帧列表中选择第二目标参考帧,并根据该第二目标参考帧确定第二预测像素。
其中,对于解码端来说,第一目标参考帧是第一参考帧列表中的某个目标参考帧,解码端需要利用第一目标参考帧确定第一预测像素。此外,第二目标参考帧是第三参考帧列表中的某个目标参考帧,解码端需要利用第二目标参考帧确定第二预测像素,继而利用第一预测像素和第二预测像素进行加权处理,并对图像块进行解码处理。
步骤203,解码端对第一预测像素和第二预测像素进行加权处理,得到目标预测像素,并根据目标预测像素对该图像块进行解码处理。
假设当前帧为12,第一参考帧列表包括参考帧4和参考帧0,第二参考帧列表包括参考帧20和参考帧16,传统方式中,可以构建多假设参考帧列表,多假设参考帧列表包括第一参考帧列表和第二参考帧列表的所有参考帧,如参考帧4、参考帧0、参考帧20和参考帧16。基于双向块的处理方式,可以从第一参考帧列表中遍历出参考帧4,从第二参考帧列表中遍历出参考帧20,基于参考帧4和参考帧20进行加权处理。基于单向块的多假设预测的处理方式,可以从第一参考帧列表中遍历出参考帧4,从多假设参考帧列表中遍历出参考帧20,基于参考帧4和参考帧20进行加权处理。
显然,基于参考帧4和参考帧20进行两次加权处理,也就是说,在采用多假设帧间预测技术的场景下,存在语法冗余(双向块的语法与单向块的多假设预测语法之间存在冗余)、编码性能差等问题。
与传统方式不同的是,本申请实施例中,在构建第三参考帧列表(即多假设参考帧列表)时,第三参考帧列表中的参考帧包括第一参考帧列表中的参考帧,但不包括第二参考帧列表中的至少一个参考帧,例如,第一参考帧列表包括参考帧4和参考帧0,第二参考帧列表包括参考帧20和参考帧16,第三参考帧列表只包括第一参考帧列表中的参考帧4和参考帧0,不包括第二参考帧列表中的参考帧20和参考帧16。基于双向块的处理方式,可以从第一参考帧列表中遍历出参考帧4,从第二参考帧列表中遍历出参考帧20,基于参考帧4和参考帧20进行加权处理。基于单向块的多假设预测的处理方式,可以从第一参考帧列表中遍历出参考帧4,从第三参考帧列表中遍历出参考帧0,基于参考帧4和参考帧0进行加权处理。由于第三参考帧列表中不包括参考帧20,因此不会从第三参考帧列表中遍历出参考帧20,不会基于参考帧4和参考帧20进行两次加权处理。
综上所述,在采用多假设帧间预测技术的应用场景下,不存在语法冗余(双向块的语法与单向块的多假设预测语法之间存在冗余)问题,去除单向块多假设预测与双向块的语法冗余,可以提高编码性能。此外,在有限编码代价下,通过第三参考帧列表的构建,对单向块多假设预测的参考区域以及多假设预测数量进行限制,在考虑硬件实现代价的同时带来编码性能的增益。
实施例2:参见图3所示,为本申请实施例中提出的编解码方法的流程示意图,该编解码方法可以应用于编码端,该方法可以包括以下步骤:
步骤301,编码端根据图像块的两个参考帧列表构建第三参考帧列表;其中,第三参考帧列表中的参考帧包括第一参考帧列表中的参考帧但不包括第二参考帧列表中的至少一个参考帧,该第一参考帧列表为所述两个参考帧列表中的其中一个,该第二参考帧列表为所述两个参考帧列表中的另一个。
在一个例子中,所述两个参考帧列表可以是两个初始参考帧列表,或者,所述两个参考帧列表可以是对两个初始参考帧列表进行查重之后,得到的两个参考帧列表,查重方式参见后续实施例,在此不再赘述。
在一个例子中,第三参考帧列表中的参考帧包括第一参考帧列表中的参考帧,可以理解为,第三参考帧列表包括第一参考帧列表中的至少一个参考帧,可以是第一参考帧列表的全部参考帧或者部分参考帧,对于第三参考帧列表包括第一参考帧列表中的哪些参考帧,将在后续实施例中介绍。
步骤302,编码端从该第一参考帧列表中选择第一目标参考帧,并根据该第一目标参考帧确定第一预测像素;编码端从该第三参考帧列表中选择第二目标参考帧,并根据该第二目标参考帧确定第二预测像素。
其中,对于编码端来说,第一目标参考帧是第一参考帧列表中的某个目标参考帧,编码端通过遍历第一参考帧列表中的每个参考帧,确定每个参考帧的率失真代价值,最终从第一参考帧列表中选出第一目标参考帧,对此过程不再赘述。然后,编码端利用第一目标参考帧确定第一预测像素。此外,第二目标参考帧是第三参考帧列表中的某个目标参考帧,编码端通过遍历第三参考帧列表中的每个参考帧,确定每个参考帧的率失真代价值,最终从第三参考帧列表中选出第二目标参考帧,对此过程不再赘述。然后,编码端利用第二目标参考帧确定第二预测像素,继而利用第一预测像素和第二预测像素进行加权处理,并对图像块进行解码处理。
步骤303,编码端对第一预测像素和第二预测像素进行加权处理,得到目标预测像素,并根据目标预测像素对该图像块进行编码处理。
参见实施例1的分析,在传统方式中,存在语法冗余(双向块的语法与单向块的多假设预测语法之间存在冗余)、编码性能差等问题。
本申请实施例中,编码端在构建第三参考帧列表(即多假设参考帧列表)时,第三参考帧列表中的参考帧包括第一参考帧列表中的参考帧,但不包括第二参考帧列表中的至少一个参考帧,例如,第一参考帧列表包括参考帧4和参考帧0,第二参考帧列表包括参考帧20和参考帧16,第三参考帧列表只包括第一参考帧列表中的参考帧4和参考帧0,不包括第二参考帧列表中的参考帧20和参考帧16。基于双向块的处理方式,可以从第一参考帧列表中遍历出参考帧4,从第二参考帧列表中遍历出参考帧20,基于参考帧4和参考帧20进行加权处理。基于单向块的多假设预测的处理方式,可以从第一参考帧列表中遍历出参考帧4,从第三参考帧列表中遍历出参考帧0,基于参考帧4和参考帧0进行加权处理。由于第三参考帧列表中不包括参考帧20,因此,不会从第三参考帧列表中遍历出参考帧20,不会基于参考帧4和参考帧20进行两次加权处理。
综上所述,在采用多假设帧间预测技术的应用场景下,不存在语法冗余(双向块的语法与单向块的多假设预测语法之间存在冗余)问题,去除单向块多假设预测与双向块的语法冗余,可以提高编码性能。此外,在有限编码代价下,通过第三参考帧列表的构建,对单向块多假设预测的参考区域以及多假设预测数量进行限制,在考虑硬件实现代价的同时带来编码性能的增益。
实施例3:在步骤201和步骤301中,解码端/编码端需要根据图像块的两个参考帧列表构建第三参考帧列表。具体的,针对第一参考帧列表中的任意一个第一参考帧,可以构建与所述第一参考帧对应的第三参考帧列表,所述第三参考帧列表中可以包括从第一参考帧列表中选择的一个或者多个参考帧;也就是说,第三参考帧列表中的参考帧包括第一参考帧列表中的参考帧,但是,第三参考帧列表中的参考帧不包括第二参考帧列表中的至少一个参考帧。
本实施例中,通过保持两个初始参考帧列表(即第一参考帧列表和第二参考帧列表)不变,在构建第三参考帧列表时,对单向块多假设预测的参考区域以及多假设预测数量进行限制,从而可以达到去除冗余的目的。
在一个例子中,所述图像块的两个参考帧列表,可以理解为,所述图像块所在当前帧的两个参考帧列表,即图像块所在当前帧对应的List0和List1。
在一个例子中,针对第一参考帧列表中的每个第一参考帧,可以对应一个第三参考帧列表,即存在多个第三参考帧列表。或者,针对第一参考帧列表中的所有第一参考帧,可以对应同一个第三参考帧列表集合,在第三参考帧列表集合中,以每个参考帧为索引查找各自的第三参考帧列表。
在一个例子中,可以针对第一参考帧列表中的所有参考帧均创建第三参考帧列表,也可以针对第一参考帧列表中的部分参考帧创建第三参考帧列表。
在一个例子中,该图像块可以是普通模式的图像块,即图像块需要进行运动搜索(特别是双向运动搜索)。图像块所处的当前帧为B帧,由于B帧允许同时存在指向多个List(参考帧列表)的帧间块,如指向List0的帧间预测块和指向List1的帧间预测块,因此,在图像块所处的当前帧为B帧时,当前帧存在两个参考帧列表,该图像块也对应两个参考帧列表,这两个参考帧列表为List0和List1,List0是用于存储前向参考帧的列表,List1是用于存储后向参考帧的列表。
其中,第一参考帧列表可以是List0,第二参考帧列表可以是List1;或者,第一参考帧列表可以是List1,第二参考帧列表可以是List0。本实施例中,对于第一参考帧列表和第二参考帧列表均不做限制,只要第一参考帧列表是List0和List1中的其中一个,第二参考帧列表是List0和List1中的另一个即可。
假设第一参考帧列表中包括参考帧0、参考帧4、参考帧8,第二参考帧列表中包括参考帧8、参考帧16、参考帧20。针对第一参考帧列表中的参考帧0,可以构建与参考帧0对应的第三参考帧列表,该第三参考帧列表中可以包括第一参考帧列表中的一个或者多个参考帧,例如,参考帧0和参考帧4,或,参考帧4和参考帧8,或,参考帧4,或,参考帧8等,对此不做限制,只要是第一参考帧列表中的参考帧即可,但不包括第二参考帧列表中的至少一个参考帧。
在一个例子中,第三参考帧列表中的参考帧不包括只存在于第二参考帧列表中的至少一个参考帧。例如,参考帧16和参考帧20只存在于第二参考帧列表,但是不存在于第一参考帧列表,因此,第三参考帧列表中不包括参考帧16和参考帧20。此外,参考帧8同时存在于第二参考帧列表和第一参考帧列表,因此,第三参考帧列表中可以包括参考帧8,或者,也可以不包括参考帧8。
在一个例子中,可以针对第一参考帧列表中的所有参考帧均创建第三参考帧列表。例如,针对第一参考帧列表中的参考帧0,可以构建与参考帧0对应的第三参考帧列表;针对第一参考帧列表中的参考帧4,可以构建与参考帧4对应的第三参考帧列表,针对第一参考帧列表中的参考帧8,可以构建与参考帧8对应的第三参考帧列表。
在另一个例子中,可以针对第一参考帧列表中的部分参考帧创建第三参考帧列表。例如,针对第一参考帧列表中的参考帧0,可以构建与参考帧0对应的第三参考帧列表;针对第一参考帧列表中的参考帧4,可以构建与参考帧4对应的第三参考帧列表;但是,不构建与参考帧8对应的第三参考帧列表。
以下结合几个具体应用场景,对上述第三参考帧列表的构建进行说明。
应用场景1:针对第一参考帧列表中的第一参考帧,第一参考帧对应的第三参考帧列表包括同时存在于第二参考帧列表和第一参考帧列表中的参考帧。其中,第一参考帧可以是第一参考帧列表中的任一参考帧,为了简洁起见,以第一参考帧列表中的首个参考帧为例,对第三参考帧列表的构建进行举例说明。
例如,参见表1所示,当前帧的POC(Picture Order Count,播放顺序)为10,假设第一参考帧列表为[0 4 8],第二参考帧列表为[8 16 20]。针对第一参考帧列表中的参考帧0,参考帧0对应的第三参考帧列表为[0 4 8]。显然,对于参考帧8来说,是同时存在于第二参考帧列表和第一参考帧列表中的参考帧。
表1
当前帧 | 第一参考帧列表 | 第二参考帧列表 | 第三参考帧列表 |
10 | [<u>0</u> 4 8] | [8 16 20] | [0 4 8] |
在传统方式中,第三参考帧列表可以为[0 4 8 16 20]。显然,本实施例中,由于第三参考帧列表为[0 4 8],从而可以去除冗余的参考帧组合(0,16)和(0,20)。
应用场景2:针对第一参考帧列表中的第一参考帧,第一参考帧对应的第三参考帧列表不包括同时存在于第二参考帧列表和第一参考帧列表中的参考帧。
例如,参见表2所示,当前帧的POC为10,假设第一参考帧列表为[0 4 8],第二参考帧列表为[8 16 20]。针对第一参考帧列表中的参考帧0,参考帧0对应的第三参考帧列表为[0 4]。显然,对于参考帧8来说,由于参考帧8同时存在于第二参考帧列表和第一参考帧列表,因此,第三参考帧列表不包括参考帧8。
表2
当前帧 | 第一参考帧列表 | 第二参考帧列表 | 第三参考帧列表 |
10 | [<u>0</u> 4 8] | [8 16 20] | [0 4] |
传统方式中,第三参考帧列表为[0 4 8 16 20]。显然,本实施例中,由于第三参考帧列表为[0 4],从而可以去除冗余的参考帧组合(0,8)、(0,16)和(0,20)。
应用场景3:针对第一参考帧列表中的第一参考帧,所述第一参考帧对应的第三参考帧列表可以包括所述第一参考帧。
例如,参见表3所示,当前帧的POC为10,假设第一参考帧列表为[0 4],第二参考帧列表为[16 20]。针对第一参考帧列表中的参考帧0,参考帧0对应的第三参考帧列表为[04],即第三参考帧列表可以包括参考帧0本身。
表3
当前帧 | 第一参考帧列表 | 第二参考帧列表 | 第三参考帧列表 |
10 | [<u>0</u> 4] | [16 20] | [0 4] |
应用场景4:针对第一参考帧列表中的第一参考帧,所述第一参考帧对应的第三参考帧列表可以不包括所述第一参考帧。
例如,参见表4所示,当前帧的POC为10,假设第一参考帧列表为[0 4],第二参考帧列表为[16 20]。针对第一参考帧列表中的参考帧0,参考帧0对应的第三参考帧列表为[4],即第三参考帧列表可以不包括参考帧0本身。
表4
当前帧 | 第一参考帧列表 | 第二参考帧列表 | 第三参考帧列表 |
10 | [<u>0</u> 4] | [16 20] | [4] |
应用场景5:针对第一参考帧列表中的第一参考帧,所述第一参考帧对应的第三参考帧列表包括:第一参考帧列表中位于所述第一参考帧后面的参考帧。
例如,参见表5所示,当前帧的POC为10,假设第一参考帧列表为[0 4 8],第二参考帧列表为[8 16 20]。针对第一参考帧列表中的参考帧4,参考帧4对应的第三参考帧列表为[8],即第三参考帧列表包括参考帧4后面的参考帧。
表5
当前帧 | 第一参考帧列表 | 第二参考帧列表 | 第三参考帧列表 |
10 | [0 <u>4</u> 8] | [8 16 20] | [8] |
又例如,参见表6所示,当前帧的POC为10,假设第一参考帧列表为[8 4 0],第二参考帧列表为[8 16 20]。针对第一参考帧列表中的参考帧4,参考帧4对应的第三参考帧列表为[0],即第三参考帧列表包括参考帧4后面的参考帧。
表6
当前帧 | 第一参考帧列表 | 第二参考帧列表 | 第三参考帧列表 |
10 | [8 <u>4</u> 0] | [8 16 20] | [0] |
应用场景6:针对第一参考帧列表中的第一参考帧,所述第一参考帧对应的第三参考帧列表包括:所述第一参考帧列表中位于所述第一参考帧前面的参考帧,以及,所述第一参考帧列表中位于所述第一参考帧后面的参考帧。
例如,参见表7所示,当前帧的POC为10,假设第一参考帧列表为[0 4 8],第二参考帧列表为[8 16 20]。针对第一参考帧列表中的参考帧4,参考帧4对应的第三参考帧列表为[0 8],即参考帧4前面的参考帧和后面的参考帧。
表7
当前帧 | 第一参考帧列表 | 第二参考帧列表 | 第三参考帧列表 |
10 | [0 <u>4</u> 8] | [8 16 20] | [0 8] |
应用场景7:针对第一参考帧列表中的第一参考帧、第一参考帧列表中不同于第一参考帧的第二参考帧,所述第一参考帧对应的第三参考帧列表中的参考帧,与所述第二参考帧对应的第三参考帧列表中的参考帧,不完全相同。
例如,当前帧的POC为10,假设第一参考帧列表为[0 4 8],第二参考帧列表为[816 20]。针对第一参考帧列表中的参考帧0,参见表8所示,参考帧0对应的第三参考帧列表为[0 4 8]。针对第一参考帧列表中的参考帧4,参见表9所示,参考帧4对应的第三参考帧列表为[4 8]。针对第一参考帧列表中的参考帧8,参见表10所示,参考帧8对应的第三参考帧列表为[8]。显然,参考帧0对应的第三参考帧列表中的参考帧,与参考帧4对应的第三参考帧列表中的参考帧,不完全相同。参考帧0对应的第三参考帧列表中的参考帧,与参考帧8对应的第三参考帧列表中的参考帧,不完全相同。参考帧4对应的第三参考帧列表中的参考帧,与参考帧8对应的第三参考帧列表中的参考帧,不完全相同。
表8
当前帧 | 第一参考帧列表 | 第二参考帧列表 | 第三参考帧列表 |
10 | [<u>0</u> 4 8] | [8 16 20] | [0 4 8] |
表9
当前帧 | 第一参考帧列表 | 第二参考帧列表 | 第三参考帧列表 |
10 | [0 <u>4</u> 8] | [8 16 20] | [4 8] |
表10
当前帧 | 第一参考帧列表 | 第二参考帧列表 | 第三参考帧列表 |
10 | [0 4 <u>8</u>] | [8 16 20] | [8] |
当然,上述只是一个示例,对此不做限制,只要不同第三参考帧列表中的参考帧不完全相同即可。例如,参考帧0对应的第三参考帧列表为[0 4],参考帧4对应的第三参考帧列表为[4 8],参考帧8对应的第三参考帧列表为[0 8]等等。
应用场景8:针对上述任一应用场景(即应用场景1-应用场景7中的任意一个应用场景),在构建第三参考帧列表之后,可以遍历第一参考帧列表和第三参考帧列表中所有用于进行加权的参考帧组合;若存在任意两个参考帧组合重复,则可以去除重复的一个参考帧组合,即只对一个参考帧组合进行编码。
在一个例子中,通过去除重复的参考帧组合,可以得到不重复的参考帧组合,例如,得到不重复的N个参考帧组合。进一步的,可以对不重复的N个参考帧组合编号进行编码,从而构建了多假设的参考帧组合列表。
例如,当前帧的POC为10,假设第一参考帧列表为[0 4 8],第二参考帧列表为[816 20]。针对第一参考帧列表中的参考帧0,参见表11所示,参考帧0对应的第三参考帧列表为[0 4 8]。针对第一参考帧列表中的参考帧4,参见表11所示,参考帧4对应的第三参考帧列表为[0 4 8]。针对第一参考帧列表中的参考帧8,参见表11所示,参考帧8对应的第三参考帧列表为[0 4 8]。
表11
当前帧 | 第一参考帧列表 | 第二参考帧列表 | 第三参考帧列表 |
10 | [<u>0</u> 4 8] | [8 16 20] | [0 4 8] |
10 | [0 <u>4</u> 8] | [8 16 20] | [0 4 8] |
10 | [0 4 <u>8</u>] | [8 16 20] | [0 4 8] |
显然,针对参考帧0对应的第三参考帧列表,从第一参考帧列表和第三参考帧列表中选择出的用于确定进行加权的预测像素的参考帧组合包括(0,0)、(0,4)和(0,8);针对参考帧4对应的第三参考帧列表,从第一参考帧列表和第三参考帧列表中选择出的用于确定进行加权的预测像素的参考帧组合包括(4,0)、(4,4)和(4,8);针对参考帧8对应的第三参考帧列表,从第一参考帧列表和第三参考帧列表中选择出的用于确定进行加权的预测像素的参考帧组合包括(8,0)、(8,4)和(8,8)。在上述参考帧组合中,参考帧组合(0,4)与参考帧组合(4,0)重复,参考帧组合(0,8)与参考帧组合(8,0)重复,参考帧组合(4,8)与参考帧组合(8,4)重复,因此,去除上述重复的参考帧组合。
例如,从参考帧0对应的第三参考帧列表中去除参考帧4,从参考帧4对应的第三参考帧列表中去除参考帧8,从参考帧8对应的第三参考帧列表中去除参考帧0。当然,上述方式只是示例,还可以采用其它方式去除重复的参考帧组合。例如,还可以在检查出重复的参考帧组合之后,保持构建的第三参考帧列表不变,对于重复的参考帧组合,如果遍历之后刚好确定为目标参考帧,则不进行重复编码。对于其它去除重复的参考帧组合的方式不再赘述。
经过上述去重处理,则参考帧0对应的第三参考帧列表为[0 8],参考帧4对应的第三参考帧列表为[0 4],参考帧8对应的第三参考帧列表为[4 8]。
在一个例子中,针对编码端,可以为第一参考帧列表中的每个第一参考帧构建第三参考帧列表,因此,可以遍历第一参考帧列表和第三参考帧列表中所有用于进行加权的参考帧组合。在构建所有第三参考帧列表之后,若存在两个参考帧组合重复,则可以去除重复的一个参考帧组合,得到优化后的第三参考帧列表。这样,重复的两个参考帧组合,通过优化第三参考帧列表,可以保留一个参考帧组合,编码端只对一个参考帧组合进行编码,从而避免重复。
针对解码端,假设解码端为第一参考帧列表中的每个第一参考帧构建第三参考帧列表,则可以遍历第一参考帧列表和第三参考帧列表中所有用于进行加权的参考帧组合。在构建所有第三参考帧列表之后,若存在两个参考帧组合重复,则可以去除重复的一个参考帧组合,得到优化后的第三参考帧列表。这样,重复的两个参考帧组合,通过优化第三参考帧列表,可以保留一个参考帧组合。
在另一个例子中,假设解码端不是为第一参考帧列表中的每个第一参考帧构建第三参考帧列表,而是为第一参考帧列表中的某个指定参考帧构建第三参考帧列表,虽然不涉及遍历第一参考帧列表和第三参考帧列表中所有用于进行加权的参考帧组合,但是,解码端也需要采用某种策略来构建第三参考帧列表(编码端也需要采用同样的策略构建第三参考帧列表),保证不存在重复的参考帧组合,即达到“第一参考帧列表和第三参考帧列表中所有用于进行加权的参考帧组合,不存在重复的参考帧组合”的目的。例如,解码端/编码端采用应用场景3的策略构建第三参考帧列表,或者,采用其它策略构建第三参考帧列表,对此不做限制,只要编码端按照这种策略构建第三参考帧列表后,所有用于进行加权的参考帧组合不存在重复的参考帧组合即可,解码端按照这种策略构建第三参考帧列表后,同样能够保证不存在重复的参考帧组合。
应用场景9:若第一参考帧列表中的第一目标参考帧与第三参考帧列表中的第二目标参考帧的权重比例为1:1,显然,遍历出的参考帧组合(0,4)与参考帧组合(4,0)是重复的,因此,需要对重复的参考帧组合进行去重处理,例如,采用应用场景5或者应用场景8的实现方式,以保证不存在重复的参考帧组合。
若第一参考帧列表中的第一目标参考帧与第三参考帧列表中的第二目标参考帧的权重比例为N:M,N与M不同,如4:6、3:7等,显然,遍历出的参考帧组合(0,4)与参考帧组合(4,0)是不重复的,可以采用应用场景6的实现方式。
若第一参考帧列表中的第一目标参考帧与第三参考帧列表中的第二目标参考帧的权重比例为N:M和M:N,即同时使用两个权重比例,虽然N与M不同,但是,遍历出的参考帧组合(0,4)与参考帧组合(4,0)是重复的,因此,需要对重复的参考帧组合进行去重处理。
实施例4:在步骤201和步骤301中,编码端/解码端需要根据图像块的两个参考帧列表构建第三参考帧列表,所述两个参考帧列表可以为参考帧互不相同的两个参考帧列表。基于此,根据图像块的两个参考帧列表构建第三参考帧列表之前,还可以获取图像块的两个初始参考帧列表,并对所述两个初始参考帧列表进行去重处理,得到参考帧互不相同的所述两个参考帧列表,所述两个参考帧列表,也就是上述实施例中的第一参考帧列表和第二参考帧列表。
其中,针对上述实施例3的各种应用场景,在构建第三参考帧列表之前,可以对两个初始参考帧列表进行去重处理,得到参考帧互不相同的所述两个参考帧列表,这样,在利用参考帧互不相同的所述两个参考帧列表构建第三参考帧列表时,具体构建方式参见实施例3的各种应用场景,能够提升效率。
在一个例子中,对所述两个初始参考帧列表进行去重处理,得到参考帧互不相同的所述两个参考帧列表,可以包括但不限于:保持一个初始参考帧列表中的参考帧不变,将另一个初始参考帧列表中重复的参考帧去除,得到参考帧互不相同的所述两个参考帧列表。当然,上述只是一个示例,对此不做限制。
例如,在得到List0与List1之后,在上述所有操作之前,可以将List0与List1作为两个初始参考帧列表,并对List0与List1进行去重处理,从而保证List0与List1不会出现同一POC号的参考帧,并得到参考帧互不相同的两个参考帧列表。其中,对List0与List1进行去重处理,其好处在于,在保证双向块参考帧列表属性的同时,可以减少在单向块下的参考帧索引的编码代价。
例如,当前帧POC为12,List0包括[8 4 0],List1包括[20 16 8],将List0与List1作为两个初始参考帧列表,对List0与List1进行去重处理。在一种实现方式中,保持List0中的参考帧不变,将List1中重复的参考帧去除,这样,List0包括[8 4 0],List1包括[2016]。在另一种实现方式中,保持List1中的参考帧不变,将List0中重复的参考帧去除,这样,List0包括[4 0],List1包括[20 16 8]。
综上所述,可以得到参考帧互不相同的两个参考帧列表,即上述第一参考帧列表和第二参考帧列表,假设第一参考帧列表为List0,如List0包括[8 4 0],第二参考帧列表为List1,List1包括[20 16]。在此基础上,基于第一参考帧列表和第二参考帧列表构建第三参考帧列表,具体实现参见上述实施例。
实施例5:在步骤202和步骤302中,编码端/解码端需要从第一参考帧列表中选择第一目标参考帧,并根据该第一目标参考帧确定第一预测像素。
根据该第一目标参考帧确定第一预测像素,可以包括但不限于:根据该第一目标参考帧确定第一运动矢量,并根据该第一运动矢量确定第一预测像素。
进一步的,根据该第一目标参考帧确定第一运动矢量,可以包括:获取与该第一目标参考帧对应的第一运动矢量列表,并从该第一运动矢量列表的运动矢量中选择一个运动矢量,将选择的运动矢量确定为第一运动矢量。
在步骤202和步骤302中,编码端/解码端还需要从第三参考帧列表中选择第二目标参考帧,并根据该第二目标参考帧确定第二预测像素。
在一个例子中,从第三参考帧列表中选择第二目标参考帧,可以包括但不限于:从第一目标参考帧对应的第三参考帧列表中选择第二目标参考帧。
根据该第二目标参考帧确定第二预测像素,可以包括但不限于:根据该第二目标参考帧确定第二运动矢量,并根据该第二运动矢量确定第二预测像素。
进一步的,根据该第二目标参考帧确定第二运动矢量,可以包括但不限于如下方式:获取与该第二目标参考帧对应的第二运动矢量列表,并从第二运动矢量列表的运动矢量中选择一个运动矢量,将选择的运动矢量确定为第二运动矢量;或者,根据第一目标参考帧与图像块所处的当前帧之间的时域关系、第二目标参考帧与图像块所处的当前帧之间的时域关系,对初始运动矢量进行时域伸缩,并将时域伸缩后的运动矢量确定为第二运动矢量。
其中,所述初始运动矢量可以为所述第一运动矢量,或者,所述初始运动矢量可以为基于所述第一运动矢量和运动信息差值(即MVD)确定的。
以下结合几个具体的应用场景,对上述技术方案进行详细说明。
应用场景1:编码端从第一参考帧列表中选择第一目标参考帧,并根据该第一目标参考帧确定第一运动矢量。此外,编码端从第三参考帧列表中选择第二目标参考帧,并根据该第二目标参考帧确定第二运动矢量。其中,该第三参考帧列表可以是所述第一目标参考帧对应的第三参考帧列表。
例如,假设当前帧为12,List0包括[4 0],List1包括[20 16],针对当前帧12中的图像块A,构建针对参考帧4的运动矢量列表1,针对参考帧0的运动矢量列表2,针对参考帧20的运动矢量列表3,针对参考帧16的运动矢量列表4,对于运动矢量列表的构建过程不做限制,在每个运动矢量列表中,可以包括多个运动矢量,如5个运动矢量,对此不做限制。为了方便描述,后续实施例中,以运动矢量列表1只包括一个运动矢量11、运动矢量列表2只包括一个运动矢量21、运动矢量列表3只包括一个运动矢量31、运动矢量列表4只包括一个运动矢量41为例。当然,各运动矢量列表中的运动矢量数量均可以为多个,这里为了方便描述,是以一个运动矢量为例,多个运动矢量的流程类似。
进一步的,若针对当前帧12中的图像块A采用多假设预测模式,则还可以为参考帧4构建多假设参考帧列表1,多假设参考帧列表1可以包括[0];为参考帧0构建多假设参考帧列表2,多假设参考帧列表2可以包括[4];为参考帧20构建多假设参考帧列表3,多假设参考帧列表3可以包括[16];为参考帧16构建多假设参考帧列表4,多假设参考帧列表4可以包括[20]。
基于上述场景,编码端遍历出所有可能的运动矢量或者运动矢量组合,并确定运动矢量或者运动矢量组合对应的率失真代价,对此不做限制,并基于最小率失真代价对应的运动矢量或者运动矢量组合,执行“从第一参考帧列表中选择第一目标参考帧,根据第一目标参考帧确定第一运动矢量,从第三参考帧列表中选择第二目标参考帧,根据第二目标参考帧确定第二运动矢量”等步骤。
例如,针对List0中的参考帧4,编码端确定运动矢量11对应的率失真代价1;针对List0中的参考帧0,编码端确定运动矢量21对应的率失真代价2。
针对List1中的参考帧20,编码端确定运动矢量31对应的率失真代价3;针对List1中的参考帧16,编码端确定运动矢量41对应的率失真代价4。
针对List0中的参考帧4和List1中的参考帧20,编码端确定运动矢量11和运动矢量31对应的率失真代价5;针对List0中的参考帧4和List1中的参考帧16,编码端确定运动矢量11和运动矢量41对应的率失真代价6。
针对List0中的参考帧0和List1中的参考帧20,编码端确定运动矢量21和运动矢量31对应的率失真代价7;针对List0中的参考帧0和List1中的参考帧16,编码端确定运动矢量21和运动矢量41对应的率失真代价8。
针对List0中的参考帧4和参考帧4对应的多假设参考帧列表1(其包括参考帧0),编码端确定运动矢量11和运动矢量21对应的率失真代价9。
针对List0中的参考帧0和参考帧0对应的多假设参考帧列表2(其包括参考帧4),编码端确定运动矢量21和运动矢量11对应的率失真代价10。
针对List1中的参考帧20和参考帧20对应的多假设参考帧列表3(其包括参考帧16),编码端确定运动矢量31和运动矢量41对应的率失真代价11。
针对List1中的参考帧16和参考帧16对应的多假设参考帧列表4(其包括参考帧20),编码端确定运动矢量41和运动矢量31对应的率失真代价12。
综上所述,若率失真代价1最小,则第一参考帧列表为List0,第一目标参考帧为第一参考帧列表中的参考帧4,第一运动矢量为运动矢量11。在此情况下,并未涉及第三参考帧列表、第二目标参考帧和第二运动矢量。
若率失真代价5最小,则第一参考帧列表为List0,目标目标参考帧为List0中的参考帧4和List1中的参考帧20,目标运动矢量为运动矢量11和运动矢量31。在此情况下,并未涉及第三参考帧列表、第二目标参考帧和第二运动矢量。
若率失真代价9最小,则第一参考帧列表为List0,第一目标参考帧为第一参考帧列表中的参考帧4,第一运动矢量为运动矢量11。此外,第三参考帧列表为参考帧4(即第一目标参考帧)对应的多假设参考帧列表1(其可以包括参考帧0),第二目标参考帧为第三参考帧列表中的参考帧0,第二运动矢量为运动矢量21。在后续实施例中,以率失真代价9最小为例进行说明。
应用场景2:解码端从第一参考帧列表中选择第一目标参考帧,并根据该第一目标参考帧确定第一运动矢量。此外,解码端从第三参考帧列表中选择第二目标参考帧,并根据该第二目标参考帧确定第二运动矢量。其中,该第三参考帧列表可以是所述第一目标参考帧对应的第三参考帧列表。
例如,在确定第一参考帧列表为List0,第一目标参考帧为第一参考帧列表中的参考帧4,第一运动矢量为运动矢量11,第三参考帧列表为多假设参考帧列表1,第二目标参考帧为第三参考帧列表中的参考帧0,第二运动矢量为运动矢量21后,编码端向解码端发送编码比特流时,编码比特流可以携带第一指示信息、第二指示信息和第三指示信息,第一指示信息用于指示第一目标参考帧在第一参考帧列表中的第一索引值,第二指示信息用于指示采用多假设预测模式,第三指示信息用于指示第二目标参考帧在第三参考帧列表中的第二索引值。
其中,在编码比特流中,第二指示信息可以位于第一指示信息的前面,第二指示信息可以位于第一指示信息的后面,第二指示信息可以位于第三指示信息的前面,第二指示信息可以位于第三指示信息的后面,对此不做限制。
在一个例子中,解码端在接收到编码比特流后,可以从编码比特流中解析出第一指示信息、第二指示信息和第三指示信息,由于第二指示信息用于指示采用多假设预测模式,因此,解码端根据第二指示信息确定需要对当前图像块启用多假设预测,并根据图像块的两个参考帧列表构建第三参考帧列表。具体的,由于第一指示信息用于指示第一目标参考帧在第一参考帧列表中的第一索引值,且第一索引值对应List0中的参考帧4,因此,针对参考帧4构建第三参考帧列表,该第三参考帧列表包括[0],具体构建方式参见上述实施例。然后,基于第一指示信息,从第一参考帧列表(即List0)中选择与第一索引值对应的参考帧4,即第一目标参考帧为参考帧4。基于第三指示信息,从第三参考帧列表中选择与第二索引值对应的参考帧0,即第二目标参考帧为参考帧0。
在另一个例子中,解码端在接收到编码比特流后,可以从编码比特流中解析出第一指示信息、第二指示信息和第三指示信息。基于第一指示信息,从第一参考帧列表(即List0)中选择与第一索引值对应的参考帧4,即第一目标参考帧为参考帧4。然后,由于第二指示信息用于指示采用多假设预测模式,因此,解码端根据第二指示信息确定需要对当前图像块启用多假设预测,并根据图像块的两个参考帧列表构建第三参考帧列表。具体的,由于第一目标参考帧为参考帧4,因此,针对参考帧4构建第三参考帧列表,该第三参考帧列表包括[0],具体构建方式参见上述实施例。然后,基于第三指示信息,从第三参考帧列表中选择与第二索引值对应的参考帧0,即第二目标参考帧为参考帧0。
由于第一运动矢量为运动矢量11,第二运动矢量为运动矢量21,因此,编码端向解码端发送编码比特流时,编码比特流还可以携带第四指示信息和第五指示信息,第四指示信息用于指示运动矢量11在运动矢量列表1中的第三索引值,第五指示信息用于指示运动矢量21在运动矢量列表2中的第四索引值。
解码端在接收到编码比特流后,可以从编码比特流中解析出第四指示信息和第五指示信息。基于第四指示信息,解码端从运动矢量列表1中选择与第三索引值对应的运动矢量11,即第一运动矢量为运动矢量11。基于第五指示信息,解码端从运动矢量列表2中选择与第四索引值对应的运动矢量21,即第二运动矢量为运动矢量21。综上所述,第一目标参考帧为参考帧4,第一运动矢量为运动矢量11,第二目标参考帧为参考帧0,第二运动矢量为运动矢量21。
应用场景3:在上述应用场景1和应用场景2中,在根据第二目标参考帧确定第二运动矢量时,是采用如下方式:获取与第二目标参考帧对应的第二运动矢量列表,并从第二运动矢量列表的运动矢量中选择一个运动矢量,将选择的运动矢量确定为第二运动矢量。本应用场景3中,可以采用如下方式:根据第一目标参考帧与图像块所处的当前帧之间的时域关系、第二目标参考帧与图像块所处的当前帧之间的时域关系,对初始运动矢量进行时域伸缩,并将时域伸缩后的运动矢量确定为第二运动矢量。其中,初始运动矢量可以为第一运动矢量,或者,基于第一运动矢量和运动信息差值(即MVD)确定的。综上所述,在应用场景3中,并未涉及第二目标参考帧对应的第二运动矢量列表。
在一个例子中,针对编码端,基于应用场景1的实现方式,确定第一目标参考帧(即参考帧4)、第二目标参考帧(即参考帧0)和第一运动矢量(即运动矢量11),但是,并不需要采用应用场景1的实现方式确定第二运动矢量。
然后,可以将第一运动矢量确定为初始运动矢量,并根据第一目标参考帧(即参考帧4)与图像块所处的当前帧(假设为10)之间的时域关系、第二目标参考帧(即参考帧0)与图像块所处的当前帧(假设为10)之间的时域关系,对初始运动矢量进行时域伸缩,将时域伸缩后的运动矢量确定为第二运动矢量。
例如,第一目标参考帧与当前帧之间的时域关系为间隔K帧(如-6帧,即4-10,这个间隔带方向),第二目标参考帧与当前帧之间的时域关系为间隔L帧(如-10帧,即0-10,这个间隔带方向的)。假设初始运动矢量记为Xa和Ya,时域伸缩后的运动矢量记为Xb和Yb,则Xb=(Xa*L)/K,Yb=(Ya*L)/K。
针对解码端,基于应用场景2的实现方式,可以确定第一目标参考帧(即参考帧4)、第二目标参考帧(即参考帧0)和第一运动矢量(即运动矢量11),但是,并不需要采用应用场景2的实现方式确定第二运动矢量。
然后,可以将第一运动矢量确定为初始运动矢量,并根据第一目标参考帧(即参考帧4)与图像块所处的当前帧(假设为10)之间的时域关系、第二目标参考帧(即参考帧0)与图像块所处的当前帧(假设为10)之间的时域关系,对初始运动矢量进行时域伸缩,将时域伸缩后的运动矢量确定为第二运动矢量。
例如,第一目标参考帧与当前帧之间的时域关系为间隔K帧,第二目标参考帧与当前帧之间的时域关系为间隔L帧。假设初始运动矢量记为Xa和Ya,时域伸缩后的运动矢量记为Xb和Yb,则Xb=(Xa*L)/K,Yb=(Ya*L)/K。
在另一个例子中,针对编码端,基于应用场景1的实现方式,确定第一目标参考帧(即参考帧4)、第二目标参考帧(即参考帧0)和第一运动矢量(即运动矢量11),但是,并不需要采用应用场景1的实现方式确定第二运动矢量。
然后,可以确定第一运动矢量(即预测值MVP)与运动矢量的真正估值之间的运动信息差值(即MVD),基于第一运动矢量和运动信息差值确定初始运动矢量,如初始运动矢量为第一运动矢量和运动信息差值的和。进一步的,根据第一目标参考帧(即参考帧4)与图像块所处的当前帧之间的时域关系、第二目标参考帧(即参考帧0)与图像块所处的当前帧之间的时域关系,对初始运动矢量进行时域伸缩,并将时域伸缩后的运动矢量确定为第二运动矢量。
针对解码端,基于应用场景2的实现方式,可以确定第一目标参考帧(即参考帧4)、第二目标参考帧(即参考帧0)和第一运动矢量(即运动矢量11),但是,并不需要采用应用场景2的实现方式确定第二运动矢量。
在编码端向解码端发送编码比特流时,编码比特流还可以携带运动信息差值(即MVD,是第一运动矢量与运动矢量的真正估值之间的差值),也就是说,解码端在接收到编码比特流后,可以从编码比特流中获取运动信息差值。
基于此,解码端可以基于第一运动矢量和运动信息差值确定初始运动矢量,如初始运动矢量为第一运动矢量和运动信息差值的和。然后,根据第一目标参考帧(即参考帧4)与图像块所处的当前帧之间的时域关系、第二目标参考帧(即参考帧0)与图像块所处的当前帧之间的时域关系,对初始运动矢量进行时域伸缩,并将时域伸缩后的运动矢量确定为第二运动矢量。
综上所述,针对第二目标参考帧对应的第二运动矢量,一种实现方式是:参见应用场景3,基于当前图像块在第一目标参考帧的运动矢量,通过将其时域伸缩到第二目标参考帧的运动矢量,以时域伸缩后的运动矢量为搜索起点,进行运动搜索。其中,可以限制搜索区域起始点为时域伸缩后的运动矢量。
另一种实现方式是:参见应用场景1和应用场景2,基于第二目标参考帧对应的第二运动矢量列表,从第二运动矢量列表中选择一个运动矢量,以该运动矢量为搜索起点,进行运动搜索。其中,可以限制搜索区域起始点为按照AMVP导出的指向第二目标参考帧的运动矢量列表中的某个运动矢量,这个运动矢量的索引可以携带于编码比特流中,或者,直接按照某种策略进行约定,例如,取运动矢量列表的第一个位置,取与当前参考运动矢量时域伸缩后的运动矢量差值最小的一个等,对此不做限制,只要能够找到这个运动矢量即可。
应用场景4:编码端/解码端根据第一运动矢量确定第一预测像素,并根据第二运动矢量确定第二预测像素。具体的,在采用应用场景1、或应用场景2、或应用场景3的方式得到第一运动矢量和第二运动矢量后,编码端/解码端可以根据该第一运动矢量确定第一预测像素,对此确定方式不做限制。编码端/解码端还可以根据该第二运动矢量确定第二预测像素,对此确定方式不做限制。
应用场景5:在步骤202和步骤302中,编码端/解码端需要根据第一目标参考帧确定第一预测像素,与应用场景1和应用场景3不同,在另一个实现方式中,根据第一目标参考帧确定第一预测像素,可以包括:获取与第一目标参考帧对应的仿射控制点候选列表,并从仿射控制点候选列表中选择一个控制点模型,将选择的控制点模型确定为单向控制点模型,并根据该单向控制点模型确定第一预测像素。基于上述处理,可以将上述第一运动矢量扩展到单向仿射模式,仿射模式是一种帧间预测模式,可以通过若干控制点的运动矢量,导出当前块的每个子块分别的运动矢量,而且,仿射模式也分为单向和双向。
综上所述,仿射控制点候选列表类似于运动矢量列表,控制点模型类似于运动矢量,这样,实现方式参见应用场景1和应用场景3,在此不再赘述。
在上述实施例中,第一预测像素对应的运动信息(如运动矢量或者单向控制点模型)是通过运动搜索得到的(而非类似融合模式,从参考块中获取)。
实施例6:在步骤203和步骤303中,编码端/解码端需要对第一预测像素和第二预测像素进行加权处理,得到目标预测像素,根据目标预测像素对图像块进行编码处理或者解码处理。具体的,编码端/解码端可以根据第一预测像素、第一预测像素对应的第一权重、第二预测像素、第二预测像素对应的第二权重进行加权处理,得到目标预测像素。然后,编码端根据目标预测像素对图像块进行编码处理;或者,解码端根据目标预测像素对图像块进行解码处理。
其中,第一权重与第二权重可以相同或者不同。例如,可以预先约定第一权重与第二权重的比例,例如,第一权重与第二权重的比例为1:1、或7:3、或6:4、或5:5、或4:6、或3:7,这样,编码端/解码端就可以获知第一权重与第二权重的比例,继而获知第一权重和第二权重,这样,就可以根据第一预测像素和第一权重、第二预测像素和第二权重进行加权处理,得到目标预测像素。
其中,第一权重与第二权重可以相同或者不同。例如,预先约定权重列表,该权重列表包括第一权重与第二权重的比例,如7:3、6:4、5:5、4:6、3:7等。
针对编码端,在确定率失真代价时,可以确定每种权重比例的率失真代价,例如,假设第一权重与第二权重的比例为6:4时,率失真代价最小,则可以采用6:4,即第一权重与第二权重的比例为6:4。然后,编码端可以根据第一预测像素和第一权重、第二预测像素和第二权重进行加权处理,得到目标预测像素。
编码端向解码端发送编码比特流时,该编码比特流还可以携带权重比例的指示信息,如比例6:4在权重列表中的索引信息。解码端在接收到编码比特流时,可以从该编码比特流中解析出权重比例的指示信息,继而从权重列表中查询到第一权重与第二权重的比例,如6:4。然后,解码端可以根据第一预测像素和第一权重、第二预测像素和第二权重进行加权处理,得到目标预测像素。
在一个例子中,编码端在得到目标预测像素后,可以根据目标预测像素对图像块进行编码处理,对此过程不再赘述;或者,解码端在得到目标预测像素后,可以根据目标预测像素对图像块进行解码处理,对此过程不再赘述。
实施例7:编码端/解码端可以根据图像块的两个参考帧列表构建第三参考帧列表,具体的,可以预先设置一个启动机制,当满足该启动机制时,则可以根据图像块的两个参考帧列表构建第三参考帧列表,当不满足该启动机制时,则不需要根据图像块的两个参考帧列表构建第三参考帧列表。具体的,若根据指示信息确定需要对该图像块启用多假设预测,即满足启动机制,则编码端/解码端可以根据图像块的两个参考帧列表构建第三参考帧列表。
其中,针对编码端来说,可以在编码端为图像块配置指示信息,该指示信息用于指示需要对该图像块启用多假设预测,基于此,编码端可以根据该指示信息确定需要对该图像块启用多假设预测,并根据图像块的两个参考帧列表构建第三参考帧列表。此外,针对解码端来说,参见上述实施例5的应用场景2,编码比特流中可以携带第二指示信息,该第二指示信息用于指示采用多假设预测模式,因此,解码端可以根据该第二指示信息确定需要对该图像块启用多假设预测,并根据图像块的两个参考帧列表构建第三参考帧列表。
本实施例中,通过对搜索区域的限制来提高多假设预测效率。考虑到硬件实现,可以限制多假设的上限为2,也就是说,进行多假设数量限制,如单向块和一个多假设,最多是两个预测像素块。可以只对语法标注的单向块进行1次多假设预测,即至多两次运动补偿操作。通过对多假设预测的参考区域以及多假设预测数量进行限制,在考虑硬件实现代价的同时带来编码性能的增益。
本实施例中,还可以对当前块的块大小进行限制,例如,当前块的块大小为MxN,M的取值可以根据经验配置,N的取值可以根据经验配置。例如,当前块的块大小都限制为非4x4,或者,当前块的块大小都限制为4x4。
假设当前帧为12,List0包括[4 0],List1包括[20 16],在传统方式中,可以构建多假设参考帧列表,多假设参考帧列表包括List0和List1的所有参考帧,如[4 0 20 16]。参见实施例5,可以从List0中遍历出参考帧4,从List1中遍历出参考帧20,这样,基于参考帧4和参考帧20确定率失真代价。还可以从List0中遍历出参考帧4,从多假设参考帧列表中遍历出参考帧20,这样,基于参考帧4和参考帧20确定率失真代价。显然,需要基于参考帧4和参考帧20确定两次率失真代价。同理,需要基于参考帧0和参考帧20确定两次率失真代价,以此类推。综上所述,在采用多假设帧间预测技术的场景下,存在语法冗余(双向块的语法与单向块的多假设预测语法之间存在冗余)、编码性能差等问题。
与传统方式不同的是,本实施例中,在构建多假设参考帧列表时,多假设参考帧列表不包括List0和List1的所有参考帧,例如,为List0中的参考帧4构建多假设参考帧列表时,多假设参考帧列表包括List0的参考帧,而不包括List1的参考帧。参见实施例4,可以从List0中遍历出参考帧4,从List1中遍历出参考帧20,这样,基于参考帧4和参考帧20确定率失真代价。还可以从List0中遍历出参考帧4,从多假设参考帧列表中遍历出参考帧0,由于多假设参考帧列表不包括参考帧20,因此不会遍历出参考帧20,不会基于参考帧4和参考帧20确定两次率失真代价,以此类推。综上所述,在采用多假设帧间预测技术的场景下,不存在语法冗余(双向块的语法与单向块的多假设预测语法之间存在冗余)问题,去除单向块多假设预测与双向块的语法冗余,可以提高编码性能。
实施例8:
在一个例子中,解码端的处理流程可以包括但不限于如下步骤:
a、根据码流确定单向帧间预测块,并解析得到其单向运动信息,如运动矢量,参考帧索引以及指向的具体参考帧列表。参见上述实施例,运动矢量是上述第一运动矢量,参考帧索引和具体参考帧列表对应第一目标参考帧。
b、构建多假设参考帧列表。参见上述实施例,多假设参考帧列表就是上述第三参考帧列表,针对第三参考帧列表的构建过程,在此不再重复赘述。
c、导出单向帧间预测块的多假设预测模式的MVD,多假设参考帧。
其中,MVD的导出方法包括:方式1、传统MVD编码(MVD的两个分量分别编码其符号,幅值,例如[3,0]被编码为正数,幅值3,正数,幅值0)。在这种MVD编码方式下,采用传统方式导出MVD,对此不做限制。方式2、MMVD方式的编码(MVD方向+MVD跨度,例如[3,0]被编码为x轴方向,跨度3)。在这种MMVD编码方式下,采用与编码方式匹配的搜索方式导出MVD,即只搜索若干MMVD编码方式下的位置集合,对此不做限制。
其中,多假设参考帧也就是上述实施例中的第二目标参考帧,多假设参考帧的导出方法包括:方式1、通过码流导出多假设参考帧的索引,通过索引查询多假设参考帧列表,得到多假设参考帧。方式2、按照某种策略进行约定(如第一个位置,与当前参考运动矢量时域伸缩后的运动矢量差值最小的一个等)。
d、基于单向运动信息中的单向运动矢量(上述第一运动矢量)对应的第一预测像素、多假设运动矢量(上述第二运动矢量)对应的第二预测像素,对第一预测像素和第二预测像素进行加权,得到单向帧间预测块的最终预测像素。
其中,多假设运动矢量可以为初始运动矢量叠加上述MVD得到的,所述初始运动矢量为所述单向运动矢量的时域伸缩至所述多假设参考帧的运动矢量,或者,以所述多假设参考帧导出的参考运动矢量列表中的参考运动矢量。
以下结合一个具体应用场景,对上述过程进行说明。
从码流中解析得到单向帧间预测的当前块,可以记A块。其中,对于B帧,码流会标识当前帧间预测块为单向或者双向,例如,码流标识的是当前帧间预测块有一个运动矢量并指向List0,当前帧间预测块有一个运动矢量并指向List1,当前帧间预测块有两个运动矢量并分别指向List0或List1。
从码流中解析得到当前B帧的两个参考帧列表,例如,当前帧POC为12,其List0为[8 4 0],其List1为[20 16 8]。在此基础上,可以利用List0和List1构建多假设参考帧列表,针对第三参考帧列表的构建过程,参见上述实施例。
从码流中解析得到多假设预测模式的MVD,从码流中解析得到多假设参考帧(或者,直接指定多假设参考帧为多假设参考帧列表中的第一帧,其中,多假设参考帧列表的顺序可以按照某一规律,例如,按照多假设参考帧离当前帧的距离远近,或,多假设参考帧离A块指向的参考帧的距离远近)。
将A块的单向运动矢量的时域伸缩至多假设参考帧的运动矢量(或者,从码流中解析得到指向多假设参考帧的参考运动矢量列表的索引值,所指向的参考运动矢量)作为初始运动矢量,并叠加MVD得到多假设运动矢量。
通过A块的单向运动矢量与多假设运动矢量指向的预测像素加权,得到所述A块的最终预测像素。其中,加权值可以固定为1:1(或者,从码流中解析加权的索引值,通过索引值查询权重表,得到与该索引值对应的权重值)。
在一个例子中,编码端的处理流程可以包括但不限于如下步骤:
a、通过运动搜索得到单向帧间预测块的单向运动信息并编入码流,单向运动信息可以如运动矢量,参考帧索引以及指向的具体参考帧列表。运动矢量是上述第一运动矢量,参考帧索引和具体参考帧列表对应第一目标参考帧。
b、对所述单向帧间预测块构建多假设参考帧列表。参见上述实施例,多假设参考帧列表是第三参考帧列表,针对第三参考帧列表的构建不再赘述。
c、以初始运动矢量为搜索起点进行运动搜索,导出所述单向帧间预测块的多假设预测模式的MVD、多假设参考帧,并部分或全部编入码流。
其中,在导出单向帧间预测块的多假设预测模式的MVD、多假设参考帧时,可以通过RDO(Rate-Distortion Optimized,率失真原则)或粗搜,确定多假设预测模式的MVD、多假设参考帧,实现参见上述实施例,在此不再赘述。粗搜是采用SAD(Sum of AbsoluteDifference,绝对误差和)或SATD(Sum of Absolute Transformed Difference,变换后再绝对值求和)叠加模式的码率估计。
其中,上述部分或全部编入码流可以是指:MVD需要编入码流,多假设参考帧可以编入码流,多假设参考帧也可以按照某种策略进行约定。
d、基于单向运动信息中的单向运动矢量(上述第一运动矢量)对应的第一预测像素、多假设运动矢量(上述第二运动矢量)对应的第二预测像素,对第一预测像素和第二预测像素进行加权,得到单向帧间预测块的最终预测像素。
其中,多假设运动矢量可以为初始运动矢量叠加上述MVD得到的,所述初始运动矢量为所述单向运动矢量的时域伸缩至所述多假设参考帧的运动矢量,或者,以所述多假设参考帧导出的参考运动矢量列表中的参考运动矢量。
以下结合一个具体应用场景,对上述过程进行说明。
决策当前块(记为A块)的单向预测模式,并根据当前B帧的两个参考帧列表构建多假设参考帧列表,例如,当前帧POC为12,其List0为[8 4 0],其List1为[20 16 8],在此基础上,可以利用List0和List1构建多假设参考帧列表,针对第三参考帧列表的构建过程,参见上述实施例,在此不再赘述。
指定多假设参考帧,以A块的单向运动矢量的时域伸缩至多假设参考帧的运动矢量(或者,指定指向多假设参考帧的参考运动矢量列表的索引值指向的参考运动矢量,此时需要将索引值编入码流)作为运动搜索起始点,搜索得到多假设预测模式的MVD,将多假设参考帧以及MVD编入码流。
通过A块的单向运动矢量与多假设运动矢量指向的预测像素加权,得到所述A块的最终预测像素。其中,加权值可以固定为1:1(或者,从码流中解析加权的索引值,通过索引值查询权重表,得到与该索引值对应的权重值)。
实施例9:将所述第一预测像素对应的第一运动信息(如上述第一目标参考帧、第一运动矢量等)存储,并将所述第二预测像素对应的第二运动信息(如上述第二目标参考帧、第二运动矢量等)存储。为了存储第一目标参考帧,可以直接存储第一运动矢量指向的第一目标参考帧POC,或存储第一目标参考帧的索引。为了存储第二目标参考帧,可以直接存储第二运动矢量指向的第二目标参考帧POC,或存储第二目标参考帧的索引。进一步,当所述图像块作为其它图像块的参考块时,可以根据存储的该第一运动信息和该第二运动信息,构建所述其它图像块对应的运动信息候选列表或者参考运动矢量候选列表。在以上实施例的基础上,叠加单向帧间预测块的最终运动矢量存储,一方面,其多假设运动矢量(即第二运动矢量)可被其它编码块进行融合模式(Merge模式),另一方面,其多假设运动矢量(即第二运动矢量)可作为其它模式的MVP。
以下结合几个具体应用场景,对上述技术方案进行详细说明。
应用场景1:将上述实施例中的图像块记为图像块A,为图像块A存储了第一运动信息(如第一目标参考帧、第一运动矢量等)和第二运动信息(如第二目标参考帧、第二运动矢量等)。针对融合模式(Merge模式)的图像块B,若图像块A是图像块B的参考块,则根据第一目标参考帧、第一运动矢量、第二目标参考帧、第二运动矢量,构建与图像块B对应的运动信息候选列表。
情况1、若图像块B与图像块A属于同一帧,则在图像块B对应的运动信息候选列表中,可以包括图像块A对应的候选运动信息,该候选运动信息可以包括第一目标参考帧和第一运动矢量、第二目标参考帧和第二运动矢量。
例如,解码端从码流中解析得到图像块B为融合模式(Merge模式),其对应参考块为图像块A,若图像块A为多假设预测模式,当图像块B与图像块A属于同一帧时,可以直接复用图像块A的模式(两个运动矢量,两个参考帧),也就是说,在图像块B对应的运动信息候选列表中,可以包括候选运动信息,如第一目标参考帧和第一运动矢量、第二目标参考帧和第二运动矢量。
又例如,编码端决策图像块B为融合模式(Merge模式),其对应参考块为图像块A,若图像块A为多假设预测模式,当图像块B与图像块A属于同一帧时,编码端可以直接复用图像块A的模式(两个运动矢量,两个参考帧),也就是说,在图像块B对应的运动信息候选列表中,可以包括候选运动信息,如第一目标参考帧和第一运动矢量、第二目标参考帧和第二运动矢量。
情况2、若图像块B与图像块A属于不同帧,则在图像块B对应的运动信息候选列表中,可以包括图像块A对应的候选运动信息,该候选运动信息可以包括第三目标参考帧和第三运动矢量、第四目标参考帧和第四运动矢量。
进一步的,第三目标参考帧可以是图像块B对应的参考帧列表中的参考帧;第四目标参考帧可以是图像块B对应的参考帧列表中的参考帧。
其中,第三运动矢量可以是根据第一目标参考帧与图像块A所处帧之间的时域关系1、第三目标参考帧与图像块B所处帧之间的时域关系2,对第一运动矢量进行时域伸缩后得到的;此外,第四运动矢量可以是根据第二目标参考帧与图像块A所处帧之间的时域关系3、第四目标参考帧与图像块B所处帧之间的时域关系4,对第二运动矢量进行时域伸缩后得到的。
例如,第一目标参考帧与图像块A所处帧之间的时域关系1为间隔K帧(即第一目标参考帧与图像块A所处帧之间的差值,K帧可以为正值或者负值),第三目标参考帧与图像块B所处帧之间的时域关系2为间隔L帧。
假设第一运动矢量记为Xa和Ya,对第一运动矢量进行时域伸缩后得到的运动矢量记为Xb和Yb,则Xb=(Xa*L)/K,Yb=(Ya*L)/K。
此外,对第二运动矢量进行时域伸缩的处理方式类似,在此不再赘述。
例如,解码端/编码端获知图像块B为融合模式(Merge模式),其对应参考块为图像块A,若图像块A为多假设预测模式,当图像块B与图像块A属于不同帧时,则可以对图像块A的运动矢量分别进行时域伸缩至List0以及List1的时域对应帧(co-located帧),然后将其加入到运动信息候选列表,也就是说,可以在图像块B对应的运动信息候选列表中,添加候选运动信息,如第三目标参考帧和第三运动矢量、第四目标参考帧和第四运动矢量。
其中,图像块B所在当前帧可以对应List0以及List1,图像块B所在当前帧对应的List0与图像块A所在当前帧对应的List0可以不同,图像块B所在当前帧对应的List1与图像块A所在当前帧对应的List1可以不同。
在一个例子中,将图像块B所在当前帧对应的List0的第一个参考帧,作为第三目标参考帧,将图像块B所在当前帧对应的List1的第一个参考帧,作为第四目标参考帧。或者,可以确定第二目标参考帧在图像块A所在当前帧对应的List0/List1中的位置,如第二目标参考帧是List0的第3个参考帧,将图像块B所在当前帧对应的List0的第一个参考帧,作为第三目标参考帧,将图像块B所在当前帧对应的List0的第三个参考帧,作为第四目标参考帧。
情况3、通过两个运动矢量对应预测像素的加权,可以得到图像块B的最终预测像素,图像块B的权重可以指定为1:1,或者,图像块B的权重可以与图像块A块的权重保持一致。例如,当图像块A与图像块B属于同一帧时,则保持权重一致,当图像块A与图像块B属于不同帧,则图像块B的权重恢复为1:1。
应用场景2:将上述实施例中的图像块记为图像块A,为图像块A存储了第一运动信息(如第一目标参考帧、第一运动矢量等)和第二运动信息(如第二目标参考帧、第二运动矢量等)。针对普通模式的图像块B,若图像块A是图像块B的参考块,则根据第一目标参考帧、第一运动矢量、第二目标参考帧、第二运动矢量,构建与图像块B对应的参考运动矢量候选列表。其中,普通模式可以是需要进行运动搜索得到最终的运动矢量,如AMVP模式等,在AMVP模式下,每一个List中的每一个参考帧都会构建一个参考运动矢量候选列表,且参考运动矢量候选列表内的所有运动矢量都是指向同一个参考帧。
情况1、构建与图像块B对应的参考帧列表,针对参考帧列表中的每个参考帧(后续记为参考帧S),根据第一目标参考帧、第一运动矢量、第二目标参考帧、第二运动矢量,构建与参考帧S对应的参考运动矢量候选列表。
其中,该参考运动矢量候选列表包括第三运动矢量和第四运动矢量。
基于图像块A所处帧与第一目标参考帧之间的第一时域关系、图像块B所处帧与参考帧S之间的第二时域关系,若第一时域关系与第二时域关系相同,第三运动矢量为第一运动矢量;若第一时域关系与第二时域关系不同,根据第一时域关系和第二时域关系对第一运动矢量进行时域伸缩得到第三运动矢量。
基于图像块A所处帧与第二目标参考帧之间的第三时域关系、图像块B所处帧与参考帧S之间的第二时域关系,若第三时域关系与第二时域关系相同,第四运动矢量为第二运动矢量;若第三时域关系与第二时域关系不同,根据第三时域关系和第二时域关系对第二运动矢量进行时域伸缩得到第四运动矢量。
例如,图像块A所处帧与第一目标参考帧之间的第一时域关系为间隔K帧(即图像块A所处帧与第一目标参考帧之间的差值,K帧可以为正值或者负值),图像块B所处帧与参考帧S之间的第二时域关系为间隔L帧。若K与L相同,则说明第一时域关系与第二时域关系相同;若K与L不同,则说明第一时域关系与第二时域关系不同。在第一时域关系与第二时域关系不同时,假设第一运动矢量记为Xa和Ya,对第一运动矢量进行时域伸缩后得到的第三运动矢量记为Xb和Yb,则Xb=(Xa*L)/K,Yb=(Ya*L)/K。此外,对第二运动矢量进行时域伸缩得到第四运动矢量的处理方式类似,在此不再赘述。
例如,若图像块A所处帧为POC=4,图像块B所处帧为POC=4,第一目标参考帧为POC=8,参考帧S为POC=8,由于第一时域关系(即K为-4)与第二时域关系(即L为-4)相同,因此,第三运动矢量为第一运动矢量。
若图像块A所处帧为POC=4,图像块B所处帧为POC=5,第一目标参考帧为POC=7,参考帧S为POC=8,由于第一时域关系(即K为-3)与第二时域关系(即L为-3)相同,因此,第三运动矢量为第一运动矢量。
若图像块A所处帧为POC=4,图像块B所处帧为POC=4,第一目标参考帧为POC=8,参考帧S为POC=10,由于第一时域关系(即K为-4)与第二时域关系(即L为-6)不同,因此,根据第一时域关系和第二时域关系,对第一运动矢量进行时域伸缩,将时域伸缩后的运动矢量确定为第三运动矢量。
若图像块A所处帧为POC=4,图像块B所处帧为POC=4,第二目标参考帧为POC=10,参考帧S为POC=8,由于第三时域关系(即K为-6)与第二时域关系(即L为-4)不同,因此,根据第三时域关系和第二时域关系,对第二运动矢量进行时域伸缩,将时域伸缩后的运动矢量确定为第四运动矢量。
情况2、构建与图像块B对应的参考帧列表,针对参考帧列表中的每个参考帧(后续记为参考帧S),根据第一目标参考帧、第一运动矢量、第二目标参考帧、第二运动矢量,构建与参考帧S对应的参考运动矢量候选列表。
其中,该参考运动矢量候选列表包括第三运动矢量或者第四运动矢量。
基于图像块A所处帧与第一目标参考帧之间的第一时域关系、图像块B所处帧与参考帧S之间的第二时域关系,若第一时域关系与第二时域关系相同,第三运动矢量为第一运动矢量;若第一时域关系与第二时域关系不同,根据第一时域关系和第二时域关系对第一运动矢量进行时域伸缩得到第三运动矢量。
基于图像块A所处帧与第二目标参考帧之间的第三时域关系、图像块B所处帧与参考帧S之间的第二时域关系,若第三时域关系与第二时域关系相同,第四运动矢量为第二运动矢量;若第三时域关系与第二时域关系不同,根据第三时域关系和第二时域关系对第二运动矢量进行时域伸缩得到第四运动矢量。
其中,情况2与情况1不同的是,在情况1中,是将第三运动矢量和第四运动矢量均添加到参考帧S对应的参考运动矢量候选列表,在情况2中,是将第三运动矢量或者第四运动矢量添加到参考帧S对应的参考运动矢量候选列表。
例如,若图像块A所处帧为POC=4,图像块B所处帧为POC=4,第一目标参考帧为POC=8,参考帧S为POC=8,即第一目标参考帧与参考帧S相同,因此,将第一目标参考帧对应的第三运动矢量添加到参考帧S对应的参考运动矢量候选列表,不将第四运动矢量添加到参考帧S对应的参考运动矢量候选列表。
若图像块A所处帧为POC=4,图像块B所处帧为POC=4,第二目标参考帧为POC=0,参考帧S为POC=0,即第二目标参考帧与参考帧S相同,因此,将第二目标参考帧对应的第四运动矢量添加到参考帧S对应的参考运动矢量候选列表,不将第三运动矢量添加到参考帧S对应的参考运动矢量候选列表。
若图像块A所处帧为POC=4,图像块B所处帧为POC=4,第一目标参考帧为POC=8,第二目标参考帧为POC=0,参考帧S为POC=6,则可以将第三运动矢量或者第四运动矢量添加到参考帧S对应的参考运动矢量候选列表。
情况3、构建与图像块B对应的参考帧列表1和参考帧列表2,针对参考帧列表1中的每个参考帧(后续记为参考帧S),根据第一目标参考帧和第一运动矢量,构建与参考帧S对应的参考运动矢量候选列表1。针对参考帧列表2中的每个参考帧(后续记为参考帧T),根据第二目标参考帧和第二运动矢量,构建与参考帧T对应的参考运动矢量候选列表2。其中,参考运动矢量候选列表1可以包括第三运动矢量,参考运动矢量候选列表2可以包括第四运动矢量。
基于图像块A所处帧与第一目标参考帧之间的第一时域关系、图像块B所处帧与参考帧S之间的第二时域关系,若第一时域关系与第二时域关系相同,第三运动矢量为第一运动矢量;若第一时域关系与第二时域关系不同,根据第一时域关系和第二时域关系对第一运动矢量进行时域伸缩得到第三运动矢量。
基于图像块A所处帧与第二目标参考帧之间的第三时域关系、图像块B所处帧与参考帧T之间的第四时域关系,若第三时域关系与第四时域关系相同,第四运动矢量为第二运动矢量;若第三时域关系与第四时域关系不同,根据第三时域关系和第四时域关系对第二运动矢量进行时域伸缩得到第四运动矢量。
例如,第一时域关系为间隔K帧,第二时域关系为间隔L帧。若K与L相同,则说明第一时域关系与第二时域关系相同;若K与L不同,则说明第一时域关系与第二时域关系不同。在第一时域关系与第二时域关系不同时,假设第一运动矢量记为Xa和Ya,对第一运动矢量进行时域伸缩后得到的第三运动矢量记为Xb和Yb,则Xb=(Xa*L)/K,Yb=(Ya*L)/K。此外,对第二运动矢量进行时域伸缩得到第四运动矢量的处理方式类似,在此不再赘述。
例如,若图像块A所处帧为POC=4,图像块B所处帧为POC=4,第一目标参考帧为POC=8,参考帧S为POC=8,由于第一时域关系(即K为-4)与第二时域关系(即L为-4)相同,因此,第三运动矢量为第一运动矢量。
若图像块A所处帧为POC=4,图像块B所处帧为POC=4,第一目标参考帧为POC=8,参考帧S为POC=10,由于第一时域关系(即K为-4)与第二时域关系(即L为-6)不同,因此,根据第一时域关系和第二时域关系,对第一运动矢量进行时域伸缩,将时域伸缩后的运动矢量确定为第三运动矢量。
若图像块A所处帧为POC=4,图像块B所处帧为POC=4,第二目标参考帧为POC=10,参考帧T为POC=8,由于第三时域关系(即K为-6)与第四时域关系(即L为-4帧)不同,因此,根据第三时域关系和第四时域关系,对第二运动矢量进行时域伸缩,将时域伸缩后的运动矢量确定为第四运动矢量。
综上所述,在上述实施例中,将多假设运动矢量加入普通帧间预测模式(一般指AMVP模式)的参考运动矢量候选列表中,可行的添加方式为:
将多假设运动矢量作为另一个List(多假设块本身单向运动指向List0,则另一个List为List1,反之亦然)的运动矢量,在时域伸缩后加入另一个List的参考运动矢量候选列表。或者,将多假设运动矢量作为同一个List(多假设块本身单向运动指向List0,则同一List为List0,反之亦然)的运动矢量,在时域伸缩后加入同一个List的参考运动矢量候选列表。或者,将多假设运动矢量作为一个List的运动矢量,在时域伸缩后加入到该List的参考运动矢量候选列表。
实施例10:参见图4所示,为本申请实施例中提出的编解码方法的流程示意图,该编解码方法可以应用于解码端/编码端,该方法可以包括以下步骤:
步骤401,从第一参考帧列表中选择第一目标参考帧,从第二参考帧列表中选择第二目标参考帧,根据第一参考帧列表和第二参考帧列表构建第三参考帧列表;其中,第三参考帧列表不包括第一目标参考帧和/或第二目标参考帧。
在一个例子中,第三参考帧列表不包括第一目标参考帧和/或第二目标参考帧,可以包括但不限于:第三参考帧列表包括第一参考帧列表中的至少一个参考帧,但是,不包括第一目标参考帧;第三参考帧列表包括第二参考帧列表中的至少一个参考帧。或者,第三参考帧列表包括第一参考帧列表中的至少一个参考帧;第三参考帧列表包括第二参考帧列表中的至少一个参考帧,但是,不包括第二目标参考帧。或者,第三参考帧列表包括第一参考帧列表中的至少一个参考帧,但是,不包括第一目标参考帧;第三参考帧列表包括第二参考帧列表中的至少一个参考帧,但是,不包括第二目标参考帧。
进一步的,第三参考帧列表包括第一参考帧列表中的至少一个参考帧,可以理解为,第一参考帧列表的全部参考帧或者部分参考帧。
第三参考帧列表包括第二参考帧列表中的至少一个参考帧,可以理解为,第二参考帧列表的全部参考帧或者部分参考帧。
在一个例子中,第三参考帧列表包括第一参考帧列表中除第一目标参考帧之外的其它参考帧、第二参考帧列表中的所有参考帧。或第三参考帧列表包括第二参考帧列表中除第二目标参考帧之外的其它参考帧、第一参考帧列表中的所有参考帧。或第三参考帧列表包括第一参考帧列表中除第一目标参考帧之外的其它参考帧以及第二参考帧列表中除第二目标参考帧之外的其它参考帧。
步骤402,从第三参考帧列表中选择第三目标参考帧。
步骤403,根据第一目标参考帧确定第一预测像素,根据第二目标参考帧确定第二预测像素,并根据第三目标参考帧确定第三预测像素。
步骤404,对该第一预测像素、该第二预测像素和该第三预测像素进行加权处理,得到目标预测像素。
步骤405,根据目标预测像素对图像块进行编码处理或者解码处理。
在上述实施例1-实施例9中,是对两个预测像素进行加权处理,得到目标预测像素,本实施例中,可以对三个预测像素进行加权处理,得到目标预测像素。具体的,在采用多假设预测模式时,可以根据图像块的两个参考帧列表构建第三参考帧列表,这两个参考帧列表分别为第一参考帧列表和第二参考帧列表,第一参考帧列表和第二参考帧列表可以参见上述实施例,在此不再赘述。
然后,可以从第一参考帧列表中选择第一目标参考帧,并从第二参考帧列表中选择第二目标参考帧,具体选择方式参见上述实施例,在此不再赘述。
然后,在根据第一参考帧列表和第二参考帧列表构建第三参考帧列表时,第三参考帧列表包括第一参考帧列表中除第一目标参考帧之外的其它参考帧以及第二参考帧列表中除第二目标参考帧之外的其它参考帧,也就是说,除了第一目标参考帧和第二目标参考帧,第三参考帧列表包括剩余的参考帧。
例如,第一参考帧列表包括[8 4 0],第二参考帧列表包括[20 16],第一参考帧列表中的参考帧8为第一目标参考帧,第二参考帧列表中的参考帧16为第二目标参考帧,则可以基于第一参考帧列表和第二参考帧列表构建第三参考帧列表,且该第三参考帧列表不包括第一参考帧列表中的参考帧8,也不包括第二参考帧列表中的参考帧16,因此,第三参考帧列表可以包括[4 0 20]。
然后,从第三参考帧列表中选择第三目标参考帧,具体选择方式参见上述实施例,在此不再赘述。进一步的,可以根据第一目标参考帧确定第一预测像素,根据第二目标参考帧确定第二预测像素,并根据第三目标参考帧确定第三预测像素,并对该第一预测像素、该第二预测像素和该第三预测像素进行加权处理,得到目标预测像素,具体实现方式参见上述实施例,在此不再赘述。
然后,针对编码端,编码端可以根据目标预测像素对图像块进行编码处理。针对解码端,解码端可以根据目标预测像素对图像块进行解码处理。
综上所述,在采用多假设帧间预测技术的应用场景下,可以基于第一参考帧列表中的第一目标参考帧、第二参考帧列表中的第二目标参考帧、第三参考帧列表中的第三目标参考帧进行加权处理,从而实现对双向块进行多假设预测,即在第一参考帧列表和第二参考帧列表的基础上,叠加第三参考帧列表中的第三目标参考帧进行加权处理,从而增加多假设预测的应用场景。
实施例11:
本申请实施例提供的解码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图5所示。包括:处理器51和机器可读存储介质52,其中:所述机器可读存储介质52存储有能够被所述处理器51执行的机器可执行指令;所述处理器51用于执行机器可执行指令,以实现本申请上述示例公开的方法。
本申请实施例提供的编码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图6所示。包括:处理器61和机器可读存储介质62,其中:所述机器可读存储介质62存储有能够被所述处理器61执行的机器可执行指令;所述处理器61用于执行机器可执行指令,以实现本申请上述示例公开的方法。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的方法。
其中,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
基于与上述方法同样的申请构思,本申请实施例还提供一种编解码装置,所述编解码装置可以应用于编码端或者解码端,所述装置包括:
构建模块,用于根据图像块的两个参考帧列表构建第三参考帧列表;其中,所述第三参考帧列表中的参考帧包括第一参考帧列表中的参考帧但不包括第二参考帧列表中的至少一个参考帧,所述第一参考帧列表为所述两个参考帧列表中的其中一个,所述第二参考帧列表为所述两个参考帧列表中的另一个;
选择模块,用于从所述第一参考帧列表中选择第一目标参考帧,并从所述第三参考帧列表中选择第二目标参考帧;
确定模块,用于根据所述第一目标参考帧确定第一预测像素,并根据所述第二目标参考帧确定第二预测像素;以及,对所述第一预测像素和所述第二预测像素进行加权处理,得到目标预测像素;
处理模块,用于根据所述目标预测像素对所述图像块进行编码处理或者解码处理。
基于与上述方法同样的申请构思,本申请实施例还提供一种编解码装置,所述编解码装置可以应用于编码端或者解码端,所述装置包括:
选择模块,用于从第一参考帧列表中选择第一目标参考帧,从第二参考帧列表中选择第二目标参考帧;
构建模块,用于根据第一参考帧列表和第二参考帧列表构建第三参考帧列表;所述第三参考帧列表包括所述第一参考帧列表中除第一目标参考帧之外的其它参考帧以及所述第二参考帧列表中除第二目标参考帧之外的其它参考帧;
所述选择模块,还用于从所述第三参考帧列表中选择第三目标参考帧;
确定模块,用于根据所述第一目标参考帧确定第一预测像素,根据所述第二目标参考帧确定第二预测像素,根据所述第三目标参考帧确定第三预测像素;对所述第一预测像素、所述第二预测像素和所述第三预测像素进行加权处理,得到目标预测像素;
处理模块,用于根据所述目标预测像素对所述图像块进行编码处理或者解码处理。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (21)
1.一种编解码方法,其特征在于,所述方法包括:
根据图像块的两个参考帧列表构建第三参考帧列表;其中,所述第三参考帧列表中的参考帧包括第一参考帧列表中的参考帧但不包括第二参考帧列表中的至少一个参考帧,所述第一参考帧列表为所述两个参考帧列表中的其中一个,所述第二参考帧列表为所述两个参考帧列表中的另一个;
从所述第一参考帧列表中选择第一目标参考帧,根据所述第一目标参考帧确定第一预测像素;
从所述第三参考帧列表中选择第二目标参考帧,根据所述第二目标参考帧确定第二预测像素;
对所述第一预测像素和所述第二预测像素进行加权处理,得到目标预测像素;
根据所述目标预测像素对所述图像块进行编码处理或者解码处理。
2.根据权利要求1所述的方法,其特征在于,
所述两个参考帧列表为参考帧互不相同的两个参考帧列表;
所述根据图像块的两个参考帧列表构建第三参考帧列表之前,还包括:
获取所述图像块的两个初始参考帧列表;对所述两个初始参考帧列表进行去重处理,得到参考帧互不相同的所述两个参考帧列表。
3.根据权利要求2所述的方法,其特征在于,所述对所述两个初始参考帧列表进行去重处理,得到参考帧互不相同的所述两个参考帧列表,包括:
保持一个初始参考帧列表中的参考帧不变,将另一个初始参考帧列表中重复的参考帧去除,得到参考帧互不相同的所述两个参考帧列表。
4.根据权利要求1-3任一项所述的方法,其特征在于,
所述根据图像块的两个参考帧列表构建第三参考帧列表,包括:
针对所述第一参考帧列表中的任意一个第一参考帧,构建与所述第一参考帧对应的第三参考帧列表;其中,所述第三参考帧列表中包括从所述第一参考帧列表中选择的一个或者多个参考帧。
5.根据权利要求4所述的方法,其特征在于,所述第三参考帧列表中的参考帧不包括只存在于所述第二参考帧列表中的至少一个参考帧。
6.根据权利要求4所述的方法,其特征在于,
针对所述第一参考帧列表中的第一参考帧、所述第一参考帧列表中不同于所述第一参考帧的第二参考帧,所述第一参考帧对应的第三参考帧列表中的参考帧,与所述第二参考帧对应的第三参考帧列表中的参考帧,不完全相同。
7.根据权利要求4所述的方法,其特征在于,
针对所述第一参考帧列表中的第一参考帧,所述第一参考帧对应的第三参考帧列表包括所述第一参考帧;或,未包括所述第一参考帧。
8.根据权利要求4所述的方法,其特征在于,针对所述第一参考帧列表中的第一参考帧,所述第一参考帧对应的第三参考帧列表包括:所述第一参考帧列表中位于所述第一参考帧后面的参考帧;或者,所述第一参考帧列表中位于所述第一参考帧前面的参考帧以及位于所述第一参考帧后面的参考帧。
9.根据权利要求1所述的方法,其特征在于,
根据图像块的两个参考帧列表构建第三参考帧列表之后,所述方法还包括:
遍历所述第一参考帧列表和所述第三参考帧列表中所有用于进行加权的参考帧组合;若存在任意两个参考帧组合重复,则去除重复的一个参考帧组合。
10.根据权利要求1所述的方法,其特征在于,
所述根据图像块的两个参考帧列表构建第三参考帧列表,包括:
若根据指示信息确定需要对所述图像块启用多假设预测,则根据所述图像块的两个参考帧列表构建第三参考帧列表。
11.根据权利要求1所述的方法,其特征在于,
所述从所述第三参考帧列表中选择第二目标参考帧,包括:
从所述第一目标参考帧对应的第三参考帧列表中选择所述第二目标参考帧。
12.根据权利要求1所述的方法,其特征在于,
所述根据所述第一目标参考帧确定第一预测像素,包括:根据所述第一目标参考帧确定第一运动矢量,根据所述第一运动矢量确定所述第一预测像素;
所述根据所述第二目标参考帧确定第二预测像素,包括:根据所述第二目标参考帧确定第二运动矢量,根据所述第二运动矢量确定所述第二预测像素。
13.根据权利要求12所述的方法,其特征在于,
所述根据所述第一目标参考帧确定第一运动矢量,包括:获取与所述第一目标参考帧对应的第一运动矢量列表,并从所述第一运动矢量列表的运动矢量中选择一个运动矢量,将选择的运动矢量确定为所述第一运动矢量。
14.根据权利要求12所述的方法,其特征在于,
所述根据所述第二目标参考帧确定第二运动矢量,包括:获取与所述第二目标参考帧对应的第二运动矢量列表,并从所述第二运动矢量列表的运动矢量中选择一个运动矢量,将选择的运动矢量确定为所述第二运动矢量;或者,
根据所述第一目标参考帧与所述图像块所处的当前帧之间的时域关系、所述第二目标参考帧与所述图像块所处的当前帧之间的时域关系,对初始运动矢量进行时域伸缩,将时域伸缩后的运动矢量确定为第二运动矢量;
其中,所述初始运动矢量为所述第一运动矢量,或者,所述初始运动矢量为基于所述第一运动矢量和运动信息差值确定的。
15.根据权利要求1所述的方法,其特征在于,
所述根据所述第一目标参考帧确定第一预测像素,包括:
获取与所述第一目标参考帧对应的仿射控制点候选列表,并从所述仿射控制点候选列表中选择一个控制点模型,将选择的控制点模型确定为单向控制点模型,并根据所述单向控制点模型确定所述第一预测像素。
16.根据权利要求1所述的方法,其特征在于,
所述图像块所处的当前帧为B帧。
17.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述第一预测像素对应的第一运动信息存储;
将所述第二预测像素对应的第二运动信息存储。
18.根据权利要求17所述的方法,其特征在于,
当所述图像块作为其它图像块的参考块时,所述方法还包括:
根据存储的所述第一运动信息和所述第二运动信息,构建所述其它图像块对应的运动信息候选列表或者参考运动矢量候选列表。
19.一种编解码方法,其特征在于,所述方法包括:
从第一参考帧列表中选择第一目标参考帧,从第二参考帧列表中选择第二目标参考帧,根据第一参考帧列表和第二参考帧列表构建第三参考帧列表;所述第三参考帧列表不包括所述第一目标参考帧和/或所述第二目标参考帧;
从所述第三参考帧列表中选择第三目标参考帧;
根据所述第一目标参考帧确定第一预测像素,根据所述第二目标参考帧确定第二预测像素,根据所述第三目标参考帧确定第三预测像素;
对所述第一预测像素、所述第二预测像素和所述第三预测像素进行加权处理,得到目标预测像素;
根据所述目标预测像素对所述图像块进行编码处理或者解码处理。
20.一种解码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现权利要求1-19任一所述的方法步骤。
21.一种编码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现权利要求1-19任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910092345.7A CN111510726B (zh) | 2019-01-30 | 2019-01-30 | 一种编解码方法及其设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910092345.7A CN111510726B (zh) | 2019-01-30 | 2019-01-30 | 一种编解码方法及其设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111510726A true CN111510726A (zh) | 2020-08-07 |
CN111510726B CN111510726B (zh) | 2023-01-24 |
Family
ID=71877274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910092345.7A Active CN111510726B (zh) | 2019-01-30 | 2019-01-30 | 一种编解码方法及其设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111510726B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114339216A (zh) * | 2020-10-10 | 2022-04-12 | 阿里巴巴集团控股有限公司 | 视频处理方法、装置、电子设备及存储介质 |
CN114598889A (zh) * | 2020-12-03 | 2022-06-07 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置及其设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102547265A (zh) * | 2010-12-28 | 2012-07-04 | 深圳市融创天下科技股份有限公司 | 一种帧间预测方法、装置 |
EP2840793A4 (en) * | 2012-04-15 | 2016-01-27 | Samsung Electronics Co Ltd | METHOD AND APPARATUS FOR DETERMINING REFERENCE IMAGES FOR INTER-PREDICTION |
WO2017036417A1 (en) * | 2015-09-06 | 2017-03-09 | Mediatek Inc. | Method and apparatus of adaptive inter prediction in video coding |
-
2019
- 2019-01-30 CN CN201910092345.7A patent/CN111510726B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102547265A (zh) * | 2010-12-28 | 2012-07-04 | 深圳市融创天下科技股份有限公司 | 一种帧间预测方法、装置 |
EP2840793A4 (en) * | 2012-04-15 | 2016-01-27 | Samsung Electronics Co Ltd | METHOD AND APPARATUS FOR DETERMINING REFERENCE IMAGES FOR INTER-PREDICTION |
WO2017036417A1 (en) * | 2015-09-06 | 2017-03-09 | Mediatek Inc. | Method and apparatus of adaptive inter prediction in video coding |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114339216A (zh) * | 2020-10-10 | 2022-04-12 | 阿里巴巴集团控股有限公司 | 视频处理方法、装置、电子设备及存储介质 |
CN114598889A (zh) * | 2020-12-03 | 2022-06-07 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置及其设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111510726B (zh) | 2023-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112565781B (zh) | 一种编解码方法及其设备 | |
CN110225346A (zh) | 一种编解码方法及其设备 | |
CN111510726B (zh) | 一种编解码方法及其设备 | |
CN112449180B (zh) | 一种编解码方法、装置及其设备 | |
CN114710664B (zh) | 一种解码、编码方法、装置及其设备 | |
CN114710665B (zh) | 一种解码、编码方法、装置及其设备 | |
CN114710663B (zh) | 一种解码、编码方法、装置及其设备 | |
CN112543322B (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 |