CN100471275C - 用于h.264/avc编码器的运动估计方法 - Google Patents

用于h.264/avc编码器的运动估计方法 Download PDF

Info

Publication number
CN100471275C
CN100471275C CN 200610113030 CN200610113030A CN100471275C CN 100471275 C CN100471275 C CN 100471275C CN 200610113030 CN200610113030 CN 200610113030 CN 200610113030 A CN200610113030 A CN 200610113030A CN 100471275 C CN100471275 C CN 100471275C
Authority
CN
China
Prior art keywords
pixel
search
data
residual
picture element
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
Application number
CN 200610113030
Other languages
English (en)
Other versions
CN1933600A (zh
Inventor
罗嵘
杨春雷
杨华中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING HUAXIA DENTSU TECHNOLOGY CO LTD
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN 200610113030 priority Critical patent/CN100471275C/zh
Publication of CN1933600A publication Critical patent/CN1933600A/zh
Application granted granted Critical
Publication of CN100471275C publication Critical patent/CN100471275C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明属于用于H.264/AVC编码器的运动估计方法,其特征在于,把整数运动估计分为粗糙层和精细层,依次分别估计;然后通过一个输入分别为参考帧数据和粗糙层运动向量的整数象素数据输入结构并行的进行精细层运动估计和半象素插值,接着,依次进行半象素运动估计和1/4象素运动估计,从而通过粗糙层运动估计得到的最佳预测模式下其最小残差对应的运动向量来计算最终的最小残差和其对应的最终运动向量。实践证明,本发明提出的方法可以节省64.5%的计算时间。

Description

用于H.264/AVC编码器的运动估计方法
技术领域
本发明涉及一种运动估计的方法,特别是涉及一种用于H.264/AVC编码器的快速运动估计方法的硬件实现。
背景技术
H.264/AVC标准是由国际电信联盟电信标准化部ITU-T的VCEG(视频专家组)和国际标准化组织ISO的MPEG(运动图像专家组)联合开发的面向低码率视频通信应用的视频压缩标准,但是其优异的压缩性能使得它的作用并不仅仅局限于此,该标准在数字电视广播、视频实时通信、网络视频流媒体传递以及多媒体短信等方面都将发挥重要作用,近年来更是得到了广泛地关注和研究。H.264/AVC标准对于运动图像的压缩能力很大程度上归因于它所采用的运动估计算法,即:将16*16的象素块定义为宏块(MB),在编码时每个宏块都可以被划分为16*16、16*8、8*16、8*8、8*4、4*8或者4*4的7种大小、形状不同的子块(block),这种子块的划分方式称为预测模式。在编码时从视频帧序列中选取部分帧图作为参考帧,并以宏块为单位对这些参考帧的象素数据完全编码;而在编码其他非参考帧时,也以宏块为单位进行编码,方法如下。编码时首先通过搜索、对比,确定各预测模式下当前宏块中各子块在参考帧中对应的最相似块,求出各子块在当前帧的位置与其最相似块在参考帧的位置之间的位移——称为运动向量,以及当前子块与相似块相同位置象素之间的差值——称为残差,最后只需编码根据各预测模式对应的编码代价(编码后码流的大小)选择的最佳预测模式及其对应的运动向量和残差数据。将上述运动估计策略配合整数离散余弦变换及熵编码就能大大降低运动图像的数据量。在H.264/AVC运动估计过程中,必须考虑所有预测模式的编码代价,即针对每一宏块,必须计算其7种预测模式对应的41个子块的运动向量和残差数据;而且,运动向量的精度必须是1/4象素单位。
搜索当前宏块中各子块在参考帧中最相似块的过程,称为运动估计。运动估计时需要在参考帧中确定一个搜索当前子块最相似块的搜索范围——称为搜索区域。最精确的实现方式为全局搜索方法:在搜索区域内以单位象素为搜索步长逐点计算当前子块与搜索区域子块的相似度(通常根据两个象素块之间的象素差的绝对值之和SAD衡量),确定相似度最大(SAD最小)的块为最相似子块——称为整数象素运动估计;以1/2象素单位为步长,搜索当前子块与确定的最相似子块周围的1/2象素搜索区域,确定最佳1/2象素相似块——称为半象素运动估计;以1/4象素单位为步长,搜索当前子块与确定的最佳1/2象素相似块周围的1/4象素搜索区域,确定最佳1/4象素相似块——称为1/4象素运动估计;最终确定预测模式及其对应的运动向量和残差数据。上述过程是顺序进行的。
全局搜索方法虽然能够得到最佳的运动估计结果,但是其计算量是惊人的,而且需要频繁的访问存放参考帧的存储器,需要很长的计算时间。而H.264/AVC标准应用于视频通信、数字广播、网络电视流媒体传输等领域,对实时性的要求很高,这样大的计算量和计算时间无法满足这一要求。因此,实用的H.264/AVC编码器需要采用快速运动估计方法。
发明内容
本发明的目的在于提供一种硬件实现的部分并行化的运动估计方法,该方法能满足视频通信类应用的实时性要求,减少对存储器的访问次数,提高H.264/AVC编码器的工作频率。
本发明所述的方法的思路在于,采用分层搜索的策略实现H.2***估计器中的整数象素运动估计,从而使得整数象素运动估计和分数运动估计可以部分并行的执行,提高了运动估计的处理速度。本发明所述的整数运动估计和分数运动估计的部分并行指的是,将整数运动估计分为粗糙层整数象素运动估计和精细层整数象素运动估计两层,两层顺序执行;将分数运动估计分为半象素运动估计和1/4象素运动估计两层,两层顺序执行;H.264/AVC运动估计器首先执行粗糙层整数象素运动估计,然后并行执行精细层整数象素运动估计和半象素运动估计中的半象素插枝计算操作,最后执行1/4象素运动估计。
本发明所述的***的思路在于,根据本发明所述运动估计方法所处理数据的大小和类型的不同,采用了不同的存储器策略,减少了对外部存储器的访问量,实现了一个基于硬件的并行化完成H.264/AVC运动估计的***。本发明所述的存储器策略,将在下文的实施例中给出详细说明。
本发明的特征在于该方法是在一块数字集成电路芯片内依以下步骤实现的:
用于H.264/AVC编码器的运动估计方法,其特征在于,该方法是在一块数字集成电路芯片内依以下步骤实现的:
步骤(1),把运动图像以帧为单位输入当前帧存储器,该当前帧存储器以宏块为单位把当前宏块输入当前宏块存储器;把符合H.264/AVC视频编码标准的视频图像以帧为单位输入参考帧存储器;
步骤(2),粗糙层数据预处理器按以下步骤进行粗糙层数据预处理:
步骤(2.1),第1数据输入缓存器从当前宏块存储器中读取32位当前宏块数据;第2数据输入缓存器从参考帧存储器中读取32位搜索区域数据;
步骤(2.2),步骤(2.1)中所述的两个数据输入缓存器各自把4个连续输入的32位数据合并成一个128位数据输出:第1数据输入缓存器输出的128位数据送到第1均值滤波器阵列,第2数据输入缓存器输出的128位数据送到第2均值滤波器阵列;
步骤(2.3),步骤(2.2)中所述的两个均值滤波器阵列同时获取粗糙层当前宏块数据和粗糙层整数运动估计搜索区域数据,上述获取的粗糙层当前宏块数据和粗糙层整数运动估计搜索区域数据每次输出均为64位;
其中,粗糙层整数运动估计搜索区域中的每个象素用以下公式求得:
Pelc=(Pel00+Pel01+Pel10+Pel11)/4,
Pelc表示粗糙层的一个象素;
Pel00、Pel01分别表示原始参考帧搜索区域第2*n行第2*m、第2*m+1个象素,Pel10、Pel11分别表示原始参考帧搜索区域第2*n+1行第2*m、第2*m+1个象素,n、m在[0,23]之间,从而得到一个48*48位的粗糙层运动估计的搜索区域,该宏块的搜索区域中心位于当前该宏块左上角象素;
步骤(2.4),第1、第2两个均值滤波器阵列分别依次向当前宏块均值滤波后数据存储器阵列和搜索区域移位寄存器阵列输出64位的数据,这两个阵列中的每个存储器存放一个8位象素数据;
步骤(3),粗糙层运动估计器按以下步骤进行粗糙层运动估计,并输出预测模式以及相应运动向量:
步骤(3.1),粗糙层数据预处理器向粗糙层运动估计器中的8位2*2块的残差计算器输入当前宏块数据及粗糙层运动估计搜索区域数据,残差用SAD表示;
步骤(3.2),所述8位2*2块残差计算器采用加法树结构在一个时钟周期内计算出4*4、4*8、8*4、8*8、8*16、16*8和16*16共7种预测模式对应的所有2*2、2*4、4*2、4*4、4*8、8*4和8*8子块对应的残差;
步骤(3.3),最相似块搜索器在每个时钟来临时比较从所述8位2*2块残差计算器得到的各种预测模式下当前所有子块的残差与当前时钟前得到的最小残差的大小,保存更小的残差数据,若当前时钟得到的残差更小,则根据当前相似块的位置更新最小残差对应的运动向量;循环执行步骤(3.1)~(3.3),直到粗糙层搜索区域搜索完毕,得到最小残差及其相应的运动向量;
步骤(3.4),在步骤(3.3)执行结束后,先把上述各种预测模式下各自对应的各子块的最小残差相加,分别得到每种预测模式下的残差和;其次,比较7个残差和,选择其中残差和最小的预测模式作为最佳模式;
步骤(3.5),运动向量均值器根据步骤(3.4)得到的最佳预测模式,把该模式对应的各子块的运动向量相加,取其均值,得到粗糙层运动估计的运动向量;
步骤(4),用并行处理器按以下步骤并行执行精细层运动估计和半象素插值:
步骤(4.1),粗糙层运动估计器和参考帧存储器依次分别把粗糙层运动估计的运动向量和参考帧数据送入整数象素输入缓存器;
步骤(4.2),所述整数象素输入缓存器把24*24的精细层搜索区域数据输入到精细层搜索区域移位寄存器阵列,而所述移位寄存器阵列再把该精细层搜索区域数据送入精细层运动估计器,依次按以下步骤计算出精细层最小残差及相应的运动向量:
步骤(4.2.1),把所述精细层搜索区域数据、相应的当前宏块数据送入一个精细层残差计算器,计算出4*4、4*8、8*4、8*8、8*16、16*8以及16*16块的残差:
所述残差计算器由4个各自的元素为8*8个残差数据构成的子残差计算器构成;在该子残差计算器中,同一行每4个残差数据通过加法树相加得到一个4*1子块的残差,4个4*1子块的残差相加得到一个4*4子块的残差,在一个时钟周期内计算出所有4*4块的残差,再通过加法树结构,计算出当前宏块所有子块对应的残差,循环执行,一直到精细层搜索区域全部处理完毕;
步骤(4.2.2),最相似搜索器在每个时钟来临时比较步骤(4.2.1)所述的时钟周期得到的残差与此时钟周期前得到的最小残差的大小,若此时钟周期得到的残差更小,则根据当前相似块的位置更新最小的残差对应的运动向量;循环执行,直到精细层搜索区域搜索完毕,得到最小残差及其相应的运动向量;
步骤(4.3),所述整数象素输入缓存器同时把30*30的半象素搜索区域数据送入半象素插值滤波器阵列,所述半象素插值滤波器采用H.264/AVC标准指定的6抽头FIR滤波器,所述半象素插值滤波器阵列使用4个水平半象素插值滤波器和8个垂直半象素插值滤波器,该4个水平半象素插值滤波器使用一行整数象素中的6个象素插值,该8个垂直半象素插值滤波器使用一列整数象素或一列半象素中的六个象素插值,插值公式为:
Pelh=round((Pel0-5Pel1+20Pel2+20Pel3-5Pel4+Pel5)/32),
其中,round()表示取整,下标h表示半象素,下标0~5表示产生半象素的6个整数象素和半象素
所述半象素插值滤波器阵列通过半象素插值存储器I输出整数象素,同时通过A、B、C三个半象素存储器分别输出水平、垂直半象素以及夹于水平和垂直两个插值之间的半象素之值;
步骤(4.4),用并行计算结束判决器判决精细层运动估计和半象素插值滤波计算是否结束,如已结束,发出结束信号;
步骤(5),用半象素运动估计器以及1/4象素运动估计器按以下步骤依次进行半象素运动估计和1/4象素运动估计:
步骤(5.1),用半象素运动估计器进行半象素运动估计,并输出半象素最小残差和相应的半象素运动向量,其步骤依次如下:
步骤(5.1.1),精细层运动估计器向半象素运动估计器中的片上存储器接口输入最小残差及相应的运动向量;所述三个半象素存储器A、B、C向所述片上存储器接口输入半象素A、半象素B及半象素C;
步骤(5.1.2),所述片上存储器接口通过3个半象素输入缓存器把A、B、C三类半象素分别送往三个半象素搜索区域存储器后,再分别用3个半象素运动估计器按以下步骤对A、B、C三类半象素进行运动估计:
首先,每个半象素运动估计器用一个4*4子块的残差计算器计算当前宏块的4*4子块与半象素搜索区域4*4子块的残差;
然后,用一个最相似块选择器对照不同类型搜索区域得到的最相似子块的残差,选择其中最小的残差与精细层搜索得到的最小残差对比,得出更小的残差对应的相似块为半象素运动估计的最相似块,得出其半象素残差及相应的运动向量;
步骤(5.2),用1/4象素运动估计器进行1/4象素运动估计,按以下步骤得到1/4象素的最小残差及相应的1/4运动向量:
步骤(5.2.1),把从半象素运动估计器输出的半象素最小残差以及相应的运动向量、半象素插值存储器I得到的整数象素I、半象素插值存储器A、B、C得到的半象素A、B、C以及当前宏块存储器的当前宏块都输入1/4象素插值存储器接口;
步骤(5.2.2),1/4象素插值计算器阵列从所述1/4象素插值存储器接口输入的要计算的一个1/4象素所相邻的两个半象素或者一个半象素和一个整数象素求均值得到该1/4象素,可得到12种1/4象素,但只计算所述半象素运动估计器得到的半象素最相似块的象素周围的8种1/4象素;
步骤(5.2.3),所述1/4象素插值计算器阵列把所得的所有1/4象素分别存入8个1/4象素搜索区域存储器,并分别送入8个1/4象素运动估计器;
步骤(5.2.4),8个1/4象素运动估计器分别用一个4*4块的残差计算器分别从所述8个1/4象素搜索区域存储器得到1/4象素块和预先内存的当前宏块的4*4子块之间的残差;
步骤(5.2.5),一个最相似块选择器选择步骤(5.2.4)中所述8种搜索区域中残差最小的作为最佳1/4象素相似块,并计算相应的运动向量,再把该残差与半象素搜索得到的最小残差相比,选择最小的残差对应的相似块作为H.264/AVC运动估计器生成的最终选择的最佳相似块;
步骤(6),用一个最终运动向量计算器计算H.264/AVC运动估计器生成的最终运动向量MVf,并存入运动估计结果存储器:
MVf=8MVc+4MVp+2MVh+MVq
其中,c、p、h、q对应的运动向量分别表示粗糙层、精细层、半象素和1/4象素运动估计器得到的运动向量。
本发明提出的H.264/AVC运动估计方法可以极大的提高运动估计的计算速度。与全局搜索方法相比,采用相同的搜索区域时,本发明提出的H.264/AVC运动估计方法可以节省64.5%的计算时间。本发明提出的H.264/AVC运动估计***各计算单元的计算时间与全局搜索方法的比较如下表所示。
 
整数象素运动估计 半象素运动估计 1/4象素运动估计 总计
全局搜索 2480 484 168 3132
新方法 744 236 168 1148
相对比较 30.0% 48.8% 100% 35.5%
表中的整数数据表示两种方法完成相同计算所用的时钟数,百分比表示本发明提出的运动估计方法完成相同计算所用时钟数占全局搜索方法的百分比。
附图说明
本说明书中的附图仅为图示的目的而提供,并不对本发明的内容产生任何限制,其中:
图1示出了经典的全局搜索运动估计器的流程图;
图2a示出了本发明所述方法的运动估计器的工作原理图;
图2b示出了本发明提出的运动估计方法的工作流程图;
图2c示出了实现本发明所述运动估计器***工作的状态转移图;
图3示出了本发明提出的H.264/AVC运动估计器***的结构框图;
图4a示出了本发明采用的运动向量预测方法;
图4b示出了本发明中粗糙层数据预处理器的简单框图;
图4c示出了本发明中获取粗糙层整数象素运动估计搜索区域的方法;
图5a示出了本发明中粗糙层整数象素运动估计器的简单框图;
图5b示出了本发明中粗糙层运动估计器的SAD计算器的硬件结构;
图5c示出了本发明中粗糙层运动估计器的SAD计算器中计算一个2*2子块SAD的硬件结构;
图6a示出了本发明中精细层整数象素运动估计搜索区域与半象素插值所需整数象素的关系;
图6b示出了本发明中半象素插值和精细层整数象素运动估计并行处理的流程;
图6c示出了本发明中并行处理器的简单框图;
图6d示出了本发明采用的插值滤波器阵列结构;
图6e示出了本发明中精细层搜索区域数据的存储策略;
图6f示出了本发明中精细层整数象素运动估计器简单框图;
图6g示出了SAD计算器中计算8*8、8*4、4*8和4*4块的SAD的硬件结构;
图6h示出了本发明中并行计算过程的时序示意图;
图7a示出了整数象素与半象素、1/4象素的位置关系;
图7b示出了本发明中半象素运动估计器的简单框图;
图7c示出了本发明中1/4象素运动估计器的简单框图;
图7d示出了本发明中由整数象素和半象素产生1/4象素的对应关系。
具体实施方式
本发明的显著特点在于,根据H.264/AVC运动估计的工作原理、运动估计过程中整数运动估计和分数运动估计的数据相关性以及视频通信类应用对压缩图像质量的要求,提出了部分并行的运动估计方法。本发明提出的运动估计方法使得整数运动估计和分数运动估计可以部分地并行执行,从而达到提高运动估计速度的目的。
本发明的另一特点在于,采用了一种运动向量预测值生成方法和合理的搜索范围,使得本发明所述的运动估计器***在整数运动估计时相邻宏块可以共享参考帧的搜索区域数据,在半象素运动估计时当前宏块的各子块可以共享参考帧的搜索区域数据,从而达到降低存储器访问次数的目的。
本发明的第三个特点在于,采用了一种可重用的硬件结构,该结构在半象素和1/4象素运动估计时被用来计算SAD,从而降低了半象素运动估计和1/4象素运动估计的硬件资源开销。
本发明的第四个特点在于提出了一种数字电路***,该***实现了本发明所提出的并行化运动估计方法。该***可以从当前帧和参考帧存储器中读取数据,快速的完成运动估计。
下面将根据附图对本发明的具体实施方式进行详细说明。
图1示出了经典的全局搜索运动估计器的流程图。H.264/AVC标准中运动估计可以分为两个阶段:整数象素运动估计和分数象素运动估计。其中分数象素运动估计又包括半象素运动估计和1/4象素运动估计。不同精度级别的运动估计又包括数据预处理和最相似块搜索两个环节。数据预处理环节的功能在于:根据当前处理的宏块或者子块的位置以及运动估计的搜索精度,产生相应的搜索区域图像数据,这些数据可能是需要从存放参考帧的外部存储器中读取,也可能需要从参考帧存储器中读取数据后通过插值计算得到,但都必须在最相似块搜索环节之前得到。最相似块搜索环节的功能在于:在数据预处理环节产生的搜索区域中搜索当前宏块或者子块的最相似块。计算当前精度运动估计的搜索区域需要用到更粗糙精度的运动估计的结果,由于整数象素运动估计的搜索范围比较大,最后得到的当前宏块各子块的运动向量也比较分散,因此不能提前估计当前宏块分数象素运动估计搜索区域的位置。在这种数据相关性的限制下,全局搜索运动估计必须顺序进行。因此全局搜索运动估计方法的流程图(图1)也是该方法执行的状态转移图。
熟悉H.264视频压缩编码标准的人都清楚,如果整数运动估计的搜索区域比较小,那么在其基础上进行的分数运动估计也会限定在有限的范围内,这样就可以提前计算该范围内的半象素数据以产生半象素搜索区域,从而在付出增加少许计算量和存储空间的代价后,提高整个运动估计的并行性和计算速度。而在视频通信等应用中,处理的视频图像的运动速度并不快,变化范围也不大,甚至大部分图像(背景)都是完全不变的,所以运动估计的搜索范围并不需要很大。本发明正是基于上述考虑,提出了一种部分并行的H.264/AVC运动估计方法。图2a示出了本发明提出的运动估计方法的工作原理图。本发明提出的方法在整数象素运动估计时采用了分层搜索的策略:分为粗糙层运动估计和精细层运动估计两层。这样,在粗糙层运动估计结束后,精细层运动估计的搜索区域会小很多;此时,直接计算精细层运动估计搜索区域及其周围的半象素,相比于在精细层运动估计完成后再根据各个子块的运动向量分别计算各子块的半象素搜索区域,要节约大量时间,因此更易于满足实时性。另外,精细层搜索和半象素插值计算都需要读入参考帧的原始图像数据,而且两者需要的大部分图像数据是相同的。基于上述考虑,本发明提出的方法在粗糙层搜索之后,同时进行精细层运动估计和半象素插值计算。即粗糙层整数运动估计结束后,精细层运动估计和半象素插值计算并行执行(即图2a中所示的并行结构),两者均完成后才开始半象素运动估计。半象素运动估计结束后,依次进行1/4象素插值计算和运动估计。最后,根据各个精度的运动估计得到的运动向量计算最终的运动向量和相应的残差数据。
图2b示出了本发明提出的运动估计方法实现的流程图,分如下步骤依次执行:
1.根据处理的图像特征初始化运动估计***的参数,包括初始化帧图宽高、初始化运动估计***各模块状态等;
2.输入当前宏块数据及其对应的粗糙层运动估计搜索区域数据,并通过均值滤波计算粗糙层数据,即粗糙层图像数据预处理;
3.粗糙层运动估计,得到当前宏块的预测模式和4象素精度的运动向量,该向量是当前宏块中各子块运动向量的均值;
4.并行执行精细层运动估计和半象素插值计算,得到整数象素精度的运动向量和半象素搜索区域数据;
5.半象素运动估计,得到半象素精度的运动向量;
6.1/4象素插值计算和运动估计,得到1/4象素精度的运动向量;
7.根据上述各个精度的运动估计结果计算最重的1/4象素精度的运动向量和相应的残差数据;
8.将7中得到的结果存入存储器。
其中,并行执行模块实现方式如下所述:
A.输入参考帧整数象素数据时,进行半象素插值计算。
B.同时判断整数象素是否为精细层运动估计的搜索区域数据,如果不是,则不进行操作;如果是,则将数据存入移位寄存器,当所有搜索区域数据都输入后,开始精细层运动估计。
C.当精细层运动估计和半象素插值计算都结束后,整个并行结构操作完成。
如图2a所示,H.264/AVC编码器***从整体上看是顺序执行的,但是“精细层整数象素运动估计”单元和“半象素插值”单元是在“整数象素输入”单元的基础上并行的,所以,把这三个模块合并到一个状态,即可得到本发明提出的运动估计器***硬件实现的状态转移图,如图2c所示。图中,ME_reset为高时整个运动估计器清零,不工作;ME_reset为低时,如果Int_Pred_en为高,表示编码器选择了帧间预测模式。当CMB_start为高时,表明可以处理当前宏块,运动估计器从空闲状态转入工作状态。Data_Pretreat_fin为高表示粗糙层运动估计需要的数据已经准备好,可以开始搜索粗糙层最相似块。Int_4_Pred_fin为高时,表示粗糙层运动估计已经结束,开始进行并行计算;在完成了整数象素输入、半象素插值计算和精细层运动估计之后,Mixed_Operation_fin为高,运动估计器开始进行分数象素运动估计。HME_fin为高时表示半象素运动估计的完成;Quat_ME_fin为高时表示1/4象素运动估计和最终运动向量计算的完成。当1/4象素运动估计完成时,如果Int_Pred_en和CMB_start为高,则继续对下一宏块进行运动估计;否则,整个运动估计器转入空闲状态。
图3示出了本发明提出的H.264/AVC运动估计器***的结构框图。其中,粗糙层数据预处理器、粗糙层运动估计器、并行结构整数象素数据输入结构、精细层运动估计器、半象素插值计算阵列、半象素运动估计器、1/4象素运动估计器和最终运动向量计算器为H.264/AVC运动估计器***的数据处理单元;当前帧/参考帧存储器、当前宏块存储器、粗糙层预处理结果存储器、精细层运动估计搜索区域存储器、半象素插值存储器、半象素运动估计搜索区域存储器和运动估计结果存储器是H.264/AVC运动估计器***的数据存储单元。上述数据处理和存储单元的具体硬件实现将详述如下:
1.粗糙层数据预处理器
在视频压缩技术中,通常通过当前宏块的相邻块的运动向量预测当前宏块的运动向量,然后以此运动向量预测值为搜索区域中心,输入参考帧中搜索区域的图像数据,进行最佳相似块的搜索。这种方法针对当前帧所有宏块进行运动向量预测,增加了计算量;同时,由于当前帧所有宏块的搜索区域中心都不相同而且分布没有规律,无法预测,所以必须分别输入每一宏块的搜索区域数据,增加了对存储器的访问量。本发明在粗糙层整数运动估计时采用(0,0)作为当前宏块各子块的运动向量预测值,即以当前宏块的坐标(当前宏块左上角象素在当前帧中的位置)作为该宏块的搜索区域中心,克服了上述传统运动向量预测方法的不足。本发明采用的方法使得同一宏块中各个子块的搜索区域数据可以一起读入,交叠部分不需重复输入;而且相邻宏块的大部分搜索区域数据可以共享,减少了对存储器的访问。图4a示出了本发明采用的运动向量预测方法。以搜索区域为48*48为例。如图4a所示,处理宏块1(MB1)时有9个MB构成参考帧的搜索区域,其中6个在经过简单移位后可以在处理MB2时使用,这将节省2/3的存储器访问量。
图4b示出了粗糙层数据预处理器的简单框图。该预处理器包括:两个数据输入缓存器,两个均值滤波器阵列,2个搜索区域移位寄存器阵列A、B,一个当前宏块均值滤波后数据存储器。其中,32bit当前宏块数据和32bit搜索区域数据分别从当前帧存储器和参考帧存储器中读取,两个数据输入缓存器将4个连续输入的32bit数据合并为1个128bit数据输出到均值滤波器阵列;均值滤波器阵列用于获取粗糙层整数运动估计搜索区域数据和粗糙层当前宏块数据,输出为64bit;压缩后的当前宏块存放在当前宏块均值滤波后的数据存储器中,粗糙层搜索区域数据被分为2块存放在搜索区域移位寄存器阵列A和B中。搜索区域移位寄存器阵列A和B分别是16行24列和8行24列的移位寄存器阵列,每个寄存器可以存放一个8bit象素数据,当前宏块均值滤波后的数据存储器是一个8*8的寄存器阵列,每个寄存器可以存放一个8bit象素数据,并且可以被直接读写,上述存储器构成了图3中所示的粗糙层预处理结果存储器。
图4c中示出了本发明中获取粗糙层整数运动估计搜索区域的方法,参考帧中每个2*2块的4个原始象素均值滤波得到一个粗糙层搜索区域象素。在本发明中,粗糙层运动估计的搜索区域为48*48的块均值滤波器的计算公式为
Pelc=(Pel00+Pel01+Pel10+Pel11)/4
其中下标c表示生成粗糙层象素的下标,00和01表示原始参考帧搜索区域第2*n行第2*m、第2*m+1个象素的下标,10和11表示原始参考帧搜索区域第2*n+1行第2*m、第2*m+1个象素的下标(n、m在[0,23]之间)。
2.粗糙层运动估计器
如上文所述,H.264视频压缩标准的运动估计中,存在7种预测模式,其中编码代价最低的被称之为最佳预测模式。通常,在运动估计结束时,通过编码代价确定最佳预测模式,编码代价函数为
Jmode(Mode/λmode)=SAD(Mode)+λmode*R(Mode)
其中SAD(Mode)和R(Mode)分别为图像残差数据和其他信息(包括运动向量)的编码代价,λmode是拉格朗日乘子。熟悉视频压缩技术的人都知道,残差数据的编码代价在整个编码代价中起主导作用,因此通常忽略其他信息的编码代价。但是如果等到1/4象素运动估计结束再根据SAD(Mode)选择最佳预测模式,计算量很大,因此在本发明中,粗糙层整数运动估计结束后将确定运动估计的最佳预测模式,这将极大的降低H.264/AVC运动估计的计算量。同时,粗糙层运动估计还得到当前宏块中各子块的运动向量。在精细层运动估计时,如果以这些运动向量为搜索区域中心,则每个子块的搜索区域数据都得分别输入,实际上输入的各子块搜索区域数据很多都是重复的,这增加了对参考帧存储器的访问量。因此,在本发明中将当前宏块各子块的运动向量求均值作为整个宏块精细层整数运动估计的搜索区域中心,这使得精细层运动估计时各个子块的搜索区域可以一起读入,从而节省了访问参考帧存储器的时间。
图5a示出了本发明中粗糙层运动估计器的简单框图。该运动估计器输入经过预处理后的当前宏块和搜索区域数据,输出为当前宏块各子块运动向量的均值和预测模式。该运动估计器包括:一个SAD计算器,最相似块搜索器,一个预测模式选择器和一个计算当前宏块各子块运动向量均值的运动向量均值器。
图5b示出了本发明中粗糙层运动估计SAD计算器的硬件结构。图中SAD_n_m_l表示计算得到的SAD,其中n和m分别表示SAD对应的象素块的列数和行数,1表示同样行数列数下SAD的序号。粗糙层运动估计之前,图中每个圆圈(称为PE)均存放了一个粗糙层当前宏块象素;当粗糙层运动估计开始后,每个时钟周期都有一行8个须处理的搜索区域象素输入并被传递到相应列的8个PE,计算当前宏块象素与搜索区域象素的绝对值之差;包围同一行2个PE的虚线矩形框为加法树,得到2*1块的SAD;计算结果传送到右边的小矩形中,该矩形用来将本行2*1SAD与其上一行的2*1SAD相加并保存计算结果,同时还可起到延时、同步的作用;每2个2*1SAD相加得到一个2*2块的SAD。图5c示出了本发明中粗糙层运动估计器的SAD计算器中计算一个2*2子块SAD的硬件结构,其中:Pelc和Pelr分别表示当前宏块和搜索区域的象素,它们在一个PE里相减并求绝对值;两个PE的计算结果相加得到了一个2*1的SAD,并存储在右侧的存储器中;两个存储器中的2*1SAD在加法器中相加得到一个2*2的SAD。通过这种结构,在一个周期内可计算出所有2*2子块的SAD;再加上PE阵列下方的加法树,可计算出粗糙层当前宏块的所有2*2、2*4、4*2、4*4、4*8、8*4和8*8子块对应的SAD;下一个时钟到来时,输入新的一行搜索区域数据,继续重复上述过程……。可见,该硬件结构可以在一个时钟中计算出4*4、4*8、8*4、8*8、8*16、16*8和16*16等7种预测模式对应的所有2*2、2*4、4*2、4*4、4*8、8*4和8*8子块对应的SAD。
最相似块搜索器完成以下功能:在每个时钟来临时比较当前时钟得到的所有子块的SAD与当前时钟前最小SAD的大小,保存更小的SAD数据到存放最小SAD的寄存器中;如果当前时钟的得到的SAD更小,则根据当前相似块的位置更新最小SAD对应的运动向量。上述操作循环执行直到粗糙层搜索区域搜索完毕,此时得到最小SAD及其对应的运动向量。
预测模式选择器在最相似块搜索器停止工作后开始执行,它首先把4*4、4*8、8*4、8*8、8*16、16*8和16*16等7种模式对应的各子块的最小SAD分别相加,分别得到7种模式下的SAD之和,然后比较7个SAD之和,选择SAD之和最小的预测模式作为最佳预测模式。运动向量均值器根据预测模式选择器选择的最佳预测模式,将该模式对应的各子块的运动向量相加,然后取均值,得到粗糙层运动估计的运动向量。
3.精细层运动估计和半象素插值的并行处理器
图6a示出了精细层运动估计搜索区域与半象素插值所需整数象素的关系。黑点表示当前宏块对应的精细层运动估计搜索区域中心的16*16的块,和灰点一起构成24*24的精细层搜索区域,当前宏块各子块的最相似块必然在该搜索区域内。由于半象素运动估计的搜索区域由精细层整数运动估计得到的运动向量决定,而计算半象素的6抽头有限响应数字滤波器(FIR滤波器)需要半象素两侧各3个整数象素,所以计算半象素搜索区域图像数据所需的整数象素为以精细层运动估计搜索区域为中心的大小为30*30的象素块(由黑、灰、白三种象素点构成)。精细层运动估计搜索区域与半象素插值所需整数象素有相当大一部分是重合的,这是本发明提出并行结构运动估计方法的重要前提。
图6b示出了本发明中半象素插值和精细层运动估计的并行处理流程。粗糙层运动估计结束后,根据得到的运动向量输入30*30的参考帧原始数据进行半象素插值,同时精细层运动估计的搜索区域数据保存。输入精细层运动估计的搜索区域数据和半象素插值计算并行进行;精细层运动估计搜索区域数据全部输入后,精细层运动估计和半象素插值计算并行进行;判决模块确定两者都结束后,开始进行半象素运动估计。而根据H.264视频压缩标准,半象素运动估计和1/4象素运动估计将用到26*26的半象素块和整数象素块,因此,将半象素插值计算产生的26*26半象素和相应的整数象素存放在半象素插值存储器中,以便于在半象素运动估计和1/4象素运动估计中使用这些数据。
图6c示出了本发明中并行处理器的简单框图。该并行处理器包括:一个整数象素输入缓存器,一个半象素插值滤波器阵列,半象素数据存储器I、A、B、C,一个精细层运动估计搜索区域存储器、一个精细层运动估计器和一个并行计算结束判决器。其中,整数象素输入缓存器将输入的32bit象素数据转换为240bit象素数据输出到半象素插值滤波器阵列和精细层运动估计搜索区域存储器。
图6d示出了本发明采用的插值滤波器阵列结构。该结构使用了4个水平滤波器和8个垂直滤波器,水平滤波器使用一行整数象素中的6个象素插值,垂直滤波器使用一列整数象素中的6个象素插值。图中所画的圆形、三角形、五星为三类不同的半象素,分别存入C、B、A三个半象素数据存储器;而正方形代表的整数象素则存入半象素数据存储器I,即图中虚线框包围的象素均存入半象素数据存储器。本发明采用了H.264/AVC标准规定的6抽FIR滤波器,插值公式为
Pelh=round((Pel0-5Pel1+20Pel2+20Pel3-5Pel4+Pel5)/32)
其中,函数round()表示取整操作,下标h表示半象素,下标0~5表示产生半象素的6个整数象素或者半象素。
图6e示出了本发明中精细层搜索区域数据的存储策略。精细层运动估计的搜索区域为24*24的块,数据被分为3块相等的块(8*24)Top、Middle和Bottom,存放在4个移位寄存器阵列T、M1、M2和B中,其中Middle块被同时存放在M1和M2中,T、M1、M2和B则构成了图3和图6c中所示的精细层运动估计搜索区域存储器。
图6f示出了本发明中精细层运动估计器的简单框图,本发明中精细层运动估计器包括:一个SAD计算器和一个最相似块搜索器。图6g示出了SAD计算器中计算8*8、8*4、4*8和4*4块的SAD的硬件结构,图中SAD_n_m_l表示计算得到的SAD,其中n和m分别表示SAD对应的象素块的列数和行数,1表示同样行数列数下SAD的序号。精细层运动估计之前,图中每个圆圈(称为PE)均存放了一个当前宏块象素;当精细层运动估计开始后,每个时钟周期都有一行8个搜索区域象素输入并被传递到同一列的8个PE,计算当前宏块象素与搜索区域象素的绝对值之差;包围同一行4个PE的虚线矩形框为加法树,得到4*1块的SAD;计算结果传送到右边的小矩形中,该矩形用来将本行4*1SAD与其上一行的4*1SAD相加并保存计算结果,同时还可起到延时、同步的作用;每4个4*1SAD相加得到一个4*4块的SAD。通过这种结构,在一个周期内可计算出所有4*4子块的SAD;加上合适的加法树,可计算出当前宏块所有子块对应的SAD;下一个时钟到来时,输入新的一行搜索区域数据,继续重复上述过程……。可见,该硬件结构结合本发明采用的上述移位寄存器阵列策略,可以在一个时钟内产生最佳预测模式对应的各子块的SAD。而整个SAD计算器由4个图6g所示的结构以及更多的加法树构成。
最相似块搜索器完成以下功能:在每个时钟来临时比较当前时钟得到的SAD与当前时钟前最小SAD的大小,保存更小的SAD数据到存放最小SAD的寄存器中;如果当前时钟的得到的SAD更小,则根据当前相似块的位置更新最小SAD对应的运动向量。上述操作循环执行直到粗糙层搜索区域搜索完毕,此时得到最小SAD及其对应的运动向量。
图6h示出了本发明中并行处理器工作的时序示意图。Mixed_en、HDP_en、SA_data_in_en和IME_en分别表示并行操作、半象素插值、精细层运动估计搜索区域输入和精细层整数象素运动估计4个模块的使能信号,在这些信号上还同时标识了使能有效的时间,即图中所示的CLK0、CLK216、CLK270和CLK345。Data_in_row_cnt是输入整数象素行数的计数器输出,并行处理器输入的整数象素为30*30的块,所以共有30行,计数器输出为0~29。SA_top_store_en、SA_middle_store_en和SA_bottom_store_en为存储精细层整数运动估计的搜索区域数据的4个移位寄存器阵列组的写使能信号。由于4个移位寄存器阵列中有两个M1和M2存放同样的数据,所以用同一个控制信号SA_middle_store_en控制。
4.半象素运动估计和1/4象素运动估计
图7a示出了整数象素(黑色点)与半象素(ABC)、1/4象素(1~12)的位置关系。在本发明中,不同位置的半象素和1/4象素分别构成不同的搜索区域,半象素运动估计器和1/4象素运动估计器分别搜索这些搜索区域中,寻找最相似块,然后通过比较不同搜索区域的最相似块的SAD确定最佳相似块及对应的运动向量。另外,由于半象素运动估计和1/4象素运动估计的计算时间主要花费在半象素和1/4象素搜索区域的数据输入上,而寻找最相似块则相对简单,所以本发明采用了一种节省资源的可重用硬件结构实现半象素运动估计和1/4象素运动估计。在本发明提出的H.264/AVC运动估计器中,不论粗糙层运动估计后选择的预测模式是哪一种,在半象素和1/4象素运动估计时,都以4*4子块为单位,计算当前子块与半象素或1/4象素搜索区域中各子块的相似度。循环16次完成当前宏块的所有4*4子块的最相似块搜索。最后再根据选用的预测模式,计算相应的子块的最相似块及其对应的运动向量。如图7a所示,需要搜索的半象素有A、B、C三种,而需要搜索的1/4象素有1~12中的8种,即图7a中半象素或整数象素周围的8个1/4象素。采用本发明的硬件结构,比同时并行计算当前宏块的所有子块与搜索区域的相似块的方法可以节省近90%的硬件资源,而计算时间则没有增加。
图7b示出了本发明中半象素运动估计器的简单框图。该运动估计器输入为A、B、C三类半象素搜索区域数据、整数象素运动向量和SAD,输出为半象素运动向量和SAD。本发明采用的这一电路包括:一个半象素插值存储器接口,三个用来存放A、B、C三类半象素搜索区域的存储器,三个用来进行半象素运动估计器和一个最相似块选择器。其中,半象素插值存储器接口用来产生半象素插值存储器A、B、C的地址信号和读数据使能信号,同时包括三个半象素输入缓存器用来暂存A、B、C三类半象素。一个半象素运动估计器包括一个4*4块SAD计算器,用来计算当前4*4子块与搜索区域4*4块的SAD。最相似块选择器完成以下功能:对比不同类型搜索区域得到的最相似子块的SAD;选择最小的SAD与精细层搜索得到的最小SAD对比,更小的SAD对应的相似块为半象素运动估计的最相似块。
图7c示出了本发明中1/4象素运动估计器的简单框图。该运动估计器输入为半象素运动估计的SAD和运动向量,以及A、B、C三类半象素和整数象素I,输出为1/4象素运动向量和SAD。本发明采用的这一电路包括:一个半象素插值存储器接口,一个1/4象素插值计算阵列,8个1/4象素搜索区域数据存储器,8个分别包括一个4*4块SAD计算器的1/4象素运动估计器和一个最相似块选择器。其中,1/4象素由相邻的两个半象素或者整数象素求均值得到,图7d示出了本发明中由整数象素和半象素生成1/4象素的对应关系。图7a所示的12种1/4象素中,选择半象素运动估计器得到的半象素最相似块的象素周围的8种1/4象素分别存入8个搜索区域存储器,并送入8个1/4象素运动估计器,由这8个1/4象素运动估计器中的4*4块SAD计算器分别计算这8种1/4象素块和当前4*4子块的SAD。最相似块选择器完成以下功能:选择8种搜索区域中SAD最小的作为最佳1/4象素相似块,并计算相应的运动向量;将该SAD与半象素搜索区域的SAD对比,选择最小的SAD对应的相似块作为H.264/AVC运动估计器***最终选择的最佳相似块。
5.最终运动向量计算器
H.264/AVC运动估计器***计算最终运动向量的公式如下:
MVf=8MVc+4MVp+2MVh+MVq
其中,下标f、c、p、h、q对应的运动向量分别表示整个运动估计器的最终运动向量和粗糙层、精细层、半象素和1/4象素运动估计器得到的运动向量。
6.H.264/AVC运动估计器***的存储器
当前帧/参考帧存储器由SRAM实现,必须可以存放CIF格式图像(352*288象素),通过***产生的地址信号和读信号从中读取当前帧或参考帧的图像数据。当前宏块存储器为16*16的寄存器阵列,每个寄存器单元可以存放8bit象素数据,并且可以被单独读写。运动估计结果存储器用来存放H.264/AVC运动估计器***产生的最佳预测模式及其对应的最终运动向量和残差数据。
尽管本发明是参照某些优选实施实例进行说明的,但应该谨记本发明的范围并不仅限于这些具体的实施方式。对于本发明所作的修改以及本发明的变型形式都落在本发明的设计思想与范围之内,本发明的涵盖范围在以下的权利要求中定义。

Claims (1)

1.用于H.264/AVC编码器的运动估计方法,其特征在于,该方法是在一块数字集成电路芯片内依以下步骤实现的:
步骤(1),把运动图像以帧为单位输入当前帧存储器,该当前帧存储器以宏块为单位把当前宏块输入当前宏块存储器;把符合H.264/AVC视频编码标准的视频图像以帧为单位输入参考帧存储器;
步骤(2),粗糙层数据预处理器按以下步骤进行粗糙层数据预处理:
步骤(2.1),第1数据输入缓存器从当前宏块存储器中读取32位当前宏块数据;第2数据输入缓存器从参考帧存储器中读取32位搜索区域数据;
步骤(2.2),步骤(2.1)中所述的两个数据输入缓存器各自把4个连续输入的32位数据合并成一个128位数据输出:第1数据输入缓存器输出的数据送到第1均值滤波器阵列,第2数据输入缓存器输出的数据送到第2均值滤波器阵列;
步骤(2.3),步骤(2.2)中所述的两个均值滤波器阵列同时获取粗糙层当前宏块数据和粗糙层整数运动估计搜索区域数据,上述获取的粗糙层当前宏块数据和粗糙层整数运动估计搜索区域数据每次输出均为64位;
其中,粗糙层整数运动估计搜索区域中的每个象素用以下公式求得:
Pelc=(Pel00+Pel01+Pel10+Pel11)/4,
Pelc表示粗糙层的一个象素;
Pel00、Pel01分别表示原始参考帧搜索区域第2*n行第2*m、第2*m+1个象素,Pel10、Pel11分别表示原始参考帧搜索区域第2*n+1行第2*m、第2*m+1个象素,n、m在[0,23]之间,从而得到一个48*48位的粗糙层运动估计的搜索区域,该宏块的搜索区域中心位于当前该宏块左上角象素;
步骤(2.4),第1、第2两个均值滤波器阵列分别依次向当前宏块均值滤波后数据存储器阵列和搜索区域移位寄存器阵列输出64位的数据,这两个阵列中的每个存储器存放一个8位象素数据;
步骤(3),粗糙层运动估计器按以下步骤进行粗糙层运动估计,并输出预测模式以及相应运动向量:
步骤(3.1),粗糙层数据预处理器向粗糙层运动估计器中的8位2*2块的残差计算器输入当前宏块数据及粗糙层运动估计搜索区域数据,残差用SAD表示;
步骤(3.2),所述8位2*2块残差计算器采用加法树结构在一个时钟周期内计算出4*4、4*8、8*4、8*8、8*16、16*8和16*16共7种预测模式对应的所有2*2、2*4、4*2、4*4、4*8、8*4和8*8子块对应的残差;
步骤(3.3),最相似块搜索器在每个时钟来临时比较从所述8位2*2块残差计算器得到的各种预测模式下当前所有子块的残差与当前时钟前得到的最小残差的大小,保存更小的残差数据,若当前时钟得到的残差更小,则根据当前相似块的位置更新最小残差对应的运动向量;循环执行步骤(3.1)~(3.3),直到粗糙层搜索区域搜索完毕,得到最小残差及其相应的运动向量;
步骤(3.4),在步骤(3.3)执行结束后,先把上述各种预测模式下各自对应的各子块的最小残差相加,分别得到每种预测模式下的残差和;其次,比较7个残差和,选择其中残差和最小的预测模式作为最佳模式;
步骤(3.5),运动向量均值器根据步骤(3.4)得到的最佳预测模式,把该模式对应的各子块的运动向量相加,取其均值,得到粗糙层运动估计的运动向量;
步骤(4),用并行处理器按以下步骤并行执行精细层运动估计和半象素插值:
步骤(4.1),粗糙层运动估计器和参考帧存储器依次分别把粗糙层运动估计的运动向量和参考帧数据送入整数象素输入缓存器;
步骤(4.2),所述整数象素输入缓存器把24*24的精细层搜索区域数据输入到精细层搜索区域移位寄存器阵列,而所述移位寄存器阵列再把该精细层搜索区域数据送入精细层运动估计器,依次按以下步骤计算出精细层最小残差及相应的运动向量:
步骤(4.2.1),把所述精细层搜索区域数据、相应的当前宏块数据送入一个精细层残差计算器,计算出4*4、4*8、8*4、8*8、8*16、16*8以及16*16块的残差:
所述残差计算器由4个各自的元素为8*8个残差数据构成的子残差计算器构成;在该子残差计算器中,同一行每4个残差数据通过加法树相加得到一个4*1子块的残差,4个4*1子块的残差相加得到一个4*4子块的残差,在一个时钟周期内计算出所有4*4块的残差,再通过加法树结构,计算出当前宏块所有子块对应的残差,循环执行,一直到精细层搜索区域全部处理完毕;
步骤(4.2.2),最相似搜索器在每个时钟来临时比较步骤(4.2.1)所述的时钟周期得到的残差与此时钟周期前得到的最小残差的大小,若此时钟周期得到的残差更小,则根据当前相似块的位置更新最小的残差对应的运动向量;循环执行,直到精细层搜索区域搜索完毕,得到最小残差及其相应的运动向量;
步骤(4.3),所述整数象素输入缓存器同时把30*30的半象素搜索区域数据送入半象素插值滤波器阵列,所述半象素插值滤波器采用H.264/AVC标准指定的6抽头FIR滤波器,所述半象素插值滤波器阵列使用4个水平半象素插值滤波器和8个垂直半象素插值滤波器,该4个水平半象素插值滤波器使用一行整数象素中的6个象素插值,该8个垂直半象素插值滤波器使用一列整数象素或一列半象素中的六个象素插值,插值公式为:
Pelh=round((Pel0-5Pel1+20Pel2+20Pel3-5Pel4+Pel5)/32),
其中,round()表示取整,下标h表示半象素,下标0~5表示产生半象素的6个整数象素和半象素
所述半象素插值滤波器阵列通过半象素插值存储器I输出整数象素,同时通过A、B、C三个半象素存储器分别输出水平、垂直半象素以及夹于水平和垂直两个插值之间的半象素之值;
步骤(4.4),用并行计算结束判决器判决精细层运动估计和半象素插值滤波计算是否结束,如已结束,发出结束信号;
步骤(5),用半象素运动估计器以及1/4象素运动估计器按以下步骤依次进行半象素运动估计和1/4象素运动估计:
步骤(5.1),用半象素运动估计器进行半象素运动估计,并输出半象素最小残差和相应的半象素运动向量,其步骤依次如下:
步骤(5.1.1),精细层运动估计器向半象素运动估计器中的片上存储器接口输入最小残差及相应的运动向量;所述三个半象素存储器A、B、C向所述片上存储器接口输入半象素A、半象素B及半象素C;
步骤(5.1.2),所述片上存储器接口通过3个半象素输入缓存器把A、B、C三类半象素分别送往三个半象素搜索区域存储器后,再分别用3个半象素运动估计器按以下步骤对A、B、C三类半象素进行运动估计:
首先,每个半象素运动估计器用一个4*4子块的残差计算器计算当前宏块的4*4子块与半象素搜索区域4*4子块的残差;
然后,用一个最相似块选择器对照不同类型搜索区域得到的最相似子块的残差,选择其中最小的残差与精细层搜索得到的最小残差对比,得出更小的残差对应的相似块为半象素运动估计的最相似块,得出其半象素残差及相应的运动向量;
步骤(5.2),用1/4象素运动估计器进行1/4象素运动估计,按以下步骤得到1/4象素的最小残差及相应的1/4运动向量:
步骤(5.2.1),把从半象素运动估计器输出的半象素最小残差以及相应的运动向量、半象素插值存储器I得到的整数象素I、半象素插值存储器A、B、C得到的半象素A、B、C以及当前宏块存储器的当前宏块都输入1/4象素插值存储器接口;
步骤(5.2.2),1/4象素插值计算器阵列从所述1/4象素插值存储器接口输入的要计算的一个1/4象素所相邻的两个半象素或者一个半象素和一个整数象素求均值得到该1/4象素,可得到12种1/4象素,但只计算所述半象素运动估计器得到的半象素最相似块的象素周围的8种1/4象素;
步骤(5.2.3),所述1/4象素插值计算器阵列把所得的所有1/4象素分别存入8个1/4象素搜索区域存储器,并分别送入8个1/4象素运动估计器;
步骤(5.2.4),8个1/4象素运动估计器分别用一个4*4块的残差计算器分别从所述8个1/4象素搜索区域存储器得到1/4象素块和预先内存的当前宏块的4*4子块之间的残差;
步骤(5.2.5),一个最相似块选择器选择步骤(5.2.4)中所述8种搜索区域中残差最小的作为最佳1/4象素相似块,并计算相应的运动向量,再把该残差与半象素搜索得到的最小残差相比,选择最小的残差对应的相似块作为H.264/AVC运动估计器生成的最终选择的最佳相似块;
步骤(6),用一个最终运动向量计算器计算H.264/AVC运动估计器生成的最终运动向量MVf,并存入运动估计结果存储器:
MVf=8MVc+4MVp+2MVh+MVq
其中,c、p、h、q对应的运动向量分别表示粗糙层、精细层、半象素和1/4象素运动估计器得到的运动向量。
CN 200610113030 2006-09-08 2006-09-08 用于h.264/avc编码器的运动估计方法 Active CN100471275C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200610113030 CN100471275C (zh) 2006-09-08 2006-09-08 用于h.264/avc编码器的运动估计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200610113030 CN100471275C (zh) 2006-09-08 2006-09-08 用于h.264/avc编码器的运动估计方法

Publications (2)

Publication Number Publication Date
CN1933600A CN1933600A (zh) 2007-03-21
CN100471275C true CN100471275C (zh) 2009-03-18

Family

ID=37879181

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200610113030 Active CN100471275C (zh) 2006-09-08 2006-09-08 用于h.264/avc编码器的运动估计方法

Country Status (1)

Country Link
CN (1) CN100471275C (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101453646B (zh) * 2007-12-04 2012-02-22 华为技术有限公司 图像插值方法、装置及插值系数的获取方法
JP4618355B2 (ja) * 2008-09-25 2011-01-26 ソニー株式会社 画像処理装置及び画像処理方法
CN101860747B (zh) * 2010-03-31 2012-05-23 北京大学 亚像素运动估计***及方法
US9591326B2 (en) 2010-03-31 2017-03-07 Intel Corporation Power efficient motion estimation techniques for video encoding
BR122020007669B1 (pt) 2010-04-13 2022-07-12 Ge Video Compression, Llc Codificação de uma amostragem espacial de um sinal de informação bidimensional usando subdivisão
KR101874272B1 (ko) 2010-04-13 2018-07-03 지이 비디오 컴프레션, 엘엘씨 평면 간 예측
KR102388012B1 (ko) 2010-04-13 2022-04-18 지이 비디오 컴프레션, 엘엘씨 샘플 배열 멀티트리 세부분할에서 계승
PL2559246T3 (pl) 2010-04-13 2017-02-28 Ge Video Compression Llc Łączenie obszarów próbek
CN102281434B (zh) * 2010-06-10 2013-11-06 ***通信集团公司 一种视频压缩方法及设备
KR102498289B1 (ko) * 2011-09-09 2023-02-09 엘지전자 주식회사 인터 예측 방법 및 그 장치
CN102630016A (zh) * 2012-04-09 2012-08-08 复旦大学 一种适用于整数运动估计的深度流水线硬件架构
CN102932643B (zh) * 2012-11-14 2016-02-10 上海交通大学 一种适用于hevc标准的扩展可变块运动估计电路
WO2014083491A2 (en) * 2012-11-27 2014-06-05 Squid Design Systems Pvt Ltd System and method of mapping multiple reference frame motion estimation on multi-core dsp architecture
CN103716639B (zh) * 2013-12-25 2017-04-19 同观科技(深圳)有限公司 一种帧图像运动估计的搜索算法
CN104980737B (zh) * 2014-04-01 2018-04-13 扬智科技股份有限公司 帧间模式选择方法
CN104333674B (zh) * 2014-11-24 2019-01-22 广东中星电子有限公司 一种视频稳像方法和装置
CN110740323B (zh) * 2019-10-29 2023-05-12 腾讯科技(深圳)有限公司 用于确定lcu划分方式的方法、装置、服务器以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1163542A (zh) * 1996-03-22 1997-10-29 大宇电子株式会社 半象素运动估算器
WO2003107679A2 (en) * 2002-06-18 2003-12-24 Qualcomm, Incorporated Techniques for video encoding and decoding
CN1753501A (zh) * 2005-10-31 2006-03-29 连展科技(天津)有限公司 一种h.264/avc的帧间运动估计的模式选择方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1163542A (zh) * 1996-03-22 1997-10-29 大宇电子株式会社 半象素运动估算器
WO2003107679A2 (en) * 2002-06-18 2003-12-24 Qualcomm, Incorporated Techniques for video encoding and decoding
CN1753501A (zh) * 2005-10-31 2006-03-29 连展科技(天津)有限公司 一种h.264/avc的帧间运动估计的模式选择方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于SSE技术的H.2***估计的并行处理. 李小红.合肥学院学报(自然科学版),第15卷第3期. 2005 *

Also Published As

Publication number Publication date
CN1933600A (zh) 2007-03-21

Similar Documents

Publication Publication Date Title
CN100471275C (zh) 用于h.264/avc编码器的运动估计方法
US20220321905A1 (en) Reducing computational complexity when video encoding uses bi-predictively encoded frames
Chen et al. Analysis and architecture design of variable block-size motion estimation for H. 264/AVC
US7499491B2 (en) Apparatus for adaptive multiple-dimentional signal sequences encoding/decoding
US20110261886A1 (en) Image prediction encoding device, image prediction encoding method, image prediction encoding program, image prediction decoding device, image prediction decoding method, and image prediction decoding program
CN101505427A (zh) 视频压缩编码算法中的运动估计装置
CN108848376A (zh) 视频编码、解码方法、装置和计算机设备
CN101326550A (zh) 利用预测指导的抽取搜索的运动估计
CN105191309A (zh) 用于下一代视频编码的内容自适应预测距离分析器和分层运动估计***
CN102165777A (zh) 用于视频编码的适应性插补滤波器
CN102291581B (zh) 支持帧场自适应运动估计的实现方法
CN101325710A (zh) 视频编码中具有多种成本计算方法的运动细化引擎及方法
CN103188496A (zh) 基于运动矢量分布预测的快速运动估计视频编码方法
CN101472176A (zh) 基于边界强度因子进行去块效应滤波的解码方法和装置
CN113489987B (zh) 一种hevc子像素运动估计方法及装置
CN101765011B (zh) 缩放运动估计的方法和装置
CN101299818B (zh) 基于整像素搜索结果的n级亚像素搜索方法
CN101860747B (zh) 亚像素运动估计***及方法
CN1703094B (zh) 1/4像素插值应用于1/2像素插值结果的图象插值装置和方法
CN103430546A (zh) 视频编码装置、视频编码方法以及视频编码程序
CN102801982B (zh) 一种应用于视频压缩且基于块积分的快速运动估计方法
Kao et al. A memory-efficient and highly parallel architecture for variable block size integer motion estimation in H. 264/AVC
CN101600111A (zh) 一种实现自适应插值滤波二次编码的搜索方法
CN102630014B (zh) 一种基于前后两帧参考帧产生内插帧的双向运动估计器
CN101227616B (zh) H.263/avc整象素向量搜索方法

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
ASS Succession or assignment of patent right

Owner name: BEIJING HUAXIA DIANTONG TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: TSINGHUA UNIVERSITY

Effective date: 20120823

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100084 HAIDIAN, BEIJING TO: 100085 HAIDIAN, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20120823

Address after: 100085 A, block 9, 3rd Street, Beijing, Haidian District, A301

Patentee after: Beijing Powercom Technologies Co., Ltd.

Address before: 100084 Beijing 100084-82 mailbox

Patentee before: Tsinghua University

C56 Change in the name or address of the patentee
CP03 Change of name, title or address

Address after: 100094, No. 6, building, No. 3, Feng Xiu Middle Road, Beijing, Haidian District

Patentee after: Beijing Huaxia Diantong Technology Co., Ltd.

Address before: 100085 A, block 9, 3rd Street, Beijing, Haidian District, A301

Patentee before: Beijing Powercom Technologies Co., Ltd.

CP01 Change in the name or title of a patent holder

Address after: 100094, No. 6, building, No. 3, Feng Xiu Middle Road, Beijing, Haidian District

Patentee after: BEIJING HUAXIA DENTSU TECHNOLOGY Co.,Ltd.

Address before: 100094, No. 6, building, No. 3, Feng Xiu Middle Road, Beijing, Haidian District

Patentee before: BEIJING CHINASYS TECHNOLOGIES Co.,Ltd.

CP01 Change in the name or title of a patent holder