用操作指令编码的计算机可读介质 本申请是申请日为2001年5月24日、申请号为01119507.X、发明名称为“运动向量编码方法”的发明专利申请的分案申请。
技术领域
本发明涉及运动向量编码方法和仿射(affine)运动估算方法以及用操作指令编码的计算机可读介质,其中该操作指令用于执行所述方法。具体地说,涉及能够产生低位速率位流的运动向量编码方法,和能够有效地执行对小数据块编码的仿射运动估算方法,以及记录有能够执行这些方法的操作指令的计算机可读介质。
背景技术
最近,国际电信同盟-接口组(ITU-T)为下一代可视电话完成了标准化H.26L协议的工作。自从为可视电话定义运动向量编码方法的、诸如H.261、H.263和H.263+这样的标准方案被采纳为ITU-T标准以来,已经开发出基于H.263++和运动图像专家组(MPEG)-4标准方案的技术。但是还存在着为超低速实时应用和短端到端延迟进一步改进编码效率的必要。即,很希望有一种估算方法和运动向量编码方法,这些方法为在与H.263+标准的编码方法同样的位速率下提供改进的帧速率,或者这些方法在维持和遵循H.263+编码方法编码地图像一样的图像质量的同时,明显降低位速率。
在一种常规的运动估算方法中,假设(i,j)是其宏块和子块的坐标,使用下列公式(1a)和(1b)执行仿射运动估算来表示图像中的像素运动:
vX(i,j)=a0+a1i+a2j (1a)
vY(i,j)=a3+a4i+a5j (1b)其中vX(i,j)和vY(i,j)是位于模块(i,j)的像素的X和Y轴方向的运动幅度分量。由运动幅度分量vX(i,j)和vY(i,j)组成的表达式[vX(i,j),vY(i,j)]T被称为位于坐标(i,j)的像素的运动向量。即,每个像素的运动向量由每个像素位置和六个参数[a0,a1,a2,...,a5]T确定。这些参数[a0,a1,a2,...,a5]T可以称为仿射运动参数。但是,根据使用仿射运动参数估算运动的方法,随着表示仿射运动参数的位数增加,运动估算的计算越来越复杂而且费时。此外,对于某些数据块,这种仿射运动估算可能不比常规平移(translational)运动估算更有效。
同时,诸如H.261、H.263、MPEG-1和MPEG-2这样的标准、基于按以下表达的平移运动模型表示像素的运动:
vX(i,j)=t1 (2a)
vY(i,j)=t2 (2b)
从公式(2a)和(2b)显然可以看出,将数据块中的全部像素的运动向量固定为一个向量。但在仿射运动的情况下,如公式(1a)和(1b)所表达的那样,运动向量对于每个像素位置是可变的。仿射运动估算能够表示复杂运动,包括任何或所有诸如旋转、放大、缩小和剪切这样的平移,从而达到更精确的运动估算。
为了使用仿射运动估算来估算图像的运动,公式(1a)和(1b)所表达的仿射运动参数必须以逐块方式获得。运动参数相应于最小化当前图像和前一运动补偿图像的像素值之间的差的位移,表达成下列公式(3)
argminakΣ(i,j)∈Mk{In(i,j)-In-1(i+vx(i,j)+vY(i,j))}2---(3)]]>其中In(i,j)表示位置(i,j)的像素的亮度,Mk表示第k个数据块。[vX(i,j),vY(i,j)]T由公式(1a)和(1b)所表达。即,最小化当前模块和由运动参数进行运动补偿的前一数据块之间的亮度差的运动参数表达在公式(3)中,并且该运动参数被称为运动估算参数。
在根据常规技术的仿射运动估算方法中,运动参数使用下列公式(4)获得:
akI+1=akI+ukI---(4)]]>
其中akI=[a0,a1,a2,...,a5]T,]]>I表示迭代系数。
当I等于0时,运动参数表达成
ak0=[0,0,0,0,0,0]T---(5)]]>
在这种情况下,该运动参数称为初始值。
ukI={Σ(i,j)∈Mk{hijI(hijI)T}}-1{Σ{dnI(i,j)ThijI}}---(6)]]>
hkI=[GXI(i,j),iGXI(i,j),jGXI(i,j),GYI(i,j),iGYI(i,j),jGYI(i,j)]T---(7)]]>
dnI(i,j)=In(i,j)-In-1(i,j)(i+a0I+a1Ii+a2Ii,j+a3I+a4Ii+a5Ij)---(8)]]>
GXI(i,j)={In(i+1,j)-In-1(i,j)(i+a0I+a1Ii+a2Ij-1,j+a3I+a4Ii+asIj)}/2---(9a)]]>
GYI(i,j)={In(i,j+1)-In-1(i,j)(i+a0I+a1I+a2ij-1,j+a3I+a4I+a5Ij-1)}/2---(9b)]]>
在公式(4)至(9a)和(9b)中所示的估算仿射运动参数的方法称为差分运动估算法。该差分运动估算方法主要用于仿射运动估算。
在这种情况下,对于仿射运动估算,首先将迭代系数I设置为“0”,误差平方设置成尽可能地大。接下来,从公式(6)获得的值使用公式(6)至(9a)和(9b)更新,然后将更新的值代入公式(4)来获得akI+1。然后,使用akI+1和下列公式获得当前块和运动补偿过的前面的块之间的差:
SE(I+1)=Σi,j∈Mk{In(i,j)-In-1(i+a0I+1+a1I+1i+a2I+1j,j+a3I+1+a4I+1i+a5I+1j)}---(10)]]>如果SE(I+1)小于SE(I),则I按1递增并重复执行以上步骤。如果SE(I+1)大于SE(I),则此时的akI确定为所估算的运动参数,并且终止运动估算过程的重复。
然而,仿射运动估算方法存在一个问题,即小尺寸块的运动估算性能明显退化。因此,虽然仿射运动估算方法展示了比平移运动估算法显著的图像预测,但是不能应用于诸如H.261、H.263、MPEG-1和MPEG-4这样的标准。
同时,仿射运动参数是十进制的实数。因此,为了在实际视频编码中使用这些参数,必须将它们转换或量化成定点数。
在平移运动模型所应用到的、诸如H.261、H.263、MPEG-1和MPEG-4这样的标准中,使用运动向量对将在每个块中进行编码的运动信息进行预测编码,籍此在编码运动信息期间降低位流中每单位时间所生成的位数。然而,如果使用仿射运动模型,由于公式(1a)和(1b)所示的六个运动参数中的每一个都不受相邻块的影响,因此很难象在平移运动模型中那样预测性地编码运动信息。即,在编码仿射运动模型的运动参数时可能需要极大的位数。因此,很希望有一种有效编码仿射运动参数的方法。
发明内容
为了解决上述问题,本发明的目的是提供一种编码运动向量的方法以及记录有能够执行这些方法的操作指令的计算机可读介质,该方法它在维持仿射运动估算可利用的运动估算性能的同时,降低所生成的位速率。
本发明的另一个目的是提供一种能够对小数据块有效地执行编码的估算运动的方法以及记录有能够执行这些方法的操作指令的计算机可读介质。
本发明的再一个目的是提供一种运动向量解码的方法以及记录有能够执行这些方法的操作指令的计算机可读介质,该方法用于解码通过运动向量编码方法编码的位流。
因此,为了达到上述目的,本发明提供一种编码运动向量的方法以及记录有能够执行这些方法的操作指令的计算机可读介质,所述方法包括步骤:(a)执行仿射运动估算以获得仿射运动参数,(b)转换仿射运动参数为预定数量的平移运动向量,以及(c)编码所转换的当前块的平移运动向量与前面块的平移运动向量之间的差。
该运动向量编码方法还在步骤(c)之前,包括将步骤(b)中的平移运动向量量化成具有预定精度的定点数的步骤。此外,该运动向量编码方法还在步骤(c)之前,包括为当前块的每个平移运动向量确定一预定像素范围并为该预定范围内的每个像素值获得精度的步骤,该精度为精度集∏中使产生最小值的值,其中,QP是用在编码图像中的量化区间,λ为基于量化区间QP所确定的常数,MSE()表示在当前块的平移运动向量用精度表示时,当前块和前面所运动补偿过的块之间的差分信号的均方和,以及Bits()表示用于以精度编码当前块的平移运动向量的位数。
该方法还包括用相邻块的平移运动向量、使用
v^X,Ca=median{vX,Cb,vX,Uc,vX,Ud},]]>
v^Y,Ca=median{vY,Cb,vY,Uc,vY,Ud},]]>
v^X,Cb=median{vX,Ca,vX,Ud,vX,Dc},]]>
v^Y,Cb=median{vY,Ca,vY,Ud,vY,Dc},]]>
v^X,Cc=median{vX,Ld,vX,Ca,vX,Cb}]]>和
v^Y,Cc=median{vY,Ld,vY,Ca,vY,Cb}]]>预测所转换的当前块的平移运动向量的步骤,其中“^”表示获得预测值的操作,median{}表示在平移运动向量中获得具有中间幅度的平移运动向量的操作。
步骤(c)包括步骤:(c-1)使用所转换的当前块的平移运动向量和相邻块的平移运动向量,计算当前块和相邻于当前块的块之间的平移运动向量的差;以及(c-2)对所获得的平移运动向量之间的差执行变长度编码。
步骤(a)包括通过使用将在当前帧中编码的块的像素值以及在前面的帧中的像素值,并使用vx(i,j)=a0+a1i+a2j和vY(i,j)=a3+a4i+a5j估算图像中的像素的运动,来获得六个仿射运动估算参数[a0,a1,a2,...,a5]T的步骤,其中(i,j)是其宏块和子块的坐标。
步骤(b)包括通过使用
[vX,A,vY,A]=[a0+a1α+a2α,a3+a4α+a5α],
[vX,B,vY,B]=[a0+3a1α+a2α,a3+3a4α+a5α]和
[vX,C,vY,C]=[a0+a1α+3a2α,a3+a4α+3a5α],
基于
vX(i,j)=12α(4α-i-j)vX,A+12α(-2α+i)vX,B+12α(-2α+j)vX,C,]]>
vY(i,j)=12α(4α-i-j)vY,A+12α(-2α+i)vY,B+12α(-2α+j)vY,C]]>
获得子块A、B、C和D的中心点的运动向量,其中一个宏块由子块A、B、C和D组成,该宏块的大小为S×S,常数α为S/4+1/2。
该运动向量编码方法还在步骤(b)之后,包括步骤:(b’-1)将所转换的平移运动向量量化为具有预定精度的定点数,(b’-2)考虑到位速率和精度之间的失真,选择最优精度,平移运动向量由该精度表示,以及(b’-3)使用转换的相邻块的平移运动向量预测具有所选精度的平移运动向量。
该运动向量编码方法还在步骤(a)之前,包括:通过块匹配技术为当前块获得一个平移运动向量的步骤,并且步骤(a)包括步骤(a’):使用所获得的平移运动向量作为初始值执行仿射运动估算。
另外,该运动向量编码方法还在步骤(a)之前,包括:在估算过的位于上述当前块和位于其余部分的块的仿射运动参数之中,获得最小化当前块和前一运动补偿过的块之间的差信号的均方和的运动参数的步骤,并且步骤(a)包括步骤(a’):使用所获得的运动参数作为初始值执行仿射运动估算,以为预定像素范围获得仿射运动参数。
本发明还提供一种编码运动向量的方法,包括步骤:(a)执行仿射运动估算来获得仿射运动参数,(b)基于
vX(i,j)=12α(4α-i-j)vX,A+12α(-2α+i)vX,B+12α(-2α+j)vX,C]]>
以及
vY(i,j)=12α(4α-i-j)vY,A+12α(-2α+i)vY,B+12α(-2α+j)vY,C]]>
获得平移运动向量,其中块的大小为S×S,常数α为S/4+1/2,(c)编码在步骤(b)中获得的平移运动向量之间的差。
本发明还提供一种编码运动向量的方法,包括步骤:(a)为当前块的每个平移运动向量确定预定的像素范围;(b)为在预定的范围内的每个像素值确定当前块的平移运动向量,其中像素运动向量用精度表示,该精度为精度集∏中使产生最小值者,其中,QP是用在编码图像中的量化区间,λ为基于量化区间QP所确定的常数,MSE()表示在当前块的平移运动向量用精度表示时,当前块和前面所运动补偿过的块之间的差分信号的均方和,以及Bits()表示用于以精度编码当前块的平移运动向量的位数;(c)编码当前块的平移运动向量和前面块的平移运动向量之间的差。
本发明还提供一种编码运动向量的方法,包括步骤:(a)为六个平移运动向量的分量{vX,A,vY,A,vX,B,vY,B,vX,C,vY,C}的每个确定预定的像素范围;(b)为在步骤(a)中为六个平移运动向量的分量{vX,A,vY,A,vX,B,vY,B,vX,C,vY,C}的每一个所确定的预定范围内的每个像素值,获得当前块的平移运动向量,其中像素运动向量用精度表示,该精度为精度集H中使产生最小值者,其中,QP是用在编码图像中的量化区间,λ为基于量化区间QP所确定的常数,MSE()表示在当前块的平移运动向量用精度表示时,当前块和前面所运动补偿过的块之间的差分信号的均方和,以及Bits()表示用于以精度编码当前块的平移运动向量的位数;(c)编码在步骤(b)中获得的平移运动向量之间的差。
本发明还提供一种运动估算方法以及记录有能够执行这些方法的操作指令的计算机可读介质,所述方法包括步骤:(a)执行仿射运动估算来获得仿射运动参数,(b)将仿射运动参数转换为预定数量的平移运动向量。
本发明还提供一种解码运动向量的方法以及记录有能够执行这些方法的操作指令的计算机可读介质,所述方法包括步骤:(a)接收编码数据,(b)解码所收到的数据以获得平移运动向量,(c)将所获得的平移运动向量转换为仿射运动参数,以及(d)使用所获得的仿射运动参数执行运动补偿。
附图说明
通过借助附图详细描述本发明的优选实施例,本发明的上述目的和优点将会更容易理解,其中:
图1示出根据本发明的实施例的运动向量编码方法的主要步骤的流程图;
图2示出用于根据本发明的实施例的运动向量编码方法中的仿射运动向量的坐标系;
图3示出块的代码;以及
图4示出根据本发明的运动向量解码方法的主要步骤的流程图。
具体实施方式
参考图1,根据本发明的编码运动向量的方法,首先,当前图像帧中将要编码的块的像素值和前面的图像帧中的搜索区域的像素值用于执行仿射运动估算,因此获得当前块的仿射运动参数(步骤102)。该仿射运动估算可以使用六个参数进行描述,例如a0,a1,a2,a3,a4和a5。在该实施例中,使用三个平移运动向量描述仿射运动。然后,为了这个目的,将通过执行运动估算所获得的仿射运动参数转换为平移运动向量(步骤104)。在步骤104中,假设当前块的大小和常数α分别为S×S和S/4+1/2,基于下列公式(11a)和(11b)将仿射运动参数转换为平移运动向量:
vX(i,j)=12α(4α-i-j)vX,A+12α(-2α+i)vX,B+12α(-2α+j)vX,C---(11a)]]>
vY(i,j)=12α(4α-i,j)vY,A+12α(-2α+i)vY,B+12α(-2α+j)vY,C---(11b)]]>
由于仿射运动参数为具有小数点的实数,所以将它们转换或量化成定点数以便用于实际的运动向量编码。为了这个目的,将在步骤104中所转换的平移运动向量量化为具有预定精度的定点值(步骤106)。
假设当前块由四个子块A、B、C和D象图2那样组成,如果子块A、B、C和D的中心点的坐标值被代入公式(1a)和(1b)的坐标i和j,则子块A、B、C和D的中心点的运动向量可以按如下方式获得:
[vX,A,vY,A]=[a0+a1α+a2α,a3+a4α+a5α] (12a)
[vX,B,vY,B]=[a0+3a1α+a2α,a3+3a4α+a5α] (12b)
[vX,C,vY,C]=[a0+a1α+3a2α,a3+a4α+3a5α] (12c)然后,基于
选择优化精度(步骤108),其中和∏分别为选定的精度和精度集。此外,如果QP是用在编码图像中的量化区间,则设λ为0.85QP2。MSE()表示在当前块的平移运动向量用精度表示时,当前块和前面所运动补偿过的块之间的差分信号的均方和。Bits()表示用于以精度编码当前块的平移运动向量的位数。因此,优化精度即是在精度集∏中使公式(13)产生最小值的精度。用该优化精度表示当前块的平移运动向量。
然后,通过下列公式,使用相邻块的平移运动向量预测所转换的当前块的平移运动向量(步骤110):
v^X,Ca=median{vX,Cb,vX,Uc,vX,Ud}---(14a)]]>
v^Y,Ca=median{vY,Cb,vY,Uc,vY,Ud}---(14b)]]>
v^X,Cb=median{vX,Ca,vX,Ud,vX,Dc}---(15a)]]>
v^X,Cb=median{vX,Ca,vX,Ud,vX,Dc}---(15b)]]>
v^X,Cc=median{vX,Ld,vX,Ca,vX,Cb}---(16a)]]>
v^Y,Cc=median{vY,Ld,vY,Ca,vY,Cb}---(16c)]]>图3示出与之关联的块代码。在公式(16a)和(16b)中,:“^”表示获得预测值的操作,median{}表示在三个平移运动向量中获得具有中间幅度的平移运动向量的操作。由于使用公式(11a)和(11b)所表达的三个平移运动向量表示仿射运动参数,所以位于当前块的右下角的子块的平移运动向量例如子块“d”,既不可能被预测也不可能被编码。因此,位于全部块的右下角的子块都不可能被编码。但是,如公式(14a)至(16b)所表达的那样,子块Ud和Ld的平移运动向量用于预测所转换的当前块的平移运动向量。使用下列公式(17a)和(17b)计算子块“d”的平移运动向量
vX,Ud=vX,Ub+vX,Uc-vX,Ua (17a)
vY,Ud=vY,Ub+vY,Uc-vY,Ua (17b)
此外,如果公式(14a)至(16b)中的相邻块的平移运动向量的精度不同于当前块的平移运动向量的精度,则前者最好修改成与后者相同。
接着,使用所转换的当前块的平移运动向量和相邻块的平移运动向量计算平移运动向量之间的差(步骤112),在对计算出的平移运动向量差执行可变长编码(步骤114)。
表1 测试图像序列 格式 平移运动向量 仿射运动向量 工头 QCIF,10Hz 7.35 9.03 容器 QCIF,10Hz 2.79 4.72 新闻 QCIF,10Hz 4.14 6.30 无声影片 QCIF,15Hz 4.43 7.16 巴黎 CIF,15Hz 4.58 5.42 汽车 CIF,30Hz 4.08 6.22 Tempete CIF,10Hz 5.25 9.62
表1包含以本发明的优选实施例的运动向量编码方法、使用测试图像评价平均运动向量熵的结果。表1明显示出,应用基于仿射运动估算的、根据本发明的运动向量编码方法时的测试图像序列的平均运动向量熵,大于应用基于平移运动估算的常规运动向量编码方法时的测试图像序列的平均运动向量熵。
表2测试图像序列 格式 1616块匹配 88块匹配 本发明 工头 QCIF,10Hz 29.34 31.58 32.37 容器 QCIF,10Hz 38.31 39.01 39.93 新闻 QCIF,10Hz 31.52 33.38 33.93 无声影片 QCIF,15Hz 33.53 35.45 35.98 巴黎 CIF,15Hz 31.04 32.49 32.52 汽车 CIF,30Hz 26.85 28.14 28.62 Tempete QCIF,10Hz 28.48 29.59 29.69
此外,表2以分贝(dB)示出测量指示平均预测增益的峰值信噪比(PSNR)的结果。表2明显示出,在应用基于仿射运动估算的运动向量编码方法时所测量的测试图像序列的PSNR,大于应用基于平移运动估算的常规运动向量编码方法时所测量的测试图像序列的PSNR。
即,如果包括步骤102和104的方法作为用于计算平移运动向量的运动估算方法应用,则对其维数小于16乘16(16×16)象素块的小块执行高性能的运动估算,而且维持仿射运动估算可使用的、改进的运动估算性能。
此外,本发明的运动向量编码方法允许生成位的范围为从高端的9.62×3或28.86位到低端的4.72×3或14.16,因此,与在使用8位的每个仿射参数的定长编码(FLC)期间生成6×6或36位的常规方法比较,减少了位速率。
在参考图1描述的上述实施例中,以独立的方式执行:使用将在当前图像帧中编码的当前块的像素值和前面图像帧中的搜索区域的像素值、执行仿射运动估算以获得当前块的仿射运动参数的步骤102,将仿射运动参数转换为平移运动向量的步骤104和将所转换的平移运动向量量化为具有预定精度的定点数的步骤106。
然而,可以通过基于公式(11a)和(11b)执行仿射参数估算将上述的两个步骤102和104集中到一步中,从而降低整个过程的复杂性。
另外,可以通过为当前块的每个平移运动向量确定一预定像素范围,然后为该预定范围中的每个像素值确定平移运动向量将上述的三个步骤102、104和106集中到一步中,像素运动向量使用使公式(13)产生最小值的精度表示。例如,可以确定预定的子像素范围、然后为该预定范围中的每个子像素值确定平移运动向量的子像素运动向量,该子像素运动向量使用使公式(13)产生最小值的精度获得。此时,进一步降低了处理的复杂性。
此外,在参考图1描述的实施例中的步骤102中,考虑到每个平移运动向量分量可能具有的各种各样的可变因素,来获得这些分量。然而,可以为六个平移运动向量分量{vX,A,vY,A,vX,B,vY,B,vX,C,vY,C}的每个确定一预定的像素范围,并为该预定范围中的每个像素值确定平移运动向量的像素运动向量,该平移运动向量使用公式(13)给出最小值的精度获得。
此外,在步骤102中,如公式(5)所表达的那样,设置初始值为“0”。但是,最好使用一个平移运动向量作为初始值执行步骤102,其中的平移运动向量借助于对当前块的块匹配算法获得。此外,可以使用运动参数,该参数在估算过的位于当前块和位于其余部分的块的仿射运动参数之中、最小化当前块和前一运动补偿过的块之间的差信号的均方和。
此外,可以在步骤102中通过用块匹配算法为当前块获得一个平移运动向量,然后使用所获得的平移运动向量作为初始值来为预定像素范围获得仿射运动参数,来降低复杂性。
此外,还可以在步骤102中通过获得在估算过的位于当前块和位于其余部分的块的仿射运动参数之中、使当前块和前一运动补偿过的块之间的差信号的均方和最小化的运动参数,然后使用所获得的运动参数作为初始值来为预定像素范围获得仿射运动参数,来降低复杂性。
同时,可以通过根据本发明的运动向量解码方法解码使用根据本发明的运动向量编码方法编码的位流。图4示出根据本发明的实施例的运动向量解码方法的主要步骤的流程图。参考图4,在根据本发明的解码运动向量期间,接收按可变长度编码的数据(步骤402),然后将所收到的数据进行可变长度解码以获得平移运动向量(步骤404)。由该运动向量编码方法编码的位流包含相应块和它的各个相邻块的平移运动向量的中间值之间的差。因此,对所收到的数据执行可变长度解码获得相应块和其相邻各块的平移运动向量的中间值之间的差之后,使用该差值获得平移运动向量。
接着,将所获得的平移运动向量转换成仿射运动参数(步骤406)。步骤406是参考图1和2描述过的转换运动参数为运动向量的步骤的逆过程,因此详细解释从略。然后,使用步骤406中获得的仿射运动参数执行运动补偿,以恢复图像(步骤408)。
此外,根据本发明的运动向量编码方法、运动估算方法和运动向量解码可以写成在个人计算机或服务器计算机上执行的程序。构造该程序的程序代码和代码段可以由本行业中的计算机程序员轻松地推出。此外,该程序可以存储在计算机可读记录介质中。这种记录介质包括磁记录介质、光记录介质和无线电介质。
如上所述,根据本发明的运动向量编码方法在允许低生成位的同时,维持改进的运动估算性能,该性能通过使用仿射运动估算获得。此外,根据本发明的运动向量编码方法能够对其维数小于16×16像素块的小块执行高性能的运动估算。