专利名称:一种基于avs的运动估计装置及搜索方法
技术领域:
本发明涉及数字视频编码技术,尤其涉及一种基于AVS的运动估计装置及 搜索方法。
背景技术:
现有数字视频编码通常采用运动估计来实现帧间压缩,运动估计的方法是 先将当前编码帧划分为固定大小的块,然后针对每个要被编码的块,在参考帧 的一定搜索范围内找出与它匹配误差最小的块,计算匹配误差所依据的准则是 累计绝对值差(SAD)。两者间的空间偏移就是当前块的运动向量,其中每个可能 的运动向量被称为候选向量。确定运动向量之后,对每个块只需编码它与参考 帧中匹配块的插图像即可,这样可以大大减少编码的比特数。在AVS编码标准 中,有4种不同尺寸形状的像素块被用于运动估计,包括8x8、 16x8、 8x16、 16x16, AVS的编码器要在这些树状分割模式中选择一种模式进行编码,要确定 这个最优模式就要对其中9个不同像素子块分别进行运动估计,求出它们各自 的运动向量,即可变尺寸块的运动估计方法。此外,AVS标准中运动向量计算 的准则改为使被编码像素块的率失真代价最小, 一个子块的率失真代价包括两 部分, 一个是子块的SAD,这与以往的编码标准中是一致的,还有一部分是与 运动向量有关的运动向量编码代价。实现运动估计的方法很多,常用的有菱形法、三步法、四步法、六边形法 等等。这几种方法虽然加速了运动估计,但它们的数据流不规则,每次估计运 算的时间不确定,所以硬件实现中通常使用全搜索算法。但在大多数情况下, 全搜索算法不能有效的减少运动估计所需的计算量,不能满足实时编码的要求。全搜索算法结合阵处理器结构可以实现8x8像素块的SAD计算,其他模式 (如8xl6、 16x8、 16x16)的SAD利用加法树(Add Tree)得到。搜索前,预 先将当前宏块像素装载到4个8x8处理单元(PE)阵列中,每个PE阵列的结构如图1所示;然后在:t叟索窗口中,按照如图2所示的先下移再右移的顺序, 以每个搜索点为起始点,依次读入一行(16个)参考像素。这种方法因为PE 阵列在结构上的规则性、控制上的脉动性,负载均匀,易于模块化和硬件实现。 但是该方法的缺点是重复读取了大量的参考像素,数据的重用性差,且需要的 时钟周期较长。发明内容本发明解决的技术问题是提供一种基于AVS的运动估计装置及搜索方法, 可以大大提高数据的重用性,使得当前宏块象素和参考窗口中象素均只需读入 一次,从而节省时钟周期。为了解决上述技术问题,本发明采用了如下技术手段 一种基于AVS的运动 估计装置,包含整像素运动估计总控制器、加法树、模式选择控制器、率失真 计算模块和模式比较模块,所述运动估计装置还包含一个计算及数据保存阵列和阵列控制器,所述整像素运动估计总控制器分别连接至阵列控制器、加法树 及模式选择控制器,阵列控制器的输出端分别连接至计算及数据保存阵列和加 法树,加法树的输出端连接至模式选择控制器,模式选择控制器的输出端分别 连接至率失真计算模块和模式比较模块,率失真计算模块的输出端连接至模式 比较模块,所述计算及数据保存阵列用于读取当前宏块像素和参考像素。所述的计算及数据保存阵列由左右两部分组成,左边为计算单元阵列,右边 为寄存器阵列。所述的计算单元阵列由16x16个计算单元组成,所述的寄存器阵列由16x2ph 个寄存器组成,其中2ph为运动估计的搜索窗口的边长。所述的计算单元由一个当前宏块像素寄存器、 一个参考像素寄存器及求两者 差绝对值的计算器组成。本发明的另一方案是提供一种采用上述运动估计装置的运动估计搜索方法, 其包含以下步骤步骤l、在第一个时钟,读入当前宏块的第一行像素,并存放在16个计算 单元的当前宏块像素寄存器中,同时读入第一行参考像素,存放在16个计算单 元的参考像素寄存器和第一行2ph个寄存器中;然后对计算单元中的像素进行差绝对值计算;步骤2、在下一个时钟,将上一时钟保存的当前宏块像素和参考像素向下移 入第二行相应的寄存器中,读入当前宏块的第二行像素和第二行参考像素,并 对计算单元中的像素进;f亍差绝对值计算;步骤3、重复步骤1~2,直至16个时钟结束,当前宏块的全部像素和16 x(2ph+16)个参考像素都被读入寄存器并计算相应的差绝对值;步骤4、将每列寄存器的参考像素向左移一列,将第一列寄存器的参考像素 移至最后一列寄存器中;并对计算单元中的像素进行差绝对值计算,即开始进行 搜索窗口的第一行第二个搜索点的累计绝对值差SAD计算;步骤5、重复步骤4,经过2ph个时钟,完成参考窗口的首行像素搜索和SAD 计算;步骤6、读入新一行参考像素,并左移后存于第一行,同时将每行寄存器的 参考像素下移一行,将第一行参考像素挤出寄存器阵列;步骤7、计算当前宏块像素与参考像素差的绝对值,求得搜索窗中第二行参 考像素中最后一个搜索点的SAD值;步骤8、将每列寄存器中的参考像素右移到后一列寄存器中,最后一列中的 参考像素移入第一列中,即计算搜索窗口第二行倒数第二个搜索点的SAD;步骤9、重复步骤8,再经过2ph个时钟,完成参考窗口的第二行像素搜索 和SAD计算;步骤IO、重复步骤6-9,直到搜索窗口中所有点都搜索完成。由于采用了以上的基于AVS的运动估计装置及搜索方法,与现有技术相比由于提高了数据的重用性,节省了时钟周期,可以更好的满足编码的实时性要求。
本发明的基于AVS的运动估计装置及搜索方法由以下的实施例及附图详细払4>图1为现有技术的处理单元阵列结构示意图; 图2为现有技术的搜索顺序示意图;图3为本发明运动估计装置的结构示意图;图4为本发明的计算与数据保存阵列结构示意图;图5为本发明的计算单元结构示意图;图6为本发明的搜索顺序示意图。
具体实施方式
以下将对本发明的运动估计装置及搜索方法作进一步的详细描述。 如图3所示,本实施例提供的一种基于AVS的运动估计装置,包含整像素 运动估计总控制器、加法树、模式选择控制器、率失真计算模块和模式比较模 块,所述运动估计装置还包含一个计算及数据保存阵列和阵列控制器。其中, 整像素运动估计总控制器分别连接至阵列控制器、加法树及模式选择控制器的 输入端,阵列控制器的输出端分别连接至计算及数据保存阵列和加法树,加法 树的输出端连接至模式选择控制器,模式选择控制器的输出端分别连接至率失 真计算模块和模式比较模块,率失真计算模块的输出端连接至模式比较模块,所述计算及数据保存阵列用于读取当前宏块像素和参考像素。如图4所示,所述的计算及数据保存阵列由左右两部分组成,左边为计算 单元阵列,右边为寄存器阵列。所述的计算单元阵列由16x16个计算单元组成, 所述的寄存器阵列由16x2ph个寄存器组成,其中2ph为运动估计的搜索窗口的 边长。如图5所示,计算单元阵列中的每个计算单元由一个当前宏块像素寄存器、一个参考像素寄存器及求两者差绝对值的计算器组成。采用上述运动估计装置的运动估计搜索方法包含以下步骤步骤l、在第一个时钟,读入当前宏块的第一行像素,并存放在16个计算单元的当前宏块像素寄存器中,同时读入第一行参考像素,存放在16个计算单元的参考像素寄存器和第一行2ph个寄存器中;然后对计算单元中的像素进行差绝对值计算;步骤2、在下一个时钟,将上一时钟保存的当前宏块像素和参考像素向下移 入第二行相应的寄存器中,读入当前宏块的第二行像素和第二行参考像素,并 对计算单元中的像素进行差绝对值计算;步骤3、重复步骤1~2,直至16个时钟结束,当前宏块的全部像素和16 x(2ph+16)个参考像素都被读入寄存器并计算相应的差绝对值;步骤4、将每列寄存器的参考像素向左移一列,将第一列寄存器的参考像素 移至最后一列寄存器中;并对计算单元中的像素进行差绝对值计算,即开始进行 搜索窗口的第一行第二个搜索点的SAD计算;步骤5、重复步骤4,经过2ph个时钟,完成参考窗口的首行像素搜索和SAD 计算;步骤6、读入新一行参考像素,并左移后存于第一行,同时将每行寄存器的 参考像素下移 一行,将第 一行参考像素挤出寄存器阵列;步骤7、计算当前宏块像素与参考像素差的绝对值,求得搜索窗中第二行参 考像素中最后一个搜索点的SAD值;步骤8、将每列寄存器中的参考像素右移到后一列寄存器中,最后一列中的 参考像素移入第一列中,即计算搜索窗口第二行倒数第二个搜索点的SAD;步骤9、重复步骤8,再经过2ph个时钟,完成参考窗口的第二行像素搜索 和SAD计算;步骤IO、重复步骤6~9,直到搜索窗口中所有点都搜索完成。 在步骤2和步骤3之间,加法树在整像素模块总控制器的控制下,对计算 单元阵列中计算得到的像素差的绝对值进行组合,分别得到8x8、 16x8、 8x16 和16x16四种模式下的SAD值;将得到的SAD值送入模式选择控制器,在模 式选择控制器的控制下,率失真计算模块完成各种4莫式下的率失真代价,并与 之前的SAD值求和后送入模式比较模块中,与之前已保存的SAD与率失真代 价之和最小的模式进行比较,选出较小者保存,即可得到匹配误差最小的参考 像素。
权利要求
1、一种基于AVS的运动估计装置,包含整像素运动估计总控制器、加法树、模式选择控制器、率失真计算模块和模式比较模块,其特征在于,所述运动估计装置还包含一个计算及数据保存阵列和阵列控制器,所述整像素运动估计总控制器分别连接至阵列控制器、加法树及模式选择控制器,阵列控制器的输出端分别连接至计算及数据保存阵列和加法树,加法树的输出端连接至模式选择控制器,模式选择控制器的输出端分别连接至率失真计算模块和模式比较模块,率失真计算模块的输出端连接至模式比较模块,所述计算及数据保存阵列用于读取当前宏块像素和参考像素。
2、 如权利要求1所述的运动估计装置,其特征在于,所述的计算及数据保 存阵列由左右两部分组成,左边为计算单元阵列,右边为寄存器阵列。
3、 如权利要求2所述的运动估计装置,其特征在于,所述的计算单元阵列 由16x16个计算单元组成,所述的寄存器阵列由16x2ph个寄存器组成,其中2ph 为运动估计的搜索窗口的边长。
4、 如权利要求3所述的运动估计装置,其特征在于,所述的计算单元由一 个当前宏块像素寄存器、 一个参考像素寄存器及求两者差绝对值的计算器组成。
5、 采用如权利要求1所述的运动估计装置的运动估计搜索方法,其特征在 于,所述方法包含以下步骤步骤1、在第一个时钟,读入当前宏块的第一行像素,并存放在16个计算 单元的当前宏块像素寄存器中,同时读入第一行参考像素,存放在16个计算单 元的参考像素寄存器和第一行2ph个寄存器中;然后对计算单元中的像素进行 差绝对值计算;步骤2、在下一个时钟,将上一时钟保存的当前宏块像素和参考像素向下移 入第二行相应的寄存器中,读入当前宏块的第二行像素和第二行参考像素,并 对计算单元中的像素进行差绝对值计算;步骤3、重复步骤1~2,直至16个时钟结束,当前宏块的全部像素和16 x(2ph+16)个参考像素都被读入寄存器并计算相应的差绝对值;步骤4、将每列寄存器的参考像素向左移一列,将第一列寄存器的参考像素移至最后一列寄存器中;并对计算单元中的像素进行差绝对值计算,即开始进行 搜索窗口的第一行第二个搜索点的累计绝对值差SAD计算;步骤5、重复步骤4,经过2ph个时钟,完成参考窗口的首行像素搜索和SAD 计算;步骤6、读入新一行参考像素,并左移后存于第一行,同时将每行寄存器的 参考像素下移 一行,将第 一行参考像素挤出寄存器阵列;步骤7、计算当前宏块像素与参考像素差的绝对值,求得搜索窗中第二行参 考像素中最后一个搜索点的SAD值;步骤8、将每列寄存器中的参考像素右移到后一列寄存器中,最后一列中的 参考像素移入第一列中,即计算搜索窗口第二行倒数第二个搜索点的SAD;步骤9、重复步骤8,再经过2ph个时钟,完成参考窗口的第二行像素搜索 和SAD计算;步骤IO、重复步骤6~9,直到搜索窗口中所有点都搜索完成。
全文摘要
本发明提供了一种基于AVS的运动估计装置及搜索方法,所述装置包含的计算及数据保存阵列由计算单元阵列和寄存器阵列组成。所述搜索方法将当前宏块像素和参考像素平行逐行读入计算单元阵列和寄存器阵列,然后对第一行的各个像素搜索点进行SAD计算,当完成第一行后,通过像素的阵列变换,开始对第二行从最后一个像素搜索点开始进行SAD计算,直至该行像素完成,同样完成所有参考像素的计算。所述方法可以减少像素的重复读入,提高像素的重用率,从而提高编码效率。
文档编号H04N7/26GK101227611SQ200810033359
公开日2008年7月23日 申请日期2008年1月31日 优先权日2008年1月31日
发明者刘锦阳, 王蕾睿, 霞 范 申请人:上海广电(集团)有限公司中央研究院