CN111818342B - 帧间预测方法及预测装置 - Google Patents
帧间预测方法及预测装置 Download PDFInfo
- Publication number
- CN111818342B CN111818342B CN202010887772.7A CN202010887772A CN111818342B CN 111818342 B CN111818342 B CN 111818342B CN 202010887772 A CN202010887772 A CN 202010887772A CN 111818342 B CN111818342 B CN 111818342B
- Authority
- CN
- China
- Prior art keywords
- motion vector
- reference frame
- current block
- list
- motion
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
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/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/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/56—Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请公开了帧间预测方法及帧间预测装置。该方法包括:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量,在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;历史运动矢量列表包括至少一个运动矢量及该运动矢量对应的精度,其中,第二运动矢量的精度由第一运动矢量的精度确定;计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;基于第一参考帧对应的第二运动矢量对当前块进行运动补偿。通过上述方式,本申请能够提高帧间预测精度。
Description
技术领域
本申请涉及视频编码技术领域,特别是涉及帧间预测方法及帧间预测装置。
背景技术
视频编解码***主要包括编码、传输和解码三大部分,其中,因为视频图像的数据量比较大,视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量,实现降低传输过程中的网络带宽和减少存储空间的目的。
视频编码***主要分为视频采集、预测、变换量化和熵编码几大部分,其中预测分为帧内预测和帧间预测两部分,分别是为了去除视频图像在空间和时间上的冗余。一般来说,时间上相邻帧像素点的亮度和色度信号值比较接近,具有强相关性。帧间预测通过运动搜索等方法在参考帧中寻找与当前块最为接近的匹配块,并记录当前块与匹配块间的运动信息如运动矢量(Motion Vector,MV)和参考帧索引。对运动信息进行编码,传输到解码端。在解码端,解码器只要通过相应句法元素解析出当前块的MV,就可找到当前块的匹配块,并将匹配块的像素值拷贝到当前块,即为当前块的帧间预测值。
目前的视频编码方法在运动搜索的过程中,选择的预测运动矢量(MVP)与指定的运动矢量精度的关联性不强,导致由该预测运动矢量作为运动搜索起点,最终经过代价比较得到的当前块的最佳运动信息误差较大。因此,帧间预测的准确度有待提高。
发明内容
本申请提供一种帧间预测方法及帧间预测装置,能够提高预测精度和速度。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种帧间预测方法,该方法包括:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量,在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;历史运动矢量列表包括至少一个运动矢量及该运动矢量对应的精度,其中,第二运动矢量的精度由第一运动矢量的精度确定;计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;基于第一参考帧对应的第二运动矢量对当前块进行运动补偿。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种帧间预测装置,该帧间预测装置包括:搜索模块,用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量,在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;其中,历史运动矢量列表包括至少一个运动矢量及该运动矢量对应的精度,第二运动矢量的精度由第一运动矢量的精度确定;优选模块,用于第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;补偿模块,用于基于第一参考帧对应的第二运动矢量对当前块进行运动补偿。
为解决上述技术问题,本申请采用的另一个技术方案是:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量,其中候选运动矢量列表包括当前块的空域候选矢量和/或时域候选矢量,空域候选矢量为当前块的空域相关块的运动矢量,时域候选矢量为当前块的时域同位块的运动矢量;在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;基于第一参考帧对应的第二运动矢量对当前块进行运动补偿。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种帧间预测装置,该帧间预测装置包括:选择模块,用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量;搜索模块,用于在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;优选模块,用于计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;补偿模块,用于基于第一参考帧对应的第二运动矢量对当前块进行运动补偿。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种帧间预测方法,该方法包括:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量;在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;若当前块为双向预测模式,则基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量;分别利用多个修正运动矢量对第三运动矢量进行修正,得到多个修正后的第三运动矢量;利用每个修正后的第三运动矢量对应的预测值计算修正运动矢量的评价指标;选择评价指标最小的修正后的第三运动矢量对当前块进行运动补偿。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种帧间预测装置,该帧间预测装置包括:选择模块,用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量;搜索模块,用于在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。优选模块,用于计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;双向预测模块,用于若当前块为双向预测模式,则基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量。修正模块,用于分别利用多个修正运动矢量对第三运动矢量进行修正,得到多个修正后的第三运动矢量;评价模块,用于利用每个修正后的第三运动矢量对应的预测值计算修正后的第三运动矢量的评价指标;补偿模块,用于选择评价指标最小的修正后的第三运动矢量对当前块进行运动补偿。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种帧间预测方法,该方法包括:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量;在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;若当前块仅有单向预测模式,则使用第一参考帧对应的第二运动矢量作为当前块的选择运动矢量;若当前块为双向预测模式,则基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量作为当前块的选择运动矢量;利用偏移值列表和偏移方向列表对选择运动矢量进行偏移,得到多个偏移运动矢量;按照编码代价最小原则从多个偏移运动矢量选出当前块的最终运动矢量。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种帧间预测装置,该帧间预测装置包括:选择模块,用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量;搜索模块,用于在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;第一优选模块,用于计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;偏移模块,用于利用偏移值列表和偏移方向列表对选择运动矢量进行偏移,得到多个偏移运动矢量;其中,若当前块仅有单向预测模式,则使用第一参考帧对应的第二运动矢量作为当前块的选择运动矢量;若当前块为双向预测模式,则基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量作为当前块的选择运动矢量;第二优选模块,用于按照编码代价最小原则从多个偏移运动矢量选出当前块的最终运动矢量。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种帧间预测方法,该方法包括:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量;在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;基于第一参考帧对应的第二运动矢量对当前块进行运动补偿得到第一预测值;对第一预测值进行帧间预测滤波。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种帧间预测装置,该帧间预测装置包括:选择模块,用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量;搜索模块,用于在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;优选模块,用于计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;补偿模块,用于基于第一参考帧对应的第二运动矢量对当前块进行运动补偿得到第一预测值;滤波模块,用于对第一预测值进行帧间预测滤波。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种帧间预测方法,该方法包括:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量;
在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;若当前块为双向预测模式,则基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量;使用第三运动矢量对当前块进行运动补偿得到第一预测值;对第一预测值进行双向梯度校正。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种帧间预测装置,该帧间预测装置包括:选择模块,用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量;搜索模块,用于在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;优选模块,用于计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;双向预测模块,用于在当前块为双向预测模式时,基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量;补偿模块,用于使用第三运动矢量对当前块进行运动补偿得到第一预测值;校正模块,用于对第一预测值进行双向梯度校正。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种帧间预测方法,该方法包括:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量;在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;若当前块为双向预测模式,则基于两个参考帧列表中的第一参考帧对应的第二运动矢量构建单向运动矢量列表,单向运动矢量包括多个单向运动矢量;利用多个权重预测角度和多种参考权重值计算当前块的多个权重阵列;按照评价指标最小原则从多个加权组合中选出当前块的最终加权组合,每个加权组合包括一个权重阵列和两个不同的单向运动矢量。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种帧间预测装置,该帧间预测装置包括:选择模块,用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量;搜索模块,用于在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;第一优选模块,用于计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;列表建立模块,用于在当前块为双向预测模式时,基于两个参考帧列表中的第一参考帧对应的第二运动矢量构建单向运动矢量列表,单向运动矢量包括多个单向运动矢量;计算模块,用于利用多个权重预测角度和多种参考权重值计算当前块的多个权重阵列;第二优选模块,用于按照评价指标最小原则从多个加权组合中选出当前块的最终加权组合,每个加权组合包括一个权重阵列和两个不同的单向运动矢量。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种帧间预测方法,该方法包括:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量;在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;若当前块为双向预测模式,则基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量;按照评价指标最小原则从第三运动矢量以及至少一个补充运动矢量中选出当前块的最终运动矢量,补充运动矢量包括单向预测运动矢量和/或光流运动矢量,单向预测运动矢量包括第二运动矢量和/或第四运动矢量,第四运动矢量是在双向预测过程中对第二运动矢量更新而得到的,光流运动矢量是基于经过光流调整的第三运动矢量对应的预测值再次进行双向预测而得到的。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种帧间预测装置,该帧间预测装置包括:选择模块,用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量;搜索模块,用于在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量;第一优选模块,用于计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧;双向预测模块,用于在当前块为双向预测模式时,基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量;第二优选模块,用于按照评价指标最小原则从第三运动矢量以及至少一个补充运动矢量中选出当前块的最终运动矢量,补充运动矢量包括单向预测运动矢量和/或光流运动矢量,单向预测运动矢量包括第二运动矢量和/或第四运动矢量,第四运动矢量是在双向预测过程中对第二运动矢量更新而得到的,光流运动矢量是基于经过光流调整的第三运动矢量对应的预测值再次进行双向预测而得到的。
区别于现有技术,本申请的建立的历史运动矢量列表包括至少一个运动矢量及对应的精度,在运动搜索的过程中,选择的预测运动矢量MVP和当前运动矢量精度的关联性更强,从而提高预测运动矢量MVP选择的准确性,进而提高得到的第二运动矢量的准确性。
附图说明
图1是本申请帧间预测方法第一实施例的流程示意图;
图2是本申请帧间预测方法第二实施例的流程示意图;
图3是本申请当前块与空域相关块之间的位置关系一实施方式的示意图;
图4是本申请当前块与时域块之间的位置关系一实施方式的示意图;
图5是本申请帧间预测方法第三实施例的流程示意图;
图6是本申请提供的帧间预测方法第四实施例的流程示意图;
图7是本申请提供的帧间预测方法第五实施例的流程示意图;
图8是本申请提供的帧间预测方法第六实施例的流程示意图;
图9是本申请提供的帧间预测方法第七实施例的流程示意图;
图10是本申请BGC示意图;
图11是本申请提供的帧间预测方法第八实施例的流程示意图;
图12是本实施例的权重预测角度分布情况一实施方式的示意图;
图13是图11中步骤S806一实施方式的流程示意图;
图14是图11中步骤S806另一实施方式的流程示意图;
图15是本申请提供的帧间预测方法第九实施例的流程示意图;
图16是图15的步骤S904一实施方式的流程示意图;
图17是根据本实施例光流运动矢量一实施方式的流程示意图;
图18是本申请一种帧间预测装置第一实施例的结构示意图;
图19是本申请一种帧间预测装置第二实施例的结构示意图;
图20是本申请一种帧间预测装置第三实施例的结构示意图;
图21是本申请一种帧间预测装置第四实施例的结构示意图;
图22是本申请一种帧间预测装置第五实施例的结构示意图;
图23是本申请一种帧间预测装置第六实施例的结构示意图;
图24是本申请一种帧间预测装置第七实施例的结构示意图;
图25是本申请一种帧间预测装置第八实施例的结构示意图;
图26是本申请一种帧间预测装置第九实施例的结构示意图;
图27是本申请存储介质一实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,在不冲突的情况下,本文所描述的实施例可以与其它实施例相结合。
本申请实施例所涉及的技术方案不仅可能应用于现有的视频编码标准中(如H.264、HEVC等标准),还可能应用于未来的视频编码标准中(如H.266标准)。本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。下面先对本申请实施例可能涉及的一些概念进行简单介绍。
视频编码通常是指处理形成视频或视频序列的图片序列。在视频编码领域,术语“图片(picture)”、“帧(frame)”或“图像(image)”可以用作同义词。本文中使用的视频编码表示视频编码或视频解码。视频编码在源侧执行,通常包括处理(例如,通过压缩)原始视频图片以减少表示该视频图片所需的数据量,从而更高效地存储和/或传输。视频解码在目的地侧执行,通常包括相对于编码器作逆处理,以重构视频图片。实施例涉及的视频图片“编码”应理解为涉及视频序列的“编码”或“解码”。编码部分和解码部分的组合也称为编解码(编码和解码)。视频序列包括一系列图像(picture),图像被划分为多个块(block)。视频编码以块为单位进行编码处理。
需要说明的是,在互相不冲突的前提下,本申请实施例可以进行组合。
图1是本申请帧间预测方法第一实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图1所示的流程顺序为限。如图1所示,本实施例可以包括:
S101:分别在从候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量,在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
其中,历史运动矢量列表包括至少一个运动矢量及该运动矢量对应的精度,第二运动矢量的精度由第一运动矢量的精度确定。也就是说,若MVP来自候选运动矢量列表,可以遍历所有允许的运动矢量精度,例如1/4像素精度,1/2像素精度,1像素精度,2像素精度、4像素精度,来进行运动搜索。若MVP来自历史运动矢量列表,则选择与历史运动矢量对应的运动矢量精度相关的运动矢量精度进行运动搜索。
在一个具体实施方式中,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量,第二运动矢量的精度为从历史运动矢量列表中选出的第一运动矢量对应的精度。
在另一个具体实施方式中,在以第一运动矢量为起点进行运动搜索时,可以依照一定的顺序遍历所有或者部分精度。在遍历每个搜索运动精度时,若历史运动矢量列表中没有与当前搜索精度相同的MVP,此时可以选择与当前搜索精度最相近的运动矢量精度对应的MVP作为第一运动矢量,例如,当前搜索精度为1/2,此时历史运动矢量列表中的多个MVP的运动矢量精度包括1/4,1,2,则选择与1/2最相近的1/4运动矢量精度所对应的预测运动矢量作为第一运动矢量。或者类似现有的将历史运动矢量列表的最后一个预测运动矢量作为第一运动矢量,在此不做具体限制。
在以第一运动矢量为起点进行运动搜索时,得到每个参考帧的第二运动矢量的精度与第一运动矢量的精度相关,即得到每个参考帧的第二运动矢量的精度与第一运动矢量的精度相同或相近。例如,以1/4精度的第一运动矢量搜索时,得到每个参考帧的第二运动矢量的精度为1/2。又或者,以1/4精度的第一运动矢量搜索时,得到每个参考帧的第二运动矢量的精度包含多种情况,如可以按照与第一运动矢量精度的接近程度依次遍历所有或部分精度。具体地,得到每个参考帧的第二运动矢量的精度可以为1/4、1/2、1、2或4。
S102:计算每个所述第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
具体地,编码代价例如可以是率失真代价,具体可用交差相关函数(CCF)、均方误差函数(MSE)、平均绝对误差(MAE)等计算本实施例中每个第二运动矢量的编码代价。
S103:基于第一参考帧对应的第二运动矢量对当前块进行运动补偿。
若当前块仅有单向预测模式,则使用第一参考帧及其对应的第二运动矢量对当前块进行运动补偿,得到当前块的预测值,并可以根据预测值计算帧间预测的编码代价。
在本申请中,当前块仅有单向预测模式意思是说,若当前块为P块,则仅能够对当前块进行单向预测。
若当前块为双向预测模式,则基于第一参考帧对应的第二运动矢量进行双向预测得到第三运动矢量,双向预测的具体过程参见后续实施例的描述。第三运动矢量为双向运动矢量,然后可以利用第三运动矢量对当前块进行运动补偿,得到当前块的预测值。
在本申请中,当前块为双向预测模式意思是说,若当前块为B块,需对其进行双向预测时,首先进行单向预测,再进行双向预测。
传统的历史运动矢量列表建立过程仅仅将运动矢量引入到历史运动矢量列表,而没有将该运动矢量的精度引入历史运动矢量列表。本申请发明人提出将运动矢量的对应的精度引入历史运动矢量列表,并在运动搜索过程中,根据当前的运动搜索精度从历史运动矢量列表中选出的与当前的运动搜索精度相等的历史运动矢量,将其作为起点进行运动搜索,得到每个参考帧的第二运动矢量。
本实施例中选择的MVP和当前运动矢量精度的关联性更强,从而提高MVP选择的准确性,进而提高帧间预测的准确性。另外,本实施例在以选择的第一运动矢量为起点进行运动搜索时,得到的每个参考帧的第二运动矢量的精度由第一运动矢量确定,也即第二运动矢量的精度与第一运动矢量的精度相关,通过这种方式能够加快帧间预测的速度。
参阅图2,图2是本申请帧间预测方法第二实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图2所示的流程顺序为限。该方法包括以下步骤:
S201:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
其中候选运动矢量列表包括当前块的空域候选矢量和/或时域候选矢量,空域候选矢量为当前块的空域相关块的运动矢量,时域候选矢量为当前块的时域同位块的运动矢量。候选运动矢量列表包括当前块的空域候选矢量和/或时域候选矢量。空域候选矢量为当前块的空域相关块的运动矢量,当前块的空域相关块包括当前块的至少一个邻块。当前块与邻块均属于当前帧,邻块位于当前块的已编码侧,例如,编码方向为从左向右从上向下时,邻块可以位于当前块的左侧和上方。
在一个具体实施方式中,包括两个运动矢量列表,即候选运动矢量列表和历史运动矢量列表。
可选地,在每个运动矢量列表下选择第一运动矢量时,选择的数量可以大于等于1,也即可以选择多个第一运动矢量作为运动搜索起点搜索。例如,在候选运动矢量列表下选择第一运动矢量列表时,可以选择一个或多个空域候选矢量作为第一运动矢量;可以选择一个或多个时域候选矢量作为第一运动矢量;或者可以既包括空域候选矢量又包括时域候选矢量的多个第一运动矢量。
可选地,可以在候选运动矢量列表中选择多个可用空域候选矢量和/或时域候选矢量,并根据该多个空域候选矢量和/时域候选矢量第一运动矢量作为运动搜索的起点。例如可以将该多个空域候选矢量和/时域候选矢量求取的平均值作为第一运动矢量。更具体地,可以将多个空域候选矢量的平均值作为第一运动矢量,或者将多个时域候选矢量的平均值作为第一运动矢量,或者将多个空域候选矢量和多个时域候选矢量的平均值作为第一运动矢量。
同样,可以在候选运动矢量列表中选择多个历史运动矢量,并根据该多个历史运动矢量计算第一运动矢量作为第一运动矢量。
在另一具体实施方式中,候选运动矢量列表包括空域候选运动矢量列表和时域候选运动矢量列表,其中,空域候选运动矢量列表包括当前块的空域候选矢量,时域候选运动矢量列表包括当前块的时域候选矢量。也就是说,本实施方式包括三个运动矢量列表,分别为空域候选运动矢量列表和时域候选矢量列表以及历史运动矢量列表。在这种情况下,步骤S201具体为当前块分别从空域候选运动矢量列表和时域候选列表以及历史运动矢量列表中选择第一运动矢量。
可选地,在每个运动矢量列表下选择第一运动矢量时,选择的数量可以大于等于1,也即可以选择多个第一运动矢量作为运动搜索起点搜索。
可选地,可以在空域候选运动矢量列表中选择多个可用空域候选矢量,并根据该多个空域候选矢量获取一第一运动矢量作为运动搜索的起点。例如可以将该多个空域候选矢量求取的平均值作为第一运动矢量。同样可以在时域候选运动矢量列表中选择多个可用时域候选矢量,并根据该多个时域候选矢量获取第一运动矢量。可以在历史运动矢量列表中选择多个可用历史运动矢量,并根据该多个历史运动矢量获取第一运动矢量。
具体地,在利用空域候选矢量建立候选运动矢量列表时,首先判断每一个邻块的可用性,若邻块可用,则获取邻块对应的运动矢量作为空域候选矢量,并将其填入候选运动矢量列表。
本实施例可以先根据邻块是否在图像内部、是否已编码以及是否帧内编码来判断可用性。若邻块在图像内部、已编码,且不是帧内编码,则认为该邻块可用。
可选地,本实施例在步骤S201之前,可以包括对选择的空域候选矢量和/或时域候选矢量进行查重后填入候选运动矢量列表,对选择的历史运动矢量进行查重后填入候选运动矢量列表。
或者说步骤S201之前,可以包括对空域候选矢量、时域候选矢量和历史运动矢量中的运动矢量中的至少两种进行查重。
具体地,在确定一编码块(已编码)可用之后,进一步对该编码块对应的运动信息查重,其中运动信息包括运动矢量信息和参考帧信息。将通过查重的运动信息填入相应的运动矢量列表。具体地,将该编码块对应的运动信息与空域候选运动矢量列表、时域候选运动矢量列表以及历史运动矢量列表中所有的运动信息进行比对,若空域候选运动矢量列表、时域候选运动矢量列表以及历史运动矢量列表均未出现该编码块的运动信息,则将该编码块的运动信息填入对应的候选运动矢量列表中。反之,若空域候选运动矢量列表、时域候选运动矢量列表以及历史运动矢量列表中任意一个列表中有该编码块的运动信息,则不将该编码块的运动信息填入对应的运动矢量列表。
或者,将该编码块对应的运动信息与候选运动矢量列表以及历史运动矢量列表中所有的运动信息进行比对,若候选运动矢量列表以及历史运动矢量列表均未出现该编码块的运动信息,则将该编码块的运动信息填入对应的候选运动矢量列表中。反之,若候选运动矢量列表、历史运动矢量列表任意一个列表中有该编码块的运动信息,则不将该编码块的运动信息填入对应的运动矢量列表。
参阅图3,图3是本申请当前块与空域相关块之间的位置关系一实施方式的示意图,图3中总共有5个当前块的邻块,即A,C,D,F,G这5个邻块位于当前块的左侧和上方,均为已编码的邻块。
在建立候选运动矢量列表时,首先按照一定的顺序依次判断上述每个邻块的可用性,若邻块可用,则将该邻块对应的运动矢量作为一个空域候选矢量并入候选运动矢量列表。可选地,各邻块检查顺序依次为F->G->C->A->D。
时域候选矢量为当前块的时域同位块的运动矢量,而当前块的时域同位块包括当前块的至少一个角子块和/或中心子块的时域同位块。其中,时域同位块为当前块的至少一个角子块和/或中心子块在当前帧的参考帧列表的一个参考帧中的同位块,例如,第一个参考帧(参考帧索引为0)中的同位块。
在利用时域候选矢量建立候选运动矢量列表时,同样需要判断每个时域同位块的可用性。在本实施例中,若时域同位块在图像内部、已编码,且不是帧内编码,则认为该时域同位块可用。
可选地,在确定当前块的某一时域同位块可用之后,可以进一步对该时域同位块对应的时域候选矢量进行查重,将通过查重的时域候选矢量填入候选运动矢量列表。
参阅图4,图4是本实施例当前块与时域块之间的位置关系一实施方式的示意图。如图4所示,图4包括当前块的4个角子块a,b,c,d和一个中心子块e,则当前块的时域同位块包括当前块的至少一个角子块和/或中心子块的时域同位块。
具体地,将当前块的时域同位块的运动矢量进行相应缩放后填入候选运动矢量列表。
可以理解,在将已编码的块所对应的运动矢量添加进历史运动矢量列表时,同样需要对历史运动矢量进行查重,也即在时域候选矢量、空域候选矢量的基础上进行查重,若此时时域候选矢量、空域候选矢量没有该历史运动矢量,则将该历史运动矢量填入历史运动矢量以及其对应的运动矢量精度填入历史运动矢量列表相应的位置。
S202:在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
S203:计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
编码代价例如可以是率失真代价,具体可用交差相关函数(CCF)、均方误差函数(MSE)、平均绝对误差(MAE)等代表编码代价。并从中选出编码代价最小的第二运动矢量。
S204:基于第一参考帧对应的第二运动矢量对当前块进行运动补偿。
本实施例提供的帧间预测方法在构建候选运动矢量列表时,引入时域候选矢量,从而增加第一运动矢量的选取范围,进而增加以第一运动矢量作为运动搜索起点时,运动搜索的范围,最终提高帧间预测的精度;另外,本实施例考虑类别间查重,即对历史运动矢量、空域候选矢量和时域候选矢量中的至少两个进行查重,防止重复计算,减少编码耗时。
参阅图5,图5是本申请帧间预测方法第三实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图5所示的流程顺序为限。该方法包括以下步骤:
S301:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
S302:在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
S303:计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
S304:若当前块为双向预测模式,则基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量。
S305:分别利用多个修正运动矢量对第三运动矢量进行修正,得到多个修正后的第三运动矢量。
具体地,利用多个修正运动矢量对第三运动矢量在两个方向上的运动矢量进行修正,为方便起见,以下将第三运动矢量在两个方向上的运动矢量分别称为I方向上的运动矢量和II方向上的运动矢量。
在I方向上的运动矢量所对应的参考帧中找出I方向上的多个修正运动矢量。具体为,以I方向上的运动矢量的末端为起点,分别以不同的距离以及不同的角度得到多个修正运动矢量,计算I方向上的修正运动矢量和I方向上的运动矢量之和以得到多个I方向上的修正后的运动矢量。
而根据镜像原则,能够在II方向上的运动矢量所对应的参考帧中找出II方向上的多个修正运动矢量,并计算II方向上的修正运动矢量和II方向上的运动矢量之和以得到多个II方向上的修正后的运动矢量。
最终可根据I方向上的修正后的运动矢量和根据该I方向上的修正后的运动矢量得到的II方向上的修正后的运动矢量获取多个修正后的第三运动矢量。
S306:利用每个修正后的第三运动矢量对应的预测值计算修正后的第三运动矢量的评价指标。
S307:选择评价指标最小的修正后的第三运动矢量对当前块进行运动补偿。
可选的,利用每个修正后的第三运动矢量对当前块进行运动补偿,并计算其基于SAD(Sum of Absolute Difference,绝对差值和)的RDCOST(Rate Distortion cost,率失真代价)作为评价指标,选出RDCOST最小的修正后的第三运动矢量对当前块进行运动补偿。
本实施例若当前块为双向预测模式,利用修正运动矢量对第三运动矢量进行修正,并选出评价指标最小的修正后的第三运动矢量对当前块进行运动补偿。通过这种方式,能够进一步提高帧间预测的精度。
参阅图6,图6是本申请提供的帧间预测方法第四实施例的流程示意图,需注意的是,若有实质上相同的结果,本实施例并不以图6所示的流程顺序为限。该方法包括:
S401:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
S402:利用偏移值列表和偏移方向列表对第一运动矢量进行偏移,得到多个偏移运动矢量。
偏移值列表表示第一运动矢量所要偏移的距离。具体地,例如,本申请一实施例中,如表1所示,提供一偏移距离列表,该偏移距离列表包括偏移距离索引(Distance IDX)及偏移距离索引所对应的偏移距离(Pixel distance),偏移距离以像素(pel)为单位。如表1所示,偏移距离可以为1/4个像素单位、1/2个像素单位、1个像素单位,2个像素单位以及4个像素单位等等。
如表2所示,提供一偏移方向列表,Direction IDX表示偏移方向索引,偏移方向表示运动矢量偏移值相对于起始点的方向。如表2所示,第一运动矢量偏移方向可以是水平向右、水平向左、竖直向上竖直向下。
表 1偏移距离列表
Distance IDX | 0 | 1 | 2 | 3 | 4 |
Pixel distance | 1/4-pel | 1/2-pel | 1-pel | 2-pel | 4-pel |
表 2偏移方向列表
Direction IDX | 00 | 01 | 10 | 11 |
x-axis | + | – | N/A | N/A |
y-axis | N/A | N/A | + | – |
S403:在当前块的参考帧列表中的每个参考帧,以偏移运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
S404:计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
S405:基于第一参考帧对应的第二运动矢量对当前块进行运动补偿。
若当前块仅有单向预测模式,则使用第一参考帧对应的第二运动矢量对当前块进行运动补偿。若当前块为双向预测模式,则基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量,使用第三运动矢量对当前块进行运动补偿。其中,第三运动矢量具有两个方向上的运动矢量。
在计算运动矢量残差时,本实施例提供两种算法,以下介绍第一种算法。
具体地,若当前块仅有单向预测模式,则计算第二运动矢量与其对应的运动搜索起点之间的差值作为运动矢量残差。若当前块为双向预测模式,则计算第三运动矢量与第二运动矢量对应的运动搜索起点之间的差值作为运动矢量残差。
由于计算运动矢量残差是基于经第一运动矢量偏移之后的偏移运动矢量的,因此对当前块编码得到当前块的码流中应该包括偏移值索引和偏移方向索引,偏移值索引用于表示第二运动矢量对应的运动搜索起点所用的偏移值在偏移值列表中的索引,偏移方向索引用于表示第二运动矢量对应的运动搜索起点所用的偏移方向在偏移方向列表中的索引。
第二种计算运动矢量残差的方法具体为:
若当前块仅有单向预测模式,则计算第二运动矢量与其对应的第一运动矢量之间的差值作为运动矢量残差。若当前块为双向预测模式,则计算第三运动矢量与其对应的第一运动矢量之间的差值作为运动矢量残差。
由于计算运动矢量残差是基于第一运动矢量,因此对当前块编码得到当前块的码流中不需包括偏移值索引和偏移方向索引。
在本实施例中,通过对运动搜索的起始点即第一运动矢量进行修正,从而实现对运动信息进行进一步校正,有效提高帧间预测的准确性。
参阅图7,图7是本申请提供的帧间预测方法第五实施例的流程示意图,需注意的是,若有实质上相同的结果,本实施例并不以图7所示的流程顺序为限。该方法包括以下步骤:
S501:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
S502:在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
S503:计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
S504:若当前块仅有单向预测模式,则使用第一参考帧对应的第二运动矢量作为当前块的选择运动矢量。若当前块为双向预测模式,则基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量作为当前块的选择运动矢量。
S505:利用偏移值列表和偏移方向列表对选择运动矢量进行偏移,得到多个偏移运动矢量。
步骤S505对当前块的选择运动矢量的偏移过程与本申请帧间预测方法第四实施例的步骤S402相似,此处不再赘述。
S506:计算每个偏移运动矢量的编码代价,并按照编码代价最小原则从多个偏移运动矢量选出当前块的最终运动矢量。
可以理解,由于在本实施例中计算运动矢量残差是基于最终运动矢量的,因此对当前块编码得到当前块的码流中应该包括偏移值索引和偏移方向索引,偏移值索引用于表示最终运动矢量对应的运动搜索起点所用的偏移值在偏移值列表中的索引,偏移方向索引用于表示最终运动矢量对应的运动搜索起点所用的偏移方向在偏移方向列表中的索引。
当然,本实施例出于减小帧间预测的复杂性,直接在步骤S504中判断当前块所属的帧是否具有双向参考帧,如果具有双向参考帧,则直接基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量作为当前块的选择运动矢量,并在后续通过对选择运动矢量进行偏移,得到多个偏移运动矢量,并将代价最小的偏移运动矢量作为当前块的最终运动矢量。
在本实施例中,通过对运动搜索得到的最佳运动矢量即当前块的选择运动矢量进行修正,从而实现对最终运动信息进行进一步校正,有效提高帧间预测的准确性。
可选地,不论当前块所在的帧是否具有双向参考帧,直接在步骤S503后,利用偏移值列表和偏移方向列表对编码代价最小的第二运动矢量进行偏移,得到多个偏移运动矢量,按照编码代价最小原则从多个偏移运动矢量选出当前块的最终运动矢量。参阅图8,图8是本申请提供的帧间预测方法第六实施例的流程示意图,需注意的是,若有实质上相同的结果,本实施例并不以图8所示的流程顺序为限。该方法包括以下步骤:
S601:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
S602:在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
S603:计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
S604:基于第一参考帧对应的第二运动矢量对当前块进行运动补偿得到第一预测值。
S605:对第一预测值进行帧间预测滤波。
帧间预测滤波是为了消除帧间预测导致的预测块与周围像素之间的空域不连续性。具体地,首先从已经编码完成的编码块(即已经重建的编码单元)中获取与当前块相邻的重建像素点,作为滤波的参考像素点,在本实施例中,可以采用当前像素的正上方、正左方、左下方和右上方的4个相邻重建参考像素构建帧内预测值。
可选地,通过率失真优化(Rate distortionoptimization,RDO)决策自适应地选择是否对预测块进行滤波。
具体地,每一个编码块中均传输1-bit的标记到码流中,用于标识是否使用了预测块滤波。在解码端对每一个编码块,读取码流中的1-bit标记,根据标记进行解码,根据从码流中读取的1-bit标记确定解码端是否使用预测块滤波。
然后采用该帧内预测值与帧间预测值加权计算获取最终的帧间预测值。
本实施例提出的预测块滤波器是一个三抽头的滤波器,该滤波器可表示为:
P1(x,y)=f(x)*P(-1,y)+f(y)*P(x,-1)+(1-f(x)-f(y))*P(x,y)
0<=x,y<N
对于一个预测像素点,使用与它同一行P(-1,y)和同一列P(x,-1)的两个参考像素点进行滤波,f(x)和f(y)分别为这两个参考像素点的滤波系数,参阅表3,表3是本实施例提供的滤波系数表,f(x)和f(y)均为查下表得到的滤波系数。P(x,y)为预测之后得到的预测像素点。P(x,y)为进行预测块滤波之后的像素点。x、y为预测块内的坐标,x=0表示预测块中的第一列,y=0表示预测块中的第一行。N为当前预测块尺寸。
表 3 滤波系数表
块宽/高 | 滤波系数(按照行数/列数递减) |
4 | 24, 6, 2, 0 |
8 | 44, 25, 14, 8, 4, 2, 1, 1 |
16 | 40, 27, 19, 13, 9, 6, 4, 3, 2, 1 |
32 | 36, 27, 21, 16, 12, 9, 7, 5, 4, 3 |
64 | 52, 44, 37, 31, 26, 22, 18, 15, 13, 11 |
本实施例提供的帧间预测方法借助选取率失真代价最小的目标滤波处理方式对预测块进行处理,可以有效去除帧间预测得到的预测块中的噪声及边界不连续性,从而得到更准确的预测结果。
参阅图9,图9是本申请提供的帧间预测方法第七实施例的流程示意图,需注意的是,若有实质上相同的结果,本实施例并不以图9所示的流程顺序为限。该方法包括以下步骤:
S701:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
S702:在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
S703:计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
S704:若当前块为双向预测模式,则基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量。
S705:使用第三运动矢量对当前块进行运动补偿得到第一预测值。
S706:对第一预测值进行双向梯度校正。
在双向帧间预测中,对于运动补偿完后的两个参考预测块,为得到当前块预测值,通常会进行双向光流(Bi-directional optical flow,BIO)或者普通的加权平均操作得到当前预测块。但是由于两个参考预测块对当前预测块的像素值来说,其误差是随机差异化的,无法确定是其两个预测块的平均值,故本实施例采用双向预测梯度值修正(Bi-directional Gradient Correction,BGC)的方式对预测值进行校正,以提高运动矢量预测精度。
具体地,在本实施例中预测值修正计算主要有三种方式,具体公式如下:
其中,pred0,表示双向预测中第一预测方向List0的预测值。pred1表示第二预测方向List1的预测值。predBI表示List0和List1方向预测值的平均值,且计算公式为(pred0+pred1)>>1。k表示修正强度,K可以预设为3。IbgFlag为0表示不进行梯度修正,为1表示进行梯度修正。Pred为修正后的预测值。
通过比较这三种计算方式的代价,选取最佳的一种模式进行编码,同时把标记该模式的句法打入码流。具体示意图如下,图10所示,其中,V2为predBI,V1为predBI+(pred0+pred1)>>k,V3为predBI+(pred0-pred1)>>k。
本实施例采用双向预测梯度值修正的方式对预测值进行校正,以提高帧间预测的准确性。
参阅图11,图11是本申请提供的帧间预测方法第八实施例的流程示意图,需注意的是,若有实质上相同的结果,本实施例并不以图11所示的流程顺序为限。该方法包括以下步骤:
S801:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
S802:在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
S803:计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
S804:若当前块为双向预测模式,则基于两个参考帧列表中的第一参考帧对应的第二运动矢量构建单向运动矢量列表,单向运动矢量包括多个单向运动矢量。
S805:利用多个权重预测角度和多种参考权重值计算当前块的多个权重阵列。
本实施例中引入帧间角度加权预测模式(AWP)来进行双向预测。AWP中首先设置当前块周边位置(整像素位置以及亚像素位置)的参考权重值,而后利用权重预设角度结合当前块的尺寸得到每个像素位置对应的权重值,通过最终得到的权重阵列实现两个不同的帧间预测值的加权。
图12是本实施例的权重预测角度分布情况一实施方式的示意图。如图12所示,本实施例总共有8种权重预测角度可供选择,分别为图中的角度1至角度8,图中线段和其中支持的权重预测角度的斜率绝对值共五种,分别是{水平,垂直,1,2,1/2}。总共有7种权重参考值,因此,一共有56种权重阵列。
S806:按照评价指标最小原则从多个加权组合中选出当前块的最终加权组合,每个加权组合包括一个权重阵列和两个不同的单向运动矢量。
可选地,参阅图13,图13是图11中步骤S806一实施方式的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图13所示的流程顺序为限。步骤S806具体可包括:
S8061:分别利用每个单向运动矢量对当前块进行运动补偿得到单向预测值。
S8062:对于每个权重阵列,分别利用每个单向预测值计算单向运动矢量的加权代价,加权代价为单向预测值的第一代价与对应权重的乘积,对应权重为权重阵列或者权重阵列的互补阵列,权重阵列及其互补阵列之和为单元阵列。
单向预测值的第一代价用于评价单向预测值与当前块的原始值之间的误差,例如绝对误差和SAD、差值均方和SSD等。现有技术中需要为每个单向预测值计算两个加权代价,即单向预测值与权重阵列的乘积以及单向预测值与权重阵列的互补阵列的乘积。在后续选择时需要遍历这些不同的组合。而在该实施方式中根据单向运动矢量所在的参考帧列表确定所使用的权重,只计算一个加权代价,从而减少计算量。
S8063:为每个权重阵列选出加权代价最小的一对属于不同参考帧列表的单向运动矢量,权重阵列及选出的一对单向运动矢量组成候选加权组合。
S8064:从所有权重列表对应的候选加权组合中选出评价指标最小的一个作为最终加权组合。
参阅图14,图是图14中步骤S806的另一实施方式的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图14所示的流程顺序为限。步骤S806具体可包括:
S8065:分别利用每个单向运动矢量对当前块进行运动补偿得到单向预测值。
S8066:对于每个权重阵列,分别利用每个单向预测值计算单向运动矢量的第一加权代价和第二加权代价,第一加权代价为单向预测值的第一代价与对应权重的乘积,对应权重为权重阵列,第二加权代价为单向预测值的第一代价与对应权重的乘积,对应权重为权重阵列的互补阵列,权重阵列和互补阵列之和为单元阵列。
S8067:为每个权重阵列选出第一加权代价与第二加权代价之和最小的一对属于不同参考帧列表的单向运动矢量,实施例权重阵列及选出的一对单向运动矢量组成候选加权组合,权重阵列及选出的一对单向运动矢量组成候选加权组合。
S8068:从所有权重列表对应的候选加权组合中选出评价指标最小的一个作为最终加权组合。
在本实施例提供的帧间预测方法引入权重预测模型,在按照评价指标最小原则为当前块选出最终加权组合时,根据单向运动矢量所在的参考帧列表确定所使用的权重,只计算一个加权代价,从而减少计算量。
参阅图15,图15是本申请提供的帧间预测方法第九实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图15所示的流程顺序为限。该方法包括以下步骤:
S901:分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
S902:在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
S903:计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
S904:若当前块为双向预测模式,则基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量。
具体地,参阅图16,图16是图15的步骤S904一实施方式的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图16所示的流程顺序为限。步骤S904包括:
S9041:当前块的参考帧列表包括第一参考帧列表和第二参考帧列表,使用当前块的原始值、第一参考帧列表中的第一参考帧及其对应的第二运动矢量计算第一编码代价,并使用当前块的原始值、第二参考帧列表中的第一参考帧及其对应的第二运动矢量计算第二编码代价;
S9042:将第一编码代价和第二编码代价进行比较,其中较大的一个对应的参考帧列表记为参考帧列表A,另一个记为参考帧列表B;
S9043:将当前块的原始值替换为第一原始值,在参考帧列表A中再次进行运动搜索和编码代价比较,得到编码代价最小的第二参考帧的第四运动矢量,第一原始值为当前块的原始值的2倍与参考帧列表B对应的预测值之差;
S9044:将当前块的原始值替换为第二原始值,在参考帧列表B中再次进行运动搜索和编码代价比较,得到编码代价最小的第二参考帧的第四运动矢量,第二原始值为当前块的原始值的2倍与利用参考帧列表A中第二参考帧的第四运动矢量进行运动补偿得到的预测值之差;
S9045:比较参考帧列表B中的第一参考帧的第二运动矢量的编码代价和参考帧列表B中的第二参考帧的第四运动矢量的编码代价,选择编码代价更小的运动矢量作为参考帧列表B的最终运动矢量;
S9046:将参考帧列表A中的第二参考帧的第四运动矢量和参考帧列表B的最终运动矢量组合成为第三运动矢量。
S9041-S9046描述的是双向预测过程。
S905:按照评价指标最小原则从第三运动矢量以及至少一个补充运动矢量中选出当前块的最终运动矢量,补充运动矢量包括单向预测运动矢量和/或光流运动矢量,单向预测运动矢量包括第二运动矢量和/或第四运动矢量,第四运动矢量是在双向预测过程中对第二运动矢量更新而得到的,光流运动矢量是基于经过光流调整的第三运动矢量对应的预测值再次进行双向预测而得到的。
可选的,参阅图17,图17是根据获取光流运动矢量一实施方式的流程示意图。具体地,在基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量之后包括:
S9050:利用第三运动矢量对当前块进行运动补偿得到双向预测值。采用双向光流对双向预测值进行调整得到光流预测值。
S9051:将当前块的原始值替换为光流预测值再次进行双向预测得到光流运动矢量。
传统概念的双向预测对两个已编码的块进行加权平均得到当前块的最优预测值。但是,即使经过双向预测后,在当前块的部分区域存在剩余的运动,有时候存在剩余运动的区域比允许的最小预测块还要小,于是需要一种方式去对每一个像素进行运动补偿。而不是只标志整个块的运动矢量。
通常,双向光流bi-directional optical flow (BIO)用于通过光流为当前块中的每个像素或子块计算运动矢量,并且基于为每个像素或子块计算的运动矢量值来更新相应像素或子块的预测值。BIO能对双向预测后每个像素进行运动补偿而不增加标志信息。于是这种对每个像素进行补偿而不增加标志信息的方法,可以带来B帧编码效率的提升。
双向光流bi-directional optical flow (BIO)能对双向预测后每个像素进行运动补偿而不增加标志信息。
具体地,BIO预测值调整的最终结果:
predBIO(x,y)=(I(0)(x,y)+I(1)(x,y)+b(x,y)+1)>>1
其中I(0)(x,y),I(1)(x,y)分别为两个参考帧方向上的参考块对应的位置预测值,b(x,y)为双向光流调整的偏移值。
在本实施例中,若当前块为双向预测模式时,将单向最佳代价放入双向代价进行一起比较,并引入BIO技术,改进代价比较过程,保证获取的当前块的运动矢量为最佳的运动矢量。
图18是本申请一种帧间预测装置第一实施例的结构示意图。如图18所示,该装置可以包括:搜索模块11,优选模块12以及补偿模块13。
其中,搜索模块11可以用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量,在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。其中,第二运动矢量的精度为从历史运动矢量列表中选出的第一运动矢量对应的精度。
优选模块12可以用于计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
补偿模块13,用于基于第一参考帧对应的第二运动矢量对当前块进行运动补偿。
图19是本申请一种帧间预测装置第二实施例的结构示意图。如图19所示,该装置可以包括:选择模块21、搜索模块22,优选模块23以及补偿模块24。
其中,选择模块21可以用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
搜索模块22,用于在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
优选模块23用于计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
补偿模块24用于基于第一参考帧对应的第二运动矢量对当前块进行运动补偿。
图20是本申请一种帧间预测装置第三实施例的结构示意图。如图20所示,该装置可以包括:选择模块31、搜索模块32、优选模块33、双向预测模块34、修正模块35、评价模块36以及补偿模块37。
其中,选择模块31可以用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
搜索模块32用于在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
优选模块33用于计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
双向预测模块34用于若当前块为双向预测模式,则基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量。
修正模块35用于分别利用多个修正运动矢量对第三运动矢量进行修正,得到多个修正后的第三运动矢量。
评价模块36用于利用每个修正后的第三运动矢量对应的预测值计算修正后的第三运动矢量的评价指标。
补偿模块37用于选择评价指标最小的修正后的第三运动矢量对当前块进行运动补偿。
图21是本申请一种帧间预测装置第四实施例的结构示意图,如图21所示,该装置可以包括:选择模块41、偏移模块42、搜索模块43,优选模块44以及补偿模块45。
选择模块41用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
偏移模块42用于利用偏移值列表和偏移方向列表对第一运动矢量进行偏移,得到多个偏移运动矢量。
搜索模块43用于在当前块的参考帧列表中的每个参考帧,以偏移运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
优选模块44用于计算每个所述第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
补偿模块45用于基于第一参考帧对应的第二运动矢量对当前块进行运动补偿。
图22是本申请一种帧间预测装置第五实施例的结构示意图,如图22所示,该装置可以包括:选择模块51、搜索模块52、第一优选模块53、偏移模块54以及第二优选模块55。
其中,选择模块51用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
搜索模块52用于在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
第一优选模块53用于计算每个所述第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
偏移模块54用于利用偏移值列表和偏移方向列表对选择运动矢量进行偏移,得到多个偏移运动矢量。
其中,若当前块仅有单向预测模式,则使用第一参考帧对应的第二运动矢量作为当前块的选择运动矢量。若当前块为双向预测模式,则基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量作为当前块的选择运动矢量。
第二优选模块55还用于按照编码代价最小原则从多个偏移运动矢量选出当前块的最终运动矢量。
图23是本申请一种帧间预测装置第六实施例的结构示意图。如图23所示,该装置可以包括:选择模块61、搜索模块62、优选模块63、补偿模块64以及滤波模块65。
其中,选择模块61用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
搜索模块62用于在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
优选模块63用于计算每个所述第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
补偿模块64用于基于第一参考帧对应的第二运动矢量对当前块进行运动补偿得到第一预测值。
滤波模块65用于对第一预测值进行帧间预测滤波。
图24是本申请一种帧间预测装置第七实施例的结构示意图。如图24所示,该装置可以包括:选择模块71、搜索模块72、优选模块73、双向预测模块74、补偿模块75以及校正模块76。
其中,选择模块71用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
搜索模块72用于在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
优选模块73用于计算每个第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
双向预测模块74用于在当前块为双向预测模式时,基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量。
补偿模块75用于使用第三运动矢量对当前块进行运动补偿得到第一预测值。
校正模块76用于对第一预测值进行双向梯度校正。
图25是本申请一种帧间预测装置第八实施例的结构示意图。如图25所示,该装置可以包括:选择模块81、搜索模块82、第一优选模块83、列表建立模块84、计算模块85、以及第二优选模块86。
其中,选择模块81用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
搜索模块82用于在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
第一优选模块83用于计算每个所述第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
列表建立模块84用于在当前块为双向预测模式时,基于两个参考帧列表中的第一参考帧对应的第二运动矢量构建单向运动矢量列表,单向运动矢量包括多个单向运动矢量。
计算模块85用于利用多个权重预测角度和多种参考权重值计算当前块的多个权重阵列。
第二优选模块86用于按照评价指标最小原则从多个加权组合中选出当前块的最终加权组合,每个加权组合包括一个权重阵列和两个不同的单向运动矢量。
图26是本申请一种帧间预测装置第九实施例的结构示意图。如图26所示,该装置可以包括:选择模块91、搜索模块92、第一优选模块93、双向预测模块94以及第二优选模块95。
其中,选择模块91,用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量。
搜索模块92用于在当前块的参考帧列表中的每个参考帧,以第一运动矢量为起点进行运动搜索,得到每个参考帧的第二运动矢量。
第一优选模块93用于计算每个所述第二运动矢量的编码代价,并从参考帧列表中所有参考帧的第二运动矢量中选出编码代价最小的一个,编码代价最小的第二运动矢量对应的参考帧为第一参考帧。
双向预测模块94用于在当前块为双向预测模式时,基于第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量。
第二优选模块95用于按照评价指标最小原则从第三运动矢量以及至少一个补充运动矢量中选出当前块的最终运动矢量,补充运动矢量包括单向预测运动矢量和/或光流运动矢量,单向预测运动矢量包括第二运动矢量和/或第四运动矢量,第四运动矢量是在双向预测过程中对第二运动矢量更新而得到的,光流运动矢量是基于经过光流调整的第三运动矢量对应的预测值再次进行双向预测而得到的。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
图27是本申请存储介质一实施例的结构示意图。如图27所示,本申请实施例的存储介质120存储有程序指令121,该程序指令121被执行时实现本申请上述实施例提供的方法。其中,该程序指令121可以形成程序文件以软件产品的形式存储在上述存储介质120中,以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质120包括:U盘、移动硬盘、只读存储器(ROM,Read-ONly Memory)、随机存取存储器(RAM,RaNdomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
本申请提供的帧间预测方法,选择的MVP和当前运动矢量精度的关联性更强,从而提高MVP选择的准确性,进而提高帧间预测的准确性。另外,本实施例在以选择的第一运动矢量为起点进行运动搜索时,得到的每个参考帧的第二运动矢量的精度由第一运动矢量确定,也即第二运动矢量的精度与第一运动矢量的精度相关,通过这种方式能够加快帧间预测的速度。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围。
Claims (25)
1.一种帧间预测方法,其特征在于,包括:
分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量,在所述当前块的参考帧列表中的每个参考帧,以所述第一运动矢量为起点进行运动搜索,得到每个所述参考帧的第二运动矢量;其中,所述历史运动矢量列表包括至少一个运动矢量及所述运动矢量对应的精度,所述第二运动矢量的精度由所述第一运动矢量的精度确定;
计算每个所述第二运动矢量的编码代价,并从所述参考帧列表中所有所述参考帧的第二运动矢量中选出所述编码代价最小的一个,所述编码代价最小的第二运动矢量对应的参考帧为第一参考帧;
基于所述第一参考帧对应的所述第二运动矢量对所述当前块进行运动补偿。
2.根据权利要求1所述的方法,其特征在于,
所述第二运动矢量的精度为从所述历史运动矢量列表中选出的所述第一运动矢量对应的精度。
3.根据权利要求1所述的方法,其特征在于,
所述候选运动矢量列表包括所述当前块的空域候选矢量和/或时域候选矢量,所述空域候选矢量为所述当前块的空域相关块的运动矢量,所述时域候选矢量为所述当前块的时域同位块的运动矢量。
4.根据权利要求3所述的方法,其特征在于,所述当前块的空域相关块包括所述当前块的至少一个邻块。
5.根据权利要求4所述的方法,其特征在于,
所述当前块的时域同位块包括所述当前块的至少一个角子块和/或中心子块的时域同位块。
6.根据权利要求4所述的方法,其特征在于,
所述分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量之前包括:
对选择的所述空域候选矢量和/或时域候选矢量进行查重后填入所述候选运动矢量列表。
7.根据权利要求3所述的方法,其特征在于,
所述分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量之前包括:
对所述空域候选矢量、所述时域候选矢量和所述历史运动矢量列表中的运动矢量中的至少两种进行查重。
8.根据权利要求1所述的方法,其特征在于,
所述基于所述第一参考帧对应的第二运动矢量对所述当前块进行运动补偿包括:
若所述当前块为双向预测模式,则基于所述第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量;
分别利用多个修正运动矢量对所述第三运动矢量进行修正,得到多个修正后的第三运动矢量;
利用每个所述修正后的第三运动矢量对应的预测值计算所述修正后的第三运动矢量的评价指标;
选择所述评价指标最小的修正后的第三运动矢量对所述当前块进行运动补偿。
9.根据权利要求1所述的方法,其特征在于,
所述分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量之后包括:
利用偏移值列表和偏移方向列表对所述第一运动矢量进行偏移,得到多个偏移运动矢量;
在所述当前块的参考帧列表中的每个参考帧,以所述偏移运动矢量为起点进行运动搜索,得到每个所述参考帧的第二运动矢量;
计算每个所述第二运动矢量的编码代价,并从所述参考帧列表中所有所述参考帧的第二运动矢量中选出所述编码代价最小的一个,所述编码代价最小的第二运动矢量对应的参考帧为第一参考帧;
基于所述第一参考帧对应的第二运动矢量对所述当前块进行运动补偿。
10.根据权利要求9所述的方法,其特征在于,
所述基于所述第一参考帧对应的第二运动矢量对所述当前块进行运动补偿包括:
若所述当前块仅有单向预测模式,则使用所述第一参考帧对应的第二运动矢量对所述当前块进行运动补偿;若所述当前块为双向预测模式,则基于所述第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量,使用所述第三运动矢量对所述当前块进行运动补偿。
11.根据权利要求10所述的方法,其特征在于,包括:
若所述当前块仅有单向预测模式,则计算所述第二运动矢量与其对应的运动搜索起点之间的差值作为运动矢量残差;若所述当前块为双向预测模式,则计算所述第三运动矢量与所述第二运动矢量对应的运动搜索起点之间的差值作为运动矢量残差。
12.根据权利要求11所述的方法,其特征在于,包括:
对所述当前块编码得到当前块的码流,所述当前块的码流中包括偏移值索引和偏移方向索引,所述偏移值索引用于表示所述第二运动矢量对应的运动搜索起点所用的偏移值在所述偏移值列表中的索引,所述偏移方向索引用于表示所述第二运动矢量对应的运动搜索起点所用的偏移方向在所述偏移方向列表中的索引。
13.根据权利要求10所述的方法,其特征在于,包括:
若所述当前块仅有单向预测模式,则计算所述第二运动矢量与其对应的所述第一运动矢量之间的差值作为运动矢量残差;若所述当前块为双向预测模式,则计算所述第三运动矢量与其对应的所述第一运动矢量之间的差值作为运动矢量残差。
14.根据权利要求1所述的方法,其特征在于,所述计算每个所述第二运动矢量的编码代价,并从所述参考帧列表中所有所述参考帧的第二运动矢量中选出编码代价最小的一个,所述编码代价最小的第二运动矢量对应的参考帧为第一参考帧之后,包括:
若所述当前块仅有单向预测模式,则使用所述第一参考帧对应的第二运动矢量作为所述当前块的选择运动矢量;
若所述当前块为双向预测模式,则基于所述第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量作为所述当前块的选择运动矢量;
利用偏移值列表和偏移方向列表对所述选择运动矢量进行偏移,得到多个偏移运动矢量;
计算每个所述偏移运动矢量的编码代价,并按照编码代价最小原则从所述多个偏移运动矢量选出所述当前块的最终运动矢量。
15.根据权利要求14所述的方法,其特征在于,包括:
对所述当前块编码得到当前块的码流,所述当前块的码流中包括偏移值索引和偏移方向索引,所述偏移值索引用于表示所述最终运动矢量对应的运动搜索起点所用的偏移值在所述偏移值列表中的索引,所述偏移方向索引用于表示所述最终运动矢量对应的运动搜索起点所用的偏移方向在所述偏移方向列表中的索引。
16.根据权利要求1所述的方法,其特征在于,所述基于所述第一参考帧对应的第二运动矢量对所述当前块进行运动补偿之后包括:
对第一预测值进行帧间预测滤波;
其中,基于所述第一参考帧对应的第二运动矢量对所述当前块进行运动补偿得到第一预测值。
17.根据权利要求1所述的方法,其特征在于,所述计算每个所述第二运动矢量的编码代价,并从所述参考帧列表中所有所述参考帧的第二运动矢量中选出所述编码代价最小的一个,所述编码代价最小的第二运动矢量对应的参考帧为第一参考帧之后,包括:
若所述当前块为双向预测模式,则基于所述第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量;
使用所述第三运动矢量对所述当前块进行运动补偿得到第一预测值;
对所述第一预测值进行双向梯度校正。
18.根据权利要求1所述的方法,其特征在于,所述计算每个所述第二运动矢量的编码代价,并从所述参考帧列表中所有所述参考帧的第二运动矢量中选出所述编码代价最小的一个,所述编码代价最小的第二运动矢量对应的参考帧为第一参考帧之后,包括:
若所述当前块为双向预测模式,则基于两个所述参考帧列表中的所述第一参考帧对应的第二运动矢量构建单向运动矢量列表,所述单向运动矢量包括多个单向运动矢量;
利用多个权重预测角度和多种参考权重值计算所述当前块的多个权重阵列;
按照评价指标最小原则从多个加权组合中选出所述当前块的最终加权组合,每个所述加权组合包括一个所述权重阵列和两个不同的所述单向运动矢量。
19.根据权利要求18所述的方法,其特征在于,
所述按照评价指标最小原则从多个加权组合中选出所述当前块的最终加权组合包括:
分别利用每个所述单向运动矢量对所述当前块进行运动补偿得到单向预测值;
对于每个所述权重阵列,分别利用每个所述单向预测值计算所述单向运动矢量的加权代价,所述加权代价为所述单向预测值的第一代价与对应权重的乘积,所述对应权重为所述权重阵列或者所述权重阵列的互补阵列,所述权重阵列及其互补阵列之和为单元阵列;
为每个所述权重阵列选出所述加权代价最小的一对属于不同所述参考帧列表的单向运动矢量,所述权重阵列及选出的一对所述单向运动矢量组成候选加权组合;
从所有所述权重阵列对应的候选加权组合中选出所述评价指标最小的一个作为所述最终加权组合。
20.根据权利要求18所述的方法,其特征在于,所述按照评价指标最小原则从多个加权组合中选出所述当前块的最终加权组合包括:
分别利用每个所述单向运动矢量对所述当前块进行运动补偿得到单向预测值;
对于每个所述权重阵列,分别利用每个所述单向预测值计算所述单向运动矢量的第一加权代价和第二加权代价,所述第一加权代价为所述单向预测值的第一代价与对应权重的乘积,所述对应权重为所述权重阵列,所述第二加权代价为所述单向预测值的所述第一代价与对应权重的乘积,所述对应权重为所述权重阵列的互补阵列,所述权重阵列和所述互补阵列之和为单元阵列;
为每个所述权重阵列选出所述第一加权代价与所述第二加权代价之和最小的一对属于不同参考帧列表的单向运动矢量,实施例权重阵列及选出的一对所述单向运动矢量组成候选加权组合,所述权重阵列及选出的一对所述单向运动矢量组成候选加权组合;
从所有所述权重阵列对应的候选加权组合中选出所述评价指标最小的一个作为所述最终加权组合。
21.根据权利要求1所述的方法,其特征在于,所述计算每个所述第二运动矢量的编码代价,并从所述参考帧列表中所有所述参考帧的第二运动矢量中选出所述编码代价最小的一个,所述编码代价最小的第二运动矢量对应的参考帧为第一参考帧之后,包括:
若所述当前块为双向预测模式,则基于所述第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量;
按照评价指标最小原则从所述第三运动矢量以及至少一个补充运动矢量中选出所述当前块的最终运动矢量,所述补充运动矢量包括单向预测运动矢量和/或光流运动矢量,所述单向预测运动矢量包括所述第二运动矢量和/或第四运动矢量,所述第四运动矢量是在所述双向预测过程中对所述第二运动矢量更新而得到的,所述光流运动矢量是基于经过光流调整的所述第三运动矢量对应的预测值再次进行双向预测而得到的。
22.根据权利要求21所述的方法,其特征在于,
所述基于所述第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量包括:
所述当前块的参考帧列表包括第一参考帧列表和第二参考帧列表,使用所述当前块的原始值、所述第一参考帧列表中的所述第一参考帧及其对应的第二运动矢量计算第一编码代价,并使用所述当前块的原始值、所述第二参考帧列表中的所述第一参考帧及其对应的第二运动矢量计算第二编码代价;
将所述第一编码代价和所述第二编码代价进行比较,其中较大的一个对应的参考帧列表记为参考帧列表A,另一个记为参考帧列表B;
将所述当前块的原始值替换为第一原始值,在所述参考帧列表A中再次进行运动搜索和编码代价比较,得到编码代价最小的第二参考帧的第四运动矢量,所述第一原始值为所述当前块的原始值的2倍与所述参考帧列表B对应的预测值之差;
将所述当前块的原始值替换为第二原始值,在所述参考帧列表B中再次进行运动搜索和编码代价比较,得到编码代价最小的第二参考帧的第四运动矢量,所述第二原始值为所述当前块的原始值的2倍与利用所述参考帧列表A中所述第二参考帧的第四运动矢量进行运动补偿得到的预测值之差;
比较所述参考帧列表B中的所述第一参考帧的第二运动矢量的编码代价和所述参考帧列表B中的所述第二参考帧的第四运动矢量的编码代价,选择编码代价更小的运动矢量作为所述参考帧列表B的最终运动矢量;
将所述参考帧列表A中的所述第二参考帧的第四运动矢量和所述参考帧列表B的最终运动矢量组合成为所述第三运动矢量。
23.根据权利要求21所述的方法,其特征在于,
所述基于所述第一参考帧及其对应的第二运动矢量进行双向预测,得到第三运动矢量之后包括:
利用所述第三运动矢量对所述当前块进行运动补偿得到双向预测值;采用双向光流对所述双向预测值进行调整得到光流预测值;
将所述当前块的原始值替换为所述光流预测值再次进行双向预测得到所述光流运动矢量。
24.一种帧间预测装置,其特征在于,包括:
搜索模块,用于分别在候选运动矢量列表和历史运动矢量列表中,为当前块选择第一运动矢量,在所述当前块的参考帧列表中的每个参考帧,以所述第一运动矢量为起点进行运动搜索,得到每个所述参考帧的第二运动矢量;其中,所述历史运动矢量列表包括至少一个运动矢量及所述运动矢量对应的精度,所述第二运动矢量的精度由所述第一运动矢量的精度确定;
优选模块,用于计算每个所述第二运动矢量的编码代价,并从所述参考帧列表中所有所述参考帧的第二运动矢量中选出所述编码代价最小的一个,所述编码代价最小的第二运动矢量对应的参考帧为第一参考帧;
补偿模块,用于基于所述第一参考帧对应的第二运动矢量对所述当前块进行运动补偿。
25.一种计算机可读的存储介质,其特征在于,所述存储介质存储有程序指令,所述程序指令被执行时实现如权利要求1-23中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010887772.7A CN111818342B (zh) | 2020-08-28 | 2020-08-28 | 帧间预测方法及预测装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010887772.7A CN111818342B (zh) | 2020-08-28 | 2020-08-28 | 帧间预测方法及预测装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111818342A CN111818342A (zh) | 2020-10-23 |
CN111818342B true CN111818342B (zh) | 2020-12-11 |
Family
ID=72859784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010887772.7A Active CN111818342B (zh) | 2020-08-28 | 2020-08-28 | 帧间预测方法及预测装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111818342B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112565768B (zh) * | 2020-12-02 | 2023-02-28 | 浙江大华技术股份有限公司 | 一种帧间预测方法、编解码***及计算机可读存储介质 |
CN112312131B (zh) * | 2020-12-31 | 2021-04-06 | 腾讯科技(深圳)有限公司 | 一种帧间预测方法、装置、设备及计算机可读存储介质 |
CN113079372B (zh) * | 2021-06-07 | 2021-08-06 | 腾讯科技(深圳)有限公司 | 帧间预测的编码方法、装置、设备及可读存储介质 |
CN114095736B (zh) * | 2022-01-11 | 2022-05-24 | 杭州微帧信息科技有限公司 | 一种快速运动估计视频编码方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108134939B (zh) * | 2016-12-01 | 2020-08-07 | 北京金山云网络技术有限公司 | 一种运动估计方法及装置 |
CN109672894B (zh) * | 2017-10-13 | 2022-03-08 | 腾讯科技(深圳)有限公司 | 一种帧间预测方法、装置及存储介质 |
CN110166778A (zh) * | 2018-02-12 | 2019-08-23 | 华为技术有限公司 | 视频解码方法、视频解码器以及电子设备 |
JP2019201388A (ja) * | 2018-05-18 | 2019-11-21 | 富士通株式会社 | 情報処理装置、情報処理方法、及びプログラム |
CN111416982B (zh) * | 2019-01-04 | 2024-06-07 | 北京三星通信技术研究有限公司 | 对运动矢量信息进行编/解码的方法及装置 |
-
2020
- 2020-08-28 CN CN202010887772.7A patent/CN111818342B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111818342A (zh) | 2020-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11889108B2 (en) | Gradient computation in bi-directional optical flow | |
CN110419220B (zh) | 用于图像运动补偿的方法和装置 | |
JP7319386B2 (ja) | 異なる動きベクトル微調整における勾配計算 | |
CN110572645B (zh) | 非对称加权双向预测Merge | |
CN111818342B (zh) | 帧间预测方法及预测装置 | |
CN113056914B (zh) | 基于部分位置的差计算 | |
WO2019234669A1 (en) | Signaled mv precision | |
CN110740321B (zh) | 基于更新的运动矢量的运动预测 | |
JP2019519998A (ja) | 自動的な動き情報の精緻化を伴うビデオコード化のための方法及び機器 | |
WO2019229683A1 (en) | Concept of interweaved prediction | |
CN113711608A (zh) | 利用光流的预测细化过程的适用性 | |
CN113796084B (zh) | 运动矢量和预测样点细化 | |
CN112292861B (zh) | 用于解码端运动矢量修正的基于误差面的子像素精确修正方法 | |
CN112004097B (zh) | 帧间预测方法、图像处理装置以及计算机可读存储介质 | |
CN112565768A (zh) | 一种帧间预测方法、编解码***及计算机可读存储介质 | |
WO2020049447A1 (en) | Fast encoding methods for interweaved prediction | |
WO2020070729A1 (en) | Size restriction based on motion information | |
WO2020049446A1 (en) | Partial interweaved prediction | |
WO2023274302A1 (en) | Recursive prediction unit in video coding | |
WO2023274360A1 (en) | Utilization of recursive prediction unit in video coding | |
CN117529913A (zh) | 视频处理的方法、设备和介质 | |
CN117501689A (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 |