CN100502511C - 用于分数像素精度运动预测的插值图像内存组织方法 - Google Patents
用于分数像素精度运动预测的插值图像内存组织方法 Download PDFInfo
- Publication number
- CN100502511C CN100502511C CN 200410076759 CN200410076759A CN100502511C CN 100502511 C CN100502511 C CN 100502511C CN 200410076759 CN200410076759 CN 200410076759 CN 200410076759 A CN200410076759 A CN 200410076759A CN 100502511 C CN100502511 C CN 100502511C
- Authority
- CN
- China
- Prior art keywords
- pixel
- subclass
- image
- interpolation
- integer
- 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
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及在视频压缩编码中的分数像素精度运动预测技术,为解决现有技术中所需生成和使用的2n倍插值图像在内存中按照自然顺序存放而引起的读取不便、效率低下等问题。本发明提出一种按像素的特性对图像进行高效存储的内存组织方法,在进行1/2n像素精度运动预测时,根据要生成的2n倍插值图像,将其中的像素分成整数位置子集、1/21位置子集、1/22位置子集、…、以及1/2n位置子集,最终分类划分出22n个与原始图像尺寸相同的子图像;然后将各个子图像形成一个连续内存区域存储到存储器中。基于此种内存组织方法,本发明还提供采用数字信号处理器(DSP)上的单指令多数据(SIMD)加速技术进行滤波插值以生成该插值图像的方法以及快速计算运动估计中的代价函数(SAD)的方法。
Description
技术领域
本发明涉及视频压缩编码中的分数像素精度运动预测算法,更具体地说,涉及一种视频压缩编码中用于分数像素精度运动预测的插值图像内存组织方法、基于该插值图像内存组织方法生成4倍插值图像的各分数像素的方法、以及基于这两种方法快速计算预测误差指标SAD的方法。
背景技术
目前在业界应用中居于主流的视频压缩编码标准中,不论是国际上的H.263、H.263+、H.264、以及MPEG-4,还是国内的AVS(Advanced Audio-VideoSystem,我国的先进音频视频编码***)都基于一个共同的框架,即:图像分块+运动预测+残差图像DCT变换(也称整数变换、Hadarmard变换)+量化+熵编码。其中,利用运动图像前后帧之间的相关性,通过前帧中的区域来预测经过运动后的后帧中的对应区域,从而获得残差图像并进行量化和熵编码,充分利用了运动图像帧之间的统计相关性来消除冗余,达到数据压缩的目的。因此,运动预测是这类基于共同框架的视频压缩编码标准的核心部分,是影响整体压缩效率的最主要的因素。
运动预测的一般过程是这样的:对于当前视频帧中某个给定区域(如MB),在参考帧(前一帧,或者多参考帧情况下的前k帧)中搜索基于某种误差准则最优的匹配区域。被预测区域相对于参考区域几何位置的变化,可以用一个二维矢量来表示,该矢量叫做运动矢量或者位移矢量。这个基于某种特定误差准则搜索最优运动矢量的过程叫做运动估计,是整个运动预测的一部分。运动预测的效率取决于被预测区域和预测区域之间的残差图像,残差越小,效率越高。进一步,运动预测的效率实际上决定于运动估计的精度,而预测精度又直接依赖于运动矢量。
数字视频中的图像都是模拟视频在时间和空间上进行离散采样并数字化的结果,在时间上采样形成离散的各个帧,在空间上采样形成帧中的各个像素。在一个帧中,像素是对于空间连续的模拟图像按照一定的采样间隔采样得到的。因此两个相邻的像素之间的距离就是采样间隔。为了更加精确表示运动矢量,需要引入分数采样位置(Fractional Sample Position)运动预测的概念。采用分数采样位置,可以设想在两个相邻整数像素之间有分数位置像素,比如1/2像素(距离整数像素距离为1/2个采样间隔),1/4像素(距离整数像素距离为1/4个采样间隔),1/8像素(距离整数像素距离为1/8个采样间隔)等。事实证明,采用了分数采样位置运动预测后,视频压缩编码效率能够提高很多,比如采用1/4像素精度运动预测后,一般压缩视频的PSNR(Peak Signal to Noise Ratio,峰值信噪比)可以提高2dB。目前,H.263、H.263+采用的是1/2像素精度运动预测,H.264采用的是1/4像素精度运动预测,国内的AVS采用的是1/4像素精度运动预测。
分数采样位置运动预测的一般过程是:首先采用一定的整数像素运动估计算法,比如全搜索、3步法、新3步法、4步法等,获得最优的整数像素运动矢量;然后再在这个整数像素运动矢量位置周围进行1/2像素运动估计,找到最优的1/2像素运动矢量位置;如果需要进行1/4像素运动估计,则以这个最优1/2像素位置为中心,在周围进行1/4像素运动估计;同样,在获取最优1/4像素运动矢量位置后,可以进行1/8像素运动估计。
以H.264/AVC中规定的1/4像素精度运动预测标准实现方法为例,如图1所示,图中有阴影的圆为当前宏块位置、无阴影的圆为整数像素位置、三角形为1/2像素位置、小黑点为1/4像素位置,图中的箭头表示进行运动搜索时候搜索的路径方向。运动矢量是当前宏块相对于其参考宏块在x、y两个方向上位置的差值组成的矢量比如[2,-3]等;在H.264/AVC标准中,1/4像素精度运动预测的搜索过程可以分为三个步骤:
1)采用某种运动估计方法,找出整数像素最佳匹配位置;
2)从整数像素最佳匹配位置及其周围的8个1/2像素位置中找出1/2像素最佳匹配位置:
3)从1/2像素最佳匹配位置及其周围的8个1/4像素位置中找出1/4像素最佳匹配位置。
上述过程中,整数像素位置的匹配搜索是以前面某一帧的本地解码重建图像为参考图像的。而1/2像素位置和1/4像素位置的匹配搜索则要以本地解码重建图像插值后的图像为参考图像,这个参考图像的宽和高都4倍于原图像。
4倍参考图像的结构如图2所示。其中的像素分成以下几类:
1)整数像素:行、列坐标都是采样间隔整数倍的那些像素,如图2中的有阴影的圆圈像素A、B、C、D、E、F、G、H、I、J、K、L等等。
2)1/2像素:即行、列坐标中至少有一个具有(k+1/2)d或者(k-1/2)d的形式,但是行、列坐标都不具有(k+1/4)d或者(k-1/4)d形式的那些像素,其中k为整数,d为采样间隔。如图2中所示,其中的各个1/2像素又分成两个子类:
A、全1/2像素:即行、列坐标都具有(k+1/2)d或者(k-1/2)d的形式,如像素j、gg、hh等等。
B、半1/2像素:即行,列坐标中只有一个具有(k+1/2)d或者(k-1/2)d的形式,例如像素b、h、m、s、aa、bb、cc、dd、ee、ff等等。
3)1/4像素:即行、列坐标中至少有一个具有(k+1/4)d或者(k-1/4)d的形式的那些像素,其中k为整数,d为采样间隔。如图2中无阴影的圆圈像素a、c、d、e、f、g、i、k等等。
4倍参考图像的生成是采用一个多阶段插值过程完成的。分为如下步骤:
1)由整数像素通过插值生成1/2像素,其中采用的插值滤波器是一个6阶的FIR(Finite Impulse Response有限冲击响应)滤波器,其权向量是w=[1,-5,20,20,-5,1]T。过程如下:
A、由整数像素通过插值产生半1/2像素,以像素b、h为例:
b1=(E-5*F+20*G+20*H-5*I+J),生成中间值b1,
b=Clip((b1+16)>>5),偏移,规一化,剪切。
其中,偏移是加上一个数(偏移量,可正可负);规一化指对于一个变量除以一个正数,使得在该变量取值范围内,商的绝对值始终不大于1;剪切表示对于超过某个范围的变量,强制其值在这个范围内。比如变量x的范围是[0,18],当x=20时,超出了该范围,则x将被剪切到x=18。
因为滤波器各权值的绝对值之和为32,因此归一化就是除以32,用右移5位操作实现。剪切函数Clip把不在[0,255]范围内的数值通过剪切调整到[0,255]范围内。同样道理,可以求得h:
h1=(A-5*C+20*G+20*M-5*R+T)
h=Clip((h1+16)>>5)
B、由半1/2像素通过插值产生全1/2像素。插值所用的滤波器仍然是上面的6阶FIR滤波器。以像素j为例:
j1=(bb-5gg+20*h1+20*m1-5*kk+cc),生成中间值j1
j=Clip((j1+512)>>10)
经过以上两个子步骤,所有1/2像素都生成了。
2)由整数像素和1/2像素通过插值生成1/4像素。1/4像素都是位于两个整数像素或者1/2像素之间的(水平方向、垂直方向、对角线方向),因此可采用对于临近的两个整数像素或者1/2像素进行算术平均的方法求得。具体计算公式如下:
a=(D+b+1)>>1
c=(E+b+1)>>1
d=(D+h+1)>>1
n=(H+h+1)>>1
以上为水平方向求均值。对于对角线方向求均值的情况,计算方式如下:
e=(b+h+1)>>1
g=(b+m+1)>>1
现有技术中,4倍插值图像在内存中的存放是按照自然顺序连续方式进行的,即按照图2所示模式存放。然而,将4倍插值图像按照自然顺序存放并不是最合理的模式。在插值生成4倍图像的过程中,首先生成的是整数像素(已经存在),然后生成1/2像素,最后生成1/4像素。在生成1/2像素过程中,如果采用基于SIMD(Single Instruction Multiple Data,单指令多数据)的DSP(Digital Signal Processor,数字信号处理芯片)加速处理技术,SIMD指令需要整块读取整数像素;同样在生成1/4像素过程中,需要整块读取1/2像素和整数像素。按照这样的自然顺序组织图像内存,无法做到整块读取各类像素,因为目前的存储方法是按照自然顺序,对于像素不分类。比如从4倍插值图像左上角像素开始,依次存储起来。这样的顺序中就是:整、1/4、1/2、1/4、整、1/4、1/2、1/4、......,第一行结束后,进入第二行,重复这个顺序,直到最后一行。这样的话,在任何一个内存区域中,像素都不是按照类连续排列的。比如任何两个整数像素不连续出现,任何两个1/2像素不连续出现。更不用说一整块同类像素了。因此如果要读取所有整像素,就必须在内存中按照一定间隔(每隔3个数)读取,效率很低。
另外,在4倍插值图像生成之后进行运动估计的过程中,在整数像素精度运动预测时,只需要把被预测宏块和4倍图像中的整数位置子集进行比较,求SAD(Summed Absolute Difference,绝对差和)。同样,进行1/2像素精度运动预测时,只需要和4倍插值图像中的1/2位置子集的部分进行比较;1/4像素精度运动预测需要比较的只是1/4位置子集的部分。因此如果采用SIMD类DSP加速技术,每次比较计算SAD,都只需要整块读取某一类具有共同属性的像素。但是在图像的自然顺序内存组织中,这些具有共同属性的像素不是连续存放的,不便于整块读取。
发明内容
针对现有技术的上述缺陷,本发明要解决现有视频压缩编码技术中因插值图像在内存中按照自然顺序存放而引起的无法做到整块读取各类像素等问题,提供一种新的图像内存组织方法,使得1/2像素和1/4像素精度运动预测能够充分利用SIMD类DSP加速算法,以提高计算效率。
为解决上述技术问题,本发明提供一种用于分数像素精度运动预测的插值图像内存组织方法,在进行1/2n像素精度运动预测时(其中n为自然数),按以下步骤组织插值图像的内存:
(1)根据要生成的2n倍插值图像,将其中的像素分成整数位置子集、1/21位置子集、1/22位置子集、…、以及1/2n位置子集,所述各个子集中分别包含全体整数像素、全体1/2像素、全体1/4像素、…、以及全体1/2n像素;
(2)以所述整数位置子集中的全体整数像素形成一个与原始图像尺寸相同的整像素子图像;
按各个1/2像素与相邻整数像素之间的垂直、水平、以及对角位置关系进行分类,将所述1/2位置子集中的全体1/2像素进一步分成3个更小的子集,一一对应地构成3个与原始图像尺寸相同的1/2像素子图像;
按各个1/4像素与相邻的整数像素及1/2像素之间的垂直、水平、以及对角位置关系和距离关系进行分类,将所述1/4位置子集中的全体1/4像素进一步分成12个更小的子集,一一对应地构成12个与原始图像尺寸相同的1/4像素子图像;
依此类推,在n大于或等于3时,按各个1/2n像素与相邻的整数像素、1/2像素、1/4像素、…、1/2(n-1)像素之间的垂直、水平、以及对角位置关系和距离关系进行分类,将所述1/2n位置子集中的全体1/2n像素进一步分成(22n-22(n-1))个更小的子集,一一对应地构成(22n-22(n-1))个与原始图像尺寸相同的1/2n像素子图像;
(3)将所述各个子图像形成一个连续内存区域存储到存储器中;
(4)除了整像素子图像外,对已存储的所述各个子图像进行零初始化处理。
在本发明所述插值图像内存组织方法的第(3)步中,可按以下三种拼接方法中的任一种将所述各个子图像形成一个连续内存区域存储到存储器中:
A、22n X 1拼接,即竖条拼接;
B、2n X 2n拼接,即正方形拼接;
C、1 X 22n拼接,即横条形拼接。
针对1/4像素精度运动预测,本发明还提供一种根据上述插值图像内存组织方法、利用数字信号处理芯片提供的单指令多数据类加速技术生成4倍插值图像的各分数像素的方法,其中包括以下步骤:
(1)利用整像素子图像SP0,通过滤波插值生成1/2像素子图像SP4、SP8。
(2)利用1/2像素子图像SP4,通过滤波插值生成1/2像素子图像SP12;
(3)利用整像素子图像SP0和1/2像素子图像SP4、SP8、SP12,通过水平方向滤波插值生成1/4像素子图像SP1、SP5、SP9、SP13;
(4)利用整像素子图像SP0和1/2像素子图像SP4、SP8、SP12,通过垂直方向滤波插值生成1/4像素子图像SP2、SP6、SP10、SP14;
(5)利用整像素子图像SP0和1/2像素子图像SP4、SP8、SP12,通过+45°和-45°对角线方向滤波插值生成1/4像素子图像SP3、SP7、SP11、SP15。
针对1/4像素精度运动预测,本发明还提供一种根据上述生成4倍插值图像的各分数像素的方法、利用数字信号处理芯片提供的单指令多数据类加速技术快速计算预测误差指标SAD的方法,其中按以下步骤计算当前宏块MB0与运动估计过程中,参考帧中某个位置的参考宏块MBr之间的预测误差指标SAD:
(1)在进行整像素精度运动预测时,根据MBr的位置,从子图像SP0中整块读取MBr的数据,然后计算绝对差和;
(2)在进行1/2像素精度运动预测时,根据MBr的位置,从子图像SP4、SP8、SP12中的某个整块读取MBr的数据,然后计算绝对差和;
(3)在进行1/4像素精度运动预测时,根据MBr的位置,从子图像SP1、SP2、SP3、SP5、SP6、SP7、SP9、SP10、SP11、SP13、SP14、SP15中的某个整块读取MBr的数据,然后计算绝对差和。
本发明的方法克服了现有4倍插值图像在内存中按照自然顺序存放时所带来的读取不便的问题。使得1/2像素和1/4像素精度运动预测能够充分利用SIMD类DSP加速算法以提高效率。其中,按照属性将4倍插值图像中的各个像素分成子集,每种子集再分成若干子图像,使得每个子图像能够在SIMD类指令运算中作为整块数据被读取。采用本发明的方法,可以在H.263/H.263+、H.264、MPEG-4等国际标准和AVS 1.0国家标准中,对于1/2像素和1/4像素精度运动预测过程中的插值生成4倍插值图像运算和运动估计运算,能进行有效的加速。尤其是借助SIMD类DSP加速机制的时候。因此,可以在其它条件不变的前提下,提高视频编码和解码的帧率。提高视频通信类设备比如视频会议或者可视电话的性能,或者通过采用处理能力更低的DSP达到同样的性能,来降低产品的成本。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是现有H.264/AVC标准中的1/4像素精度运动预测的搜索过程;
图2是整数像素、1/2像素和1/4像素在4倍插值图像中的相对几何位置关系;
图3是本发明中对4倍插值图像中的各种像素按照属性进行分类和各类的编号;
图4a、图4b、图4c分别是原始图像、传统存储方法下的4倍插值图像、以及本发明存储方法下的4倍插值图像;
图5a、图5b、图5c分别本发明所得4倍插值图像P4x4中的16个子图像的拼接存储方法。
具体实施方式
下面将以1/4像素精度运动预测为例对本发明进行说明。
对于1/4像素精度运动预测,本发明方法的关键在于一种对于4倍(即宽度和高度都是原来图像的4倍的插值图像)插值参考图像内容的重新组织和拼接方法,从而保证其在内存中连续存储。使用本发明的方法后,在通过插值形成4倍插值参考图像以及进行1/2像素、1/4像素运动估计时,可以充分利用被相继访问的像素数据在存储空间中的邻近性来显著提高计算效率。当利用DSP提供的SIMD加速功能,如Intel CPU的MMX、SSE等进行加速处理时,其性能提升尤其明显,因为这种数据空间邻近性非常适合SIMD。该方法主要针对H.264/AVC中要求的1/4像素精度运动预测的高效实现,但是其原理完全可以用于H.263/H.263+中的1/2像素精度运动预测,MPEG-4中的1/4像素精度运动预测,以及AVS标准中的1/4像素精度运动预测。
其中,根据将要生成的4倍插值图像,将其中的像素分成三个子集,如下:
整数位置子集SIP={全体整数像素},在图3中该子集的像素用实心大园表示;
1/2位置子集SHP={全体1/2像素},在图3中该子集的像素用实心正方形表示;
1/4位置子集SQP={全体1/4像素},在图3中该子集的像素用空心正方形表示。
从图3中的虚线框内可以看出,针对右上角的整数像素A(编号为0),相应会有3个1/2像素(编号为4、8、12),并有12个1/4像素(编号为1、2、3、5、6、7、9、10、11、13、14、15)。因此,本发明中以整数位置子集SIP中的全体像素作构成一个整像素子图像SP0,该子图像与原图像尺寸相同。
再按各个1/2像素与相邻整数像素之间的垂直、水平、以及对角位置关系进行分类,将1/2位置子集SHP中的全体1/2像素进一步分成3个子集,每一个子集构成一个与原始图像尺寸相同的1/2像素子图像,共构成3个1/2像素子图像SP4、SP8、SP12;
再按各个1/4像素与相邻整数像素及1/2像素之间的垂直、水平、以及对角位置关系和距离关系(对于1/4像素分类要考虑距离)进行分类,将1/4位置子集SHP中的全体1/4像素进一步分成12个子集,每一个子集构成一个与原始图像尺寸相同的1/4像素子图像,共构成12个1/4像素子图像SP1、SP2、SP3、SP5、SP6、SP7、SP9、SP10、SP11、SP13、SP14、SP15;
因此,4倍插值图像最终可以表示成:
在上面对于P4x4进行按像素分类重新组织之后,生成了16个与原图像等大小的子图像。这些子图像具体在内存中的存储可以有很多方式。最简单的方法就是把16幅图像分别单独存储,但是,这种存储方法会导致计算各位置相应SAD值时发生跳跃式读取数据,如在1/2像素搜索过程中,计算最佳整数像素位置正上方的1/2像素位置对应的SAD值时,需要从第8幅图像中读取数据,但计算左上方和右上方1/2像素位置对应的SAD值时,却需要从第12幅图像中读取数据,若16幅图像分别独立存储,则第8幅图像和第12幅图像在内存中的存放位置会相距很远,在这两个位置往复访问势必会影响存取速度。因此,更为科学的方法是拼接存储,即把16幅图像拼接成一幅大的图像存储在内存中。为此,本发明提出了三种拼接方法,
所谓内存拼接,主要是用于那些对于内存中读取写入数据有按照2的整数次方倍数字节边界对次要求的DSP设计的提高读写效率的方法。如果读写的某个数据块没有按照一定字节数(比如32、64字节)的边界对齐,就需要多读或写一些数据(通常补零)来凑成边界对齐,这样一来自然会影响效率。
对于1/2像素和1/4像素精度运动预测,本发明可以给出三种满足边界对齐的拼接方法。图5a、图5b、图5c示出了对于1/4像素精度运动预测情况适用的三种内存拼接方法。该图中的每个块表示一个子图像。分别是:
A、16 X 1拼接,即16个子图像拼接成一个竖条;
B、4 X 4拼接,(即16个子图像拼接成一个正方形);
C、1 X 16拼接,即16个子图像拼接成一个(横条)。
对于1/2像素精度运动预测情况,同样也可以相应有三种拼接策略:
A、4 X 1拼接(竖条);
B、2 X 2拼接(正方形);
C、1 X 4拼接(横条)。
对于1/8像素,乃至更大的n,这三种拼接策略都适用,但是可能还存在更多的策略。因此对于一般的n,三种拼接策略是:
A、22n X 1拼接,即(竖条形拼接);
B、2n X 2n拼接,即正方形拼接;
C、1 X 22n拼接,即横条形拼接。
最后,除了整像素子图像外,对已存储的所述各个子图像进行零初始化处理。
由原始图像生成4倍插值图像P4x4的过程,因为P4x4结构上的便利,可以采用SIMD类DSP加速指令完成,滤波设计的卷积运算、移位运算都可以以子图像为单位整块完成。之所以采用图3所示的编号方法,是为了与现有的H.264和其它标准一致)
在运动估计中,SAD运算可以通过从某个子图像中取出和被预测宏块大小相等的子矩阵借助SIMD指令进行加速。
根据上述插值图像内存组织方法,可利用DSP提供的SIMD类加速技术,按以下步骤生成4倍插值图像的各分数像素:
(1)利用整像素子图像SP0,通过滤波插值生成1/2像素子图像SP4、SP8。
(2)利用1/2像素子图像SP4,通过滤波插值生成1/2像素子图像SP12.
(3)利用整像素子图像SP0和1/2像素子图像SP4、SP8、SP12,通过水平方向滤波插值生成1/4像素子图像SP1、SP5、SP9、SP13。
(4)利用整像素子图像SP0和1/2像素子图像SP4、SP8、SP12,通过垂直方向滤波插值生成1/4像素子图像SP2、SP6、SP10、SP14。
(5)利用整像素子图像SP0和1/2像素子图像SP4、SP8、SP12,通过+45°和-45°对角线方向滤波插值生成1/4像素子图像SP3、SP7、SP11、SP15。
根据上述插值图像内存组织方法和生成4倍插值图像的各分数像素的方法,可利用DSP提供的SIMD类加速技术,按以下步骤计算当前宏块MB0与运动估计过程中,参考帧中某个位置的参考宏块MBr之间的预测误差指标SAD:
(1)在进行整像素精度运动预测时,根据MBr的位置,从子图像SP0中整块读取MBr的数据,然后计算SAD。
(2)在进行1/2像素精度运动预测时,根据MBr的位置,从子图像SP4、SP8、SP12中的某个整块读取MBr的数据,然后计算SAD。
(3)在进行1/4像素精度运动预测时,根据MBr的位置,从子图像SP1、SP2、SP3、SP5、SP6、SP7、SP9、SP10、SP11、SP13、SP14、SP15中的某个整块读取MBr的数据,然后计算SAD。
采用本发明,可以在H.263/H.263+、H.264、MPEG-4等国际标准和AVS1.0国家标准中,对于1/2像素和1/4像素精度运动预测过程中的插值生成4倍插值图像运算和运动估计运算进行有效的加速。尤其是借助SIMD类DSP加速机制的时候。因此,可以在其它条件不变的前提下,提高视频编码和解码的帧率。提高视频通信类设备比如视频会议或者可视电话的性能,或者通过采用处理能力更低的DSP达到同样的性能,来降低产品的成本。这两种方法都能够提高产品的市场竞争力。本发明的效果是显著的,有如下实验数据可以说明本发明的效果:
实验1:采用本发明方法结合MMX,SSE2对于1/4像素插值过程进行优化和加速,对于经典测试图像序列Clair、News和Foreman,结果如下表一所示:
表一
实验2:采用本发明方法,对于经典测试图像序列Clair、News和Foreman进行整个1/4像素精度运动预测过程的加速优化,结果如下表二所示,表二中的数据是每秒可以完成的编码帧数:
表二
本发明的方法直接适用于遵循H.263/H.263+、H.264、MPEG-4国际标准和AVS国内标准的视频编码器和解码器,可实现中1/2像素及1/4像素精度运动预测。也适合于其它采用1/2像素和1/4像素精度运动预测的视频编码器和解码器,以实现1/2像素和1/4像素精度运动预测。
本发明的方法还适用于实现1/8像素精度运动预测,且任何1/8像素精度运动预测必然首先进行1/2像素和1/4像素精度的运动预测。因此1/2像素和1/4像素精度运动预测是1/8像素精度运动预测的必要组成部分和前提。也适用于任何其它(不一定遵循某种标准的)采用1/8像素精度运动预测的视频编码器和解码器的实现中1/8像素精度运动预测的实现。
附:本专利中使用到的缩略语和关键术语
缩写 英文 中文
AVC Audio-Video Coding 音频-视频编码
AVS Advanced Audio-Video System (国家)先进音频视频编码***
dB deci-Bell 分贝
DSP Digital Signal Processor 数字信号处理芯片
DV Displacement Vector 位移矢量
MB Macroblock 宏块
MV Motion Vector 运动矢量
MPEG Moving Picture Experts Group 运动图像专家组(国际标准组织)
PSNR Peak Signal-to Noise Ratio 峰值信噪比
SIMD Single Instruction Multiple Data 单指令多数据
MMX MultiMedia Extension 多媒体扩展指令集
SAD Sum of Absolute Differences 绝对差和
SSEStream SIMD Extension 单指令多数据扩展指令集
Claims (8)
1、一种用于分数像素精度运动预测的插值图像内存组织方法,其特征在于,在进行1/2n像素精度运动预测时,其中,n为自然数,按以下步骤组织插值图像的内存:
(1)根据要生成的2n倍插值图像,将其中的像素分成整数位置子集、1/21位置子集、1/22位置子集、…、以及1/2n位置子集,所述各个子集中分别包含全体整数像素、全体1/2像素、全体1/4像素、…、以及全体1/2n像素;
(2)以所述整数位置子集中的全体整数像素形成一个与原始图像尺寸相同的整像素子图像;
按各个1/2像素与相邻整数像素之间的垂直、水平、以及对角位置关系进行分类,将所述1/2位置子集中的全体1/2像素进一步分成3个更小的子集,一一对应地构成3个与原始图像尺寸相同的1/2像素子图像;
按各个1/4像素与相邻的整数像素及1/2像素之间的垂直、水平、以及对角位置关系和距离关系进行分类,将所述1/4位置子集中的全体1/4像素进一步分成12个更小的子集,一一对应地构成12个与原始图像尺寸相同的1/4像素子图像;
依此类推,在n大于或等于3时,按各个1/2n像素与相邻的整数像素、1/2像素、1/4像素、…、1/2(n-1)像素之间的垂直、水平、以及对角位置关系和距离关系进行分类,将所述1/2n位置子集中的全体1/2n像素进一步分成(22n-22(n-1))个更小的子集,一一对应地构成(22n-22(n-1))个与原始图像尺寸相同的1/2n像素子图像;
(3)将所述各个子图像形成一个连续内存区域存储到存储器中;
(4)除了整像素子图像外,对已存储的所述各个子图像进行零初始化处理。
2、根据权利要求1所述的插值图像内存组织方法,其特征在于,所述n等于1,在进行1/2像素精度运动预测时,按以下步骤组织插值图像的内存:
(1)根据要生成的2倍插值图像,将其中的像素分成整数位置子集和1/2位置子集,所述整数位置子集中包含全体整数像素,所述1/2位置子集中包含全体1/2像素;
(2)以所述整数位置子集中的全体整数像素形成一个与原始图像尺寸相同的整像素子图像;
按各个1/2像素与相邻整数像素之间的垂直、水平、以及对角位置关系进行分类,将所述1/2位置子集中的全体1/2像素进一步分成3个更小的子集,一一对应地构成3个与原始图像尺寸相同的1/2像素子图像;
(3)将所述各个子图像形成一个连续内存区域存储到存储器中;
(4)除了整像素子图像外,对已存储的所述3个1/2像素子图像进行零初始化处理。
3、根据权利要求1所述的插值图像内存组织方法,其特征在于,所述n等于2,在进行1/4像素精度运动预测时,按以下步骤组织插值图像的内存:
(1)根据要生成的4倍插值图像,将其中的像素分成整数位置子集SIP、1/2位置子集SHP、以及1/4位置子集SQP,所述整数位置子集SIP中包含全体整数像素,所述1/2位置子集SHP中包含全体1/2像素,所述1/4位置子集SQP中包含全体1/4像素;
(2)以所述整数位置子集SIP中的全体整数像素形成一个与原始图像尺寸相同的整像素子图像SP0;
按各个1/2像素与相邻整数像素之间的垂直、水平、以及对角位置关系进行分类,将所述1/2位置子集SHP中的全体1/2像素进一步分成3个更小的子集,一一对应地构成3个与原始图像尺寸相同的子图像SP4、SP8、SP12;
按各个1/4像素与相邻整数像素及1/2像素之间的垂直、水平、以及对角位置关系和距离关系进行分类,将所述1/4位置子集SQP中的全体1/4像素进一步分成12个更小的子集,一一对应地构成12个与原始图像尺寸相同的子图像SP1、SP2、SP3、SP5、SP6、SP7、SP9、SP10、SP11、SP13、SP14、SP15;
(3)将所述各个子图像形成一个连续内存区域存储到存储器中;
(4)除了整像素子图像外,对已存储的所述3个1/2像素子图像和12个1/4像素子图像进行零初始化处理。
4、根据权利要求1所述的插值图像内存组织方法,其特征在于,所述n等于3,在进行1/8像素精度运动预测时,按以下步骤组织插值图像的内存:
(1)根据要生成的8倍插值图像,将其中的像素分成整数位置子集、1/2位置子集、1/4位置子集、以及1/8位置子集,所述各个子集中分别包含全体整数像素、全体1/2像素、全体1/4像素、以及全体1/8像素;
(2)以所述整数位置子集中的全体整数像素形成一个与原始图像尺寸相同的整数像素子图像;
按各个1/2像素与相邻整数像素之间的垂直、水平、以及对角位置关系进行分类,将所述1/2位置子集中的全体1/2像素进一步分成3个更小的子集,一一对应地构成3个与原始图像尺寸相同的1/2像素子图像;
按各个1/4像素与相邻的整数像素及1/2像素之间的垂直、水平、以及对角位置关系和距离关系进行分类,将所述1/4位置子集中的全体1/4像素进一步分成12个更小的子集,一一对应地构成12个与原始图像尺寸相同的1/4像素子图像;
按各个1/8像素与相邻的整数像素、1/2像素、1/4像素之间的垂直、水平、以及对角位置关系和距离关系进行分类,将所述1/8位置子集中的全体1/8像素进一步分成48个子集,一一对应地构成48个与原始图像尺寸相同的1/8像素子图像;
(3)将所述各个子图像形成一个连续内存区域存储到存储器中;
(4)除了整像素子图像外,对已存储的所述3个1/2像素子图像、12个1/4像素子图像、以及48个1/8像素子图像进行零初始化处理。
5、根据权利要求1-4中任一项所述的插值图像内存组织方法,其特征在于,在所述第(3)步中,可按以下三种拼接方法中的任一种将所述各个子图像形成一个连续内存区域存储到存储器中:
A、22n X 1拼接,即竖条拼接;
B、2n X 2n拼接,即正方形拼接;
C、1 X 22n拼接,即横条形拼接。
6、根据权利要求5所述的插值图像内存组织方法,其特征在于,所述n=2,在所述第(3)步中,可按以下三种拼接方法中的任一种将所述各个子图像形成一个连续内存区域存储到存储器中:
A、16 X 1拼接,即竖条拼接;
B、4 X 4拼接,即正方形拼接;
C、1 X 16拼接,即横条形拼接。
7、根据权利要求6所述的插值图像内存组织方法而利用数字信号处理芯片提供的单指令多数据类加速技术生成4倍插值图像的各分数像素的方法,其特征在于,包括以下步骤:
(1)利用整像素子图像SP0,通过滤波插值生成1/2像素子图像SP4、SP8;
(2)利用1/2像素子图像SP4,通过滤波插值生成1/2像素子图像SP12;
(3)利用整像素子图像SP0和1/2像素子图像SP4、SP8、SP12,通过水平方向滤波插值生成1/4像素子图像SP1、SP5、SP9、SP13;
(4)利用整像素子图像SP0和1/2像素子图像SP4、SP8、SP12,通过垂直方向滤波插值生成1/4像素子图像SP2、SP6、SP10、SP14;
(5)利用整像素子图像SP0和1/2像素子图像SP4、SP8、SP12,通过+45°和-45°对角线方向滤波插值生成1/4像素子图像SP3、SP7、SP11、SP15。
8、根据权利要求7所述的生成4倍插值图像的各分数像素的方法而利用数字信号处理芯片提供的单指令多数据类加速技术快速计算预测误差指标SAD的方法,其特征在于,按以下步骤计算当前宏块MB0与运动估计过程中,参考帧中某个位置的参考宏块MBr之间的预测误差指标SAD:
(1)在进行整像素精度运动预测时,根据MBr的位置,从子图像SP0中整块读取MBr的数据,然后计算绝对差和;
(2)在进行1/2像素精度运动预测时,根据MBr的位置,从子图像SP4、SP8、SP12中的某个整块读取MBr的数据,然后计算绝对差和;
(3)在进行1/4像素精度运动预测时,根据MBr的位置,从子图像SP1、SP2、SP3、SP5、SP6、SP7、SP9、SP10、SP11、SP13、SP14、SP15中的某个整块读取MBr的数据,然后计算绝对差和。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410076759 CN100502511C (zh) | 2004-09-14 | 2004-09-14 | 用于分数像素精度运动预测的插值图像内存组织方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410076759 CN100502511C (zh) | 2004-09-14 | 2004-09-14 | 用于分数像素精度运动预测的插值图像内存组织方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1750659A CN1750659A (zh) | 2006-03-22 |
CN100502511C true CN100502511C (zh) | 2009-06-17 |
Family
ID=36605883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200410076759 Active CN100502511C (zh) | 2004-09-14 | 2004-09-14 | 用于分数像素精度运动预测的插值图像内存组织方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100502511C (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8265136B2 (en) * | 2007-02-20 | 2012-09-11 | Vixs Systems, Inc. | Motion refinement engine for use in video encoding in accordance with a plurality of sub-pixel resolutions and methods for use therewith |
CN101330614B (zh) * | 2007-06-21 | 2011-04-06 | 中兴通讯股份有限公司 | 使用数字信号处理器进行分数像素精度运动估计的方法 |
CN101453646B (zh) * | 2007-12-04 | 2012-02-22 | 华为技术有限公司 | 图像插值方法、装置及插值系数的获取方法 |
US9513905B2 (en) | 2008-03-28 | 2016-12-06 | Intel Corporation | Vector instructions to enable efficient synchronization and parallel reduction operations |
US20090323807A1 (en) * | 2008-06-30 | 2009-12-31 | Nicholas Mastronarde | Enabling selective use of fractional and bidirectional video motion estimation |
US8260002B2 (en) * | 2008-09-26 | 2012-09-04 | Axis Ab | Video analytics system, computer program product, and associated methodology for efficiently using SIMD operations |
CN101729885B (zh) * | 2008-10-24 | 2011-06-08 | 安凯(广州)微电子技术有限公司 | 一种图像像素插值方法及*** |
CN101902632B (zh) * | 2009-05-25 | 2013-03-20 | 华为技术有限公司 | 像素插值滤波方法及装置,解码方法及*** |
CN102486866B (zh) * | 2010-12-03 | 2014-04-16 | 江南大学 | 一种基于数字信号处理器的图像灰度均值算法 |
CN102231202B (zh) * | 2011-07-28 | 2013-03-27 | 中国人民解放军国防科学技术大学 | 面向向量处理器的sad向量化实现方法 |
CN107396165B (zh) * | 2016-05-16 | 2019-11-22 | 杭州海康威视数字技术股份有限公司 | 一种视频播放方法及装置 |
KR20220042125A (ko) | 2019-08-10 | 2022-04-04 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 서브픽처 디코딩에서의 버퍼 관리 |
JP7322290B2 (ja) | 2019-10-02 | 2023-08-07 | 北京字節跳動網絡技術有限公司 | ビデオビットストリームにおけるサブピクチャシグナリングのための構文 |
CN117676135A (zh) | 2019-10-18 | 2024-03-08 | 北京字节跳动网络技术有限公司 | 子图片与环路滤波之间的相互影响 |
-
2004
- 2004-09-14 CN CN 200410076759 patent/CN100502511C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN1750659A (zh) | 2006-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11622129B2 (en) | Intra prediction method and apparatus using the method | |
US11272208B2 (en) | Intra-prediction method using filtering, and apparatus using the method | |
US11240498B2 (en) | Independently coding frame areas | |
RU2654525C1 (ru) | Способ для интерполяции изображений с использованием асимметричного интерполяционного фильтра и устройство для этого | |
CN105955933B (zh) | 用于基于变换和反变换执行内插的方法 | |
US7620109B2 (en) | Sub-pixel interpolation in motion estimation and compensation | |
CN103430545B (zh) | 用于高效视频编码的内容适应性运动补偿滤波 | |
US7110459B2 (en) | Approximate bicubic filter | |
CN100502511C (zh) | 用于分数像素精度运动预测的插值图像内存组织方法 | |
EP2373036B1 (en) | Methods for motion estimation with adaptive motion accuracy | |
US7116831B2 (en) | Chrominance motion vector rounding | |
US7305034B2 (en) | Rounding control for multi-stage interpolation | |
US20030156646A1 (en) | Multi-resolution motion estimation and compensation | |
TW202315408A (zh) | 以區塊為基礎之預測技術 | |
CN101904173A (zh) | 用于视频编码的改进像素预测 | |
JPH09233477A (ja) | 動きベクトル生成方法 | |
US20130177081A1 (en) | Method and apparatus for encoding and decoding video using expanded block filtering | |
KR20110126075A (ko) | 확장 블록 필터링을 이용한 비디오 부호화, 복호화 방법 및 장치 | |
Shen et al. | Benefits of adaptive motion accuracy in H. 26L video coding | |
Maich et al. | A Hardware Solution for the HEVC Fractional Motion Estimation Interpolation |
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 |