CN102647594B - 一种整像素精度运动估计方法及其系统 - Google Patents
一种整像素精度运动估计方法及其系统 Download PDFInfo
- Publication number
- CN102647594B CN102647594B CN201210115685.5A CN201210115685A CN102647594B CN 102647594 B CN102647594 B CN 102647594B CN 201210115685 A CN201210115685 A CN 201210115685A CN 102647594 B CN102647594 B CN 102647594B
- Authority
- CN
- China
- Prior art keywords
- search
- point
- estimation
- window
- level
- 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
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种整像素精度运动估计方法及系统,通过将搜索窗数据分为16种类型像素点并按奇偶宏块列分别存入32片RAM里,并使用16个双4x4点运动代价运算单元分别计算各种类型像素点的运动估计代价,然后在分层搜索时,对这些运算单元进行分配和组合,按照双“弓”字型模式扫描逐个宏块列,实现步长分别为4、2、1的逐层渐进式搜索。本发明通过参考数据窗存储和管理机制,以及预存分数精度搜索窗等手段,降低了外部存储器访问带宽,提高了内部存储器带宽利用率,进而大大提高了运动搜索的并行度,并提高了大范围搜索运动估计的执行效率。同时减小了分层搜索硬件实现的复杂度,节省芯片面积。
Description
技术领域
本发明涉及数字图像处理及数字视频编解码技术领域,尤其涉及一种整像素精度运动估计方法及其系统。
背景技术
随着信息产业的日新月异,人们对多媒体业务的需求也在急剧增长。在多媒体业务中,视频应用因其巨大的数据量,对网络带宽和存储空间提出了极高的要求,高效高质量的视频压缩算法和结构越来越受业界青睐。
由于视频数据在空间和时间上都具有很强的相关性,视频编码算法通常采用帧内编码和帧间编码来消除空间和时间的相关性,从而有效地减小冗余数据量。在帧间编码中,运动估计(ME)发挥了至关重要的作用;良好的运动估计算法,能够以极低的数据量,带来非常良好的视频编码质量。从早期的MPEG标准开始,到目前主流的视频编解码标准,大都采用了基于图像块进行的混合编码方法。整像素运动估计(IME)是运动估计的主要部分,其主要作用是在参考图像里寻找与当前图像块最匹配的位置。
目前,运动估计的大多数算法都是基于软件实现的,而且表现出了非常良好的性能,例如:固定模式的快速搜索算法(三步、菱形等)、基于时空相关性和视觉特性的快速块匹配。不过这些算法在硬件实现时,由于结构复杂度以及存储带宽等要求,大多很难满足芯片面积、功耗等设计约束。硬件实现中,全搜索是一种高质量、结构容易实现的常见方法;但是因其计算量大,在实时性编码方面,面临很大的挑战。尤其在高清和超高清等应用场合,在保证编码质量和压缩效率的前提下,既要达到处理速度的要求,也要尽量节省资源开销,从而降低功耗和成本。
逐层渐进式搜索(也称分级搜索、金字塔搜索)是对全搜索进行简化后的一种大范围快速搜索途径,可以对每层的搜索窗进行降采样后,再使用全搜索。各层之间可以并行搜索,或者串行搜索。如何能在保证搜索准确度的同时,尽量节省搜索时间,提高搜索效率,是分层多分辨率搜索的一个难点。
在运动估计系统中,内部缓存参考像素的存储器既要在搜索过程中不断输出数据用来计算运动估计代价,还要及时从外部存储器输入参考数据,以便准备好搜索窗数据给之后编码的宏块进行运动估计。此外,整像素精度运动估计和分数像素精度运动估计在参考数据方面,如何能有效地共用存储空间,同时保证数据访问效率,也是一个问题。良好的数据访问仲裁策略在运动估计方法中,是相当重要的。目前常见的方法是采用ping-pong方式或者使用两份RAM解决数据访问的需要,但是这样RAM利用率只有50%左右,无疑在芯片设计等硬件实施中,带来了很多新的困扰。
发明内容
本发明解决的技术问题在于如何提高大范围搜索运动估计的执行效率,并尽可能缓解外部存储器的带宽访问压力。
为了解决以上问题,本发明公开了一种整像素精度运动估计方法,基于逐层渐进式搜索,level-2、level-1、level-0层的搜索步长依次为4、2、1,搜索精度逐层加强。为了满足搜索步长的需要,在level-2层、level-1层对搜索窗里的像素点进行16:1、4:1二维降采样,并在降采样后的窗里执行全搜索;level-0层执行未降采样的全搜索。每层采用双路运动估计并行搜索模式,按照宏块列进行逐列运动搜索(每路按照“弓”字型扫描半个宏块列)。逐层渐进式搜索主要过程如下:
步骤1:获取图像级控制信息,并初始化参考数据窗,将运动估计使用的参考像素,分离为16种类型点的子集(记为P0,P1,...,P15,或按16进制数记为P0,P1,...,PF),并按照奇、偶宏块列分别存储,其中每一种类型点都是通过对参考图像进行16:1二维降采样取得的;
步骤2:获取宏块级控制信息、当前编码的原始宏块、预测的运动矢量PMV,然后根据参考索引标志位,分别在相应的参考图像内进行3层渐进式运动估计,并更新参考数据窗;3层渐进式运动估计步骤如下:
步骤3:level-2层以原点O作为搜索中心,按照搜索范围(SRx,SRy)划定未降采样的搜索窗W,然后将W平均划分为16个子区域(W0,W1,...,W15)并行执行16:1二维降采样搜索:在每个子区域Wi(i=0,1,...,15)里面,分别抽取一种类型像素点Pj(j=0,1,...,15),形成16:1二维降采样搜索子窗w′i(i=0,1,...,15)(16×16的宏块降采样为4x4的点阵),然后对降采样后的子窗w′i,按双“弓”字型扫描逐个宏块列,进行双路并行全搜索,找到该子区域里的最优MV。
步骤4:level-1层从level-2层找到的16个最优MV里面筛选出三个最优的,加上预测的运动矢量(PMV),作为4个搜索中心(C0、C1、C2、C3),按照搜索范围(SR′x,SR′y,)划定4个未降采样的搜索区域(S0,S1,S2,S3),然后并行执行4:1二维降采样搜索:在每个区域Si(i=0,1,2,3)里,分别抽取出间隔为2的4种类型的像素点Pj、Pj+2、Pj+8、Pj+10(j=0,1,2,3),形成4:1二维降采样搜索窗s′i(i=0,1,2,3),然后对降采样后的搜索窗s′i,按双“弓”字型扫描逐个宏块列,进行双路并行全搜索,找出该区域的最优MV。
步骤5:从level-1层找到的4个最优MV里面,筛选出最优的1个,作为level-0层的搜索中心,然后在其四周,利用所有类型像素点,划定未降采样的搜索窗,然后按双“弓”字型扫描逐个宏块列,执行步长为1的双路并行全搜索,找到整像素精度最优MV;在level-0层搜索的同时,围绕level-0层搜索中心,预装搜索窗给分数像素精度运动估计FME。
三层的搜索窗都是可配置的,在高分辨或者运动剧烈时,可以调大搜索窗。在低分辨率或者运动平缓时,可以缩小搜索窗,或者跳过level-2、level-1两层搜索,只执行level-0层搜索。
优选地,3层渐进式搜索时,每层运动估计都按照双路“弓”字型轨迹,扫描逐个宏块列,在抽取出的类型点所形成的搜索窗里进行全搜索:在level-2层,每个子区域按照16:1二维降采样搜索,16xl6点的宏块被抽取为4x4点阵,按照双路“弓”字型扫描逐个宏块列时,每一路先横向向右搜2个MV,然后下移一次,再横向向左搜2个MV,然后下移一次,再横向向右搜2个MV,如此继续下去,直到扫描完一列;在level-1层,每个区域按照4:1二维降采样搜索,16x16点的宏块被抽取为8x8点阵,按照双路“弓”字型扫描逐个宏块列时,每一路横向每次搜4个MV;在level-0层,整个区域按照未降采样执行全搜索,按照双路“弓”字型扫描逐个宏块列时,每一路横向每次搜8个MV。
优选地,3层渐进式搜索时,每层搜索的运动估计代价都是基于16种类型像素点的4x4点运动估计代价计算的。level-2层每个子区域按照16:1二维降采样搜索时,16x16点的宏块降采样抽取后变为4x4点阵,每个子区域只抽取一种类型像素点进行搜索,使用该类型像素点的4x4点SAD(以及由此得到的运动估计代价)进行比较和选择最优MV。在level-1层每个区域按照4:1二维降采样搜索时,16xl 6点的宏块降采样抽取后变为8x8点阵;每个区域抽取4种类型点进行搜索,使用这4种类型点的4x4点SAD(以及由此得到的运动估计代价)拼凑求和得出8x8点SAD(以及由此得到的运动估计代价)进行比较和选择最优MV:
在level-0层进行未降采样全搜索时,对所有类型像素点进行搜索,将每个类型点的4x4点阵划分为左上(TL)、右上(TR)、左下(BL)、右下(BR)4个2x2点阵,计算4个2x2点SAD;然后按照像素点在宏块中的位置将它们拼凑求和,计算出原始宏块按8x8分割时左上(TL)、右上(TR)、左下(BL)、右下(BR)4个子块的8x8点SAD(以及由此得到的运动估计代价):
通过对4个8x8子块的SAD(以及由此得到的运动估计代价)拼凑求和,得到8x16、16x8、16x16分割模式各个子块的SAD(以及由此得到的运动估计代价),进而分别进行各个分割模式子块的MV比较和选择。
本发明同时公开了一种整像素精度运动估计的系统,基于双4x4点运动估计运算单元处理阵列,多层搜索串行完成,分时复用所有运算单元、存储单元及存储控制单元。对每个参考帧分别使用一个搜索通路进行运动估计(场编码时,每两个参考场分时复用一个搜索通路),多个搜索通路在结构上相同,但互相独立。每个搜索通路包括(但不等于)如下部分:
参考数据窗管理与地址映射模块,一方面接收从外部存储器输入的搜索窗数据,按照16种类型分别抽取出来,然后根据像素点类型及像素位于奇宏块列还是偶宏块列,换算写地址,存入相应的奇、偶RAM。另一方面,对运动搜索(或分数精度运动估计装窗)的读请求做出响应,换算读地址,控制奇、偶RAM输出正确的参考数据到4x8点参考像素寄存阵列或分数精度预装窗模块。
16对参考像素奇、偶RAM,在参考数据窗管理与地址映射模块的控制下,将运动估计的参考数据窗按16种类型点并分奇、偶宏块列进行存储和更新。一个16x16点的宏块分类抽取后变为16个4x4点阵,因此每个RAM的位宽为存储4个像素所需的比特数。由于参考数据扩展窗在按帧编码时大小为(SRx+16×9)×(SRy+16×3),按场编码时顶底场合起来大小为(SRx+16×9)×(SRy/2+16×3)×2;为了图像级帧场自适应(PAFF),每个RAM的深度为 为上取整运算。每一对奇、偶RAM只存储一种类型像素点,并且只向该类型对应的4x8点参考像素寄存阵列加载参考数据。
16个4x8点参考像素寄存阵列,每个对应一种类型像素点。在运动搜索过程中,随着运动矢量的上下左右移动,可以相应地按行进行上移、下移、从一对奇偶RAM加载新数据,或者按列进行循环左移、循环右移,从而参与计算SAD。每一个4x8点参考像素寄存阵列只从该类型对应的一对奇、偶RAM加载参考数据。加载时,按照阵列当前所处的移动状态,先要对奇、偶RAM给出的数据进行重排。
16个双4x4点运动估计运算单元,分别对应16种类型的像素点。每个双4x4点运动估计单元包括两个用来计算4x4点SAD(以及由此得到的运动估计代价)的运算单元(简称PE),这两个PE共享一个4x8点参考像素寄存阵列(对应同样类型的像素点)。两个4x4点PE并行运算,可以同时计算出一种类型像素点的两个4x4点SAD(以及由此得到的运动估计代价)。三层渐进式搜索分时复用全部的运动估计运算单元。
1个16x16点原始像素寄存阵列,被所有的双4x4点运动估计单元共享。外部输入的原始宏块数据预先缓存在一个FIFO里,然后在每个宏块的运动估计开始时,从FIFO读取到16x16点原始像素寄存阵列。在运动搜索过程中,随着运动矢量的上下左右移动,可以相应地按行进行循环上移、循环下移,按列进行循环左移、循环右移,参与计算SAD。
level-2层搜索控制模块,产生从奇、偶RAM读取搜索窗数据的地址,运动矢量MV,以及4x8点参考像素寄存阵列和16x16点原始像素寄存阵列的移动信号等信息;控制16个子区域进行16:1二维降采样搜索。
level-1层搜索控制模块,产生从奇、偶RAM读取搜索窗数据的地址,运动矢量MV,以及4x8点参考像素寄存阵列和16x16点原始像素寄存阵列的移动信号等信息;控制4个区域进行4:1二维降采样搜索。
level-0层搜索控制模块,产生从奇、偶RAM读取搜索窗数据的地址,运动矢量MV,以及4x8点参考像素寄存阵列和16x16点原始像素寄存阵列的移动信号等信息;控制1个区域进行1:1未降采样的全搜索。
分数像素精度运动估计预装窗模块,按照宏块列,发起对奇、偶RAM的读请求(在每个宏块列里,逐行读取)。收到确认后,把获取到的参考数据,存入内部包含的4个FIFO缓冲队列。根据轮询仲裁机制,依次选择一个FIFO,输出数据给分数像素精度运动估计。
此外,还包括图像级和宏块级控制信息获取、多个运动搜索通路调度、运动搜索通路控制及分层复用MUX、三层运动估计代价比较和最优MV选择、三层运动矢量有效性检查等模块。
每个通路有各自的运算单元、存储单元、状态控制、参考数据窗管理和地址映射模块,可以在一个参考帧(或先后在一帧分割的两场)里进行运动估计;多个搜索通路结构相同、互相独立,从而可以支持图像级的帧场自适应(PAFF)编码。
优选地,为了减小外部存储器更新搜索窗所需的数据访问带宽,本发明在参考数据窗存储和组织方面,配合Z字型宏块编码模式,将实际存储的参考数据窗进行扩展;假设level-2层搜索范围为SRx×SRy,需要存储的参考数据窗(以下称为参考数据扩展窗)大小为(SRx+16×9)×(SRy+16×3);后编码的宏块,通过充分复用前一编码宏块的参考数据窗,平均每编码3个宏块,只需从外部存储器加载一个宏块列的窗数据,更新到参考数据扩展窗里。
优选地,为了提高全搜索的并行度,本发明在实际存储参考数据窗时,先将窗里的像素按照类似16:1二维降采样的方法,分离为16种类型点P0、P1、...、P15(或者按16进制数标记为P0、P1、...、P9、PA、PB、...、PF),然后对于每种类型的像素点,按照其在参考数据扩展窗里面位于奇宏块列还是偶宏块列,分别存储在一对奇、偶RAM里;从而将整个参考数据扩展窗实际存储在16对奇、偶RAM里。场编码时,将顶场和底场的参考数据扩展窗上下拼接起来,然后按照帧编码时的存储方法存储。
优选地,3层渐进式搜索分时复用全部运动估计运算单元、参考像素存储阵列、原始像素存储阵列:16个双4x4点运动估计运算单元(包含16个参考像素存储阵列)分别对应了16种类型像素点(按16进制数标记为0-9A-F),在level-2层16个子区域中,每个子区域分别使用1个双4x4点运动估计运算单元进行双路“弓”字型搜索;在level-1层4个区域中,每个区域使用4个双4x4点运动估计运算单元进行双路“弓”字型搜索,区域0使用0、2、8、A,区域1使用1、3、9、B,区域2使用4、6、C、E,区域3使用5、7、D、D;level-0层使用全部的双4x4点运动估计运算单元进行双路“弓”字型搜索。
优选地,3层渐进式搜索过程中,16种类型点的奇、偶RAM在每一层进行分配,大大提高了运动估计内部参考数据RAM的带宽利用率,使运动估计可以高效并行地执行:level-2层16个子区域一一对应了16种类型像素点,每个子区域在搜索过程中,只从1对奇偶RAM里面读取参考像素,因此16个子区域可以并行搜索;level-1层4个区域,每个区域分别包含4抽取4种类型像素点进行搜索和运算,并且只从4对奇偶RAM读取参考像素,因此4个区域可以并行搜索;level-0层只有一个搜索区域,使用全部像素点进行搜索和运算,并且从全部奇偶RAM读取参考像素。
优选地,本发明在level-0层搜索的同时,从整像素精度运动估计搜索窗里,围绕level-1层得到的最优MV(即level-0层的搜索中心),划定比level-0层搜索窗大的数据子窗作为分数像素精度运动估计(FME)的搜索窗;并利用level-0层运动搜索对参考像素奇、偶RAM读访问的时间空隙,将子窗内每种类型像素点不断地从奇、偶RAM里取出,重新拼凑后,按行分别放入4个FIFO队列里。然后采用轮询方式,从4个FIFO依次输出每行宏块数据给分数精度运动估计。
相对于现有技术而言,本发明具有如下优势:采用本发明的参考数据窗管理策略,能够节省外部存储器访问带宽(平均编码三个宏块,只需更新一个宏块列的数据),同时能够很好地支持图像级帧场自适应(PAFF)编码。通过将参考像素分类型点并按奇偶宏块列存入分别不同的RAM里,提高了内部存储器带宽利用率,既保证运动估计代价可以连续地计算,不会因为等待读取参考数据而中断;同时配合双路“弓”字型搜索,实现了多并行高效搜索。三层搜索串行完成,完全复用运动估计运算单元、参考像素寄存阵列、原始像素寄存阵列(以及相关的连线),资源利用率高,节省芯片面积。由于在逐层渐进式搜索方面表现出的高效率,通过适当地调整搜索窗的尺寸,本发明在高分辨率和运动剧烈等需要大的搜索范围场景中,更能表现出其在高效和高质量方面的优越性。
附图说明
当结合附图考虑时,通过参照下面的详细描述,能够更完整更好地理解本发明以及容易得知其中许多伴随的优点,但此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定,其中:
图1,本发明实施例整像素精度运动估计方法的流程图;
图2,本发明实施例整像素精度运动估计系统示意图;
图3,本发明宏块编码模式的示意图;
图4A,本发明帧编码时的搜索窗和参考数据扩展窗的示意图;
图4B,本发明场编码时的搜索窗和参考数据扩展窗示意图;
图5A,本发明的参考数据扩展窗按16种类型点并分奇、偶宏块列存储的示意图;
图5B,本发明的0号类型像素点存入奇偶RAM的示意图;
图6,本发明参考数据扩展窗更新机制和地址换算示意图;
图7,本发明4x8点参考像素寄存阵列的结构装置和工作原理示意图;
图8A,本发明的双4x4点运动估计运算单元的结构示意图;
图8B,本发明计算4x4点SAD运算单元(PE)的结构示意图;
图8C,本发明的双4x4点运动估计运算单元在level-2层的工作原理示意图;
图9,本发明16x16点原始像素寄存阵列示意图;
图10A,本发明level-2层16个子区域执行降采样搜索的示意图;
图10B,本发明level-2层降采样搜索窗映射到未降采样搜索窗的示意图;
图11,本发明level-2层每个子区域内双路“弓”字型扫描模式示意图;
图12,本发明level-2搜索时的状态转移图;
图13A,本发明在level-1层搜索时,4个区域对应的搜索窗示意图;
图13B,本发明level-1层搜索时,4个降采样搜索窗映射到未降采样参考窗的示意图;
图14,本发明level-1层每个区域内双路“弓”字型扫描模式示意图;
图15A,本发明level-0层搜索窗内像素点示意图;
图15B,level-0层计算SAD和运动估计代价示意图;
图16,本发明level-0层全搜索的双路“弓”字型扫描模式示意图;
图17,本发明为分数精度搜索预装窗的结构示意图。
具体实施方式
以下参照图1-17对本发明的实施例进行说明。
为使上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明实施例一种整像素精度运动估计方法对一帧(或场)图像的每个宏块在两个参考帧(或4个参考场)内进行运动估计时的流程图。具体的执行步骤如下:
S1、开始;
S2、步骤1:获取图像级的编码控制参数(帧场编码标志、参考索引标志位、图像宽高、每层搜索的搜索窗大小、是否执行level-2层标志位、是否执行level-1层标志位,等等),初始化整个运动估计系统。
S3、步骤2:分别初始化两个参考通路的参考数据扩展窗,按照宏块列逐次从外部存储器获取参考数据,并将这些数据按照16种类型点及其在参考数据窗里的宏块列位置,分别进行存储,直到准备好一帧(或一场)第一个宏块所需的参考像素搜索窗。在编码一个条带(slice)的第一个宏块时,同样需要先初始化参考数据窗。
S4、步骤3:获取宏块级编码命令(宏块位置信息、宏块编码开始信息、slice头标志位,等等),启动一个宏块的运动估计。
S5、S6、根据参考索引标志位,分别启动相应的搜索通路,执行相应的运动估计;对于4个参考索引,其中0和2分时复用一路搜索通路,1和3分时复用另一路搜索通路(帧编码时,只有0和1可能有效;场编码时,0、1、2、3都可能有效)。
S7、S9、步骤4:读取预测的运动矢量(PMV);
S8、S10、同时获取当前编码宏块的原始数据,存入16x16点原始像素寄存阵列(外部存储器通过FIFO预先准备好当前编码宏块的原始数据)。
S11、S18、步骤5:如果level-2层标志位无效(即跳过level-2搜索),直接进行下一步骤。
S12、S19、否则,开始level-2层搜索。level-2层以当前编码宏块所在位置(即原点)作为中心,圈定未降采样搜索窗(搜索窗大小由图像级信息配置);然后将整个搜索窗平均地划分为16个子区域并行搜索。在每个子区域里面,抽取一种类型的像素点,形成16:1二维降采样搜索子窗,然后按照双“弓”字型扫描轨迹移动MV,每个时刻(cycle)求出该类型点的两个4x4点SAD(以及由此算出的运动估计代价),并与之前记录的最小值作比较后,不断刷新最小值;从而找到该子区域的最优MV。从level-2找到的16个最优MV里面筛选出3个最优的(如果level-2层跳过,就选择原点),加上预测的运动矢量(PMV),作为level-1层的4个搜索中心。
S13、S20、步骤7:如果level-1层标志位无效(即跳过level-1搜索),直接进行下一步骤。
S14、S21、否则,开始level-1层搜索。level-1层在每个搜索中心四周,按照图像级配置信息,圈定相应大小的未降采样搜索窗,然后4个搜索窗并行搜索。在每个搜索窗里,抽取4种类型的像素点,形成4:1二维降采样搜索窗,然后按照双“弓”字型扫描轨迹移动MV,在每个时刻(cycle),对每种类型点都求出两个4x4点SAD(以及由此算出的运动估计代价),从而拼凑出两个8x8点SAD(以及由此算出的运动估计代价),并与之前记录的最小值作比较后,不断刷新最小值;从而找到该区域的最优MV。
S15、S22、步骤8:从level-1找到的4个最优MV里面,筛选出最优的1个,作为level-0层的搜索中心(如果level-1层被跳过,就选择原点),然后在其四周按照图像级配置信息,圈定相应大小的未降采样搜索窗,选取全部16种类型的像素点,按照双“弓”字型扫描轨迹移动MV,执行步长为1的全搜索。在每个时刻(cycle),对每种类型点都能求出其左上(TL)、右上(TR)、左下(BL)、右下(BR)的2x2点SAD(以及由此算出的运动估计代价)各两个,然后拼凑出一个宏块的左上(TL)、右上(TR)、左下(BL)、右下(BR)子块的8x8点SAD(以及由此算出的运动估计代价)各两个;进而拼凑出其他各种模式(16x8、8x16、16x16)的两个SAD(以及由此算出的运动估计代价),并与之前记录的最小值作比较后,不断刷新各种模式的最小值;找到各种模式的整像素精度最优MV。
S16、S23、在level-0层搜索的同时,围绕level-0层搜索中心,从参考数据扩展窗中取出参考数据,预存搜索子窗给分数像素精度运动估计,子窗大小由图像级信息配置。
S17、S24、步骤9:判断参考索引2和4是否有效(如果是帧编码,2和4均无效),分别启动两个搜索通路,执行相应索引的3层渐进式搜索运动估计。
S25、步骤10:输出每个参考索引最优的MV信息给分数像素精度运动估计。
S26、判断编码一帧(或场)图像是否编码结束;
S27、结束。
与之相对应地,本发明还公开了一种整像素精度运动估计系统,如图2所示,主要包括如下单元:
参考数据窗管理与地址映射模块201,
16对参考像素奇、偶RAM 202,
16个4x8点参考像素寄存阵列203,
16个双4x4点运动估计运算单元204,
1个16x16点原始像素寄存阵列205,
level-2层搜索控制和运动矢量选择模块206,
level-1层搜索控制和运动矢量选择模块207,
level-0层搜索控制和运动矢量选择模块208,
分数像素精度运动估计预装窗模块209;
基于双4x4点运动估计运算单元处理阵列,多层搜索串行完成,分时复用所有运算单元、存储单元及存储控制单元。对每个参考帧分别使用一个搜索通路进行运动估计(每两个参考场分时复用一个搜索通路),多个搜索通路在结构上相同,但互相独立。每个搜索通路包括(但不等于)如下部分:
参考数据窗管理与地址映射模块201,一方面接收从外部存储器输入的搜索窗数据,按照16种类型分别抽取出来,然后根据像素点类型及像素位置(奇宏块列还是偶宏块列),换算写地址,将参考像素存入相应的奇、偶RAM 202。另一方面,对运动搜索(或分数精度运动估计装窗)的读请求做出响应,换算读地址,控制奇、偶RAM202输出正确的参考数据到4x8点参考像素寄存阵列203或分数精度预装窗模块209。
16对参考像素奇、偶RAM 202,在参考数据窗管理与地址映射模块201的控制下,将参考数据扩展窗按16种类型点并分奇偶宏块列进行存储和更新。一个16x16点的宏块分类抽取后变为16个4x4点阵,因此每个RAM的位宽为存储4个像素所需的比特数。由于参考数据扩展窗在按帧编码时大小为(SRx+16×9)×(SRy+16×3),按场编码时顶底场合起来大小为(SRx+16×9)×(SRy/2+16×3)×2;为了图像级帧场自适应(PAFF),每个RAM的深度为 为上取整运算。每一对奇、偶RAM只存储一种类型像素点,并且只向该类型对应的4x8点参考像素寄存阵列203加载参考数据。
16个4x8点参考像素寄存阵列203,每个对应一种类型像素点。在运动搜索过程中,随着运动矢量的上下左右移动,可以相应地按行进行上移、下移、从一对奇、偶RAM 202加载新数据,或者按列进行循环左移、循环右移,从而参与计算SAD。每一个4x8点参考像素寄存阵列203只从该类型对应的一对奇、偶RAM 202加载参考数据。加载时,按照阵列当前所处的移动状态,先要对奇、偶RAM 202给出的数据进行重排。
16个双4x4点运动估计运算单元204,分别对应16种类型的像素点。每个双4x4点运动估计单元204包括两个用来计算4x4点SAD(以及由此得到的运动估计代价)的运算单元(简称PE),这两个PE共享一个4x8点参考像素寄存阵列203(对应同样类型的像素点)。两个4x4点PE并行运算,可以同时计算出一种类型像素点的两个4x4点SAD(以及由此得到的运动估计代价)。三层渐进式搜索分时复用全部的运动估计运算单元。
1个16x16点原始像素寄存阵列205,被所有的双4x4点运动估计单元204共享。外部输入的原始宏块数据预先缓存在一个FIFO里,然后在每个宏块的运动估计开始时,从FIFO读取到16x16点原始像素寄存阵列205。在运动搜索过程中,随着运动矢量的上下左右移动,可以相应地按行进行循环上移、循环下移,按列进行循环左移、循环右移,参与计算SAD。
level-2层搜索控制模块206,产生从奇、偶RAM202读取搜索窗数据的地址,运动矢量MV,以及4x8点参考像素寄存阵列203和16x16点原始像素寄存阵列205的移动信号等信息;控制16个子区域进行16:1二维降采样搜索。
level-1层搜索控制模块207,产生从奇、偶RAM202读取搜索窗数据的地址,运动矢量MV,以及4x8点参考像素寄存阵列203和16x16点原始像素寄存阵列205的移动信号等信息;控制4个区域进行4:1二维降采样搜索。
level-0层搜索控制模块208,产生从奇、偶RAM202读取搜索窗数据的地址,运动矢量MV,以及4x8点参考像素寄存阵列203和16x16点原始像素寄存阵列205的移动信号等信息;控制1个区域进行1:1未降采样的全搜索。
分数像素精度运动估计预装窗模块209,按照宏块列,发起对奇、偶RAM 202的读请求(在每个宏块列里,逐行读取)。收到确认后,把获取到的参考数据,存入内部包含的4个FIFO缓冲队列。根据轮询仲裁机制,依次选择一个FIFO,输出数据给分数像素精度运动估计。
此外,还包括图像级和宏块级控制信息获取、多个运动搜索通路调度、运动搜索通路控制及分层复用MUX、三层运动估计代价比较、三层运动矢量有效性检查等模块。
图3是本发明采用Z字型宏块编码方式的示意图,图中不同位置的序号即标示了先后编码的宏块,每编码完三行,再去编接下来的三行。假设帧编码的搜索范围(即level-2层搜索窗)大小为SRx×SRy,其中包含了(SRx/16)×(SRy/16)个宏块。编码宏块2需要的参考像素搜索窗可以充分利用宏块1的搜索窗数据,只需要更新一个宏块列的参考数据。编码宏块6需要的参考像素搜索窗也可以充分利用宏块1的搜索窗数据,只需要更新一个宏块行的参考数据。
图4A为本发明帧编码时的搜索窗和参考数据扩展窗的示意图。假设帧编码的范围(即level-2层搜索窗)大小为SRx×SRy(如图中阴影部分所示),实际存储的参考数据扩展窗大小为(SRx/16)×(SRy/16)。多存储9个宏块列的原因在于:其中最左那个宏块列是为了利用这一列数据计算搜索窗右边界点的SAD,另外8个宏块列是保证按照Z字型进行宏块编码时,可以预准备好搜索窗给接下来编码的宏块。类似地,多缓存三个宏块行的原因在于:其中最上面一行是为了利用这一行数据计算搜索窗下边界点的SAD;另外两行是保证在按照Z字型进行宏块编码时,可以预准备好搜索窗给接下来编码的宏块。
图4B为本发明场编码时的搜索窗和参考数据扩展窗示意图。场编码将顶底场的参考数据扩展窗上下拼接在一起,然后按照帧编码的方式存储。假设场编码的每一场的范围(即level-2层搜索窗)大小为SRx×(SRy/2)(如图中阴影部分所示),实际要存储的参考数据扩展窗大小为(SRx+16×9)×(SRy+16×6)。
图5A是本发明的参考数据扩展窗存储在奇、偶RAM示意图,本发明将搜索窗中的所有像素点区分为16种类型(按16进制标记为0-9A-F)来进行存储。这样对于一个16x16的宏块,其中的每种类型的点(例如0号点),都有4x4个,而且都是上下、左右距离为4的,我们可以把这些抽取出来的4x4点阵,视为对原先16x16的宏块按照16:1二维降采样之后的结果。另一方面,计算原来16x16宏块的SAD,也就简化为求这些抽取出来的4x4点阵的SAD(对于当前编码的原始宏块,也会按照类似的分类方法,抽取出所有类型的像素点),即
然后再将参考数据搜索扩展窗按照宏块列划分,每种类型像素点按照其位于奇、偶宏块列分别存入一对奇、偶RAM里面,RAM里面每行存4个像素;具体来讲,如图5B所示,对以0号点为例,先将第0个宏块列(偶宏块列)的所有0号点逐行存入然后将第1个宏块列(奇宏块列)的所有0号点逐行存入再将第2个宏块列(偶宏块列)的所有0号点逐行存入再将第3个宏块列(奇宏块列)的所有0号点逐行存入再将第4个宏块列(偶宏块列)的所有0号点逐行存入依次类推。一个16x16点的宏块分类抽取后含有4x4个0号点,每个RAM需要的位宽为存储4个像素所需的比特数;将4x4点阵存入RAM时,占用4行空间;帧编码时,0号点的每个宏块列占用(SRy+16×3)/4行RAM;场编码时,顶底场参考数据扩展窗合并后,每个宏块列占用(SRy+16×6)/4行RAM。由于参考数据扩展窗在按帧编码时大小为(SRx+16×9)×(SRy+16×3),按场编码时顶底场合起来大小为(SRx+16×9)×(SRy/2+16×3)×2;为了图像级帧场自适应(PAFF),考虑开销最多的情况,每个RAM的深度为同样地,将其他类型的点分别存入
图6是本发明参考数据扩展窗(存储在16对奇、偶RAM里)更新机制示意图。由于采用图3所示的Z字型宏块编码方式,并按照图5所示的划分奇偶宏块列进行存储。根据当前编码宏块的宏块号(mbx、mby),可以计算出其搜索窗数据在RAM中存储的起始地址(base_addr)。然后在每一层运动搜索时,根据搜索起点(SearchCenterX、SearchCenterY)及MV位置(MVx、MVy),即可得出计算该MV的SAD时,所需参考数据在各个类型点的奇、偶RAM中的读取地址(事实上,由于MV搜索轨迹是规则的,只需求出起始MV对应的取数地址,之后根据MV的移动情况,对取数地址进行修正即可):
even_addr=base_addr+max_row_off*(col_offset+1)/2+row_offset
odd_addr=base_addr+max_row_off*col_offset+row_offset
上述公式中,表示向下取整。
图7是本发明4x8点参考像素寄存阵列的结构装置和工作原理示意图。计算4x4的SAD时,将1种类型像素点的参考数据存放在4x8点的参考像素寄存阵列中:随着MV的移动,这些寄存器中的数据可以相应地按行进行上移、下移;或者按列进行循环左移、循环右移,从而满足计算SAD的需要。上移、下移过程中,会丢弃一行数据,同时从一对奇偶RAM里面,加载8个新像素进来。循环左移指的是,最左一列数据移到最右一列,其余列数据移到其左侧那一列。
图8A为本发明的双4x4点运动估计运算单元的结构示意图。两个4x4点运动代价计算单元(PE)共享一个4x8点参考像素寄存阵列,每个PE计算一个4x4点SAD以及由此得到的运动估计代价。这样做的好处在于,两个PE并行计算时,不需要重复读写参考数据奇偶RAM,节省了RAM带宽。
图8B为本发明计算4x4点SAD的运算单元(PE)的结构示意图。一个16x16的宏块按照16种类型像素点分别抽取后,得到每种类型的4x4点阵。求每种类型像素点4x4点SAD时,先将4x4点阵按位置划分为左上(TL)、右上(TR)、左下(BL)、右下(BR)4个2x2点阵(图中标示出了0号点),然后计算4个2x2点SAD,再求和计算出4x4点SAD。
图8C为本发明的双4x4点运动估计运算单元在level-2层的工作原理示意图。在运动搜索过程中,采用双4x4点PE并行结构。T1时刻,PE搜索MV的终点是以此为左上角取出4x4的参考数据点阵(图中虚线框所示),计算SAD;对应地,PE’搜索MV的终点是T2时刻,双路PE都向右移一个像素点,PE搜索MV的终点是PE’搜索MV的终点是T3时刻,双路PE都向下移一个像素点,PE搜索MV的终点是PE’搜索MV的终点是T4时刻,双路PE都向下移一个像素点,PE搜索MV的终点是PE’搜索MV的终点是
图9为本发明16x16点原始像素寄存阵列。计算SAD所需的原始宏块像素,存放在16x16点的原始像素寄存器组里。在开始运动估计前,外部存储器预先将当前编码宏块的原始数据存放到FIFO里,然后在开始当前宏块运动估计初始阶段,将这些原始数据从FIFO加载到16x16点寄存器组里。随着MV的移动,这些寄存器中的数据可以相应地按行进行循环上移、循环下移;或者按列进行循环左移、循环右移,从而满足计算SAD的需要。与4x8点参考像素寄存阵列不同的是,16x16点原始像素寄存阵列执行循环上移、循环下移,不会丢弃数据,也不会加载新数据。
图10A为本发明level-2层16个子区域的降采样搜索子窗示意图。level-2层先把搜索窗划分为16个子区域,帧编码时每个子窗大小为(SRx/4)×(SRy/4),场编码时每个子窗大小为(SRx/4)×(SRy/8)。然后在每个子区域里只抽取出一种类型像素点进行运动搜索,既可以充分地、并行不悖地利用奇偶RAM的带宽(每个子区域只利用一种类型点的奇偶RAM);又可以提高搜索速度。从整个搜索窗来看,这种抽取后的像素点是不均匀分布的;但是仅仅从单个子区域来看,这种抽取是均匀的16:1二维降采样。因为16种类型点分别存储在不同的奇、偶RAM里面,因此16个子区域和16种像素点类型的对应关系并不是唯一的,图10A只给出其中一种示例。
图10B是本发明level-2层只利用0号点进行运动估计时,子区域所使用的搜索窗映射到原始搜索窗(未降采样)的局部示意图。在子区域里面,16:1降采样搜索相当于是在未降采样的搜索窗里按照步长为4在进行上下和左右的搜索。由于上下、左右的搜索步长均为4,在该子区域搜索过程中,未降采样的窗内其他类型点都被跳过了,只搜0号点,也只利用0号点计算SAD。
图11所示是本发明level-2层每个子区域内执行运动估计的扫描模式,即MV的移动过程。图中PE和PE’是并行搜索的,每个按照“弓”字型扫码半个宏块列;由于按16:1降采样之后的宏块列每行只有4个像素,因此每一路PE横向每次搜2个MV。搜完一个宏块列,然后去搜下一个宏块列。由于宏块列被区分为奇、偶,因此在搜索过程中,伴随有奇、偶RAM地址的切换,在上面图6中已经说明了。由于level-2层划分的16个子区域并行,每个子区域里面有两个PE并行搜索,因此在level-2层,每个cycle可以搜32个MV。如果考虑到在两个参考帧(或场)里同时进行运动估计,则整个系统每个cycle可以搜64个MV。
图12所示为本发明level-2搜索时的状态转移图。每搜完一个宏块列,需要将新宏块列对应的初始参考数据从奇、偶RAM加载到4x8参考像素寄存阵列里。全部宏块列搜索完毕后,每个子区域会给出该区域内最优的1个MV。然后从16个子区域给出的MV中,选择出最优的3个,再加上预测的运动矢量(PMV),作为level-1层运动搜索的4个中心点。
图13A是本发明在level-1层搜索时,4个区域对应的4:1二维降采样搜索窗示意图。每个区域分别抽取间隔为2的4种类型像素点进行搜索及计算SAD:区域0利用0、2、8、A,区域1利用1、3、9、B,区域2利用4、6、C、E,区域3利用5、7、D、F。由于16x16点的宏块按照4:1二维降采样后变为8x8点阵,因此每个区域进行运动估计时,使用8x8的SAD,并且用所抽取的4种类型点的4x4SAD求和得到。即: 这种拼凑组合保证了在level-1层搜索时,4个搜索窗可以并行运算;因为不同类型点存放在不同的奇偶RAM,每个区域利用的RAM、参考像素寄存阵列、原始像素寄存阵列、运动估计运算单元没有与其他区域冲突。图13A中所示4个区域搜索中心点和类型点的组合并不是唯一的。
图13B为本发明level-1层搜索时,4个搜索窗映射到原始参考窗(未降采样)的示意图。4:1二维降采样搜索,相当于在未降采样的窗里进行步长为2的搜索;由于上下、左右的搜索步长都为2,搜索过程中,原始窗内的其他类型点都被跳过了。
图14所示为本发明level-1层每个区域内执行运动估计的扫描模式示意图,即MV的移动过程。图中PE和PE’是并行搜索的,每一路按照“弓”字型搜索半个宏块列;由于按4:1二维降采样之后的宏块列每行只有8个像素,因此每一路PE横向每次搜4个MV。搜完一个宏块列,然后去搜下一个宏块列。
图15A所示为本发明level-0层搜索窗示意图,它是原始参考数据窗的一部分,没有经过降采样抽取;level-0执行全搜索,上下、左右搜索步长均为1。
图15B为level-0层计算SAD示意图。在level-0层进行未降采样全搜索时,对所有类型像素点进行搜索,将每个类型点的4x4点阵划分为左上(TL)、右上(TR)、左下(BL)、右下(BR)4个2x2点阵(图中标示出了0号点),然后计算4个2x2点SAD,然后按照像素点在宏块中的位置将它们拼凑求和,计算出一个宏块的左上(TL)、右上(TR)、左下(BL)、右下(BR)4个8x8点子块的8x8点SAD(以及由此得到的运动估计代价):
进而去求8x16、16x8、16x16块模式的SAD(以及由此得到的运动估计代价)。
图16所示为本发明level-0层整个搜索窗内执行运动估计的扫描模式示意图,即MV的移动过程。图中PE和PE’是并行搜索的,每一路按照“弓”字型横向每次搜8个MV。搜完一个宏块列,然后去搜下一个宏块列。需要说明的是,PE和PE’并不一定要向右搜8个点再向下搜,比如在搜索窗不是8的整倍数时对最后一个宏块列的处理。
图17所示是本发明分数精度搜索预装窗示意图。在level-0层搜索的同时,预存搜索窗数据给分数精度运动估计。由于采用图16所示的搜索模式,在MV向右移动时,运动搜索单元不需要取参考数据。另外,在MV向下移动时,每次只有4种类型点(位于同一行)的RAM需要加载参考数据。因此在这些访问空隙,可以读取参考数据,预存参考数据给分数精度运动估计。
如上所述,对本发明的实施例进行了详细地说明,但是只要实质上没有脱离本发明的发明点及效果可以有很多的变形,这对本领域的技术人员来说是显而易见的。因此,这样的变形例也全部包含在本发明的保护范围之内。
Claims (9)
1.一种整像素精度运动估计方法,其特征在于,包括如下步骤:
步骤1:获取图像级控制信息,并初始化参考数据窗,将运动估计使用的参考像素,分离为16种类型点的子集(P0,P1,…,P15),并按照奇、偶宏块列分别存储,其中每一种类型点都是通过对参考图像进行16:1二维降采样取得的;
步骤2:获取宏块级控制信息、当前编码的原始宏块、预测的运动矢量PMV,然后根据参考索引标志位,分别在相应的参考图像内进行3层渐进式运动估计,并更新参考数据窗;3层渐进式运动估计步骤如下:
步骤3:level-2层以原点O作为搜索中心,划定未降采样的搜索窗W,然后将W平均划分为16个子区域(W0,W1,…,W15)并行搜索:在每个子区域里面,分别抽取一种类型像素点,形成16:1二维降采样搜索子窗,对降采样后的搜索子窗执行双路并行全搜索,每个时刻,求出该类型点的两个4x4点SAD以及由此算出的运动估计代价,并与之前记录的最小值作比较后,不断刷新最小值,从而找到该子区域里的最优运动矢量MV;
步骤4:从level-2层找到的16个最优MV里面筛选出三个最优的,加上预测得到的运动矢量PMV,作为level-1层的4个搜索中心,level-1层在每个搜索中心四周划定搜索区域并行搜索:在每个区域里,分别抽取出4种类型的像素点,形成4:1二维降采样搜索窗,然后按双“弓”字型扫描逐个宏块列,对降采样后的搜索窗执行双路并行全搜索,在每个时刻,对每种类型点都求出两个4x4点SAD以及由此算出的运动估计代价,从而拼凑出两个8x8点SAD以及由此算出的运动估计代价,并与之前记录的最小值作比较后,不断刷新最小值,从而找到该区域的最优MV;
步骤5:从level-1层找到的4个最优MV里面,筛选出最优的1个,作为level-0层的搜索中心,然后在其四周,利用所有类型像素点,划定未降采样的搜索窗,然后按双“弓”字型扫描逐个宏块列,执行步长为1的双路并行全搜索,在每个时刻,对每种类型点的4x4点SAD拆成4个2x2点SAD计算,按照在宏块中的位置将他们拼凑求和,计算出原始宏块按8x8分割时4个子块的8x8点SAD,进而拼凑求和获得8x16、16x8、16x16块模式的SAD以及由此得到的运动估计代价进行比较而选择的整像素精度的最优MV;在level-0层搜索的同时,围绕level-0层搜索中心,预装搜索窗给分数像素精度运动估计FME。
2.根据权利要求1所述的一种整像素精度运动估计方法,其特征在于,每层运动估计都按照双路“弓”字型轨迹扫描逐个宏块列进行搜索:在level-2层的16个子区域中,每个子区域里双路并行,每路按照“弓”字型扫描时,横向每次搜2个MV;level-1层的4个区域里,每个区域里双路并行,每路按照“弓”字型扫描时,横向每次搜4个MV;level-0层搜索窗里双路并行,每路按照“弓”字型扫描时,横向每次搜8个MV。
3.根据权利要求1所述的一种整像素精度运动估计方法,其特征在于,每层搜索的运动估计代价都是基于16种类型像素点的4x4点运动估计绝对残差和SAD计算的:在level-2层进行16:1二维降采样搜索时,每个子区域分别使用一种类型点的4x4点SAD以及由此得到的运动估计代价进行MV比较和选择;在level-1层进行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、8x16、16x16块模式的SAD以及由此得到的运动估计代价;
1个16x16点原始像素寄存阵列(205),被所有运动估计单元(204)共享;外部输入的原始宏块数据预先缓存在一个FIFO里,然后在每个宏块的运动估计开始时,从FIFO读取到16x16点原始像素寄存阵列(205);在运动搜索过程中,随着运动矢量的上下左右移动,可以相应地按行进行循环上移、循环下移,按列进行循环左移、循环右移,参与计算SAD;
level-2层搜索控制模块(206),产生包括从奇、偶RAM(202)读取搜索窗数据的地址、运动矢量MV、4x8点参考像素寄存阵列(203)和16x16点原始像素寄存阵列(205)的移动信号的信息,控制16个子区域进行16:1二维降采样搜索;
level-1层搜索控制模块(207),产生包括从奇、偶RAM(202)读取搜索窗数据的地址、运动矢量MV、4x8点参考像素寄存阵列(203)和16x16点原始像素寄存阵列(205)的移动信号的信息,控制4个区域进行4:1二维降采样搜索;
level-0层搜索控制模块(208),产生包括从奇、偶RAM(202)读取搜索窗数据的地址、运动矢量MV、4x8点参考像素寄存阵列(203)和16x16点原始像素寄存阵列(205)的移动信号的信息,控制其搜索区域内进行未降采样的全搜索;
分数像素精度运动估计预装窗模块(209),发起对奇、偶RAM(202)的访问请求,从16种类型像素点的奇、偶RAM(202)获取数据,存入内部包含的4个FIFO缓冲队列;根据轮询仲裁机制,依次选择一个FIFO,输出数据给分数像素精度运动估计;三层运动估计代价比较和最优MV选择模块对每层搜索时对运动估计运算单元(204)输出的每个搜索点的代价值进行比较,不断刷新最小值,在每层搜索结束后选择具有最小代价搜索点的MV作为最优MV输出;此外,还包括图像级和宏块级控制信息获取模块、多个运动搜索通路调度模块、运动搜索通路控制及分层复用MUX模块和三层运动矢量有效性检查模块。
5.根据权利要求4所述的一种整像素精度运动估计系统,其特征在于:在参考数据的存储和组织方面,将参考数据窗进行扩展,预存参考数据给随后编码的宏块,并采用Z字型宏块编码模式,后编码的宏块,复用前一编码宏块的搜索窗数据,平均每编码3个宏块,只需要更新一列窗数据;场编码时,将顶场和底场的参考数据窗上下拼接起来,然后按照帧编码的存储方法存储;多个参考索引的参考数据分别按照这种方式存储和管理,从而支持图像级帧场自适应PAFF编码。
6.根据权利要求4所述的一种整像素精度运动估计系统,其特征在于,将参考数据扩展窗里的数据分为16种类型像素点分别存储时,对于每种类型的像素点,按照其在参考数据扩展窗里位于奇宏块列还是偶宏块列,分别存储在一对奇、偶RAM里。
7.根据权利4所述的一种整像素精度运动估计系统,其特征在于,3层渐进式搜索串行完成,分时复用全部运动估计运算单元、参考像素存储阵列、原始像素存储阵列:16个双4×4点运动估计单元,包含16个参考像素存储阵列,分别对应了16种类型像素点,按16进制数标记为0-9-A-F,在level-2层16个子区域中,每个子区域分别使用1个双4x4点运动估计运算单元进行双路“弓”字型搜索;在level-1层4个区域中,每个区域使用4个双4x4点运动估计单元进行双路“弓”字型搜索,区域1使用0、2、8、A,区域2使用1、3、9、B,区域3使用4、6、C、E,区域4使用5、7、D、F;level-0层使用全部的双4x4点运动估计单元进行双路“弓”字型搜索。
8.根据权利4或6所述的一种整像素精度运动估计系统,其特征在于,3层渐进式搜索过程中,16种类型点的奇、偶RAM在每一层进行分配,提高了运动估计内部参考数据RAM的带宽利用率,使运动估计可以高效并行地执行:level-2层16个子区域一一对应了16种类型像素点,每个子区域在搜索过程中,只从1对奇偶RAM里面读取参考像素,因此16个子区域可以并行搜索;level-1层4个区域,每个区域分别包含4种类型像素点,区域1使用0、2、8、A,区域2使用1、3、9、B,区域3使用4、6、C、E,区域4使用5、7、D、F,进行搜索和运算,并且只从4对奇偶RAM读取参考像素,因此4个区域可以并行搜索;level-0层只有一个搜索区域,使用全部像素点进行搜索和运算,并且从全部奇偶RAM读取参考像素。
9.根据权利要求4所述的一种整像素精度运动估计系统,其特征在于,在level-0层搜索过程中,围绕level-0层搜索中心,从整像素精度运动估计搜索窗里,划定比level-0层搜索窗大的数据子窗,作为分数像素精度运动估计FME的搜索窗;利用level-0层搜索访问奇、偶RAM的时间空隙,将子窗内每种类型像素点取出,重新拼凑后,按行分别存入4个FIFO里;然后通过轮询仲裁策略,从4个FIFO依次输出每行宏块数据给分数精度运动估计。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210115685.5A CN102647594B (zh) | 2012-04-18 | 2012-04-18 | 一种整像素精度运动估计方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210115685.5A CN102647594B (zh) | 2012-04-18 | 2012-04-18 | 一种整像素精度运动估计方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102647594A CN102647594A (zh) | 2012-08-22 |
CN102647594B true CN102647594B (zh) | 2014-08-20 |
Family
ID=46660141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210115685.5A Active CN102647594B (zh) | 2012-04-18 | 2012-04-18 | 一种整像素精度运动估计方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102647594B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104685881B (zh) * | 2012-09-28 | 2018-05-15 | 夏普株式会社 | 图像解码装置、图像编码装置以及图像解码方法 |
CN103281533B (zh) * | 2013-05-14 | 2016-02-24 | 芯原微电子(北京)有限公司 | 用于可伸缩视频编码中增强层运动估计的设备和方法 |
CN103327340B (zh) * | 2013-06-20 | 2016-06-15 | 华为技术有限公司 | 一种整数搜索方法及装置 |
EP3189660B1 (en) | 2014-09-30 | 2023-07-12 | HFI Innovation Inc. | Method of adaptive motion vector resolution for video coding |
CN104994394B (zh) * | 2015-05-04 | 2018-08-07 | 北京大学 | 编码器运动估算方法及装置 |
CN105430413B (zh) * | 2015-11-17 | 2018-12-11 | 复旦大学 | 一种适用于hevc标准中整数运动估计的四分块硬件扫描方法 |
CN105847828B (zh) * | 2016-01-29 | 2019-02-05 | 西安邮电大学 | 一种用于整数运动估计的参考块像素更新并行实现方法 |
US10824877B2 (en) * | 2017-06-29 | 2020-11-03 | Texas Instruments Incorporated | Hierarchical data organization for dense optical flow processing in a computer vision system |
WO2019191889A1 (zh) * | 2018-04-02 | 2019-10-10 | 北京大学 | 用于视频处理的方法和设备 |
CN108765341B (zh) * | 2018-05-29 | 2022-06-21 | 郑州云海信息技术有限公司 | 一种图像处理的方法及其装置 |
CN108900846A (zh) * | 2018-07-17 | 2018-11-27 | 珠海亿智电子科技有限公司 | 一种视频编码的二维方向运动估计硬件电路及其方法 |
CN112911310B (zh) * | 2021-01-15 | 2023-05-16 | 北京博雅慧视智能技术研究院有限公司 | 多层整像素运动估计搜索方法、装置、设备及存储介质 |
CN113489988B (zh) * | 2021-06-11 | 2022-08-23 | 翱捷科技股份有限公司 | 一种hevc整像素运动估计方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101227611A (zh) * | 2008-01-31 | 2008-07-23 | 上海广电(集团)有限公司中央研究院 | 一种基于avs的运动估计装置及搜索方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7072395B2 (en) * | 2001-07-20 | 2006-07-04 | Ess Technology, Inc. | Memory control apparatus and efficient search pattern for block-matching motion estimation |
US8098733B2 (en) * | 2008-03-10 | 2012-01-17 | Neomagic Corp. | Multi-directional motion estimation using parallel processors and pre-computed search-strategy offset tables |
GB201007406D0 (en) * | 2010-05-04 | 2010-06-16 | Aspex Semiconductor Ltd | Block motion estimation |
-
2012
- 2012-04-18 CN CN201210115685.5A patent/CN102647594B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101227611A (zh) * | 2008-01-31 | 2008-07-23 | 上海广电(集团)有限公司中央研究院 | 一种基于avs的运动估计装置及搜索方法 |
Non-Patent Citations (3)
Title |
---|
刘敏等.AVS-M中基于全零块检测的运动估计快速算法.《华中科技大学学报(自然科学版)》.2007,第194-197页. * |
刘敏等.基于AVS-M的帧间模式快速选择算法.《计算机工程》.2008,第217-219页. |
基于AVS-M的帧间模式快速选择算法;刘敏等;《计算机工程》;20080131;第217-219页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102647594A (zh) | 2012-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102647594B (zh) | 一种整像素精度运动估计方法及其系统 | |
CN102790884B (zh) | 一种基于分层运动估计的搜索方法及其实现系统 | |
CN109644276A (zh) | 图像编码/解码方法 | |
CN100466744C (zh) | 帧间预测编码、译码装置 | |
CN101060628B (zh) | 图像数据传输方法、图像处理装置和摄像系统 | |
CN100579225C (zh) | 图像数据的存取和解码方法及解码装置 | |
CN110024394A (zh) | 对图像编码/解码的方法和设备及存储比特流的记录介质 | |
CN102547296A (zh) | 移动估计加速电路、移动估计方法及环路滤波加速电路 | |
CN101202914A (zh) | 具有本地寄存器的处理元件阵列 | |
JPH07250328A (ja) | 動きベクトル検出装置 | |
CN103108177B (zh) | 图像编码方法及图像编码装置 | |
CN101710986A (zh) | 基于同构多核处理器的h.264并行解码方法和系统 | |
CN103414895A (zh) | 一种适用于hevc标准的编码器帧内预测装置及方法 | |
CN101540911A (zh) | 产生图像数据流的方法和设备及重建图像的方法和设备 | |
CN112055203A (zh) | 帧间预测方法、视频编码方法及其相关装置 | |
CN110365988B (zh) | 一种h.265编码方法和装置 | |
CN111985456A (zh) | 视频实时识别分割及检测架构 | |
CN102088610A (zh) | 视频编解码器及运动估计方法 | |
US7777751B2 (en) | Tiled memory array for full search motion estimation | |
CN100568920C (zh) | 串行输入并行输出的视频图像亮度插值的方法和装置 | |
CN101443808B (zh) | 用于图像和视频处理的存储器组织方案和控制器结构 | |
CN102647592B (zh) | 一种高清编码器的运动估计搜索窗数据复用方法 | |
CN101951521B (zh) | 针对扩展可变块的视频图像运动估计方法 | |
US20110110430A1 (en) | Method for motion estimation in multimedia images | |
CN103327340A (zh) | 一种整数搜索方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20120822 Assignee: Boya cloud (Beijing) Technology Co., Ltd. Assignor: Peking University Contract record no.: 2017990000366 Denomination of invention: Integer pixel precision motion estimation method and system for same Granted publication date: 20140820 License type: Exclusive License Record date: 20170908 |
|
EE01 | Entry into force of recordation of patent licensing contract |