CN112055219B - 一种串匹配预测方法、装置及计算机可读存储介质 - Google Patents
一种串匹配预测方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN112055219B CN112055219B CN202010779852.0A CN202010779852A CN112055219B CN 112055219 B CN112055219 B CN 112055219B CN 202010779852 A CN202010779852 A CN 202010779852A CN 112055219 B CN112055219 B CN 112055219B
- Authority
- CN
- China
- Prior art keywords
- string
- prediction
- candidate list
- current block
- prediction vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- 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
-
- 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
技术领域
本发明涉及视频编码技术领域,特别是涉及一种串匹配预测方法、装置及计算机可读存储介质。
背景技术
通过视频编码技术可以对视频进行压缩,以降低视频的数据量,降低视频传输过程中的网络带宽、减少存储空间。其中,视频编码模式可以包括传统帧间预测模式、传统帧内预测模式、帧内块复制预测、串匹配预测等模式。
以串匹配预测模式为例,现有的串匹配预测过程中都是直接对串矢量进行编码,这样会增大代价值。
发明内容
本发明提供一种串匹配预测方法、装置及计算机可读存储介质,其通过构建最终串预测矢量候选列表,使得后续能够实现对串矢量差进行编码,节省代价值。
为解决上述技术问题,本发明提供的第一个技术方案为:提供一种串匹配预测方法,包括:为当前块构建最终串预测矢量候选列表;基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量;利用所述最终串矢量对所述当前块进行运动补偿。
为解决上述技术问题,本发明提供的第二个技术方案为:提供一种串匹配预测装置,包括:列表构建模块,用于为当前块构建最终串预测矢量候选列表;匹配模块,用于基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量;补偿模块,用于利用所述最终串矢量对所述当前块进行运动补偿。
为解决上述技术问题,本发明提供的第三个技术方案为:提供一种串匹配预测方法,包括:利用历史预测矢量列表和/或参考候选项为当前块构建最终串预测矢量候选列表,所述参考候选项包括以下至少一种:所述当前块的已编码邻块的串矢量、预设串矢量和已填入初始串预测矢量候选列表的预测矢量的计算结果;基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量;利用所述最终串矢量对所述当前块进行运动补偿。
为解决上述技术问题,本发明提供的第四个技术方案为:提供一种串匹配预测装置,包括:列表构建模块,用于利用历史预测矢量列表和/或参考候选项为当前块构建最终串预测矢量候选列表,所述参考候选项包括以下至少一种:所述当前块的已编码邻块的串矢量、预设串矢量和已填入初始串预测矢量候选列表的预测矢量的计算结果;匹配模块,用于基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量;补偿模块,用于利用所述最终串矢量对所述当前块进行运动补偿。
为解决上述技术问题,本发明提供的第五个技术方案为:提供一种串匹配预测方法,包括:为当前块构建最终串预测矢量候选列表,所述最终串预测矢量候选列表包括编码单元级最终串预测矢量候选列表;基于所述编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定所述当前块的最终串矢量;所述编码单元级运动搜索的起点为所述当前块以及所述编码单元级最终串预测矢量候选列表中的预测矢量指向的位置;利用所述最终串矢量对所述当前块进行运动补偿。
为解决上述技术问题,本发明提供的第六个技术方案为:提供一种串匹配预测装置,包括:列表构建模块,用于为当前块构建最终串预测矢量候选列表,所述最终串预测矢量候选列表包括编码单元级最终串预测矢量候选列表;匹配模块,用于基于所述编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定所述当前块的最终串矢量;所述编码单元级运动搜索的起点为所述当前块以及所述编码单元级最终串预测矢量候选列表中的预测矢量指向的位置;补偿模块,用于利用所述最终串矢量对所述当前块进行运动补偿。
为解决上述技术问题,本发明提供的第七个技术方案为:提供一种串匹配预测方法,包括:为当前块构建最终串预测矢量候选列表,所述最终串预测矢量候选列表包括像素级最终串预测矢量候选列表;基于所述像素级最终串预测矢量候选列表进行像素级运动搜索以确定所述当前块的最终串矢量;所述像素级运动搜索的起点为哈希匹配像素、所述当前块以及所述像素级最终串预测矢量候选列表中的预测矢量指向的位置;利用所述最终串矢量对所述当前块进行运动补偿。
为解决上述技术问题,本发明提供的第八个技术方案为:提供一种串匹配预测装置,包括:列表构建模块,用于为当前块构建最终串预测矢量候选列表,所述最终串预测矢量候选列表包括像素级最终串预测矢量候选列表;匹配模块,用于基于所述像素级最终串预测矢量候选列表进行像素级运动搜索以确定所述当前块的最终串矢量;所述像素级运动搜索的起点为哈希匹配像素、所述当前块以及所述像素级最终串预测矢量候选列表中的预测矢量指向的位置;补偿模块,用于利用所述最终串矢量对所述当前块进行运动补偿。
为解决上述技术问题,本发明提供的第九个技术方案为:提供一种串匹配预测方法,包括:为当前块构建最终串预测矢量候选列表;基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量;利用所述最终串矢量对所述当前块进行运动补偿得到第一预测块;对所述第一预测块进行滤波得到第二预测块;计算并比较所述第一预测块及所述第二预测块的编码代价以确定是否进行滤波。
为解决上述技术问题,本发明提供的第十个技术方案为:提供一种串匹配预测装置,包括:列表构建模块,用于为当前块构建最终串预测矢量候选列表;匹配模块,用于基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量;补偿模块,用于利用所述最终串矢量对所述当前块进行运动补偿得到第一预测块;滤波模块,用于对所述第一预测块进行滤波得到第二预测块;计算模块,用于计算并比较所述第一预测块及所述第二预测块的编码代价以确定是否进行滤波。
为解决上述技术问题,本发明提供的第十一个技术方案为:提供一种串匹配预测方法,包括:判断当前块是否满足串匹配预测条件,所述串匹配预测条件包括所述当前块的内容属于自然图像或自然图像与屏幕内容图像的混合;若满足,则为当前块构建最终串预测矢量候选列表;基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量;利用所述最终串矢量对所述当前块进行运动补偿。
为解决上述技术问题,本发明提供的第十二个技术方案为:提供一种串匹配预测装置,包括:条件判断模块,用于判断当前块是否满足串匹配预测条件,所述串匹配预测条件包括所述当前块的内容属于自然图像或自然图像与屏幕内容图像的混合;若满足,则利用列表构建模块为所述当前块构建最终串预测矢量候选列表;匹配模块,用于基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量;补偿模块,用于利用所述最终串矢量对所述当前块进行运动补偿。
为解决上述技术问题,本发明提供的第十三个技术方案为:提供一种串匹配预测装置,包括:处理器、与所述处理器连接的存储器,其中,所述存储器存储有程序指令;所述处理器用于执行所述存储器存储的程序指令以实现上述任一项所述的方法。
为解决上述技术问题,本发明提供的第十四个技术方案为:提供一种计算机可读存储介质,所述存储介质存储有程序指令,所述程序指令被执行时实现上述任一项所述的方法。
本发明提供的串匹配方法,通过为当前块构建最终串预测矢量候选列表,基于最终串预测矢量候选列表进行运动搜索以确定当前块的最终串矢量;利用最终串矢量对当前块进行运动补偿,以此能够在编码过程中降低代价值。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:
图1是本发明串匹配预测方法的第一实施例的流程示意图;
图2是图1中步骤S11的一实施例的流程示意图;
图3是图2中步骤S111的一实施例的流程示意图;
图4是图1中步骤S12的一实施例的流程示意图;
图5是图1中步骤S13的一实施例的流程示意图;
图6是图1中步骤S11的另一实施例的流程示意图;
图7是本发明串匹配预测装置的第一实施例的结构示意图;
图8是本发明串匹配预测方法的第二实施例的流程示意图;
图9是本发明串匹配预测装置的第二实施例的结构示意图;
图10是本发明串匹配预测方法的第三实施例的流程示意图;
图11是本发明串匹配预测装置的第三实施例的结构示意图;
图12是本发明串匹配预测方法的第四实施例的流程示意图;
图13是本发明串匹配预测装置的第四实施例的结构示意图;
图14是本发明串匹配预测方法的第五实施例的流程示意图;
图15是本发明串匹配预测装置的第五实施例的结构示意图;
图16是本发明串匹配预测方法的第六实施例的流程示意图;
图17是本发明串匹配预测装置的第六实施例的结构示意图;
图18是本发明串匹配预测装置的第七实施例的结构示意图;
图19是本发明计算机可读存储介质的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面结合附图和实施例对本发明进行详细的说明。
请参见图1,为本发明串匹配预测方法的第一实施例的流程示意图。其中,串匹配预测技术的应用存在一定限制,例如块应满足串匹配预测条件。举例说明,串匹配预测技术可以仅应用于宽和高都大于4且小于等于32的亮度块,且对于某些小块,若这些小块再进一步划分后会产生边长小于4的色度块,那么这些小块的色度块部分将不再进一步划分,并且这些小块不采用串匹配模式,而采用传统串匹配预测模式。因此其中的当前块和匹配串均为宽和高都大于4且小于等于32的亮度块。此外,匹配串还需遵循以下规范性限制:匹配串必须位于当前最大编码单元(the largest coding unit,LCU)的左侧相邻的最大编码单元内或者当前LCU的区域内,LCU按照64×64区域大小平均划分,一个匹配串的所有像素均来自于同一个64×64区域;匹配串中所有像素不能属于当前串;每个编码单元所允许的串的个数(包括匹配串的个数加未匹配串的个数)必须不大于当前编码单元内像素个数的四分之一。
步骤S11:为当前块构建最终串预测矢量候选列表。
具体的,最终串预测矢量候选列表包括编码单元级最终串预测矢量候选列表以及像素级最终串预测矢量候选列表。其中,像素级最终串预测矢量候选列表为在编码单元级最终串预测矢量候选列表中加入单位运动矢量。
在本实施例中,以编码单元级最终串预测矢量候选列表的构建方式为例进行说明。
具体的,在构建最终串预测矢量候选列表之前需要先构建初始串预测矢量候选列表,具体请参见图2,包括:
步骤S111:利用历史预测矢量列表为当前块构建初始串预测矢量候选列表。
初始串预测矢量(String vectorprediction,SVP)候选列表在构建时一般利用历史预测矢量列表进行构建,历史预测矢量列表至少包括部分已编码的串预测矢量。现有的初始串预测矢量候选列表的最大容量为7,其列表存放有最多7个预测矢量,列表中的7个位置分别对应满足7类条件的预测矢量,当存在多个满足同类型的预测矢量时,后出现的预测矢量将替代前面的同类型预测矢量,存放在初始串预测矢量候选列表对应类型的位置中。
具体的,用SVP_cands[0]-SVP_cands[6]代表初始串预测矢量候选列表中7个位置,这7个位置分别对应以下类型条件:
SVP_cands[0]存放历史预测矢量列表中宽×高>32的块的预测矢量;
SVP_cands[1]存放历史预测矢量列表中相同预测矢量出现次数超过2的预测矢量;
SVP_cands[2]存放历史预测矢量列表中位于当前块左侧的块的预测矢量;
SVP_cands[3]存放历史预测矢量列表中位于当前块上侧的块的预测矢量;
SVP_cands[4]存放历史预测矢量列表中位于当前块左上的块的预测矢量;
SVP_cands[5]存放历史预测矢量列表中位于当前块右上的块的预测矢量;
SVP_cands[6]存放历史预测矢量列表中位于当前块左下的块的预测矢量。
历史预测矢量列表中符合上述7类条件的预测矢量可能存在也可能不存在。在一实施例中,可以按照正序或倒序的方式遍历历史预测矢量列表中的各个预测矢量。将历史预测矢量列表中满足上述7类条件的预测矢量填充至对应的位置中。需要注意的是,若一个预测矢量符合多个对应的条件,则将预测矢量填入第一个符合的条件中。例如,若SV1同时满足SVP_cands[0]及SVP_cands[1],则将SV1填充至SVP_cands[0]中。在另一实施例中,若对应的条件已被预测矢量填充,则在下一次填充时,若预测矢量满足当前条件之外还满足其他条件,则跳过该位置,将其填充至其他条件中。例如若有SV2同时满足SVP_cands[0]及SVP_cands[1],而SVP_cands[0]已被填充,则跳过SVP_cands[0],将SV2填充至SVP_cands[1]中。
在一实施例中,在利用历史预测矢量列表为当前块构建初始串预测矢量候选列表时,将历史预测矢量列表中满足对应条件的预测矢量进行填充。若历史预测矢量列表中的n个预测矢量同时满足m个相同的条件,n和m均大于一,则将n个预测矢量中的至少部分填入对应的条件中,以形成初始串预测矢量候选列表。
具体的,在填充时可以参照如下规则进行填充请参见图3:
步骤S1111:将n与m进行比较。
若n>m,则跳转到S1112;若n=m,则跳转到S1113;若n<m,则跳转到S1114。
步骤S1112:则将n个预测矢量中的m个分别填入m个条件对应的位置。
若n>m,则将n个预测矢量中的m个分别填入m个条件对应的位置,以预先构成初始串预测矢量候选列表。
在以下实施例中,将未经过查重的初始串预测矢量候选列表用SVP_cands[0]~SVP_cands[6]表示,而查重后的初始串预测矢量候选列表用SVP_list[0]~SVP_list[6]表示。
例如,在一实施例中,假设按照倒序的方式遍历历史预测矢量列表,其中有三个预测矢量(SV7、SV3、SV2)同时满足初始串预测矢量候选列表的2(SVP_cands[0]、SVP_cands[2])个类型条件。将SV7、SV3填充至SVP_cands[0]、SVP_cands[2]中,SV7填充至SVP_cands[0]、SV3填充至SVP_cands[2],以预先构成初始串预测矢量候选列表。具体的,在填充后,还需要对填充后的初始串预测矢量候选列表进行查重,将重复填充的预测矢量删除,在经过查重后,若查重后的初始串预测矢量候选列表中还有未填充的位置时,例如,若查重后,列表中SVP_list[5]和SVP_list[6]仍然没有填充完,且SV2经过查重后与列表内的预测矢量都不相同时,则将SV2填充至SVP_list[5]。
或者,在另一实施例中,假设按照倒序的方式遍历历史预测矢量列表,其中有三个预测矢量(SV7、SV3、SV2)同时满足初始串预测矢量候选列表的2(SVP_cands[0]、SVP_cands[2])个类型条件。将SV7、SV3填充至SVP_cands[0]、SVP_cands[2]中,SV7填充至SVP_cands[0]、SV3填充至SVP_cands[2],以预先构成初始串预测矢量候选列表。若构成的初始串预测矢量候选列表中还有未填充的位置时,例如,列表中SVP_cands[5]和SVP_cands[6]仍然没有填充完,则将SV2填充至SVP_cands[5]。在填充完成后,对候选列表进行查重,将重复填充的预测矢量删除,或者将中间和/或末尾的空余位置去除。
步骤S1113:将n个预测矢量分别填入m个条件对应的位置。
若n=m,则将n个预测矢量分别填入m个条件对应的位置。例如,在一实施例中,假设按照倒序的方式遍历历史预测矢量列表,其中有三个预测矢量(SV7、SV3、SV2)同时满足初始串预测矢量候选列表的3(SVP_cands[0]、SVP_cands[2]、SVP_cands[3])个类型条件。则将上述3个预测矢量进行填充。其中,SV7填充至SVP_cands[0],SV3填充至SVP_cands[2],SV2填充至SVP_cands[3]。S114:则n个所述预测矢量分别填入m个所述条件中的n个对应的位置。
步骤S1114:将n个预测矢量分别填入m个条件中的n个对应的位置。
若n<m,则将n个预测矢量分别填入m个条件中的n个对应的位置。例如,在一实施例中,假设按照倒序的方式遍历历史预测矢量列表,其中有3个预测矢量(SV7、SV3、SV2)同时满足初始串预测矢量候选列表的4(SVP_cands[0]、SVP_cands[2]、SVP_cands[3]、SVP_cands[4])个类型条件。在填充时,将SV7填充至SVP_cands[0],将SV3填充至SVP_cands[2],SV2填充至SVP_cands[3],以形成初始串预测矢量候选列表。
步骤S112:基于初始串预测矢量候选列表构建最终预测矢量候选列表。
具体的,若历史预测矢量列表中的n个预测矢量同时满足m个相同的条件,n和m均大于一,则将n个预测矢量中的至少部分填入对应的条件中,以形成初始串预测矢量候选列表,在形成初始串预测矢量候选列表后,可以进一步将剩下的预测矢量或者初始值填充至初始串预测矢量候选列表构建最终串预测矢量候选列表。
例如,在一实施例中,假设按照倒序的方式遍历历史预测矢量列表,其中有三个预测矢量(SV7、SV3、SV2)同时满足初始串预测矢量候选列表的2(SVP_cands[0]、SVP_cands[2])个类型条件。将SV7、SV3填充至SVP_cands[0]、SVP_cands[2]中,SV7填充至SVP_cands[0]、SV3填充至SVP_cands[2],以预先构成初始串预测矢量候选列表。具体的,在填充后,还需要对填充后的初始串预测矢量候选列表进行查重,将重复填充的预测矢量删除,在经过查重后,若查重后的初始串预测矢量候选列表中还有未填充的位置时,例如,若查重后,列表中SVP_list[5]和SVP_list[6]仍然没有填充完,且SV2经过查重后与列表内的预测矢量都不相同时,则将SV2填充至SVP_list[5]。
或者,在另一实施例中,假设按照倒序的方式遍历历史预测矢量列表,其中有三个预测矢量(SV7、SV3、SV2)同时满足初始串预测矢量候选列表的2(SVP_cands[0]、SVP_cands[2])个类型条件。将SV7、SV3填充至SVP_cands[0]、SVP_cands[2]中,SV7填充至SVP_cands[0]、SV3填充至SVP_cands[2],以预先构成初始串预测矢量候选列表。若构成的初始串预测矢量候选列表中还有未填充的位置时,例如,列表中SVP_cands[5]和SVP_cands[6]仍然没有填充完,则将SV2填充至SVP_cands[5]。在填充完成后,对候选列表进行查重,将重复填充的预测矢量删除,或者将中间和/或末尾的空余位置去除。
在一具体实施例中,对初始串预测矢量候选列表进行查重包括:剔除重复填充的预测矢量及去除中间和/或末尾的空余位置,或者在另一实施例中,查重操作还包括将中间空余位置移动至末尾,具体不做限定。
需要说明的是,在利用历史预测矢量列表为当前块构建初始串预测矢量候选列表时,在将历史预测矢量列表中的预测矢量填充形成初始串预测矢量后,还需要对初始串预测矢量进行查重,此时若查重后的初始串预测矢量候选列表中还有空余位置时,则按照上述规则将空余位置进行填充。具体的,在一实施例中,若经查重后,列表中的空余位置位于列表的前面时,则按照上述规则将空余位置进行填充。或者在另一实施例中,在经过查重后,并且将列表中的空余位置移动至列表的末尾,则按照上述规则将位于列表末尾的空余位置进行填充,具体不做限定,以实际操作为准。
再例如,在一实施例中,若n<m,则n个所述预测矢量分别填入m个所述条件中的n个对应的位置,并在所述初始串预测矢量候选列表剩余m-n个对应的位置填入初始值以形成所述最终串预测矢量候选列表。例如,在一实施例中,假设按照倒序的方式遍历历史预测矢量列表,其中有3个预测矢量(SV7、SV3、SV2)同时满足初始串预测矢量候选列表的4(SVP_cands[0]、SVP_cands[2]、SVP_cands[3]、SVP_cands[4])个类型条件。在填充时,将SV7填充至SVP_cands[0],将SV3填充至SVP_cands[2],SV2填充至SVP_cands[3],以形成初始串预测矢量候选列表。在剩余的SVP_cands[4]中填充初始值,例如填充0矢量。具体的,在一实施例中,在将n个预测矢量分别填入m个条件中的n个对应的位置之后,且在初始串预测矢量候选列表构建完成之后,还需要对初始串预测矢量候选列表进行查重,在查重后,若初始串预测矢量候选列表还存在其他空余位置,则将其空余位置填入初始值。
本申请中,在进行串匹配预测时,增加构建最终串预测矢量候选列表的过程,以此为后续降低代价值做准备。
在另一实施例中,为了进一步增加构建的最终串预测矢量候选列表的多样性,还可以利用参考候选项基于初始串预测矢量候选列表为当前块构建最终串预测矢量候选列表,参考候选项包括以下至少一种:当前块的已编码邻块的串矢量、预设串矢量和已填入预测矢量候选列表的预测矢量的计算结果。
具体的,在通过上述方式得到初始串预测矢量候选列表后,对初始串预测矢量候选列表进行查重,若经过查重后,初始串预测矢量候选列表未被填满,则选择至少一个参考候选项填入查重后的初始串预测矢量候选列表,以形成最终串预测矢量候选列表。
参考候选项包括当前块的已编码邻块的串矢量、预设串矢量和已填入初始串预测矢量候选列表的预测矢量的计算结果。在进行填充时,按照预定的优先权顺序进行填充。在一具体实施例中,当前块的已编码邻块的串矢量的填充优先权>预设串矢量的填充优先权>已填入初始串预测矢量候选列表的预测矢量的计算结果的填充优先权。
具体的,在历史预测矢量列表按照上述7类条件的预测矢量填充规则,没有将初始串预测矢量候选列表填充满时;则将当前块的已编码邻块的预测矢量填充至未填充的位置内;若还未填充满时,还可以将预设串矢量填充至未填充的位置内;若还未填满时,则将已填入初始串预测矢量候选列表的预测矢量的计算结果填充至未填充的位置内。或者,在一实施例中,在历史预测矢量列表按照上述7类条件的预测矢量填充规则进行填充形成初始串预测矢量候选列表后,对初始串预测矢量候选列表进行查重,在此之后,若查重后的初始串预测矢量候选列表未填充满时,则将当前块的已编码邻块的预测矢量填充至未填充的位置内;若还未填充满时,还可以将预设串矢量填充至未填充的位置内;若还未填满时,则将已填入初始串预测矢量候选列表的预测矢量的计算结果填充至未填充的位置内。
具体的,可以假设预设串矢量为(-width,0),(0,-height),其中,width和height为当前块的宽和高;已填入初始串预测矢量候选列表的预测矢量的计算结果为初始串预测矢量候选列表中已填充的预测矢量推导出的新的预测矢量。
在一实施例中,在将参考候选项填入初始串预测矢量候选列表和/或查重后的初始串预测矢量候选列表中时需要先选择至少一个参考候选项,将选中的参考候选项填充至初始串预测矢量候选列表和/或查重后的初始串预测矢量候选列表中,以形成最终串预测矢量候选列表。
例如,在一实施例中,假设按照倒序的方式遍历历史预测矢量列表,其中有三个预测矢量(SV7、SV3、SV2)同时满足SVP_cands[0]~SVP_cands[6]中的2(SVP_cands[0]、SVP_cands[2])个类型条件。将SV7、SV3、SV2按照正序的方式填充至SVP_cands[0]、SVP_cands[2]中,SV7填充至SVP_cands[0]、SV3填充至SVP_cands[2];在填充后,还需要对其进行查重。在一实施例中,假设查重后的初始串预测矢量候选列表为:SVP_list[0]~SVP_list[6],经过查重后,若列表中还有未填充的,例如,若查重后,列表中SVP_list[5]和SVP_list[6]仍然没有填充完,且SV2与列表内的预测矢量都不相同,则SV2填充至查重后的初始串预测矢量候选列表中的SVP_list[5]。此时,查重后的初始串预测矢量候选列表中的SVP_cands[6]仍然没有填充,则可以将预设串矢量((-width,0)或(0,-height))填充至查重后的初始串预测矢量候选列表中的SVP_list[6]。
本申请中,在进行串匹配预测时,增加构建最终串预测矢量候选列表的过程,以此为后续降低代价值做准备。
步骤S12:基于最终串预测矢量候选列表进行运动搜索以确定当前块的最终串矢量。
具体的,最终串预测矢量候选列表包括编码单元级最终串预测矢量候选列表以及像素级最终串预测矢量候选列表。其中,像素级最终串预测矢量候选列表为在编码单元级最终串预测矢量候选列表中加入单位运动矢量。
因此,基于最终串预测矢量候选列表进行运动搜索以确定当前块的最终串矢量:基于编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定当前块的最终串矢量;和/或基于像素级最终串预测矢量候选列表进行像素级运动搜索以确定当前块的最终串矢量。
具体的,在一实施例中,可以先利用编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定当前块的最终串矢量,在使用该方法未确定出当前块的最终串矢量时,可以进一步利用像素级最终串预测矢量候选列表进行像素级运动搜索以确定当前块的最终串矢量。或者在另一实施例中,还可以先利用像素级最终串预测矢量候选列表进行像素级运动搜索以确定当前块的最终串矢量,在使用该方法未确定出当前块的最终串矢量时,可以进一步利用编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定当前块的最终串矢量。
具体请参照图4,为上述步骤S12的一具体实施例的流程示意图,包括:
步骤S121:基于编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定当前块的最终串矢量。
具体的,现有技术中的编码单元级运动搜索是以当前块的左上角为起点,以水平向左和垂直向上进行搜索。且其搜索范围在垂直方向上侧不能超过当前最大编码单元的上边界,左侧边界不能超过当前最大编码单元左边相邻最大编码单元的左边界。
在本发明的一实施例中,可以在以当前块的左上角为起点,以水平向左和垂直向上进行搜索之外,还可以利用编码单元级最终串预测矢量候选列表中的预测矢量指向的位置为起点在起点的上、下、左、右进行十字搜索。即在本申请实施例中,编码单元级运动搜索的起点为当前块以及编码单元级最终串预测矢量候选列表中的预测矢量指向的位置。具体的,在进行运动搜索时,起点均为对应块的左上角。即本申请中,编码单元级运动搜索的起点为当前块的左上角以及编码单元级最终串预测矢量候选列表中的预测矢量指向的位置的左上角。
需要说明的是,在进行编码单元级运动搜索时,预测矢量指向的位置为块的左上角。
具体的,在一实施例中,在利用编码单元级最终串预测矢量候选列表中的预测矢量指向的位置为起点进行十字搜索之前,还需要对编码单元级最终串预测矢量候选列表中的预测矢量进行代价值计算,具体利用候选列表中的预测矢量直接进行预测后再计算代价值,将代价值最小的预测矢量指向的位置作为起点。以当前块和/或代价值最小的预测矢量指向的位置为起点在起点的上、下、左、右进行十字搜索,以确定当前块的最终串矢量。
具体的,本发明的一具体实施例中,在确定好起点进行搜索时,可以1个像素为步长搜索和当前块尺寸相同的匹配块,将搜索出的所有匹配块进行代价值计算,得到最终匹配块,最终匹配块和当前块的运动矢量为最终串矢量,最终串矢量和对应的预测矢量的差为最终需要编码的串矢量差。具体的,通过本实施例的方式,在对当前块进行编码时,可以对串矢量差及最终预测矢量对应的索引进行编码,而不需要编码当前块对应的串矢量,节省代价值。
在另一实施例中,还可以先以当前块和/或编码单元级最终串预测矢量候选列表中的预测矢量指向的位置为起点在起点的上、下、左、右进行十字搜索,进而确定出和当前块尺寸相同的匹配块,以及匹配块对应的串矢量,在搜索到当前块对应的匹配块的串矢量后,对串矢量进行代价值计算,选择代价值最小的串矢量作为当前块的最终串矢量。
在一实施例中,在进行搜索进而选取匹配块的过程中,对于亮度块,在搜索范围内,搜索与当前块的相同尺寸的搜索块作为匹配块,搜索块需要为已编码的块。搜索按照先垂直后水平的方式进行搜索。通过SAD的方式计算当前块与搜索块,最多选出8个最小的SAD,按照SAD从小到大的方式进行排列得到SAD列表,记录SAD列表对应SAD的搜索块左上角和当前块左上角坐标的差值列表。
对于色度块,如果搜索块左上角和当前块左上角坐标的差值列表存在且该列表中第一个差值对应的SAD小于等于32,需要遍历SAD列表和对应SAD的搜索块左上角和当前块左上角坐标的差值列表,重新计算三个分量(两个色度块分量及一个亮度块分量)总的SAD,选出最小的SAD对应的差值列表中对应的差值作为当前块和匹配块的差值;否则将亮度SAD对应的搜索块左上角和当前块左上角坐标的差值列表第一个差值作为当前块和匹配块的坐标差值。其中,当前块和匹配块的坐标差值为当前块的偏移矢量。
在通过上述方式搜索出匹配块后,利用SSE的方式计算当前块与匹配块的代价值,其中,当前块与匹配块的代价值为当前块和匹配块的坐标差值消耗的比特。如果计算得到的代价值小于之前最佳模式下的代价值,则保存该匹配块的索引,当前块和匹配块的坐标差值,匹配的像素个数以及匹配串类型。
步骤S122:基于像素级最终串预测矢量候选列表进行像素级运动搜索以确定当前块的最终串矢量。
现有技术中对当前块以水平弓形扫描方式进行扫描,当扫描到某一个串的第一个像素时,直接用运动矢量(0,-1)(-1,0)、历史运动矢量以及在搜索范围内和该像素哈希值相等的重建像素进行匹配操作。
而本申请在现有技术的基础上,进一步以哈希匹配像素、当前块以及像素级最终串预测矢量候选列表中的预测矢量指向的位置为起点进行进一步搜索。具体的,以当前块以及所述像素级的最终串预测矢量候选列表中的预测矢量指向的位置进行搜索的过程与上述编码单元级运动搜索方式相同,在此不再赘述。本申请像素运动搜索的起点还包括哈希匹配像素。具体的,以哈希匹配像素为起点进行十字搜索的过程中,仍旧以1像素为步长,偏移1个像素步长后就以该像素为起点进行串长度的判定。在一实施例中,所有搜索出的匹配块对应的匹配串必须符合上述所述的规范性限制。需要说明的是,在进行像素级运动搜索时,预测矢量指向的位置为一个像素。
具体的,先对当前串的第一个像素进行哈希匹配,进而确定出哈希匹配像素;具体的,遍历每个哈希匹配像素,以每个哈希匹配像素为起点进行匹配串的确定。对每个以不同哈希匹配像素为起点的匹配串之间进行代价值比较,选出代价值比较后得到最佳的哈希匹配像素以及对应的串矢量作为最终串矢量,遍历最终串预测矢量候选列表中所有的预测矢量,进行预测矢量的索引以及串矢量差的编码,比较代价值,选择代价值最小的预测矢量。或者在另一实施例中,还可以以每个预测矢量以及哈希匹配像素作为起点进行十字搜索。
在另一实施例中,遍历每个预测矢量,先不进行十字搜索,计算每个预测矢量的代价值,得到最佳预测矢量,再以最佳预测矢量进行十字搜索。以及遍历每个哈希匹配像素点,先不进行十字搜索,计算每个哈希匹配像素的代价值,得到一个最佳的哈希匹配像素,再以最佳哈希匹配像素为起点进行十字搜索。
在另一实施例中,还可以以每个预测矢量指向的位置为起点进行十字搜索;及遍历每个哈希匹配像素点,先不进行十字搜索,用计算每个哈希匹配像素的代价值,得到一个最佳的哈希匹配像素,再以最佳哈希匹配像素为起点进行十字搜索。
在另一实施例中,还可以遍历每个预测矢量,先不进行十字搜索,计算每个预测矢量的代价值,得到最佳预测矢量,再以最佳预测矢量进行十字搜索;及每个哈希匹配像素作为起点进行十字型搜索。
现有技术中的方案存在错误传递的问题,因为串的长度判定是用当前原始像素和预测矢量指向的参考像素的原始像素相减后小于一个阈值才能作为当前串的一部分。在某些情况下,比如当前块是一个从上到下渐变色的块,若用(0,-1)进行预测时,由于两两相邻行之间的像素差异值都很小,小于所设阈值,所以每一行都是一个串,所以当前行的像素直接取正上方相邻像素的值作为当前像素的预测值,然后下一行的像素也是取正上方相邻像素值作为当前像素的预测值,这就造成所有行像素的预测值实际上都是块内第一行的正上方一行参考像素的像素值,结果预测出来的块就不是一个渐变色的块了,和原来的块差别巨大。因此为了避免串匹配过程中错误传递的问题,在进行串长度判定的阈值比较时需要引入当前像素和参考像素的重建像素的差值,可直接用该差值去进行判断,若该差值在阈值内才能代表当前像素是当前串的一部分;或用当前像素和参考像素的重建像素的差值,以及现有技术中当前像素和参考像素的原始像素的差值联合进行判断,当两个差值都小于阈值时,才能代表当前像素是当前串的一部分。
步骤S13:利用最终串矢量对所述当前块进行运动补偿。
具体的,请参见图5,为步骤S13的一具体实施例的流程示意图,包括:
步骤S131:利用最终串矢量对当前块进行运动补偿得到第一预测块。
具体的,当前块根据最终串矢量通过像素插值或像素拷贝的方式基于最终匹配块获取预测值,将当前块的原始像素值和预测值相减得到残差块,再然后对残差块进行变换量化、反量化反变换得到当前块进行运动补偿后的第一预测块。
步骤S132:对第一预测块进行滤波得到第二预测块。
具体的,对第一预测块进行滤波,例如帧间预测滤波,即当前块像素经过串匹配预测的预测值和周围空域的已编码像素的重建值进行加权。
步骤S133:计算并比较第一预测块和第二预测块的编码代价以确定是否进行滤波。
具体的,对当前块进行编码得到当前块的码流,码流中包括滤波标记;计算比较第一预测块和第二预测块的编码代价,若第一预测块的编码代价大于第二预测块的编码代价,则滤波标记用于表示进行滤波,若第一预测块的编码代价小于第二预测块的编码代价,则滤波标记用于表示不进行滤波,在另一具体实施例中,可以不进行滤波,直接基于第一预测块进行编码。
在一实施例中,码流中还包括串矢量差、最终预测矢量的索引,串矢量差为当前串对应的最终串矢量与最终预测矢量的差值,最终预测矢量的索引为所述预测矢量在所述最终串预测矢量候选列表中的位置。其中,最终预测矢量为比较代价值后选择的预测矢量,或者最终预测矢量为当前块进行编码的预测矢量。现有技术中,在编码时,是直接对最终串矢量进行编码的,以此会增大编码开销,本申请通过引入最终串预测矢量候选列表,通过最终串预测矢量候选列表可以得到串矢量差以及最终预测矢量的索引,以此,在编码时对串矢量差以及最终预测矢量的索引进行编码能够降低编码开销。具体的,在一实施例中,码流还包括:最终预测矢量来源的标识,最终预测矢量来源的标识表示最终预测矢量来自编码单元级最终串预测矢量候选列表或像素级最终串预测矢量候选列表。
具体的,在一实施例中,码流中一般包括句法元素,通过句法元素来表示滤波标记、串矢量差以及预测矢量的索引等。由于本申请中构建了最终串预测矢量候选列表并且会产生预测矢量,预测矢量也需要编码到码流中,由于预测矢量的编码精度可以有多种精度,可以直接引用串匹配预测技术中的精度:4倍精度和整像素精度。也可采用更多精度,如8倍,16倍精度等。最终比较代价值选出一个最佳精度进行编码。因此还需要传输一个索引代表最终选择的是哪个精度。
请参见图6,为图1中步骤S11的第三实施例的流程示意图。具体的,在为当前块构建预测矢量候选列表之前,还包括:
步骤S14:判断当前块是否满足串匹配预测条件。
在一实施例中,帧内块复制预测条件包括当前块的内容属于自然图像或自然图像与屏幕内容图像的混合,屏幕内容图像为屏幕生成内容、计算机产生图像。若满足,则进入步骤S15,若不满足,则进入步骤S16。
在另一实施例中,帧内块复制预测条件还包括:当前块的宽和高均满足块尺寸限制条件。现有技术中,块尺寸限制条件为:串匹配预测技术用于宽和高都大于等于4且小于等于32的亮度块,对于某些小块,若再进一步划分后产生边长小于4的色度块,那么这些小块的色度块部分将不再进一步划分。即现有技术中,对于再进一步划分后产生边长小于4的色度块的小尺寸块,不会采用串匹配预测技术。本发明中,块尺寸限制条件为:串匹配预测技术用于宽和高都大于等于4且小于等于32的亮度块,并且对于再进一步划分后产生边长小于4的色度块的小尺寸块,通过本发明的方法可以对小尺寸的色度块进行串匹配预测和用其他预测模式预测进行代价值比较选择最佳预测模式,即本发明对于进一步划分后产生边长小于4的色度块的小尺寸块,能够采用串匹配预测技术。
步骤S14:则为当前块构建预测矢量候选列表。
具体的,在构建最终串预测矢量候选列表时,可利用上述所示的具体实施方式,在此不再赘述。
步骤S15:结束。
若当前块不满足串匹配预测条件,则不为当前块构建预测矢量候选列表。
相对于现有技术,本发明在进行串匹配预测时,增加了构建最终串预测矢量候选列表的过程,以此在后续进行编码时,可以仅编码最终串矢量的索引以及串矢量差,以此能够降低编码开销。
请参见图7,为本发明串匹配预测装置的第一实施例的结构示意图。其中,串匹配预测装置包括列表构建模块11、匹配模块12及补偿模块13。
其中,列表构建模块11用于为当前块构建最终串预测矢量候选列表。
匹配模块12用于基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量。
补偿模块13用于利用所述最终串矢量对所述当前块进行运动补偿。
请参见图8,为本发明串匹配预测方法的第二实施例的流程示意图,包括:
步骤S21:利用历史预测矢量列表和/或参考候选项为当前块构建最终串预测矢量候选列表,所述参考候选项包括以下至少一种:所述当前块的已编码邻块的串矢量、预设串矢量和已填入初始串预测矢量候选列表的预测矢量的计算结果。
具体的,若历史预测矢量列表中的n个预测矢量同时满足m个相同的条件,n和m均大于一,则将n个预测矢量中的至少部分填入对应的条件中,以形成初始串预测矢量候选列表,在形成初始串预测矢量候选列表后,可以进一步将剩下的预测矢量或者初始值填充至初始串预测矢量候选列表构建最终串预测矢量候选列表。
例如,在一实施例中,假设按照倒序的方式遍历历史预测矢量列表,其中有三个预测矢量(SV7、SV3、SV2)同时满足初始串预测矢量候选列表的2(SVP_cands[0]、SVP_cands[2])个类型条件。将SV7、SV3填充至SVP_cands[0]、SVP_cands[2]中,SV7填充至SVP_cands[0]、SV3填充至SVP_cands[2],以预先构成初始串预测矢量候选列表。具体的,在填充后,还需要对填充后的初始串预测矢量候选列表进行查重,将重复填充的预测矢量删除,在经过查重后,若查重后的初始串预测矢量候选列表中还有未填充的位置时,例如,若查重后,列表中SVP_list[5]和SVP_list[6]仍然没有填充完,且SV2经过查重后与列表内的预测矢量都不相同时,则将SV2填充至SVP_list[5]。
或者,在另一实施例中,假设按照倒序的方式遍历历史预测矢量列表,其中有三个预测矢量(SV7、SV3、SV2)同时满足初始串预测矢量候选列表的2(SVP_cands[0]、SVP_cands[2])个类型条件。将SV7、SV3填充至SVP_cands[0]、SVP_cands[2]中,SV7填充至SVP_cands[0]、SV3填充至SVP_cands[2],以预先构成初始串预测矢量候选列表。若构成的初始串预测矢量候选列表中还有未填充的位置时,例如,列表中SVP_cands[5]和SVP_cands[6]仍然没有填充完,则将SV2填充至SVP_cands[5]。在填充完成后,对候选列表进行查重,将重复填充的预测矢量删除,或者将中间和/或末尾的空余位置去除。
在一具体实施例中,对初始串预测矢量候选列表进行查重包括:剔除重复填充的预测矢量及去除中间和/或末尾的空余位置,或者在另一实施例中,查重操作还包括将中间空余位置移动至末尾,具体不做限定。
需要说明的是,在利用历史预测矢量列表为当前块构建初始串预测矢量候选列表时,在将历史预测矢量列表中的预测矢量填充形成初始串预测矢量后,还需要对初始串预测矢量进行查重,此时若查重后的初始串预测矢量候选列表中还有空余位置时,则按照上述规则将空余位置进行填充。具体的,在一实施例中,若经查重后,列表中的空余位置位于列表的前面时,则按照上述规则将空余位置进行填充。或者在另一实施例中,在经过查重后,并且将列表中的空余位置移动至列表的末尾,则按照上述规则将位于列表末尾的空余位置进行填充,具体不做限定,以实际操作为准。
再例如,在一实施例中,若n<m,则n个所述预测矢量分别填入m个所述条件中的n个对应的位置,并在所述初始串预测矢量候选列表剩余m-n个对应的位置填入初始值以形成所述最终串预测矢量候选列表。例如,在一实施例中,假设按照倒序的方式遍历历史预测矢量列表,其中有3个预测矢量(SV7、SV3、SV2)同时满足初始串预测矢量候选列表的4(SVP_cands[0]、SVP_cands[2]、SVP_cands[3]、SVP_cands[4])个类型条件。在填充时,将SV7填充至SVP_cands[0],将SV3填充至SVP_cands[2],SV2填充至SVP_cands[3],以形成初始串预测矢量候选列表。在剩余的SVP_cands[4]中填充初始值,例如填充0矢量。具体的,在一实施例中,在将n个预测矢量分别填入m个条件中的n个对应的位置之后,且在初始串预测矢量候选列表构建完成之后,还需要对初始串预测矢量候选列表进行查重,在查重后,若初始串预测矢量候选列表还存在其他空余位置,则将其空余位置填入初始值。
本申请中,在进行串匹配预测时,增加构建最终串预测矢量候选列表的过程,以此为后续降低代价值做准备。
在另一实施例中,为了进一步增加构建的最终串预测矢量候选列表的多样性,还可以利用参考候选项基于初始串预测矢量候选列表为当前块构建最终串预测矢量候选列表,参考候选项包括以下至少一种:当前块的已编码邻块的串矢量、预设串矢量和已填入预测矢量候选列表的预测矢量的计算结果。
具体的,在通过上述方式得到初始串预测矢量候选列表后,对初始串预测矢量候选列表进行查重,若经过查重后,初始串预测矢量候选列表未被填满,则选择至少一个参考候选项填入查重后的初始串预测矢量候选列表,以形成最终串预测矢量候选列表。
参考候选项包括当前块的已编码邻块的串矢量、预设串矢量和已填入初始串预测矢量候选列表的预测矢量的计算结果。在进行填充时,按照预定的优先权顺序进行填充。在一具体实施例中,当前块的已编码邻块的串矢量的填充优先权>预设串矢量的填充优先权>已填入初始串预测矢量候选列表的预测矢量的计算结果的填充优先权。
具体的,在历史预测矢量列表按照上述7类条件的预测矢量填充规则,没有将初始串预测矢量候选列表填充满时;则将当前块的已编码邻块的预测矢量填充至未填充的位置内;若还未填充满时,还可以将预设串矢量填充至未填充的位置内;若还未填满时,则将已填入初始串预测矢量候选列表的预测矢量的计算结果填充至未填充的位置内。或者,在一实施例中,在历史预测矢量列表按照上述7类条件的预测矢量填充规则进行填充形成初始串预测矢量候选列表后,对初始串预测矢量候选列表进行查重,在此之后,若查重后的初始串预测矢量候选列表未填充满时,则将当前块的已编码邻块的预测矢量填充至未填充的位置内;若还未填充满时,还可以将预设串矢量填充至未填充的位置内;若还未填满时,则将已填入初始串预测矢量候选列表的预测矢量的计算结果填充至未填充的位置内。
具体的,可以假设预设串矢量为(-width,0),(0,-height),其中,width和height为当前块的宽和高;已填入初始串预测矢量候选列表的预测矢量的计算结果为初始串预测矢量候选列表中已填充的预测矢量推导出的新的预测矢量。
在一实施例中,在将参考候选项填入初始串预测矢量候选列表和/或查重后的初始串预测矢量候选列表中时需要先选择至少一个参考候选项,将选中的参考候选项填充至初始串预测矢量候选列表和/或查重后的初始串预测矢量候选列表中,以形成最终串预测矢量候选列表。
例如,在一实施例中,假设按照倒序的方式遍历历史预测矢量列表,其中有三个预测矢量(SV7、SV3、SV2)同时满足SVP_cands[0]~SVP_cands[6]中的2(SVP_cands[0]、SVP_cands[2])个类型条件。将SV7、SV3、SV2按照正序的方式填充至SVP_cands[0]、SVP_cands[2]中,SV7填充至SVP_cands[0]、SV3填充至SVP_cands[2];在填充后,还需要对其进行查重。在一实施例中,假设查重后的初始串预测矢量候选列表为:SVP_list[0]~SVP_list[6],经过查重后,若列表中还有未填充的,例如,若查重后,列表中SVP_list[5]和SVP_list[6]仍然没有填充完,且SV2与列表内的预测矢量都不相同,则SV2填充至查重后的初始串预测矢量候选列表中的SVP_list[5]。此时,查重后的初始串预测矢量候选列表中的SVP_cands[6]仍然没有填充,则可以将预设串矢量((-width,0)或(0,-height))填充至查重后的初始串预测矢量候选列表中的SVP_list[6]。
步骤S22:基于最终串预测矢量候选列表进行运动搜索以确定当前块的最终串矢量。
步骤S23:利用所述最终串矢量对所述当前块进行运动补偿。
本实施例步骤S22及步骤S23的其他详细说明请参见其他实施例,在此不再重复。
请参见图9,为本发明串匹配预测装置的第二实施例的结构示意图。其中,串匹配预测装置包括列表构建模块21、匹配模块22及补偿模块23。
其中,列表构建模块21用于利用历史预测矢量列表和/或参考候选项为当前块构建最终串预测矢量候选列表,所述参考候选项包括以下至少一种:所述当前块的已编码邻块的串矢量、预设串矢量和已填入所述初始串预测矢量候选列表的预测矢量的计算结果。
匹配模块22用于基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量。
补偿模块23用于利用所述最终串矢量对所述当前块进行运动补偿。
请参见图10,为本发明串匹配预测方法的第三实施例的流程示意图,包括:
步骤S31:为当前块构建最终串预测矢量候选列表,所述最终串预测矢量候选列表包括编码单元级最终串预测矢量候选列表。
具体的,最终串预测矢量候选列表包括编码单元级最终串预测矢量候选列表以及像素级最终串预测矢量候选列表。其中,像素级最终串预测矢量候选列表为在编码单元级最终串预测矢量候选列表中加入单位运动矢量。
因此,基于最终串预测矢量候选列表进行运动搜索以确定当前块的最终串矢量:基于编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定当前块的最终串矢量;和/或基于像素级最终串预测矢量候选列表进行像素级运动搜索以确定当前块的最终串矢量。
具体的,在一实施例中,可以先利用编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定当前块的最终串矢量,在使用该方法未确定出当前块的最终串矢量时,可以进一步利用像素级最终串预测矢量候选列表进行像素级运动搜索以确定当前块的最终串矢量。或者在另一实施例中,还可以先利用像素级最终串预测矢量候选列表进行像素级运动搜索以确定当前块的最终串矢量,在使用该方法未确定出当前块的最终串矢量时,可以进一步利用编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定当前块的最终串矢量。
步骤S32:基于所述编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定所述当前块的最终串矢量;所述编码单元级运动搜索的起点为所述当前块以及所述编码单元级最终串预测矢量候选列表中的预测矢量指向的位置。
具体的,现有技术中的编码单元级运动搜索是以当前块的左上角为起点,以水平向左和垂直向上进行搜索。且其搜索范围在垂直方向上侧不能超过当前最大编码单元的上边界,左侧边界不能超过当前最大编码单元左边相邻最大编码单元的左边界。
在本发明的一实施例中,可以在以当前块的左上角为起点,以水平向左和垂直向上进行搜索之外,还可以利用编码单元级最终串预测矢量候选列表中的预测矢量指向的位置为起点在起点的上、下、左、右进行十字搜索。即在本申请实施例中,编码单元级运动搜索的起点为当前块以及编码单元级最终串预测矢量候选列表中的预测矢量指向的位置。具体的,在进行运动搜索时,起点均为对应块的左上角。即本申请中,编码单元级运动搜索的起点为当前块的左上角以及编码单元级最终串预测矢量候选列表中的预测矢量指向的位置的左上角。
需要说明的是,在进行编码单元级运动搜索时,预测矢量指向的位置为块的左上角。
具体的,在一实施例中,在利用编码单元级最终串预测矢量候选列表中的预测矢量指向的位置为起点进行十字搜索之前,还需要对编码单元级最终串预测矢量候选列表中的预测矢量进行代价值计算,具体利用候选列表中的预测矢量直接进行预测后再计算代价值,将代价值最小的预测矢量指向的位置作为起点。以当前块和/或代价值最小的预测矢量指向的位置为起点在起点的上、下、左、右进行十字搜索,以确定当前块的最终串矢量。
具体的,本发明的一具体实施例中,在确定好起点进行搜索时,可以1个像素为步长搜索和当前块尺寸相同的匹配块,将搜索出的所有匹配块进行代价值计算,得到最终匹配块,最终匹配块和当前块的运动矢量为最终串矢量,最终串矢量和对应的预测矢量的差为最终需要编码的串矢量差。具体的,通过本实施例的方式,在对当前块进行编码时,可以对串矢量差及预测矢量对应的索引进行编码,而不需要编码当前块对应的串矢量,节省编码开销。
在另一实施例中,还可以先以当前块和/或编码单元级最终串预测矢量候选列表中的预测矢量指向的位置为起点在起点的上、下、左、右进行十字搜索,进而确定出和当前块尺寸相同的匹配块,以及匹配块对应的串矢量,在搜索到当前块对应的匹配块的串矢量后,对串矢量进行代价值计算,选择代价值最小的串矢量作为当前块的最终串矢量。
在一实施例中,在进行搜索进而选取匹配块的过程中,对于亮度块,在搜索范围内,搜索与当前块的相同尺寸的搜索块作为匹配块,搜索块需要为已编码的块。搜索按照先垂直后水平的方式进行搜索。通过SAD的方式计算当前块与搜索块,最多选出8个最小的SAD,按照SAD从小到大的方式进行排列得到SAD列表,记录SAD列表对应SAD的搜索块左上角和当前块左上角坐标的差值列表。
对于色度块,如果搜索块左上角和当前块左上角坐标的差值列表存在且该列表中第一个差值对应的SAD小于等于32,需要遍历SAD列表和对应SAD的搜索块左上角和当前块左上角坐标的差值列表,重新计算三个分量(两个色度块分量及一个亮度块分量)总的SAD,选出最小的SAD对应的差值列表中对应的差值作为当前块和匹配块的差值;否则将亮度SAD对应的搜索块左上角和当前块左上角坐标的差值列表第一个差值作为当前块和匹配块的坐标差值。其中,当前块和匹配块的坐标差值为当前块的偏移矢量。
在通过上述方式搜索出匹配块后,利用SSE的方式计算当前块与匹配块的代价值,其中,当前块与匹配块的代价值为当前块和匹配块的坐标差值消耗的比特。如果计算得到的代价值小于之前最佳模式下的代价值,则保存该匹配块的索引,当前块和匹配块的坐标差值,匹配的像素个数以及匹配串类型。
步骤S33:利用所述最终串矢量对所述当前块进行运动补偿。
本实施例中,步骤S31及步骤S33与上述实施例中的相同,在此不再赘述。
请参见图11,为本发明串匹配预测装置的第三实施例的结构示意图。其中,串匹配预测装置包括列表构建模块31、匹配模块32及补偿模块33。
其中,列表构建模块31用于为当前块构建最终串预测矢量候选列表,所述最终串预测矢量候选列表包括编码单元级最终串预测矢量候选列表。
匹配模块32用于基于所述编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定所述当前块的最终串矢量;所述编码单元级运动搜索的起点为所述当前块以及所述编码单元级最终串预测矢量候选列表中的预测矢量指向的位置;
补偿模块33用于利用所述最终串矢量对所述当前块进行运动补偿。
请参见图12,为本发明串匹配预测方法的第四实施例的流程示意图,包括:
步骤S41:为当前块构建最终串预测矢量候选列表,所述最终串预测矢量候选列表包括像素级最终串预测矢量候选列表。
步骤S42:基于所述像素级最终串预测矢量候选列表进行像素级运动搜索以确定所述当前块的最终串矢量;所述像素级运动搜索的起点为哈希匹配像素、所述当前块以及所述编码单元级最终串预测矢量候选列表中的预测矢量指向的位置。
现有技术中对当前块以水平弓形扫描方式进行扫描,当扫描到某一个串的第一个像素时,直接用运动矢量(0,-1)(-1,0)、历史运动矢量以及在搜索范围内和该像素哈希值相等的重建像素进行匹配操作。
而本申请在现有技术的基础上,进一步以哈希匹配像素、当前块以及像素级最终串预测矢量候选列表中的预测矢量指向的位置为起点进行进一步搜索。具体的,以当前块以及所述像素级的最终串预测矢量候选列表中的预测矢量指向的位置进行搜索的过程与上述编码单元级运动搜索方式相同,在此不再赘述。本申请像素运动搜索的起点还包括哈希匹配像素。具体的,以哈希匹配像素为起点进行十字搜索的过程中,仍旧以1像素为步长,偏移1个像素步长后就以该像素为起点进行串长度的判定。在一实施例中,所有搜索出的匹配块对应的匹配串必须符合上述所述的规范性限制。需要说明的是,在进行像素级运动搜索时,预测矢量指向的位置为一个像素。
具体的,先对当前串的第一个像素进行哈希匹配,进而确定出哈希匹配像素;具体的,遍历每个哈希匹配像素,以每个哈希匹配像素为起点进行匹配串的确定。对每个以不同哈希匹配像素为起点的匹配串之间进行代价值比较,选出代价值比较后得到最佳的哈希匹配像素以及对应的串矢量作为最终串矢量,遍历最终串测试矢量候选列表中所有的预测矢量,进行预测矢量的索引以及串矢量差的编码,比较编码开销,选择编码开销最小的预测矢量。或者在另一实施例中,还可以以每个预测矢量以及哈希匹配像素作为起点进行十字搜索。
在另一实施例中,遍历每个预测矢量,先不进行十字搜索,计算每个预测矢量的代价值,得到最佳预测矢量,再以最佳预测矢量进行十字搜索。及遍历每个哈希匹配像素点,先不进行十字搜索,计算每个哈希匹配像素的代价值,得到一个最佳的哈希匹配像素,再以最佳哈希匹配像素为起点进行十字搜索。
在另一实施例中,还可以以每个预测矢量指向的位置为起点进行十字搜索;及遍历每个哈希匹配像素点,先不进行十字搜索,用计算每个哈希匹配像素的代价值,得到一个最佳的哈希匹配像素,再以最佳哈希匹配像素为起点进行十字搜索。
在另一实施例中,还可以遍历每个预测矢量,先不进行十字搜索,计算每个预测矢量的代价值,得到最佳预测矢量,再以最佳预测矢量进行十字搜索;及每个哈希匹配像素作为起点进行十字型搜索。
现有技术中的方案存在错误传递的问题,因为串的长度判定是用当前原始像素和预测矢量指向的参考像素的原始像素相减后小于一个阈值才能作为当前串的一部分。在某些情况下,比如当前块是一个从上到下渐变色的块,若用(0,-1)进行预测时,由于两两相邻行之间的像素差异值都很小,小于所设阈值,所以每一行都是一个串,所以当前行的像素直接取正上方相邻像素的值作为当前像素的预测值,然后下一行的像素也是取正上方相邻像素值作为当前像素的预测值,这就造成所有行像素的预测值实际上都是块内第一行的正上方一行参考像素的像素值,结果预测出来的块就不是一个渐变色的块了,和原来的块差别巨大。因此为了避免串匹配过程中错误传递的问题,在进行串长度判定的阈值比较时需要引入当前像素和参考像素的重建像素的差值,可直接用该差值去进行判断,若该差值在阈值内才能代表当前像素是当前串的一部分;或用当前像素和参考像素的重建像素的差值,以及现有技术中当前像素和参考像素的原始像素的差值联合进行判断,当两个差值都小于阈值时,才能代表当前像素是当前串的一部分。
步骤S43:利用所述最终串矢量对所述当前块进行运动补偿。
本实施例中,步骤S41及步骤S43与上述实施例中相同,在此不再赘述。
请参见图13,为本发明串匹配预测装置的第四实施例的结构示意图。其中,串匹配预测装置包括列表构建模块41、匹配模块42及补偿模块43。
其中,列表构建模块41用于为当前块构建最终串预测矢量候选列表,所述最终串预测矢量候选列表包括像素级最终串预测矢量候选列表。
匹配模块42用于基于所述像素级最终串预测矢量候选列表进行像素级运动搜索以确定所述当前块的最终串矢量;所述像素级运动搜索的起点为哈希匹配像素、所述当前块以及所述像素级最终串预测矢量候选列表中的预测矢量指向的位置。
补偿模块43用于利用所述最终串矢量对所述当前块进行运动补偿。
请参见图14,为本发明串匹配预测方法的第五实施例的流程示意图,包括:
步骤S51:为当前块构建最终串预测矢量候选列表。
步骤S52:基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量。
步骤S53:利用所述最终串矢量对所述当前块进行运动补偿得到第一预测块。
具体的,当前块根据最终串矢量通过像素插值或像素拷贝的方式基于最终匹配块获取预测值,将当前块的原始像素值和预测值相减得到残差块,再然后对残差块进行变换量化、反量化反变换得到当前块进行运动补偿后的第一预测块。
步骤S54:对所述第一预测块进行滤波得到第二预测块。
具体的,对第一预测块进行滤波,例如帧间预测滤波,即当前块像素经过串匹配预测的预测值和周围空域的已编码像素的重建值进行加权。
步骤S55:计算并比较所述第一预测块及所述第二预测块的编码代价以确定是否进行滤波。
具体的,对当前块进行编码得到当前块的码流,码流中包括滤波标记;计算比较第一预测块和第二预测块的编码代价,若第一预测块的编码代价大于第二预测块的编码代价,则滤波标记用于表示进行滤波,若第一预测块的编码代价小于第二预测块的编码代价,则滤波标记用于表示不进行滤波。
在另一具体实施例中,可以不进行滤波,直接基于第一预测块进行编码。
在一实施例中,码流中还包括串矢量差、最终预测矢量的索引,串矢量差为当前串对应的最终串矢量与最终预测矢量的差值,最终预测矢量的索引为所述预测矢量在所述最终串预测矢量候选列表中的位置。其中,最终预测矢量为比较代价值后选择的预测矢量,或者最终预测矢量为当前块进行编码的预测矢量。现有技术中,在编码时,是直接对最终串矢量进行编码的,以此会增大编码开销,本申请通过引入最终串预测矢量候选列表,通过最终串预测矢量候选列表可以得到串矢量差以及最终预测矢量的索引,以此,在编码时对串矢量差以及最终预测矢量的索引进行编码能够降低编码开销。具体的,在一实施例中,码流还包括:最终预测矢量来源的标识,最终预测矢量来源的标识表示最终预测矢量来自编码单元级最终串预测矢量候选列表或像素级最终串预测矢量候选列表。
本实施例中,步骤S51及步骤S52的其他详细说明请参见其他实施例,在此不再重复。
请参见图15,为本发明串匹配预测装置的第五实施例的结构示意图。其中,串匹配预测装置包括列表构建模块51、匹配模块52、补偿模块53、滤波模块54及计算模块55。
其中,列表构建模块51用于为当前块构建最终串预测矢量候选列表。
匹配模块52用于基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量。
补偿模块53用于利用所述最终串矢量对所述当前块进行运动补偿得到第一预测块。
滤波模块54用于对所述第一预测块进行滤波得到第二预测块。
计算模块55用于计算并比较所述第一预测块及所述第二预测块的编码代价以确定是否进行滤波。
请参见图16,为本发明串匹配预测方法的第六实施例的流程示意图。
步骤S61:判断当前块是否满足串匹配预测条件。
在一实施例中,帧内块复制预测条件包括当前块的内容属于自然图像或自然图像与屏幕内容图像的混合,屏幕内容图像为屏幕生成内容、计算机产生图像。若满足,则进入步骤S62,若不满足,则进入步骤S63。
在另一实施例中,帧内块复制预测条件还包括:当前块的宽和高均满足块尺寸限制条件。现有技术中,块尺寸限制条件为:串匹配预测技术用于宽和高都大于等于4且小于等于32的亮度块,对于某些小块,若再进一步划分后产生边长小于4的色度块,那么这些小块的色度块部分将不再进一步划分。即现有技术中,对于再进一步划分后产生边长小于4的色度块的小尺寸块,不会采用串匹配预测技术。本发明中,块尺寸限制条件为:串匹配预测技术用于宽和高都大于等于4且小于等于32的亮度块,并且对于再进一步划分后产生边长小于4的色度块的小尺寸块,通过本发明的方法可以对小尺寸的色度块进行串匹配预测和用其他预测模式预测进行代价值比较选择最佳预测模式,即本发明对于进一步划分后产生边长小于4的色度块的小尺寸块,能够采用串匹配预测技术。
步骤S62:若满足,则为当前块构建最终串预测矢量候选列表。
若当前块的内容属于自然图像或自然图像与屏幕内容图像的混合,或者当前块的宽和高均小于4;则为当前块构建最终串预测矢量候选列表。
步骤S63:基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量。
步骤S64:利用所述最终串矢量对所述当前块进行运动补偿。
本实施例中步骤S63及步骤S64的其他详细实施方式请参照其他实施例,在此不再赘述。
请参见图17,为本发明串匹配预测装置的第六实施例的结构示意图。串匹配预测装置包括:条件判断模块61、列表构建模块62、匹配模块63及补偿模块64。
条件判断模块61用于判断当前块是否满足串匹配预测条件,所述串匹配预测条件包括所述当前块的内容属于自然图像或自然图像与屏幕内容图像的混合。
若满足,则利用列表构建模块62为当前块构建最终串预测矢量候选列表。
匹配模块63用于基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量。
补偿模块64用于利用所述最终串矢量对所述当前块进行运动补偿。
请参见图18,为本发明串匹配预测装置的第七实施例的结构示意图。串匹配预测装置包括相互连接的存储器72和处理器71。
存储器72用于存储实现上述任意一项的串匹配预测方法的程序指令。
处理器71用于执行存储器72存储的程序指令。
其中,处理器71还可以称为CPU(Central Processing Unit,中央处理单元)。处理器71可能是一种集成电路芯片,具有信号的处理能力。处理器71还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器72可以为内存条、TF卡等,可以存储串匹配预测装置中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。有了存储器,串匹配预测装置才有记忆功能,才能保证正常工作。串匹配预测装置的存储器按用途存储器可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,系统服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。
请参阅图19,为本发明计算机可读存储介质的结构示意图。本申请的存储介质存储有能够实现上述所有串匹配预测方法的程序文件81,其中,该程序文件81可以以软件产品的形式存储在上述存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储装置包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (36)
1.一种串匹配预测方法,其特征在于,包括:
为当前块构建最终串预测矢量候选列表,所述最终串预测矢量候选列表包括:编码单元级最终串预测矢量候选列表以及像素级最终串预测矢量候选列表;
基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量;
利用所述最终串矢量对所述当前块进行运动补偿。
2.根据权利要求1所述的串匹配预测方法,其特征在于,所述为当前块构建最终串预测矢量候选列表包括:
利用历史预测矢量列表为所述当前块构建初始串预测矢量候选列表;若所述历史预测矢量列表中的n个预测矢量同时满足m个相同的条件,n和m均大于一,则将n个所述预测矢量中的至少部分填入对应的条件中,以形成所述初始串预测矢量候选列表;
基于所述初始串预测矢量候选列表构建所述最终串预测矢量候选列表。
3.根据权利要求2所述的串匹配预测方法,其特征在于,
所述将n个所述预测矢量中的至少部分填入对应的条件中,以形成所述初始串预测矢量候选列表包括:
若n>m,则将n个所述预测矢量中的m个分别填入m个所述条件对应的位置;
若n=m,则将n个所述预测矢量分别填入m个所述条件对应的位置;
若n<m,则将n个所述预测矢量分别填入m个所述条件中的n个对应的位置。
4.根据权利要求3所述的串匹配预测方法,其特征在于,
所述基于所述初始串预测矢量候选列表构建所述最终预测矢量候选列表包括:
若n>m,若遍历所述历史预测矢量列表中的所有所述预测矢量之后,所述初始串预测矢量候选列表仍有空余位置,则将剩余n-m个所述预测矢量填入所述空余位置以形成所述最终串预测矢量候选列表;
若n<m,则在所述初始串预测矢量候选列表剩余m-n个对应的位置填入初始值以形成所述最终串预测矢量候选列表。
5.根据权利要求4所述的串匹配预测方法,其特征在于,所述将n个所述预测矢量中的至少部分填入对应的条件中,以形成所述初始串预测矢量候选列表,包括:
若对应的条件已被所述预测矢量填充,则跳过该位置,和/或
若一个所述预测矢量符合多个对应的条件,则将所述预测矢量填入第一个符合的条件中。
6.根据权利要求1所述的串匹配预测方法,其特征在于,在所述编码单元级最终串预测矢量候选列表中加入单位运动矢量组成所述像素级最终串预测矢量候选列表。
7.根据权利要求6所述的串匹配预测方法,其特征在于,所述为当前块构建最终串预测矢量候选列表包括:
利用参考候选项基于初始串预测矢量候选列表为当前块构建最终串预测矢量候选列表,所述参考候选项包括以下至少一种:所述当前块的已编码邻块的串矢量、预设串矢量和已填入所述初始串预测矢量候选列表的预测矢量的计算结果。
8.根据权利要求7所述的串匹配预测方法,其特征在于,所述利用参考候选项基于所述初始串预测矢量候选列表为当前块构建最终串预测矢量候选列表包括:
若所述初始串预测矢量候选列表未被填满,则选择至少一个所述参考候选项填入所述初始串预测矢量候选列表,以形成所述最终串预测矢量候选列表。
9.根据权利要求8所述的串匹配预测方法,其特征在于,
所述选择至少一个所述参考候选项填入所述初始串预测矢量候选列表包括:
选择至少一个所述参考候选项;
将选中的所述参考候选项与所述编码单元级预测矢量候选列表中的预测矢量进行查重;
若通过查重,则将选中的所述参考候选项填入所述编码单元级预测矢量候选列表。
10.根据权利要求1所述的串匹配预测方法,其特征在于,所述基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量包括:
基于所述编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定所述当前块的最终串矢量;和/或
基于所述像素级最终串预测矢量候选列表进行像素级运动搜索以确定所述当前块的最终串矢量。
11.根据权利要求10所述的串匹配预测方法,其特征在于,所述基于所述编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定所述当前块的最终串矢量包括:
所述编码单元级运动搜索的起点为所述当前块以及所述编码单元级最终串预测矢量候选列表中的预测矢量指向的位置。
12.根据权利要求11所述的串匹配预测方法,其特征在于,所述基于所述像素级最终串预测矢量候选列表进行像素级运动搜索以确定所述当前块的最终串矢量包括:
以所述当前块以及所述编码单元级最终串预测矢量候选列表中的预测矢量指向的位置为起点在上、下、左、右进行十字搜索,以确定所述当前块对应的串矢量;
对所述当前块对应的串矢量进行代价值计算,选择代价值最小的串矢量作为所述当前块的最终串矢量。
13.根据权利要求11所述的串匹配预测方法,其特征在于,所述基于所述编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定所述当前块的最终串矢量包括:
对所述编码单元级最终串预测矢量候选列表中的预测矢量进行代价值计算,将代价值最小的所述预测矢量指向的位置作为起点;
以所述当前块和/或代价值最小的所述预测矢量指向的位置为起点在所述起点的上、下、左、右进行十字搜索,以确定所述当前块的最终串矢量。
14.根据权利要求10所述的串匹配预测方法,其特征在于,所述基于所述像素级最终串预测矢量候选列表进行像素级运动搜索以确定所述当前块的最终串矢量包括:
所述像素级运动搜索的起点为哈希匹配像素、所述当前块以及所述像素级的最终串预测矢量候选列表中的预测矢量指向的位置。
15.根据权利要求14所述的串匹配预测方法,其特征在于,所述基于所述像素级预测矢量候选列表进行像素级运动搜索以确定所述当前块的最终串矢量包括:
对当前串的第一个像素进行哈希匹配,以确定出所述哈希匹配像素;
以所述哈希匹配像素、所述当前块以及所述像素级的最终串预测矢量候选列表中的预测矢量指向的位置为起点在上、下、左、右进行十字搜索,以确定所述当前块对应的串矢量;
对所述当前块对应的串矢量进行代价值计算,选择代价值最小的串矢量作为所述当前块的最终串矢量。
16.根据权利要求14所述的串匹配预测方法,其特征在于,所述基于所述像素级最终串预测矢量候选列表进行像素级运动搜索以确定所述当前块的最终串矢量包括:
对所述哈希匹配像素及所述像素级最终串预测矢量候选列表中的预测矢量进行代价值计算,将代价值最小的所述哈希匹配像素及所述预测矢量指向的位置作为起点;
以所述当前块、代价值最小的所述预测矢量指向的位置以及代价值最小的所述哈希匹配像素为起点在所述当前块、代价值最小的所述预测矢量以及代价值最小的所述哈希匹配像素的上、下、左、右进行十字搜索,以确定所述当前块的最终串矢量。
17.根据权利要求1所述的串匹配预测方法,其特征在于,所述利用所述最终串矢量对所述当前块进行运动补偿包括:
利用所述最终串矢量对所述当前块进行运动补偿得到第一预测块;
对所述第一预测块进行滤波得到第二预测块;
计算并比较所述第一预测块及所述第二预测块的编码代价以确定是否进行滤波。
18.根据权利要求17所述的串匹配预测方法,其特征在于,包括:
对所述当前块进行编码得到所述当前块的码流,所述码流中包括滤波标记,若所述第一预测块的编码代价大于所述第二预测块的编码代价,则所述滤波标记用于表示进行滤波,否则所述滤波标记用于表示不进行滤波。
19.根据权利要求18所述的串匹配预测方法,其特征在于,所述码流还包括串矢量差、最终预测矢量的索引以及最终预测矢量来源的标识,所述串矢量差为当前串对应的最终串矢量与最终预测矢量的差值,所述最终预测矢量的索引为所述预测矢量在所述最终串预测矢量候选列表中的位置,所述最终预测矢量来源的标识表示所述最终预测矢量来自编码单元级最终串预测矢量候选列表或像素级最终串预测矢量候选列表。
20.根据权利要求19所述的串匹配预测方法,其特征在于,所述码流还包括:所述串矢量差的编码精度;
其中,所述串矢量差的编码精度包括4倍精度、整像素精度、8倍精度以及16倍精度中任一种。
21.根据权利要求1所述的串匹配预测方法,其特征在于,所述为当前块构建最终串预测矢量候选列表之前还包括:
判断当前块是否满足串匹配预测条件,所述串匹配预测条件包括:所述当前块的内容属于自然图像或自然图像与屏幕内容图像的混合;
若满足,则为当前块构建最终串预测矢量候选列表。
22.根据权利要求21所述的串匹配预测方法,其特征在于,所述串匹配预测条件包括还包括:所述当前块的宽和高均满足块尺寸限制条件。
23.一种串匹配预测装置,其特征在于,包括:
列表构建模块,用于为当前块构建最终串预测矢量候选列表,所述最终串预测矢量候选列表包括:编码单元级最终串预测矢量候选列表以及像素级最终串预测矢量候选列表;
匹配模块,用于基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量;
补偿模块,用于利用所述最终串矢量对所述当前块进行运动补偿。
24.一种串匹配预测方法,其特征在于,包括:
利用历史预测矢量列表和/或参考候选项为当前块构建最终串预测矢量候选列表,所述参考候选项包括以下至少一种:所述当前块的已编码邻块的串矢量、预设串矢量和已填入初始串预测矢量候选列表的预测矢量的计算结果,所述最终串预测矢量候选列表包括:编码单元级最终串预测矢量候选列表以及像素级最终串预测矢量候选列表;
基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量;
利用所述最终串矢量对所述当前块进行运动补偿。
25.根据权利要求24所述的串匹配预测方法,其特征在于,所述最终串预测矢量候选列表包括:编码单元级最终串预测矢量候选列表以及像素级最终串预测矢量候选列表,其中,所述像素级最终串预测矢量候选列表为在所述编码单元级最终串预测矢量候选列表中加入单位运动矢量。
26.根据权利要求25所述的串匹配预测方法,其特征在于,
所述利用历史预测矢量列表和/或参考候选项为当前块构建最终串预测矢量候选列表包括:
利用所述历史预测矢量列表为所述当前块构建所述初始串预测矢量候选列表;
若所述初始串预测矢量候选列表未被填满,则选择至少一个所述参考候选项填入所述初始串预测矢量候选列表。
27.根据权利要求26所述的串匹配预测方法,其特征在于,
所述选择至少一个所述参考候选项填入所述初始串预测矢量候选列表包括:
选择至少一个所述参考候选项;
将选中的所述参考候选项与所述初始串预测矢量候选列表中的预测矢量进行查重;
若通过查重,则将选中的所述参考候选项填入所述初始串预测矢量候选列表。
28.一种串匹配预测装置,其特征在于,包括:
列表构建模块,用于利用历史预测矢量列表和/或参考候选项为当前块构建最终串预测矢量候选列表,所述参考候选项包括以下至少一种:所述当前块的已编码邻块的串矢量、预设串矢量和已填入初始串预测矢量候选列表的预测矢量的计算结果,所述最终串预测矢量候选列表包括:编码单元级最终串预测矢量候选列表以及像素级最终串预测矢量候选列表;
匹配模块,用于基于所述最终串预测矢量候选列表进行运动搜索以确定所述当前块的最终串矢量;
补偿模块,用于利用所述最终串矢量对所述当前块进行运动补偿。
29.一种串匹配预测方法,其特征在于,包括:
为当前块构建最终串预测矢量候选列表,所述最终串预测矢量候选列表包括编码单元级最终串预测矢量候选列表;
基于所述编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定所述当前块的最终串矢量;所述编码单元级运动搜索的起点为所述当前块以及所述编码单元级最终串预测矢量候选列表中的预测矢量指向的位置;
利用所述最终串矢量对所述当前块进行运动补偿。
30.根据权利要求29所述的串匹配预测方法,其特征在于,包括:基于所述编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定所述当前块的最终串矢量包括:
以所述当前块以及所述编码单元级最终串预测矢量候选列表中的预测矢量指向的位置为起点在上、下、左、右进行十字搜索,以确定所述当前块的最终串矢量。
31.一种串匹配预测装置,其特征在于,包括:
列表构建模块,用于为当前块构建最终串预测矢量候选列表,所述最终串预测矢量候选列表包括编码单元级最终串预测矢量候选列表;
匹配模块,用于基于所述编码单元级最终串预测矢量候选列表进行编码单元级运动搜索以确定所述当前块的最终串矢量;所述编码单元级运动搜索的起点为所述当前块以及所述编码单元级最终串预测矢量候选列表中的预测矢量指向的位置;
补偿模块,用于利用所述最终串矢量对所述当前块进行运动补偿。
32.一种串匹配预测方法,其特征在于,包括:
为当前块构建最终串预测矢量候选列表,所述最终串预测矢量候选列表包括像素级最终串预测矢量候选列表;
基于所述像素级最终串预测矢量候选列表进行像素级运动搜索以确定所述当前块的最终串矢量;所述像素级运动搜索的起点为哈希匹配像素、所述当前块以及所述像素级最终串预测矢量候选列表中的预测矢量指向的位置;
利用所述最终串矢量对所述当前块进行运动补偿。
33.根据权利要求32所述的串匹配预测方法,其特征在于,所述基于所述像素级最终串预测矢量候选列表进行像素级运动搜索以确定所述当前块的最终串矢量包括:
对当前串的第一个像素进行哈希匹配,以确定出所述哈希匹配像素;
以所述哈希匹配像素、所述当前块以及所述像素级的最终串预测矢量候选列表中的预测矢量指向的位置为起点在上、下、左、右进行十字搜索,以确定所述当前块对应的串矢量。
34.一种串匹配预测装置,其特征在于,包括:
列表构建模块,用于为当前块构建最终串预测矢量候选列表,所述最终串预测矢量候选列表包括像素级最终串预测矢量候选列表;
匹配模块,用于基于所述像素级最终串预测矢量候选列表进行像素级运动搜索以确定所述当前块的最终串矢量;所述像素级运动搜索的起点为哈希匹配像素、所述当前块以及所述像素级最终串预测矢量候选列表中的预测矢量指向的位置;
补偿模块,用于利用所述最终串矢量对所述当前块进行运动补偿。
35.一种串匹配预测装置,其特征在于,所述串匹配预测装置包括处理器、与所述处理器连接的存储器,其中,
所述存储器存储有程序指令;
所述处理器用于执行所述存储器存储的程序指令以实现如权利要求1-22、24-27、29-30、32-33中任一项所述的方法。
36.一种计算机可读存储介质,其特征在于,所述存储介质存储有程序指令,所述程序指令被执行时实现如权利要求1-22、24-27、29-30、32-33中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010779852.0A CN112055219B (zh) | 2020-08-05 | 2020-08-05 | 一种串匹配预测方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010779852.0A CN112055219B (zh) | 2020-08-05 | 2020-08-05 | 一种串匹配预测方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112055219A CN112055219A (zh) | 2020-12-08 |
CN112055219B true CN112055219B (zh) | 2021-08-31 |
Family
ID=73602683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010779852.0A Active CN112055219B (zh) | 2020-08-05 | 2020-08-05 | 一种串匹配预测方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112055219B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112073719B (zh) * | 2020-08-21 | 2021-09-14 | 浙江大华技术股份有限公司 | 一种串匹配预测方法、装置、系统及计算机可读存储介质 |
CN113099269B (zh) * | 2021-02-22 | 2023-02-28 | 浙江大华技术股份有限公司 | 串匹配预测方法、编码和解码方法及相关设备、装置 |
CN115086657B (zh) * | 2021-03-14 | 2025-03-14 | 腾讯科技(深圳)有限公司 | 视频编解码方法、装置、计算机可读介质及电子设备 |
CN113365080B (zh) * | 2021-03-19 | 2023-02-28 | 浙江大华技术股份有限公司 | 串编码技术的编解码方法、设备及存储介质 |
CN113542768B (zh) * | 2021-05-18 | 2022-08-09 | 浙江大华技术股份有限公司 | 运动搜索方法、装置及计算机可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104427338A (zh) * | 2013-09-07 | 2015-03-18 | 上海天荷电子信息有限公司 | 一种使用块匹配的图像压缩方法和装置 |
GB2527354A (en) * | 2014-06-19 | 2015-12-23 | Canon Kk | Method and apparatus for vector encoding in video coding and decoding |
CN107483941A (zh) * | 2016-06-08 | 2017-12-15 | 上海天荷电子信息有限公司 | 划分取值范围进行串位移矢量编码的数据压缩方法和装置 |
CN107770527A (zh) * | 2016-08-21 | 2018-03-06 | 上海天荷电子信息有限公司 | 使用邻近编码参数和最近编码参数的数据压缩方法和装置 |
CN110662028A (zh) * | 2018-06-30 | 2020-01-07 | 上海天荷电子信息有限公司 | 分层规定子集对编码参数进行编码的数据压缩方法和装置 |
CN110944190A (zh) * | 2018-09-22 | 2020-03-31 | 上海天荷电子信息有限公司 | 专用历史最近运动矢量预测候选集的图像压缩方法和装置 |
CN110944178A (zh) * | 2018-09-22 | 2020-03-31 | 上海天荷电子信息有限公司 | 使用多个以编码参数关联的候选集的数据压缩方法和装置 |
CN111050182A (zh) * | 2019-12-27 | 2020-04-21 | 浙江大华技术股份有限公司 | 运动矢量的预测方法、视频编码方法及相关设备、装置 |
CN111163322A (zh) * | 2020-01-08 | 2020-05-15 | 绍兴文理学院 | 对基于历史运动矢量的索引进行映射的编码及解码方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110691250B (zh) * | 2013-10-12 | 2022-04-08 | 广州中广国科测控技术有限公司 | 结合块匹配和串匹配的图像压缩装置 |
US10070145B2 (en) * | 2014-02-07 | 2018-09-04 | Mediatek Singapore Pte. Ltd. | Method of coding based on string matching for video compression |
US20150264348A1 (en) * | 2014-03-17 | 2015-09-17 | Qualcomm Incorporated | Dictionary coding of video content |
CN110505488B (zh) * | 2014-03-18 | 2022-01-07 | 上海天荷电子信息有限公司 | 扩展预测像素数组的图像编码或解码方法 |
-
2020
- 2020-08-05 CN CN202010779852.0A patent/CN112055219B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104427338A (zh) * | 2013-09-07 | 2015-03-18 | 上海天荷电子信息有限公司 | 一种使用块匹配的图像压缩方法和装置 |
GB2527354A (en) * | 2014-06-19 | 2015-12-23 | Canon Kk | Method and apparatus for vector encoding in video coding and decoding |
CN107483941A (zh) * | 2016-06-08 | 2017-12-15 | 上海天荷电子信息有限公司 | 划分取值范围进行串位移矢量编码的数据压缩方法和装置 |
CN107770527A (zh) * | 2016-08-21 | 2018-03-06 | 上海天荷电子信息有限公司 | 使用邻近编码参数和最近编码参数的数据压缩方法和装置 |
CN110662028A (zh) * | 2018-06-30 | 2020-01-07 | 上海天荷电子信息有限公司 | 分层规定子集对编码参数进行编码的数据压缩方法和装置 |
CN110944190A (zh) * | 2018-09-22 | 2020-03-31 | 上海天荷电子信息有限公司 | 专用历史最近运动矢量预测候选集的图像压缩方法和装置 |
CN110944178A (zh) * | 2018-09-22 | 2020-03-31 | 上海天荷电子信息有限公司 | 使用多个以编码参数关联的候选集的数据压缩方法和装置 |
CN111050182A (zh) * | 2019-12-27 | 2020-04-21 | 浙江大华技术股份有限公司 | 运动矢量的预测方法、视频编码方法及相关设备、装置 |
CN111163322A (zh) * | 2020-01-08 | 2020-05-15 | 绍兴文理学院 | 对基于历史运动矢量的索引进行映射的编码及解码方法 |
Non-Patent Citations (3)
Title |
---|
A Universal String Matching Approach to Screen Content Coding;Liping Zhao etal;《IEEE TRANSACTIONS ON MULTIMEDIA》;20180430;全文 * |
Description of screen content coding technology proposal by Huawei;Zhan Ma etal;《Joint Collaborative Team on Video Coding (JCT-VC)》;20140404;全文 * |
二维帧内串匹配屏幕图像编码算法;陈先义等;《计算机应用》;20150910;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112055219A (zh) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112055219B (zh) | 一种串匹配预测方法、装置及计算机可读存储介质 | |
US11394970B2 (en) | Image encoding and decoding method and device | |
US8295353B2 (en) | Image encoding device, image encoding control method, and program | |
CN112218092B (zh) | 串编码技术的编码方法、设备及存储介质 | |
CN110087083B (zh) | 帧内色度预测模式的选择方法、图像处理设备及存储设备 | |
CN111586415B (zh) | 视频编码方法、装置、编码器及存储装置 | |
US20140010446A1 (en) | Image coding method, image decoding method, image coding apparatus, and image decoding apparatus | |
CN112055208B (zh) | 视频编码方法、设备及存储装置 | |
CN112073719B (zh) | 一种串匹配预测方法、装置、系统及计算机可读存储介质 | |
CN116569546A (zh) | 帧内预测方法、编码器、解码器以及存储介质 | |
CN105850132A (zh) | 颜色指数预测的方法和装置 | |
CN111163322A (zh) | 对基于历史运动矢量的索引进行映射的编码及解码方法 | |
CN112565760B (zh) | 串编码技术的编码方法、设备及存储介质 | |
CN118337987A (zh) | 一种非暂时性计算机可读介质 | |
JP5592246B2 (ja) | コンテクスト適応エントロピー符号化方法,コンテクスト適応エントロピー復号方法,コンテクスト適応エントロピー符号化装置,コンテクスト適応エントロピー復号装置およびそれらのプログラム | |
CN112004099B (zh) | 一种帧内块复制预测方法、装置及计算机可读存储介质 | |
US20060278725A1 (en) | Image encoding and decoding method and apparatus, and computer-readable recording medium storing program for executing the method | |
CN113365080B (zh) | 串编码技术的编解码方法、设备及存储介质 | |
CN113099269B (zh) | 串匹配预测方法、编码和解码方法及相关设备、装置 | |
CN118020302A (zh) | 视频编解码中针对仿射合并模式的候选导出 | |
CN112532974B (zh) | 串编码技术的编码方法、设备及存储介质 | |
CN113422955B (zh) | Heif图像编码方法和解码方法以及编码装置和解码装置 | |
CN113542768B (zh) | 运动搜索方法、装置及计算机可读存储介质 | |
CN113473119B (zh) | 图像/视频编码方法、装置、系统及计算机可读存储介质 | |
US12177419B2 (en) | Method and apparatus for constructing motion information list in video encoding and decoding and device |
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 |