发明内容
本发明的目的是提供一种视频图像亚像素插值的方法和装置,能利用已知像素之间的相关性内插出半像素和1/4像素值,使得运动补偿中运动矢量可以精确到1/4像素级,从而提高预测精度,提高编码效率。
为了达到上述目的,本发明采用的技术方案如下:
一、视频图像亚像素插值的方法
1、一种视频图像亚像素插值的方法:
1)根据亚像素点所处的不同位置分两步插值完成,5类亚像素点位置如下:
·一类半像素点:与整像素点在同一行或同一列的半像素点;
·二类半像素点:除了一类半像素点外的其他半像素点;
·一类1/4像素点:与整像素点在同一行或同一列的1/4像素点;
·二类1/4像素点:同时与一类半像素点和二类半像素点在同一行或同时与一类半像素点和二类半像素点在同一列的1/4像素点;
·三类1/4像素点:除了一类1/4像素点和二类1/4像素点之外的1/4像素点;
2)根据亚像素点所处的不同位置用不同滤波器插值。
2、所有的亚像素点分两步插值得到,第一步利用整像素点插值得到一类半像素点和一类1/4像素点;第二步利用已插值得到的一类半像素点插值得到二类半像素点、二类1/4像素点和三类1/4像素点。
3、对一类半像素用同一行中与其距离最近的4个整像素点做参考像素点或同一列中与其距离最近的4个整像素点做参考像素点由四抽头对称滤波器插值得到。
4、对一类1/4像素用同一行中与其距离最近的4个整像素点做参考像素点或同一列中与其距离最近的4个整像素点做参考像素点由四抽头不对称滤波器插值得到,其中对位于相邻一类半像素点左侧或上方的一类1/4像素点插值的滤波器和对位于相邻一类半像素点右侧或下方的一类1/4像素点插值的滤波器为镜像滤波器。
5、对二类半像素用同一行中与其距离最近的4个一类半像素点做参考像素点或同一列中与其距离最近的4个一类半像素点做参考像素点由四抽头对称滤波器插值得到。
6、对二类1/4像素用同一行中其距离最近的4个一类半像素点做参考像素点或同一列中与其距离最近的4个一类半像素点做参考像素点由四抽头不对称滤波器插值得到,其中对位于相邻二类半像素点左侧或上方的二类1/4像素点插值的滤波器和对位于相邻二类半像素点右侧或下方的二类1/4像素点插值的滤波器为镜像滤波器。
7、对三类1/4像素用位于其左下和右上方的一类半像素点做参考像素点由二抽对称线性滤波器插值或者用位于其右下和左上方一类半像素点做参考像素点由二抽对称线性滤波器插值得到。
8、四抽头对称滤波器,滤波器形式为:{Co1,Co2,Co2,Co1}/[2×(Co1+Co2)],Coii=1,2,为滤波器抽头系数,具体抽头系数为{-3,19,19,-3}/32,用于对一类半像素和二类半像素插值,滤波公式为:x=(Co1×X1+Co2×X2+Co2×X3+Co1×X4)/[(Co1+Co2)×2],其中Xi,i=1...4,为参考像素点。
9、四抽头不对称滤波器,滤波器形式为:{Co1,Co2,Co3,Co4}/(Co1+Co2+Co3+Co4),Coi,i=1...4,为滤波器抽头系数,具体抽头系数为{-5,59,13,-3}/64或{-3,29,7,1}/32,滤波公式为:x=(Co1×X1+Co2×X2+Co3×X3+Co4×X4)/(Co1+Co2+Co3+Co4),其中Xi,i=1...4,为参考像素点;该滤波器用于一类1/4像素点的插值和二类1/4像素点的插值。
二、视频图像亚像素插值的装置,它包括:
·用于从原始帧中读取整像素点像素值的输入装置;
·用于对一类半像素点和一类1/4像素点插值的第一步插值装置;
·用于暂存第一步插值结果的暂存装置;
·用于对二类半像素点、二类1/4像素点和三类1/4像素点插值的第二步插值装置;
·用于输出全部亚像素点像素值的输出装置。
输入装置和第一步插值装置之间用数据总线连接,用于传输整像素点像素值;第一步插值装置与暂存装置之间用数据总线连接,用于传输第一步插值得到的一类半像素点像素值;第一步插值装置与输出装置之间用数据总线连接,用于传输第一步插值得到的亚像素点像素值;暂存装置和第二步插值装置之间用数据总线连接,用于传输用于第二步插值的一类半像素点像素值;第二步插值装置和输出装置之间用数据总线连接,用于传输第二步插值得到的亚像素点像素值。
本发明与背景技术相比,具有的有益的效果是:
本发明在视频编解码环的运动补偿预测部分提供了较好的亚像素内插方法。第一、用较少抽头系数的滤波器对亚像素位置实现内插处理,减少了每次取入的参考像素点的个数,较高程度减缓了每次数据总线的传输量。第二、用两步插值内插出全部1/4精度的亚像素位置像素值,比背景技术减少了一步,即减少了取数次数,降低了数据总线的传输数据压力,并且减少了数据暂存装置的容量。第三、本发明使用的方法插值结果在性能上比原有背景技术有所提升。较优的插值结果减小了运动补偿残差的大小,降低了码率,提高了视频压缩编码效率。本发明中的视频图像亚像素插值装置完全实现本发明中的插值方法。
具体实施方式
在本方法中先把原始图像中的像素位置称为整像素点,例如图1中用大写字母A标出的点。需要插值得到的像素位置称为亚像素点,例如图1中其余用小写字母标出的点。亚像素点分为两类,即半像素点和1/4像素点。半像素点又分为两类,分别称为一类半像素点和二类半像素点。1/4像素点分为三类,分别称为一类1/4像素点,二类1/4像素点和三类1/4像素点。各类亚像素点分别定义如下:
一类半像素点:与整像素点在同一行的半像素点或与整像素点在同一列的半像素点。例如图1中的b1和b2。
二类半像素点:除了一类半像素点外的其他半像素点,例如图1中的。例如图一中的c。
一类1/4像素点:与整像素点在同一行的1/4像素点或与整像素点在同一列的1/4像素点。例如图1中的d1、d2、d3、d4。
二类1/4像素点:同时与一类半像素点和二类半像素点在同一行的1/4像素点或与同时与一类半像素点和二类半像素点在同一列的1/4像素点。例如图1中的e1、e2、e3、e4。
三类1/4像素点:除了一类和二类1/4像素点以外的其他1/4像素点。例如图1中的f1、f2、f3、f4。
本发明根据半像素点和1/4像素点的位置分类不同,在不同时间使用不同的滤波器内插出该位置的像素值。内插方法如下:
当当前需要内插得到的亚像素点为一类半像素点bx时,使用对称四抽头滤波器F1内插出该类半像素点。可以得到一类半像素点bx的像素值为bx=((-3)×A1+19×A2+19×A3+(-3)×A4)/32,其中当x=1时A1,A2,A3和A4为与bx同一行中左右距离最近的整像素点,它们从左至右的位置顺序为A1,A2,bx,A3,A4,如图2中所示。当x=2时A1,A2,A3和A4为与bx同一列中上下距离最近的整像素点。它们从上到下的位置顺序为A1,A2,bx,A3,A4,如图3中所示。
当当前需要内插得到的亚像素点为二类半像素点c时,使用对称四抽头滤波器F1内插出该类半像素点。二类半像素点c的像素值可以通过两种方法得到。第一种方法为
其中b1 2,b2 2,b3 2和b4 2为与c同一行中左右距离最近的已内插得到的一类半像素点,如图4中所示。它们从左至右的位置顺序为b1 2,b2 2,c,b3 2,b4 2。第二种方法为 其中b1 1,b2 1,b3 1和b4 1为与c同一列中上下距离最近的已内插得到的一类半像素点,如图5中所示。它们从上到下的位置顺序为b1 1,b2 1,c,b3 1,b4 1。两种方法在实现中可以任选其中一种。
当当前需要内插得到的亚像素点为一类1/4像素点dx时,使用不对称四抽头滤波器内插出该一类1/4像素点。该类1/4像素点内插时分两种情况。
●当该类1/4像素点位于相邻的一类半像素点左侧时,即图1中的d1时,使用滤波器F2插值。可以得到该位置的一类1/4像素点d1的像素值为d1=(m1×A1+m2×A2+m3×A3+m4×A4)/(m1+m2+m3+m4),其中A1,A2,A3和A4为与d1同一行中左右距离最近的整像素点,如图2所示。它们从左至右的位置顺序为A1,A2,d1,A3,A4。当该类1/4像素点位于相邻的一类半像素点上方时,即图1中的d3时,使用滤波器F2插值。可以得到该位置的一类1/4像素点d3的像素值为d3=(m1×A1+m2×A2+m3×A3+m4×A4)/(m1+m2+m3+m4),其中A1,A2,A3和A4为与d3同一列中上下距离最近的整像素点,如图3所示。它们从上到下的位置顺序为A1,A2,d3,A3,A4。
●当该类1/4像素点位于相邻的一类半像素点右侧时,即图1中的d2时,使用滤波器F3插值。可以得到该位置的一类1/4像素点d2的像素值为d2=(m4×A1+m3×A2+m2×A3+m1×A4)/(m1+m2+m3+m4),其中A1,A2,A3和A4为与d2同一行中左右距离最近的整像素点,如图2所示。它们从左至右的位置顺序为A1,A2,d2,A3,A4。当该类1/4像素点位于相邻的一类半像素点下方时,即图1中的d4时,使用滤波器F3插值。可以得到该位置的一类1/4像素点d4的像素值为d4=(m4×A1+m3×A2+m2×A3+m1×A4)/(m1+m2+m3+m4),其中A1,A2,A3和A4为与d4同一列中上下距离最近的整像素点,如图3所示。它们从上到下的位置顺序为A1,A2,d4,A3,A4。
当当前需要内插得到的亚像素点为二类1/4像素点ex时,使用不对称四抽头滤波器内插出该二类1/4像素点。该类1/4像素点内插如下:
●当该类1/4像素点位于最近的二类半像素点左侧时,即图1中的e1,使用滤波器F2插值。可以得到该类像素点的像素值为 其中b1 2,b2 2,b3 2和b4 2为与e1同一行中距离最近的4个已内插得到的一类半像素点。它们从左至右的位置顺序为b1 2,b2 2,e1,b3 2,b4 2,如图4所示。
●当该类1/4像素点位于最近的二类半像素点上方时,即图1中的e3,使用滤波器F2插值。可以得到该类像素点的像素值为 其中b1 1,b2 1,b3 1和b4 1为与e3同一列中距离最近的4个已内插得到的一类半像素点。它们从上到下的位置顺序为b1 1,b2 1,e3,b3 1,b4 1,如图5所示。
●当该类1/4像素点位于最近的二类半像素点右侧时,即图1中的e2,使用滤波器F3插值。可以得到该类像素点的像素值为 其中b1 2,b2 2,b3 2和b4 2为与e2同一行中距离最近的4个已内插得到的一类半像素点。它们从左至右的位置顺序为b1 2,b2 2,e1,b3 2,b4 2,如图4所示。
●当该类1/4像素点位于最近的二类半像素点下方时,即图1中的e4,使用滤波器F3插值。可以得到该类像素点的像素值为 其中b1 1,b2 1,b3 1和b4 1为与e4同一列中距离最近的4个已内插得到的一类半像素点。它们从上到下的位置顺序为b1 1,b2 1,e3,b3 1,b4 1,如图5所示。
当当前需要内插得到的亚像素点为三类1/4像素点fx时,使用线性滤波器F4内插出该三类1/4像素点。该类1/4像素点内插时分两种情况。
●当该类1/4像素点位于最近的二类半像素点的左上方时,即图1中的f1。可以得到该位置三类1/4像素点f1的像素值为
其中b2 1为位于f1右上方的一类半像素点,b1 2为位于f1左下方的一类半像素点,如图5中所示。当该类1/4像素点位于最近的二类半像素点的右下方时,即图1中的f2。可以得到该位置三类1/4像素点f2的像素值为
其中b2 2为位于f2右上方的一类半像素点,b3 1为位于f2左下方的一类半像素点,如图5中所示。
●当该类1/4像素点位于最近的二类半像素点的左下方时,即图1中的f3。可以得到该位置三类1/4像素点f3的像素值为
其中b3 1为位于f2右下方的一类半像素点,b1 2为位于f2左上方的一类半像素点,如图5中所示。当该类1/4像素点位于最近的二类半像素点的右上方时,即图1中的f4。可以得到该位置三类1/4像素点f4的像素值为
其中b2 2为位于f4右下方的一类半像素点,b2 1为位于f4左上方的一类半像素点,如图5中所示。
插值过程中使用4种不同系数和抽头数的数字滤波器Fx:{Co1,Co2,Co3,Co4}/(Co1+Co2+Co3+Co4)。其抽头系数和抽头数具体如下:
F1为抽头系数对称的四抽头滤波器,其抽头系数为:{-3,19,19,-3}/32。
F2为抽头系数不对称的四抽头滤波器,其抽头系数为:{m1,m2,m3,m4}/(m1+m2+m3,+m4),具体系数可以选择{-5,59,13,-3}/64或{-3,29,7,-1}/32其中的一组。
F3为抽头系数不对称的四抽头滤波器,其抽头系数为F2镜像,即为:{m4,m3,m2,m1}/(m1+m2+m3,+m4),具体的系数由F2的系数镜像后得到。
F4为抽头系数对称的二抽头线性插值滤波器,其抽头系数为:{1,1}/2。
一种用于视频图像亚像素插值的装置包括:输入装置210、第一步插值装置220、数据暂存装置230、第二步插值装置240和输出装置250,如图6所示。
输入装置210用于从原始帧中取出插值用到的参考像素点。
第一步插值装置220利用整像素对一类半像素点、一类1/4像素点插值。用到滤波器F1、F2、F3。其中的算术逻辑单元用乘法器、加法器和移位器实现插值过程。
第二步插值装240置利用一类半像素点插值得到二类半像素点、二类1/4像素点和三类1/4像素点。用到滤波器F1、F2、F3和F4。其中的算术逻辑单元用乘法器、加法器和移位器实现插值过程。
其中四抽头对称滤波器的结构如图7所示。Co1’和Co2’为归一化后的滤波器系数,即
Co1’=Co1/[(Co1+Co2)×2]
Co2’=Co2/[(Co1+Co2)×2]
其中四抽头不对称滤波器的结构如图8所示。Co1’、Co2’、Co3’和Co4’为归一化后的滤波器系数,即
Co1’=Co1/(Co1+Co2+Co3+Co4)
Co2’=Co2/(Co1+Co2+Co3+Co4)
Co3’=Co3/(Co1+Co2+Co3+Co4)
Co4’=Co4/(Co1+Co2+Co3+Co4)
第一步插值装置220和第二步插值装置240之间的数据暂存装置230用于存储第一次产生的一类半像素点像素值,这些值用于第二步插值过程。
输出装置250用于输出内插得到的所有亚像素位置的像素值。
输入装置210和第一步插值装置220之间用数据总线连接,用于传输各整像素位置的像素值;第一步插值装置220和数据暂存装置230用数据总线相连,用于传输第二步插值需要的一类半像素点像素值;第一步插值装置220和输出装置用250数据总线相连,用于传输第一步插值得到的亚像素点像素值;数据暂存装置230和第二步插值装置240之间用数据总线连接,用于传输各一类半像素点位置的像素值;第二步插值装置240和输出装置250之间用数据总线连接,用于传输第二步插值得到的亚像素位置的像素值。
实施实例:
在对亚像素插值时,第一步对一类半像素点和一类1/4像素点的位置进行插值。这些像素点的插值用到的都是整像素点。第二步对二类半像素点、二类1/4像素点和三类1/4像素点的位置进行插值。这些像素点的插值用到的都是一类半像素点和一类1/4像素点,即第一步产生的结果。两步就可以把所有的亚像素位置都插值完成。具体过程如下:
1、标记为b1的一类半像素点的像素值由如下方法得到:
将水平方向距离最近的四个整数像素点利用4抽头滤波器F1进行滤波,如图2所示,得到插值结果b1。其中滤波器抽头系数为{-3,19,19,-3}/32。
b1=((-3)×A1+19×A2+19×A3+(-3)×A4)/32
2、标记为b2的一类半像素点的像素值由如下方法得到:
将垂直方向距离最近的四个整数像素点利用4抽头滤波器F1进行滤波,如图3所示,得到插值结果b2。其中滤波器抽头系数为{-3,19,19,-3}/32。
b2=((-3)×A1+19×A2+19×A3+(-3)×A4)/32
3、标记为d1的一类1/4像素点的像素值由如下方法得到:
将水平方向距离最近的四个整数像素点利用4抽头滤波器F2进行滤波,如图2所示,得到插值结果d1。其中滤波器抽头系数选{-5,59,13,-3}/64。
d1=((-5)×A1+59×A2+13×A3+(-3)×A4)/64
4、标记为d2的一类1/4像素点的像素值由如下方法得到:
将水平方向距离最近的四个整数像素点利用4抽头滤波器F3进行滤波,如图2所示,得到插值结果d2。其中滤波器抽头系数选{-3,13,59,-5}/64。
d2=((-3)×A1+13×A2+59×A3+(-5)×A4)/64
5、标记为d3的一类1/4像素点的像素值由如下方法得到:
将垂直方向距离最近的四个整数像素点利用4抽头滤波器F2进行滤波,如图3所示,得到插值结果d3。其中滤波器抽头系数选{-5,59,13,-3}/64。
d3=((-5)×A1+59×A2+13×A3+(-3)×A4)/64
6、标记为d4的一类1/4像素点的像素值由如下方法得到:
将垂直方向距离最近的四个整数像素点利用4抽头滤波器F3进行滤波,如图3所示,得到插值结果d4。其中滤波器抽头系数选{-3,13,59,-5}/64。
d4=((-3)×A1+13×A2+59×A3+(-5)×A4)/64
7、标记为c的二类半像素点的像素值由如下方法得到:
将水平或垂直方向距离最近的四个一类半像素点利用4抽头滤波器F1进行滤波,如图4所示,得到插值结果c。其中滤波器抽头系数为{-3,19,19,-3}/32。
或者
8、标记为e1的二类1/4像素点的像素值由如下方法得到:
将水平方向距离最近的四个一类半像素点利用4抽头滤波器F2进行滤波,如图4所示,得到插值结果e1。其中滤波器抽头系数选{-5,59,13,-3}/64。
9、标记为e2的二类1/4像素点的像素值由如下方法得到:
将水平方向距离最近的四个一类半像素点利用4抽头滤波器F3进行滤波,如图4所示,得到插值结果e2。其中滤波器抽头系数选{-3,13,59,-5}/64。
10、标记为e3的二类1/4像素点的像素值由如下方法得到:
将垂直方向距离最近的四个一类半像素点利用4抽头滤波器F2进行滤波,如图5所示,得到插值结果e3。其中滤波器抽头系数选{-5,59,13,-3}/64。
11、标记为e4的二类1/4像素点的像素值由如下方法得到:
将垂直方向距离最近的四个一类半像素点利用4抽头滤波器F3进行滤波,如图5所示,得到插值结果e4。其中滤波器抽头系数选{-3,13,59,-5}/64。
12、标记为f1或f2的三类1/4像素点的像素值由如下方法得到:
将f1或f2位置右上方和左下方两个一类半像素点利用线性插值方法,如图5所示,得到插值结果f1或f2。
或
13、标记为f3或f4的三类1/4像素点的像素值由如下方法得到:
将f3或f4位置右下方和左上方两个一类半像素点利用线性插值方法,如图5所示,得到插值结果f3或f4。
或
以上各亚像素的插值过程中,1-6为第一次取数插值完成的部分,7-13为第二次取数插值完成的部分。至此,两步完成所有的亚像素位置的插值。
一种用于视频图像亚像素插值的装置包括:输入装置210、第一步插值装置220、数据暂存装置230、第二步插值装置240和输出装置250,如图6所示:
输入装置210用于从原始帧中取出插值用到的参考像素点;
第一步插值装置220利用整像素对一类半像素点、一类1/4像素点插值。用到滤波器F1、F2、F3。其中的算术逻辑单元用乘法器、加法器和移位器实现插值过程;
第二步插值装置240利用一类半像素点插值得到二类半像素点、二类1/4像素点和三类1/4像素点。用到滤波器F1、F2、F3和F4。其中的算术逻辑单元用乘法器、加法器和移位器实现插值过程;
其中算术逻辑单元中四抽头对称滤波器的结构如图7所示。Co1’和Co2’为归一化后的滤波器系数,即
Co1’=Co1/[(Co1+Co2)×2]
Co2’=Co2/[(Co1+Co2)×2]
其中算术逻辑单元中四抽头不对称滤波器的结构如图8所示。Co1’、Co2’、Co3’和Co4’为归一化后的滤波器系数,即
Co1’=Co1/(Co1+Co2+Co3+Co4)
Co2’=Co2/(Co1+Co2+Co3+Co4)
Co3’=Co3/(Co1+Co2+Co3+Co4)
Co4’=Co4/(Co1+Co2+Co3+Co4)
第一步插值装置220和第二步插值装置240之间的数据暂存装置230用于存储第一次产生的一类半像素点像素值,这些值用于第二步插值过程;
输出装置250用于输出内插的到的所有亚像素位置的像素值。
输入装置210和第一步插值装置220之间用数据总线连接,用于传输各整像素位置的像素值;第一步插值装置220和数据暂存装置230之间用数据总线连接,用于传输一类半像素点位置的像素值;第一步插值装置220和输出装置250之间用数据总线连接,用于传输第一次内插得到的亚像素位置的像素值。数据暂存装置230和第二此插值装置240之间用数据总线连接,用于传输各一类半像素点位置的像素值;第二步插值装置240和输出装置250之间用数据总线连接,用于传输第二次内插得到的亚像素位置的像素值。
上述的视频图像亚像素插值装置可以用处理器***,微控制器,可编程逻辑器件或微处理器等实现部分或全部的操作。上述的一些操作可以用软件实现,同时另一些操作可以用硬件实现。
为了方便起见,这些操作被描述为不同的互连的功能单元或不同的软件模块。但是,这不是必要的。在一些应用中,这些功能单元或模块可以被集成到单一的逻辑器件、程序或操作中,而没有明显的界限。在任何情况中,功能单元和软件模块或描述的特征可以独立实现,或与其他操作一起用硬件或软件实现。