一种基于多级流水线结构的实时1/4插值方法

文档序号:7752450阅读:264来源:国知局
专利名称:一种基于多级流水线结构的实时1/4插值方法
技术领域
本发明涉及视频编解码技术领域,特别涉及视频帧间图像基于时间预测的编解码技术的一种基于多级流水线结构的实时1/4插值方法。
背景技术
在视频编码中,常把图像分为帧内图像和帧间图像两种。其中,帧间图像需要采用运动估计编码方法,这主要是因为相邻图像块的像素具有很大的时间相关性。这种编码方法的主要思想是在参考图像中找到和编码块最匹配的块作为编码块的预测值(预测块),进行编码。编码块和预测块匹配程度越高,编码的效率越高。为了提高二者的匹配程度,就需要提高运动估计的精度。MPEG1采用的是整像素精度,MPEG2和H.263采用的是半像素精度,在MPEG4中采用了1/4像素精度,从而可以提高编码效率。但1/4精度运动估计需要对参考图像进行1/4插值,1/4插值过程计算复杂度高,欲对一个整数点进行插值需要对该点周围的6×6个整数点进行6阶线性插值和双线性插值。如图1所示,一个图像块经过1/4插值后大小变为原来的16倍。在原图像块中的一个整像素点经过1/4插值后变为16个点,过程如图2所示,欲将点A插值为16个点需要将点A周围的6×6个整数点作为输入,具体过程为(1)分别对6×6块每行数据进行6阶线性插值,得到点1和5。
(2)分别对点A、1、4所在列进行6阶线性插值,得到点2、3、4。
(3)分别对点A、2、C所在行进行行线性插值,得到点a、b、h、i、o、p。
(4)分别对点A、a、1、b所在列进行列线性插值得到点c、d、e、f、j、k、m、l。
(5)利用点A、B、C和D对点m进行低通滤波。
经过上述5步就得到1/4插值后点A周围的16个点A、a、1、b、c、d、e、f、2、h、3、i、j、k、l、m。我们经过对插值过程的仔细分析发现存在以下一些问题(1)如果对整帧数据进行插值后再进行运动估计每帧数据量将膨胀为16帧的数据量,需要大容量存储空间存储插值结果。
(2)插值和运动估计过程完全串行,增加了帧间编码时间。
(3)相邻整像素点如点A、B、C、D的插值输入数据存在大量重复。

发明内容
本发明的目的在于提供一种基于多级流水线结构的实时1/4插值方法。它通过将插值过程与运动估计过程结合进行,并将插值过程组织成多级流水线结构,来降低视频编解码过程1/4插值过程的时间和空间占用,从而提高编解码效率。降低对存储资源的占用,提高1/4值的运算速度,对提高视频编解码的速度起重要作用。
技术方案如下一种基于多级流水线结构的实时1/4插值方法,本方法将MPEG4协议中规定的1/4插值过程与运动估计过程按流水线顺序结合进行,并将插值过程组织成数据读入、行1/2插值、列1/2插值、行列1/4插值和数据输出5级全流水线结构,这样不但可以节约插值过程中存储器资源的占用,而且可以大大加快插值速度。包括以下步骤(1)对运动估计过程中用到的当前块进行实时插值;(2)将运动估计和1/4插值过程组织成2级流水线结构;(3)通过设立中间缓冲区消除数据重复读入;(4)将1/4插值过程组织成数据读入、行1/2插值、列1/2插值、双线性插值和数据输出5级流水线结构;(5)将1/2插值过程设计成4级流水线结构;(6)设计可伸缩可以根据应用不同,方便的通过增加或减少插值运算单元的数目提高插值速度或降低资源占用。
所述方法,将运动估计过程和1/4插值过程结合在一起进行,对运动估计过程中用到的当前块进行实时插值,从而可以节约存储资源占用。
所述方法,将运动估计和1/4插值过程组织成2级流水线结构,减少插值在整个编码过程中的时间占用比例。
所述方法,通过设立中间缓冲区缓冲部分输入数据,消除相邻整像素点在插值过程中输入数据的重复读入,从而使每个与插值数据块相关的整像素点只需被读入一次。
所述方法,将1/4插值过程组织成数据读入、行1/2插值、列1/2插值、双线性插值和数据输出5级流水线结构,加速1/4插值的运算速度。
所述方法,将1/2插值过程采用的6阶线性插值,设计成4级流水线结构,流水线启动后每拍计算出一个结果,从而可以大大提高插值的运算速度。
所述方法,插值运算单元的数目可配置,可以根据应用不同,方便的通过增加或减少插值运算单元的数目提高插值速度或降低资源占用。


图1是数据块1/4插值过程示意图;图2是点A的插值过程示意图;图3是点A与B输入数据重复示意图;(图中白色部分为重复区域)图4是1/4插总体结构图;(其中clipmin(max(0,s7),255))此方法包括以下特征(1)对运动估计过程中用到的当前块进行实时插值。
在H.264协议中共有16×16、16×8、8×16、8×8、8×4、4×8和4×4共7种形状的数据块,视频编解码过程以宏块为单位,针对每种形状块在运动估计过程中每个宏块只用到48×48个插值结果(解码只需要16×16个),这些结果用完一次就不再重复用,所以如果采用实时插值的做法,只需在对宏块进行运动估计之前,将要用到的数据进行插值,将结果放在48×48(解码是16×16)的缓冲区中,在进行下一个宏块的运动估计时,用新的插直结果覆盖掉原宏块用的插值数据,这样无论编码多大的帧整个运动估计过程只需要48×48字节(解码只需要16×16字节)的存储空间存放插值结果。
(2)将运动估计和插值过程按流水线顺序组织为了提高运动估计和1/4插值的并行程度,本发明将运动估计和1/4插值过程按照流水线顺序组织,如图3所示,当插值器算出一行插值结果后,就用该行数据进行运动估计,同时插值器计算下一行插值结果。这样1/4插值过程的时间占用基本上被“溶解“在运动估计过程中。
(3)通过设立中间缓冲区消除数据重复读入欲对一点A进行插值,如图2所示需要其周围的6×6数据块作为输入,同样欲对点B进行插值也需要其周围的6×6数据块作为输入,由于A与B相邻,因此二者的输入存在大量重复,如图3所示点A的后5列输入与点B的前5列是重复的。同样的道理,图2中的点C的插值输入与A的输入也存在5行6列的重复。为了减少数据的重复输入,本发明采用了一个中间缓冲区,先缓存整个数据块插值输入的前6行数据,然后依次对数据块中每个点进行插值,这样对第一行的整像素点进行插值时,数据直接从内部存储区中得到,不需重复访问外部存储区,同时再增加一个行缓冲区,用来缓冲下一行(第7行)的读入数据,第一行数据的插值和第7行数据的读入同时进行,当第一行的整像素点插值结束时,第7行数据也应已经被读入到缓冲区中,用2-6行数据和刚读入的第7行数据作为第二行整像素点的插值输入数据,如此往复完成对整个数据块的1/4插值,将结果存入48×48的中间缓冲区中供运动估计过程调用。这种结构的特点是访问外部存储区的次数低,每个数据只需读入一次。
(4)将插值器设计成5级流水线结构插值器以6×6数据块为输入单位,分成数据读入、行1/2插值、列1/2插值、双线性插值和输出五级流水线结构。如图3所示,每拍送入插值器一个6×6数据块对一个点A进行插值,经过五级流水线后,得到与该点对应的16个插值结果,流水线完全启动后,每拍输出16个插值结果。
(5)将1/2插值过程设计成4级流水线结构。
由于在1/2插值过程采用的6阶线性插值,计算复杂度高。例如设一行连续6个数据为(in0,in1,in2,in3,in4,in5)欲对in2进行6阶线性插值,计算过程为out=min((max((in0-5*in1+20*in2+20*in3-5*in4+in5+16)/32,0),255),这个运算如果在一拍内完成将降低整个系统的频率,为了消除这个关键路径,本发明将这个运算设计为4级流水线结构,如图4所示,每拍送入6个数据,4拍后每拍输出一个插值结果。
(6)设计可伸缩可以根据应用不同,方便的通过增加或减少插值运算单元的数目提高插值速度或降低资源占用。
一个插值运算单元如图4所示,它可以独立完成一系列点的插值,可以通过改变插值运算单元的数目来提高插值速度或降低资源占用。
实际应用我们应经将该方法成功应用于我所开发的H.264解码验证芯片中,取得了显著的效果,该芯片目前每秒能解码标准清晰度视频(720×576)35帧。
设计可伸缩方便的通过增加或减少插值运算单元的数目提高插值速度或降低资源占用。本方法可以应用于基于MPEG4协议的视频编码器的设计中。
权利要求
1.一种基于多级流水线结构的实时1/4插值方法,将MPEG4协议中规定的1/4插值过程与运动估计过程按流水线顺序结合进行,并将插值过程组织成数据读入、行1/2插值、列1/2插值、行列1/4插值和数据输出5级全流水线结构,包括以下步骤(1)对运动估计过程中用到的当前块进行实时插值;(2)将运动估计和1/4插值过程组织成2级流水线结构;(3)通过设立中间缓冲区消除数据重复读入;(4)将1/4插值过程组织成数据读入、行1/2插值、列1/2插值、双线性插值和数据输出5级流水线结构;(5)将1/2插值过程设计成4级流水线结构;(6)设计可伸缩可以根据应用不同,方便的通过增加或减少插值运算单元的数目提高插值速度或降低资源占用。
2.按照权利要求1所述的方法,其特征在于将运动估计过程和1/4插值过程结合在一起进行,对运动估计过程中用到的当前块进行实时插值,从而可以节约存储资源占用。
3.按照权利要求1所述的方法,其特征在于将运动估计和1/4插值过程组织成2级流水线结构,减少插值在整个编码过程中的时间占用比例。
4.按照权利要求1所述的方法,其特征在于通过设立中间缓冲区缓冲部分输入数据,消除相邻整像素点在插值过程中输入数据的重复读入,从而使每个与插值数据块相关的整像素点只需被读入一次。
5.按照权利要求1所述的方法,其特征在于将1/4插值过程组织成数据读入、行1/2插值、列1/2插值、双线性插值和数据输出5级流水线结构,加速1/4插值的运算速度。
6.按照权利要求1所述的方法,其特征在于将1/2插值过程采用的6阶线性插值,设计成4级流水线结构,流水线启动后每拍计算出一个结果,从而可以大大提高插值的运算速度。
7.按照权利要求1所述的方法,其特征在于插值运算单元的数目可配置,可以根据应用不同,方便的通过增加或减少插值运算单元的数目提高插值速度或降低资源占用。
全文摘要
一种基于与多级流水线结构的实时1/4插值方法。将MPEG4协议中规定的1/4插值过程与运动估计过程结合进行,即只对运动估计的过程中需要用到的块进行1/4插值,并将插值过程组织成数据读入、行1/2插值、列1/2插值、双线性插值和数据输出5级流水线结构,这样不但可以节约插值过程中存储器资源的占用,而且可以大大加快插值速度。包括以下步骤对编解码器运动估计的过程中需要用到的块进行实时插值;插值过程和运动估计过程按流水线顺序结合进行;通过设立中间缓冲区消除数据重复读入;将插值过程组织成5级流水线结构;将1/2插值过程设计成4级流水线结构;本方法可以应用于基于MPEG4协议的视频编码器的设计中。
文档编号H04N7/32GK1481169SQ0315250
公开日2004年3月10日 申请日期2003年8月1日 优先权日2003年8月1日
发明者黄晁, 王荣刚, 李锦涛, 黄 晁 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1