CN101345872A - 视频编解码中实现双线性插值的方法 - Google Patents
视频编解码中实现双线性插值的方法 Download PDFInfo
- Publication number
- CN101345872A CN101345872A CN 200810112627 CN200810112627A CN101345872A CN 101345872 A CN101345872 A CN 101345872A CN 200810112627 CN200810112627 CN 200810112627 CN 200810112627 A CN200810112627 A CN 200810112627A CN 101345872 A CN101345872 A CN 101345872A
- Authority
- CN
- China
- Prior art keywords
- value
- pixel
- calculate
- bilinear interpolation
- decoding
- 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.)
- Granted
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及视频编解码中实现双线性插值的方法,属于信号处理中的视频编解码领域。该方法通过双线性插值计算得到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);本发明在实现双线性插值的过程中,避免乘法和乘法器的使用,同时减少加法和加法器的使用,大大减小实现代价,提高插值效率。
Description
技术领域
本发明属于信号处理中的视频编解码领域,特别涉及视频编解码中双线性插值方法。
背景技术
视频是指由一系列时间上相关的图像组成的系列,其中的每幅图像称为一个“帧”(本申请中对帧模式和场模式的图像都统一适用,所以不再区分帧和场,统一称为帧),每个帧又可以划分为若干个“块”,通常块为正方形或矩形,视频编码以块为基本单位进行编码,视频编码中常用的块有16x16,8x16,16x8,8x8,4x4等,都是以象素为单位;“象素”则是指构成图像的点,是构成图像的最小单元。
对视频进行编码的目的是对视频的数据进行压缩,以方便存储和传输,而视频编码方法就是实现上述功能的方法。一个好的视频编码方法,可以在保持视频尽量好的视觉质量的同时,把数据量压缩到尽可能低。而视频解码方法则是把压缩后的数据恢复到可直接观看的视频的方法,从压缩数据得到解码后的图像的过程称为图像重建。
视频编解码方法由很多功能模块组成,其中“运动补偿(motion compensation,MC)模块”是视频编解码中的一个重要模块。运动补偿模块的功能是,针对当前需要重建的块,根据已经重建的图像计算出用于参考的图像块,把解码所得是残差图像块和该参考图像块相加,得到重建的图像块。由于重建图像不只在解码过程中需要,在编码过程中也需要,因此运动补偿模块在编码方法和解码方法中都存在。
运动补偿模块所实现的功能,如图1所示,该图包括了:一个m×n的残差图像块(在图像处理中,一个图像是x×y,是指“宽(水平方向)×高(垂直方向)”,单位为象素(和有时所用的“行数(垂直方向)×列数(水平方向)有所区别),该块在编码或解码过程中经过一系列反量化反变换等操作得到;一个W×H的已重建帧,该重建帧在后续编辑码过程中作为参考用,也称为参考帧,该参考帧中,有一个a×b的区域,该区域是参考范围,对这个参考范围内的象素插值,可以得到m×n的块作为参考图像块;用于和残差图像块相加,得到一个m×n的重建图像块。
上述提及的插值过程,有多种插值方法,其中一种插值方法是双线性插值方法。如图2所示,图中,即通过双线性插值方法计算得到m×n的参考图像块中的一个象素S的值;A、B、C、D是已重建帧中a×b的参考范围内的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,0≤dy<Dy。在双线性插值方法中,S的值通过以下算法计算得到:
s=((Dx-dx)×(Dy-dy)×A+dx×(Dy-dy)×B+(Dx-dx)×dy×C+dx×dy×D)/(Dx×Dy);
S=floor(s+0.5);
其中,floor(s+0.5)表示取(s+0.5)的整数部分,丢弃小数部分。
在传统的视频编解码方法中,该双线性插值方法都直接实现。用直接实现的方法,每个象素需要共8个乘法,3个加法。对于视频编解码过程中一次需要处理的m×n的参考图像块,共需要8×m×n的乘法,3×m×n的加法。由于在硬件平台(如FPGA,ASIC等)的实现中,乘法需要用到的乘法器比加法需要用到的加法器需要消耗更多的资源,同时速度性能也更差,传统的直接实现方法具有资源消耗大,工作速度低等缺点。以一个传统方法实现的解码器为例,用于实现双线性插值的计算资源约为整个解码器计算资源的19%左右,是整个解码器中较大的一个功能模块。
发明内容
本发明的目的是为克服已有的方法的不足之处,提出一种新的视频编解码中实现双线性插值的方法,具有垂直和水平分离、等分逼近和数据复用的特点,这种方法在硬件平台(如FPGA,ASIC等)上实现时,具有资源占用少,工作速度快等优点。
本发明提出的视频编解码中实现双线性插值的方法,该方法通过双线性插值计算得到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统一垂直位置的象素。
本发明的特点及技术效果:
如上所述计算S的方法中,计算ac和bd的过程为垂直方向过程,而计算s过程为水平方向过程,相比于已有方法,本发明提出的方法分离了垂直方向过程和水平方向过程,具有垂直方向和水平方向分离的特点。该特点,使得原来各出现两次的“(Dx-dx)×”和“dx×”都减少为各出现一次,减少了两次乘法。对于视频编解码中一次需要处理m×n的块,垂直方向和水平方向分离的方法,共能减少2×m×n次乘法。
如上所述计算ac、bd、s的步骤中,不使用乘法,而使用等分逼近的方法,只通过两个数的加法就能实现,消除了乘法。
在视频编辑码中,上述的双线性插值都是按块进行的,所以S有相邻的象素也进行同样的双线性插值过程,在同一个块内它们的参数dx和dy都相同。视频编解码的这种特点,使得本发明提出的方法有数据复用的特点。对于编解码时处理m×n的块,本方法数据复用的特点使得计算量能减少为原来的
附图说明
图1为运动补偿模块的功能示意图,其中高度和宽度的单位都是象素。
图2为双线性插值方法的示意图。
图3为本发明所提出的实现双线性插值的方法的示意图。
图4为本发明计算象素ac,bd和s的步骤的示意图。
图5为本发明所提出的实现双线性插值的方法中所用到的等分逼近子方法的示意图。
图6为本发明所提出的实现双线性插值的方法中复用数据的示意图。
图7为本发明所提出的实现双线性插值的方法在硬件平台的解码器中实现的示意图。
具体实施方式
下面结合附图及实施例对本发明作进一步详细说明。
本发明提出的一种视频编解码中实现双线性插值的方法,如图3所示,图中,即通过双线性插值方法计算得到m×n的参考图像块中的一个象素S的值;A、B、C、D是已重建帧中a×b的参考范围内的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,0≤dy<Dy。ac是在A和C连线上,处于S同一垂直位置的象素;bd是在B和D连线上,处于S统一垂直位置的象素。按本发明提出的方法,计算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);
其中计算象素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;返回执行第1步,如图4(c);
如在下方:更改C的值,令C=M;返回执行第1步,如图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;返回执行第1步;
如在下方:更改D的值,令D=M;返回执行第1步。
如果是:令bd=M,计算结束;
计算s的步骤描述如下:
第1步:计算ac和bd中点的值M=(ac+bd)/2;
第2步:判断ac和bd的中点M是否是目标点s所在位置,:
如不是:判断ac和bd中点M是否在目标点s左方:
如在左方:更改ac的值,令ac=M;返回执行第1步;
如在右方:更改bd的值,令bd=M;返回执行第1步。
如果是:令s=M,计算结束。
本发明提出的方法的实施例,说明如下:
本实施例中m×n的块大小为3×1,即m=3,n=1时,且Dx=8,Dy=8,dx=4,dy=4时的具体实现步骤,如图5、6所示,图中,I11,I12,I13,I14,I21,I22,I23,I24是已重建帧中a×b的参考范围内的8个相邻的象素;H1,H2,H3,H4是4个垂直方向的中间结果;S1,S2,S3是通过双线性插值计算得到3×1的参考图像块中的所需要求的三个象素值。在本实施例中,I11,I12,I13,I14,I21,I22,I23,I24的值分别为:
I11=8,I12=8,I13=32,I14=32,I21=16,I22=16,I23=64,I24=64;
本实施例的具体步骤为:
第一步:计算H1、H2、H3的值(分别等同于求S1的ac、S2的ac、S3的ac),其子步骤为:
第1步:计算I11和I21的中点M1的值,M1=(I11+I21)/2=12;
计算I12和I22的中点M2的值,M2=(I12+I22)/2=12;
计算I13和I23的中点M3的值,M3=(I13+I23)/2=48;
第2步:判断中点M1、M2、M3点是否分别在目标点H1、H2、H3的位置,
判断结果是,令H1=M1=12,
令H2=M2=12,
令H3=M3=48,
计算结束。
第二步:计算H2、H3、H4的值(分别等同于求S1的bd、S2的bd、S3的bd),H2、H3在上一步骤已经求得(数据复用),所以只计算H4的值,其子步骤为:
第1步:计算I14和I24的中点M4的值,M4=(I14+I24)/2=48;
第2步:判断中点M4点是否分别在目标点H4的位置,
判断结果是,令H4=M4=48,
计算结束。
第三步:计算s1、s2、s3的值,其子步骤为:
第1步:计算H1和H2的中点M1的值,M1=(H1+H2)/2=12;
计算H2和H3的中点M2的值,M2=(H2+H3)/2=30;
计算H3和H4的中点M3的值,M3=(H3+H4)/2=48;
第2步:判断中点M1、M2、M3点是否分别在目标点S1、S2、S3的位置,
判断结果是,令s1=M1=12,
令s2=M2=30,
令s3=M3=48,
计算结束。
第四步:
计算S1=floor(s1+0.5)=12;
计算S2=floor(s2+0.5)=30;
计算S3=floor(s3+0.5)48;
如上所述计算S的方法,在插值多个相邻数据时,可以复用中间结果,如图6所示,图中,I11,I12,I13,I14,I21,I22,I23,I24是已重建帧中a×b的参考范围内的8个相邻的象素,和上述A,B,C,D同性质;H1,H2,H3,H4是4个垂直方向的中间结果,和上述ac,bd同性质;S1,S2,S3是三个所需要求的结果,和上述S同性质,并且他们对应的dx,dy相同。在这样同时计算多个相邻S的情况下,中间结果H2在用于计算S1的同时,也能用于计算S2,这样计算S2的垂直过程可用通过复用H2减少一半的计算量。类似的S3可以复用H3。
实现上述方法的一个硬件平台的解码器结构如图7所示,该解码器包括了双线性插值模块和其他功能模块;其中本实施例方法实现的双线性功能模块由参考范围内象素数据存储器、插值所得参考块数据存储器和插值计算单元三大部分组成,其中参考范围内象素数据存储器用于存储参考范围内的象素的值,I11等均从中读取;插值所得参考块数据存储器用于存储插值所得结果,S1等计算得到后均存储在其中;插值计算单元用于具体实现本发明的方法,主要由加法器组成,输入为I11,I12,I13,I14,I21,I22,I23,I24等,经过一组加法器和“>>1”可得到H1,H2,H3,H4;H1,H2,H3,H4再经过一组加法器和“>>1”可得到S1,S2,S3;其中“>>1”代表了硬件中的移位,实现了除2的效果,在硬件中由导线的连接关系实现,并不消耗硬件资源。在该具体实施示例中,用六个加法器可以实现传统方法需要多个乘法器的实现的效果,所用资源比传统方法能减少约50%左右。
Claims (2)
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、如权利要求1所述方法,其特征在于,其中计算象素值ac,具体包括:
第1步:计算象素A和C中点的值M=(A+C)/2;
第2步:判断象素A和C的中点M是否是目标点ac所在位置:
如果是:令ac=M,计算结束;
如不是:判断A和C中点M是否在目标点ac上方:
如在上方:更改A的值,令A=M;返回执行第1步;
如在下方:更改C的值,令C=M;返回执行第1步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810112627 CN101345872B (zh) | 2008-05-23 | 2008-05-23 | 视频编解码中实现双线性插值的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810112627 CN101345872B (zh) | 2008-05-23 | 2008-05-23 | 视频编解码中实现双线性插值的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101345872A true CN101345872A (zh) | 2009-01-14 |
CN101345872B CN101345872B (zh) | 2010-06-09 |
Family
ID=40247741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200810112627 Expired - Fee Related CN101345872B (zh) | 2008-05-23 | 2008-05-23 | 视频编解码中实现双线性插值的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101345872B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101616249B (zh) * | 2009-07-28 | 2011-08-10 | 谭洪舟 | 基于双三次插值的视频缩放装置 |
CN102497549A (zh) * | 2011-12-02 | 2012-06-13 | 北京瀚景锦河科技有限公司 | 一种基于选择器的双线性插值方法和装置 |
CN104869284A (zh) * | 2015-05-14 | 2015-08-26 | 北京邮电大学 | 一种双线性插值放大算法的高效率fpga实现方法和装置 |
CN114741352A (zh) * | 2022-06-09 | 2022-07-12 | 杭州未名信科科技有限公司 | 一种基于fpga的双线性插值重采样实现方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2271117B1 (en) * | 1997-06-09 | 2013-09-11 | Hitachi, Ltd. | Image decoding method and image decoder |
KR100472476B1 (ko) * | 2002-08-31 | 2005-03-10 | 삼성전자주식회사 | 움직임 보상을 위한 보간 방법 및 그 장치 |
CN101848385B (zh) * | 2004-04-21 | 2012-10-10 | 松下电器产业株式会社 | 运动补偿装置 |
-
2008
- 2008-05-23 CN CN 200810112627 patent/CN101345872B/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101616249B (zh) * | 2009-07-28 | 2011-08-10 | 谭洪舟 | 基于双三次插值的视频缩放装置 |
CN102497549A (zh) * | 2011-12-02 | 2012-06-13 | 北京瀚景锦河科技有限公司 | 一种基于选择器的双线性插值方法和装置 |
CN104869284A (zh) * | 2015-05-14 | 2015-08-26 | 北京邮电大学 | 一种双线性插值放大算法的高效率fpga实现方法和装置 |
CN104869284B (zh) * | 2015-05-14 | 2018-05-04 | 北京邮电大学 | 一种双线性插值放大算法的高效率fpga实现方法和装置 |
CN114741352A (zh) * | 2022-06-09 | 2022-07-12 | 杭州未名信科科技有限公司 | 一种基于fpga的双线性插值重采样实现方法及装置 |
CN114741352B (zh) * | 2022-06-09 | 2022-11-04 | 杭州未名信科科技有限公司 | 一种基于fpga的双线性插值重采样实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101345872B (zh) | 2010-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103688533B (zh) | 可减少行存储器的色度帧内预测方法及装置 | |
CN103597831B (zh) | 方向帧内预测方法及其装置 | |
CN103650496B (zh) | 用于在hevc中编码的基于像素的帧内预测 | |
CN103283237B (zh) | 帧内预测方法和使用该方法的设备 | |
CN103430545B (zh) | 用于高效视频编码的内容适应性运动补偿滤波 | |
CN102648631B (zh) | 用于编码/解码高分辨率图像的方法和设备 | |
CN102763411B (zh) | 对视频编码的方法和设备以及对视频解码的方法和设备 | |
CN106067979B (zh) | 用于对图像进行解码的装置 | |
CN103220521B (zh) | 对图像边界的编码单元进行编码和解码的方法和设备 | |
CN104205845B (zh) | 具有统一位宽乘法器的lm模式 | |
EP3648462B1 (en) | Image processing method and device | |
CN103404137B (zh) | 有效的样本自适应补偿的方法和装置 | |
CN101854540B (zh) | 用于应用h.264视频编码标准的帧内预测方法及装置 | |
CN101990100B (zh) | 一种解码方法以及编码方法 | |
EP2529553B1 (en) | Video encoder, video decoder, method for video encoding and method for video decoding, separately for each colour plane | |
CN107071419A (zh) | 图像编码设备和方法以及图像解码设备和方法 | |
CN104380741A (zh) | 用于lm帧内预测的参考像素缩减 | |
CN106170092A (zh) | 用于无损编码的快速编码方法 | |
CN101710993A (zh) | 基于块的自适应超分辨率视频处理方法及系统 | |
CN103238334A (zh) | 图像帧内预测方法和设备 | |
CN104255033A (zh) | 用于lm模式计算的简化查找表 | |
KR100701478B1 (ko) | 동화상 압축 부호화 방법과 동화상 압축 부호화 장치 및프로그램 | |
CN101345872B (zh) | 视频编解码中实现双线性插值的方法 | |
CN103702122A (zh) | 编码模式选择方法、装置及编码器 | |
CN109510987A (zh) | 编码树节点划分方式的确定方法、装置及编码设备 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100609 Termination date: 20160523 |