专利名称:基于上下文的自适应二进制算术编码的方法和系统的制作方法
技术领域:
本发明一般地涉及静止图像和视频序列压缩,尤其涉及一种基于上下文的自适应二进制算术编码方法和系统。
背景技术:
未压缩形式的数字图像包含了一个图像像素或图元的阵列。例如,在一种以四分之一通用中间格式(QCIF)著称的常用数字图像格式中,图像或帧包含了排列在一个176×144像素的阵列中的25,344个像素。每个像素依次由一定数量的比特表示,它们传送的是关于像素明亮度(亮度)和/或颜色(色度)的信息。此外还存在表示数字图像中的亮度和/或色度的不同方案。通常使用的则是所谓的YUV颜色模型。其中亮度或Y分量表示像素亮度,并且像素颜色由U和V标记的两个色度或色差分量来表示。此外还通常用到那些以表示光的三原色的分量为基础的其他颜色模型,例如RGB(红,绿,蓝)颜色模型。然而,与基于原色的颜色模型相比,基于亮度/色度表示的颜色模型则更具优势。这些优势源自于人类视觉系统更易于感受到光亮变化而不是颜色变化的特性。而YUV颜色模型通常为色度分量(U,V)使用了一个低于亮度分量(Y)的空间分辨率,由此利用了这种特性。这样就可以在不显著降低所察觉图像质量的情况下减少表示图像色彩信息所需要的信息量。
色度分量的较低空间分辨率通常是借助于二次抽样来实现的。通常,一个16×16图像像素的块由四个包含了亮度信息的8×8像素的块表示,相应色度分量分别由一个8×8像素的块来表示,其中所述块表示一个与亮度分量中的16×16像素的块等价的图像区域。因此色度分量在x和y方向上由一个大小为2的因数来进行空间二次抽样。最终得到的四个8×8像素的亮度块以及2个在空间上与之对应的8×8像素的色度块的组合通常称为一个YUV宏块,或者简称为宏块。而QCIF图像包括11×9个宏块。如果用8位(也就是0到255这个范围中的数字)分辨率来表示亮度块和色度块,那么,用于表示与每个宏块相关联的亮度和色度信息所需要的总比特数为6×(8×8×8)=3072比特。因此,用于表示QCIF格式图像所需要的比特数为99×3072=304,128比特。
应该了解的是,即使是在如上所述使用一个大小为2的因数来对数字图像的两个色度分量进行二次抽样的情况下,中等大小(例如174×144像素)的未压缩图像也会需要大量比特来供显示所用。这意味着以未压缩格式保存数字图像所需要的存储器数量将会过度。此外,举例来说,如果经由一个具有中等或较低可用带宽的数据通信网络来传送静止图像,那么传输时间将会很长或者网络有可能会发生阻塞。如果希望实时发送作为数字视频序列的一系列图像,那么带宽需求甚至会更为严格。例如,以每秒30帧的速率传送一个使用了YUV颜色模型表示并包括一系列未压缩QCIF格式图像的数字序列需要用到9Mb/s(百万比特/秒)以上的带宽。由于需要很大的存储器容量、传输信道容量和硬件性能,因此,在被用于视频记录、传输和显示时,这种高数据速率通常是不切实际的。如果要在ISDN(综合业务数字网)或PSTN(公共交换电话网)这类固定线路上实时传送视频序列,那么可用数据传输带宽通常约为64k/s。在移动可视电话中,至少有一部分传输是在无线电通信链路上进行的,那么可用带宽有可能会低到20kb/s。这意味着必须显著减少用于表示视频数据的信息量,以便能在低带宽的通信网络上传输数字图像或视频序列。然而合乎需要的是,这种减少应该在不显著降低图像/视频序列质量的情况下实现。
在过去数年中已经针对减少表示数字图像和视频序列所需数据量而进行了大量的研究工作,由此开发了多种不同方案和国际标准来对数字静止图像和数字视频进行压缩。在现有的几乎所有静止图像和视频编码器中,所使用的基本的图像压缩方法都包含了基于块的变换编码。通常,变换编码是将来自一个包含像素值的图示的图像数据转换成一种包含一组系数值的形式,其中每一个系数值都是所论述变换的基函数的一个加权因数(乘数)。此外还可以显示,在典型的数字图像内部存在相当大程度的空间冗余。事实上,这意味着图像内部任何像素值通常与其紧邻的其他像素值实际是相同的,也就是说,在像素值间存在很大程度上的相关。此外进一步已知的是,在对图像执行某些数学变换,例如二维离散余弦变换(DCT)的时候,这种空间冗余度将会显著降低,由此产生一个更为简洁的图像数据显示。
在JPEG静止图像编码中使用的基于块的变换编码例如,在根据广泛使用的JPEG标准的基准模式所执行的静止图像压缩中,所要编码的图像首先分成互不重叠的方形块阵列,其中举例来说,每一个块都包括一个8×8的图像像素阵列。然后,就JPEG基准而言则是将二维离散余弦变换(DCT)独立应用于每一个图像块。这样做具有把来自像素值域的图像数据转换到空间频域并产生一组相应系数值的效果,其中每个系数值都是一个关于二维DCT基函数的加权因数。由此产生的系数值经过量化,然后使用熵编码而以一种无损方式对其进行编码,从而进一步减少供其显示所需要的数据量(也就是比特数)。根据JPEG基准,熵编码器只使用了霍夫曼编码来产生一个压缩比特流,但在其他模式中也可以使用算术编码。最终,用于描述图像和编码参数(例如压缩类型、量化和编码表、图像大小等等)的数据被嵌入熵编码器产生的比特流中。而由于JPEG标准包括四种备选编码模式并且只对可用的量化和编码表安插了少量约束条件,因而有必要执行上述操作,以便能在不同平台之间互换JPEG压缩比特流并且在毫无歧义的情况下重建图像。
类似胶片上所记录的常规电影这样的数字视频序列包括一系列静止图像(通常称之为“帧”),而运动错觉则是通过以通常为每秒15到30帧这样的相对较快的速率相继显示所述帧而产生的。与任何静止图像一样,在一个数字视频序列内部,单独帧的像素值将会显示出相当大的空间冗余。因此,与单独的静止图像一样,数字视频序列的帧也可以由基于块的变换编码来进行处理。
同样,视频序列相邻帧的图像往往是相似的,因此,在某个视频帧与下一视频帧之间,整体上的变化是非常小的。这意味着在典型数字视频序列内部存在相当大的时间冗余。例如,在一个场景中可以包括诸如背景景物之类的某些静止元素,也可以包括某些运动区域,例如新闻广播员面部。在序列的相邻帧中,背景可能保持不变,而场景中的唯一运动则由新闻广播员面部表情的变化产生。因此,在形成视频序列的压缩表示时,除了减少空间冗余的方法之外,也可以使用那些减少序列中图像数据时间冗余的技术,由此实现进一步的数据压缩。
混合视频编码器/解码器现有技术的视频编码系统使用了一种以运动补偿预测著称的技术来减少视频序列中的时间冗余。就这种运动补偿技术而言,在数字视频序列中,某些(通常很多)帧的图像内容是从序列中的一个或多个其他帧“预测”的,其中所述其他帧即为通常所说的“参考帧”。图像内容的预测是通过使用“运动矢量”在将要编码的帧与一个或多个参考帧之间追踪一个图像中的对象或区域来实现的。一般来说,在视频序列中,一个或多个参考帧可以先于将要编码的帧或是跟随在所述帧之后。然而,从本文的后续论述中可以明显看出,将运动补偿预测应用于视频序列的所有帧并由此在现有技术的视频编码系统中使用至少两种类型的编码,这样做并不适当(或者可能)。
使用运动补偿预测而被压缩的视频序列帧通常称为帧间编码或P帧。光是运动补偿预测则很难提供足够清楚的视频帧图像内容表示,因此通常有必要为各个帧内编码的帧提供一个所谓的“预测误差”(PE)帧。如本文稍后更为详细描述的那样,预测误差帧表示的是帧间编码帧的解码版本与编码帧图像内容之间的差别。更具体地说,预测误差帧包含了表示将要编码的帧的像素值与基于所论述帧的预测(帧间编码)版本而形成的对应重建像素值之间的差别。因此,预测误差帧具有与静止图像相似的特征,并且可以通过应用基于块的变换编码来减少表示该帧所需要的数据量(比特数)。
没有使用运动补偿预测压缩的视频序列帧被称为帧内(帧内)编码或I帧。通常,帧内编码帧是借助了将基于块的变换编码应用于所要编码帧的像素值而产生的。另外在可能的情况下,帧内编码帧的块是从同一帧以内的先前编码块中预测的。这种技术即为通常所说的帧间预测,它具有进一步减少表示帧内-编码帧所需要的数据量的效果。
为了更详细地描述基于块的变换编码和运动补偿预测的原理,现在将对图1加以参考,该图是常规混合视频编码器的示意图,其中使用了帧内与帧间编码的组合来产生一个压缩(编码)视频比特流。在图2中描述了相应的解码器并且稍后将在文中对其进行描述。
视频编码器300包括一个用于从相机或其他视频源(未显示)接收数字视频信号的输入端301。它还可以包括一个调整为执行基于块的离散余弦变换(DCT)的变换单元304,一个量化器306,一个反向量化器308,一个调整成执行基于块的反离散预先变换(IDCT)的逆变换单元310,组合器312和316以及一个帧存储器320。编码器还包括运动估计器330,运动场编码器(motion field encoder)340以及运动补偿预测器350。开关302和314则是通过控制管理器360在视频编码的帧内模式与视频编码的帧间模式之间切换编码器而以协同方式进行操作的。编码器300还包括视频复用编码器370,它从编码器300生成的各种类型信息中构成单独比特流335,以便进一步传输到远程接收终端,或者举例来说,它也可以将所述比特流保存在一个大容量存储介质中,例如计算机硬盘(没有显示)。
编码器300是如下运作的。视频源提供给输入端301的各个未压缩视频帧都是以逐个宏块的方式接收和处理的,其中最好以光栅扫描顺序来对其进行处理。在开始编码新的视频序列时,所述序列中的第一帧是作为一个帧内编码帧来编码的。接下来,除非满足下列条件之一,否则将通过对编码器进行编程来以帧间编码格式编码各帧1)判定正被编码的当前帧与预测中使用的参考帧很不一样,并由此产生了过多预测误差信息;2)预先定义的帧内帧的重复间隔已经终止;或者3)从一个接收终端接收到一个反馈,该反馈表示的是一个要求以帧内编码格式来提供帧的请求。
条件1)的出现是通过监视组合器316的输出来检测的。组合器316在正被编码帧的当前宏块与其在运动补偿预测部件350中产生的预测之间形成一个差值。如果关于这个差值的量度(例如像素值的绝对差值总和)超出一个预定门限,那么组合器316将经由控制线319来向控制管理器360发出通知,并且控制管理器360将经由控制线313来操作开关302和314,以便将编码器300切换到帧内编码模式。条件2)的出现是借助于控制管理器360中的定时器或帧计数器而以如下方式进行监视,如果定时器终止或者帧计数器达到预定数量的帧,则控制管理器360经由控制线313操作开关302和314,以便将编码器切换到帧内编码模式。如果控制管理器360经由控制线321而从一个接收终端接收到一个表示接收终端需要对帧内编码帧进行刷新的反馈信号,则触发条件3)。例如,如果先前发送的帧在其传送过程中因为干扰而受到严重破坏,进而不可能在接收机上对其进行解码,则有可能出现这种情况。在这种条件下,接收解码器发出一个要求以帧内编码格式来对下一帧进行编码的请求,由此重新初始化所述编码序列。
现在对帧内编码模式中的编码器300的操作进行描述。在帧内编码模式中,控制管理器360对开关302进行操作,以便从输入线318接收视频输入。视频信号则是以逐个宏块的方式并经由输入线318而从输入端301接收的。在对其进行接收的时候,构成宏块的亮度和色度值块传递到DCT变换单元304,所述单元对每一个块值执行一个二维离散余弦变换,由此为各个块产生一个二维DCT系数阵列。举例来说,在前述情况中,每一个宏块都包括4个8×8的亮度值块以及两个在空间上与之对应的8×8像素的色度值块,而DCT变换部件304则为每个块产生一个8×8的系数值阵列。
关于各个块的DCT系数传递到量化器306,在所述量化器306中使用量化参数QP对其进行量化。关于量化参数QP的选择是经由控制线315并由控制管理器360来控制的。由于经过量化的系数的数值精度低于DCT变化单元304初始生成的系数的数值精度,因此所述量化会引入一个信息损失。这样就提供了另外一种借以减少表示视频序列中各个图像所需数据量的机制。然而,与实质无损的DCT变换所不同,通过量化引入的信息损失会导致图像质量的不可逆降级。应用于DCT系数的量化程度越高,图像质量的损失也就越大。
如图1的线路325所示,对每一个块来说,其经过量化的DCT系数将从量化器306传递到视频复用编码器370。视频复用编码器370使用一个Z字形扫描过程来对各个块的变换系数进行排序。这个操作是将经过量化的变换系数的二维阵列转换到一个一维阵列中。如图3所示的典型的Z字形扫描大致是以空间频率递增的顺序来对系数进行排序的。此外,所述操作往往还根据系数值来对其进行排序,以使一维阵列中位置较早的系数更有可能比阵列中位置靠后的系数具有更大绝对值。这是因为在图像块内部,较低的空间频率往往具有较高的幅度。因此,在经过量化的变换系数的一维阵列中,末尾的那些值通常为零。
DCT变换系数的游程-等级(run-level)编码通常,视频复用编码器370使用了名为等级(level)和游程(run)的两个值来表示一维阵列中经过量化的各个非零系数。等级是经过量化的系数的值,而游程则是所论述系数之前的连续零值系数数目。关于给定系数的游程和等级的值经过排序而使得等级的值是在相关的游程值之前。而与零相等的等级值则用于表示所述块中没有非零系数。这个大小为0的等级值称为EOB(块结束)符号。
熵编码通过使用熵编码,在视频复用器370中进一步对游程和等级的值进行了编码。所述熵编码是一个无损操作,它利用的是所编码数据集内部符号通常具有不同出现概率这一事实。这样一来,通过指派一个可变数字,可以用具有更少比特的码字来表示更有可能出现的符号,而不是使用固定数量的比特来表示每个符号。因此,熵编码通常称为可变长度编码(VLC)。由于某些等级和游程比其他值更有可能出现,因此可以有效使用熵编码技术来减少表示游程和等级的值所需要的比特数目。在这里可以使用多种不同方法来实施熵编码。例如,游程和等级参数的熵编码可以借助于定义所编码数据集中各个可能符号与相应可变长度码之间映射的查找表实施。这种查找表通常是通过对训练资料进行统计分析而被定义的,其中所述训练资料与所编码符号包含相同符号并具有相似统计特性。此外还有一种名为算术编码的替换技术,它可用于将游程和等级值转换成可变长度码字。例如,在对一组符号进行算术编码时,用于对转换系数块进行量化的游程与等级值是作为一个浮点型的十进制数来编码的。
一旦使用了恰当方法来对游程和等级值进行熵编码,则视频复用编码器进一步将其与控制信息结合,此外还使用了一种适于所论述信息类型的可变长度编码方法来进行熵编码,从而形成编码图像信息335的单独压缩比特流。
宏块的本地解码版本也是在编码器300中形成的。这个操作是通过将量化器306输出的关于各个块的量化变换系数经由反向量化器308以及在逆变换单元310中应用一种反向DCT变换来完成的。这样一来,重建的像素阵列是为所述宏块中的各个块构造的。最终得到的图像数据输入到组合器312。在帧内编码模式中对开关314进行设定,以使经由开关314到达组合器312的输入为零。这样一来,组合器312执行的操作等价于传递那些没有发生变化的解码图像数据。
在接收到当前帧的宏块并对宏块执行了单元304、306、308、310和312中的前述编码和解码步骤的时候,在帧存储器320中构造帧内编码帧的解码版本。在对当前帧的最后一个宏块执行了帧内编码和后续解码之后,帧存储器320将会包含一个完全解码的帧,在以帧间编码格式编码后续接收的视频帧的过程中,所述完全解码的帧可以用作一个预测参考帧。
现在对帧间编码模式中的编码器300的操作进行描述。在帧间编码模式中,控制管理器360通过操作开关302来从线路317接收其输入,其中包含了组合器316的输出。组合器316以宏块方式从输入端301中接收视频输入信号。在组合器316接收到构成宏块的亮度和色度值的块的时候,它会形成相应的预测误差信息块。所述预测误差信息表示的是所论述的块与运动补偿预测单元350中产生的其预测值之间的差值。更具体地说,关于宏块中各个块的预测误差信息包括所述值的二维阵列,其中每一个值表示的都是所编码亮度或色度信息块中一个像素值与依照下述过程而为所述块形成的运动补偿预测所获取的解码像素值之间的差值。因此,在每个宏块都包括8×8像素的亮度值块以及两个在空间上与之对应的8×8像素的色度值块的情况下,关于宏块的预测误差信息也包括四个8×8的亮度预测误差值块,以及两个在空间上与之对应的8×8的色度预测误差值块。
关于宏块中各个块的预测误差信息被传递到DCT变换单元304,所述单元对每个预测值块执行一个二维离散余弦变换,以便为每一个块都产生一个DCT变换系数的二维阵列。因此,在关于各个宏块的预测误差信息包含四个8×8的亮度预测误差值块以及两个在空间上与之对应的8×8的色度预测误差值块的情况下,DCT转换单元304为每个预测误差块产生一个8×8的变换系数值阵列。关于各个预测误差块的变换系数则被传递到量化器306,其中使用一个量化参数QP并以一种与上文中结合帧内模式中的编码器操作所描述的方式相似的方式来对其进行量化。同样,关于量化参数QP的选择是由控制管理器360通过控制线315来进行控制的。
经过量化的DCT系数表示的是宏块中各个块的预测误差信息,如图1中的线路325所示,这些系数从量化器306传递到视频复用器370。与帧内编码模式一样,视频复用编码器370使用了前述Z字形扫描过程(参见图3)来对各个预测误差块的变换系数进行排序,然后则将每一个非零量化系数表示成一个等级和一个游程值。此外它还使用了熵编码并以一种与上文结合帧内编码模式所描述的方式相似的方式来对游程和等级值进行压缩。视频复用编码器370还经由线路326从运动场编码单元340中接收运动矢量信息,并且从控制管理器360中接收控制信息。该编码器对运动矢量信息进行熵编码,并且形成一个单独的编码图像信息比特流335,所述比特流中包含了经过熵编码的运动矢量、预测误差和控制信息。
经过量化的DCT系数表示的是宏块中各个块的预测误差信息,这些系数也是从量化器306传递到反向量化器308。在这里对其进行反向量化并且将最终得到的反向量化DCT系数应用于反向DCT变换单元310,其中在所述单元中对其进行DCT变换,以便产生局部解码的预测误差值块。然后,经过局部解码的预测误差值块输入到组合器312中。在帧间编码模式中将对开关314进行设置,以使组合器312还接收关于运动补偿单元350产生的宏块中各个块的预测像素值。组合器312将预测误差值的每一个局部解码块与相应的预测像素值块相结合,以便产生重建图像块并将其存入帧存储器320。
由于视频信号的宏块是从视频源接收并且经过先前所述的单元304、306、308、310和312中的编码和解码步骤,因此帧内编码帧的解码版本是在帧存储器320中构造的。在对视频信号的最后一个宏块执行了帧内编码和后续解码之后,帧存储器320包含一个完全解码的帧,所述帧可以在用帧间编码格式解码后续接收的视频帧的过程中充当一个预测参考帧。
现在描述的是为当前帧的一个宏块产生预测。任何一个以帧间编码格式编码的帧都需要一个用于运动补偿预测的参考帧。这意味着在对视频序列进行编码的过程中,无论将要编码的第一帧是序列中的第一个帧还是其他帧,都有必要采用帧间编码格式来对其进行编码。而这转而意味着当控制管理器36将视频编码器300切换到帧间编码模式时,通过对先前形成的编码帧进行解码,由此形成的完整参考帧已经可以在编码器的帧存储器320中使用。通常,参考帧是通过对帧内编码帧或帧间编码帧进行局部解码来形成的。
在为当前帧的一个宏块生成预测的过程中,第一个步骤是由运动估计单元330执行的。运动估计单元330经由线路328来接收那些构成所编码的帧的亮度和色度值块。然后,它执行一个块匹配操作,以便识别参考帧中实质对应于当前宏块的一个区域。为了执行所述块匹配操作,运动现场估计单元经由线路327来访问帧存储器320中保存的参考帧数据。更具体地说,运动估计单元330是通过对表示受检查宏块与候选最佳像素匹配区域间像素值差别的不同数值(例如绝对差值之和)进行计算来执行块匹配的,其中所述最佳像素匹配区域来源于帧存储器320中保存的参考帧。在参考帧的预定搜索范围以内,针对所有可能偏移上的偏移而计算了一个差值,并且运动估计单元330确定了最小的计算差值。当前帧的宏块与产生最小差值的参考帧的候选像素值块之间的偏移则定义了关于所讨论的宏块的运动矢量。
一旦运动估计单元330为宏块产生了运动矢量,则其将运动矢量输出到运动场编码单元340。所述运动场编码单元340使用一个包含一组基函数和运动系数的运动模型来对从运动估计单元330接收的运动矢量进行近似估计。更具体地说,运动场编码单元340将运动矢量表示为一组运动系数值,其中在将这些值与基函数相乘的时候则形成了运动矢量的一个近似值。通常,一个平移运动模型只具有两个运动系数并且在这里使用了基函数。
运动系数从运动场编码单元340传递到运动补偿预测单元350。运动补偿预测单元350还从帧存储器320中接收运动估计单元330识别的像素值的最佳匹配候选区域。通过使用运动场编码单元340产生的运动矢量的近似表示以及来自参考帧的像素最佳匹配候选区域的像素值,运动补偿预测块350为宏块中的每一个块都产生一个预测像素值的阵列。每一个预测像素值块都传递到组合器316,在所述组合器中则将对应于当前宏块的块中的实际(输入)像素值与预测像素值相减。这样就得到了一组关于宏块的预测误差块。
现在对图2所示的视频解码器400的操作进行描述。解码器400包括一个从编码器300接收编码比特流并将其解复用成其组成部分的视频复用解码器470,一个反向量化器410,一个反向DCT变换器420,一个运动补偿预测单元440,一个帧存储器450,一个组合器430,一个控制管理器460以及一个输出端480。
控制管理器460对所解码的是帧内编码帧或帧间编码帧做出响应,从而对解码器400的操作进行控制。帧内/帧间触发控制信号将导致解码器在解码模式中进行切换,其中举例来说,所述信号是在从编码器接收的各个压缩视频帧的报头部分所提供的图像类型信息中导出的。帧内/帧间触发控制信号由视频复用解码器470从编码视频比特流中提取并且经由控制线422传递到控制管理器460。
帧内编码帧的解码是以一个接一个的宏块为基础来执行的,其中实际上每一个宏块都是在一识别出接收视频比特流335中与之相关的编码信息的时候就被解码的。视频复用解码器470首先从涉及所论述宏块的可能控制信息中分离那些关于宏块中的块的编码信息。而关于帧内编码宏块中各个块的编码信息包括可变长度码字。这些码字表示的是用于块中非零量化DCT系数的熵编码的等级和游程值。视频复用解码器410使用一种可变长度解码方法来对可变长度码字进行解码,由此恢复等级和游程值,其中所述方法与编码器300中使用的编码方法相对应。然后,所述解码器为宏块中的各个块重建量化变换系数阵列并且将其传递到反向量化器410。此外还在视频解复用器中使用了一种恰当的可变长度解码方法来对涉及宏块的任何控制信息进行解码,并且将其传递到控制管理器460。特别地,与应用于变换系数的量化等级相关的信息由视频复用解码器470从编码比特流中提取并且经由控制线424提供到控制管理器460。控制管理器转而经由控制线415将这个信息传递到反向量化器420。反向量化器410根据控制信息来为宏块中的各个块反向量化那些量化过的DCT系数,并且将现在进行了反向量化的DCT系数提供给反向DCT变换器420。
反向DCT变换器420对用于宏块中各个块的反向量化DCT系数执行反向DCT变换,以便形成一个包含重建像素值并经过解码的图像信息块。由于在帧内编码宏块的编码/解码中并未使用运动补偿预测,因此控制管理器460以一种防止在帧内编码宏块的解码中使用任何参考信息的方式来控制组合器430。关于宏块中各个块的重建像素值则传递到解码器的视频输出端480,其中举例来说,可以将所述值提供给一个显示设备(没有显示)。此外,关于宏块的各个块的重建像素值还保存在帧存储器450中。由于对帧内编码帧的后续宏块进行解码和保存,因而在帧存储器450中逐渐汇聚出一个解码帧,并且由此可以将所述帧充当一个参考帧,以便在与后续接收的帧间编码帧的解码相关联的运动补偿预测中使用。
帧间编码帧也是以逐个宏块的方式来解码的,实际上,每一个帧间编码宏块都是在从接收比特流中识别到与之相关的编码信息的时候就被解码的。视频复用解码器470从编码运动矢量信息和涉及所论述宏块的可能控制信息中分离出关于帧间编码宏块各个块的编码预测误差信息。如上所述,用于宏块中各个块的编码预测误差信息包括可变长度代码字,它表示的是用于所述预测误差块的非零量化变换系数熵编码的等级和游程值。视频复用解码器470使用一种可变长度解码方法来对可变长度码字进行解码,由此恢复等级和游程值,其中所述方法与编码器300中使用的编码方法相对应。然后所述解码器重建一个关于宏块中各个块的量化变换系数阵列并且将其传递到反向量化器410。此外,在视频复用解码器中也使用了一种恰当的可变长度编码方法来对涉及帧间编码宏块的控制信息进行解码,并且所述信息则传递到控制管理器460。与应用于预测误差块的变换系数的量化等级相关联的信息则是从编码比特流中提取的,并且所述信息是经由控制线424提供到控制管理器460的。控制管理器460转而经由控制线415将这个信息传递到反向量化器420。反向量化器420根据控制信息来对这些表示宏块中各个块的量化DCT系数进行反向量化,并且将现在反向量化的DCT系数提供给反向量化器420。然后则在反向DCT变换器420中对表示各个块的预测误差信息的反向量化DCT系数进行反变换,以便为宏块中的每一个块生成一个重新建立的预测误差值的阵列。
涉及宏块的编码运动矢量信息由视频复用解码器470从编码视频比特流335中提取并且是使用一种恰当的可变长度解码方法而被解码的。由此得到的解码运动矢量经由数据线426传递到运动补偿预测单元440,其中所述单元使用了一个与编码器300中编码所述帧间编码宏块所用运动模型相同的运动模型来为宏块重建一个运动矢量。重建的运动矢量与编码器的运动估计单元330最初确定的运动矢量相似。解码器的运动补偿预测单元440则使用重建的运动矢量而在帧存储器450保存的预测参考帧中识别重建像素区域的位置。例如,参考帧可以是一个先前解码的帧内编码帧,也可以是一个先前解码的帧间编码帧。但不论出现哪种情况,重建运动矢量指示的像素区域都被用于形成一个所论述宏块的预测。更具体地说,运动补偿预测单元440通过从参考帧中识别的像素区域拷贝相应的像素值来形成一个关于宏块中各个块的像素值阵列。而所述预测则是从参考帧中导出的像素值块,它从运动补偿预测单元440传递到组合器430,在那里它与经过解码的预测误差信息相结合。在实践中,每个预测块的像素值都被添加到反向DCT变换器420输出的相应重建预测误差值中。由此可以得到关于宏块中各个块的重建像素值阵列。重建的像素值则传递到解码器的视频输出端480并且保存在帧存储器450中。由于解码和保存了帧间编码帧的宏块,因此在帧存储器450中逐渐汇聚成一个解码帧,由此所述解码帧作为一个参考帧而在其他帧间编码帧的运动补偿预测中使用。
H.26L视频编码标准ITU-T建议H.26L是国际电联开发的视频编码标准族中的最新标准。特别地,这个标准旨在以通常小于64kb/s的低比特率来进行视频编码,因此所述标准特别适合对经由那些需要优先考虑如何最佳使用可用带宽的无线通信网或任何固定线路通信网所传送的数字视频进行编码。ITU-T H.26L定义的视频编码系统是一个混合视频编码系统,它是根据如上所述与图1和2所述的通用视频编码器300和解码器400相结合的一般原则来运作的。特别地,依照H.26L实现的视频编码系统使用的是将基于块的变换编码与运动补偿预测相结合,从而减少视频序列中的空间和时间冗余。
H.26L建议的最新版本即为通常所说的Test Model 8(TML8),在“H.26L Test Model Long Term Number 8(TML-8)draft 0”(ITU-T电信标准化部分,研究组16,视频编码专家小组)中对其进行了描述,这个版本的建议规定了两种备选的熵编码模式。在第一种(缺省)模式中使用了所谓的通用可变长度编码(UVLC)方法来对所有语法元素进行编码。UVLC编码模式是一种查找表方法,其中在不考虑所论述信息类型的情况下用同一组可变长度码字来表示视频编码器产生的所有不同类型的信息。而在所谓的“高复杂度类(profile)”中指定使用的备选熵编码方法是一种以基于上下文的自适应二进制算术编码(CABAC)而著称的技术。这种方法是一种持续适应于编码信息统计性质的二进制算术编码形式,并且在现有技术中作为最有效的熵编码形式中的一种而闻名(参见H.Witten、R.M.Neal与J.G.Cleary在1987年6月发表于Commun.ACM第30卷第520~540页的“Arithmetic coding for data compression”一文)。
由于UVLC熵编码使用了同一组可变长度码字来表示视频编码器生成的所有类型的信息,因此所述码字的统计性质通常并没有最佳匹配于将要编码的信息特征。例如,用于表示为帧内编码图像块的量化DCT系数的特定游程和等级值的出现频率很可能与涉及量化参数值的控制信息中的值的出现情况不同。在H.26L中引入了CABAC熵编码方法,以便克服UVLC熵编码方法所固有的次优特性。如本文中先前所述,算术编码表示的是一个将要用单独的可变长度码(浮点数)来进行编码的符号群。与独立编码各个符号的熵编码方法相比,这种方法提供了特有的优点。具体地说,独立编码各个符号的熵编码方法至少需要使用一个比特来表示各个符号。由于算术编码表示的是具有单个码字的符号群,因而有可能实现小于1比特/秒的数据压缩速率。因此,H.26L中提供的CABAC方法还有可能提高数据压缩。此外,由于所述方法是一种自适应方法,因此它能够考虑到所编码信息的统计特征变化,由此确保即使所编码数据性质发生某种程度的变化,也能够保持数据压缩性能。
基于上下文的算术编码如上所述,CABAC算术编码是一种熵编码方法,它能适应于所编码信息的变化统计。这样一来,与假设固定统计特性的熵编码技术相比,所述方法能够提供改善的压缩效率。图4描述的是一种示范性的基于上下文的二进制算术编码器700。CABAC是一种二进制算术编码方法,因此,所要编码的具有非二进制序列的数据符号首先在二进制映射单元710中转换成二进制值(“二进制化”)。所述二进制化处理包括将所要编码的符号映射到一个二进制序列(bin),其中每一个二进制序列都具有一个相应的二进制序列编号并且可以赋予一个值0或1。以下在表1中给出了这种映射的一个实例。但是原则上也可以设想使用其它二进制化方案。
在CABAC方法中,每一个二进制序列都指派给一个所谓的“上下文”(基于上下文的算术编码由此得名)。一个上下文可以视为是集中在一起并具有相似统计特征的二进制序列。换句话说,在这里假设对指派给上下文的每一个二进制序列来说,其包含数值1或0的概率与属于所述上下文的其他二进制序列相似。这样一来,用于在算术编码器中产生码字的概率估计是为每一个上下文而不是将要编码的每个
表1可能的二进制序列定义的。每个上下文都是依照一个“上下文模型”定义的,并且所述上下文是基于将要编码的数据符号(由此为二进制序列)的统计特征信息而被预先建立的。通常,如果将0的出现概率与1的出现概率之间的差值增至最大,则会提高二进制算术编码器所能实现的数据压缩比率。同样,基于上下文的算术编码性能还取决于上下文模型的选择。通常,这意味着应该选择那些能使指派给每个上下文的二进制序列的0和1的出现概率间的差值达到最大的上下文模型。
在图4所述的示范性的基于上下文的算术编码器中,一旦在二进制映射单元710二进制化所要编码的符号,则在上下文指派单元720中将其指派给一个相应的上下文。然后则将指派给相应二进制序列(也就是1或0)的值传递到算术编码器730。随后,算术编码器730的编码引擎750使用一个指派了二进制序列的上下文的概率估计来对二进制序列的数值进行编码。在这里,作为算术编码器实现的数据压缩比的性能依赖于概率估计的精度。从原则上讲,所述估计可以是固定或自适应的。如果使用固定概率估计,则关于上下文的概率估计将被指派给预定值并且在编码处理中保持不变。固定概率估计通常是通过对与所要编码的实际资料具有相似统计特征的训练资料进行分析而被预先得到的。如果使用了自适应概率估计,则使用固定值来为各个上下文初始化概率估计,并且根据那些至此为止经过编码的数据(二进制序列)的实际统计特征而在整个编码处理中更新所述概率。执行自适应编码估计通常会更好,因为它们可以适应所要编码的资料。
图4所示的示范性的基于上下文的算术编码器使用了自适应概率估计并且包括一个对经过更新的概率估计进行计算的概率估计单元740。每一个上下文的概率估计则是通过记录指派给各个上下文的各个二进制序列中1和0的出现次数来更新的。例如,对指派给任意上下文k的二进制序列来说,如果为其指派了m次值0并且为其指派了n次值1,那么,对上下文k中的1来说,其概率估计是n/(n(m+1)),对于0来说,其概率估计则是(m+1)/(n(m+1))。
图5描述的是与结合图4所描述的编码器相对应的基于上下文的算术解码器800。在输入端810,基于上下文的算术解码器接收一个表示经过算术编码的数据符号的比特流。一开始,根据先前接收的解码符号,在上下文指派单元850中计算一个上下文并且更新二进制序列值的概率估计。在这里,上下文指派单元850执行的上下文指派与概率估计单元830执行的关于概率估计的计算都是使用与编码器相同的方法来完成的。然后,接收到的比特馈送到算术编码器820的算术编码引擎840中,在那里使用计算得到的上下文以及二进制序列值的当前概率估计来将其转换成解码的二进制序列值。在二进制序列-数值映射单元860中,经过解码的二进制序列映射到游程和等级的值。
在H.26L中使用的CABAC方法现在将对ITU-T建议H.26L中选定用于高复杂度类的CABAC算术编码方法的细节进行详细描述。根据H.26L TML 8,游程和等级值的上下文依赖于所编码的块类型以及二进制化的等级或游程值的二进制序列数目。不同的块类型是依照对系数值进行排序的扫描方式(单/双)、成分类型(亮度/色度,AC/DC)或是编码模式(帧间/帧内)来定义的。然而,对指定类型来说,上下文只依赖于二进制序列数目。更具体地说,依照H.26L TML 8,在这里为等级编码定义了四个上下文。第一个上下文用于第一个二进制序列,第二个上下文用于第二个二进制序列,第三个上下文用于那些表示等级幅度的剩余二进制序列。剩余上下文则用于等级的符号。此外还使用了相似的方法来将游程值指派给上下文。对游程来说,存在三个上下文,第一个上下文用于第一个二进制序列,第二个上下文用于第二个二进制序列,第三个上下文则用于所有剩余的二进制序列。由于游程值始终等于或大于零,因此对附加上下文而言,没有必要为其表示符号信息。这样一来,对一个给定类型的块来说,针对变换系数的二进制序列(等级和游程编码)所进行的将二进制序列指派给上下文的处理可以如下概括If(bin_nr>MAX_BIN_VAL)bin_nr=MAX_BIN_VAL; (1)endcontext=bin_nr其中bin_nr是二进制序列数目,context是上下文编号。根据H.26L TML 8,MAX_BIN_VAL的值设定为3,但是原则上也可以使用不同的MAX_BIN_VAL来作为替换。
游程-等级对是如下编码的首先根据块/系数类型来对游程和等级进行分类,其中所述类型包括扫描模式、系数类型(DC/AC)以及编码模式(帧间/帧内或16×16帧内)。然后通过将等级和游程映射到一个二进制序列来对其进行二进制化,并且根据每一个二进制序列的编号来将其指派给一个上下文。
图6a~6d通过参考示范性的4×4量化DCT系数阵列而对这个处理进行了详细描述。此外它还描述了用于追踪量化DCT系数的游程和等级值的统计特性的方法,从而论证了CABAC方法的自适应特征。在这里,首先对经过量化的DCT系数值的二维阵列进行Z字形扫描,以便产生一个图6a所示的值的一维阵列。然后将一维阵列中的非零系数值作为游程和等级值对来加以表示。如先前所述,每一个等级值都表示一个非零的量化DCT系数值,而相关的游程则对应于所论述系数之前的零值系数的数目。在图6b中给出了来源于示范性的量化DCT系数阵列的游程-等级对。在各个对中,等级值处于游程值之前并且将等于零的等级值用作一个块结束符号,以便指示所述块中没有非零系数值。
接着,每一个游程和等级值都转换成一个二进制值。根据H.26LTML 8,用于转换量化DCT变换系数值的游程和等级的二进制化方案与上文中图1所示方案相同。图6c显示的是将表1给出的二进制化方案应用于示范性阵列中的游程和等级值的结果。此外,图6c还显示了依照H.26L而将二进制序列指派给上下文。如上所述,其中仅仅使用了三个上下文来描述游程和等级值的大小。第一个上下文对应于二进制序列1,第二个上下文对应于二进制序列2,而第三个上下文则包括了所有剩余的二进制序列。在图6c中,上下文是通过粗体横线来描绘的。通过检查图6c可以看出,大多数等级值都映射到指派给上下文3的二进制序列,而大多数游程值则映射到指派给上下文1的二进制序列。
每一个经过指派的上下文的概率估计是在编码了二进制序列之后才更新的。而游程和等级的概率估计则是独立更新的。如先前所述,给定上下文的概率估计表示的是指派给所论述的上下文的二进制序列的统计特征。更具体地说,所述概率估计描述的是指派给上下文的二进制序列中包含0或1的概率。图6d以一种示范方式描述了为游程和等级更新概率估计的方法。该图中描述的是在二进制化那些代表图6a所示的4×4量化DCT系数块的游程和等级,并且将其指派给上下文,进而在算术编码器中编码的前后,在指派到指定游程或等级的上下文的二进制序列中包含0或1的概率。图6d采用了表格形式,其中记录了在指派给各个上下文的二进制序列中的1和0的出现情况。因此,一个指定上下文的概率估计是如下给出的0的概率=0的数目/(0的数目+1的数目)1的概率=1的数目/(0的数目+1的数目)在这个图中,假设图6a所示的量化DCT系数的4×4块是最早处理的块。这意味着在表中没有记录1和0的先前出现情况。为了克服这个问题,在这里假设在处理所述块之前,每一个上下文都具有相等的包含1或0的概率。而这种假设是通过在记录0和1的出现情况的列中输入相同的值来表示的。在图6d中,1被用于初始化概率估计。作为选择,也可以使用一个来源于训练数据分析的概率估计来为各个上下文初始化概率估计。然后则在二进制化关于量化DCT变换系数的游程和等级值并将其指派给上下文的时候对各个上下文的二进制序列中出现的1和0的数目进行计数,由此更新概率估计。图6d的右手列显示了在处理过图6a所示的4×4量化DCT块之后的情况。
尽管与UVLC熵编码方法相比,在ITU-T建议H.26L TML 8的高复杂度类中采用的CABAC算术编码方法在数据压缩方面提供了改进,但是就编码效率来说,所述方法仍不是最佳的。因此,本发明的一个目的是提供一种能够进一步提高编码效率的基于上下文的算术编码方法和系统。
发明内容
本发明基于这样一种认识,那就是在使用基于上下文的算术编码来对指定数据符号进行编码的时候,通过使用那些对指派了其他数据符号的上下文加以考虑的上下文模型,可以在编码效率方面得到提高。特别地,通过参考H.26L TML 8的高复杂度类中使用的CABAC方法,本发明的发明人已经确定,在游程与关联于DCT变换系数的等级之间存在某些联系。此外发明人还确定了可以使用这些关系来构造改进的上下文模型,其中所述模型能在将CABAC方法应用于游程和等级值的时候使之以经过提高的编码效率来运作。特别地,发明人已经确定,连续等级值将会显示出极大相似性。更具体地说,在指定的变换系数块内部,所编码系数的等级实质上通常具有类似于先前编码系数等级的幅度。此外发明人还确定了等级与游程值之间的一个反比关系。特别地,越大的等级值越有可能在较小的游程值之前。反过来一样是成立的,也就是说,较小的等级值很可能是在较大的游程之后。因此,本发明提出为DCT变化系数的编码创建新的上下文模型,其中所述模型顾及了等级与游程值之间的这些关系。
在为了执行基于上下文的编码器而设计的第一个上下文模型中,对指派给一个二进制化的系数等级值的二进制序列来说,其上下文依赖于先前编码的系数等级。在为了执行基于上下文的解码器而设计的第二个上下文模型中,对指派给二进制化的系数等级值的二进制序列来说,其上下文依赖于先前解码的系数等级。在为了实施基于上下文的解码器或是基于上下文的算术解码器而设计的第三个上下文模型中,对指派给二进制化的系数游程值的二进制序列来说,其上下文依赖于先前解码的系数等级值。
发明人还进一步确定,在与不同图像块相关联的变换系数值之间存在某种相似性。这些相似性在相互靠近的图像块间会变得更大,并且在相互紧邻的图像块之间往往最强。更具体地说,用于表示特定图像块的非零变换系数值的数量Nc往往与接近或邻接所论述图像块中的非零变换系数值的数目是相同的。因此,本发明还引入了这样一个概念,那就是为变换编码的图像块提供一个非零变换系数数目的指示并且使用熵编码来对这个值进行编码。此外,如果将基于上下文的算术编码用于对Nc值进行编码,那么发明人已经确定,较为有利的是通过对指派给用于至少一个其他变换编码图像块的上下文加以考虑而将块的Nc值指派给一个上下文。这样一来,在相互靠近的图像块之间,Nc值间的相似性可以利用这个基于上下文的算术编码过程。根据I TU-T建议H.26L TML 8,并没有对图像块中非零变换系数的数目进行编码。作为替换并且如先前所示,在这里提供了一个块结束(EOB)指示。EOB指示表示已经对相应于非零系数的最后一个游程-等级对进行了编码。发明人确定,与当前在H.26L TML 8中所用的提供EOB指示的方法相比,这里提出的方法将会导致编码效率上的提高,其中在本发明中提供了一个块中非零系数数目的明确指示,并且使用了基于上下文的算术编码来对其进行编码。
尽管本发明背后的动机及其基本概念是在视频编码/解码中给出的,尤其是就H.26L TML 8给出的,但是应该理解,本发明也可以适用于其他视频编码系统和静止图像编码。从原则上讲,本发明可以应用于任何一个使用了基于块的变换编码与基于上下文的算术编码的图像编码系统。
根据本发明的第一个方面,提供了一种图像编码方法,其中将图像分成具有多个像素的多个块,每一个像素具有一个像素值,并且对所述像素值块执行一个变换编码操作,以便产生相应的变换系数值块。在一个给定扫描顺序中扫描所述变换系数值块,以便产生一个经过扫描的系数值阵列,并且使用多个数字对来表示经过扫描的阵列中的系数值,所述数字对具有一个第一数字和一个第二数字。将第一数字和第二数字指派给表示所述数字对的多个上下文中的一个。根据本发明的第一个方面,一个数字对的第一值是基于另一个数字对中的第一数字而被指派给一个上下文的。
优选地,基于一个数字对中的第一数字而将另一个数字对中的第一数字指派给一个上下文的步骤顾及指派了其他数字对中的第一数字的上下文。
较为有利的是,数字对中的第一数字表示的是一个非零系数值。优选地,数字对的第一数字与非零系数值的大小是相等的。
优选地,数字对中的第二数字表示的是在非零系数值之前的多个连续零系数值。
优选地,所述上下文是一个基于上下文的算术编码器的上下文。
更为优选的是,所述上下文是基于上下文的二进制运算编码器的上下文。
较为有利的是,第一和第二数字映射到一组二进制序列,其中每一个二进制序列都具有一个相关联的二进制序列编号,并且每一个二进制序列都能采用第一值或第二值中的一个。
优选地,每个第一和第二数字都映射到所述一组二进制序列中的一个,而将数字映射到所述一组二进制序列中给定的一个则是通过将二进制序列的值指派给第一值来指示的。
优选地,第一值是1并且第二值是0。
优选地,每一组二进制序列都被指派给一个上下文。
非常有利的是,在对指派了其他数字对中第一数字的上下文加以考虑的情况下,基于另一个数字对中的第一数字而将一个数字对中的第一数字指派给一个上下文的步骤是通过检查所述其他数字对的第一数字所映射的二进制序列的二进制序列编号来执行的。
较为有利的是,所述方法还包括保持一个用于描述各个上下文的统计特性的概率估计。
优选地,对各个上下文来说,所述概率估计表示的是具有指派给上下文的预定值的数字的统计似然性。
优选地,对各个上下文来说,所述概率估计是通过记录指派给所论述上下文的二进制序列中的第一值和第二值的出现情况来保持的。
根据本发明的第二个方面,提供了一种图像编码方法,其中将图像分成具有多个像素的多个块,每一个像素都具有一个像素值,并且对所述像素值块执行一个变换编码操作,以便产生相应的变换系数值块。在一种给定扫描顺序中扫描变换系数值块,以便产生一个经过扫描的系数值阵列,并且使用多个数字对来表示经过扫描的阵列中的系数值,其中所述数字对具有一个第一数字和一个第二数字。将第一数字和第二数字指派给表示所述数字对的多个上下文中的一个。根据本发明的第二个方面,数字对的第二数字是基于数字对中的第一数字而被指派给一个上下文的。
优选地,基于一个数字对中的第一数字而将另一个数字对中的第一数字指派给一个上下文的步骤对指派了其他数字对中第一数字的上下文加以考虑。
较为有利的是,数字对中的第一数字表示的是一个非零系数值。优选地,数字对的第一数字与非零系数值的大小是相等的。
优选地,数字对中的第二数字表示的是在非零系数值之前的多个连续零系数值。
优选地,所述上下文是一个基于上下文的算术编码器的上下文。
更为优选的是,所述上下文是基于上下文的二进制运算编码器的上下文。
较为有利的是,第一和第二数字映射到一组二进制序列,其中每一个二进制序列都具有一个相关联的二进制序列编号,并且每一个二进制序列都能采用第一值或第二值中的一个。
优选地,每个第一和第二数字都映射到所述一组二进制序列中的一个,而将数字映射到所述一组二进制序列中给定的一个则是通过将二进制序列的值指派给第一值来指示的。
优选地,第一值是1并且第二值是0。
优选地,每一组二进制序列都被指派给一个上下文。
非常有利的是,在对指派了其中一个数字对的第二数字的上下文加以考虑的情况下,基于数字对中第一数字而将数字对中第二数字指派给一个上下文的步骤是通过检查第二数字所映射的二进制序列的二进制序列编号来执行的。
较为有利的是,所述方法还包括保持一个用于描述各个上下文的统计特性的概率估计。
优选地,对各个上下文来说,所述概率估计表示的是具有指派给上下文的预定值的数字的统计似然性。
优选地,对各个上下文来说,所述概率估计是通过记录指派给所论述上下文的二进制序列中的第一值和第二值的出现情况来保持的。
优选地,根据本发明第一和第二方面的方法全都适用于变换系数值块。
根据本发明的第三个方面,提供了一种编码器,包括用于将图像分为具有多个像素的多个块的装置,其中每一个像素都具有一个像素值,此外还包括用于对像素值块执行一个变换编码操作,以便产生一个相应的变换系数值块的装置。所述编码器还包括用于以一个给定扫描顺序来扫描变换系数值块,以便产生经过扫描的系数值阵列的装置,用于表示多个数字对所代表的经过扫描的阵列中的系数值的装置,所述数字对具有一个第一数字和一个第二数字,以及用于将第一数字和第二数字指派给表示数字对的多个上下文之一的装置。根据本发明的第三个方面,所述编码器包括用于根据另一个数字对的第一数字而将数字对的第一数字指派给一个上下文的装置。
根据本发明的第四个方面,提供了一种编码器,包括用于将图像分成具有多个像素的多个块的装置,其中每一个像素都具有一个像素值,此外还包括对像素值块执行一个变换编码操作,以便产生相应的变换系数值块的装置。所述编码器还包括用于以一个给定扫描顺序扫描变换系数值块,以便产生经过扫描的系数值阵列的装置,用于表示多个数字对所代表的经过扫描的阵列中的系数值的装置,其中所述数字对具有一个第一数字和一个第二数字,以及用于将第一数字和第二数字指派给表示数字对的多个上下文之一的装置。根据本发明的第四个方面,所述编码器包括用于根据数字对中的第一数字而将数字对的第二数字指派给一个上下文的装置。
根据本发明的第五个方面,提供了一种图像编码方法,其中将图像分成具有多个像素的多个块,每一个像素都具有一个像素值,并且对像素值块执行一个变换编码操作,以便产生相应的变换系数值块。根据本发明的第五个方面,所述方法包括如下步骤提供一个表示变换系数值块中非零系数值数目的数字,以及将这个数字指派给一个表示所述数字的上下文。
非常有利的是,将表示变换系数值块中非零变换系数值数目的数字指派给一个上下文的步骤对指派了另一个数字的上下文加以考虑,其中所述另一个数字表示的是另一个变换系数块中的非零系数值数目。
非常有利的是,变换值块是在给定扫描顺序中扫描的,由此产生了一个经过扫描的系数值阵列,并且在所述经过扫描的阵列中,系数值是由多个数字对来表示的,其中所述数字对具有一个第一数字和一个第二数字。
较为有利的是,数字对中的第一数字表示的是一个非零系数值。
优选地,数字对的第一数字与非零系数值的大小是相等的。
更为优选的是,数字对的第一数字与非零系数值减1的大小是相等的。
优选地,数字对中的第二数字表示的是在非零系数值之前的多个连续零系数值。
优选地,在这里没有提供一个指示处于经过扫描的系数值阵列中的最后一个非零系数值的块结束指示。
优选地,根据本发明第一、第二和第五方面的方法每一个都适用于变换系数值块。
根据本发明的第六个方面,提供了一种编码器,其中包括用于将图像分成具有多个像素的多个块的装置,其中每一个像素都具有一个像素值,此外还包括用于对像素值块执行一个变换编码操作,以便产生相应的变换系数值块的装置。所述编码器包括提供一个用于指示变换系数值块中非零系数值数目的数字的装置,以及用于将所述数字指派给一个表示所述数字的上下文的装置。
非常有利的是,所述编码器还包括用于在对指派了另一个数字的上下文加以考虑的情况下指派所述指示变换系数值块中非零变换系数值数目的数字的装置,其中所述另一个数字指示的是另一个变换系数块中非零变换系数的数目。
根据本发明的第七个方面,提供了一种计算机程序,其中包括用于将图像分成具有多个像素值的多个块的代码,其中每一个像素值都具有一个像素值,此外还包括用于对像素值块执行一个变换编码操作,以便产生相应的变换系数值块的代码。所述计算机程序还包括用于以给定扫描顺序扫描变换系数值块,以便产生经过扫描的系数值阵列的代码,用于使用多个数字来表示经过扫描的阵列中的系数值的代码,其中所述数字对具有一个第一数字和一个第二数字,以及用于将第一数字和第二数字指派给表示数字对的多个上下文之一的代码。根据本发明的第七个方面,所述计算机程序还包括用于根据另一个数字对中的第一数字而将其中一个数字对的第一数字指派给一个上下文的代码。
较为有利的是,数字对中的第一数字表示的是一个非零系数值。
优选地,数字对的第一数字与非零系数值的大小是相等的。
优选地,数字对中的第二数字表示的是在非零系数值之前的多个连续零系数值。
根据本发明的第八个方面,提供了一种计算机程序,其中包括用于将图像分成具有多个像素值的多个块的代码,其中每一个像素值都具有一个像素值,此外还包括用于对像素值块执行一个变换编码操作,以便产生相应的变换系数值块的代码。所述计算机程序还包括用于以给定扫描顺序来扫描变换系数值块,以便产生经过扫描的系数值阵列的代码,用于使用多个数字来表示经过扫描的阵列中的系数值的代码,其中所述数字对具有一个第一数字和一个第二数字,以及用于将第一数字和第二数字指派给表示所述数字对的多个上下文之一的代码。根据本发明的第八个方面,所述计算机程序还包括用于根据数字对中第一数字来把所述数字对的第二数字指派给一个上下文的代码。
较为有利的是,数字对中的第一数字表示一个非零系数值。
优选地,数字对的第一数字与非零系数值的大小是相等的。
优选地,数字对中的第二数字表示的是非零系数值之前的多个连续零系数值。
根据本发明的第九个方面,提供了一种计算机程序,其中包括用于将图像分成具有多个像素值的多个块的代码,其中每一个像素值都具有一个像素值,此外还包括用于对像素值块执行一个变换编码操作,以便产生相应的变换系数值块的代码。根据本发明的第九个方面,所述计算机程序还包括用于提供表示变换系数值块中非零系数值数目的数字的代码,此外还包括用于将这个数字指派给一个表示所述数字的上下文的代码。
非常有利的是,所述计算机程序还包括用于在对指派了另一个数字的上下文加以考虑的情况下,将指示变换系数值块中非零变换系数值数目的数字指派一个上下文的代码,其中所述另一个数字指示的是另一个变换系数块中的非零系数值的数目。
根据本发明的第十个方面,提供了一种依照本发明第七、第八和第九方面的计算机程序。
根据本发明的第十一个方面,提供了一种基于上下文的算术编码方法,其中数据符号阵列是用一个码字来表示的。所述阵列中的数据符号是包含了一个第一数字和一个第二数字的数字对。所述数字对中的第一数字指派给一个从表示第一数字的多个上下文中选出的上下文,数字对中的第二数字则指派给一个从表示第二数字的多个上下文中选出的上下文。根据本发明的第十一个方面,数字对的第一数字是基于数字对中另一个数字对的第一数字而被指派给上下文的。
根据本发明的第十二个方面,提供了一种基于上下文的算术解码方法,其中数据符号阵列是从一个表示阵列的码字中解码的。所述阵列中的数据符号是包含了一个第一数字和一个第二数字的数字对。所述数字对的第一数字指派给一个从代表第一数字的多个上下文中选出的上下文,而数字对的第二数字则指派给一个从代表第二数字的多个上下文中选出的上下文。根据本发明的第十二个方面,数字对的第一数字是基于数字对中的另一个数字对的第一数字而被指派给上下文的。
根据本发明的第十三个方面,提供了一种基于上下文的算术编码方法,其中数据符号阵列是用一个码字来表示的。所述阵列中的数据符号是包括一个第一数字和一个第二数字的数字对。所述数字对的第一数字指派给一个从表示第一数字的多个上下文中选出的一个上下文,所述数字对的第二数字则指派给一个从表示第二数字的多个上下文中选出的上下文。根据本发明的第十三个方面,数字对的第二数字是基于数字对中的第一数字而被指派给一个上下文的。
根据本发明的第十四个方面,提供了一种基于上下文的算术解码方法,其中数据符号阵列是从一个表示阵列的码字中解码的。所述阵列中的数据符号是包括一个第一数字和一个第二数字的数字对。所述数字对的第一数字指派给一个从表示第一数字的多个上下文中选出的上下文,所述数字对的第二数字则指派给一个从表示第二数字的多个上下文中选出的上下文。根据本发明的第十四个方面,数字对的第二数字是基于数字对中的第一个数字而被指派给一个上下文的。
根据本发明的第十五个方面,提供了一种基于上下文的算术编码方法,其中数据符号阵列是用一个码字来表示的,此外还提供了表示阵列中非零数据符号数目的数字并且将其指派给一个表示所述数字的上下文。
根据本发明的第十六个方面,提供了一种基于上下文的算术编码器,其中包括用于使用码字来表示一个数据符号阵列的装置。所述阵列中的数据符号是包括第一数字和第二数字的数字对,所述编码器还包括用于将数字对的第一数字指派给一个从代表第一数字的多个上下文中选出的一个上下文的装置,以及将数字对的第二数字指派给一个从代表第二数字的多个上下文中选出的上下文的装置。根据本发明的第十六个方面,所述编码器包括根据所述数字对中一个数字对的第一数字而将另一个数字对的第一数字指派给一个上下文的装置。
根据本发明的第十七个方面,提供了一种基于上下文的算术解码器,其中包括用于从表示数据符号阵列的码字中解码出数据符号阵列的装置。所述阵列中的数据符号是包括第一数字和第二数字的数字对,所述解码器还包括用于将数字对的第一数字指派给从代表第一数字的多个上下文中选出的一个上下文的装置,以及将数字对的第二数字指派给一个从代表第二数字的多个上下文中选出的上下文的装置。根据本发明的第十七个方面,所述解码器包括根据所述数字对中一个数字对的第一数字而将另一个数字对的第一数字指派给一个上下文的装置。
根据本发明的第十八个方面,提供了一种基于上下文的算术编码器,其中包括使用码字来表示一个数据符号阵列的装置。所述阵列中的数据符号是包括第一数字和第二数字的数字对,所述编码器还包括用于将数字对的第一数字指派给从代表第一数字的多个上下文中选出的一个上下文的装置,以及将数字对的第二数字指派给一个从代表第二数字的多个上下文中选出的上下文的装置。根据本发明的第十八个方面,所述编码器包括用于根据数字对中第一数字而将数字对的第二数字指派给一个上下文的装置。
根据本发明的第十九个方面,提供了一种基于上下文的算术解码器,其中包括用于从表示数据符号阵列的码字中解码出所述阵列的装置。所述阵列中的数据符号是包括第一数字和第二数字的数字对,所述解码器还包括用于将数字对的第一数字指派给一个从代表第一数字的多个上下文中选出的上下文的装置,以及将数字对的第二数字指派给一个从代表第二数字的多个上下文中选出的上下文的装置。根据本发明的第十九个方面,所述解码器包括用于根据数字对中第一数字而将数字对的第二数字指派给一个上下文的装置。
根据本发明的第二十个方面,提供了一种基于上下文的编码器,其中包括使用一个码字来表示一个数据符号阵列的装置,此外还包括提供一个表示阵列中非零数据符号数目的数字的装置,以及将所述数字指派给一个表示所述数字的上下文的装置。
通过结合图7a到12来阅读本说明书,本发明将会变得清楚。
图1是一个对使用了基于块的变换编码以及运动补偿预测的示范性视频编码器结构进行描述的框图。
图2是与图1编码器相对应的示范性视频解码器的框图。
图3是一个显示示范性的Z字形扫描的图示。
图4是显示现有技术中基于上下文的算术编码方案的编码器的框图。
图5是显示现有技术中基于上下文的算术编码方案的解码器的框图。
图6a是显示以Z字形方式扫描的量化DCT系数值的示范性二维阵列的图示。
图6b是一个显示那些由图6a的阵列导出的等级和游程值的表格。
图6c是显示表1的二进制化方案应用于图6b的等级和游程的值所导致的二进制化的等级和游程值的表格。
图6d是一个显示了用以从游程和等级中更新概率估计的方法的表格。
图7a是一个显示了根据等级值而将上下文指派给二进制序列的方法的表格。
图7b是一个显示了根据本发明第一实施例而将上下文指派给等级值的方法的表格。
图8a是一个显示了基于游程值而将上下文指派给二进制序列的方法的表格。
图8b是一个显示了根据本发明第二实施例而将上下文指派给游程值的方法的表格。
图9是一个描述了依照本发明的基于上下文的算术编码方案的编码器的框图。
图10是一个依照本发明的解码器的框图。
图11是一个描述了根据本发明优选实施例的图像编码方法的流程图。
图12是一个描述了根据本发明另一个实施例的图像编码方法的流程图。
具体实施例方式
现在将对本发明的实施例进行详细论述。如上所述,本发明提供了多种相关机制,通过该机制可以对基于上下文的算术编码器的编码效率(数据压缩)加以改进。这种改进是通过使用那些对指派了其他数据符号的上下文加以考虑的上下文模型来实现的。
在下文第1.1节详细描述了本发明的第一实施例,该实施例涉及一种基于上下文的二进制算术编码器,所述编码器适于在例如ITU-T建议H.26L定义的图像编码系统中使用。在这个实施例中,通过对图像像素的变换编码块的量化编码系数进行游程-等级编码而产生的等级值是在考虑到了归属同一个块的另一个变换系数等级的情况下指派给上下文的。
在第1.2节详细描述了本发明的第二实施例,该实施例也涉及一种用于图像编码系统的基于上下文的二进制算术编码器,其中所述系统可以是例如ITU-T建议H.26L中定义的图像编码系统。在第二实施例中,通过对图像像素的变换编码块的量化的DCT变换系数进行游程-等级编码而产生的游程值是在考虑到了游程值所属的游程-等级对的等级值的情况下指派给上下文的。
在第1.3节描述了本发明第三实施例,该实施例同样涉及一种用于图像编码系统的基于上下文的算术编码器,其中所述系统可以是例如ITU-T建议H.26L中定义的图像编码系统。根据第三实施例,变换编码图像块的非零变换系数的数目Nc被确定,并且在考虑到指派给用于至少一个其他变换编码图像块的Nc值的上下文的情况下,将其指派给一个上下文。
本发明的优选实施例组合了上述这三个实施例的功能。
如本文先前所述,ITU-T建议H.26L TML 8的高复杂度类使用了一种以CABAC著称的基于上下文的算术编码形式。在一个根据H.26L实施的视频编码器中,CABAC方法被用于对由编码器产生的各种不同类型的信息进行编码,其中包括图像像素变换编码块所产生的变换系数(帧内编码模式)或是预测误差(帧间编码模式)。通过对图像像素块进行变换编码产生的变换系数的二维阵列根据一种特定的扫描模式来扫描从而产生一维阵列。这两种扫描模式是在H.26L中定义的。第一种模式称为“单扫描模式”,另一种模式则称为“双扫描模式”。不管使用哪一种扫描模式,扫描变换系数都会将系数值的二维阵列转换成一个以预定方式来对系数进行排序的一维阵列。在所述一维阵列中,有序的变换系数值被转换成游程和等级值。在经过排序的一维阵列中,最后一个条目是一个依照H.26L TML 8的块结束符号,该条目采取的是一个与零相等的等级值的形式。由此表明在有序阵列中,最后一个非零系数值已经转换成一个游程-等级对。
游程和等级值是通过将其映射到一系列二进制序列而被转换成二进制数字的(二进制化),其中可以为每一个二进制数字都可被赋予值0或1(参见表1)。然后,经过二进制化的游程和等级值指派给上下文,也就是一个为游程和等级定义的单独的上下文集合。根据H.26LTML 8,对一个给定的块类型来说,为等级定义的上下文集合只依赖于指派了等级的二进制序列的编号。更具体地说,根据H.26L TML 8而为等级编码定义了四个上下文。第一个上下文用于第一个二进制序列,第二个上下文是用于第二个二进制序列,第三个上下文用于剩下的表示等级幅度的二进制序列。剩余上下文则用于等级的符号。就游程来说,存在三个上下文,其中第一个上下文用于第一个二进制序列,第二个上下文用于第二二进制序列,第三个上下文则用于剩余的所有二进制序列。由于游程值总是等于或大于零,因此不需要使用一个附加上下文来表示符号信息。
1.1用于等级的上下文模型根据本发明的第一实施例,在将一个二进制化的等级值指派给一个上下文时,除了考虑等级自身映射到的二进制序列之外,还要考虑到先前游程-等级对中的等级值。在这个方面,术语“先前游程-等级对”意味着所述游程-等级对与有序系数值的一维阵列中的先前系数相对应。以下的伪代码给出了一个用于将上下文指派给游程-等级对的等级值的示范性过程,其中考虑到了等级本身映射到的二进制序列以及先前游程-等级对中的等级值If(bin_nr>MAX_BIN_LEVEL);bin_nr=MAX_BIN_LEVEL;endif(prev_level>MAX_LEVEL) (2)prev_level=MAX_LEVEL;endcontext=(bin_nr-1)*MAX_LEVEL+prev_level在表达式(2)中,prev_level是先前游程-等级对的等级值的大小。在每个块的开端,prev_level都会被初始化为零。在双扫描模式中,在每个扫描开端初始化prev_level,即每块两次。参数MAX_BIN_LEVEL提供了一种用于对由等级值映射到的二进制序列编号影响上下文指派的方式加以控制的手段。更具体地说,以一种与依照H.26L TML 8进行的当前上下文指派相似的方式,MAX_BIN_LEVEL有效定义了一个所有大于或等于MAX_BIN_LEVEL的二进制序列编号被指派到的上下文。以一种相似的方式,参数MAX_LEVEL提供了一种对先前游程-等级对中的等级值影响上下文指派的方式加以控制的手段。图7a和图7b描述了根据本发明第一实施例并通过应用表达式(2)的伪代码而将上下文指派给等级值的方法,其中MAX_BIN_LEVEL=3并且MAX_LEVEL=5。原则上可以使用MAX_BIN_LEVEL与MAX_LEVEL的任何组合来定义一组适于所要编码的等级值统计特征的上下文。
1.2用于游程的上下文模型根据本发明的第二实施例,在这里使用了一种与第1.1节所描述的方法相类似的方法来将游程值指派给上下文。更具体地说,在将一个二进制化的游程值指派给一个上下文的时候,除了考虑游程本身映射到的二进制序列之外,还要对游程值归属的游程-等级对的等级加以考虑。下文中的伪代码给出了一个用于将上下文指派给游程-等级对中的游程值的示范性过程,在这个过程中顾及了游程本身映射到的二进制序列以及所述游程值所归属的游程-等级对的等级值If(bin_nr>MAX_BIN_RUN);bin_nr=MAX_BIN_RUN;
endif(level>MAX_RUNL) (3)level=MAX_RUNL;endcontext=(bin_nr-1)*MAX_RUNL+level在表达式(3)中,level是游程-等级对中的等级值的大小。参数MAX_BIN_RUN提供了一个对游程值映射到的二进制序列编号影响上下文指派的方式加以控制的手段。更具体地说,以一种与依照H.26LTML 8进行的当前上下文指派相类似的方式,MAX_BIN_RUN有效定义了一个指派了大于或等于MAX_BIN_RUN的所有二进制序列编号的上下文。以一种相似的方式,参数MAX_RUNL提供了一种对游程-等级对中的等级值影响上下文指派的方式进行控制的手段。图8a和图8b描述了依照本发明第二实施例并通过应用表达式(3)的伪代码而将上下文指派给等级值的方法,其中MAX_BIN_RUN=3并且MAX_RUNL=4。原则上可以使用MAX_BIN_RUN与MAX_RUNL的任何组合来定义一组适于所要编码的游程值统计特征的上下文。
1.3用于非零系数数目的上下文特别地,本发明的第三实施例尤其涉及到将变换系数值的有序阵列转换成游程和等级值的方法,以及用信号通知那些与量化变化系数值的阵列相对应的游程-等级对数目的方法。更具体地说,在对一个图像像素块或是预测误差值进行变换编码,从而形成一个变换系数值的二维阵列并且对每一个系数值进行量化之后,阵列中的非零量化系数值数目将被确定。一个称为Nc的值将被指派给所述数字并被用于明确地用信号通知阵列中非零系数值的数目。因此,依照本发明的这个实施例,在这里不再需要一个诸如与零相等的等级值这样的EOB符号。
经过量化的变换系数进一步根据预定扫描顺序而被扫描,以便产生一个有序的一维阵列。可替换地,也可以在对量化系数值进行排序之后再确定Nc。然后,有序阵列中的每一个非零量化系数都转换成游程-等级对。根据本发明的这个实施例,游程-等级对的等级值表示的是经过量化的系数减1得到的值的大小,游程值则与所论述系数之前的连续零值量化系数的数目相对应。由于不再将与零相等的等级值用作块结束指示符,因此为所述等级值赋予了量化系数减1所得到的值的大小。由此可以节省用于表示等级信息所需要的数据量(例如比特数目)。
然后,与Nc值一样,在这里使用了熵编码来对等级和游程值进行编码。在使用了诸如在H.26L TML 8中实现的CABAC技术之类的基于上下文的算术编码方法的情况下,如上所述,可以根据本发明的第一和/或第二实施例来对游程和等级值进行编码。可替换地,也可以将任何其他适当的上下文模型用于游程和等级值。此外还可以为Nc定义一个单独的上下文模型。根据本发明的这个实施例,首先将表示给定块中非零量化变换系数数目的Nc值映射到一系列的二进制序列来对对其进行二进制化,其中每一个二进制序列都具有一个相应的二进制序列编号。然后则基于Nc所映射到的二进制序列编号以及指派了一个Nc值的至少一个其他图像块或宏块的Nc来确定用于所述Nc的上下文。以下的伪代码给出了用于将一个上下文指派给一个Nc值的示范性过程,在这个过程中考虑到了Nc本身映射到的二进制序列以及先前的Nc值If(bin_nr>MAX_BIN_Nc);bin_nr=MAX_BIN_Nc;endif(prev_nc>MAX_Nc) (4)prev_nc=MAX_Nc;endcontext=(bin_nr-1)*MAX_nc+prev_nc在表达式(4)中,prev_nc即为先前的Nc值。
在从编码器将经过编码的给定量化变换系数块的等级和游程值发送到一个解码器的时候,经过熵编码的Nc值是在对游程和等级值进行编码之前发送的。在解码器上对所述Nc值进行解码,其后则跟随着与所论述块的量化变换系数值相对应的游程-等级对。当对等级值进行解码时,为了补偿在编码器中所作的相应减法,将会把数值+1加到各个等级大小中。
为了展示使用图像编码方法而在编码效率上的改进,根据本发明,平均比特率差值是通过使用关于QP=28、24、20、16的结果来计算的。表2显示了与TML 8相比较的百分比形式的比特率减少,其中MAX_LEVEL=5并且MAX_RUN=4。所有帧都是在CABAC模式中作为I帧来编码的。如表2所示,比特率的减少范围是从0.95到4.74%。当QP值很小的时候,所述改进将会更为显著。
在表2中,出现在表格第一行的名称是在Gisle Bjontegaard的“Recommended Simulation Conditions for H.26L”(VCG-M75,ITU-T Video Coding Experts Group,Austin,Texas,USA,2-4April,2001)中使用的画面。
表2现在参考图9,根据本发明,发送端的编码器10包括一个用于保存先前等级和游程的单元16。如图9所示,用于给定块的游程-等级对102被提供到映射单元12,所述映射单元12将所述对映射到一系列的二进制序列,每一个二进制序列都具有值0或1。在表示游程-等级对的序列中,二进制序列的位置称为二进制序列编号。二进制序列编号由信号104表示。基于信号104和单元16提供的先前编码的等级值108,指派单元14将一个上下文指派给一个二进制序列编号。信号106表示的上下文被提供到一个自适应算术编码器20。而1的出现概率与0的出现概率则是通过一个概率估计单元22来估计的。基于所述概率估计120,算术编码单元24对二进制序列进行编码。反馈信号124则从编码器24提供到概率估计模块22,从而更新概率估计。经过编码的信息转变成一个比特流122。以便传递到一个解码器或者保存在一个存储设备中以供稍后使用。
优选地,编码器10还包括一个能在将游程-等级对提供给算术编码器20之前将块中非零系数数目Nc提供给算术编码器20的单元18,因此还对Nc进行编码并且将其包含在比特流122中。所述Nc则是由信号110来表示的。在使用Nc的情况下,没有必要向解码器发送一个块结束(EOB)符号。在现有技术中,大小为0的等级值将被用于EOB符号。更具体地说,Nc是在变换和量化之后才被发现的并且是使用熵编码来对其进行编码的。需要指出的是,在非零系数数目已知的情况下,不再有必要使用0等级值来用信号通知块结束。因此,通过将量化系数值减1,可以对等级值进行修改。
如图10所示,在接收端使用解码器50来接收编码器10提供的比特流122。接收到的比特流表示的是经过算术编码的数据符号,它是由参考数字202来表示的。一开始,根据先前解码的符号,在上下文指派单元66中计算一个上下文,并且在概率估计单元62中更新二进制序列值的概率估计。更新概率估计所依据的先前解码符号由参考数字205示。上下文指派块66中执行的上下文指派以及概率估计块62执行的概率估计计算与编码器10中执行的相类似。然后,接收到的比特202被馈送到算术编码器60的算术解码引擎64,在那里使用计算得到的上下文以及二进制序列值204的当前概率估计来将其转换成经过解码的二进制序列值206。在块68中,经过解码的二进制序列208被映射到游程和等级值。如果在编码器10中对块中非零系数数目Nc进行编码并且在接收到的比特流202中提供了所述数目,则将信号214提供给二进制序列-数值映射模块68,由此通过将等级值加1来恢复经过量化的系数。
图11是描述根据本发明优选实施例的图像编码方法的流程图。如图所示,方法500始于编码器接收一个图像的步骤510。在步骤520,将接收到的图像分成多个块。在步骤530对每一个块进行扫描,并且在步骤540获取块中经过量化的系数的等级和游程。与现有技术的编码方案相比,在步骤550,本发明还在上下文的指派过程中使用了先前等级。特别地,如第1.1节所述,将上下文指派到代表量化系数等级值的二进制序列的处理对先前编码的等级值加以考虑。同样,如1.2节所述,将上下文指派到代表量化系数游程值的二进制序列的处理也考虑到了等级值。已指派的上下文传送到一个算术编码器,以便在步骤560中进行编码。另外,如第1.3节所述,Nc或非零量化系数的数目是在步骤530中扫描了所述块的过程之中或是之后才得到确定的,并且在将Nc与上下文提供到一个解码器之前在步骤560中对Nc进行编码。
可替换地,如图11所示,在指派上下文时并未考虑到先前编码的等级或游程,在这种情况下,通过将指示Nc的信号传递到接收端,可以改进所述图像编码方法。如图12所示,Nc是在步骤542中获取和提供的,而不是为了在步骤550中指派上下文而在步骤540中获取先前编码的等级和游程。为了在步骤560中执行编码,Nc是在步骤550中指派上下文之前发送到算术编码器的。借助于发送Nc,在这里不再有必要将EOB符号发送到解码器。
尽管在这里针对本发明的优选实施例而对其进行了描述,但是本领域技术人员将会理解,在不脱离本发明范围的情况下,可以对其进行形式和细节方面的前述和多种其他改变、省略和背离。
权利要求
1.一种图像编码方法,其中,图像被分成多个具有多个像素的块,每一个像素都具有一个像素值,并且对像素块执行变换编码操作以便产生相应的变换系数值块,所述方法的特征在于提供指示变换系数值块中的非零系数值的数目的数字;以及将所述数字指派给一个表示所述数字的上下文。
2.根据权利要求1的方法,其特征在于在考虑到另一个数字所指派到的上下文的情况下,将指示所述变换系数值块中的非零系数值数目的数字指派给一个上下文,其中所述另一个数字指示另一个变换系数块中非零系数值的数目。
3.根据权利要求1的方法,其特征在于以一种给定的扫描顺序扫描所述变换系数值块,以便产生一个扫描的系数值阵列,以及通过多个具有第一数字和第二数字的数字对来表示扫描的阵列中的系数值。
4.根据权利要求3的方法,其特征在于所述第一数字指示非零系数值;以及所述第二数字指示所述非零系数值之前的连续零系数值的数目。
5.根据权利要求3或4的方法,其特征在于第一数字与非零系数值减1的大小相等。
6.一种编码器,包括用于将图像分成多个具有多个像素的块的装置,其中每一个像素都具有一个像素值,并且还包括用于对像素块执行变换编码操作以便产生相应的变换系数值块的装置,其特征在于,所述编码器包括用于提供一个指示变换系数值块中的非零系数值数目的数字的装置;以及用于将所述数字指派给一个表示所述数字的上下文的装置。
7.根据权利要求6的编码器,其特征在于所述用于把指示所述变换系数值块中的非零变换系数值数目的数字指派给一个上下文的装置被安排为对另一个这样的数字所指派到的上下文加以考虑,其中所述另一个这样的数字指示另一个变换系数块中的非零变换系数值数目。
8.根据权利要求6或7的编码器,其特征在于它还包括用于以给定扫描顺序扫描变换系数值块以便产生一个扫描的系数值阵列的装置,以及用于借助多个具有第一数字和第二数字的数字对来表示扫描的阵列中的系数值的装置。
9.根据权利要求8的方法,其特征在于所述第一数字指示非零系数值;以及所述第二数字指示所述非零系数值之前的连续零系数值的数目。
10.一种基于上下文的算术编码方法,其中数据符号阵列是用码字来表示的,其特征在于提供一个指示所述阵列中非零数据符号数目的数字,以及将所述数字指派给一个表示所述数字的上下文。
11.一种基于上下文的算术编码器,包括使用码字来表示数据符号阵列的装置,其特征在于所述编码器包括用于提供一个指示所述阵列中非零数据符号数目的数字的装置,以及用于将所述数字指派给一个表示该数字的上下文的装置。
全文摘要
一种图像编码方法,其中图像被分成了具有多个像素的块。对像素块执行变换编码操作以便产生相应的变换系数值块,其中对所述变换系数值块进行扫描,以便产生一个经过扫描的系数值阵列,所述阵列由具有第一和第二数字的多个数字对表示。第一和第二数字指派到了表示所述数字对的多个上下文(14)之一。在这里,根据一个数字对的第一数字而将另一个数字对的第一数字指派给一个上下文。可替换地,一个数字对中的第二数字是基于数字对(16)中的第一数字而被指派给一个上下文的。此外还确定了一个指示变换系数值块中非零系数值数目的数字,并且将其指派给一个上下文。
文档编号G06T9/00GK1874509SQ200610088710
公开日2006年12月6日 申请日期2002年9月12日 优先权日2001年9月14日
发明者M·卡策维茨, R·库尔切伦 申请人:诺基亚有限公司