CN115914645A - 一种帧间预测方法和设备 - Google Patents
一种帧间预测方法和设备 Download PDFInfo
- Publication number
- CN115914645A CN115914645A CN202110946538.1A CN202110946538A CN115914645A CN 115914645 A CN115914645 A CN 115914645A CN 202110946538 A CN202110946538 A CN 202110946538A CN 115914645 A CN115914645 A CN 115914645A
- Authority
- CN
- China
- Prior art keywords
- macro block
- reference macro
- searched
- search
- pixel data
- 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.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供了一种帧间预测方法和设备,所述方法包括:对待编码的视频帧中的当前宏块进行帧间预测时,确定所述当前宏块在所述视频帧的参考帧对应的搜索窗;从外部缓存器中读取所述搜索窗内的像素数据,并存储至内部缓存模块;根据所述当前宏块的参考宏块的像素数据在所述内部缓存模块中的存储地址,从内部缓存模块读取所述参考宏块的像素数据进行至少一次搜索,至搜索到编码代价符合第一预设要求的目标参考宏块。利用本发明提供的方法,可以减少系统带宽,减少帧间搜索的时间,提高视频编码的效率。
Description
技术领域
本发明涉及视频编码领域,尤其涉及一种帧间预测方法和设备。
背景技术
许多视频或动画的连续前后两帧具有很大的相关性,即其相邻帧之间具有冗余信息,因此在视频压缩和视频通信中,不需要将每一帧的所有像素信息传输到解码器端,只需要传输运动信息,解码器即可根据前一帧图像和运动信息更新当前帧,从而达到压缩的目的。运动估计是指在参考帧中搜索一个与当前帧图像块最相似的图像块,即目标图像块,搜索结果用运动向量来表示。通过帧间预测的方法进行运动估计,利用图像帧间的相关性实现图像压缩,减少每个图像块在编码过程中需要传递的信息,从而减少需要进行熵编码的信息,提高最终编码的压缩率,节省通信系统中的带宽。
考虑到搜索效率和所需内存,上述帧间预测首先在参考帧上定位一个搜索窗,在上述搜索窗内搜索一个编码代价最小的目标图像块。搜索目标图像块时,采用一定的算法确定若干待搜索图像块,依次获取上述待搜索图像块的数据,并依次判断上述待搜索图像块是否为目标图像块。
现有技术中,搜索窗以参考帧中的坐标位置(0,0)为中心点,获取待计算图像块的数据时,根据上述待计算图像块相对于上述中心点的位置,将搜索窗切分为多个部分,采用从上述中心点一个部分,一个部分地滑动到上述位置的方式,从外部存储器中一个部分,一个部分地读取滑动范围内全部的数据,以获取上述待计算图像块的数据。但是,上述方法在待计算图像块相对于中心点位置变化较大的情况下,需要读取大量的数据;而且,由于参考帧存储在外部存储器中,上述方法是通过与外部存储器交互实现数据的读取,而外部存储器的访问延迟较大,对带宽的要求也较高,上述方式会增加系统的带宽,及帧间搜索的时间,降低视频编码效率。
发明内容
本发明提供一种帧间预测方法和设备,解决现有技术中帧间预测的系统带宽较大,帧间搜索的时间较长,视频编码效率较低的问题。
第一方面,本发明提供一种帧间预测方法,该方法包括:
对待编码的视频帧中的当前宏块进行帧间预测时,确定所述当前宏块在所述视频帧的参考帧对应的搜索窗;
从外部缓存器中读取所述搜索窗内的像素数据,并存储至内部缓存模块;
根据所述当前宏块的参考宏块的像素数据在所述内部缓存模块中的存储地址,从内部缓存模块读取所述参考宏块的像素数据进行至少一次搜索,至搜索到编码代价符合第一预设要求的目标参考宏块。
可选地,确定所述当前宏块在所述视频帧的参考帧对应的搜索窗,包括:
根据与所述当前宏块相邻的宏块的运动矢量MV值,预测所述当前宏块的MV值,得到预测运动矢量值MVP;
对所述MVP取整,以取整后的MVP对应的像素位置为中心,对所述参考帧进行截取操作,得到预设大小的搜索窗。
本发明实施例提供的帧间预测方法,对MV值进行预测并取整,并以取整后的MVP对应的像素位置为中心,确定搜索窗,提供了一种确定搜索窗的实施方式,提升了本发明实施例的帧间预测方法的可实施性。
可选地,得到预设大小的搜索窗之后,所述方法还包括:
利用增强预测区域搜索EPZS算法,预测所述搜索窗内编码代价小于预设阈值的N个参考宏块相对于所述当前宏块的运动矢量,其中,所述N为正整数;
将预测的运动矢量对应的像素位置作为预测点的像素位置,所述预测点用于确定待搜索参考宏块。
本发明实施例提供的帧间预测方法,利用EPZS算法,预测至少一个用于确定待搜索参考宏块的预测点,确定了目标参考宏块的搜索范围,提升了本发明实施例的帧间预测方法的可实施性和准确性。
可选地,根据所述当前宏块的参考宏块的像素数据在所述内部缓存模块中的存储地址,从内部缓存模块读取所述参考宏块的像素数据进行至少一次搜索之前,所述方法还包括:
根据所述预测点的MV值,确定所述当前宏块的参考宏块的像素数据在所述内部缓存模块中的存储地址。
本发明实施例提供的帧间预测方法,提供了一种确定当前宏块的参考宏块的像素数据在内部缓存模块中的存储地址的实施方式,为读取上述参考宏块的像素数据提供了必要的实施基础,提升了本发明实施例的帧间预测方法的可实施性。
可选地,从外部缓存器中读取所述搜索窗内的像素数据,并存储至内部缓存模块,包括:
按照存储单位tile大小,依次从外部缓存器中读取像素数据,并将依次读取的像素数据中每两个相邻存储单位tile,分别存储至第一内部缓存模块和第二内部缓存模块;
从内部缓存模块读取所述参考宏块的像素数据,包括:
根据存储单位tile的排序,从第一内部缓存模块和第二内部缓存模块读取相邻存储单位tile的像素数据。
本发明实施例提供的帧间预测方法,提供了一种将外部缓存器的像素数据存储至内部缓存模块的实施方式,及提供了一种从内部缓存模块读取像素数据的实施方式,限定了内部缓存模块的数据存储及读取方式,使用tile的方式对搜索窗进行存储,使搜索窗虚拟化,可以减少本发明实施例的帧间预测方法的系统带宽负担,减少帧间搜索的时间,提高视频编码的效率。
可选地,对待编码的视频帧中的当前宏块进行帧间预测之前,所述方法还包括:
通过第一进程从外部缓存器读取所述视频帧中的当前宏块的像素数据;其中,所述第一进程与第二进程采用时分复用方式读取像素数据,所述第二进程用于从外部缓存器读取像素数据以用于帧内预测。
本发明实施例提供的帧间预测方法,采用时分复用的方式从外部缓存器读取数据,可以节省硬件开销。
可选地,所述像素数据为亮度色彩YUV数据。
本发明实施例提供的帧间预测方法,限定了像素数据的数据类型,提升了本发明实施例的帧间预测方法的可实施性。
可选地,从内部缓存模块读取所述参考宏块的像素数据进行至少一次搜索,包括:
搜索整数运动矢量对应的待搜索参考宏块,确定整数编码代价符合第二预设要求的第一目标参考宏块;
根据所述第一目标参考宏块,搜索小数运动矢量对应的待搜索参考宏块,确定小数编码代价符合第三预设要求的第二目标参考宏块;
确定所述第二目标参考宏块为搜索到的编码代价符合第一预设要求的目标参考宏块。
本发明实施例提供的帧间预测方法,通过搜索整数编码代价和搜索小数编码代价确定编码代价符合预设要求的目标参考宏块,提升了本发明实施例的帧间预测方法的可实施性和准确性。
可选地,搜索整数运动矢量对应的待搜索参考宏块,确定整数编码代价符合第二预设要求的第一目标参考宏块,包括:
以取整后的MVP对应的像素位置为中心,确定对应的第一待搜索参考宏块,并计算所述第一待搜索参考宏块的第一整数编码代价;
若所述第一整数编码代价小于第一设定阈值,结束整数运动矢量对应的第一目标参考宏块搜索;
否则,重新确定待搜索参考宏块并进行下一次搜索。
本发明实施例提供的帧间预测方法,提供了一种整数搜索的实施方式,提升了本发明实施例的帧间预测方法的可实施性和准确性。
可选地,重新确定待搜索参考宏块并进行下一次搜索,包括:
确定存在N个预测点时,以各预测点为中心,确定对应的第二待搜索参考宏块,并计算所述第二待搜索参考宏块的第二整数编码代价;
若存在所述第二整数编码代价小于第二设定阈值的第二待搜索参考宏块,结束整数运动矢量对应的第一目标参考宏块搜索。
本发明实施例提供的帧间预测方法,提供了一种重新确定待搜索参考宏块并进行下一次搜索的实施方式,提升了本发明实施例的帧间预测方法的可实施性和准确性。
可选地,重新确定待搜索参考宏块并进行下一次搜索时,所述方法还包括:
若进行下一次搜索时不存在N个预测点,或者,不存在所述第二整数编码代价小于第二设定阈值的第二待搜索参考宏块,则执行:
以之前搜索确定的待搜索参考宏块中编码代价最小的待搜索参考宏块为起点,采用预设搜索模板滑动的方式,在搜索模板内确定整数运动矢量对应的待搜索参考宏块进行下一次搜索。
本发明实施例提供的帧间预测方法,提供了一种采用预设搜索模板重新确定待搜索参考宏块并进行下一次搜索的实施方式,提升了本发明实施例的帧间预测方法的可实施性和准确性。
可选地,根据所述第一目标参考宏块,搜索小数运动矢量对应的待搜索参考宏块,确定小数编码代价符合预设要求的第二目标参考宏块,包括:
确定距离所述第一目标参考宏块对应的中心像素位置设定距离的至少一个像素位置;其中,所述设定距离小于相邻像素之间距离;
以确定的像素位置为中心确定对应的第三待搜索参考宏块,并计算所述第三待参考宏块的第三小数编码代价;
将所述第三小数编码代价中最小的编码代价对应的待搜索参考宏块,确定为第二目标参考宏块。
本发明实施例提供的帧间预测方法,提供了一种小数搜索的实施方式,提升了本发明实施例的帧间预测方法的可实施性和准确性。
第二方面,本发明提供一种帧间预测设备,包括内部缓存模块和电路控制模块,其中:
所述内部缓存模块,用于存储对待编码的视频帧中的当前宏块进行帧间预测时,所述当前宏块在所述视频帧的参考帧对应的搜索窗内的像素数据;
所述集成电路控制模块,用于执行上述第一方面任一所述的帧间预测方法的步骤。本发明提供的一种帧间预测方法和设备,具有以下有益效果:
通过内部缓存模块存储搜索窗内的像素数据,减少与外部存储器的交互,可以减少系统带宽,减少帧间搜索的时间,提高视频编码的效率。
附图说明
图1为一种H.264编码器的示意图;
图2为本发明实施例提供的一种帧间预测方法的流程图;
图3为本发明实施例提供的一种的小菱形搜索的示意图;
图4为本发明实施例提供的一种整数搜索的流程图;
图5为本发明实施例提供的一种视频编码的硬件架构的示意图;
图6为本发明实施例提供的一种帧间预测设备的应用场景的示意图;
图7为本发明实施例提供的一种帧间预测设备的示意图;
图8为现有技术中的一种搜索窗的示意图;
图9为本发明实施例提供的一种内部缓存模块的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的设备和方法的例子。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个,其它量词与之类似应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
以下,对本发明实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)本发明实施例中术语“视频编码”,是指通过压缩技术,将原始视频格式的文件转换成另一种视频格式文件。
(2)本发明实施例中术语“宏块(Macro Block,MB)”,是H.264编码的基本单位,一个编码图像帧首先要划分成多个块(4x4像素)才能进行处理,宏块由整数个块组成,通常宏块大小为16x16个像素。
(3)本发明实施例中术语“运动矢量(MotionVector,MV)”,是指在帧间编码中,表示待编码的当前宏块与其参考图像帧中的匹配宏块之间的相对位移。其中,预测运动矢量(Motion Vector Prediction,MVP)为上述MV的预测值。
(4)本发明实施例中术语“cache缓存”,其结构和内存的结构类似,也包含地址和内容,只是cache缓存的内容除了存储的数据之外,还包含存储的数据的物理内存的地址信息,因此在cache中可以根据地址信息查找对应的数据。一个地址信息和与其对应的数据组成的一行称为一个cache line。
(5)本发明实施例中术语“增强预测区域搜索(Enhance Predictive ZonalSearch,EPZS)算法”,是一种整像素运动估计的搜索算法,采用的是相关性较高的预测方法,更多地根据已有的条件,进行运动矢量的预测。
(6)本发明实施例中术语“双倍速率同步动态随机存储器(Double Data RateSynchronous Dynamic Random Access Memory,DDR SDRAM)”,DDR内存是在SDRAM内存基础上发展而来的,仍然沿用SDRAM生产体系,但是速率翻倍。
(7)本发明实施例中术语“亮度色彩数据”,即YUV数据,分为三个分量,其中,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
(8)本发明实施例中术语“乒乓随机存取存储器(Random Access Memory,RAM)”,主要由两个RAM和两个二选一数据选择器组成。输入数据流通过上述二选一数据选择器时分配到两个RAM数据缓冲区;在第一个数据缓冲周期,将输入数据流缓存到RAMA;在第二个数据缓冲周期,将输入数据流缓存到RAMB,同时将RAMA上一周期缓存的数据传送给输出数据选择器;在第三个数据缓冲周期,将输入数据流缓存到RAMA,同时将RAMB上一周期缓存的数据传送给输出数据选择器;如此循环,直到完成数据流的传送。
H.264是国际标准化组织(International Organization for Standardization,ISO)和国际电信联盟(International Telecommunication Union,ITU)共同提出的新一代数字视频压缩格式。
如图1所示,为一种H.264编码器的示意图。
通过上述图1可以得到,H.264编码器的编码流程主要包括:帧间和帧内预测、变换和反变换、量化和反量化、环路滤波、熵编解码和码率控制。
输入的Fn当前为当前视频帧、Fn-1’参考为参考帧,根据上述输入的数据进行运动预测及帧内预测选择,然后根据帧内预测和帧间预测的结果进行模式选择;根据选择的帧内预测/帧间预测模式对Fn当前进行变换、量化、重排序、熵编码之后,输出压缩后的码流。
码率控制输入相关数据至运动预测及帧内预测选择,协助确定帧内预测和帧间预测的结果。
压缩后的码流经过反量化、反变换及环路滤波后获得Fn’重建的视频帧数据。
上述H.264标准的主要目标是:与其它现有的视频标准相比,在相同的带宽下提供更加优秀的图像质量。H.264标准在同等图像质量下的压缩效率,比以前的标准,例如动态图象专家组(Moving Pictures Experts Group,MPEG)2标准,提高了2倍左右。
在视频通信中,经过压缩后的码流需要在网络上传输,必须适应低带宽的网络传输需求,因此帧间预测在上述H.264编码中有着重要的作用。上述帧间预测利用视频图像帧间的相关性实现图像压缩,通过时间上的相关性,减少每个宏块在编码过程中需要传递的信息,从而减少需要进行熵编码的信息,提高最终编码的压缩率,节省通信系统中的带宽。而且,视频图像帧间具有很强的相关性,利用帧间编码,可获得比帧内编码高得多的压缩比,可以更好的适应低带宽的网络传输需求。
现有技术中,除了上述采用滑动搜索窗的方案,还存在一种重新读取相关搜索窗内的数据的方案,而上述方案会造成同样数据被多次读取,也会增加系统的带宽,并且会增加整个帧间搜索的时间,降低编码器的效率。
鉴于现有技术中帧间预测方案存在系统带宽较大,帧间搜索的时间较长,视频编码效率较低的问题,本申请提出一种帧间预测方法和设备。
下面结合附图对本申请实施例中的一种帧间预测方法和设备进行详细说明。
实施例1
本发明实施例提供一种帧间预测方法的流程图,如图2所示,包括:
步骤S201,对待编码的视频帧中的当前宏块进行帧间预测时,确定所述当前宏块在所述视频帧的参考帧对应的搜索窗;
在进行帧间预测时,确定待编码的视频帧及所述视频帧的参考帧。
上述参考帧指对上述待编码的视频帧进行帧间预测时参考的视频帧,为与上述待编码的视频帧相关性较高的视频帧。
需要说明的是,上述参考帧的时序可以在上述待编码的视频帧的时序之前,也可以在上述待编码的视频帧的时序之后。
上述确定待编码的视频帧的参考帧的方式可以为可实施的任一方式,不是本发明的重点,在此不做赘述。
上述搜索窗用于定位上述当前宏块在所述视频帧的参考帧。
作为一种可选地实施方式,对待编码的视频帧中的当前宏块进行帧间预测之前,所述方法还包括:
通过第一进程从外部缓存器读取所述视频帧中的当前宏块的像素数据;其中,所述第一进程与第二进程采用时分复用方式读取像素数据,所述第二进程用于从外部缓存器读取像素数据以用于帧内预测。
需要说明的是,上述像素数据可以为亮度色彩YUV数据。
帧内预测与帧间预测均需要使用上述外部缓存器中存储的像素数据,帧间预测设备通过上述第一进程从外部缓存器读取上述视频帧中的当前宏块的像素数据,帧内预测设备通过上述第二进程从外部缓存器读取像素数据,且上述第一进程与第二进程采用时分复用的方式进行像素数据的读取,实现了上述外部缓存器的多路传输,可以节省硬件开销。
需要说明的是,存储上述当前宏块的像素数据的外部缓存器与存储上述参考帧的像素数据的外部缓存器可以是一个外部缓存器,也可以是不同的外部缓存器。
作为一种可选地实施方式,上述当前宏块的像素数据存储在两个乒乓RAM中。
作为一种可选地实施方式,确定所述当前宏块在所述视频帧的参考帧对应的搜索窗,包括:
根据与所述当前宏块相邻的宏块的运动矢量MV值,预测所述当前宏块的MV值,得到预测运动矢量值MVP;
对所述MVP取整,以取整后的MVP对应的像素位置为中心,对所述参考帧进行截取操作,得到预设大小的搜索窗。
上述搜索窗(search window)中心点的求解过程,依据联合模型(Joint Model,JM)中预测MVP的预测方法,预测上述当前宏块的MVP值。
搜索窗的中心点只需要用上述MVP的整数部分对应的像素位置,因此对预测出来的MVP进行取整操作。
需要说明的是,像素位置(0,0)在所述搜索窗之内。
本发明实施例提供的帧间预测方法,提供了一种确定搜索窗的具体实施方式,通过对MV值进行预测并取整,并以取整后的MVP对应的像素位置为中心确定搜索窗,为本发明实施例之后进行搜索窗的虚拟化,以减少帧间预测方法的系统带宽负担,提高视频编码的效率提供了必要的实施基础。
作为一种可选地实施方式,得到预设大小的搜索窗之后,还包括:
利用增强预测区域搜索EPZS算法,预测所述搜索窗内编码代价小于预设阈值的N个参考宏块相对于所述当前宏块的运动矢量,其中,所述N为正整数;
将预测的运动矢量对应的像素位置作为预测点的像素位置,所述预测点用于确定待搜索参考宏块。
需要说明的是,上述“编码代价小于预设阈值”及“N个”均是对上述“参考宏块”的筛选条件:预测上述搜索窗内的参考宏块的编码代价,并在编码代价小于预设阈值的参考宏块中筛选N个参考宏块,进行运动矢量的预测。
其中,上述预设阈值为预先设置的编码代价值,上述编码代价小于预设阈值是对筛选的参考宏块的质量要求;上述N为预先设置的数量值,上述N个是对筛选的参考宏块的数量要求。
需要说明的是,上述N和上述预设阈值没有相关关系,上述N和上述预设阈值的具体数值可以根据具体的实施情况进行具体的设置,例如,作为一种可选地实施方式,将上述N设置为7,本发明实施例对此不做任何限定。需要说明的是,上述预测点的像素位置包括像素位置(0,0)。
本发明实施例提供的帧间预测方法,利用EPZS算法,预测N个符合条件的、用于确定待搜索参考宏块的预测点,确定了目标参考宏块的搜索范围,提升了帧间预测的效率,并提高了帧间预测的准确性。
步骤S202,从外部缓存器中读取所述搜索窗内的像素数据,并存储至内部缓存模块;
上述外部缓存器可以为独立于本发明实施例的帧间预测设备的,任意形式的具有数据存储能力的存储器。
例如,上述外部缓存器可以为DDR SDRAM。
作为一种可选地实施方式,上述内部缓存模块为cache缓存结构的缓存模块。
作为一种可选地实施方式,从外部缓存器中读取所述搜索窗内的像素数据,并存储至内部缓存模块,包括:
按照存储单位tile大小,依次从外部缓存器中读取像素数据,并将依次读取的像素数据中每两个相邻存储单位tile,分别存储至第一内部缓存模块和第二内部缓存模块。
需要说明的是,上述tile的大小可以根据具体的实施场景进行具体的设置,例如,设置上述tile的大小为16x8,本发明对此不进行任何限定。
通过上述存储方式,将相邻存储单位tile的像素数据分开存储。
本发明实施例提供的帧间预测方法,提供了一种将外部缓存器的像素数据存储至内部缓存模块的实施方式,相比于访问延迟大且对带宽的要求高的外部缓存器,本发明实施例使用tile的方式对搜索窗进行存储,使搜索窗虚拟化,可以提升帧间预测的效率,减少帧间预测的系统带宽负担。需要说明的是,上述内部缓存模块包括上述第一内部缓存模块和上述第二内部缓存模块。
作为一种可选地实施方式,从内部缓存模块读取所述参考宏块的像素数据,包括:
根据存储单位tile的排序,从第一内部缓存模块和第二内部缓存模块读取相邻存储单位tile的像素数据。
需要说明的是,从第一内部缓存模块和第二内部缓存模块读取相邻存储单位tile的像素数据时,可以同时进行读取,也可以分别进行读取,本发明实施例对此不进行任何限定。
在帧间预测计算代价时,需要以宏块为单位进行计算,每个宏块的大小为16x16,通过上述读取像素数据的方式,可以一次读出16个像素点进行计算,加速整数搜索的过程。
本发明实施例提供的帧间预测方法,提供了一种从内部缓存模块读取像素数据的实施方式,与上述将外部缓存器的像素数据存储至内部缓存模块的实施方式相结合,提供了一种完整的存取像素数据的实施方式,以tile为单位读取虚拟搜索窗内的像素数据,可以提升帧间预测的效率,减少帧间预测的系统带宽负担。
作为一种可选地实施方式,根据所述当前宏块的参考宏块的像素数据在所述内部缓存模块中的存储地址,从内部缓存模块读取所述参考宏块的像素数据进行至少一次搜索之前,上述方法还包括:
根据所述预测点的MV值,确定所述当前宏块的参考宏块的像素数据在所述内部缓存模块中的存储地址。
本发明实施例提供的帧间预测方法,提供了一种确定当前宏块的参考宏块的像素数据在内部缓存模块中的存储地址的实施方式,为读取上述参考宏块的像素数据提供了必要的实施基础,提升了本发明实施例的帧间预测方法的可实施性。
本发明采用内部缓存模块来存放搜索窗,将搜索窗的概念虚拟化,配合JM模型中的EPZS算法,每次预测出的MVP相对上一个宏块对应的MVP有偏移,上述内部缓存模块存储上一搜索窗的像素数据,当前搜索窗相比于上述上一搜索窗,其中的大部分数据都是相同的,只需要读取偏移的部分,即不存在的像素数据,可以大大降低系统的带宽,并且提高编码器的效率。
步骤S203,根据所述当前宏块的参考宏块的像素数据在所述内部缓存模块中的存储地址,从内部缓存模块读取所述参考宏块的像素数据进行至少一次搜索,至搜索到编码代价符合第一预设要求的目标参考宏块;
上述第一预设要求可以为整数运动矢量对应的参考宏块的编码代价小于第一设定阈值或第二设定阈值,且小数运动矢量对应的参考宏块的编码代价最小。
需要说明的是,上述第一设定阈值和第二设定阈值的具体数值没有必然的关系,可以根据具体的实施情况对上述二者的数值分别进行具体设置,本发明实施例对此不进行任何限定。
基于上述第一预设要求,本发明实施例采用如下实施方式从内部缓存模块读取所述参考宏块的像素数据进行至少一次搜索:
搜索整数运动矢量对应的待搜索参考宏块,确定整数编码代价符合第二预设要求的第一目标参考宏块;
根据所述第一目标参考宏块,搜索小数运动矢量对应的待搜索参考宏块,确定小数编码代价符合第三预设要求的第二目标参考宏块;
确定所述第二目标参考宏块为搜索到的编码代价符合第一预设要求的目标参考宏块。
上述第二预设要求可以为第一待搜索参考宏块的第一整数编码代价小于上述第一设定阈值,或第二待搜索参考宏块的第二整数编码代价小于上述第二设定阈值;上述第三预设要求可以为编码代价最小。
本发明实施例提供的帧间预测方法,首先通过搜索整数编码代价筛选第一目标参考宏块,粗略的对目标参考宏块进行大致定位,然后通过搜索小数编码代价最终确定目标参考宏块,既减少了搜索的工作量、提升了搜索效率,又保证了帧间预测的准确性,提升了本发明实施例的帧间预测方法的可实施性。
本发明中的帧间预测主体部分采用了JM模型中的EPZS算法。
整数搜索ME(Motion Estimate)过程主要分成三个阶段:
(1)进行MVP对应的参考宏块的整数编码代价计算;
计算获得整数编码代价后,进行一次阈值判断,如果上述整数编码代价小于阈值,则提前退出,否则,进行第二步。
作为一种可选地实施方式,搜索整数运动矢量对应的待搜索参考宏块,确定整数编码代价符合第二预设要求的第一目标参考宏块,包括:
以取整后的MVP对应的像素位置为中心,确定对应的第一待搜索参考宏块,并计算所述第一待搜索参考宏块的第一整数编码代价;
若所述第一整数编码代价小于第一设定阈值,结束整数运动矢量对应的第一目标参考宏块搜索;
否则,重新确定待搜索参考宏块并进行下一次搜索。
需要说明的是,上述待搜索参考宏块的大小为预设的固定值,因此确定中心为上述取整后的MVP对应的像素位置,可以唯一的确定上述第一待搜索参考宏块。下述确定中心后确定参考宏块的原理同上述原理,之后不再赘述。
上述第一整数编码代价为绝对误差和(Sum of Absolute Difference,SAD)值。
需要说明的是,本发明实施例中的全部整数编码代价均为上述SAD值,任意计算SAD值的计算方法都可以应用到本发明实施例中,本发明对此不进行任何限定,之后不再赘述。
将计算的SAD值与第一设定阈值T0进行比较,如果SAD值大于T0,继续进行第二步,否则提前退出,得到最优整数运动矢量值。
本发明实施例提供的帧间预测方法,提供了一种通过整数搜索确定上述第一目标参考宏块的实施方式,通过取整后的MVP定位第一待搜索参考宏块,并通过计算编码代价判断上述第一待搜索参考宏块是否符合第一目标参考宏块的要求,如果符合则直接进入小数搜索,可以减少搜索的工作量及提升搜索效率。
(2)进行N个预测点对应的参考宏块的整数编码代价计算;
计算获得整数编码代价后,进行一次阈值判断,如果上述整数编码代价小于阈值,则提前退出,否则,进行第三步。
作为一种可选地实施方式,重新确定待搜索参考宏块并进行下一次搜索,包括:
确定存在N个预测点时,以各预测点为中心,确定对应的第二待搜索参考宏块,并计算所述第二待搜索参考宏块的第二整数编码代价;
若存在所述第二整数编码代价小于第二设定阈值的第二待搜索参考宏块,结束整数运动矢量对应的第一目标参考宏块搜索。
需要说明的是,上述N个预测点为上述通过EPZS算法预测的N个运动矢量对应的像素位置。
完成上述各预测点分别对应的第二待搜索参考宏块的SAD值计算,确定其中SAD值最小的预测点对应的第二待搜索参考宏块,将上述最小的SAD值与第二设定阈值T1进行比较,如果上述SAD值大于T1,则继续进行第三步,否则提前退出整数搜索过程。
需要说明的是,上述第一设定阈值T0和第二设定阈值T1可以为同一阈值,也可以为不同的阈值,上述第一设定阈值T0和第二设定阈值T1的具体数值,和上述二者之间的大小关系,可以根据具体的实施情况进行具体的设置,例如设置上述第二设定阈值T1小于上述第一设定阈值T0,本发明实施例对此不做限定。
本发明实施例提供的帧间预测方法,提供了一种重新确定待搜索参考宏块并进行下一次搜索的实施方式,在上述第一待搜索参考宏块不符合第一目标参考宏块的要求时,使用预先确定的N个预测点确定第二待搜索参考宏块,在确定的第二待搜索参考宏块中搜索符合要求的第一目标参考宏块,提供了一种确定第一目标参考宏块的补充方案,可以减少搜索的工作量及提升搜索效率。
(3)进行修正(refinement);
需要说明的时,ME的输出是整数编码代价最小的整像素点的坐标和整数编码代价值。
整像素搜索完成之后,得到整数编码代价最小的整像素点,并把以该点为中心的参考宏块的存储地址提供给小数搜索模块,进行小数搜索,得到最优的运动估计值。
作为一种可选地实施方式,重新确定待搜索参考宏块并进行下一次搜索时,上述方法还包括:
若进行下一次搜索时不存在N个预测点,或者,不存在所述第二整数编码代价小于第二设定阈值的第二待搜索参考宏块,则执行:
以之前搜索确定的待搜索参考宏块中编码代价最小的待搜索参考宏块为起点,采用预设搜索模板滑动的方式,在搜索模板内确定整数运动矢量对应的待搜索参考宏块进行下一次搜索。
上述refinement的预设搜索模板可以为任意的搜索模板,例如,全搜索算法、三步搜索算法、四步搜索算法、大菱形搜索算法、小菱形搜索算法等,可以根据具体的实施情况,综合考虑搜索效率和搜索效果进行模板的选择。
本发明实施例提供的帧间预测方法,提供了一种采用预设搜索模板重新确定待搜索参考宏块并进行下一次搜索的实施方式,在上述两种实施方式均无法确定第一目标参考宏块时,使用预设搜索模板滑动的方式进行搜索,确保整数搜索的继续进行,提升了本发明实施例的帧间预测方法的可实施性。
作为一种可选地实施方式,上述预设搜索模板为小菱形(small diamond)模板。
上述小菱形模板,即一开始为4个候选像素点,然后为3个候选像素点,每次在上次多个候选像素点中挑选出编码代价最小的整像素点。
如图3所示,本发明实施例提供一种的小菱形搜索的示意图。
其中,带有斜线图案的圆形代表上述之前搜索确定的待搜索参考宏块中编码代价最小的待搜索参考宏块的中心像素点;带有网格图案的圆形为第一批的候选像素点,所述第一批的候选像素点的像素位置距离上述中心像素点的距离分别为(-1,0)、(0,-1)、(1,0)和(0,1),单位是整像素。
后续的搜索只是将上述小菱形模板的中心点进行移动,例如,在上述图3中,假定在上述中心像素点上方的候选像素点对应的待搜索参考宏块的编码代价最小,将小菱形模板的中心点移动到上述候选像素点,则确定上述候选像素点的上、下、左的像素点为第二批的候选像素点,即,上述图中的无图案的圆形。
当发现对应的待搜索参考宏块的编码代价最小的像素点在上述小菱形模型的中心时,就完成了整像素的搜索过程。
例如,在上述图3中,确定第二批的候选像素点对应的待搜索参考宏块的编码代价,大于上述小菱形模板的中心点的候选像素点对应的待搜索参考宏块的编码代价,完成整像素的搜索过程。
当一轮搜索的最优点在搜索窗的边界,并且该点不是菱形的中心点时,可以沿边界方向搜索,边界外的点的SAD值被赋值成无穷大。
需要说明的是,整数搜索全部的计算SAD次数应小于23,否则需要强制退出,以退出前的最优点作为整数搜索的最优点。
如图4所述,本发明实施例提供一种整数搜索的流程图,包括:
步骤S401,以取整后的MVP对应的像素位置为中心,确定对应的第一待搜索参考宏块,并计算所述第一待搜索参考宏块的第一整数编码代价;
步骤S402,判断上述第一整数编码代价是否小于第一设定阈值,若是,执行步骤S407;否则,执行步骤S403;
步骤S403,判断是否存在N个预测点,若是,执行步骤S404;否则,执行步骤S406;
步骤S404,以各预测点为中心,确定对应的第二待搜索参考宏块,并计算所述第二待搜索参考宏块的第二整数编码代价;
步骤S405,判断上述第二整数编码代价是否小于第二设定阈值,若是,执行步骤S407;否则,执行步骤S406;
步骤S406,以之前搜索确定的待搜索参考宏块中编码代价最小的待搜索参考宏块为起点,采用预设搜索模板滑动的方式,在搜索模板内确定整数运动矢量对应的待搜索参考宏块进行下一次搜索;
步骤S407,结束整数运动矢量对应的目标参考宏块搜索。
作为一种可选地实施方式,根据所述第一目标参考宏块,搜索小数运动矢量对应的待搜索参考宏块,确定小数编码代价符合预设要求的第二目标参考宏块,包括:
确定距离所述第一目标参考宏块对应的中心像素位置设定距离的至少一个像素位置;其中,所述设定距离小于相邻像素之间距离;
以确定的像素位置为中心确定对应的第三待搜索参考宏块,并计算所述第三待参考宏块的第三小数编码代价;
将所述第三小数编码代价中最小的编码代价对应的待搜索参考宏块,确定为第二目标参考宏块。
本发明实施例提供的帧间预测方法,提供了一种小数搜索的实施方式,在整数搜索确定的第一目标参考宏块的基础上,进行更进一步的小数搜索,保证了帧间预测的准确性。
作为一种可选地实施方式,小数搜索以整数编码代价最小的待搜索参考宏块对应的中心像素位置为起点,进行1/2像素搜索和1/4像素搜索,确定目标参考宏块。即,将上述设定距离设置为1/2像素和1/4像素。
首先进行1/2像素搜索再进行1/4像素搜索可以在保证搜索准确性的前提下,减少搜索的工作量及提升搜索效率。需要说明的是,上述第三小数编码代价为绝对变换差和SATD值。
在完成上述小数搜索的过程后,把上述目标参考宏块对应的MV值和编码代价值传递给后一级的模式选择模块,通过上述模式选择模块比较上述编码代价值和帧内预测的编码代价值,得出编码代价值最小的预测模式。
实施例2
如图5所示,本发明实施例提供一种视频编码的硬件架构的示意图,包括前处理模块,模式预测模块,熵编码/去块滤波模块。
本发明实施例提供的视频编码,主要分为三级大流水完成,第一级的前处理模块用于对图像进行前处理;第二级的模式预测模块用于进行运动估计和模式选择;第三级的熵编码/去块滤波模块用于进行自适应上下文编码和去方块滤波。
其中,上述模式预测模块为编码模式后的第一个流水级,其中的运动估计分为帧内预测和帧间预测,帧内预测进行空间上的预测,帧间预测进行时间上的预测,最后通过模式选择,选择使用编码代价最小的帧内预测/帧间预测模式进行下一级的熵编码。
如图6所示,本发明实施例提供一种帧间预测设备的应用场景的示意图,包括:
帧间预测设备601,分别与外部缓存器、帧内预测设备、模式选择设备连接,用于存储对待编码的视频帧中的当前宏块进行帧间预测时,所述当前宏块在所述视频帧的参考帧对应的搜索窗内的像素数据;执行上述实施例1中任一所述的帧间预测方法的步骤;
外部缓存器602,分别与上述帧间预测设备、帧内预测设备连接,用于存储待编码的视频帧,及上述视频帧的参考帧;
帧内预测设备603,用于进行帧内预测,确定帧内预测的目标参考宏块;
模式选择设备604,分别与上述帧间预测设备、帧内预测设备连接,用于根据上述帧间预测设备和帧内预测设备分别确定的目标参考宏块,选择视频编码使用的预测模式。
其中,上述外部缓存器602包括:
视频帧缓存器602-1,用于存储待编码的视频帧;
参考帧缓存器602-2,用于存储上述视频帧的参考帧。
上述视频帧缓存器602-1,包括第一视频帧缓存器602-1a和第二视频帧缓存器602-1b。
上述图5中的前处理模块位于上述模式选择模块的前一级,作为一种可选的实施方式,上述前处理模块通过两块存放了原始YUV数据的乒乓RAM和模式选择模块进行交互。
上述帧内预测设备和帧间预测设备同时工作,都需要用到上述视频帧缓存器存储的原始亮度色彩YUV数据,采用上述帧内预测设备和上述帧间预测设备时分复用的方式从上述视频帧缓存器读取数据,可以节省面积。
如图7所示,本发明实施例提供一种帧间预测设备601的示意图,包括内部缓存模块601-1和电路控制模块601-2,其中:
所述内部缓存模块,用于存储对待编码的视频帧中的当前宏块进行帧间预测时,所述当前宏块在所述视频帧的参考帧对应的搜索窗内的像素数据;
所述电路控制模块,用于执行上述实施例1中任一所述的帧间预测方法的步骤。
需要说明的是,上述电路控制模块,应用于集成电路IC芯片,全部由硬件架构实现,通过微电子元器件的逻辑组合实现上述实施例1中任一所述的帧间预测方法。
作为一种可选的实施方式,上述电路控制模块601-2包括:
控制模块601-2a,用于对待编码的视频帧中的当前宏块进行帧间预测时,确定所述当前宏块在所述视频帧的参考帧对应的搜索窗;
数据读取模块601-2b,用于从外部缓存器中读取所述搜索窗内的像素数据,并存储至内部缓存模块;
在每次读取参考帧数据的时候,首先判断所需要的数据是否在cache中存在,如果存在则不需要向系统发出命令,每个宏块只需要发送少量命令就能得到整个搜索窗,节省整个系统的带宽,并且提高了整个搜索过程的效率。
搜索模块601-2c,用于根据所述当前宏块的参考宏块的像素数据在所述内部缓存模块中的存储地址,从内部缓存模块读取所述参考宏块的像素数据进行至少一次搜索,至搜索到编码代价符合第一预设要求的目标参考宏块。
需要说明的是,上述控制模块、数据读取模块、搜索模块全部通过由硬件架构实现,通过微电子元器件的逻辑组合分别实现上述功能。
上述搜索模块包括整数搜索模块601-2c-1和小数搜索模块601-2c-2。
上述整数搜索模块601-2c-1,用于搜索整数运动矢量对应的待搜索参考宏块,确定整数编码代价符合第二预设要求的第一目标参考宏块;
上述小数搜索模块601-2c-2,用于根据所述第一目标参考宏块,搜索小数运动矢量对应的待搜索参考宏块,确定小数编码代价符合第三预设要求的第二目标参考宏块;确定所述第二目标参考宏块为搜索到的编码代价符合第一预设要求的目标参考宏块。
需要说明的是,上述整数搜索模块确定整数编码代价值最小的整数运动矢量后,将上述编码代价值最小的整数运动矢量及其在上述内部缓存模块中的存储位置,还有预测的MVP传递给上述小数搜索模块。
上述小数搜索模块在进行小数搜索时,只需要根据上述信息去上述内部缓存模块中读取对应的像素数据进行SATD的计算,不需要再重新去判断像素数据的位置,可以节省整个编码流水线的计算时间。
作为一种可选的实施方式,上述内部缓存模块601-1包括:第一内部缓存模块601-1a和第二内部缓存模块601-1b。
如图8所示,为现有技术中的一种搜索窗的示意图。
其中,(S_win_ox,S_win_oy)为上述图8中搜索窗的中心点的坐标,Rb_0至Rb_7为搜索窗内像素数据的坐标。
上述搜索窗内为之前编码之后经过重构滤波的图像,上述搜索窗的数据存放在DDR之中。
本发明实施例采用2-way cache结构的内部缓存模块代替上述传统的搜索窗,不仅可以加速搜索窗的读取时间,也可以减少读取的数据量。当上述MVP偏移不多的情况下,只需要从外部缓存器中读取少量数据就可以得到整个搜索窗,可以节省带宽损耗,加速参考帧读取的速度。
如图9所示,本发明实施例提供一种内部缓存模块的示意图。
上述图9中的2-way cache结构,每个cache line的大小为16x8,共有两个奇数line(cache odd line)和两个偶数line(cache even line),大小为64X64。
在存放搜索窗的像素数据的时候,将上述像素数据按照64x64大小块的存储单位tile进行存放。
需要说明的是,上述内部缓存模块的大小根据上述搜索窗的大小确定。
例如,搜索窗的预设大小为86x54,使用上述2-way 64x64大小的cache能缓存上述搜索窗的全部数据。
上述内部缓存模块的大小可以根据具体的实施情况进行具体设置,本申请不作任何限定。
由于帧间预测以宏块为单位计算编码代价,每个宏块的大小为16x16,而设置的cache line大小为16x8,为了加速整数搜索的过程,将上述cache分成奇数line和偶数line分别存放在两块缓存RAM中,确保一次能读出16个像素点进行计算,可以节约时间,达到更高地效率。
可选地,所述电路控制模块确定所述当前宏块在所述视频帧的参考帧对应的搜索窗,包括:
根据与所述当前宏块相邻的宏块的运动矢量MV值,预测所述当前宏块的MV值,得到预测运动矢量值MVP;
对所述MVP取整,以取整后的MVP对应的像素位置为中心,对所述参考帧进行截取操作,得到预设大小的搜索窗。
可选地,得到预设大小的搜索窗之后,所述电路控制模块还用于:
利用增强预测区域搜索EPZS算法,预测所述搜索窗内编码代价小于预设阈值的N个参考宏块相对于所述当前宏块的运动矢量,其中,所述N为正整数;
将预测的运动矢量对应的像素位置作为预测点的像素位置,所述预测点用于确定待搜索参考宏块。
可选地,根据所述当前宏块的参考宏块的像素数据在所述内部缓存模块中的存储地址,从内部缓存模块读取所述参考宏块的像素数据进行至少一次搜索之前,所述电路控制模块还用于:
根据所述预测点的MV值,确定所述当前宏块的参考宏块的像素数据在所述内部缓存模块中的存储地址。
可选地,所述电路控制模块从外部缓存器中读取所述搜索窗内的像素数据,并存储至内部缓存模块,包括:
按照存储单位tile大小,依次从外部缓存器中读取像素数据,并将依次读取的像素数据中每两个相邻存储单位tile,分别存储至第一内部缓存模块和第二内部缓存模块;
所述电路控制模块从内部缓存模块读取所述参考宏块的像素数据,包括:
根据存储单位tile的排序,从第一内部缓存模块和第二内部缓存模块读取相邻存储单位tile的像素数据。
可选地,对待编码的视频帧中的当前宏块进行帧间预测之前,所述电路控制模块还用于:
通过第一进程从外部缓存器读取所述视频帧中的当前宏块的像素数据;其中,所述第一进程与第二进程采用时分复用方式读取像素数据,所述第二进程用于从外部缓存器读取像素数据以用于帧内预测。
可选地,所述像素数据为亮度色彩YUV数据。
可选地,所述电路控制模块从内部缓存模块读取所述参考宏块的像素数据进行至少一次搜索,包括:
搜索整数运动矢量对应的待搜索参考宏块,确定整数编码代价符合第二预设要求的第一目标参考宏块;
根据所述第一目标参考宏块,搜索小数运动矢量对应的待搜索参考宏块,确定小数编码代价符合第三预设要求的第二目标参考宏块;
确定所述第二目标参考宏块为搜索到的编码代价符合第一预设要求的目标参考宏块。
可选地,所述电路控制模块搜索整数运动矢量对应的待搜索参考宏块,确定整数编码代价符合第二预设要求的第一目标参考宏块,包括:
以取整后的MVP对应的像素位置为中心,确定对应的第一待搜索参考宏块,并计算所述第一待搜索参考宏块的第一整数编码代价;
若所述第一整数编码代价小于第一设定阈值,结束整数运动矢量对应的第一目标参考宏块搜索;
否则,重新确定待搜索参考宏块并进行下一次搜索。
可选地,所述电路控制模块重新确定待搜索参考宏块并进行下一次搜索,包括:
确定存在N个预测点时,以各预测点为中心,确定对应的第二待搜索参考宏块,并计算所述第二待搜索参考宏块的第二整数编码代价;
若存在所述第二整数编码代价小于第二设定阈值的第二待搜索参考宏块,结束整数运动矢量对应的第一目标参考宏块搜索。
可选地,重新确定待搜索参考宏块并进行下一次搜索时,所述电路控制模块还用于:
若进行下一次搜索时不存在N个预测点,或者,不存在所述第二整数编码代价小于第二设定阈值的第二待搜索参考宏块,则执行:
以之前搜索确定的待搜索参考宏块中编码代价最小的待搜索参考宏块为起点,采用预设搜索模板滑动的方式,在搜索模板内确定整数运动矢量对应的待搜索参考宏块进行下一次搜索。
可选地,所述电路控制模块根据所述第一目标参考宏块,搜索小数运动矢量对应的待搜索参考宏块,确定小数编码代价符合预设要求的第二目标参考宏块,包括:
确定距离所述第一目标参考宏块对应的中心像素位置设定距离的至少一个像素位置;其中,所述设定距离小于相邻像素之间距离;
以确定的像素位置为中心确定对应的第三待搜索参考宏块,并计算所述第三待参考宏块的第三小数编码代价;
将所述第三小数编码代价中最小的编码代价对应的待搜索参考宏块,确定为第二目标参考宏块。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
以上对本申请所提供的技术方案进行了详细介绍,本申请中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (13)
1.一种帧间预测方法,其特征在于,包括:
对待编码的视频帧中的当前宏块进行帧间预测时,确定所述当前宏块在所述视频帧的参考帧对应的搜索窗;
从外部缓存器中读取所述搜索窗内的像素数据,并存储至内部缓存模块;
根据所述当前宏块的参考宏块的像素数据在所述内部缓存模块中的存储地址,从内部缓存模块读取所述参考宏块的像素数据进行至少一次搜索,至搜索到编码代价符合第一预设要求的目标参考宏块。
2.根据权利要求1所述的方法,其特征在于,确定所述当前宏块在所述视频帧的参考帧对应的搜索窗,包括:
根据与所述当前宏块相邻的宏块的运动矢量MV值,预测所述当前宏块的MV值,得到预测运动矢量值MVP;
对所述MVP取整,以取整后的MVP对应的像素位置为中心,对所述参考帧进行截取操作,得到预设大小的搜索窗。
3.根据权利要求2所述的方法,其特征在于,得到预设大小的搜索窗之后,还包括:
利用增强预测区域搜索EPZS算法,预测所述搜索窗内编码代价小于预设阈值的N个参考宏块相对于所述当前宏块的运动矢量,其中,所述N为正整数;
将预测的运动矢量对应的像素位置作为预测点的像素位置,所述预测点用于确定待搜索参考宏块。
4.根据权利要求3所述的方法,其特征在于,根据所述当前宏块的参考宏块的像素数据在所述内部缓存模块中的存储地址,从内部缓存模块读取所述参考宏块的像素数据进行至少一次搜索之前,还包括:
根据所述预测点的MV值,确定所述当前宏块的参考宏块的像素数据在所述内部缓存模块中的存储地址。
5.根据权利要求1所述的方法,其特征在于,从外部缓存器中读取所述搜索窗内的像素数据,并存储至内部缓存模块,包括:
按照存储单位tile大小,依次从外部缓存器中读取像素数据,并将依次读取的像素数据中每两个相邻存储单位tile,分别存储至第一内部缓存模块和第二内部缓存模块;
从内部缓存模块读取所述参考宏块的像素数据,包括:
根据存储单位tile的排序,从第一内部缓存模块和第二内部缓存模块读取相邻存储单位tile的像素数据。
6.根据权利要求1所述的方法,其特征在于,对待编码的视频帧中的当前宏块进行帧间预测之前,还包括:
通过第一进程从外部缓存器读取所述视频帧中的当前宏块的像素数据;其中,所述第一进程与第二进程采用时分复用方式读取像素数据,所述第二进程用于从外部缓存器读取像素数据以用于帧内预测。
7.根据权利要求1所述的方法,其特征在于,所述像素数据为亮度色彩YUV数据。
8.根据权利要求2或3所述的方法,其特征在于,从内部缓存模块读取所述参考宏块的像素数据进行至少一次搜索,包括:
搜索整数运动矢量对应的待搜索参考宏块,确定整数编码代价符合第二预设要求的第一目标参考宏块;
根据所述第一目标参考宏块,搜索小数运动矢量对应的待搜索参考宏块,确定小数编码代价符合第三预设要求的第二目标参考宏块;
确定所述第二目标参考宏块为搜索到的编码代价符合第一预设要求的目标参考宏块。
9.根据权利要求8所述的方法,其特征在于,搜索整数运动矢量对应的待搜索参考宏块,确定整数编码代价符合第二预设要求的第一目标参考宏块,包括:
以取整后的MVP对应的像素位置为中心,确定对应的第一待搜索参考宏块,并计算所述第一待搜索参考宏块的第一整数编码代价;
若所述第一整数编码代价小于第一设定阈值,结束整数运动矢量对应的第一目标参考宏块搜索;
否则,重新确定待搜索参考宏块并进行下一次搜索。
10.根据权利要求9所述的方法,其特征在于,重新确定待搜索参考宏块并进行下一次搜索,包括:
确定存在N个预测点时,以各预测点为中心,确定对应的第二待搜索参考宏块,并计算所述第二待搜索参考宏块的第二整数编码代价;
若存在所述第二整数编码代价小于第二设定阈值的第二待搜索参考宏块,结束整数运动矢量对应的第一目标参考宏块搜索。
11.根据权利要求10所述的方法,其特征在于,重新确定待搜索参考宏块并进行下一次搜索时,还包括:
若进行下一次搜索时不存在N个预测点,或者,不存在所述第二整数编码代价小于第二设定阈值的第二待搜索参考宏块,则执行:
以之前搜索确定的待搜索参考宏块中编码代价最小的待搜索参考宏块为起点,采用预设搜索模板滑动的方式,在搜索模板内确定整数运动矢量对应的待搜索参考宏块进行下一次搜索。
12.根据权利要求8所述的方法,其特征在于,根据所述第一目标参考宏块,搜索小数运动矢量对应的待搜索参考宏块,确定小数编码代价符合第三预设要求的第二目标参考宏块,包括:
确定距离所述第一目标参考宏块对应的中心像素位置设定距离的至少一个像素位置;其中,所述设定距离小于相邻像素之间距离;
以确定的像素位置为中心确定对应的第三待搜索参考宏块,并计算所述第三待参考宏块的第三小数编码代价;
将所述第三小数编码代价中最小的编码代价对应的待搜索参考宏块,确定为第二目标参考宏块。
13.一种帧间预测设备,其特征在于,包括内部缓存模块和电路控制模块,其中:
所述内部缓存模块,用于存储对待编码的视频帧中的当前宏块进行帧间预测时,所述当前宏块在所述视频帧的参考帧对应的搜索窗内的像素数据;
所述电路控制模块,用于执行如权利要求1~12任一所述的帧间预测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110946538.1A CN115914645A (zh) | 2021-08-18 | 2021-08-18 | 一种帧间预测方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110946538.1A CN115914645A (zh) | 2021-08-18 | 2021-08-18 | 一种帧间预测方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115914645A true CN115914645A (zh) | 2023-04-04 |
Family
ID=86484362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110946538.1A Pending CN115914645A (zh) | 2021-08-18 | 2021-08-18 | 一种帧间预测方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115914645A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116074533A (zh) * | 2023-04-06 | 2023-05-05 | 湖南国科微电子股份有限公司 | 运动矢量预测方法、系统、电子设备及存储介质 |
-
2021
- 2021-08-18 CN CN202110946538.1A patent/CN115914645A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116074533A (zh) * | 2023-04-06 | 2023-05-05 | 湖南国科微电子股份有限公司 | 运动矢量预测方法、系统、电子设备及存储介质 |
CN116074533B (zh) * | 2023-04-06 | 2023-08-22 | 湖南国科微电子股份有限公司 | 运动矢量预测方法、系统、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI711300B (zh) | 照度補償方法及相應之視訊處理裝置 | |
CN111294598B (zh) | 一种视频编解码方法及设备 | |
US11082706B2 (en) | Method and system of video coding with a multi-pass prediction mode decision pipeline | |
US20170127059A1 (en) | Method and apparatus for setting reference picture index of temporal merging candidate | |
US9332264B2 (en) | Configurable performance motion estimation for video encoding | |
KR100939917B1 (ko) | 움직임 예측을 통한 부호화 시스템 및 움직임 예측을 통한부호화 방법 | |
US20060239349A1 (en) | Image coding unit and image coding method | |
CN104811696B (zh) | 一种视频数据的编码方法和装置 | |
US9699451B2 (en) | Motion estimation compatible with multiple standards | |
TW201511524A (zh) | 用於編碼單元的視訊編碼的局部多重假設預測的執行方法及裝置 | |
JP5267655B2 (ja) | 画像符号化装置、画像符号化制御方法および画像符号化プログラム | |
CN104378643A (zh) | 一种3d视频深度图像帧内预测模式选择方法及系统 | |
US20150208094A1 (en) | Apparatus and method for determining dct size based on transform depth | |
TWI738292B (zh) | 用於視頻編解碼系統的簡化仿射子塊處理的方法及裝置 | |
CN101304529A (zh) | 宏块模式的选择方法和装置 | |
KR101902700B1 (ko) | Hevc 부호화 장치 및 그것을 이용한 화면 내 예측 부호화 처리 방법 | |
CN102196253B (zh) | 一种帧类型自适应选择的视频编码方法及装置 | |
CN115914645A (zh) | 一种帧间预测方法和设备 | |
JP2008271127A (ja) | 符号化装置 | |
JPH09294262A (ja) | 画像符号化装置 | |
CN102595137B (zh) | 基于图像像素块行/列流水线的快速模式判决装置和方法 | |
JP2009260421A (ja) | 動画像処理システム、符号化装置、符号化方法、符号化プログラム、復号化装置、復号化方法および復号化プログラム | |
KR100723840B1 (ko) | 영상 움직임 추정 장치 | |
KR102050238B1 (ko) | Hevc 부호기를 위한 효율적인 화면내 예측 모드 결정 시스템 및 방법 | |
CN109905713B (zh) | 针对hevc的编码加速方法、相关装置和设备 |
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 |