CN112118451A - 一种编解码方法、装置及其设备 - Google Patents
一种编解码方法、装置及其设备 Download PDFInfo
- Publication number
- CN112118451A CN112118451A CN201910538918.4A CN201910538918A CN112118451A CN 112118451 A CN112118451 A CN 112118451A CN 201910538918 A CN201910538918 A CN 201910538918A CN 112118451 A CN112118451 A CN 112118451A
- Authority
- CN
- China
- Prior art keywords
- block
- block vector
- vector
- information list
- candidate information
- 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
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
- 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/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请提供一种编解码方法、装置及其设备,该方法包括:若针对当前块开启帧内块复制,则构建与所述当前块对应的块矢量候选信息列表,所述块矢量候选信息列表包括至少一个指定类型块矢量;所述指定类型块矢量包括默认块矢量和/或变形块矢量,所述变形块矢量是对候选块矢量叠加偏移值后得到的;所述候选块矢量是所述当前块的空域相邻块的块矢量,或者,当前块对应的HMVP列表中的历史块矢量;或者,已添加进块矢量候选信息列表中的块矢量;根据所述块矢量候选信息列表对所述当前块进行编码或者解码。通过本申请技术方案,可以提高编码性能。
Description
技术领域
本申请涉及编解码技术领域,尤其是涉及一种编解码方法、装置及其设备。
背景技术
为了达到节约空间的目的,视频图像都是经过编码后才传输的,完整的视频编码方法可以包括预测、变换、量化、熵编码、滤波等过程。预测编码包括帧内编码和帧间编码,帧间编码是利用视频时间域的相关性,使用邻近已编码图像的像素预测当前块的像素,从而达到有效去除视频时域冗余的目的。在帧间编码中,可以使用运动矢量(Motion Vector,MV)表示当前帧的当前块与参考帧的参考块之间的相对位移。例如,当前帧的图像A与参考帧的图像B存在很强的时域相关性,在传输图像A的图像块A1(当前块)时,在图像B中进行运动搜索,找到与图像块A1最匹配的图像块B1(即参考块),确定图像块A1与图像块B1的相对位移,该相对位移就是图像块A1的运动矢量。
目前,相关标准中提出了帧内块复制(Intra block Copy)技术,帧内块复制技术是使用块矢量进行运动补偿。与运动矢量不同的是,块矢量表示当前块与当前帧已编码块中最佳匹配块之间的相对位移。基于同一帧内存在大量重复纹理这一特性,在采用块矢量获取当前块的预测值时,能够显著提升压缩效率。但是,现有技术中,为当前块的块矢量候选信息列表填充的块矢量可能是无效块矢量,从而导致编码效果并不理想,存在编码性能差等问题。
发明内容
本申请提供一种编解码方法、装置及其设备,可以提高编码性能。
本申请提供一种编解码方法,所述方法包括:
若针对当前块开启帧内块复制,则构建与所述当前块对应的块矢量候选信息列表,所述块矢量候选信息列表包括至少一个指定类型块矢量;所述指定类型块矢量包括默认块矢量和/或变形块矢量,所述变形块矢量是对候选块矢量叠加偏移值后得到的;所述候选块矢量是所述当前块的空域相邻块的块矢量,或者,当前块对应的HMVP列表中的历史块矢量;或者,已添加进块矢量候选信息列表中的块矢量;
根据所述块矢量候选信息列表对所述当前块进行编码或者解码。
本申请提供一种编解码方法,所述方法包括:
若针对当前块开启帧内块复制,则获取与所述当前块对应的目标块矢量;
根据所述目标块矢量获取所述当前块的预测值。
本申请提供一种编解码装置,所述装置包括:
构建模块,用于若针对当前块开启帧内块复制,构建与所述当前块对应的块矢量候选信息列表,所述块矢量候选信息列表包括至少一个指定类型块矢量;所述指定类型块矢量包括默认块矢量和/或变形块矢量,所述变形块矢量是对候选块矢量叠加偏移值后得到的;所述候选块矢量是所述当前块的空域相邻块的块矢量,或者,当前块对应的HMVP列表中的历史块矢量;或者,已添加进块矢量候选信息列表中的块矢量;
编解码模块,用于根据所述块矢量候选信息列表对当前块进行编码或解码。
本申请提供一种编解码装置,所述装置包括:
获取模块,用于若针对当前块开启帧内块复制,则获取与所述当前块对应的目标块矢量;
编解码模块,用于根据所述目标块矢量获取所述当前块的预测值。
本申请提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
若针对当前块开启帧内块复制,则构建与所述当前块对应的块矢量候选信息列表,所述块矢量候选信息列表包括至少一个指定类型块矢量;所述指定类型块矢量包括默认块矢量和/或变形块矢量,所述变形块矢量是对候选块矢量叠加偏移值后得到的;所述候选块矢量是所述当前块的空域相邻块的块矢量,或者,当前块对应的HMVP列表中的历史块矢量;或者,已添加进块矢量候选信息列表中的块矢量;根据所述块矢量候选信息列表对所述当前块进行解码;或者,若针对当前块开启帧内块复制,则获取与所述当前块对应的目标块矢量;根据所述目标块矢量获取所述当前块的预测值。
本申请提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
若针对当前块开启帧内块复制,则构建与所述当前块对应的块矢量候选信息列表,所述块矢量候选信息列表包括至少一个指定类型块矢量;所述指定类型块矢量包括默认块矢量和/或变形块矢量,所述变形块矢量是对候选块矢量叠加偏移值后得到的;所述候选块矢量是所述当前块的空域相邻块的块矢量,或者,当前块对应的HMVP列表中的历史块矢量;或者,已添加进块矢量候选信息列表中的块矢量;根据所述块矢量候选信息列表对所述当前块进行编码;或者,若针对当前块开启帧内块复制,则获取与所述当前块对应的目标块矢量;根据所述目标块矢量获取所述当前块的预测值。
由以上技术方案可见,本申请实施例中,若针对当前块开启帧内块复制,则在为当前块构建块矢量候选信息列表时,该块矢量候选信息列表可以包括指定类型块矢量,从而可以丰富块矢量的类型。在从块矢量候选信息列表中选择目标块矢量后,目标块矢量的编码效果比较理想,能够提高编码性能。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
图1是本申请一种实施方式中的视频编码框架的示意图;
图2是本申请一种实施方式中的编解码方法的流程图;
图3是本申请一种实施方式中的编解码方法的流程图;
图4是本申请一种实施方式中的当前块对应的空域相邻块示意图;
图5是本申请一种实施方式中的编解码方法的流程图;
图6是本申请一种实施方式中的编解码方法的流程图;
图7是本申请一种实施方式中的编解码装置的结构图;
图8是本申请一种实施方式中的编解码装置的结构图;
图9是本申请一种实施方式中的解码端设备的硬件结构图;
图10是本申请一种实施方式中的编码端设备的硬件结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例中提出一种编解码方法,该编解码方法可以涉及如下概念:
帧内预测与帧间预测(intra prediction and inter prediction)技术:帧内预测是指,可以利用当前图像块的空域相邻图像块(即与当前图像块处于同一帧图像)的重建像素值进行预测编码。帧间预测是指,利用当前图像块的时域相邻图像块(与当前块处于不同帧图像)的重建像素值进行预测编码,帧间预测是利用视频时域的相关性,由于视频序列包含较强的时域相关性,使用邻近已编码图像像素预测当前图像的像素,达到有效去除视频时域冗余的目的。
运动矢量(Motion Vector,MV):在帧间编码中,使用运动矢量表示当前帧视频图像的当前块与参考帧视频图像的参考块之间的相对位移,例如,当前帧的视频图像A与参考帧的视频图像B存在很强的时域相关性,在传输视频图像A的图像块A1(当前块)时,可以在视频图像B中进行运动搜索,找到与图像块A1最匹配的图像块B1(参考块),确定图像块A1与图像块B1之间的相对位移,该相对位移也就是图像块A1的运动矢量。每个划分的图像块都有相应的运动矢量传送到解码端,如果对每个图像块的运动矢量进行独立编码和传输,特别是划分成小尺寸的大量图像块,则消耗相当多的比特。为降低用于编码运动矢量的比特数,可以利用相邻图像块之间的空间相关性,根据相邻已编码图像块的运动矢量对当前待编码图像块的运动矢量进行预测,对预测差进行编码,可以有效降低表示运动矢量的比特数。
示例性的,在对当前图像块的运动矢量编码过程中,可以先使用相邻已编码图像块的运动矢量预测当前宏块的运动矢量,然后对该运动矢量的预测值(MVP,Motion VectorPrediction)与运动矢量的真正估值之间的差值(MVD,MotionVector Difference)进行编码,从而有效降低运动矢量的编码比特数。
块矢量(Block Vector,BV):块矢量应用在帧内块复制(Intra block Copy)技术中,帧内块复制技术也可以被称为帧内块匹配技术。与运动矢量不同的是,块矢量表示当前块与当前帧已编码块中的最佳匹配块之间的相对位移。
示例性的,在HEVC(High Efficiency Video Coding,高效率视频编码)的屏幕内容编码(Screen Content Coding)扩展标准中,帧内块复制技术被提出,帧内块复制技术是使用块矢量获取当前块的预测值。基于屏幕内容中同一帧内存在大量重复出现的纹理这一特性,在采用块矢量获取当前块的预测值时,能够显著的提升屏幕内容序列的压缩效率。随之,在VVC(Versatile Video Coding,通用视频编码)标准制定期间,帧内块复制技术再次被采纳。
率失真原则(Rate-Distortion Optimized):评价编码效率的有两大指标:码率和PSNR(Peak Signal to Noise Ratio,峰值信噪比),比特流越小,则压缩率越大,PSNR越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:J(mode)=D+λ*R,示例性的,D表示Distortion(失真),通常可以使用SSE指标来进行衡量,SSE是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。
视频编码框架:参见图1所示,为视频编码框架的示意图,可以使用视频编码框架实现本申请实施例的编码端处理流程,视频解码框架的示意图与图1类似,在此不再赘述,可以使用视频解码框架实现本申请实施例的解码端处理流程。在视频编码框架和视频解码框架中,可以包括帧内预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端处理流程,在解码端,通过这些模块之间的配合,可以实现解码端处理流程。
现有技术中,为当前块的块矢量候选信息列表填充的块矢量可能是无效块矢量,从而导致编码效果不理想,存在编码性能差等问题。例如,为当前块的块矢量候选信息列表填充的缺省块矢量是无效零矢量,该无效零矢量代表的参考块与当前块重合,因此,这个块矢量是个无效块矢量。示例性的,块矢量候选信息列表用于更好的表达当前块的块矢量信息,即使不选择块矢量候选信息列表中的某个块矢量(如无效零矢量),该块矢量的存在也会影响最终的编码结果。例如,在块矢量候选信息列表前面均添加无效块矢量,从第三位开始才添加有效块矢量,恰好当前块的目标块矢量与第三位的块矢量一致,这样需要编码的索引值就是3,从而影响编码目标块矢量的比特数,编码性能比较差。
针对上述问题,本申请实施例中,在为当前块构建块矢量候选信息列表时,该块矢量候选信息列表可以包括指定类型块矢量,从而丰富块矢量的类型。在从块矢量候选信息列表中选择目标块矢量后,目标块矢量的编码效果比较理想,能够提高编码性能。例如,为当前块的块矢量候选信息列表填充的块矢量不是无效块矢量,均是有效块矢量,使得块矢量候选信息列表更好的表达当前块的块矢量信息,每个块矢量的存在不会影响最终的编码结果。
以下结合几个具体实施例,对本申请实施例的编解码方法进行说明。
实施例1:参见图2所示,为本申请实施例的编解码方法的流程示意图,该方法可以应用于解码端或者编码端,该方法可以包括以下步骤:
步骤201,若针对当前块开启帧内块复制,则构建与当前块对应的块矢量候选信息列表,所述块矢量候选信息列表包括至少一个指定类型块矢量。指定类型块矢量可以包括但不限于:默认块矢量,例如,不为零矢量的默认块矢量,当然,默认块矢量也可以为零矢量,对此不做限制。和/或,变形块矢量,变形块矢量可以是对候选块矢量叠加偏移值后得到的。
例如,候选块矢量可以是当前块的空域相邻块的块矢量,或者,候选块矢量可以是当前块对应的HMVP(History-based motion vector prediction,基于历史信息的运动矢量预测)列表中的历史块矢量;或者,候选块矢量可以是已添加进块矢量候选信息列表中的块矢量;或者,候选块矢量是默认块矢量或者其它类型的块矢量,对此候选块矢量不做限制。
示例性的,候选块矢量可以是需要添加到块矢量候选信息列表中的块矢量,在将变形块矢量添加到块矢量候选信息列表时,候选块矢量可能已经添加到块矢量候选信息列表中,也可能还未添加到块矢量候选信息列表中。
示例性的,在将每个块矢量添加到块矢量候选信息列表时,还需要进行查重处理,以使块矢量候选信息列表中不存在重复的块矢量,对此不做限制。
在上述实施例中,默认块矢量可以包括但不限于:与当前块的尺寸有关的默认块矢量;和/或,与当前块的尺寸无关的默认块矢量。与当前块的尺寸有关的默认块矢量可以包括但不限于:(0,-x1*H)、(-x2*W,0)和(-x3*W,-x4*H)中的至少一个块矢量;x1、x2、x3和x4均是任意实数,W是当前块的宽,H是当前块的高。与当前块的尺寸无关的默认块矢量可以包括但不限于:(0,-y1)、(-y2,0)和(-y3,-y4)中的至少一个块矢量;y1、y2、y3和y4均是任意实数。
在上述实施例中,偏移值可以包括但不限于:与当前块的尺寸有关的偏移值;和/或,与当前块的尺寸无关的偏移值。而且,与当前块的尺寸有关的偏移值可以包括但不限于:(0,-X1*H)、(-X2*W,0)和(-X3*W,-X4*H)中的至少一个偏移值;X1、X2、X3和X4均是任意实数,W是当前块的宽,H是当前块的高。与当前块的尺寸无关的偏移值可以包括但不限于:(0,-Y1)、(-Y2,0)和(-Y3,-Y4)中的至少一个偏移值;Y1、Y2、Y3和Y4均是任意实数。
示例性的,块矢量候选信息列表还可以包括HMVP列表中的历史块矢量。在此基础上,指定类型块矢量位于历史块矢量的后面,例如,指定类型块矢量落后于历史块矢量添加进块矢量候选信息列表;或者,指定类型块矢量位于历史块矢量的前面,例如,指定类型块矢量先于历史块矢量添加进块矢量候选信息列表。
示例性的,块矢量候选信息列表还可以包括当前块的空域相邻块的块矢量。在此基础上,指定类型块矢量可以位于所述空域相邻块的块矢量的后面,例如,指定类型块矢量落后于所述空域相邻块的块矢量添加进块矢量候选信息列表;或者,指定类型块矢量可以位于所述空域相邻块的块矢量的前面,例如,指定类型块矢量先于所述空域相邻块的块矢量添加进块矢量候选信息列表。
步骤202,根据块矢量候选信息列表对当前块进行编码或者解码。
针对编码端来说,编码端可以根据块矢量候选信息列表对当前块进行编码;针对解码端来说,解码端可以根据块矢量候选信息列表对当前块进行解码。
示例性的,若编解码方法应用于解码端,且当前块的预测采用合并模式或者跳过模式对当前块进行解码,则块矢量候选信息列表可以为合并模式的块矢量候选信息列表或者跳过模式的块矢量候选信息列表。在此基础上,根据块矢量候选信息列表对当前块进行解码,可以包括:从编码比特流中获取第一指示信息,第一指示信息用于指示目标块矢量在块矢量候选信息列表中的第一索引值;基于第一指示信息,从块矢量候选信息列表中选择与第一索引值对应的块矢量,并将选择的块矢量确定为目标块矢量;根据目标块矢量获取当前块的预测值。
示例性的,若编解码方法应用于解码端,且当前块的预测采用AMVP(AdvancedMotion Vector Prediction,高级运动向量预测)模式对当前块进行解码,则块矢量候选信息列表可以为AMVP模式的块矢量候选信息列表。在此基础上,根据块矢量候选信息列表对当前块进行解码,可以包括但不限于:从编码比特流中获取第二指示信息和块矢量差,第二指示信息用于指示预测块矢量在块矢量候选信息列表中的第二索引值;基于第二指示信息,从块矢量候选信息列表中选择与第二索引值对应的块矢量,并将选择的块矢量确定为预测块矢量;根据预测块矢量和块矢量差确定目标块矢量;根据目标块矢量获取当前块的预测值。
示例性的,若编解码方法应用于编码端,且当前块的预测采用合并模式或者跳过模式对当前块进行编码,则块矢量候选信息列表可以为合并模式的块矢量候选信息列表或者跳过模式的块矢量候选信息列表。在此基础上,根据块矢量候选信息列表对当前块进行编码,可以包括但不限于:针对块矢量候选信息列表中的每个块矢量,采用率失真原则确定所述块矢量对应的率失真代价,并将最小的率失真代价对应的块矢量确定为目标块矢量;根据目标块矢量获取当前块的预测值;然后,向解码端发送编码比特流,编码比特流包括第一指示信息,第一指示信息用于指示目标块矢量在块矢量候选信息列表中的第一索引值。
示例性的,若编解码方法应用于编码端,且当前块的预测采用AMVP模式对当前块进行编码,则块矢量候选信息列表为AMVP模式的块矢量候选信息列表。在此基础上,根据块矢量候选信息列表对当前块进行编码,可以包括:获取当前块的目标块矢量,根据目标块矢量获取当前块的预测值;从块矢量候选信息列表中选择一个块矢量作为预测块矢量,并根据目标块矢量与预测块矢量确定块矢量差;向解码端发送编码比特流,编码比特流包括块矢量差和第二指示信息,第二指示信息用于指示预测块矢量在块矢量候选信息列表中的第二索引值。
由以上技术方案可见,本申请实施例中,若针对当前块开启帧内块复制,则在为当前块构建块矢量候选信息列表时,该块矢量候选信息列表可以包括指定类型块矢量,从而可以丰富块矢量的类型。在从块矢量候选信息列表中选择目标块矢量后,目标块矢量的编码效果比较理想,能够提高编码性能。
实施例2:基于与上述方法同样的申请构思,参见图3所示,为本申请实施例的编解码方法的流程示意图,该方法可以应用于编码端,该方法可以包括:
步骤301,编码端判断当前块是否开启帧内块复制。如果是,则执行步骤302,如果否,则不再采用块矢量对当前块进行编码,对此过程不再赘述。
示例性的,若当前块满足特定条件,则需要编码是否启用的标志位,即,编码比特流中包括标志位,该标志位表示当前块开启帧内块复制,或者,当前块不开启帧内块复制,如标志位为第一标识时,表示当前块开启帧内块复制,标志位为第二标识时,表示当前块不开启帧内块复制。若当前块不满足特定条件,则不需要编码是否启用的标志位;在不需要编码是否启用的标志位时,可以默认当前块不开启帧内块复制,或者,默认当前块开启帧内块复制。
在当前块满足特定条件时,需要判断当前块是否开启帧内块复制,如比较开启帧内块复制时的率失真代价A与不开启帧内块复制时的率失真代价B。若率失真代价A小于率失真代价B,则开启帧内块复制,若率失真代价A大于率失真代价B,则不开启帧内块复制。当然,上述方式只是一个示例,对此不做限制。若当前块开启帧内块复制,则编码比特流中包括标志位,该标志位为第一标识,表示当前块开启帧内块复制;若当前块不开启帧内块复制,则编码比特流中包括标志位,该标志位为第二标识,表示当前块不开启帧内块复制。
为了方便描述,以当前块开启帧内块复制为例,且需要执行步骤302。
示例性的,编码端可以获取当前块对应的至少一个特征信息,并判断当前块对应的至少一个特征信息是否满足帧内块复制开启策略。如果所有特征信息均满足帧内块复制开启策略,则可以确定当前块满足特定条件。如果任一特征信息不满足帧内块复制开启策略,则可以确定当前块不满足特定条件。当前块对应的特征信息可以包括但不限于以下一种或者多种:当前块的帧内块复制模式使能开关、当前块的预测模式信息、当前块的跳过变换量化标记、当前块的尺寸(或形状)。当然,上述只是几个示例,对此不做限制。
步骤302,若针对当前块开启帧内块复制,编码端构建与当前块对应的块矢量候选信息列表,块矢量候选信息列表包括至少一个指定类型块矢量。
示例性的,编码端可以采用合并模式(merge模式)或者跳过模式(skip模式)对当前块进行预测,因此,块矢量候选信息列表可以为合并模式的块矢量候选信息列表或者跳过模式的块矢量候选信息列表。为了方便描述,后续以采用合并模式对当前块进行预测为例,采用跳过模式对当前块进行预测的方式类似,在此不再赘述,即构建当前块对应的合并模式的块矢量候选信息列表。
在构建合并模式的块矢量候选信息列表时,该块矢量候选信息列表可以包括但不限于:当前块的空域相邻块的块矢量、当前块对应的HMVP列表中的历史块矢量、指定类型块矢量。示例性的,指定类型块矢量可以包括但不限于:默认块矢量,如不为零矢量的默认块矢量或者为零矢量的默认块矢量;和/或,变形块矢量,该变形块矢量可以是对候选块矢量叠加偏移值后得到的。
空域相邻块的块矢量是指:参见图4所示,编码端可以收集当前块的空域相邻块A1的块矢量、当前块的空域相邻块B1的块矢量。若空域相邻块A1的块矢量可用,则可以将空域相邻块A1的块矢量添加到块矢量候选信息列表,否则,不将空域相邻块A1的块矢量添加到块矢量候选信息列表。若空域相邻块B1的块矢量可用,则可以将空域相邻块B1的块矢量添加到块矢量候选信息列表,否则,不将空域相邻块B1的块矢量添加到块矢量候选信息列表。
HMVP列表中的历史块矢量是指:在HMVP模式下,需要获取当前块对应的多个块矢量,为区分方便,将HMVP模式的块矢量称为历史块矢量,历史块矢量的数量根据需要确定,对此不做限制。HMVP模式是新一代视频编码标准中采纳的技术,其原理是利用已编码块的块矢量来预测当前块的块矢量。例如,编码端可以为当前块建立一个HMVP列表,该HMVP列表用于保存已编码块的块矢量,例如,HMVP列表用于保存多个已编码块的块矢量,这些块矢量可以称为历史块矢量。HMVP列表中的历史块矢量是不断更新的,针对每个已编码块,在得到该已编码块的块矢量后,编码端均决策是否利用该已编码块的块矢量更新HMVP列表,如果是,则可以利用该已编码块的块矢量更新HMVP列表中的一个历史块矢量。
综上所述,在需要对当前块进行编码时,则编码端可以直接从HMVP列表中获取历史块矢量,并将历史块矢量添加到块矢量候选信息列表。
默认块矢量(即预设块矢量)是指:不为零矢量的默认块矢量或者为零矢量的默认块矢量,可以根据实际需要配置默认块矢量。默认块矢量可以包括与当前块的尺寸有关的默认块矢量;和/或,与当前块的尺寸无关的默认块矢量。
示例性的,与当前块的尺寸有关的默认块矢量,包括但不限于:(0,-x1*H)、(-x2*W,0)和(-x3*W,-x4*H)中的至少一个块矢量;x1、x2、x3和x4均是任意实数,W是当前块的宽,H是当前块的高。例如,x1、x2、x3和x4均是任意实数,或,x1、x2、x3和x4均是不为0的任意实数,或,x1、x2、x3和x4是任意整数,或,x1、x2、x3和x4均是不为0的任意整数。
与当前块的尺寸无关的默认块矢量,可以包括但不限于:(0,-y1)、(-y2,0)和(-y3,-y4)中的至少一个块矢量;y1、y2、y3和y4均是任意实数。例如,y1、y2、y3和y4均是任意实数,或,y1、y2、y3和y4均是不为0的任意实数,或,y1、y2、y3和y4均是任意整数,或,y1、y2、y3和y4均是不为0的任意整数。
示例性的,与当前块的尺寸有关的默认块矢量,包括但不限于:(-aW,0),(0,-AH),(-bW,0),(0,-BH),(-cW,0),(0,-CH),(-dW,0),(0,-DH)。W可以为当前块的宽,H可以为当前块的高。a,A,b,B,c,C,d,D均为整数,如均为不为0的整数。当然,上述只是示例,还可以有其它默认块矢量,对此不做限制。一组可能的取值为:a=1,b=2,c=4,d=8,A=1,B=2,C=4,D=8。另一组可能的取值为:a=2,b=4,c=8,d=16,A=1,B=2,C=4,D=8。
变形块矢量是指:对候选块矢量叠加偏移值后得到的块矢量,候选块矢量可以是当前块的空域相邻块的块矢量,或,当前块对应的HMVP列表中的历史块矢量;或,已添加进块矢量候选信息列表中的块矢量;或,默认块矢量。当然,候选块矢量还可以为其它类型的块矢量,对此不做限制。候选块矢量可以是需要添加到块矢量候选信息列表中的块矢量,在将变形块矢量添加到块矢量候选信息列表时,候选块矢量可能已经添加到块矢量候选信息列表中,也可能还未添加到块矢量候选信息列表中。
偏移值可以包括但不限于:与当前块的尺寸有关的偏移值;和/或,与当前块的尺寸无关的偏移值。与当前块的尺寸有关的偏移值包括:(0,-X1*H)、(-X2*W,0)和(-X3*W,-X4*H)中的至少一个偏移值;X1、X2、X3和X4均是任意实数,W是当前块的宽,H是当前块的高。例如,X1、X2、X3和X4是任意实数,或,X1、X2、X3和X4均是不为0的任意实数,或,X1、X2、X3和X4均是任意整数,或,X1、X2、X3和X4均是不为0的任意整数。
与当前块的尺寸无关的偏移值可以包括:(0,-Y1)、(-Y2,0)和(-Y3,-Y4)中的至少一个偏移值;Y1、Y2、Y3和Y4均是任意实数。例如,Y1、Y2、Y3和Y4均是任意实数,或,Y1、Y2、Y3和Y4均是不为0的任意实数,或,Y1、Y2、Y3和Y4均是任意整数,或,Y1、Y2、Y3和Y4均是不为0的任意整数。
综上所述,块矢量候选信息列表可以包括HMVP列表中的历史块矢量。指定类型块矢量可以位于历史块矢量的后面;或者,指定类型块矢量可以位于历史块矢量的前面。以及,块矢量候选信息列表还可以包括当前块的空域相邻块的块矢量。指定类型块矢量可以位于空域相邻块的块矢量的后面;或者,指定类型块矢量可以位于空域相邻块的块矢量的前面。
示例性的,块矢量候选信息列表可以包括空域相邻块的块矢量、历史块矢量、默认块矢量、变形块矢量。历史块矢量位于空域相邻块的块矢量的后面;变形块矢量位于历史块矢量的后面;默认块矢量位于变形块矢量的后面。
示例性的,块矢量候选信息列表可以包括空域相邻块的块矢量、历史块矢量、默认块矢量、变形块矢量。历史块矢量位于空域相邻块的块矢量的后面;默认块矢量位于历史块矢量的后面;变形块矢量位于默认块矢量的后面。
示例性的,块矢量候选信息列表可以包括空域相邻块的块矢量、历史块矢量、变形块矢量,在此例子中,并未包括默认块矢量。历史块矢量位于空域相邻块的块矢量的后面;变形块矢量位于历史块矢量的后面。
示例性的,块矢量候选信息列表可以包括空域相邻块的块矢量、历史块矢量、默认块矢量,在此例子中,并未包括变形块矢量。历史块矢量位于空域相邻块的块矢量的后面;默认块矢量位于历史块矢量的后面。
在步骤302中,编码端需要构建与当前块对应的块矢量候选信息列表。编码端获取当前块的空域相邻块的块矢量,并将空域相邻块的块矢量添加到块矢量候选信息列表。编码端从HMVP列表中选择历史块矢量,并将历史块矢量添加到块矢量候选信息列表。编码端将每个块矢量(如空域相邻块的块矢量、历史块矢量)添加到块矢量候选信息列表时,需要判断块矢量候选信息列表的列表长度是否达到长度阈值(根据经验配置,对此不做限制,如5、6、7等,后续以6为例);如果否,则将该块矢量添加到块矢量候选信息列表;如果是,则不将该块矢量添加到块矢量候选信息列表,结束块矢量候选信息列表的构建过程,即得到最终的块矢量候选信息列表,且列表长度为6。
在将历史块矢量添加到块矢量候选信息列表后,若块矢量候选信息列表的列表长度仍然未达到长度阈值,则编码端可以获取指定类型块矢量(如默认块矢量和/或变形块矢量),并将指定类型块矢量添加到块矢量候选信息列表。
例如,编码端可以获取至少一个默认块矢量,并将这些默认块矢量添加到块矢量候选信息列表中,最终使得块矢量候选信息列表的列表长度为6。
又例如,编码端可以获取至少一个变形块矢量,并将这些变形块矢量添加到块矢量候选信息列表中,最终使得块矢量候选信息列表的列表长度为6。
又例如,编码端先获取M1个(如1、2等)默认块矢量,并将默认块矢量添加到块矢量候选信息列表;若块矢量候选信息列表的列表长度达到长度阈值6,则结束块矢量候选信息列表的构建过程。若块矢量候选信息列表的列表长度未达到长度阈值6,则获取M2个(如1、2等)变形块矢量,并将变形块矢量添加到块矢量候选信息列表。若块矢量候选信息列表的列表长度达到长度阈值6,则结束块矢量候选信息列表的构建过程。若块矢量候选信息列表的列表长度未达到长度阈值6,则继续获取M3个默认块矢量,并将默认块矢量添加到块矢量候选信息列表,以此类推,一直到块矢量候选信息列表的列表长度为6。
又例如,编码端先获取N1个(如1、2等)变形块矢量,并将变形块矢量添加到块矢量候选信息列表;若块矢量候选信息列表的列表长度达到长度阈值6,则结束块矢量候选信息列表的构建过程。若块矢量候选信息列表的列表长度未达到长度阈值6,则获取N2个(如1、2等)默认块矢量,并将默认块矢量添加到块矢量候选信息列表。若块矢量候选信息列表的列表长度达到长度阈值6,则结束块矢量候选信息列表的构建过程。若块矢量候选信息列表的列表长度未达到长度阈值6,则继续获取N3个变形块矢量,并将变形块矢量添加到块矢量候选信息列表,以此类推,一直到块矢量候选信息列表的列表长度为6。
示例性的,在将每个块矢量(如空域相邻块的块矢量、历史块矢量、变形块矢量、默认块矢量等)添加到块矢量候选信息列表时,还需要进行查重处理,以使块矢量候选信息列表中不存在重复的块矢量,对此过程不做限制。当然,上述方式只是构建块矢量候选信息列表的示例,对此不做限制,只要块矢量候选信息列表包括至少一个指定类型块矢量即可。
步骤303,针对块矢量候选信息列表(即当前块对应的合并模式的块矢量候选信息列表)中的每个块矢量,编码端采用率失真原则确定所述块矢量对应的率失真代价,并将最小的率失真代价对应的块矢量确定为目标块矢量。
步骤304,编码端根据目标块矢量获取当前块的预测值。
在得到目标块矢量后,还可以保存目标块矢量,用于后续块的编码参考。
示例性的,针对块矢量候选信息列表中的每个块矢量(如空域相邻块的块矢量、历史块矢量、变形块矢量、默认块矢量等),编码端可以采用率失真原则确定与该块矢量对应的率失真代价值。率失真代价值可以通过如下公式确定:J(mode)=D+λ*R,D表示Distortion(失真),通常可以使用SSE指标来进行衡量,SSE是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和,对此率失真代价值的确定方式不做限制。
编码端在得到每个块矢量对应的率失真代价值后,确定率失真代价值最小的块矢量,将率失真代价值最小的块矢量确定为目标块矢量,并根据目标块矢量获取当前块的预测值。
步骤305,编码端向解码端发送编码比特流,该编码比特流包括第一指示信息,第一指示信息用于指示目标块矢量在块矢量候选信息列表中的第一索引值。
由以上技术方案可见,本申请实施例中,若针对当前块开启帧内块复制,则在为当前块构建块矢量候选信息列表时,该块矢量候选信息列表可以包括指定类型块矢量,从而可以丰富块矢量的类型。在从块矢量候选信息列表中选择目标块矢量后,目标块矢量的编码效果比较理想,能够提高编码性能。
实施例3:基于与上述方法同样的申请构思,参见图5所示,为本申请实施例的编解码方法的流程示意图,可以应用于解码端,该方法可以包括:
步骤501,解码端判断当前块是否开启帧内块复制。如果是,则执行步骤502,如果否,则不再采用块矢量对当前块进行解码,对此过程不再赘述。
若当前块满足特定条件,则解码端需要从编码比特流中解析是否启用的标志位,该标志位表示当前块开启帧内块复制,或者,不开启帧内块复制,如标志位为第一标识时,表示当前块开启帧内块复制,标志位为第二标识时,表示当前块不开启帧内块复制。若当前块不满足特定条件,则解码端不需要从编码比特流中解析是否启用的标志位;在不需要编码是否启用的标志位时,默认当前块不开启帧内块复制,或者,也可以默认当前块开启帧内块复制。
假设当前块满足特定条件,解码端从编码比特流中解析是否启用的标志位。基于该标志位,解码端获知当前块开启帧内块复制,或者,未开启帧内块复制。为了方便描述,以当前块开启帧内块复制为例,且需要执行步骤502。
示例性的,解码端可以获取当前块对应的至少一个特征信息,并判断当前块对应的至少一个特征信息是否满足帧内块复制开启策略。如果所有特征信息均满足帧内块复制开启策略,则可以确定当前块满足特定条件。如果任一特征信息不满足帧内块复制开启策略,则可以确定当前块不满足特定条件。当前块对应的特征信息可以包括但不限于以下一种或者多种:当前块的帧内块复制模式使能开关、当前块的预测模式信息、当前块的跳过变换量化标记、当前块的尺寸(或形状)。当然,上述只是几个示例,对此不做限制。
示例性的,步骤501的实现过程可以参见步骤301,步骤501由解码端实现,步骤301由编码端实现,二者的实现过程类似,在此重复不再赘述。
步骤502,若针对当前块开启帧内块复制,解码端构建与当前块对应的块矢量候选信息列表,块矢量候选信息列表包括至少一个指定类型块矢量。
示例性的,解码端可以采用合并模式(merge模式)或者跳过模式(skip模式)对当前块进行预测,因此,块矢量候选信息列表可以为合并模式的块矢量候选信息列表或者跳过模式的块矢量候选信息列表。为了方便描述,后续以采用合并模式对当前块进行预测为例,采用跳过模式对当前块进行预测的方式类似,在此不再赘述,即构建当前块对应的合并模式的块矢量候选信息列表。
假设编码端采用合并模式对当前块进行编码,在编码端向解码端发送编码比特流时,编码比特流可以包括合并模式标志位,且合并模式标志位为真,表示编码端采用合并模式对当前块进行编码。解码端从编码比特流中解析出合并模式标志位后,若合并模式标志位为真,则解码端需要采用合并模式对当前块进行解码,也就是说,构建与当前块对应的合并模式的块矢量候选信息列表。
在构建合并模式的块矢量候选信息列表时,该块矢量候选信息列表可以包括但不限于:当前块的空域相邻块的块矢量、HMVP列表中的历史块矢量、指定类型块矢量。示例性的,指定类型块矢量可以包括但不限于:默认块矢量,如不为零矢量的默认块矢量或者为零矢量的默认块矢量;和/或,变形块矢量,该变形块矢量是对候选块矢量叠加偏移值后得到的。
示例性的,步骤502的实现过程可以参见步骤302,步骤502由解码端实现,步骤302由编码端实现,二者的实现过程类似,在此不再重复赘述。
步骤503,解码端从编码比特流中获取第一指示信息。
示例性的,第一指示信息用于指示目标块矢量在块矢量候选信息列表中的第一索引值,且目标块矢量为块矢量候选信息列表中的其中一个块矢量。
步骤504,基于第一指示信息,解码端从块矢量候选信息列表中选择与该第一索引值对应的块矢量,并将选择的块矢量确定为目标块矢量。
步骤505,解码端根据目标块矢量获取当前块的预测值。
在得到目标块矢量后,还可以保存目标块矢量,用于后续块的解码参考。
示例性的,编码端向解码端发送编码比特流时,编码比特流还包括第一指示信息,第一指示信息用于指示目标块矢量在块矢量候选信息列表中的第一索引值。例如,假设目标块矢量是块矢量候选信息列表中的第一个块矢量,则第一指示信息用于指示索引值1,索引值1表示块矢量候选信息列表中的第一个块矢量。解码端接收到编码比特流后,从编码比特流中获取第一指示信息,并从块矢量候选信息列表中选择与第一索引值对应的块矢量,并将选择的块矢量确定为目标块矢量。例如,当第一指示信息用于指示索引值1时,则从块矢量候选信息列表中选取第1个块矢量,并将第1个块矢量确定为目标块矢量。
示例性的,解码端在构建与当前块对应的块矢量候选信息列表时,可以构建完整的块矢量候选信息列表(即块矢量候选信息列表的列表长度为长度阈值6),此构建过程可以参见编码端的构建过程,在此不再重复赘述。
示例性的,解码端在构建与当前块对应的块矢量候选信息列表时,可以构建不完整的块矢量候选信息列表(即块矢量候选信息列表的列表长度小于长度阈值6),例如,当第一指示信息用于指示索引值1,且索引值1表示块矢量候选信息列表中的第一个块矢量时,则构建的块矢量候选信息列表,可以只包括第一个块矢量,而不再包括其它块矢量。又例如,当第一指示信息用于指示索引值4,且索引值4表示块矢量候选信息列表中的第四个块矢量时,则构建的块矢量候选信息列表,可以包括四个块矢量,而不再包括其它块矢量。综上所述,即使块矢量候选信息列表只包括部分块矢量,由于块矢量候选信息列表包括与索引值对应的块矢量,因此,解码端也可以得到目标块矢量,并根据目标块矢量获取当前块的预测值。
实施例4:基于与上述方法同样的申请构思,本申请实施例提出一种编解码方法,可以应用于编码端,且当前块的预测采用AMVP模式,该方法可以包括:
步骤a1、编码端判断当前块是否开启帧内块复制。如果是,则执行步骤a2,如果否,则不再采用块矢量对当前块进行编码,对此过程不再赘述。
示例性的,步骤a1的实现过程可以参见步骤301,在此不再赘述。
步骤a2、若针对当前块开启帧内块复制,编码端构建与当前块对应的块矢量候选信息列表,块矢量候选信息列表包括至少一个指定类型块矢量。
示例性的,编码端可以采用AMVP模式对当前块进行预测,因此,块矢量候选信息列表可以为:与当前块对应的AMVP模式的块矢量候选信息列表。
在构建AMVP模式的块矢量候选信息列表时,该块矢量候选信息列表可以包括但不限于:当前块的空域相邻块的块矢量、HMVP列表中的历史块矢量、指定类型块矢量。当然,块矢量候选信息列表还可以包括其它类型的块矢量,对此不做限制。示例性的,指定类型块矢量可以包括但不限于:默认块矢量,如不为零矢量的默认块矢量或者为零矢量的默认块矢量;和/或,变形块矢量,该变形块矢量可以是对候选块矢量叠加偏移值后得到的。
默认块矢量可以包括与当前块的尺寸有关的默认块矢量;和/或,与当前块的尺寸无关的默认块矢量,具体的默认块矢量示例可以参见上述实施例。
变形块矢量是对候选块矢量叠加偏移值后得到的,候选块矢量是当前块的空域相邻块的块矢量,或,HMVP列表中的历史块矢量;或,已添加进块矢量候选信息列表中的块矢量,或,默认块矢量。偏移值包括但不限于与当前块的尺寸有关的偏移值;和/或,与当前块的尺寸无关的偏移值,具体的变形块矢量示例可以参见上述实施例。
综上所述,块矢量候选信息列表可以包括HMVP列表中的历史块矢量。指定类型块矢量可以位于历史块矢量的后面;或者,指定类型块矢量可以位于历史块矢量的前面。又例如,块矢量候选信息列表还可以包括当前块的空域相邻块的块矢量。指定类型块矢量可以位于空域相邻块的块矢量的后面;或者,指定类型块矢量可以位于空域相邻块的块矢量的前面。
示例性的,为了构建AMVP模式的块矢量候选信息列表,采用如下方式:
在一种可能的实现方式中,AMVP模式的块矢量候选信息列表,可以包括:当前块的空域相邻块的块矢量、HMVP列表中的历史块矢量、指定类型块矢量。指定类型块矢量可以包括:默认块矢量;和/或,变形块矢量。
编码端获取当前块的空域相邻块的块矢量,并将空域相邻块的块矢量添加到块矢量候选信息列表。编码端从HMVP列表中选择历史块矢量,并将历史块矢量添加到块矢量候选信息列表。编码端将每个块矢量添加到块矢量候选信息列表时,需要判断块矢量候选信息列表的列表长度是否达到长度阈值;如果否,则将该块矢量添加到块矢量候选信息列表;如果是,则不将该块矢量添加到块矢量候选信息列表,结束块矢量候选信息列表的构建过程。
在将历史块矢量添加到块矢量候选信息列表后,若块矢量候选信息列表的列表长度仍然未达到长度阈值,则编码端可以获取指定类型块矢量(如默认块矢量和/或变形块矢量),并将指定类型块矢量添加到块矢量候选信息列表。
针对AMVP模式的块矢量候选信息列表的列表长度,可以根据经验进行配置,如2、3等,对此列表长度不做限制,以列表长度优选为2为例进行说明。
AMVP模式的块矢量候选信息列表的构建方式,可以参见合并模式的块矢量候选信息列表的构建方式,具体实现过程参见步骤302,在此不再赘述。
在另一种可能的实现方式中,AMVP模式的块矢量候选信息列表可以包括:当前块的空域相邻块的块矢量、HMVP列表中的历史块矢量、指定类型块矢量。指定类型块矢量可以包括:默认块矢量;和/或,变形块矢量。
编码端从合并模式的块矢量候选信息列表(合并模式的块矢量候选信息列表的构建方式参见步骤302)中选取R1个块矢量,R1为AMVP模式的块矢量候选信息列表的列表长度,并将R1个块矢量添加到AMVP模式的块矢量候选信息列表中。编码端将每个块矢量添加到AMVP模式的块矢量候选信息列表时,需要判断AMVP模式的块矢量候选信息列表的列表长度是否达到长度阈值(即R1);如果否,则将该块矢量添加到AMVP模式的块矢量候选信息列表;如果是,则不将该块矢量添加到AMVP模式的块矢量候选信息列表,结束构建过程。
针对AMVP模式的块矢量候选信息列表的列表长度,可以根据经验进行配置,如2、3等,对此列表长度不做限制,以列表长度优选为2为例进行说明。
在另一种可能的实现方式中,AMVP模式的块矢量候选信息列表可以包括:当前块的空域相邻块的块矢量、HMVP列表中的历史块矢量、指定类型块矢量。指定类型块矢量可以包括:默认块矢量;和/或,变形块矢量。
编码端从合并模式的块矢量候选信息列表(合并模式的块矢量候选信息列表的构建方式参见步骤302)中选取R2个块矢量,并获取R3个指定类型块矢量,R2与R3之和为R1,R1为AMVP模式的块矢量候选信息列表的列表长度,R3可以根据经验配置,如1、2等。将所述R2个块矢量、R3个指定类型块矢量,均添加到AMVP模式的块矢量候选信息列表中。
编码端将每个块矢量添加到AMVP模式的块矢量候选信息列表时,需要判断AMVP模式的块矢量候选信息列表的列表长度是否达到长度阈值(即R1);如果否,则将该块矢量添加到AMVP模式的块矢量候选信息列表;如果是,则不将该块矢量添加到AMVP模式的块矢量候选信息列表,结束构建过程。
针对AMVP模式的块矢量候选信息列表的列表长度,可以根据经验进行配置,如2、3等,对此列表长度不做限制,以列表长度优选为2为例进行说明。
当然,上述方式只是构建AMVP模式的块矢量候选信息列表的几个示例,对此不做限制,只要AMVP模式的块矢量候选信息列表包括块矢量即可。
步骤a3、编码端获取当前块的目标块矢量,并根据目标块矢量获取当前块的预测值。示例性的,编码端可以搜索选出一个块矢量作为当前块的目标块矢量,对此搜索过程不做限制,可以参见传统方式。在搜索选出目标块矢量后,就可以根据目标块矢量获取当前块的预测值。
在得到目标块矢量后,还可以保存目标块矢量,用于后续块的编码参考。
步骤a4、编码端从AMVP模式的块矢量候选信息列表中选择一个块矢量作为预测块矢量,并根据目标块矢量与预测块矢量确定块矢量差。
示例性的,针对AMVP模式的块矢量候选信息列表中的每个块矢量,编码端采用率失真原则确定所述块矢量对应的率失真代价,并将最小的率失真代价对应的块矢量确定为预测块矢量。当然,上述方式只是示例,还可以采用其它方式确定预测块矢量。例如,从AMVP模式的块矢量候选信息列表中随机选择一个块矢量,并将随机选择的块矢量确定为预测块矢量。
然后,编码端可以根据目标块矢量与预测块矢量确定块矢量差,例如,编码端可以将目标块矢量与预测块矢量的差值,确定为当前块的块矢量差。
步骤a5、编码端向解码端发送编码比特流,该编码比特流可以包括块矢量差和第二指示信息。该第二指示信息可以用于指示该预测块矢量在块矢量候选信息列表(即AMVP模式的块矢量候选信息列表)中的第二索引值。
实施例5:基于与上述方法同样的申请构思,本申请实施例提出一种编解码方法,可以应用于解码端,且当前块的预测采用AMVP模式,该方法可以包括:
步骤b1、解码端判断当前块是否开启帧内块复制。如果是,则执行步骤b2,如果否,则不再采用块矢量对当前块进行解码,对此过程不再赘述。
示例性的,步骤b1的实现过程可以参见步骤401,在此不再赘述。
步骤b2、若针对当前块开启帧内块复制,解码端构建与当前块对应的块矢量候选信息列表,块矢量候选信息列表包括至少一个指定类型块矢量。
示例性的,解码端可以采用AMVP模式对当前块进行预测,因此,块矢量候选信息列表可以为:与当前块对应的AMVP模式的块矢量候选信息列表。
在一种可能的实现方式中,假设编码端采用AMVP模式对当前块进行编码,则编码端在向解码端发送编码比特流时,该编码比特流可以包括AMVP模式标志位,且所述AMVP模式标志位为真,表示编码端采用AMVP模式对当前块进行编码。然后,解码端在从编码比特流中解析出AMVP模式标志位后,若AMVP模式标志位为真,则解码端需要采用AMVP模式对当前块进行解码,也就是说,解码端需要构建与当前块对应的AMVP模式的块矢量候选信息列表。
在另一种可能的实现方式中,假设编码端采用AMVP模式对当前块进行编码,则编码端在向解码端发送编码比特流时,该编码比特流可以包括合并模式标志位,且所述合并模式标志位为假,而且,合并模式标志位为假表示:编码端未采用合并模式对当前块进行编码,也就是说,编码端采用AMVP模式对当前块进行编码。解码端从编码比特流中解析出合并模式标志位后,若合并模式标志位为假,则解码端需要采用AMVP模式对当前块进行解码,也就是说,解码端需要构建与当前块对应的AMVP模式的块矢量候选信息列表。
示例性的,解码端在构建AMVP模式的块矢量候选信息列表时,该AMVP模式的块矢量候选信息列表可以包括但不限于:当前块的空域相邻块的块矢量、HMVP列表中的历史块矢量、指定类型块矢量。当然,AMVP模式的块矢量候选信息列表还可以包括其它类型的块矢量,对此不做限制。指定类型块矢量可以包括但不限于:默认块矢量,和/或,变形块矢量。
示例性的,步骤b2的实现过程可以参见步骤a2,步骤b2由解码端实现,步骤a2由编码端实现,二者的实现过程类似,在此不再重复赘述。
步骤b3、解码端从编码比特流中获取第二指示信息和块矢量差,第二指示信息用于指示预测块矢量在AMVP模式的块矢量候选信息列表中的第二索引值,且预测块矢量为AMVP模式的块矢量候选信息列表中的其中一个块矢量。
步骤b4、解码端基于第二指示信息,从AMVP模式的块矢量候选信息列表中选择与该第二索引值对应的块矢量,并将选择的块矢量确定为预测块矢量。
步骤b5、解码端根据预测块矢量和块矢量差确定目标块矢量,并根据目标块矢量获取当前块的预测值。在得到目标块矢量后,还可以保存目标块矢量,用于后续块的解码参考。
示例性的,编码端向解码端发送编码比特流时,编码比特流还包括第二指示信息和块矢量差(参见步骤a4,编码端将目标块矢量与预测块矢量的差值,确定为当前块的块矢量差),第二指示信息用于指示预测块矢量在AMVP模式的块矢量候选信息列表中的第二索引值。例如,假设预测块矢量是AMVP模式的块矢量候选信息列表中的第一个块矢量,则第二指示信息用于指示索引值1,索引值1表示AMVP模式的块矢量候选信息列表中的第一个块矢量。
解码端接收到编码比特流后,从编码比特流中获取第二指示信息和块矢量差,并从AMVP模式的块矢量候选信息列表中选择与第二索引值对应的块矢量,将选择的块矢量确定为预测块矢量。例如,当第二指示信息用于指示索引值1时,则从AMVP模式的块矢量候选信息列表中选取第1个块矢量,将第1个块矢量确定为预测块矢量。然后,解码端将预测块矢量与块矢量差之间的和,确定为当前块对应的目标块矢量,根据目标块矢量获取当前块的预测值。
示例性的,解码端在构建AMVP模式的块矢量候选信息列表时,可以构建完整的AMVP模式的块矢量候选信息列表(即AMVP模式的块矢量候选信息列表的列表长度为长度阈值2),此构建过程可以参见编码端的构建过程。
解码端在构建AMVP模式的块矢量候选信息列表时,可以构建不完整的AMVP模式的块矢量候选信息列表(即AMVP模式的块矢量候选信息列表的列表长度小于长度阈值2),例如,当第二指示信息用于指示索引值1,且索引值1表示AMVP模式的块矢量候选信息列表中的第一个块矢量时,则构建的AMVP模式的块矢量候选信息列表,只包括第一个块矢量,而不再包括其它块矢量。
实施例6:在上述实施例中,默认块矢量(即预设块矢量)是指:不为零矢量的默认块矢量或者为零矢量的默认块矢量,默认块矢量可以包括与当前块的尺寸有关的默认块矢量。与当前块的尺寸有关的默认块矢量,包括但不限于:(0,-x1*H)、(-x2*W,0)和(-x3*W,-x4*H)中的至少一个块矢量;x1、x2、x3和x4均是任意实数,W是当前块的宽,H是当前块的高。例如,x1、x2、x3和x4均是任意实数,或者,x1、x2、x3和x4均是不为0的任意实数,或者,x1、x2、x3和x4均是任意整数,或者,x1、x2、x3和x4均是不为0的任意整数。
实施例7:在上述实施例中,默认块矢量(即预设块矢量)是指:不为零矢量的默认块矢量或为零矢量的默认块矢量,默认块矢量包括与当前块的尺寸无关的默认块矢量。与当前块的尺寸无关的默认块矢量包括但不限于:(0,-y1)、(-y2,0)和(-y3,-y4)中的至少一个块矢量;y1、y2、y3和y4均是任意实数。例如,y1、y2、y3和y4均是任意实数,或,y1、y2、y3和y4均是不为0的任意实数,或,y1、y2、y3和y4是任意整数,或,y1、y2、y3和y4是不为0的任意整数。
实施例8:在上述实施例中,默认块矢量(即预设块矢量)是指:不为零矢量的默认块矢量或者为零矢量的默认块矢量,默认块矢量可以包括与当前块的尺寸有关的默认块矢量。与当前块的尺寸有关的默认块矢量,包括但不限于:(-aW,0),(0,-AH),(-bW,0),(0,-BH),(-cW,0),(0,-CH),(-dW,0),(0,-DH)。W为当前块的宽,H为当前块的高。a,A,b,B,c,C,d,D均为整数,如均为不为0的整数。当然,上述只是几个示例,还可以有其它默认块矢量,对此默认块矢量不做限制。一组可能的取值为:a=1,b=2,c=4,d=8,A=1,B=2,C=4,D=8。另一组可能的取值为:a=2,b=4,c=8,d=16,A=1,B=2,C=4,D=8。
示例性的,可以按照上述顺序依次添加默认块矢量,直至完成块矢量候选信息列表的构建。例如,先将(-aW,0)添加到块矢量候选信息列表,若块矢量候选信息列表已经构建完成,则结束构建过程,若块矢量候选信息列表未构建完成,则将(0,-AH)添加到块矢量候选信息列表,以此类推,对此过程不再赘述。
实施例9:在实施例6-实施例8的基础上,增加如下约束条件:默认块矢量位于历史块矢量(即从HMVP列表中选择的历史块矢量)的后面,也就是说,在块矢量候选信息列表中,默认块矢量位于历史块矢量的后面。
实施例10:在上述实施例中,可以对候选块矢量叠加偏移值,得到变形块矢量。候选块矢量可以是块矢量候选信息列表中已有的块矢量,如当前块的空域相邻块的块矢量,或,HMVP列表中的历史块矢量。示例性的,基于块矢量候选信息列表中已有的块矢量,通过叠加偏移值来生成新的变形块矢量,变形块矢量作为新的候选者加入到块矢量候选信息列表。
偏移值包括与当前块的尺寸无关的偏移值,如(0,-Y1)、(-Y2,0)和(-Y3,-Y4)中的至少一个偏移值;Y1、Y2、Y3和Y4均是任意实数。例如,Y1、Y2、Y3和Y4是任意实数,或,Y1、Y2、Y3和Y4是不为0的任意实数,或,Y1、Y2、Y3和Y4是任意整数,或,Y1、Y2、Y3和Y4是不为0的任意整数。
示例性的,在块矢量候选信息列表中,可以至多添加N个通过偏移值来生成的变形块矢量,N为大于0的正整数,即最多存在N个变形块矢量。
实施例11:在上述实施例中,可以对候选块矢量叠加偏移值,得到变形块矢量。候选块矢量可以是块矢量候选信息列表中已有的块矢量,如当前块的空域相邻块的块矢量,或,HMVP列表中的历史块矢量。示例性的,基于块矢量候选信息列表中已有的块矢量,通过叠加偏移值来生成新的变形块矢量,变形块矢量作为新的候选者加入到块矢量候选信息列表。
偏移值可以包括但不限于与当前块的尺寸有关的偏移值,如(0,-X1*H)、(-X2*W,0)和(-X3*W,-X4*H)中的至少一个偏移值;X1、X2、X3和X4均是任意实数,W是当前块的宽,H是当前块的高。例如,X1、X2、X3和X4均是任意实数,或,X1、X2、X3和X4均是不为0的任意实数,或,X1、X2、X3和X4均是任意整数,或,X1、X2、X3和X4均是不为0的任意整数。
示例性的,在块矢量候选信息列表中,可以至多添加N个通过偏移值来生成的变形块矢量,N为大于0的正整数,即最多存在N个变形块矢量。
实施例12:在实施例10和实施例11的基础上,增加如下约束条件:变形块矢量位于历史块矢量(即HMVP列表中的历史块矢量)的后面,默认块矢量的前面。也就是说,在块矢量候选信息列表中,变形块矢量位于历史块矢量的后面,变形块矢量位于默认块矢量的前面。
实施例13:在构建AMVP模式的块矢量候选信息列表时,可以将默认块矢量(即预设块矢量)添加到AMVP模式的块矢量候选信息列表。默认块矢量是指:不为零矢量的默认块矢量或为零矢量的默认块矢量,默认块矢量包括与当前块的尺寸有关的默认块矢量。与当前块的尺寸有关的默认块矢量可以包括:(0,-x1*H)、(-x2*W,0)和(-x3*W,-x4*H)中的至少一个块矢量;x1、x2、x3和x4均是任意实数,W是当前块的宽,H是当前块的高。例如,x1、x2、x3和x4均是任意实数,或者,x1、x2、x3和x4均是不为0的任意实数,或者,x1、x2、x3和x4均是任意整数,或者,x1、x2、x3和x4均是不为0的任意整数。
例如,AMVP模式的块矢量候选信息列表可以包括两个块矢量,第一个块矢量从合并模式的块矢量候选信息列表中选取,第二个块矢量为默认块矢量。
实施例14:在构建AMVP模式的块矢量候选信息列表时,可以将默认块矢量添加到AMVP模式的块矢量候选信息列表。默认块矢量是指:不为零矢量的默认块矢量或为零矢量的默认块矢量,默认块矢量包括与当前块的尺寸无关的默认块矢量。与当前块的尺寸无关的默认块矢量可以包括:(0,-y1)、(-y2,0)和(-y3,-y4)中的至少一个块矢量;y1、y2、y3和y4均是任意实数。例如,y1、y2、y3和y4均是任意实数,或,y1、y2、y3和y4均是不为0的任意实数,或,y1、y2、y3和y4是任意整数,或,y1、y2、y3和y4是不为0的任意整数。
例如,AMVP模式的块矢量候选信息列表可以包括两个块矢量,第一个块矢量从合并模式的块矢量候选信息列表中选取,第二个块矢量为默认块矢量。
实施例15:参见图6所示,为本申请实施例的编解码方法的流程示意图,该方法可以应用于解码端或者编码端,该方法可以包括以下步骤:
步骤601,若针对当前块开启帧内块复制,获取与当前块对应的目标块矢量。
步骤602,根据目标块矢量获取当前块的预测值。
若所述编解码方法应用于编码端,根据目标块矢量获取当前块的预测值之后,还可以向解码端发送编码比特流,编码比特流包括目标块矢量或者块矢量差;其中,块矢量差是基于目标块矢量与固定块矢量确定的。
若所述编解码方法应用于解码端,获取与当前块对应的目标块矢量,可以包括:从编码比特流中获取与当前块对应的目标块矢量;或者,从编码比特流中获取与当前块对应的块矢量差,并根据块矢量差和固定块矢量获取与当前块对应的目标块矢量,即块矢量差于固定块矢量的和为目标块矢量。
在上述实施例中,固定块矢量可以包括但不限于:与当前块的尺寸有关的固定块矢量;和/或,与当前块的尺寸无关的固定块矢量。与当前块的尺寸有关的固定块矢量可以包括但不限于:(0,-d1*H)、(-d2*W,0)和(-d3*W,-d4*H)中的至少一个块矢量;d1、d2、d3和d4均是实数,W是当前块的宽,H是当前块的高。与当前块的尺寸无关的固定块矢量可以包括但不限于:(0,-D1)、(-D2,0)和(-D3,-D4)中的至少一个块矢量;D1、D2、D3和D4均是实数。
传统方式中,块矢量的编码需要采用预测机制,但是在块矢量候选信息列表中的块矢量与当前块的块矢量并不相近的情况下,预测机制并不能发挥作用,反而增加了编码比特,导致编码效果不理想。本申请实施例中,若针对当前块开启帧内块复制,则可以直接对目标块矢量进行编码,而不需要从构建块矢量候选信息列表中选取目标块矢量,从而跳过块矢量预测步骤,直接编码块矢量,减少编码比特。
实施例16:基于与上述方法同样的申请构思,本申请实施例还提出另一种编解码方法,该方法可以应用于编码端,该方法可以包括以下步骤:
步骤c1、编码端判断当前块是否开启帧内块复制。如果是,则执行步骤c2,如果否,则不再采用块矢量对当前块进行编码,对此过程不再赘述。
示例性的,步骤c1的实现过程可以参见步骤301,在此不再重复赘述。
步骤c2、若针对当前块开启帧内块复制,编码端获取与当前块对应的目标块矢量。例如,编码端可以搜索选出一个块矢量作为当前块的目标块矢量。
步骤c3、编码端根据目标块矢量获取当前块的预测值。
在得到目标块矢量后,还可以保存目标块矢量,用于后续块的编码参考。
步骤c4、编码端向解码端发送编码比特流,编码比特流包括目标块矢量。
实施例17:基于与上述方法同样的申请构思,本申请实施例还提出另一种编解码方法,该方法可以应用于解码端,该方法可以包括以下步骤:
步骤d1、解码端判断当前块是否开启帧内块复制。如果是,则执行步骤d2,如果否,则不再采用块矢量对当前块进行编码,对此过程不再赘述。
步骤d2、若针对当前块开启帧内块复制,解码端从编码比特流中获取与当前块对应的目标块矢量。例如,编码端向解码端发送编码比特流时,该编码比特流包括目标块矢量,因此,解码端可以从编码比特流中获取目标块矢量。
步骤d3、解码端根据目标块矢量获取当前块的预测值。
在得到目标块矢量后,还可以保存目标块矢量,用于后续块的编码参考。
实施例18:基于与上述方法同样的申请构思,本申请实施例还提出另一种编解码方法,该方法可以应用于编码端,该方法可以包括以下步骤:
步骤e1、编码端判断当前块是否开启帧内块复制。如果是,则执行步骤e2,如果否,则不再采用块矢量对当前块进行编码,对此过程不再赘述。
步骤e2、若针对当前块开启帧内块复制,编码端获取与当前块对应的目标块矢量。例如,编码端可以搜索选出一个块矢量作为当前块的目标块矢量。
步骤e3、编码端根据目标块矢量获取当前块的预测值。
在得到目标块矢量后,还可以保存目标块矢量,用于后续块的编码参考。
步骤e4、编码端基于目标块矢量与固定块矢量确定块矢量差,例如,编码端可以将目标块矢量与固定块矢量之间的差值,确定为块矢量差。
步骤e5、编码端向解码端发送编码比特流,编码比特流包括块矢量差。
实施例19:基于与上述方法同样的申请构思,本申请实施例还提出另一种编解码方法,该方法可以应用于解码端,该方法可以包括以下步骤:
步骤f1、解码端判断当前块是否开启帧内块复制。如果是,则执行步骤f1,如果否,则不再采用块矢量对当前块进行编码,对此过程不再赘述。
步骤f2、若针对当前块开启帧内块复制,解码端从编码比特流中获取与当前块对应的块矢量差。例如,编码端向解码端发送编码比特流时,该编码比特流包括块矢量差,因此,解码端可以从编码比特流中获取块矢量差。
步骤f3、解码端根据块矢量差与固定块矢量确定当前块对应的目标块矢量,例如,解码端可以将块矢量差与固定块矢量之间的和,确定为目标块矢量。
步骤f4、解码端根据目标块矢量获取当前块的预测值。
在得到目标块矢量后,还可以保存目标块矢量,用于后续块的编码参考。
实施例20:在上述实施例15-实施例19中,在当前块开启帧内块复制时,可以直接编码块矢量的值,而不需要进行块矢量的预测编码操作。
在上述实施例中,固定块矢量可以包括:与当前块的尺寸有关的固定块矢量;和/或,与当前块的尺寸无关的固定块矢量。与当前块的尺寸有关的固定块矢量可以包括但不限于:(0,-d1*H)、(-d2*W,0)和(-d3*W,-d4*H)中的至少一个块矢量;d1、d2、d3和d4均是实数,W是当前块的宽,H是当前块的高。与当前块的尺寸无关的固定块矢量可以包括但不限于:(0,-D1)、(-D2,0)和(-D3,-D4)中的至少一个块矢量;D1、D2、D3和D4均是实数。
实施例21:基于与上述方法同样的申请构思,本申请实施例提出一种编解码装置,应用于解码端或编码端,如图7所示,为所述装置的结构图,包括:
构建模块71,用于若针对当前块开启帧内块复制,构建与所述当前块对应的块矢量候选信息列表,所述块矢量候选信息列表包括至少一个指定类型块矢量;所述指定类型块矢量包括默认块矢量和/或变形块矢量,所述变形块矢量是对候选块矢量叠加偏移值后得到的;所述候选块矢量是所述当前块的空域相邻块的块矢量,或者,当前块对应的HMVP列表中的历史块矢量;或者,已添加进块矢量候选信息列表中的块矢量;
编解码模块72,用于根据所述块矢量候选信息列表对当前块进行编码或解码。
示例性的,所述默认块矢量包括:与当前块的尺寸有关的默认块矢量;和/或,与当前块的尺寸无关的默认块矢量。与当前块的尺寸有关的默认块矢量包括:(0,-x1*H)、(-x2*W,0)和(-x3*W,-x4*H)中的至少一个块矢量;其中,x1、x2、x3和x4均是实数,W是当前块的宽,H是当前块的高;与当前块的尺寸无关的默认块矢量包括:(0,-y1)、(-y2,0)和(-y3,-y4)中的至少一个块矢量;其中,y1、y2、y3和y4均是实数。
示例性的,所述偏移值包括:与当前块的尺寸有关的偏移值;和/或,与当前块的尺寸无关的偏移值。与当前块的尺寸有关的偏移值包括:(0,-X1*H)、(-X2*W,0)和(-X3*W,-X4*H)中的至少一个偏移值;其中,X1、X2、X3和X4均是实数,W是当前块的宽,H是当前块的高;与当前块的尺寸无关的偏移值包括:(0,-Y1)、(-Y2,0)和(-Y3,-Y4)中的至少一个偏移值;其中,Y1、Y2、Y3和Y4均是实数。
所述块矢量候选信息列表还包括HMVP列表中的历史块矢量;所述指定类型块矢量位于所述历史块矢量的后面;或者,所述指定类型块矢量位于所述历史块矢量的前面。
若所述装置应用于解码端,且所述当前块的预测采用合并模式或者跳过模式,所述块矢量候选信息列表为合并模式的块矢量候选信息列表或者跳过模式的块矢量候选信息列表,所述编解码模块72根据所述块矢量候选信息列表对所述当前块进行解码时具体用于:
从编码比特流中获取第一指示信息;其中,所述第一指示信息用于指示目标块矢量在所述块矢量候选信息列表中的第一索引值;基于所述第一指示信息,从所述块矢量候选信息列表中选择与所述第一索引值对应的块矢量,并将选择的块矢量确定为目标块矢量;根据所述目标块矢量获取所述当前块的预测值。
若所述装置应用于解码端,且所述当前块的预测采用AMVP模式,所述块矢量候选信息列表为AMVP模式的块矢量候选信息列表,所述编解码模块72根据所述块矢量候选信息列表对所述当前块进行解码时具体用于:从编码比特流中获取第二指示信息和块矢量差;其中,所述第二指示信息用于指示预测块矢量在所述块矢量候选信息列表中的第二索引值;基于所述第二指示信息,从所述块矢量候选信息列表中选择与所述第二索引值对应的块矢量,并将选择的块矢量确定为预测块矢量;根据所述预测块矢量和所述块矢量差确定目标块矢量;根据所述目标块矢量获取所述当前块的预测值。
若所述装置应用于编码端,且所述当前块的预测采用合并模式或者跳过模式,所述块矢量候选信息列表为合并模式的块矢量候选信息列表或者跳过模式的块矢量候选信息列表,所述编解码模块72根据所述块矢量候选信息列表对所述当前块进行编码时具体用于:
针对块矢量候选信息列表中的每个块矢量,采用率失真原则确定所述块矢量对应的率失真代价,并将最小的率失真代价对应的块矢量确定为目标块矢量;根据所述目标块矢量获取所述当前块的预测值;向解码端发送编码比特流,所述编码比特流包括第一指示信息,所述第一指示信息用于指示目标块矢量在所述块矢量候选信息列表中的第一索引值。
若所述装置应用于编码端,且所述当前块的预测采用AMVP模式,所述块矢量候选信息列表为AMVP模式的块矢量候选信息列表,所述编解码模块72根据所述块矢量候选信息列表对所述当前块进行编码时具体用于:获取当前块的目标块矢量,根据所述目标块矢量获取当前块的预测值;从所述块矢量候选信息列表中选择一个块矢量作为预测块矢量,并根据所述目标块矢量与所述预测块矢量确定块矢量差;向解码端发送编码比特流,所述编码比特流包括所述块矢量差和第二指示信息;其中,所述第二指示信息用于指示所述预测块矢量在所述块矢量候选信息列表中的第二索引值。
实施例22:基于与上述方法同样的申请构思,本申请实施例提出一种编解码装置,应用于解码端或编码端,如图8所示,为所述装置的结构图,包括:
获取模块81,用于若针对当前块开启帧内块复制,则获取与所述当前块对应的目标块矢量;编解码模块82,用于根据所述目标块矢量获取所述当前块的预测值。
若所述装置应用于编码端,所述装置还包括(在图中未示出):发送模块,用于向解码端发送编码比特流,所述编码比特流包括所述目标块矢量或者块矢量差;其中,所述块矢量差是基于所述目标块矢量与固定块矢量确定的。
若所述装置应用于解码端,所述获取模块81获取与所述当前块对应的目标块矢量时具体用于:从编码比特流中获取与所述当前块对应的目标块矢量;或者,从编码比特流中获取与所述当前块对应的块矢量差,并根据所述块矢量差和固定块矢量获取与所述当前块对应的目标块矢量。
示例性的,所述固定块矢量包括:与当前块的尺寸有关的固定块矢量;和/或,与当前块的尺寸无关的固定块矢量;与当前块的尺寸有关的固定块矢量包括:(0,-d1*H)、(-d2*W,0)和(-d3*W,-d4*H)中的至少一个块矢量;其中,d1、d2、d3和d4均是实数,W是所述当前块的宽,H是所述当前块的高;与当前块的尺寸无关的固定块矢量包括:(0,-D1)、(-D2,0)和(-D3,-D4)中的至少一个块矢量;其中,D1、D2、D3和D4均是实数。
本申请实施例提供的解码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图9所示。包括:处理器91和机器可读存储介质92,所述机器可读存储介质92存储有能够被所述处理器91执行的机器可执行指令;所述处理器91用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,所述处理器用于执行机器可执行指令,以实现如下步骤:
若针对当前块开启帧内块复制,则构建与所述当前块对应的块矢量候选信息列表,所述块矢量候选信息列表包括至少一个指定类型块矢量;所述指定类型块矢量包括默认块矢量和/或变形块矢量,所述变形块矢量是对候选块矢量叠加偏移值后得到的;所述候选块矢量是所述当前块的空域相邻块的块矢量,或者,当前块对应的HMVP列表中的历史块矢量;或者,已添加进块矢量候选信息列表中的块矢量;根据所述块矢量候选信息列表对所述当前块进行解码;或者,若针对当前块开启帧内块复制,则获取与所述当前块对应的目标块矢量;根据所述目标块矢量获取所述当前块的预测值。
本申请实施例提供的编码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图10所示。包括:处理器93和机器可读存储介质94,所述机器可读存储介质94存储有能够被所述处理器93执行的机器可执行指令;所述处理器93用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,所述处理器用于执行机器可执行指令,以实现如下步骤:
若针对当前块开启帧内块复制,则构建与所述当前块对应的块矢量候选信息列表,所述块矢量候选信息列表包括至少一个指定类型块矢量;所述指定类型块矢量包括默认块矢量和/或变形块矢量,所述变形块矢量是对候选块矢量叠加偏移值后得到的;所述候选块矢量是所述当前块的空域相邻块的块矢量,或者,当前块对应的HMVP列表中的历史块矢量;或者,已添加进块矢量候选信息列表中的块矢量;根据所述块矢量候选信息列表对所述当前块进行编码;或者,若针对当前块开启帧内块复制,则获取与所述当前块对应的目标块矢量;根据所述目标块矢量获取所述当前块的预测值。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的编解码方法。示例性的,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的系统、装置、模块或单元,可以由计算机芯片或实体实现,或由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (18)
1.一种编解码方法,其特征在于,所述方法包括:
若针对当前块开启帧内块复制,则构建与所述当前块对应的块矢量候选信息列表,所述块矢量候选信息列表包括至少一个指定类型块矢量;所述指定类型块矢量包括默认块矢量和/或变形块矢量,所述变形块矢量是对候选块矢量叠加偏移值后得到的;所述候选块矢量是所述当前块的空域相邻块的块矢量,或者,当前块对应的HMVP列表中的历史块矢量;或者,已添加进块矢量候选信息列表中的块矢量;
根据所述块矢量候选信息列表对所述当前块进行编码或者解码。
2.根据权利要求1所述的方法,其特征在于,所述默认块矢量包括:与当前块的尺寸有关的默认块矢量;和/或,与当前块的尺寸无关的默认块矢量。
3.根据权利要求2所述的方法,其特征在于,与当前块的尺寸有关的默认块矢量包括:(0,-x1*H)、(-x2*W,0)和(-x3*W,-x4*H)中的至少一个块矢量;其中,x1、x2、x3和x4均是实数,W是当前块的宽,H是当前块的高;
与当前块的尺寸无关的默认块矢量包括:(0,-y1)、(-y2,0)和(-y3,-y4)中的至少一个块矢量;其中,y1、y2、y3和y4均是实数。
4.根据权利要求1所述的方法,其特征在于,所述偏移值包括:与当前块的尺寸有关的偏移值;和/或,与当前块的尺寸无关的偏移值。
5.根据权利要求4所述的方法,其特征在于,与当前块的尺寸有关的偏移值包括:(0,-X1*H)、(-X2*W,0)和(-X3*W,-X4*H)中的至少一个偏移值;其中,X1、X2、X3和X4均是实数,W是当前块的宽,H是当前块的高;
与当前块的尺寸无关的偏移值包括:(0,-Y1)、(-Y2,0)和(-Y3,-Y4)中的至少一个偏移值;其中,Y1、Y2、Y3和Y4均是实数。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述块矢量候选信息列表还包括HMVP列表中的历史块矢量;所述指定类型块矢量位于所述历史块矢量的后面;或者,所述指定类型块矢量位于所述历史块矢量的前面。
7.根据权利要求1所述的方法,其特征在于,若所述方法应用于解码端,且所述当前块的预测采用合并模式或者跳过模式,所述块矢量候选信息列表为合并模式的块矢量候选信息列表或者跳过模式的块矢量候选信息列表,所述根据所述块矢量候选信息列表对所述当前块进行解码,包括:
从编码比特流中获取第一指示信息;其中,所述第一指示信息用于指示目标块矢量在所述块矢量候选信息列表中的第一索引值;
基于所述第一指示信息,从所述块矢量候选信息列表中选择与所述第一索引值对应的块矢量,并将选择的块矢量确定为目标块矢量;
根据所述目标块矢量获取所述当前块的预测值。
8.根据权利要求1所述的方法,其特征在于,若所述方法应用于解码端,且所述当前块的预测采用AMVP模式,所述块矢量候选信息列表为AMVP模式的块矢量候选信息列表,所述根据所述块矢量候选信息列表对所述当前块进行解码,包括:
从编码比特流中获取第二指示信息和块矢量差;其中,所述第二指示信息用于指示预测块矢量在所述块矢量候选信息列表中的第二索引值;
基于所述第二指示信息,从所述块矢量候选信息列表中选择与所述第二索引值对应的块矢量,并将选择的块矢量确定为预测块矢量;
根据所述预测块矢量和所述块矢量差确定目标块矢量;
根据所述目标块矢量获取所述当前块的预测值。
9.根据权利要求1所述的方法,其特征在于,若所述方法应用于编码端,且所述当前块的预测采用合并模式或者跳过模式,所述块矢量候选信息列表为合并模式的块矢量候选信息列表或者跳过模式的块矢量候选信息列表,所述根据所述块矢量候选信息列表对所述当前块进行编码,包括:
针对块矢量候选信息列表中的每个块矢量,采用率失真原则确定所述块矢量对应的率失真代价,并将最小的率失真代价对应的块矢量确定为目标块矢量;
根据所述目标块矢量获取所述当前块的预测值;
向解码端发送编码比特流,所述编码比特流包括第一指示信息,所述第一指示信息用于指示目标块矢量在所述块矢量候选信息列表中的第一索引值。
10.根据权利要求1所述的方法,其特征在于,若所述方法应用于编码端,且所述当前块的预测采用AMVP模式,所述块矢量候选信息列表为AMVP模式的块矢量候选信息列表,所述根据所述块矢量候选信息列表对所述当前块进行编码,包括:
获取当前块的目标块矢量,根据所述目标块矢量获取当前块的预测值;
从所述块矢量候选信息列表中选择一个块矢量作为预测块矢量,并根据所述目标块矢量与所述预测块矢量确定块矢量差;
向解码端发送编码比特流,所述编码比特流包括所述块矢量差和第二指示信息;其中,所述第二指示信息用于指示所述预测块矢量在所述块矢量候选信息列表中的第二索引值。
11.一种编解码方法,其特征在于,所述方法包括:
若针对当前块开启帧内块复制,则获取与所述当前块对应的目标块矢量;
根据所述目标块矢量获取所述当前块的预测值。
12.根据权利要求11所述的方法,其特征在于,若所述方法应用于编码端,所述根据所述目标块矢量获取所述当前块的预测值之后,还包括:
向解码端发送编码比特流,所述编码比特流包括所述目标块矢量或者块矢量差;其中,所述块矢量差是基于所述目标块矢量与固定块矢量确定的。
13.根据权利要求11所述的方法,其特征在于,若所述方法应用于解码端,所述获取与所述当前块对应的目标块矢量,包括:
从编码比特流中获取与所述当前块对应的目标块矢量;或者,
从编码比特流中获取与所述当前块对应的块矢量差,并根据所述块矢量差和固定块矢量获取与所述当前块对应的目标块矢量。
14.根据权利要求12或13所述的方法,其特征在于,所述固定块矢量包括:与当前块的尺寸有关的固定块矢量;和/或,与当前块的尺寸无关的固定块矢量;与当前块的尺寸有关的固定块矢量包括:(0,-d1*H)、(-d2*W,0)和(-d3*W,-d4*H)中的至少一个块矢量;其中,d1、d2、d3和d4均是实数,W是所述当前块的宽,H是所述当前块的高;
与当前块的尺寸无关的固定块矢量包括:(0,-D1)、(-D2,0)和(-D3,-D4)中的至少一个块矢量;其中,D1、D2、D3和D4均是实数。
15.一种编解码装置,其特征在于,所述装置包括:
构建模块,用于若针对当前块开启帧内块复制,构建与所述当前块对应的块矢量候选信息列表,所述块矢量候选信息列表包括至少一个指定类型块矢量;所述指定类型块矢量包括默认块矢量和/或变形块矢量,所述变形块矢量是对候选块矢量叠加偏移值后得到的;所述候选块矢量是所述当前块的空域相邻块的块矢量,或者,当前块对应的HMVP列表中的历史块矢量;或者,已添加进块矢量候选信息列表中的块矢量;
编解码模块,用于根据所述块矢量候选信息列表对当前块进行编码或解码。
16.一种编解码装置,其特征在于,所述装置包括:
获取模块,用于若针对当前块开启帧内块复制,则获取与所述当前块对应的目标块矢量;
编解码模块,用于根据所述目标块矢量获取所述当前块的预测值。
17.一种解码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
若针对当前块开启帧内块复制,则构建与所述当前块对应的块矢量候选信息列表,所述块矢量候选信息列表包括至少一个指定类型块矢量;所述指定类型块矢量包括默认块矢量和/或变形块矢量,所述变形块矢量是对候选块矢量叠加偏移值后得到的;所述候选块矢量是所述当前块的空域相邻块的块矢量,或者,当前块对应的HMVP列表中的历史块矢量;或者,已添加进块矢量候选信息列表中的块矢量;根据所述块矢量候选信息列表对所述当前块进行解码;或者,
若针对当前块开启帧内块复制,则获取与所述当前块对应的目标块矢量;根据所述目标块矢量获取所述当前块的预测值。
18.一种编码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
若针对当前块开启帧内块复制,则构建与所述当前块对应的块矢量候选信息列表,所述块矢量候选信息列表包括至少一个指定类型块矢量;所述指定类型块矢量包括默认块矢量和/或变形块矢量,所述变形块矢量是对候选块矢量叠加偏移值后得到的;所述候选块矢量是所述当前块的空域相邻块的块矢量,或者,当前块对应的HMVP列表中的历史块矢量;或者,已添加进块矢量候选信息列表中的块矢量;根据所述块矢量候选信息列表对所述当前块进行编码;或者,
若针对当前块开启帧内块复制,则获取与所述当前块对应的目标块矢量;根据所述目标块矢量获取所述当前块的预测值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910538918.4A CN112118451B (zh) | 2019-06-20 | 2019-06-20 | 一种编解码方法、装置及其设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910538918.4A CN112118451B (zh) | 2019-06-20 | 2019-06-20 | 一种编解码方法、装置及其设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112118451A true CN112118451A (zh) | 2020-12-22 |
CN112118451B CN112118451B (zh) | 2022-09-27 |
Family
ID=73796689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910538918.4A Active CN112118451B (zh) | 2019-06-20 | 2019-06-20 | 一种编解码方法、装置及其设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112118451B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113207002A (zh) * | 2021-02-21 | 2021-08-03 | 腾讯科技(深圳)有限公司 | 视频编解码方法、装置、计算机可读介质及电子设备 |
CN113630601A (zh) * | 2021-06-29 | 2021-11-09 | 杭州未名信科科技有限公司 | 一种仿射运动估计方法、装置、设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150264386A1 (en) * | 2014-03-17 | 2015-09-17 | Qualcomm Incorporated | Block vector predictor for intra block copying |
WO2015180014A1 (en) * | 2014-05-26 | 2015-12-03 | Mediatek Singapore Pte. Ltd. | An improved merge candidate list construction method for intra block copy |
CN105393537A (zh) * | 2014-03-04 | 2016-03-09 | 微软技术许可有限责任公司 | 用于基于散列的块匹配的散列表构建和可用性检查 |
US20160100189A1 (en) * | 2014-10-07 | 2016-04-07 | Qualcomm Incorporated | Intra bc and inter unification |
US20160105657A1 (en) * | 2014-10-10 | 2016-04-14 | Qualcomm Incorporated | Harmonization of cross-component prediction and adaptive color transform in video coding |
CN105847842A (zh) * | 2015-01-29 | 2016-08-10 | 同济大学 | 图像编码方法及装置、图像解码方法及装置 |
US20160330471A1 (en) * | 2014-01-03 | 2016-11-10 | Microsoft Technology Licensing, Llc | Block vector prediction in video and image coding/decoding |
CN106797477A (zh) * | 2014-10-14 | 2017-05-31 | 高通股份有限公司 | 用于帧内bc和帧间预测统一的amvp和合并候选者列表导出 |
CN106797229A (zh) * | 2014-11-20 | 2017-05-31 | 寰发股份有限公司 | 运动向量和块向量分辨率控制方法 |
CN109076210A (zh) * | 2016-05-28 | 2018-12-21 | 联发科技股份有限公司 | 视频编解码的当前图像参考的方法和装置 |
-
2019
- 2019-06-20 CN CN201910538918.4A patent/CN112118451B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160330471A1 (en) * | 2014-01-03 | 2016-11-10 | Microsoft Technology Licensing, Llc | Block vector prediction in video and image coding/decoding |
CN105393537A (zh) * | 2014-03-04 | 2016-03-09 | 微软技术许可有限责任公司 | 用于基于散列的块匹配的散列表构建和可用性检查 |
US20150264386A1 (en) * | 2014-03-17 | 2015-09-17 | Qualcomm Incorporated | Block vector predictor for intra block copying |
WO2015180014A1 (en) * | 2014-05-26 | 2015-12-03 | Mediatek Singapore Pte. Ltd. | An improved merge candidate list construction method for intra block copy |
US20160100189A1 (en) * | 2014-10-07 | 2016-04-07 | Qualcomm Incorporated | Intra bc and inter unification |
US20160105657A1 (en) * | 2014-10-10 | 2016-04-14 | Qualcomm Incorporated | Harmonization of cross-component prediction and adaptive color transform in video coding |
CN106797477A (zh) * | 2014-10-14 | 2017-05-31 | 高通股份有限公司 | 用于帧内bc和帧间预测统一的amvp和合并候选者列表导出 |
CN106797229A (zh) * | 2014-11-20 | 2017-05-31 | 寰发股份有限公司 | 运动向量和块向量分辨率控制方法 |
CN105847842A (zh) * | 2015-01-29 | 2016-08-10 | 同济大学 | 图像编码方法及装置、图像解码方法及装置 |
CN109076210A (zh) * | 2016-05-28 | 2018-12-21 | 联发科技股份有限公司 | 视频编解码的当前图像参考的方法和装置 |
Non-Patent Citations (2)
Title |
---|
JUNGHAK NAM: "CE8-related: Modified block vector coding for IBC", 《JOINT VIDEO EXPERTS TEAM (JVET)》 * |
XIAOZHONG XU: "CE8-related: Unified intra block copy block vector prediction", 《JOINT VIDEO EXPERTS TEAM (JVET)》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113207002A (zh) * | 2021-02-21 | 2021-08-03 | 腾讯科技(深圳)有限公司 | 视频编解码方法、装置、计算机可读介质及电子设备 |
CN113630601A (zh) * | 2021-06-29 | 2021-11-09 | 杭州未名信科科技有限公司 | 一种仿射运动估计方法、装置、设备及存储介质 |
CN113630601B (zh) * | 2021-06-29 | 2024-04-02 | 杭州未名信科科技有限公司 | 一种仿射运动估计方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112118451B (zh) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11284067B2 (en) | Method and apparatus for setting reference picture index of temporal merging candidate | |
CN109819255B (zh) | 一种编解码方法及其设备 | |
CN107277546B (zh) | 编码装置和方法、解码装置和方法以及存储介质 | |
KR20190084236A (ko) | 영상 부호화 및 복호화를 위한 장치 및 방법 | |
GB2492778A (en) | Motion compensated image coding by combining motion information predictors | |
CN112118451B (zh) | 一种编解码方法、装置及其设备 | |
CN110662074B (zh) | 一种运动矢量确定方法和设备 | |
CN112449180A (zh) | 一种编解码方法、装置及其设备 | |
CN112073734B (zh) | 一种编解码方法、装置及其设备 | |
CN110691247A (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 |