视频编解码中实现双线性插值的方法

文档序号:7694926阅读:172来源:国知局
专利名称:视频编解码中实现双线性插值的方法
技术领域
本发明属于信号处理中的视频编解码领域,特别涉及视频编解码中双线性插值方法。
背景技术
视频是指由一系列时间上相关的图像组成的系列,其中的每幅图像称为一个"帧"(本 申请中对帧模式和场模式的图像都统一适用,所以不再区分帧和场,统一称为帧),每个 帧又可以划分为若干个"块",通常块为正方形或矩形,视频编码以块为基本单位进行编 码,视频编码中常用的块有16x16, 8x16, 16x8, 8x8, 4x4等,都是以象素为单位;"象 素"则是指构成图像的点,是构成图像的最小单元。
对视频进行编码的目的是对视频的数据进行压缩,以方便存储和传输,而视频编码方 法就是实现上述功能的方法。 一个好的视频编码方法,可以在保持视频尽量好的视觉质量 的同时,把数据量压縮到尽可能低。而视频解码方法则是把压縮后的数据恢复到可直接观 看的视频的方法,从压縮数据得到解码后的图像的过程称为图像重建。
视频编解码方法由很多'幼能模块组成,其中"运动补偿(motion compensation, MC) 模块"是视频编解码中的一个重要模块。运动补偿模块的功能是,针对当前需要重建的块, 根据已经重建的图像计算出用于参考的图像块,把解码所得是残差图像块和该参考图像块 相加,得到重建的图像块。由于重建图像不只在解码过程中需要,在编码过程中也需要, 因此运动补偿模块在编码方法和解码方法中都存在。
运动补偿模块所实现的功能,如图l所示,该图包括了 一个mXn的残差图像块(在 图像处理中, 一个图像是xXy,是指"宽(水平方向)X高(垂直方向)",单位为象素(和 有时所用的"行数(垂直方向)X列数(水平方向)有所区别),该块在编码或解码过程 中经过一系列反量化反变换等操作得到; 一个WXH的已重建帧,该重建帧在后续编辑码 过程中作为参考用,也称为参考帧,该参考帧中,有一个aXb的区域,该区域是参考范围, 对这个参考范围内的象素插值,可以得到mXn的块作为参考图像块;用于和残差图像块 相加,得到一个mXn的重建图像块。
上述提及的插值过程,有多种插值方法,其中一种插值方法是双线性插值方法。如图 2所示,图中,即通过双线性插值方法计算得到mXn的参考图像块中的一个象素S的值; A、 B、 C、 D是己重建帧中aXb的参考范围内的4个相邻的象素值;dx、 dy分别是水平 方向和垂直方向的位置参数,其中dx表示了 S对于A所在位置在水平方向的偏移量,dy 表示了 S对于A所在位置在垂直方向的偏移量,上述两个参数在编解码过程中由其他阶段 的功能模块计算得到;Dx和Dy是两个固定不变的常数,值是2的指数次方(例如23 (8) 或22 (4)等),分别表示了 A、 B、 C、 D这四个象素在水平方向和垂直方向的距离。dx和dy的值满足关系0^dx<Dx, 0Sdy<Dy。在双线性插值方法中,S的值通过以下算法计算 得到-
s=( (Dx-dx) X (Dy-dy) X A + dx X (Dy-dy) X B + (Dx-dx) X dy X C + dx X dy X D )/(Dx X Dy);
S=floor(s+0.5);
其中,floor(s+0.5)表示取(s+0.5)的整数部分,丢弃小数部分。
在传统的视频编解码方法中,该双线性插值方法都直接实现。用直接实现的方法,每 个象素需要共8个乘法,3个加法。对于视频编解码过程中一次需要处理的mXn的参考 图像块,共需要8XmXn的乘法,3XmXn的加法。由于在硬件平台(如FPGA, ASIC 等)的实现中,乘法需要用到的乘法器比加法需要用到的加法器需要消耗更多的资源,同 时速度性能也更差,传统的直接实现方法具有资源消耗大,工作速度低等缺点。以一个传 统方法实现的解码器为例,用于实现双线性插值的计算资源约为整个解码器计算资源的19 %左右,是整个解码器中较大的一个功能模块。

发明内容
本发明的目的是为克服已有的方法的不足之处,提出一种新的视频编解码中实现双线 性插值的方法,具有垂直和水平分离、等分逼近和数据复用的特点,这种方法在硬件平台 (如FPGA, ASIC等)上实现时,具有资源占用少,工作速度快等优点。 "'本发明提出的视频编解码中实现双线性插值的方法,该方法通过双线性插值计算得到 mXn的参考图像块中的一个象素S的值;其特征在于,包括以下步骤
第一步如ac的值未取得,计算ac的值,其值为ac=( (Dy-dy)XA+dyXC)/Dy; 第二步如bd的值未取得,计算bd的值,其值为bd气(Dy-dy)XB + dyXD)/Dy; 第三步计算s的值,其值为s=( (Dx-dx) Xac + dxXbd)/Dx; 第四步计算S=floor(s+0.5);
其中,A、 B、 C、 D是该参考图像块中aXb的参考范围内的4个相邻的象素值;dx、 dy分别是S对于A所在位置的水平方向和垂直方向的偏移量;Dx和Dy是两个固定不变 的常数,取值是2的指数次方,分别表示了A、 B、 C、 D四个象素在水平方向和垂直方向 的距离;dx和dy的值满足关系0^dx<Dx, 0£dy<Dy; ac是在象素A和C连线上,处于象 素S同一垂直位置的象素;bd是在象素B和D连线上,处于象素S统一垂直位置的象素。
本发明的特点及技术效果
如上所述计算S的方法中,计算ac和bd的过程为垂直方向过程,而计算s过程为水 平方向过程,相比于已有方法,本发明提出的方法分离了垂直方向过程和水平方向过程, 具有垂直方向和水平方向分离的特点。该特点,使得原来各出现两次的"(Dx-dx)X"和"dx X"都减少为各出现一次,减少了两次乘法。对于视频编解码中一次需要处理mXn的块, 垂直方向和水平方向分离的方法,共能减少2XmXn次乘法。
如上所述计算ac、 bd、 s的步骤中,不使用乘法,而使用等分逼近的方法,只通过两
个数的加法就能实现,消除了乘法。
在视频编辑码中,上述的双线性插值都是按块进行的,所以S有相邻的象素也进行同
样的双线性插值过程,在同一个块内它们的参数ck和dy都相同。视频编解码的这种特点, 使得本发明提出的方法有数据复用的特点。对于编解码时处理mXn的块,本方法数据复
用的特点使得计算量能减少为原来的l^丄xu)。 % 。
3 x m


图l为运动补偿模块的功能示意图,其中高度和宽度的单位都是象素。
图2为双线性插值方法的示意图。
图3为本发明所提出的实现双线性插值的方法的示意图。
图4为本发明计算象素ac, bd和s的步骤的示意图。
图5为本发明所提出的实现双线性插值的方法中所用到的等分逼近子方法的示意图。
图6为本发明所提出的实现双线性插值的方法中复用数据的示意图。
图7为本发明所提出的实现双线性插值的方法在硬件平台的解码器中实现的示意图。
具体实施例方式
下面结合附图及实施例对本发明作进一步详细说明。
本发明提出的一种视频编解码中实现双线性插值的方法,如图3所示,图中,即通过 双线性插值方法计算得到mXn的参考图像块中的一个象素S的值;A、 B、 C、 D是已重 建帧中aXb的参考范围内的4个相邻的象素值;dx、 dy分别是水平方向和垂直方向的位 置参数,其中dx表示了S对于A所在位置在水平方向的偏移量,dy表示了S对于A所在 位置在垂直方向的偏移量(这两个参数在编解码过程中由其他阶段的功能模块计算得到); Dx和Dy是两个固定不变的常数,值是2的指数次方(例如23 (8)或22 (4)等),分别 表示了 A、 B、 C、 D这四个象素在水平方向和垂直方向的距离。dx和dy的值满足关系 05dx<Dx, 0Sdy<Dy。 ac是在A和C连线上,处于S同一垂直位置的象素;bd是在B和 D连线上,处于S统一垂直位置的象素。按本发明提出的方法,计算S按如下步骤进行
第一步如ac的值未取得,计算ac的值,其值为ac-((Dy-dy)XA+dyXC)/Dy;
第二步如bd的值未取得,计算bd的值,其值为bd气(Dy-dy)XB + dyXD)/Dy;
第三步计算s的值,其值为s=((Dx-dx)Xac + dxXbd)/Dx;
第四步计算S-floor(s+0.5);
其中计算象素ac, bd和s的步骤,不使用乘法,而使用以下方法实现,如图4所示, 以ac为例,图中A、 C是参考范围内两个相邻的象素,ac是在A和C连线上的一个待求 的象素,如图4 (a):
第1步计算A和C中点的值M=(A+C)/2,如图4 (b);
第2步判断A和C的中点M是否是目标点ac所在位置,
如不是判断A和C中点M是否在目标点ac上方
如在上方更改A的值,令A-M;返回执行第l步,如图4 (C); 如在下方更改C的值,令C:M;返回执行第l步,如图4 (d)。
如果是令ac:M,计算结束,如图4 (e);
计算bd和S的步骤类似,计算bd的步骤描述如下 第1步计算B和D中点的值M=(B+D)/2;
第2步判断B和D的中点M是否是目标点bd所在位置,
如不是判断B和D中点M是否在目标点bd上方
如在上方更改B的值,令B:M;返回执行第l步; 如在下方更改D的值,令D:M;返回执行第l步。 如果是令bd-M,计算结束; 计算S的步骤描述如下
第1步计算ac和bd中点的值M=(ac+bd)/2;
第2步判断ac和bd的中点M是否是目标点s所在位置,
如不是判断ac和bd中点M是否在目标点S左方 如在左方更改ac的值,令ac:M;返回执行第l步; 如在右方更改bd的值,令bd-M;返回执行第l步。 如果是令S-M,计算结束。
本发明提出的方法的实施例,说明如下 ''
本实施例中mXn的块大小为3X1,艮卩m=3, n=l时,且Dx=8, Dy=8, dx=4, dy=4 时的具体实现步骤,如图5、 6所示,图中,Iu, I12, I13, I14, I21, I22, I23, 124是已重建 帧中aXb的参考范围内的8个相邻的象素;Hp H2, H3, H4是4个垂直方向的中间结果; Si, S2, S3是通过双线性插值计算得到3X1的参考图像块中的所需要求的三个象素值。在 本实施例中,Iu, 112, 113, 114, 121, 122, 123, 124的值分别为
Iii=8, 112=8, 113=32, 114=32, 121=16, 122=16, 123=64, 124=64;
本实施例的具体步骤为
第一步计算H^ H2、 H3的值(分别等同于求S!的ac、 S2的ac、 S3的ac),其子步
骤为
第1步:计算Iu和121的中点Mi的值,M(In+l2i)/2=12;
计算112和122的中点M2的值,M2= (I12+I22)/2=l2; 计算I13和I23的中点M3的值,M3= (I13+I23)/2=48; 第2步判断中点M,、 M2、 M3点是否分别在目标点H!、 H2、 H3的位置, 判断结果是,令Hi^M尸12, H2 = M2=12, 令H3二Mf48,
计算结束。
第二步计算H2、 H3、 H4的值(分别等同于求Si的bd、 S2的bd、 S3的bd), H2、 H3
在上一步骤已经求得(数据复用),所以只计算H4的值,其子步骤为
第1步计算114和124的中点M4的值,Mr (I14+I24)/2=48; 第2步判断中点M4点是否分别在目标点H4的位置,
判断结果是,令H4二Nlr48, -
计算结束。
第三步计算Si、 S2、 S3的值,其子步骤为
第1步计算H!和H2的中点M!的值,M尸(H!十H2)/2=12;
计算H2和H3的中点M2的值,M2= (H2+ H3)/2=30; 计算H3和H4的中点M3的值,M3= (H3+ H4)/2=48; 第2步判断中点M" M2、 M3点是否分别在目标点S" S2、 S3的位置, 判断结果是,令Si二M尸12, 令s2=M2=30, 令s3=M3=48,
计算结束。
第四步
计算Sl=floor(sl+0.5)=12; 计算S2= floor(s2+0.5"30; 计算S3= floor(s3+0.5)4'8;
如上所述计算S的方法,在插值多个相邻数据时,可以复用中间结果,如图6所示, 图中,Iu, 112, In, I14, I21, I22, I23, 124是已重建帧中aXb的参考范围内的8个相邻的 象素,和上述A, B, C, D同性质;H!, H2, H3, H4是4个垂直方向的中间结果,和上 述ac, bd同性质;S2, S3是三个所需要求的结果,和上述S同性质,并且他们对应的 dx, dy相同。在这样同时计算多个相邻S的情况下,中间结果H2在用于计算Si的同时,
也能用于计算S2,这样计算S2的垂直过程可用通过复用H2减少一半的计算量。类似的S3
可以复用Hs。
实现上述方法的一个硬件平台的解码器结构如图7所示,该解码器包括了双线性插值 模块和其他功能模块;其中本实施例方法实现的双线性功能模块由参考范围内象素数据存 储器、插值所得参考块数据存储器和插值计算单元三大部分组成,其中参考范围内象素数 据存储器用于存储参考范围内的象素的值,Iu等均从中读取;插值所得参考块数据存储器 用于存储插值所得结果,S!等计算得到后均存储在其中;插值计算单元用于具体实现本发
明的方法,主要由加法器组成,输入为Iu, 112, 113, 114, 121, 122, 123, 124等,经过一组加
法器和"》1"可得到Hp H2, H3, H4; H,, H2, H3, H4再经过一组加法器和可 得到Si, S2, S3;其中">>1"代表了硬件中的移位,实现了除2的效果,在硬件中由导 线的连接关系实现,并不消耗硬件资源。在该具体实施示例中,用六个加法器可以实现传 统方法需要多个乘法器的实现的效果,所用资源比传统方法能减少约50%左右。
权利要求
1、一种视频编解码中实现双线性插值的方法,该方法通过双线性插值计算得到m×n的参考图像块中的一个象素S的值;其特征在于,包括以下步骤第一步如ac的值未取得,计算ac的值,其值为ac=((Dy-dy)×A+dy×C)/Dy;第二步如bd的值未取得,计算bd的值,其值为bd=((Dy-dy)×B+dy×D)/Dy;第三步计算s的值,其值为s=((Dx-dx)×ac+dx×bd)/Dx;第四步计算S=floor(s+0.5);其中,A、B、C、D是该参考图像块中a×b的参考范围内的4个相邻的象素值;dx、dy分别是S对于A所在位置的水平方向和垂直方向的偏移量;Dx和Dy是两个固定不变的常数,取值是2的指数次方,分别表示了A、B、C、D四个象素在水平方向和垂直方向的距离;dx和dy的值满足关系0≤dx<Dx,0≤dy<Dy;ac是在象素A和C连线上,处于象素S同一垂直位置的象素;bd是在象素B和D连线上,处于象素S统一垂直位置的象素。
2、 如权利要求l所述方法,其特征在于,其中计算象素值ac,具体包括 第1步计算象素A和C中点的值M=(A+C)/2;第2步判断象素A和C的中点M是否是目标点ac所在位置 ''如果是令ac:M,计算结束;如不是判断A和C中点M是否在目标点ac上方 如在上方更改A的值,令A二M;返回执行第l步; 如在下方更改C的值,令C-M;返回执行第l步。
全文摘要
本发明涉及视频编解码中实现双线性插值的方法,属于信号处理中的视频编解码领域。该方法通过双线性插值计算得到m×n的参考图像块中的一个象素S的值;包括计算ac的值,其值为ac=((Dy-dy)×A+dy×C)/Dy;计算bd的值,其值为bd=((Dy-dy)×B+dy×D)/Dy,计算s的值,其值为s=((Dx-dx)×ac+dx×bd)/Dx;计算S=floor(s+0.5);本发明在实现双线性插值的过程中,避免乘法和乘法器的使用,同时减少加法和加法器的使用,大大减小实现代价,提高插值效率。
文档编号H04N7/26GK101345872SQ20081011262
公开日2009年1月14日 申请日期2008年5月23日 优先权日2008年5月23日
发明者芸 何, 欣 佟, 达 安, 朱炳强 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1