图像的运动估计方法及装置的制作方法

文档序号:7924849阅读:193来源:国知局
专利名称:图像的运动估计方法及装置的制作方法
技术领域
本发明涉及多媒体技术领域,尤其涉及一种图像的运动估计方法及装置。
背景技术
在现有的视频编码方法中,大都釆用以宏块为单位的运动估计(Motion Estimation, ME)来实现帧间压缩。ME的主要功能是对当前帧图4象中的一个 被编码像素块,在参考帧图像中的一个指定窗口中搜索与之相差最小的像素块, 作为最佳匹配。运动估计中要得到两个值 一个是被编码的像素块相对于参考 帧中最佳匹配像素块的位置偏移,即运动矢量MV (Motion Vector);另一个是 被编码像素块与匹配像素块的残差绝对值之和SAD (Sum of Absolute Difference )。运动估计算法作为^L频编码的核心算法,其计算量一般占整个编 码系统的60%至80%,因此,这部分执行效率直接关系到整个编码芯片的性能。
其中,计算SAD是为了得到SAD最小的最佳匹配点,而MV是在得到最佳匹 配点后用来定位最佳匹配点的,这样就可以准确地找到最佳匹配点,以便获取 并存储最佳匹配点对应的最佳匹配块的数据。
目前运动估计算法主要包括早期的三步法、二维对数法、新三步法、四 步法、梯度下降法、基于菱形的搜索算法、基于运动场预测的自适应搜索算法 (PMVFAST),以及非对称十字型多层次六边形格点搜索算法(UMHexagonS )。
现有技术对于运动估计算法的具体执行包括如下方案
第一、完全通过ASIC ( Application Specific Intergrated Circuits,专 用集成电路)执行运动估计算法,基于ASIC实现的运动估计器主要包括运动 估计控制器、PE-Array SAD Tree ( SAD树形计算逻辑阵列)、Comparator Tree
Array (比较树形阵列)、参考块/当前块寄存器阵列。
上述完全通过ASIC执行运动估计算法由于集成电路的固定,在具体实现运 动估计时灵活性较差,而且一般情况下只能支持一种运动估计算法。
第二、通过可编程处理器来实现,典型的可编程处理器有两类 一是通用 可编程处理器,如各种工作站和个人电脑的中央处理器;二是专用可编程处理 器,如数字信号处理器(DSP)。可编程处理器优势在于执行的指令可通过程序 编译生成,使得执行方法灵活,理论上可以支持所有运动估计算法。
由于运动估计的算法运算量巨大,这对可编程处理器的处理性能要求较高, 针对目前的可编程处理器而言,釆用这种执行方法的运动估计器计算性能有限, 在具体运动估计的计算时需要较长的计算周期,无法满足多路SD (Standard Definition,标准清晰度)或者高清编码的需求。

发明内容
本发明的实施例提供一种图像的运动估计方法及装置,能够灵活地执行多 种运动估计算法,并且具有较高的执行效率。 一种图像的运动估计方法,包括
接收运动估计的操作序列,该操作序列包含控制操作和计算操作; 通过运动估计控制器执行所述控制操作;
通过运动估计计算单元阵列执行所述计算操作,所述运动估计计算单元阵 列执行计算操作的操作对象为当前图像数据和搜索窗数据。 一种图像的运动估计装置,包括
运动估计控制器,用于接收运动估计的操作序列,执行所述操作序列中的 控制操作,并将所述操作序列中的计算操作配置到运动估计计算单元阵列;
运动估计计算单元阵列,用于以需要进行运动估计的图像数据为操作对象
执行所述计算操作。
本发明实施例提供的图像的运动估计方法及装置,在执行运动估计的算法 时,由运动估计控制器处理控制操作,由运动估计计算单元处理计算操作,由 于运动估计控制器和运动估计计算单元阵列的专有性,所以其执行效率较高, 能够发挥运动估计控制器和运动估计计算单元的优势,缩短运动估计的周期。
同时,由于本发明实施例中的操作序列可以通过具体指令来实现,而指令 是可以通过编程得到的,这样就使得本实施例具有较高的灵活性,相对于完全 通过集成电路来实现运动估计而言,本实施例具有较高的灵活性,能够适用多 种运动估计算法。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施 例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述 中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付 出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1中图像的运动估计方法流程图; 图2为本发明实施例1中图像的运动估计装置框图; 图3为本发明实施例2中图像的运动估计方法流程图; 图4为本发明实施例2中图像的运动估计装置框图; 图5为本发明实施例2中运动估计计算单元阵列的框图; 图6为本发明实施例2中计算单元的框图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清 楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是 全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造
性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
本实施例提供一种图像的运动估计方法,在提高运动估计算法的执行效率 的同时,使其能够适应更多的运动估计算法,如图l所示,该估计方法包括
101、 接收运动估计的操作序列,该操作序列包含控制操作和计算操作,一 般情况下,所述的操作序列是由编译器编译程序代码得到的操作,在某些情况 下也可以是直接输入的操作序列。
102、 通过运动估计计算单元阵列执行所述计算操作,所述运动估计计算单 元阵列执行计算操作的操作对象为当前图像数据和搜索窗数据,其中的计算操 作包括绝对值差操作、累加操作和数据移位操作等等。
通常运动估计算法包括两部分操作, 一部分是运算密集型的操作,如求绝 对值差、和累加操作、数据移位等等,另一类是控制密集型的操作,如条件跳 转、比较操作等等。我们可以将控制密集型的操作由运动估计控制器执行,而 将运算密集型的操作由运动估计计算单元阵列执行。
本实施例中通过运动估计控制器执行所述控制操作,这里的控制操作是指 控制密集型的操作操作,如循环操作、迭代操作、比较操作等等。即将控制 密集型的操作映射到运动估计控制器,本实施例的运动估计控制器可以选择 mini RSIC (小型的精简指令集运算),具备足够的灵活性,足以应付各类控制 操作。
对应于上述图像的运动估计方法,本实施例还提供一种图像的运动估计装 置,如图2所示,该装置包括运动估计控制器21和运动估计计算单元阵列22。
其中,运动估计控制器21用于接收运动估计的操作序列,该操作序列是通 过编译器编译完成的,或者是直接输入的,然后由该运动估计控制器21执行所
述操作序列中的控制操作,并将所述操作序列中的计算操作配置到运动估计计
算单元阵列22;所述运动估计计算单元阵列22用于以需要进行运动估计的图像 数据为操作对象执行所述计算操作,其中需要进行运动估计的图像数据为需要 编码的当前图像数据以及搜索窗数据。
本实施例在执行运动估计的算法时,由运动估计控制器处理控制操作,由 运动估计计算单元处理计算操作,由于运动估计控制器和运动估计计算单元阵 列的专有性,所以其执行效率要高于软件实现,并且能够发挥运动估计控制器 和运动估计计算单元的优势,缩短运动估计的周期。并且,由于本发明实施例 中的操作序列具体可以通过指令实现,而指令是可以通过编程得到的,这样就 使得本实施例具有较高的灵活性,相对于完全通过集成电路来实现运动估计而 言,本实施例具有较高的灵活性,能够适用多种运动估计算法。
实施例2:
本实施例提供一种图像的运动估计方法,由于运动估计主要得到的数据包 括运动矢量MV,被编码像素块与匹配像素块的残差绝对值之和SAD;而运动 矢量是在得到最佳匹配点之后,直接计算被编码像素块和最佳匹配点对应的匹 配像素块之间的位置之差,而最佳匹配点是通过计算并比较SAD得到的,所以 本实施例以计算SAD,并比较SAD以得到最佳匹配点为例,具体说明本实施例中 图像的运动估计方法。最佳匹配点是最佳匹配块上的一个像素点,例如最佳匹 配块的最左上角的点,以此点为原点,可以确定例如8*8块大小的像素块。 如图3所示,以一次运动估计为例,该估计方法包括如下步骤 301、接收运动估计的操作序列,该操作序列包含控制操作和计算操作,一 般情况下,所述的操作序列是由编译器编译程序代码得到的操作,在某些情况 下也可以是直接输入的操作序列。
302、 按照阵列形式緩沖当前图像数据和搜索窗数据,其中的当前图像数据 就是需要编码的像素块,而搜索窗数据就是匹配像素块。
303、 将緩冲后的当前图像数据和搜索窗数据输入到运动估计计算单元阵 列,以^f更运动估计计算单元阵列计算SAD。
上述步骤302将当前图像数据和搜索窗数据按照阵列形式緩冲,所谓阵列 形式的緩沖是指允许将多个数据并行地输入到緩存器,而且緩存器也是按照并 行输入的顺序緩存上述数据的。主要有如下效果 一、将数据緩沖可以在一賴: 时间内緩冲较多的数据,之后的处理过程中可以不再占用数据总线,使得数据 总线能够分时复用,减少了布线开销;二、使得当运动估计时数据栽入与运动 估计能够并行,避免因数据栽入而造成运动估计计算单元阵列的空闲。
3(M、将所述计算才喿作按行配置到运动估计计算单元阵列,或者^t安列配置到 运动估计计算单元阵列。在某些情况下,可以将多个计算操作分别按行或者按 列配置到运动估计计算单元阵列,以便运动估计计算单元阵列执行该计算操作, 例如求绝对值差操作、累加操作和数据移位梯:作。
运动估计计算单元阵列通过计算当前图像数据和搜索窗数据的SAD,并将该 SAD通过移位送到运动估计控制器。对于一个给定的运动估计算法,先将其中的 SAD计算、移位操作提取出来,写在一个配置程序中(每个独立的计算操作叫做 配置字),并保存在片上的配置存储器上。算法执行时,需要将配置存储器中的 配置字配置给运动估计计算单元阵列,配置字净皮译码后,运动估计计算阵列即 完成对应^t喿作。
305、通过运动估计控制器执行所述控制操作,这里的控制操作是指控制密 集型的的操作操作,如循环操作、迭代操作、比较操作等等,即将控制密集 型的操作映射到运动估计控制器。
因为运动估计过程会搜索很多个点,每个点都会有一个对应的SAD值,本 实施例中运动估计控制器通过执行比较操作比较所有的SAD,保存其中SAD值最 小的像素块的运动矢量。
由于需要处理的图像数据较多,需要不断地按照阵列形式緩沖当前图像数 据和搜索窗数据,同时,运动估计控制器和运动估计计算单元同时执行相应操 作,如果运动估计控制器再次收到运动估计计算单元阵列的SAD值,则再次通 过比较操作得出其中SAD值最小的像素块的运动矢量;并在后得到的像素块的 SAD值小于之前保存的像素块的SAD值时,利用本次SAD值最小的像素块的运动 矢量覆盖掉之前保存的像素块的运动矢量;否则放弃本次得到的像素块的运动 矢量。
306、当一个宏块的运动估计计算完毕后,需要保存最佳匹配点对应的像素 块, 一般称该像素块为匹配像素块,而通过上述步骤得到的像素块既为匹配像 素块,所以,本实施例中需要在运动估计控制器中保存运动矢量对应的像素块。
在具体实施时,可以先将该像素块的数据按照阵列緩沖,并将緩沖后的数 据通过运动估计计算单元阵列的移位操作保存到数据存储器。
对应于上述实施例,本实施例提供一种图像的运动估计装置,如图4所示, 该执行装置包括运动估计控制器41、运动估计计算单元阵列42、配置存储器 43、阵列緩冲器44和数据存储器45。
运动估计控制器41用于接收运动估计的操作序列,执行所述操作序列中的 控制操作,并将所述操作序列中的计算操作配置到运动估计计算单元阵列;
本实施例中运动估计控制器41通过将配置字从配置存储器传送给运动估计 计算单元阵列42完成一次配置;并通过比较运动估计计算单元阵列42计算出 的SAD值得到最佳匹配点;然后通过执行其中控制数据传输的控制操作,存储
最佳匹配点的数据。
运动估计计算单元阵列42用于以需要进行运动估计的图像数据为操作对象 执行所述计算梯:作。在本实施例中,运动估计计算单元阵列42主要完成SAD值 的计算,如图5所示,该计算单元阵列由N x N个计算单元421、累加器422以 及译码器423组成。
计算单元之间采用二维网格互连,如图6所示,每个计算单元包括第一 寄存器61、第二寄存器62、输入选择器63和计算模块64。
其中,第一寄存器61用于存储当前图像数据,该第一寄存器只存储一个像 素的数据;第二寄存器62用于存储参考图像数据,该第二寄存器62也只存储 一个像素的数据;计算模块64用于从第一寄存器获取当前图像数据,从第二寄 存器获取参考图像数据,并计算所述当前图像数据和参考图像数据的绝对值差。 其中参考图像数据可以通过输入选择器63输入,该输入选择器63用于选择相 邻计算单元输出的参考图像数据输入到第二寄存器62,为了该输入选择器63能 够选择相邻计算单元输出的参考图像数据,本实施例中的第二寄存器62还用于 向相邻计算单元输出其存储的参考图像数据;输入选择器63还可以选择搜索窗 数据输入到第二寄存器62。
由于输入选择器能够选择相邻计算单元输出的参考图像数据,所以,该运 动估计计算单元这列支持如下操作lshft(左移操作)、rshft(右移操作)、 ushft (上移操作)、dshft (下移操作),邻近通信指绝对值差计算单元支持上 下左右通信,主要是为了实现预测块数据的快速移位。输入选择器63还可以选 择搜索窗数据输入到第二寄存器62,本实施例还需要支持load操作(从数据緩 沖器载入数据到运动估计计算单元),将数据输入到所有绝对值差计算单元中的 第二寄存器62,其目的是将当前图像和搜索窗数据载入到绝对值差计算单元。
在计算模块64计算出绝对值差后,将绝对值差送入累加器422,通过累加 器422累加所述的绝对值差得到最终的SAD值。
在上述运动估计计算单元阵列的计算中,需要用到当前图像数据和搜索窗 数据,在具体实施时,本实施例还可以包括当前图像数据存储器46用于存储当 前图像彩:据,以及搜索窗数据存储器47用于存储搜索窗数据。通过阵列緩沖器 44緩沖所述当前图像数据和搜索窗数据,并在运动估计控制的控制下将緩冲的 当前图像数据和搜索窗数据传输到运动估计计算单元阵列,其中当前图像数据 是传输到第一寄存器61,搜索窗数据是通过运动估计计算单元阵列输入选择器 63传输到第二寄存器62。
在本实施例中,计算操作是从运动估计控制器41配置到运动估计计算单元 阵列42的。在实际运用时,可以通过配置存储器43完成上述操作,配置存卡者 器43是存放配置程序(配置字的集合, 一个配置字对应一次配置操作)的地方, 该配置存储器43包括行配置存储器431和列配置存储器432,在配置字的每个 执行周期,配置存储器将相应的配置按列或按行配置到运动估计计算单元阵列, 然后运动估计计算单元阵列执行相应的操作。具体操作为该配置存储器43从 运动估计控制器41中接收需要配置的计算操作,然后将计算操作按行配置到运 动估计计算单元阵列42,或按列配置到运动估计计算单元阵列42。配置存储器 43接收到的配置程序是一个配置字的集合,而该配置存储器的每一行和每一列 都可以完成配置字的配置,在每个执行周期,配置存储器43将相应的配置字按 列或按行传送到运动估计计算单元阵列42。本实施例中,运动估计计算单元阵 列通过译码器423将所述计算操作的配置字译码成其本身可执行的操作,对应 于配置存储器,该译码器423也包括行译码器和列译码器。
因为运动估计过程会搜索很多个点,每个点都会有一个对应的SAD值,运动估计计算单元阵列42将计算所得的SAD值移送给运动估计控制器41,由运动 估计控制器41对所有SAD值进行比较,最佳匹配点对应的像素块就是SAD值最 小的像素块,并由运动估计控制器41控制将最佳匹配点对应像素块的图像数据 存储到数据存储器45。由于最佳匹配点对应像素块中包括的多个像素,而这些 像素在搜索窗存储器的存储顺序可能与数据存储器45的可用存储空间相错位, 即最佳匹配点对应像素块的图像数据在搜索窗存储器中不是按照字节对齐的, 所以,本实施需要先从该数据载入数据到阵列緩冲器44上,然后通过运动估计 计算阵列执行移位搡作,使得最佳匹配点最左上点按照字节对齐,最后将移位 后的数据按行写入数据存储器45,将字节对齐后再存储不会出现数据存储器45 的存储的两段数据之间出现没有利用的存储空间,能够节约存储空间,。
上述方法中运动估计器的工作过程为运动估计控制器栽入配置程序到配 置存储器,然后将当前图像和待搜的搜索窗数据分别载入到运动估计计算单元 阵列的阵列緩沖器上,接着运动估计控制器控制配置存储器将配置字配置给运 动估计计算阵列,运动估计计算阵列收到配置字并对配置字译码后,即开始计 算,完成一次操作。如果执行的是SAD计算操作,则将计算所得的SAD值移出 交给运动估计控制器,因为运动估计过程会搜索很多个点,每个点都会有一个 对应的SAD值,本实施例中运动估计控制器通过执行比较操作比较所有的SAD, 保存其中SAD值最小的像素块的运动矢量。
以上描述的实施例中,由于运动估计计算单元阵列按照配置存储器中的配 置字进行操作,这样可以通过改变其中的配置字提高该运动估计执行装置的灵 活性,使其适用更多的运动估计算法。
上述的运动估计计算单元阵列支持类MIMD (多指令多数据流,Multiple Instruction Multiple Data)计算模型。因为单纯的SIMD (单指令多数据流,
Single Instruction Multiple Data)由一个4空制部4牛为所有的计算单元提供 程序,所有计算单元执行同样的指令,但当程序只需一部分计算单元操作时, 系统的利用率就降低了。而在本实施例的运动估计器中,运动估计计算单元阵 列受配置存储器控制,这样可以采取积极的措施提高整个系统的灵活性。
关于提高系统灵活性的具体说明如下由于运动估计计算单元阵列分为独 立的N行N列,同行或者同列中所有的计算单元共享一样的配置数据,完成相 同的操作,但每个计算单元操作的数据是不同的,提高了计算的效率,有利于 多个同样的计算操作并行执行。不同行或不同列的配置是相互独立的,这样整 个计算阵列有更好的灵活性。如果需要完成的计算量较小,可以控制一部分计 算单元工作,另一部分计算单元不工作,用于控制执行计算操作时的功库毛。 本发明实施例主要用在各种运动估计器中,执行相应的运动估计算法。 以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于 此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到 变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应 所述以权利要求的保护范围为准。
权利要求
1.一种图像的运动估计方法,其特征在于,包括接收运动估计的操作序列,该操作序列包含控制操作和计算操作;通过运动估计控制器执行所述控制操作;通过运动估计计算单元阵列执行所述计算操作,所述运动估计计算单元阵列执行计算操作的操作对象包括当前图像数据和搜索窗数据。
2、 根据权利要求1所述的图像的运动估计方法,其特征在于,该方法还包 括存储执行所述计算操作得出的数据。
3、 根据权利要求l所述的图像的运动估计方法,其特征在于,所述计算操 作按行配置到运动估计计算单元阵列,或按列配置到运动估计计算单元阵列。
4、 根据权利要求1所述的图像的运动估计方法,其特征在于,所述当前图 像数据和搜索窗数据按照阵列形式緩冲后输入到运动估计计算单元阵列。
5、 一种图像的运动估计装置,其特征在于,包括运动估计控制器,用于接收运动估计的操作序列,执行所述操作序列中的 控制操作,并将所述操作序列中的计算操作配置到运动估计计算单元阵列;运动估计计算单元阵列,用于以需要进行运动估计的图像数据为操作对象 执行所述计算操作。
6、 根据权利要求5所述的图像的运动估计装置,其特征在于,还包括 配置存储器,用于接收所述计算操作,并将该计算操作按行配置到运动估计计算单元阵列,或按列配置到运动估计计算单元阵列。
7、 根据权利要求5所述的图像的运动估计装置,其特征在于,还包括 阵列緩冲器,用于緩沖所述当前图像数据和搜索窗数据,并在运动估计控制器的控制下将緩冲的当前图像数据和搜索窗数据传输到运动估计计算单元阵
8、 根据权利要求5所述的图像的运动估计装置,其特征在于,所述运动估 计计算单元阵列将计算结果发送到运动估计控制器,所述运动估计控制器根据 所述计算结果得出当前图像的最佳匹配点,并控制运动估计计算单元阵列接收 所述最佳匹配点的数据;本执行装置还包括数据存储器,用于存储运动估计计算单元阵列接收到的最佳匹配点的数据。
9、 根据权利要求5至8中任意一项所述的图像的运动估计装置,其特征在 于,所述运动估计计算单元阵列中的每个计算单元包括第一寄存器,用于存储当前图像数据;第二寄存器,用于存储参考图像数据,并向相邻计算单元输出该参考图像 数据;输入选择器,用于选择相邻计算单元输出的参考图像数据输入到第二寄存 器,或者选择搜索窗数据输入到第二寄存器;计算模块,用于计算所述当前图像数据和参考图像数据的绝对值差;所述运动估计计算单元阵列还包括 累加器,用于累加所述绝对值差。
10、 根据权利要求9中任意一项所述的图像的运动估计装置,其特征在于, 所述运动估计计算单元阵列还包括译码器,用于将所述计算操作译码成该运 动估计计算单元阵列可执行的操作。
全文摘要
本发明实施例公开了一种图像的运动估计方法及装置,涉及视频图像压缩领域,解决了现有运动估计器无法同时满足执行效率和灵活性的问题。本实施例通过运动估计控制器来执行控制操作,而由运动估计计算单元阵列完成计算操作的操作,这样的分工可以提高计算操作和控制操作的执行效率,并且由于计算操作和控制操作可以通过相应指令实现,并且指令可以通过编程得到,这样就提高了其灵活性,能够适用多种运动估计算法。本实施例主要用于各种运动估计器中。
文档编号H04N7/26GK101370143SQ20081021130
公开日2009年2月18日 申请日期2008年9月17日 优先权日2008年9月17日
发明者明 李 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1