快速运动估计装置的制作方法

文档序号:7601278阅读:103来源:国知局
专利名称:快速运动估计装置的制作方法
技术领域
本发明涉及一种利用不同尺寸的图像块的快速运动估计装置。
背景技术
因为最近确定的ITU-T H.264(ISO/IEC MPEG-4 AVC)标准应用了一种基于利用不同尺寸的图像块的数字视频的压缩格式,那么将需要相应的运动估计方法。在视频多媒体数字信号编解码器(压缩和解压缩)中,运动估计,更特别的是使用不同尺寸的图像块的运动估计最为复杂并且需要大量的计算。因此,快速运动估计算法和高效硬件结构是必需的。因而本发明更特别地涉及一种用于执行快速运动估计算法的高效硬件结构。
当通过使用类似于传统情况下的全搜索的方法来执行不同尺寸的图像块的运动估计时,运算量将非常大。因此,考虑到芯片的大小、功率的消耗等,在设计用于实时对不同尺寸的图像块进行编码和解码的硬件结构时,其制造成本将增加不少。
基于这些原因,开发出了一种使用部分搜索方法的运动估计算法。但是,用于实现这些算法的最佳硬件结构还没有开发出来。以具有352×288分辨率的普通图像格式(CIF)的输入图像,以每帧30Hz输入,能够用传统硬件结构来进行实时处理。但是,以具有720×480分辨率的标准清晰度格式(SD)的输入图像,以每帧30Hz输入,就不能用传统硬件结构来进行实时处理。

发明内容
因此,本发明提供一种利用不同尺寸的图像块的快速运动估计装置,其通过重复使用最少量的计算部件和存储部件,甚至可对标准清晰度(SD)格式的输入图像进行实时处理。
根据本发明的一个方面,提供一种快速运动估计装置,包括绝对差总和(SAD)合并单元,用于将下级的基本块的SAD进行合并,来计算不同尺寸的图像块的SAD,其中下级的基本块是从预定宏块中分离出来的基本单元;以及最佳运动估计块确定单元,利用不同尺寸的图像块来确定执行最佳运动估计的模式的块,其SAD被SAD合并单元所计算。


本发明的以上的和其它特征和优点,将通过参考下列附图的实施例的详细描述而更加清楚图1所示是一个用于本发明的快速运动估计算法的图;图2所示是一个根据本发明的实施方式的快速运动估计装置的框图;图3所示是一个根据本发明的基本块和对应于基本块的搜索区域的图;图4所示是一个如图2中所示的基本搜索单元的结构的图;图5所示是一个用于本发明的部分搜索的搜索顺序的图;图6所示是一个用于在图5的位置(-2,-2)处计算绝对差的和(SAD)的阵列的图;图7所示是一个用于在图5的位置(-1,-2)处计算SAD的阵列的图;图8所示是一个用于在图5的位置(0,-2)处计算SAD的阵列的图;图9所示是一个用于在图5的位置(1,-2)处计算SAD的阵列的图;图10所示是一个用于在图5的位置(2,-2)处计算SAD的阵列的图;图11所示是一个用于在图5的位置(2,-1)处计算SAD的阵列的图;图12所示是一个用于在图5的位置(1,-1)处计算SAD的阵列的图;图13所示是一个如图2中所示的SAD合并单元的结构的框图。
具体实施例方式
本发明和其操作的优点可以通过附图和其解释来完全理解。
下面,本发明的实施例将参考附图来详细描述。在图中,相同的附图标记表示相同的部件。
图1所示是一个用于本发明的快速运动估计算法的图。
在图1中,快速运动估计算法包括上级,中级,以及下级。
下级的图像是原始图像,中级的图像是通过垂直和水平地将原始图像缩小到一半获得的图像,以及高级的图像是通过垂直和水平地将原始图像缩小到四分之一获得的图像。在这些图像上,首先在上级处执行全搜索,并且通过使用从先前级作为搜索点所获得的运动矢量,依次在中级和下级处执行部分搜索,以便通过这样更精确的调整来获得最终运动矢量。
特别地,在上级处,搜索是通过利用具有原始图像四分之一的垂直尺寸和四分之一的水平尺寸的图像来执行的。即全部搜索是在像素区域的4×4块单元中执行的,该区域的垂直和水平尺寸依±p/4比例决定,其中p是搜索范围。在上级搜索之后,两个绝对差的和(SAD)最小的点被选择作为中级搜索的上级候选运动矢量。
在中级,搜索是通过利用具有原始图像一半的垂直尺寸和一半的水平尺寸的图像来执行的。即,部分搜索通过使用三个上级候选运动矢量的每一个作为初始搜索点,在像素区域的8×8块单元中执行,该区域的垂直和水平尺寸依±2个像素比例决定。在所述的三个初始搜索点中,两个从上级搜索中选择,另外是基于运动矢量之间的空间相关性来选择的。当中级的搜索以三个初始搜索点为中心执行,并且因此获得了具有最小SAD的点,那么相应地,具有最小SAD的点将被选择作为下级搜索的初始搜索点。
在下级,搜索是通过使用原始图像本身来执行的。即部分搜索是在像素区域的16×16块单元中、以中级搜索中所选的初始搜索点为中心执行,该像素区域的垂直和水平尺寸依±2个像素比例决定。
最后,SAD在4×4块单元中获得,并且不同尺寸诸如4×8、8×4、8×8、16×8、8×16和16×16的图像块的SAD都能通过利用4×4块的SAD来获得。
图2所示是一个根据本发明实施例的快速运动估计装置的框图。
在图2中,快速运动估计装置包括宏块存储单元1、搜索区域存储单元2、当前搜索区域存储单元3、基本块存储单元4、基本搜索单元5、SAD比较单元6、地址产生单元7、SAD合并单元8以及最佳运动估计块确定单元9。
宏块存储单元1从当前帧中提取宏块并且保存这个提取的宏块。在这里宏块意指用于MPEG编码和解码的单元的块。
搜索区域存储单元2从先前帧中提取该宏块的搜索区域,并且保存所提取的搜索区域。这个时候,如果搜索区域越宽,那么就能执行更准确的运动估计,但是运算量也增加了。
当前搜索区域存储单元3从存储在搜索区域存储单元2中的搜索区域中提取上级搜索区域,并且保存所提取的上级搜索区域,其中上级搜索区域具有比宏块低的分辨率。为了减小运动估计的运算量,通过降低搜索区域的分辨率获得具有较小的垂直尺寸和水平尺寸的上级搜索区域。
基本块存储单元4从存储在宏块存储单元1的宏块中提取上级基本块,并且保存所提取的上级基本块,该提取的上级基本块的数量和同步搜索单元的数量一样,其中上级基本块与上级搜索区域具有相等的分辨率。用于运动估计的彼此相比较的两幅图像的分辨率应该彼此相等。因此,具有与上级搜索区域相等分辨率的上级基本块通过降低宏块的分辨率获得。
基本搜索单元5计算存储于基本块存储单元4中的各个上级基本块与存储于当前搜索区域存储单元3的上级搜索区域中的相应于所述各个上级基本块的区域的SAD。通过将上级基本块的各个点的亮度值和坐标值、与各个与上级基本块的各个点相对应的上级搜索区域的点的亮度值和坐标值一对一地代入一个方程中来获得该SAD。通常来说,运动估计仅通过亮度差来计算。
只要每个上级基本块的SAD通过基本搜索单元5来计算,当前搜索区域存储单元3就将上级搜索区域的存储位置移动一个像素,直到上级搜索区域上SAD的计算结束。通过添加用于部分搜索的区域(即,部分区域)到将要主要搜索的搜索区域而获得的区域被存储在当前搜索区域存储单元3中。这是因为基本搜索单元5应当搜索将被主要搜索的搜索区域中的各个点周围的部分区域,并且当前搜索区域存储单元3应当保存部分区域被添加到的上级搜索区域,使在边缘搜索各个点周围的部分区域。为了搜索所有的部分区域,当前搜索区域存储单元3移动上级搜索区域的存储位置,直到部分区域上的SAD计算完成。这个时候,上级搜索区域的存储位置应该移动一个像素,移动若干次直到能覆盖整个部分区域。
只要上级搜索区域的存储位置在当前搜索区域存储单元3中被移动一个像素,基本搜索单元5就计算各个上级基本块与移动了一个像素的上级搜索区域中的相应于各个上级基本块的各个区域之间的SAD。即,由于存储在基本块存储单元4中的各个上级基本块的存储位置是固定的,并且存储在当前搜索区域存储单元3中的上级搜索区域的存储位置被移动,因此部分搜索的作用仅能通过允许基本搜索单元5来机械的计算输入上级基本块和上级搜索区域之间的SAD而获得。
当上级搜索区域上的SAD的计算完成时,当前搜索区域存储单元3从搜索区域中提取另一个与所述上级搜索区域所不同的上级搜索区域,并且保存所提取的另一个上级搜索区域,直到搜索区域上的SAD计算完成,即,直到全部搜索完成。由于存储在搜索区域存储单元2中的搜索区域较宽,所以应当提取较多的上级搜索区域的数量,并且前述的处理将在每个所提取的上级搜索区域上重复执行。即,基本搜索单元5计算存储在基本块存储单元4中的各个上级基本块与存储在当前搜索区域存储单元3中的另一个上级搜索区域中的相应于上级基本块的各个区域之间的SAD。
SAD比较单元6比较由基本搜索单元5所计算的上级基本块的SAD。即,如上所述,当全部搜索通过重复使用基本搜索单元5完成时,那么SAD比较单元6比较全部搜索的结果的SAD。
地址产生单元7产生相应于C(=A+B)上级候选运动矢量的搜索区域的地址,该矢量由具有在SAD比较单元6的比较结果的基础上的最小SAD的A点、和基于相邻运动矢量之间的空间相关性的B点来表示。这些地址是用于从搜索区域存储单元2中提取将在中级搜索的搜索区域的地址。在上级获得的候选运动矢量和在中级获得的候选运动矢量(将在以下描述)将为获得最终运动矢量提供一个参考。即,上级候选运动矢量是通过低分辨率的全部搜索来降低运算量,中级候选运动矢量是通过比所述低分辨率稍高的分辨率的部分搜索来增加准确度,以及最终运动矢量是以原始分辨率在中级候选运动矢量周围进行部分搜索。在此,A是一或更多,B是零或更多。换句话说,具有基于SAD比较单元7的比较结果的最小SAD的一个点必然成为上级候选运动矢量,以及基于与紧接着该最小SAD的小的SAD相邻的运动矢量之间的空间相关性所获得的点成为附带的上级候选运动矢量。通过减小运算量以及增加准确度,部分搜索通常在具有最小SAD的两个点以及基于运动矢量之间的空间相关性而获得的一个点周围进行。
当前搜索区域存储单元3从存储在搜索区域存储单元2中的搜索区域中提取中级搜索区域,并且保存所提取的中级搜索区域。所提取的中级搜索区域被存储在下列地址中,即,相应于由地址产生单元7所产生的地址中的C上级候选运动矢量的一个上级候选运动矢量的搜索区域的地址,并且具有低于宏块并且高于上级搜索区域的分辨率。中级搜索是在上级和下级之间的分辨率中搜索中级候选运动矢量的处理,中级候选运动矢量是用于搜索最后的运动矢量的参考。
基本块存储单元4从存储在宏块存储单元1中的宏块中,提取具有和中级搜索区域相等分辨率的中级块,将中级基本块分离成与来自所提取的中级块中的同步搜索单元的数量相同的数量,并且保存所分离的中级基本块。类似于上级搜索,由于两个用于运动估计而被彼此比较的图像的分辨率应该相等,因此将提取与中级搜索区域具有相同分辨率的中级块。
基本搜索单元5计算存储在基本块存储单元4中的各个中级基本块与存储在当前搜索区域存储单元3中的中级搜索区域中的相应于中级基本块的各个区域之间的SAD。类似于上级搜索,通过将中级基本块中各个点的亮度值和坐标值、与相应于中级基本块的各个点的中级搜索区域的各个点的亮度值和坐标值一对一地代入用于计算SAD的方程中来获得SAD。
只要每个中级基本块的SAD通过基本搜索单元5来计算,当前搜索区域存储单元3就将中级搜索区域的存储位置移动一个像素,直到中级搜索区域上的SAD计算完成。类似于上级搜索,中级搜索区域的存储位置应当每次移动一个像素,移动若干次直到能覆盖整个部分区域。
只要中级搜索区域的存储位置在当前搜索区域存储单元3中移动一个像素,基本搜索单元5就计算各个中级基本块与移动了一个像素的中级搜索区域中的相应于所述各个中级基本块的各个区域之间的SAD。
SAD合并单元8通过合并由基本搜索单元5所计算的各个中级基本块的SAD来计算中级块的SAD。由于上级基本块本身是具有低分辨率的宏块,因此SAD的合并处理并不是必需的。但是,由于中级基本块是从具有中间分辨率的宏块中分离出来的,即,中级块,那么各个中级基本块的SAD应当被合并,以及中级块的SAD应当被计算,以便获得该宏块的运动矢量。
当中级搜索区域的部分搜索完成时,当前搜索区域存储单元3提取另一个中级搜索区域,该中级搜索区域被存储在与C上级候选运动矢量的候选运动矢量不同的另一个候选运动矢量的搜索区域相应的地址中,并且保存所提取的另一个中级搜索区域。即,当一个上级候选运动矢量的部分搜索完成时,其它上级候选运动矢量的部分搜索将顺序执行。换句话说,只要另一个中级搜索区域存储在当前搜索区域存储单元3中,基本搜索单元5计算存储在基本块存储单元4中的各个中级基本块与存储在当前搜索区域存储单元3中的另一个中级搜索区域中的相应于中级基本块的各个区域之间的SAD,然后将重复前述的处理。
SAD比较单元6比较由SAD合并单元8所计算的中级块的SAD。即如前所述,当部分搜索通过重复使用基本搜索单元5而完成时,SAD比较单元6将比较部分搜索的结果的SAD。
地址产生单元7产生与中级候选运动矢量的搜索区域相应的地址,该矢量由具有基于SAD比较单元6的比较结果的最小SAD的点来指示。该地址是用于从搜索区域存储单元2中提取出用于下级搜索的搜索区域的地址。
当前搜索区域存储单元3从存储在搜索区域存储单元2中的搜索区域中提取下级搜索区域,并保存所提取的下级搜索区域。所提取的下级搜索区域被存储在与来自地址产生单元7所产生的地址中的中级候选运动矢量的搜索区域相应的地址中,并且和宏块具有相同的分辨率。下级搜索是用于在原始分辨率搜索以中级候选运动矢量为中心的最终的运动矢量。
基本块存储单元4从存储在宏块存储单元1中的宏块中分离出下级块,分离成与来自所分离的中级块的同步搜索单元的数量相同数量的下级块,并且保存所分离的下级基本块。下级块的分辨率等于宏块的分辨率。
基本搜索单元5计算存储在基本块存储单元4中的各个下级基本块与存储在当前搜索区域存储单元3中的下级搜索区域中的相应于下级基本块的各个区域之间的SAD。类似于上级搜索和中级搜索,通过将下级基本块中各个点的亮度值和坐标值、与相应于下级基本块的各个点的下级搜索区域的各个点的亮度值和坐标值一对一地代入用于计算SAD的方程中来获得SAD。
只要每个下级基本块的SAD通过基本搜索单元5来计算,当前搜索区域存储单元3将下级搜索区域的存储位置移动一个像素,直到在下级搜索区域上的SAD计算完成。
只要下级搜索区域的存储位置在当前搜索区域存储单元3中移动一个像素,基本搜索单元5就计算各个下级基本块与移动了一个像素的下级搜索区域中的相应于各个下级基本块的各个区域之间的SAD。类似于上级搜索和中级搜索,下级搜索区域的存储位置应当移动一个像素,移动若干次直到能覆盖整个部分区域。
只要下级搜索区域上的SAD计算完成,基本块存储单元4从存储在宏块存储单元1的宏块中分离出与下级块不同的另一个下级块,直到整个宏块的部分搜索完成,将另外的下级基本块分离成与来自所分离的另一个下级块的同步搜索单元的数量相同的数量,并且保存所分离的其它下级基本块。前述的处理在从宏块所分离的所有下级块上重复执行。基本搜索单元5计算存储在基本块存储单元4中的各个其它下级基本块与存储在当前搜索区域存储单元3中下级搜索区域中的相应于其它下级基本块的各个区域的SAD。
SAD合并单元8合并从宏块中分离的各个中级基本块的SAD来计算不同块单元的SAD。因此,H.264所需的不同尺寸的图像块的SAD能够被计算。换句话说,在本发明中为了有效的利用硬件执行快速运动估计算法并且计算H.264所需的不同尺寸的图像块的SAD,H.264所需要的具有最小尺寸的块被设置为基本块,所述基本块的SAD通过对基本块重复使用基本块存储单元4和基本搜索单元5来计算,然后SAD被合并以便计算不同尺寸的图像块的SAD。
最佳运动估计块确定单元9从块的不同单元中确定执行最佳运动估计的模式的块,其中块的不同单元的SAD由SAD合并单元8计算。SAD的数量以及每个运动矢量的数据总量被调整以便确定最有效的模式的块。
现在将描述通常的实例,其中宏块的尺寸是16×16,基本块的尺寸是4×4。在此,该4×4基本块是H.264所需的最小块。同步搜索单元的数量设置成4。
宏块存储单元1从当前帧中提取16×16的宏块,并且保存所提取的16×16的宏块。
搜索区域存储单元2从先前帧中提取16×16的宏块的搜索区域,并且保存所提取的搜索区域。当搜索在[-p,+p]的范围中执行时,那么具有尺寸为(16+2p)×(16+2p)的搜索区域被提取。在此,根据MPEG系统的性能,p的值可被不同地确定为16,32,64等。p的值越大,就能在越宽的区域执行搜索,以便当运动很大时有可能执行稳定的运动估计。
当前搜索区域存储单元3对存储在搜索区域存储单元2中的搜索区域进行子采样,来提取垂直尺寸和水平尺寸分别减为四分之一的上级搜索区域,并且保存所提取的上级搜索区域。上级搜索区域的尺寸由于考虑到中级和下级而被设置成12×12。这个尺寸等于在[-4,+4]范围中对于4×4块的搜索所需要的数据的尺寸。
当同步搜索单元的数量设置成4时,基本块存储单元4被分成4份,即第一基本块存储单元41,第二基本块存储单元42,第三基本块存储单元43,以及第四基本块存储单元44。从基本块存储单元接收数据的基本搜索单元5也被分成4份,即第一基本搜索单元51,第二基本搜索单元52,第三基本搜索单元53,以及第四基本搜索单元54。
第一基本块存储单元41对来自存储在宏块存储单元1中的16×16宏块的16×16宏块进行子采样,来提取4×4上级基本块,该上级基本块的垂直尺寸和水平尺寸分别减为四分之一,并且保存所提取的4×4上级基本块。
第二基本块存储单元42对存储在宏块存储单元1中的16×16宏块中的16×16宏块进行子采样,来提取4×4上级基本块,该上级基本块的垂直尺寸和水平尺寸分别减为四分之一,并且保存所提取的4×4上级基本块。
第三基本块存储单元43对存储在宏块存储单元1中的16×16宏块中的16×16宏块进行子采样,来提取4×4上级基本块,该上级基本块的垂直尺寸和水平尺寸分别减为四分之一,并且保存所提取的4×4上级基本块。
第四基本块存储单元44对存储在宏块存储单元1中的16×16宏块中的16×16宏块进行子采样,来提取4×4上级基本块,该上级基本块的垂直尺寸和水平尺寸分别减为四分之一,并且保存所提取的4×4上级基本块。
第一基本搜索单元51计算存储在第一基本块存储单元41中的4×4上级基本块与存储在当前搜索区域存储单元3中的12×12上级搜索区域中的相应于存储在第一基本块存储单元41中的4×4上级基本块的区域的SAD。
第二基本搜索单元52计算存储在第二基本块存储单元42中的4×4上级基本块与存储在当前搜索区域存储单元3中的12×12上级搜索区域中的相应于存储在第二基本块存储单元42中的4×4上级基本块的区域的SAD。
第三基本搜索单元53计算存储在第三基本块存储单元43中的4×4上级基本块与存储在当前搜索区域存储单元3中的12×12上级搜索区域中的相应于存储在第三基本块存储单元43中的4×4上级基本块的区域的SAD。
第四基本搜索单元54计算存储在第四基本块存储单元44中的4×4上级基本块与存储在当前搜索区域存储单元3中的12×12上级搜索区域中的相应于存储在第四基本块存储单元44中的4×4上级基本块的区域的SAD。
图3所示是根据本发明的基本块和相应于该基本块的搜索区域的图。
在图3中,整个12×12的区域是搜索区域,四个4×4的方形框是基本块。分别地,整个12×12的区域能够从12×12的寄存器阵列中实现,以及四个4×4方形框能够从4×4的寄存器阵列中实现。在基本块中,上左边的方形框31由存储在第一基本块存储单元41中的基本块的像素构成,下左边的方形框32由存储在第二基本块存储单元42中的基本块的像素构成,上右边的方形框33由存储在第三基本块存储单元43中的基本块的像素构成,下右边的方形框34由存储在第四基本块存储单元44中的基本块的像素构成。上左边的方形框31计算该基本块的像素1和搜索区域的像素1之间的SAD、基本块的像素2和搜索区域的像素2之间的SAD、......、以及基本块的像素40和搜索区域的像素40之间的SAD。下左边的方形框32,上右边的方形框33,以及下右边的方形框34类似地也是相同位置像素之间的SAD。换句话说,SAD在四个4×4寄存器阵列叠加在12×12寄存器阵列上的情况下计算。12×12寄存器阵列具有由数字1到144表示的144个寄存器,其中(1,2,3,4,13,14,15,16,25,26,27,28,37,38,39,40)与第一基本搜索单元51相关联,(5,6,7,8,17,18,19,20,29,30,31,32,41,42,43,44)与第二基本搜索单元52相关联,(49,50,51,52,61,62,63,64,73,74,75,76,85,86,87,88)与第三基本搜索单元53相关联,(53,54,55,56,65,66,67,68,77,78,79,80,89,90,91,92)与第四基本搜索单元54相关联。所述144个寄存器都彼此连通,使得在列单元可以在左右方向移动,以及在行单元可以在上下方向移动。
图4所示是如图2中所示的基本搜索单元的结构图。
在图4中,第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54的每一个都由16个绝对差计算器和15个加法器构成。
C11是基本块的坐标值为(1,1)处的像素的亮度值,以及C12等与其类似。P11是搜索区域的坐标值为(1,1)处的像素的亮度值,以及P12等与其类似。计算C11和P11之间的绝对差,以及类似的计算C12和P12等之间的绝对差。即,当每个4×4基本块的16个像素的16个亮度值和搜索区域的16个像素的16个亮度值同时输入到第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53和第四基本搜索单元54中的每一个时,同步搜索单元的数量(即,四个4×4基本块)的SADs44值就在同一时刻输出。使用这种方法,通过同时计算四个基本块的SADs44,就有可能实现快速运动估计装置。
只要所有上级基本块的SAD由第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54来计算,当前搜索区域存储单元3移动上级搜索区域的存储位置直到部分搜索完成。由于第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54可同时搜索8×8像素,并且存储搜索区域空间由12×12的寄存器阵列构成,部分搜索的范围是[-2,+2]。
图5所示是一个用于本发明的部分搜索的搜索顺序的图;在图5中,由于范围[-2,+2],部分搜索在5×5=25个点上执行。在图5中,示出的是在范围[-2,+2]中进行部分搜索的顺序。部分搜索按照蛇形顺序进行,以便在范围[-2,+2]中的所有点能最有效地进行搜索。除所示的顺序之外,从下到上,从左到右以及从右到左的顺序都是可能的。
只要上级搜索区域的存储位置在当前搜索区域存储单元3中被移动一个像素,第一基本搜索单元51计算4×4上级基本块与移动了一个像素的12×12上级搜索区域中的存储在第一基本块存储单元41中的4×4上级基本块相对应的区域之间的SAD。
只要上级搜索区域的存储位置在当前搜索区域存储单元3中被移动一个像素,第二基本搜索单元52就计算4×4上级基本块与移动了一个像素的12×12上级搜索区域中的存储在第二基本块存储单元42中的4×4上级基本块相对应的区域之间的SAD。
只要上级搜索区域的存储位置在当前搜索区域存储单元3中被移动一个像素,第三基本搜索单元53就计算4×4上级基本块与移动了一个像素的12×12上级搜索区域中的存储在第三基本块存储单元43中的4×4上级基本块相对应的区域之间的SAD。
只要上级搜索区域的存储位置在当前搜索区域存储单元3中被移动一个像素,第四基本搜索单元54就计算4×4上级基本块与移动了一个像素的12×12上级搜索区域中的存储在第四基本块存储单元44中的4×4上级基本块相对应的区域之间的SAD。
图6所示是一个用于在图5的位置(-2,-2)处计算绝对差(SAD)的阵列的图。
图7所示是一个用于在图5的位置(-1,-2)处计算SAD的阵列的图。
图8所示是一个用于在图5的位置(0,-2)处计算SAD的阵列的图。
图9所示是一个用于在图5的位置(1,-2)处计算SAD的阵列的图。
图10所示是一个用于在图5的位置(2,-2)处计算SAD的阵列的图。
图11所示是一个用于在图5的位置(2,-1)处计算SAD的阵列的图。
图12所示是一个用于在图5的位置(1,-1)处计算SAD的阵列的图。
图6、7、8、9、10、11和12所示的分别是用于计算图5中所示的25个点中的6个点的SAD的阵列,并且用于计算其它19个点的SAD的阵列与其类似。
即,图6、7、8、9、10、11和12依次所示在12×12寄存器阵列中的用于向第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54提供合适数据的数据流,以便在范围[-2,+2]中执行部分搜索。如图6中,当12×12寄存器阵列被搜索区域数据充满时,第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54计算在位置[-2,-2]的分别四个基本块的SAD。然后,在一个时钟以后,如图7中,12×12寄存器阵列向左移动一列以定位在第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54的相应于位置(-1,-2)的搜索区域数据。使用这种方法,每个时钟12×12寄存器阵列向左移动一列,来依次计算位置为(0,-2),(1,-2)和(2,-2)的SAD。接下来,12×12寄存器将如图11所示向上移动一行来计算位置(2,-1)的SAD。接着,如图12所示,每个时钟12×12寄存器阵列向右移动一列来依次计算位置为(1,-1),(0,-1),(-1,-1)和(-2,-1)的SAD。使用这种方法,在25个时钟之后,在范围[-2,+2]中的四个4×4基本块的部分搜索完成。
只要范围[-2,+2]中的部分搜索完成,当前搜索区域存储单元3从搜索区域中提取不同于所述12×12上级搜索区域的另一个12×12上级搜索区域,直到全部搜索完成,并且保存所提取的另一个12×12上级搜索区域。即,直到在整个搜索区域上的搜索结束,搜索区域被分割成若干12×12块上级搜索区域,并且所述的处理在各个12×12上级搜索区域上重复执行,以便计算4×4基本块的SAD。
SAD比较单元6比较由第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54所计算的4×4上级基本块的SAD。
地址产生单元7产生相应于三个上级候选运动矢量的搜索区域的地址,该三个上级候选运动矢量由具有基于SAD比较单元6的比较结果的最小SAD的两个点以及基于相邻运动矢量之间的空间相关性而获得的一个点来表示。
当前搜索区域存储单元3从存储在搜索区域存储单元2中的搜索区域提取中级搜索区域,并且保存所提取的中级搜索区域。在此,所提取的中级搜索区域已经被存储在由地址产生单元7所产生的地址中,其对应于三个上级候选运动矢量的任意一个上级候选运动矢量的搜索区域,并且具有低于16×16宏块以及高于12×12上级搜索区域的分辨率。即,当前搜索区域存储单元3对存储在搜索区域存储单元2中的搜索区域进行子采样,来提取12×12的中级搜索区域,该中级搜索区域的垂直和水平尺寸分别减至到二分之一,并且保存所提取的12×12中级搜索区域。
第一基本块存储单元41对存储在宏块存储单元1中的宏块进行子采样,来提取8×8的中级块,该中级块的垂直和水平尺寸分别减至到二分之一,从所提取的8×8中级块中分离出第一4×4中级基本块,并且保存所分离的第一4×4中级基本块。
第二基本块存储单元42对存储在宏块存储单元1中的宏块进行子采样,来提取8×8的中级块,该中级块的垂直和水平尺寸分别减至到二分之一,从所提取的8×8中级块中分离出第二4×4中级基本块,并且保存所分离的第二4×4中级基本块。
第三基本块存储单元43对存储在宏块存储单元1中的宏块进行子采样,来提取8×8的中级块,该中级块的垂直和水平尺寸分别减至到的二分之一,从所提取的8×8中级块中分离出第三4×4中级基本块,并且保存所分离的第三4×4中级基本块。
第四基本块存储单元44对存储在宏块存储单元1中的宏块进行子采样,来提取8×8的中级块,该中级块的垂直和水平尺寸分别减至到二分之一,从所提取的8×8中级块中分离出第四4×4中级基本块,并且保存所分离的第四4×4中级基本块。
第一基本搜索单元51计算存储在第一基本块存储单元41中的第一4×4中级基本块与存储在当前搜索区域存储单元3中的12×12中级搜索区域中的相应于第一4×4中级基本块的区域之间的SAD。
第二基本搜索单元52计算存储在第二基本块存储单元42中的第二4×4中级基本块与存储在当前搜索区域存储单元3中的12×12中级搜索区域中的相应于第二4×4中级基本块的区域之间的SAD。
第三基本搜索单元53计算存储在第三基本块存储单元43中的第三4×4中级基本块与存储在当前搜索区域存储单元3中的12×12中级搜索区域中的相应于第三4×4中级基本块的区域之间的SAD。
第四基本搜索单元54计算存储在第四基本块存储单元44中的第四4×4中级基本块与存储在当前搜索区域存储单元3中的12×12中级搜索区域中的相应于第四4×4中级基本块的区域之间的SAD。
只要第一中级基本块、第二中级基本块、第三中级基本块以及第四中级基本块的SAD分别通过第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54来计算,当前搜索区域存储单元3就将存储在当前搜索区域存储单元3中的中级搜索区域的存储位置移动一个像素,如图5所示,直到部分搜索完成。
只要在当前搜索区域存储单元3中中级搜索区域的存储位置被移动一个像素,第一基本搜索单元51就计算第一4×4中级基本块与移动了一个像素的12×12中级搜索区域中的第一4×4中级基本块相对应的区域之间的SAD。此时,第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54使用同样的方法计算SAD。
当在具有范围[-2,+2]的中级搜索区域上的SAD计算完成时,SAD合并单元8合并由第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54所计算的各个4×4中级基本块的SAD,来计算8×8中级块的SAD。
只要具有范围[-2,+2]的中级搜索区域上的SAD计算完成,当前搜索区域存储单元3就提取存储在与另一个上级候选运动矢量的搜索区域相应的地址中的另一个12×12中级搜索区域,并且保存所提取的另一个12×12中级搜索区域,直到完成和三个上级候选运动矢量的前述上级候选运动矢量不同的两个上级候选运动矢量上的搜索。因此,在中级搜索中,第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54分别被总计使用三次。
使用这种方法,当在三个上级候选运动矢量上的部分搜索完成时,SAD比较单元6比较由第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54所计算的8×8中级块上的SAD。
地址产生单元7产生相应于一个中级候选运动矢量的搜索区域的地址,该中级候选运动矢量由基于SAD比较单元6的比较结果具有最小SAD的一个点来表示。
当前搜索区域存储单元3从存储在搜索区域存储单元2中的搜索区域中提取12×12下级搜索区域,并且保存所提取的12×12下级搜索区域。在此,12×12下级搜索区域已经存储在由地址产生单元7产生的地址中,其相应于中级候选运动矢量的搜索区域,并且具有与宏块同样的分辨率。
第一基本块存储单元41从存储在宏块存储单元1中的宏块中分离出第一8×8下级块,从所分离的第一8×8的下级块中分离出第一4×4下级基本块,并且保存所分离的第一4×4下级基本块。16×16的宏块被分成第一8×8下级块、第二8×8下级块、第三8×8下级块以及第四8×8下级块,其中每个8×8下级块被分成四个4×4下级基本块。即16×16宏块被分成总共16个4×4下级基本块。
第二基本块存储单元42从存储在宏块存储单元1中的宏块中分离出第一8×8下级块,从所分离的第一8×8的下级块中分离出第二4×4下级基本块,并且保存所分离的第二4×4下级基本块。
第三基本块存储单元43从存储在宏块存储单元1中的宏块中分离出第一8×8下级块,从所分离的第一8×8的下级块中分离出第三4×4下级基本块,并且保存所分离的第三4×4下级基本块。
第四基本块存储单元44从存储在宏块存储单元1中的宏块中分离出第一8×8下级块,从所分离的第一8×8的下级块中分离出第四4×4下级基本块,并且保存所分离的第四4×4下级基本块。
第一基本搜索单元51计算存储在第一基本块存储单元41中的第一4×4下级基本块与存储在当前搜索区域存储单元3中的12×12下级搜索区域中的相应于第一4×4下级基本块的区域的SAD。
第二基本搜索单元52计算存储在第二基本块存储单元42中的第二4×4下级基本块与存储在当前搜索区域存储单元3中的12×12下级搜索区域中的相应于第二4×4下级基本块的区域的SAD。
第三基本搜索单元53计算存储在第三基本块存储单元43中的第三4×4下级基本块与存储在当前搜索区域存储单元3中的12×12下级搜索区域中的相应于第三4×4下级基本块的区域的SAD。
第四基本搜索单元54计算存储在第四基本块存储单元44中的第四4×4下级基本块与存储在当前搜索区域存储单元3中的12×12下级搜索区域中的相应于第四4×4下级基本块的区域的SAD。
只要第一4×4下级基本块、第二4×4下级基本块、第三4×4下级基本块以及第四4×4下级基本块上的SAD分别通过第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54来计算,当前搜索区域存储单元3就将存储在当前搜索区域存储单元3中的12×12下级搜索区域的存储位置移动一个像素,如图5所示,直到部分范围[-2,+2]中的SAD的计算完成。
只要在当前搜索区域存储单元3中的12×12下级搜索区域的存储位置被移动一个像素,第一基本搜索单元51就计算第一4×4下级基本块与移动了一个像素的12×12下级搜索区域中的第一4×4下级基本块相应的区域的SAD。此时,第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54使用同样的方法计算SAD。
只要具有范围[-2,+2]的下级搜索区域上的SAD的计算完成,第一基本块存储单元41就分离出与第一8×8下级块不同的另一个8×8下级块,即,来自存储在宏块存储单元1中的宏块的第二8×8下级块、第三8×8下级块以及第四8×8下级块的任意一个,从所分离的另一个8×8下级块中分离出一个第五4×4下级基本块,并且保存所分离的第五4×4下级基本块,直到该宏块上的搜索结束。使用类似的方法,第二基本块存储单元42、第三基本块存储单元43以及第四基本块存储单元44也保存第六4×4下级基本块,第七4×4下级基本块以及第八4×4下级基本块。
SAD合并单元8合并由第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54所计算的16个4×4下级基本块的SAD,来计算不同块单元的SAD。即,通过使用第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54所获得的4×4基本块的SAD,能够获得不同尺寸诸如8×4、4×8、8×8、16×8、8×16以及16×16的图像块的SAD。
图13所示是一个如图2所示的SAD合并单元的结构的框图。
在图13中,SAD合并单元8由四个同时接收两个SAD的多路复用器MUX、五个用于相加SAD的加法器,以及四个用于保存相加的SAD的寄存器阵列构成。
四个由第一基本搜索单元51、第二基本搜索单元52、第三基本搜索单元53以及第四基本搜索单元54同时计算的SAD分别输入到四个多路复用器MUX中,并且输出8×4SAD1、4×8SAD1、4×8SAD2、8×4SAD2以及8×8SAD1。在此,8×8SAD1存储在四个寄存器之一中,并且被用于下一个阶段,以便使得最终有可能快速计算H.264所要求的不同尺寸的块的SAD。由于最小数量的计算部件和存储部件被重复使用,根据本发明的快速运动估计装置能够被应用于具有小的尺寸和低功耗的移动芯片。
最佳运动估计块确定单元9从其SAD通过SAD合并单元8获得的不同块单元中确定执行最佳运动估计的模式的块。即,最佳运动估计块确定单元9参考由SAD合并单元8所计算的8×4、4×8、8×8、16×8、8×16以及16×16块的SAD的数目以及运动矢量的数据总量来确定执行最佳运动估计的模式的块。在此,确定执行最佳运动估计的块意味着确定不同尺寸的块诸如8×4、4×8、8×8、16×8、8×16和16×16中执行具有最小数据总量的运动估计的块。
根据本发明,由于与同步搜索单元相等数量的SAD被同时计算,就有可能利用不同尺寸的图像块来实现实时快速运动估计装置,即使输入的图像具有标准清晰度(SD)格式。另外,通过重复使用最小数量的计算部件和存储部件,根据本发明的快速运动估计装置能够被应用于具有小的尺寸和低功耗的移动的芯片。
当本发明参考所述实施方式被特别的表示和描述时,本领域技术人员应当理解的是可以作出一些不脱离由权利要求所限定的本发明的精神和范围的形式和细节的改变。
权利要求
1.一种快速运动估计装置,包括合并单元,用于合并从宏块所分离出的各个基本块的差,以便计算不同尺寸的块的差;以及最佳运动估计块确定单元,用于基于由所述合并单元计算的不同尺寸的块的差来确定执行最佳运动估计的块。
2.根据权利要求1所述的装置,其中所述差是SAD(绝对差的和)。
3.根据权利要求1所述的装置,进一步包括基本搜索单元,用于计算下列差,即,从宏块中提取的具有预定分辨率的各个基本块与从搜索区域中提取的具有预定分辨率的搜索区域中的对应于所述各个基本块的区域的差。
4.根据权利要求3所述的装置,其中所述基本搜索单元对于低于宏块的分辨率的分辨率计算差,并且基于对于低分辨率所计算的差,在所述搜索区域减小的情况下,对于与宏块相等的分辨率计算差。
5.根据权利要求4所述的装置,包括当前搜索区域存储单元,用于从该搜索区域中提取具有预定分辨率的搜索区域,并且存储所提取出的搜索区域;以及基本块存储单元,用于从所述宏块中提取具有预定分辨率的基本块,并且存储所提取的基本块,其中所述基本搜索单元计算下列差,即,存储在所述基本块存储单元中的各个基本块与存储在所述当前搜索区域存储单元的具有预定级的搜索区域中的对应于所述各个块的区域的差。
6.根据权利要求4所述的装置,包括当前搜索区域存储单元,只要在所述基本搜索单元中计算每个基本块的差,当前搜索区域存储单元就将所述搜索区域的存储位置移动一个像素,直到该搜索区域的差计算完成。其中所述基本搜索单元计算下列差,即,各个基本块与在移动一个像素的所述搜索区域中的对应于所述各个块的区域的差。
7.根据权利要求1所述的装置,其中所述SAD合并单元,用于合并从16×16的宏块所分离出的分别16个4×4基本块的SAD,以便计算8×4块、4×8块、8×8块、16×8块、8×16块以及16×16块的SAD。
全文摘要
提供一种快速运动估计装置,包括合并单元,用于合并从宏块中所分离出的各个基本块的差,以便计算不同尺寸的块的差;以及最佳运动估计块确定单元,用于基于由合并单元所计算的不同尺寸的块的差来确定执行最佳运动估计的块,因此有可能使用不同尺寸的图像块来实时地实现快速运动估计装置,即,使输入的图像信号具有标准清晰度(SD)格式。
文档编号H04N7/12GK1642281SQ20041010335
公开日2005年7月20日 申请日期2004年10月8日 优先权日2003年10月4日
发明者李在宪 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1