专利名称:一种整像素精度运动估计方法及其系统的制作方法
技术领域:
本发明涉及数字图像处理及数字视频编解码技术领域,尤其涉及一种整像素精度运动估计方法及其系统。
背景技术:
随着信息产业的日新月异,人们对多媒体业务的需求也在急剧增长。在多媒体业务中,视频应用因其巨大的数据量,对网络带宽和存储空间提出了极高的要求,高效高质量的视频压缩算法和结构越来越受业界青睐。由于视频数据在空间和时间上都具有很强的相关性,视频编码算法通常采用帧内编码和帧间编码来消除空间和时间的相关性,从而有效地减小冗余数据量。在帧间编码中,运动估计(ME)发挥了至关重要的作用;良好的运动估计算法,能够以极低的数据量,带来非常良好的视频编码质量。从早期的MPEG标准开始,到目前主流的视频编解码标准,大都采用了基于图像块进行的混合编码方法。整像素运动估计(ME)是运动估计的主要部分,其主要作用是在參考图像里寻找与当前图像块最匹配的位置。目前,运动估计的大多数算法都是基于软件实现的,而且表现出了非常良好的性能,例如固定模式的快速捜索算法(三步、菱形等)、基于时空相关性和视觉特性的快速块匹配。不过这些算法在硬件实现吋,由于结构复杂度以及存储带宽等要求,大多很难满足芯片面积、功耗等设计约束。硬件实现中,全搜索是一种高质量、结构容易实现的常见方法;但是因其计算量大,在实时性编码方面,面临很大的挑战。尤其在高清和超高清等应用场合,在保证编码质量和压缩效率的前提下,既要达到处理速度的要求,也要尽量节省资源开销,从而降低功耗和成本。逐层渐进式搜索(也称分级搜索、金字塔捜索)是对全捜索进行简化后的ー种大范围快速捜索途径,可以对每层的搜索窗进行降采样后,再使用全捜索。各层之间可以并行搜索,或者串行搜索。如何能在保证搜索准确度的同时,尽量节省搜索时间,提高搜索效率,是分层多分辨率搜索的ー个难点。在运动估计系统中,内部缓存參考像素的存储器既要在搜索过程中不断输出数据用来计算运动估计代价,还要及时从外部存储器输入參考数据,以便准备好搜索窗数据给之后编码的宏块进行运动估计。此外,整像素精度运动估计和分数像素精度运动估计在參考数据方面,如何能有效地共用存储空间,同时保证数据访问效率,也是ー个问题。良好的数据访问仲裁策略在运动估计方法中,是相当重要的。目前常见的方法是采用ping-pong方式或者使用两份RAM解决数据访问的需要,但是这样RAM利用率只有50%左右,无疑在芯片设计等硬件实施中,带来了很多新的困扰。
发明内容
本发明解决的技术问题在于如何提高大范围搜索运动估计的执行效率,并尽可能缓解外部存储器的带宽访问压力。
为了解决以上问题,本发明公开了ー种整像素精度运动估计方法,基于逐层渐进式搜索,level-2、level-1、Ievel-O层的搜索步长依次为4、2、1,搜索精度逐层加強。为了满足搜索步长的需要,在level-2层、Ievel-I层对搜索窗里的像素点进行16:1、4:1 ニ维降采样,并在降采样后的窗里执行全捜索;ievei-o层执行未降采样的全捜索。每层采用双路运动估计并行搜索模式,按照宏块列进行逐列运动搜索(每路按照“弓”字型扫描半个宏块列)。逐层渐进式搜索主要过程如下步骤I :获取图像级控制信息,并初始化參考数据窗,将运动估计使用的參考像素,分离为16种类型点的子集(记为Ptl, P1, , P15,或按16进制数记为Ptl, P1, , Pf),并按照奇、偶宏块列分别存储,其中每ー种类型点都是通过对參考图像进行16:1 ニ维降采样取得的;步骤2 :获取宏块级控制信息、当前编码的原始宏块、预测的运动矢量PMV,然后根据參考索引标志位,分别在相应的參考图像内进行3层渐进式运动估计,并更新參考数据窗;3层渐进式运动估计步骤如下
步骤3 :level-2层以原点O作为搜索中心,按照搜索范围(SRx,SRy)划定未降采样的搜索窗W,然后将W平均划分为16个子区域m . . .,W15)并行执行16:1 ニ维降采样捜索在每个子区域Wi (i = 0,I,. . .,15)里面,分别抽取一种类型像素点Pパj = 0,I,...,15),形成16:1 ニ维降采样搜索子窗w' = 0,1,...,15) (16X16的宏块降采样为4x4的点阵),然后对降采样后的子窗V i,按双“弓”字型扫描逐个宏块列,进行双路并行全搜索,找到该子区域里的最优W。步骤4 :level-l层从level-2层找到的16个最优MV里面筛选出三个最优的,カロ上预测的运动矢量(PMV),作为4个搜索中心(CtlX1X^C3),按照搜索范围(SR' X,SR' y,)划定4个未降采样的捜索区域(Stl, S1, S2,S3),然后并行执行4:1 ニ维降采样搜索在每个区域SiQ = 0,1,2,3)里,分别抽取出间隔为2的4种类型的像素点Pj.、Pj.+2、Pj.+8、Pj.+1Q(j = 0,1,2,3),形成4:1 ニ维降采样搜索窗s' 1(1=0,1,2,3),然后对降采样后的搜索窗8' i;按双“弓”字型扫描逐个宏块列,进行双路并行全捜索,找出该区域的最优W。步骤5 :从Ievel-I层找到的4个最优MV里面,筛选出最优的I个,作为Ievel-O层的搜索中心,然后在其四周,利用所有类型像素点,划定未降采样的搜索窗,然后按双“弓”字型扫描逐个宏块列,执行步长为I的双路并行全捜索,找到整像素精度最优MV ;在Ievel-O层搜索的同时,围绕Ievel-O层搜索中心,预装搜索窗给分数像素精度运动估计FME。三层的搜索窗都是可配置的,在高分辨或者运动剧烈时,可以调大捜索窗。在低分辨率或者运动平缓时,可以缩小捜索窗,或者跳过level-2、level-1两层搜索,只执行Ievel-O层搜索。优选地,3层渐进式捜索吋,每层运动估计都按照双路“弓”字型轨迹,扫描逐个宏块列,在抽取出的类型点所形成的捜索窗里进行全捜索在level-2层,每个子区域按照16:1 ニ维降采样搜索,16x16点的宏块被抽取为4x4点阵,按照双路“弓”字型扫描逐个宏块列时,姆一路先横向向右搜2个MV,然后下移一次,再横向向左搜2个MV,然后下移一次,再横向向右搜2个MV,如此继续下去,直到扫描完一列;在Ievel-I层,每个区域按照4:1 ニ维降米样搜索,16x16点的宏块被抽取为8x8点阵,按照双路“弓”字型扫描逐个宏块列时,姆一路横向每次搜4个MV ;在Ievel-O层,整个区域按照未降采样执行全捜索,按照双路“弓”字型扫描逐个宏块列吋,每一路横向每次搜8个W。优选地,3层渐进式搜索时,每层捜索的运动估计代价都是基于16种类型像素点的4x4点运动估计代价计算的。level-2层姆个子区域按照16:1 ニ维降采样搜索时,16x16点的宏块降采样抽取后变为4x4点阵,每个子区域只抽取ー种类型像素点进行搜索,使用该类型像素点的4x4点SAD(以及由此得到的运动估计代价)进行比较和选择最优MV。在Ievel-I层每个区域按照4:1 ニ维降采样搜索吋,16x1 6点的宏块降采样抽取后变为8x8点阵;每个区域抽取4种类型点进行搜索,使用这4种类型点的4x4点SAD (以及由此得到的运动估计代价)拼凑求和得出8x8点SAD(以及由此得到的运动估计代价)进行比较和选择最优MV
权利要求
1.一种整像素精度运动估计方法,其特征在于,包括如下步骤 步骤I:获取图像级控制信息,并初始化參考数据窗,将运动估计使用的參考像素,分离为16种类型点的子集(Ptl, P1, ...,P15),并按照奇、偶宏块列分别存储,其中每ー种类型点都是通过对參考图像进行16:1 ニ维降采样取得的; 步骤2 :获取宏块级控制信息、当前编码的原始宏块、预测的运动矢量PMV,然后根据參考索引标志位,分别在相应的參考图像内进行3层渐进式运动估计,并更新參考数据窗;3层渐进式运动估计步骤如下 步骤3 :level-2层以原点O作为搜索中心,划定未降采样的搜索窗W,然后将W平均划分为16个子区域(Wtl, W1, ...,W15)并行搜索在每个子区域里面,分别抽取一种类型像素点,形成16:1 ニ维降采样搜索子窗,并按双“弓”字型扫描逐个宏块列,对降采样后的捜索子窗执行双路并行全捜索,找到该子区域里的最优运动矢量MV ; 步骤4 :从level-2层找到的16个最优MV里面筛选出三个最优的,加上预测得到的运动矢量PMV,作为Ievel-I层的4个搜索中心,Ievel-I层在每个搜索中心四周划定搜索区域并行搜索在每个区域里,分别抽取出4种类型的像素点,形成4:1 ニ维降采样搜索窗,然后按双“弓”字型扫描逐个宏块列,对降采样后的捜索窗执行双路并行全捜索,找出该区域的最优MV ; 步骤5 :从Ievel-I层找到的4个最优MV里面,筛选出最优的I个,作为Ievel-O层的捜索中心,然后在其四周,利用所有类型像素点,划定未降采样的搜索窗,然后按双“弓”字型扫描逐个宏块列,执行步长为I的双路并行全捜索,找到整像素精度最优MV ;在Ievel-O层搜索的同时,围绕Ievel-O层搜索中心,预装搜索窗给分数像素精度运动估计FME。
2.根据权利要求I所述的ー种整像素精度运动估计方法,其特征在干,每层运动估计都按照双路“弓”字型轨迹扫描逐个宏块列进行捜索在level-2层的16个子区域中,每个子区域里双路并行,每路按照“弓”字型扫描时,横向每次搜2个MV ;leVel-l层的4个区域里,每个区域里双路并行,每路按照“弓”字型扫描时,横向每次搜4个MV ;level-0层搜索窗里双路并行,每路按照“弓”字型扫描时,横向每次搜8个MV。
3.根据权利要求I所述的ー种整像素精度运动估计方法,其特征在于,每层搜索的运动估计代价都是基于16种类型像素点的4x4点运动估计绝对残差和SAD计算的在level-2层进行16:1 ニ维降采样搜索时,每个子区域分别使用一种类型点的4x4点SAD以及由此得到的运动估计代价进行MV比较和选择;在Ievel-I层进行4:1 ニ维降采样搜索吋,每个区域分别使用4种类型点的4x4点SAD拼凑求和得出8x8点SAD以及由此得到的运动估计代价进行MV比较和选择;leVel-0层进行未降采样全搜索时,先将每个类型点的4x4点SAD拆成4个2x2点SAD计算,按照在宏块中的位置将它们拼凑求和,计算出原始宏块按8x8分割时4个子块的8x8点SAD以及由此得到的运动估计代价,进而拼凑求和获得8x16,16x8,16x16块模式的SAD以及由此得到的运动估计代价,然后分别进行各种块分割模式的MV比较和选择。
4.一种整像素精度运动估计系统,其特征在于,包括如下部分 參考数据窗管理与地址映射模块(201),一方面接收从外部存储器输入的搜索窗数据,按照16种类型分别抽取出来,然后根据像素点类型及像素位于奇宏块列还是偶宏块列,换算写地址,存入相应的奇、偶RAM(202);另一方面,对运动捜索或分数精度运动估计预装窗的读请求做出响应,換算读地址,控制奇、偶RAM(202)输出正确的參考数据到4x8点參考像素寄存阵列(203)或分数精度预装窗模块(209); 16对參考像素奇、偶RAM(202),在參考数据窗管理与地址映射模块(201)的控制下,将运动估计的參考数据窗按16种类型点并划分为奇、偶宏块列进行存储和更新;每ー对奇偶RAM对应了一种类型像素点,并且只向该类型对应的4x8点參考像素寄存阵列(203)加载參考数据; 16个4x8点參考像素寄存阵列(203),每个对应ー种类型像素点,在运动搜索过程中,随着运动矢量的上下左右移动,可以相应地按行进行上移、下移、从ー对奇偶RAM加载新数据,或者按列进行循环左移、循环右移,从而參与计算SAD ;每ー个4x8点參考像素寄存阵列(203)只从该类型对应的奇、偶RAM(202)加载參考数据,加载时,按照阵列当前所处的移动状态,先要对奇、偶RAM(202)给出的数据进行重排; 16个双4x4点运动估计运算単元(204),分别对应16种类型的像素点,每ー个包括两个用来计算4x4点SAD以及由此得到的运动估计代价的处理单元PE,这两个PE共享ー个4x8点參考像素寄存阵列(203),对应同样类型的像素点;两个PE并行运算,可以同时计算出一种类型点的两个4x4点SAD以及由此得到的运动估计代价;由这些基本的双路运动估计单元,可以拼凑求和得出8x8、16x8、8xl6、16xl6块模式的SAD以及由此得到的运动估计代价; I个16x16点原始像素寄存阵列(205),被所有运动估计单元(204)共享;外部输入的原始宏块数据预先缓存在ー个FIFO里,然后在每个宏块的运动估计开始吋,从FIFO读取到16x16点原始像素寄存阵列(205);在运动搜索过程中,随着运动矢量的上下左右移动,可以相应地按行进行循环上移、循环下移,按列进行循环左移、循环右移,參与计算SAD ; level-2层搜索控制模块(206),产生从奇、偶RAM(202)读取搜索窗数据的地址、运动矢量MV、4x8点參考像素寄存阵列(203)和16x16点原始像素寄存阵列(205)的移动信号等信息,控制16个子区域进行16:1 ニ维降采样搜索; Ievel-I层搜索控制模块(207),产生从奇、偶RAM(202)读取搜索窗数据的地址、运动矢量MV、4x8点參考像素寄存阵列(203)和16x16点原始像素寄存阵列(205)的移动信号等信息,控制4个区域进行4:1 ニ维降采样搜索; Ievel-O层搜索控制模块(208),产生从奇、偶RAM(202)读取搜索窗数据的地址、运动矢量MV、4x8点參考像素寄存阵列(203)和16x16点原始像素寄存阵列(205)的移动信号等信息,控制其捜索区域内进行未降采样的全捜索; 分数像素精度运动估计预装窗模块(209),发起对奇、偶RAM(202)的访问请求,从16种类型像素点的奇、偶RAM(202)获取数据,存入内部包含的4个FIFO缓冲队列;根据轮询仲裁机制,依次选择ー个FIFO,输出数据给分数像素精度运动估计。
此外,还包括图像级和宏块级控制信息获取、多个运动捜索通路调度、运动搜索通路控制及分层复用MUX、三层运动估计代价比较和最优MV选择、三层运动矢量有效性检查等模块。
5.根据权利要求4所述的ー种整像素精度运动估计系统,其特征在于在參考数据的存储和组织方面,将參考数据窗进行扩展,预存參考数据给随后编码的宏块,并采用Z字型宏块编码模式,后编码的宏块,复用前一编码宏块的搜索窗数据,平均每编码3个宏块,只需要更新一列窗数据;场编码吋,将顶场和底场的參考数据窗上下拼接起来,然后按照帧编码的存储方法存储;多个參考索引的參考数据分别按照这种方式存储和管理,从而支持图像级帧场自适应PAFF编码。
6.根据权利要求4所述的ー种整像素精度运动估计系统,其特征在干,将參考数据扩展窗里的数据分为16种类型像素点分别存储时,对于每种类型的像素点,按照其在參考数据扩展窗里位于奇宏块列还是偶宏块列,分别存储在ー对奇、偶RAM里。
7.根据权利4所述的ー种整像素精度运动估计系统,其特征在干,3层渐进式捜索串行完成,分时复用全部运动估计运算単元、參考像素存储阵列、原始像素存储阵列16个双 4X4点运动估计单元,包含16个參考像素存储阵列,分别对应了 16种类型像素点,按16进制数标记为0-9A-F,在level-2层16个子区域中,每个子区域分别使用I个双4x4点运动估计运算单元进行双路“弓”字型捜索;在Ievel-I层4个区域中,每个区域使用4个双4x4点运动估计单元进行双路“弓”字型捜索,区域I使用0、2、8、A,区域2使用1、3、9、B,区域3使用4、6、C、E,区域4使用5、7、D、D ;level-0层使用全部的双4x4点运动估计单元进行双路“弓”字型搜索。
8.根据权利4或6所述的ー种整像素精度运动估计系统,其特征在干,3层渐进式捜索过程中,16种类型点的奇、偶RAM在每ー层进行分配,提高了运动估计内部參考数据RAM的带宽利用率,使运动估计可以高效并行地执行leVel-2层16个子区域一一对应了 16种类型像素点,每个子区域在搜索过程中,只从I对奇偶RAM里面读取參考像素,因此16个子区域可以并行捜索;Ievel-I层4个区域,每个区域分别包含4抽取4种类型像素点进行搜索和运算,并且只从4对奇偶RAM读取參考像素,因此4个区域可以并行捜索;Ievel-O层只有一个搜索区域,使用全部像素点进行搜索和运算,并且从全部奇偶RAM读取參考像素。
9.根据权利要求4所述的ー种整像素精度运动估计系统,其特征在于,在Ievel-O层搜索过程中,围绕Ievel-O层搜索中心,从整像素精度运动估计搜索窗里,划定比Ievel-O层搜索窗大的数据子窗,作为分数像素精度运动估计FME的搜索窗;利用Ievel-O层搜索访问奇、偶RAM的时间空隙,将子窗内每种类型像素点取出,重新拼凑后,按行分别存入4个FIFO里;然后通过轮询仲裁策略,从4个FIFO依次输出每行宏块数据给分数精度运动估计。
全文摘要
本发明公开了一种整像素精度运动估计方法及系统,通过将搜索窗数据分为16种类型像素点并按奇偶宏块列分别存入32片RAM里,并使用16个双4x4点运动代价运算单元分别计算各种类型像素点的运动估计代价,然后在分层搜索时,对这些运算单元进行分配和组合,按照双“弓”字型模式扫描逐个宏块列,实现步长分别为4、2、1的逐层渐进式搜索。本发明通过参考数据窗存储和管理机制,以及预存分数精度搜索窗等手段,降低了外部存储器访问带宽,提高了内部存储器带宽利用率,进而大大提高了运动搜索的并行度,并提高了大范围搜索运动估计的执行效率。同时减小了分层搜索硬件实现的复杂度,节省芯片面积。
文档编号H04N7/26GK102647594SQ20121011568
公开日2012年8月22日 申请日期2012年4月18日 优先权日2012年4月18日
发明者吉祥虎, 杨富强, 解晓东, 贾惠柱, 高文 申请人:北京大学