在图像/视频编码器和/或解码器中将变换系数编码的制作方法

文档序号:7854809阅读:266来源:国知局
专利名称:在图像/视频编码器和/或解码器中将变换系数编码的制作方法
技术领域
本发明涉及用于数字视频编码的方法、编码器、解码器和装置。更具体地说,本发明涉及使用变长编码(VLC),对在视频/图像编码器/解码器中由块变换编码产生的量化变换系数编码。
背景技术
诸如在胶片上录制的普通动画等数字视频序列包括一序列静态图像,运动错觉是通过以相对快的速率,一般为每秒15到30帧的速率,连续显示图像而产生的。由于显示速率相对较快,因此,连续帧中的图像往往很相似,因此包含了大量冗余信息。例如,一个典型的场面可包括一些静止元素如背景景物和一些移动区域,这些区域可能有许多不同形式,例如,新闻播报员的面孔、移动的车流等等。或者,例如,录制场景的摄像机本身可能移动,在这种情况下,图像的所有元素具有同类的运动。在许多情况下,这表示一个视频帧与下一视频帧之间的整体变化相当小。
未压缩数字视频序列的每个帧包括图像像素阵列。例如,在通称为四分之一公共交换格式(QCIF)的数字视频格式中,一个帧包括176×144个像素的阵列,在这种情况下,每个帧具有25344个像素。每个像素又由一定数量的比特表示,这些比特携带与像素对应的图像区域的亮度和/或色度有关的信息。通常,所谓的YUV彩色模型用于表示图像的亮度和色度内容。亮度即Y分量表示图像的强度(亮度),而图像的颜色内容由标记为U和V的两种色度或色差分量表示。
与基于与表示有关的基色(即红、绿和蓝RGB)的彩色模型相比,基于图像内容亮度/色度表示的彩色模型具有某些优点。人的视觉系统对强度变化比对颜色变化更敏感,因此,YUV彩色模型利用了此属性,对色度分量(U、V)使用了比对亮度分量(Y)更低的空间分辨率。这样,可以减少将图像中颜色信息编码所需的信息量,同时具有可接受的图像质量下降。
色度分量的更低空间分辨率通常通过二次抽样实现。一般情况下,视频序列的每个帧划分成所谓的“宏块”,它包括空间上二次抽样的亮度(Y)信息和相关联的色度(U、V)信息。图3显示了可以形成宏块的一种方式。图3a显示了使用YUV彩色模型表示的视频序列的一个帧,每个分量具有相同的空间分辨率。宏块是通过将原始图像(图3b)中的16×16个图像像素区域表示为4个亮度信息块而形成的,每个亮度块包括亮度(Y)值和两个空间对应的色度分量(U和V)的8×8阵列,两个色度值在x和y方向上根据因数2进行二次抽样,以产生对应的8×8色度(U、V)值阵列(参见图3c)。根据某些视频编码建议,如国际电信联盟(ITU-T)建议H.26L,在宏块内使用的数据块大小可以不同于8×8,例如,可以是4×8或4×4(参阅Joint Model(JM)2.0工作草案编号2[Joint Model(JM)2.0Working Draft Number 2,Doc.JVT-B118,Joint Video Team(JVT) ofISO/IEC MPEG and ITU-T VCEG Pattaya,2ndJVT Meeting,Geneva,CH,Jan.29-Feb.1,2002,Section 3.2])。
QCIF图像包括11×9个宏块。如果亮度块和色度块用8比特分辨率(即,由0到255之间的数字)表示,则每个宏块所需的总比特数为(16×16×8)+2×(8×8×8)=3072比特。因此,表示QCIF格式的一个视频帧所需的比特数量为99×3072=304128个比特。这意味着要以每秒30帧的速率发送/录制/显示以YUV彩色模型表示的QCIF格式的未压缩视频序列,则所需数据量超过9Mbps(每秒百万比特)。这是极高的数据率,由于需要非常大的存储容量、传输信道容量和极佳的硬件性能而实际上不适用于视频录制、传输和显示应用。
如果要通过诸如ISDN(综合业务数字网络)或常规PSTN(公共交换电话网)等固定线路网络实时传送视频数据,则可用的数据传输带宽一般约为每秒64千比特。在移动视频电话中,至少部分传输要通过无线电通信链路进行,可用的带宽可能低到每秒20千比特。这意味着必须使得表示视频数据所需的信息量大量减少才可以通过低带宽通信网络传输数字视频序列。为此,开发了视频压缩技术以减少发送的信息量,同时保持可接受的图像质量。
视频压缩方法基于减少视频序列的冗余的且感觉上不相关的部分。视频序列的冗余可分为空间、时间和频谱冗余。“空间冗余”是用于描述帧内相邻像素之间相关性(相似度)的术语。术语“时间冗余”表示在序列的一个帧中出现的对象可能在随后的帧中出现的事实;而“频谱冗余”指同一图像不同颜色分量之间的相关性。
简通过单地降低给定图像序列中不同形式的冗余,通常无法实现充分有效的压缩。因此,大多数当前的视频编码器还降低了主观上最不重要的那些视频序列部分的质量。另外,通过有效的无损编码,降低了压缩视频经特流本身的冗余。通常,这通过使用称为熵编码的技术实现。
在组成每个数字视频序列帧的像素之间,经常有大量空间冗余。换言之,序列的帧内任何像素的值与其紧密相邻的其它像素的值大致是相同的。一般情况下,视频编码系统使用称为“块变换编码”技术降低空间冗余,在该技术中,将诸如二维离散余弦变换(DCT)的数学变换应用于图像像素块上。这将图像数据从包括像素值的表示变换为包括一组表示空间频率分量的系数值的形式,极大地降低了空间冗余,由此产生了更简洁的图像数据表示。
使用块变换编码压缩,而未引用序列内其它任何帧的视频序列帧称为INTRA编码帧或I帧。此外,并且在可能时,从同一帧内的先前的编码块预测INTRA编码帧块。这种称为INTRA预测的技术可进一步降低表示INTRA编码帧所需的数据量。
通常,视频编码系统不仅降低了视频序列各个帧内的空间冗余,而且利用称为“运动补偿预测”的技术来降低序列中的时间冗余。通过使用运动补偿预测,数字视频序列中一些(经常是许多)帧的图像内容是从序列中称为“参考”帧的一个或多个其它帧“预测”的。通过使用“运动矢量”在要编码(压缩)的帧与参考帧之间跟踪图像对象或区域的运动,可实现对图像内容的预测。通常,参考帧可在视频序列中要编码的帧之前,或者可在它之后。与在INTRA编码中的情况一样,视频帧的运动补偿预测一般是逐宏块执行的。
使用运动补偿预测压缩的视频序列帧通常称为INTER编码帧或P帧。单独的运动补偿预测很少提供足够精确的视频帧图像内容表示,因此,通常有必要为每个INTER编码帧提供称为“预测误差”(PE)帧。预测误差帧表示INTER编码帧的解码版本与要编码的帧图像内容之间的差异。更具体地说,预测误差帧包括表示要编码的帧中像素值与基于所述帧的预测版本形成的对应重建像素值之间的差异的值。因此,预测误差帧具有类似于静态图像的特性,并且可以应用块变换编码以降低其空间冗余,并因此降低表示它所需的数据量(比特数量)。
为更详细地说明视频编码系统的操作,现在参照

图1和图2。图1是通用视频编码器的示意图,它采用INTRA和INTER编码组合以产生压缩(编码)的视频比特流。稍后将描述图2显示的对应解码器。
视频编码器100包括用于从摄像机或其它视频源(未显示)接收数字视频信号的输入101。它还包括用于执行基于块的离散余弦变换(DCT)的变换单元104、量化器106、逆量化器108、用于执行基于块的逆向离散余弦变换的逆变换单元110、合并器112和116及帧存储器120。编码器还包括运动估计器130、运动场编码器(coder)140和运动补偿预测器150。开关102和114由控制管理器160操作共同用于使编码器在视频编码的INTRA模式与视频编码的INTER模式之间切换。编码器100还包括视频复用编码器170,该编码器根据编码器100产生的不同类型信息形成一个比特流,以便进一步传输到远程接收端,或者例如,以便存储在诸如计算机硬盘驱动器(未显示)等海量存储介质上。
编码器100的操作如下。接收从视频源提供给输入101的每个未压缩视频帧并逐宏块进行处理,最好是以光栅扫描顺序处理。在新的视频序列编码开始时,将要编码的第一个帧编码为INTRA编码帧。随后,除非满足以下条件之一,否则编码器设计为以INTER编码格式将每个帧编码1)断定正在被编码的帧的当前宏块与在其预测中使用的参考帧中的像素值如此不同,以致产生过量的预测误差信息,在这种情况下,当前宏块以INTRA编码格式编码;2)预定的INTRA帧重复间隔已满期;或者3)从接收终端收到表示以INTRA编码格式提供帧的请求的反馈。
通过监视合并器116的输出可检测条件1)的出现。合并器116形成在编码的帧的当前宏块与其在运动补偿预测功能块150中产生的预测之间的差异。如果此差异的测量值(例如,像素值的绝对差之和)超过预定阈值,则合并器116经控制线119通知控制管理器160,并且控制管理器160经控制线113操作开关102和114,以便将编码器100切换到INTRA编码模式。这样,本来要以INTER编码格式编码的帧可包括INTRA编码宏块。条件2)的出现通过实现于控制管理器160中的计时器或帧计数器来监视,使得如果计时器到期,或者帧计数器达到预定数量的帧,则控制管理器160经控制线113操作开关102和114,将编码器100切换到INTRA编码模式。如果控制管理器160例如经控制线121从接收终端收到指示接收终端需要INTRA帧刷新的反馈信号,就触发条件3)。例如,如果先前发送的帧因其传输期间的干扰而被严重损坏,使得无法在接收机上将其解码,则此类条件可发生。在这种情况下,接收解码器发出请求,请求以INTRA编码格式对下一帧编码,从而重新初始化编码序列。
现在将描述INTRA编码模式下编码器100的操作。在INTRA编码模式,控制管理器160操作开关102以接受来自输入线108的视频输入。通过输入线118从输入101逐宏块接收视频信号输入。在接收它们时,组成宏块的亮度和色度值块传递到DCT变换块104,DCT变换块104对每个值块执行二维离散余弦变换,每个数据块产生一个二维DCT系数阵列。DCT变换块104为每个数据块产生系数值阵列,系数值的数量取决于组成宏块的块的性质。例如,如果在宏块中使用的基本块大小为4×4,则DCT变换块104为每个数据块产生4×4的DCT系数阵列。如果数据块大小为8×8,则产生8×8的DCT系数阵列。
每个块的DCT系数传递到量化器108,在该量化器中使用量化参数QP对它们进行量化。量化参数QP的选择由控制管理器160经控制线115控制。由于量化的系数比DCT变换块104原来生成的系数具有更低的数值精度,因此,量化引入了信息损伤。这提供了又一种机制,通过该机制可减少表示视频序列的每个图像所需的数据量。然而,不同于基本上无损的DCT变换,量化引起的信息损伤使图像质量不可逆地降低。对DCT系数施加的量化度越大,则图像质量损伤越大。
如图1线125所示,每个块的量化DCT系数从量化器106传递到视频复用编码器170。视频复用编码器170使用之字形扫描过程将每个块的量化变换系数排序。此操作将量化变换系数的二维阵列变换成一维阵列。诸如用于图4所示4×4阵列的典型的之字形扫描顺序近似按空间频率的升序将系数排序。这往往还根据系数的值将系数排序,使得位于一维阵列更前面的系数更可能比位于该阵列后面的系数具有更大的绝对值。这是因为较低的空间频率往往在图像块内具有更高的幅度。因此,量化变换系数一维阵列中最后的值通常为零。
一般情况下,视频复用编码器170用两个值表示一维阵列中的每个非零量化系数,称为level(级别)和run(游程)。Level是量化系数的值,run是在所述系数前连续零值系数的数量。将给定系数的run和level值排序,使得level值在相关联的run值前面。等于零的level值用于指示数据块中不再有其它非零系数值。此0级别值称为EOB(块结束)符号。
或者,一维阵列中每个非零值量化系数可由三个值(run、level、last)表示。Level和run的意义与前一方案相同,而last指示在一维阵列中当前系数后是否有其它任何非零值系数。因此,无需单独的EOB符号。
使用熵编码对Run和level值(及适用情况下的last)作进一步的压缩。熵编码是无损运算,它利用了要编码的数据集内的符号一般具有不同的出现概率的事实。因此,可不使用固定数量的比特表示每个符号,而是分配可变数量的比特,以便用具有更少比特的码字表示更可能出现的符号。为此,熵编码经常称为变长编码(VLC)。由于level和run的某些值比其它值更可能出现,因此,熵编码技术可有效地用于减少表示run和level值所需的比特数量。
一旦run和level值已经过熵编码,视频复用编码器170就将其与控制信息组合在一起,以形成编码图像信息135的单个压缩比特流,其中所述控制信息也采用适合所述信息种类的变长编码方法进行了熵编码。从编码器发送的正是此比特流,它包括了表示(run、levl)对的变长码字。
虽然结合视频复用编码器170执行的操作对熵编码进行了描述,但应注意的是,在替代实施中可提供单独的熵编码单元。
编码器100中还形成了本地解码的宏块版本。这是通过使量化器106输出的每个块的量化变换系数通过逆量化器108,并在逆变换块110中施加逆DCT变换而实现的。这样,构造了对应宏块的每个块的重建的像素值阵列。所得的解码图像数据输入合并器112。在INTRA编码模式下,设置开关114以使经开关114到合并器112的输入为零。这样,合并器112执行的操作等同于不加变化地传递解码图像数据。
随着当前帧的后续宏块被接收,并在块104、106、108、110和112中经历如前所述的编码和本地解码步骤,于是在帧存储器120中建立了INTRA编码帧的解码版本。在当前帧的最后一个宏块已经过INTRA编码,随后又经解码后,帧存储器120包含了完整的解码帧,该帧可以在将随后接收的视频帧以INTER编码格式编码的过程中用作预测参考帧。
现在将描述INTER编码模式下编码器100的操作。在INTER编码模式,控制管理器160操作开关102以从线路117接收其输入,它包括合并器116的输出。合并器116逐宏块从输入101接收视频输入信号。合并器116收到组成宏块的亮度和色度值块时,就形成对应的预测误差信息块。预测误差信息表示所述块及在运动补偿预测功能块150中产生的其预测之间的差异。更具体地说,宏块的每个块的预测误差信息包括值的二维阵列,每个值表示在编码的亮度或色度信息块中的像素值与根据下述过程通过形成数据块的运动补偿预测所获得的解码像素值之间的差异。因此,在每个宏块包括例如4×4块集合(包括亮度和色度值)的情况下,宏块的每个块的预测误差信息同样包括4×4的预测误差值阵列。
宏块的每个块的预测误差信息传递到DCT变换块104,DCT变换块104对每个预测误差值块执行二维离散余弦变换,为每个块产生DCT变换系数的二维阵列。DCT变换块104为每个预测误差块产生系数值阵列,系数值的数量取决于组成宏块的数据块的性质。例如,如果在宏块中使用的基本数据块大小为4×4,则DCT变换块104为每个预测误差块生成的4×4DCT系数阵列。如果数据块大小为8×8,则产生8×8的DCT系数阵列。
每个预测误差块的变换系数传递到量化器106,在该量化器中,使用量化参数QP,以类似于以上结合INTRA编码模式下的编码器操作所述的方式,对它们进行量化。同样地,量化参数QP的选择由控制管理器160经控制线115控制。
如图1中线路125所示,表示宏块的每个块的预测误差信息的量化DCT系数从量化器106传递到视频复用编码器170。与在INTRA编码模式下一样,视频复用编码器170使用上述之字形扫描过程(参见图4)将每个预测误差块的变换系数排序,随后将每个非零量化系数表示为level和run值。它还以类似于以上结合INTRA编码模式所述的方式,采用熵编码对run和level值进行压缩。视频复用编码器170还经线路126从运动场编码块140接收运动矢量信息(在下面描述)并从控制管理器160接收控制信息。它对运动矢量信息和控制信息进行熵编码,形成编码图像信息的单个比特流135,其中包括经熵编码的运动矢量、预测误差和控制信息。
表示宏块的每个块的预测误差信息的量化DCT系数还从量化器106传递到逆量化器108。在该处,它们被逆量化,所得的逆量化DCT系数块应用到逆DCT变换块110上,在逆DCT变换块110中,它们经受逆DCT变换以产生本地解码的预测误差值块。本地解码的预测误差值块随后输入合并器112。在INTER编码模式下,设置开关114,以便合并器112还为宏块的每个块接收由运动补偿预测功能块150生成的预测像素值。合并器112将每个本地解码的预测误差值块与对应的预测像素值块合并,以得到重建的图像块,并将它们存储在帧存储器120中。
在功能块104、106、108、110和112中,从视频源接收视频信号的后续宏块并对其执行上述的编码和本地解码步骤时,于是在帧存储器120中建立了帧的解码版本。在已对帧的最后一个宏块作了处理之后,帧存储器120包含完全解码的帧,该帧可以在以INTER编码格式对后续收到的视频帧进行编码的过程中用作预测参考帧。
现在将描述当前帧的宏块的预测的形成。以INTER编码格式编码的任意帧需要参考帧以进行运动补偿预测。这必然意味着在对进视频序列行编码时,要编码的第一帧无论是序列中的第一帧还是某个其它帧,必须以INTRA编码格式对其进行编码。这又意味着在视频编码器100由控制管理器160切换到INTER编码模式时,通过在本地对先前编码的帧进行解码而形成的完整参考帧已经在编码器的帧存储器120中可用。通常,参考帧是通过在本地将INTRA编码帧或INTER编码帧解码而形成的。
形成当前帧宏块的预测的第一个步骤由运动估计功能块130执行。运动估计功能块130经线路128接收亮度和色度值块,这些数据块组成了要编码的帧的当前宏块。它随后执行数据块匹配操作以便识别参考帧中大致与当前宏块对应的区域。为执行数据块匹配操作,运动估计功能块经线路127访问存储在帧存储器120中的参考帧数据。更具体地说,运动估计功能块130通过计算表示被检查的宏块与帧存储器120中存储的参考帧的像素的候选最佳匹配区域之间像素值差异的差值(例如,绝对差值之和),执行数据块匹配。对于在参考帧的预定义搜索区域内所有可能偏移上的候选区域,产生相应的差值,并由运动估计功能块130确定最小的计算差值。当前帧中宏块与产生最小差值的参考帧中候选像素值块之间的偏差定义了所述宏块的运动矢量。
一旦运动估计功能块130已产生了宏块的运动矢量,则它将运动矢量输出到运动场编码功能块140。运动场编码功能块140使用包括一组基本函数和运动系数的运动模型,逼近从运动估计功能块130接收的运动矢量。更具体地说,运动场编码功能块140将运动矢量表示为运动系数值集,这些系数值与基本函数相乘时形成运动矢量的近似值。通常,采用只具有两个运动系数和基本函数的平移运动模型(translational motion model),但也可以使用更复杂的运动模型。
运动系数从运动场编码功能块140传递到运动补偿预测功能块150。运动补偿预测功能块150还从帧存储器120接收由运动估计功能块130识别的最佳匹配候选像素值区域。利用由运动场编码功能块140生成的运动矢量的近似表示和参考帧的最佳匹配候选区域的像素值,运动补偿预测功能块150为宏块的每个块生成预测像素值阵列。每个预测像素值阵列传递到合并器116,在合并器中,从当前宏块的对应块中的实际(输入)像素值中减去预测像素值。这样,获得宏块的测误差块集。
现在将描述图2所示的视频解码器200的操作。解码器200包括视频复用解码器270、逆量化器210、逆DCT变换器220、运动补偿预测功能块240、帧存储器250、合并器230、控制管理器260及输出280,其中视频复用解码器270从编码器100接收编码的视频比特流135,并将其去复用成各组成部分。
控制管理器260响应于是否在对INTRA或INTER编码帧解码而对解码器200的操作进行控制。使解码器在解码模式之间切换的INTRA/INTER触发控制信号例如可从与从编码器接收的每个压缩视频帧相关联的图像类型信息中获得。INTRA/INTER触发控制信号由视频复用解码器270从编码的视频比特流中提取,并经控制线215传递到控制管理器260。
对INTRA编码帧的解码是基于宏块来执行的,每个宏块实际上是在视频比特流135中一收到与其相关的编码信息后就被解码。视频复用解码器270将宏块的块的编码信息与可能的涉及所述宏块的控制信息分开。INTRA编码宏块的每个块的编码信息包括变长码字,该变长码字表示该块的非零量化DCT系数的熵编码level和run值。视频复用解码器270使用与编码器100中所用编码方法对应的变长解码方法将变长码字解码,从而恢复level和run值。随后,它重建宏块的每个块的量化变换系数值阵列,并将它们传递到逆量化器210。与宏块相关的任何控制信息也在视频复用解码器中采用适当的解码方法解码,并传递到控制管理器260。具体地说,与应用到变换系数的量化级相关的信息由视频复用解码器270从编码比特流中提取,并经控制线217提供给控制管理器260。该控制管理器又将此信息经控制线218传送到逆量化器210。逆量化器210根据控制信息将宏块的每个块的量化DCT系数逆量化,并将现在的逆量化DCT系数提供给逆DCT变换器220。
逆DCT变换器220对宏块的每个块的逆量化DCT系数执行逆DCT变换,以形成包括重建像素值的图像信息的解码数据块,宏块的每个块的重建像素值经合并器230传递到解码器的视频输出280,例如,它们可从该处提供给显示装置(未显示)。宏块的每个块的重建像素值还存储在帧存储器250中。由于在对INTRA编码宏块的编码/解码中未使用运动补偿预测,因此,控制管理器260控制合并器230将这样的每个像素值块传递到视频输出280和帧存储器250。随着后续INTRA编码帧宏块被解码和存储,解码帧逐渐汇集在帧存储器250中,并因而可用作参考帧,以便在对后续接收的INTER编码帧解码时用于运动补偿预测。
INTER编码帧也按宏块进行解码,每个INTER编码宏块实际上是在视频比特流135中一收到与其相关的编码信息就被解码。视频复用解码器270将INTER编码宏块的每个块的编码预测误差信息与编码运动矢量信息和与所述宏块相关的可能控制信息分开。如上所述,宏块的每个块的编码预测误差信息包括变长码字,该变长码字表示所述预测误差块的非零量化变换系数的熵编码的level和run值。视频复用解码器270使用与编码器100中所用编码方法对应的变长解码方法将变长码字解码,由此恢复level和run值。随后,它重建每个预测误差块的量化变换系数值阵列,并将它们传递到逆量化器210。与INTER编码宏块相关的控制信息也在视频复用解码器270中采用适当的解码方法解码,并传递到控制管理器260。与应用到预测误差块变换系数的量化级相关的信息从编码比特流中提取,并经控制线217提供给控制管理器260。该控制管理器又将此信息经控制线218传送到逆量化器210。逆量化器210根据控制信息将表示宏块的每个块的预测误差信息的量化DCT系数逆量化,并将现在的逆量化DCT系数提供给逆DCT变换器220。随后在逆DCT变换器220中将表示每个数据块的预测误差信息的逆量化DCT系数逆变换,以产得到宏块的每个块的重建预测误差值阵列。
与宏块相关联的编码运动矢量信息由视频复用解码器270从编码视频比特流135中提取。由此获得的解码运动矢量信息经控制线225传递到运动补偿预测功能块240,运动补偿预测功能块240使用与编码器100中用于将INTER编码宏块编码的运动模型相同的运动模型,重建宏块的运动矢量。重建的运动矢量接近编码器的运动估计功能块130原来确定的运动矢量。解码器的运动补偿预测功能块240使用重建的运动矢量识别帧存储器250中存储的预测参考帧中重建像素区域的位置。参考帧例如可以是先前解码的INTRA编码帧,或者先前解码的INTER编码帧。在任何一种情况下,将重建运动矢量指示的像素区域用于形成所述宏块的预测。更具体地说,运动补偿预测功能块240通过从在参考帧中识别的像素区域复制对应的像素值,形成宏块的每个块的像素值阵列。预测,即从参考帧导出的像素值块,从运动补偿预测功能块240传递到合并器230,在合并器230中,将其与解码的预测误差信息组合在一起。实际上,将每个预测块的像素值添加到由逆DCT变换器220输出的对应重建预测误差值中。这样,获得了宏块的每个块的重建像素值阵列。重建像素值传递到解码器的视频输出280,并且还存储在帧存储器250中。
随着后续INTER编码帧宏块被解码和存储,解码帧逐渐汇集在帧存储器250中,并因而可用其它INTER编码帧的运动补偿预测的参考帧。
现在将更详细地分析使用变长编码(VLC)技术,对与量化变换系数相关联的run和level值进行熵编码。
一般情况下,将run-level对作为单个符号编码。这通过在每个可能的run-level对与定义的码号(code number)之间定义映射关系来实现。表3中显示了一个run-level对到码号的查找表形式的映射示例。使用查找表中的映射,为每个块的对(run,level)指定一个码号,并通过VLC编码技术对所得的码号进行编码。例如,在Joint Model(JM)2.0工作草案编号2(Joint Model(JM)2.0 Working Draft Number2,Doc.JVT-B118,Joint Video Team(JVT)of ISO/IEC MPEG and ITU-TVCEG Pattaya,2ndJVT Meeting,Geneva,CH,Jan.29-Feb.1,2002)(H.26L视频编码标准)中,定义了将(run,level)对映射到码号上的两个不同查找表。选择使用哪个查找表基于数据块的QP值和编码模式。更具体地说,如果编码模式是INTRA且QP小于24,则使用不同的表。
JVT H.26L的Joint Model JM 2.0利用了称为UVLC的所谓的“通用”变长编码方案。因此,根据H.26L JM 2.0实现的视频编码器使用单个变长码字集对要在比特流中从编码器发送的所有信息(语法元素)进行熵编码。虽然使用相同的码字,但为不同类型信息的编码定义了预定数量的数据符号到码字的不同的映射。例如,为包含亮度信息的块提供了两个数据符号到码字的映射,而映射的选择取决于用于将量化DCT变换系数排序的之字形扫描操作的类型(单扫描或双重扫描)。有关根据H.26L定义的单扫描和双重扫描之字形扫描方案,请参阅工作草案编号2(Working Draft Number 2,Doc.JVT-B118,Joint Video Team(JVT)of ISO/IEC MPEG and ITU-T VCEGPattaya,2ndJVT Meeting,Geneva,CH,Jan.29-Feb.1,2002)。除其它映射之外,还为宏块类型(MB_Type)信息、运动矢量数据(MVD)和INTRA预测模式信息提供不同的映射(参见下表3)。
H.26L JM 2.0中定义的UVLC码字可以下面表1所示的如下压缩形式编写,其中,xn项可取0或1值。
10 1 x00 0 1 x1x00 0 0 1 x2x1x00 0 0 0 1 x3x2x1x0..................................
表1根据H.26L JM 2.0生成UVLC码字的方案表2显示了根据表1所示方案生成的前16个UVLC码字,而表3显示了根据H.26L提供的一些不同数据符号到码字映射。要了解完整的映射说明,读者应再次参阅工作草案编号2(Working DraftNumber 2,Doc.JVT-B118,Joint Video Team(JVT)of ISO/IEC MPEGand ITU-T VCEG Pattaya,2ndJVT Meeting,Geneva,CH,Jan.29-Feb.1,2002,Section 3.2)。
表2根据表1所示方案生成的前16个H.26L JM 2.0 UVLC码字
表格3H.26L TML-5中定义的示例数据符号到UVLC码字映射H.26L中采用的通用变长编码方案具有多种技术优点。具体地说,使用可根据诸如表1所示的简单规则构造的单个VLC码字集允许逐比特创建码字。这消除了在编码器和解码器中存储码字表的需要,因而降低了对编码器和解码器的存储器要求。当然,应注意,在替代实施中,可在编码器和解码器中生成并存储码字表。不同的数据符号到码字映射至少允许对UVLC编码方案进行有限的调整,以适应经过熵编码的各种类型的图像相关数据和控制信息的不同统计属性。不同数据符号到码字映射可存储在编码器和解码器中,因而无需在比特流中从编码器向解码器发送映射信息。这有助于保持抗差错能力。
然而,UVLC熵编码方案也有一些缺陷。具体地说,不同数据符号到码字映射提供的固定码字和有限的适应性不可避免地得到并非最佳的数据压缩效果。这归因于如下事实在图像编码中,不同变换系数的出现频率(即概率)及相应的不同(run,level)对的概率会根据在编码的图像内容和图像类型改变。因此,如果使用单个变长码字集,并且在要编码/解码的数据符号与VLC之间只提供了单个映射,则通常无法取得最佳的编码效能。
为此,已建议对基本UVLC编码方案加以改进。更具体地说,建议包括不止一个VLC码字集。Gisle Bjontegaard在Q.15/SG16“在用于INTRA Luma系数的两个VLC之间使用自适应切换”(Use ofAdaptive Switching Between Two VLC for INTRA Luma Coefficients,Doc.Q15-K-30,August 2000)中提出了这样的一个提议。此提议建议对某些类型的信息熵编码使用第二VLC码字集。根据文档Q15-K-30,所提议的第二个VLC码字集称为VLC2,它是根据下面表4中所示的方案构造的。具体地说,它用于对run和level值进行编码,这些值与使用根据H.26L定义的双重之字形扫描方案扫描的4×4像素INTRA编码亮度块的量化变换系数相关联。表5以明确的形式显示了该VLC2的前16个码字。
1 01 1 01 1 10 1 x1x00 0 1 x2x1x00 0 0 1 x3x2x1x0...............................
表4根据Q.15/SG 16文档Q15-K-30生成VLC2码字的方案
表5根据表4所示方案生成的Q.15/SG 16文档Q15-K-30前16个VLC2码字通过将表4、表5分别与表1、表2比较可以看出,VLC2的最短码字有两个比特,而为原来的UVLC码字集中的最短码字分配的为单比特。由于通用的可解码性要求任何VLC码字不可以是其它任何码字的前缀,因此,这种变更对其它VLC2码字的结构有重要的影响。具体地说,为最短码字分配两个比特使得可以用更少的比特来表示具有具有更高索引值的码字。例如,参照表2,可以看到索引7对应的UVLC码字有7个比特,而索引7对应的VLC2码字只有6个比特。
同样也可观察到,一个块内非零系数数量与同一块中可能的(run,level)对之间有很强的相关性。应注意,数据块中非零系数的数量受变换块大小的限制,例如,对于4×4变换,该数量上限为16。同样地,run的值受变换块大小的限制,例如,对于4×4变换,该值上限为15。非零系数的数量很大,如接近阵列的总大小时,可观察到具有小run值和高level值的(run,level)对具有较高的概率。例如,对于具有15个非零系数的4×4变换,run只可以在范围
内取值。
基于这些观察,Karczewicz所提的提议“高比特率的VLC系数编码”(“VLC Coefficients Coding for High Bit-Rate”,Doc.JVT-B072,2ndJVT Meeting,Geneva,CH,Jan.29-Feb.1,2002)中建议了一种变长编码方法,在该方法中,提供了单独的查找表,以对应于不同数量的非零值量化变换系数。根据此提议,码字及(run,level)对与每个表的码字之间的映射设计为在应用到从具有指定数量的非零值系数的量化变换系数值阵列导出的(run,level)对集时,提供最佳的数据压缩。有关(run,level)对统计属性相对于非零值量化变换系数数量的变化的信息是以经验方式获得的,例如,通过预先对若干测试(“训练”)图像或视频序列进行编码而获得。随后可设计VLC码字及码字之间的映射并作为编码器中的一个或多个查找表存储。
Karczewicz建议的算法细节如下在图像像素块或预测误差值数据块已进行变换编码以形成二维变换系数值阵列,且每个系数值已量化后,则阵列中非零量化系值的数量被确定。将称为Nc的值设为该数量并用于明确表示阵列中非零系数值的数量。因此,不再需要EOB符号(例如,等于零的level值)。随后,通过使用定义(run,level)对与码字之间映射的查找表,将所述块中的每个(run,level)对映射到码字上,其中,查找表是根据Nc值来选择的。
上述两种VLC编码方法中,通过在不止一个码字集之间进行基于上下文的切换来选择码字;这两种方法与使用单个VLC码字集的方法相比,均提高了数据压缩效率。然而,在许多数据压缩应用中,特别是在与视频编码相关的应用中,人们不断期望提高数据压缩效率。因此,对于开发新的变长编码方法,以提高对要编码的数据符号类型和统计属性的适应性,同时保持低计算复杂性、低存储要求和良好的抗差错能力,人们仍然有着相当高的兴趣。正是在这样的背景下,提出了根据本发明的方法。
发明概述本发明一般涉及表示为(run,level)对的数据符号的变长编码。它涉及使用数据符号与VLC码字之间的至少两个映射,并定义映射之间的切换规则,这些规则考虑了要进行变长编码的数据符号的统计属性。这样,与在数据符号与码字之间使用固定映射的VLC编码方法相比,取得了提高的数据压缩效率。切换规则设计为使得无需在比特流中包括与映射选择相关的任何信息,便可将包括按照本发明方法形成的VLC码字的比特流解码。换言之,无需在比特流中提供用于生成每个码字的映射的明确指示。此属性增强了数据压缩效率。
具体地说,本发明提出用于对量化变换系数进行编码以提高编码效率的方法。更具体地说,本发明的具体目的是提供一种用于对表示非零值量化变换系数的(run,level)对进行编码的新的更有效的方案。象Karczewicz在文档“高比特率的VLC系数编码”(“VLCCoefficients Coding for High Bit-Rate”,Doc.JVT-B072,2ndJVT Meeting,Geneva,CH,Jan.29-Feb.1,2002)中建议的方法一样,本发明基于如下观察变换系数块中非零值系数的数量以及run的值受变换块大小限制。此观察及对现实图像操作的编码器的进一步分析使本发明的发明者意识到,在块中非零系数数量与所述块中run值之间存在相关性。具体地说,他们意识到随着从块将越来越多的(run,level)对编码,run-level组合的可能数量开始减少。正是此后一认识促成了本发明。
因此,根据本发明的VLC编码方法将如下事实纳入考虑随着为连续的(run,level)对指配了码字,与要编码的下一(run,level)对相关联的run值的可能范围变得更加有限。
Run的可能值随每次(run,level)对的编码而变化的事实可以在(run,level)对到码号的索引分配期间加以利用。
更具体地说,根据本发明的实施例,至少提供了两个映射集以将(run,level)对与码号相关。利用根据max_run值从至少两个映射集中之一选择的映射表,首先将每个(run,level)对映射到一个码号,max_run值定义了run可以取的最大值。通过考虑块内非零值系数数量将Max_run初始化,并在将每个(run,level)对编码后对Max_run进行更新。以下示例阐明了这一点假设一个量化变换系数块具有5个非零系数,带有(run,level)对(2,1)、(3,2)、(4,3)、(2,3)和(1,2)。此处应注意的是,通常给定系数的run和level值是有序的,以便level值在相关联的run值之前。因此,在上述(run,level)对中,level值是每对的第一个数字(2,3,4,2,1),并且run值是每对的后一个数字(1,2,3,3,2)。在编码过程开始时,由于有5个非零系数,并且最多可以有16个这种系数,因此,run可以取的最大值为11。将此最大可能的run值表示为max_run,可以看到,在将第一个(run,level)对,即(2,1)编码后,max_run将减少,准确地说,通过减去当前run值而更新先前的max_run值,可发现它将变成10。更具体地说,max_run的更新方式为max_run=max_run-run其中,max_run在块编码开始时,初始化为16-Nc。
根据本发明的第一方面,提供了一种将包括零值数据符号和非零值数据符号的数据符号集编码的方法,所述方法包括通过映射操作指配码字以表示非零值数据符号及相关联的若干在前或在后的零值符号。根据所述方法,所述映射操作依赖于所述数据符号集中零值数据符号的最大可能数量;通过所述映射操作,将一个码字指配给非零值数据符号及其相关联的若干在前或在后的零值数据符号。
根据本发明的第二方面,提供了一种将表示数据符号集的码字集解码的方法,所述数据符号集包括零值数据符号和非零值数据符号,所述方法包括接收所述数据符号集中非零值数据符号的数量指示,接收表示非零值数据符号及相关联的若干在前或在后的零值数据符号的码字,以及通过执行逆映射操作,将所述码字解码以恢复所述非零值数据符号及其相关联的若干在前或在后的零值数据符号。根据所述方法,所述逆映射操作依赖于所述数据符号集中零值数据符号的最大可能数量;通过所述逆映射操作,可从所述码字将所述非零值数据符号及其相关联的若干在前或在后的零值数据符号解码。
根据本发明的第三方面,提供了一种将包括零值数据符号和非零值数据符号的数据符号集编码的编码器;所述编码器包括用于通过映射操作指配码字,以表示非零值数据符号及相关联的若干在前或在后的零值符号的部件。根据本发明,指定编码器中提供的码字的部件设置来根据所述数据符号集中零值数据符号的最大可能数量来调整指配码字的映射操作。
根据本发明的第四方面,提供了一种将表示数据符号集的码字集解码的解码器;所述数据符号集包括零值数据符号和非零值数据符号;所述解码器包括用于接收表示所述数据符号集中非零值数据符号数量指示的部件;用于接收表示非零值数据符号及相关联的若干在前或在后的零值数据符号的码字的部件;以及用于通过执行逆映射操作,将码字解码以恢复所述非零值数据符号及其相关联的若干在前或在后的零值数据符号的部件。根据本发明,用于将码字解码的部件设置来根据所述数据符号集中零值数据符号的最大可能数量来调整逆映射操作,通过逆映射操作,可将非零值数据符号及其相关联的若干在前或在后的零值数据符号解码。
根据本发明的第五方面,提供了一种多媒体终端,它包括根据本发明第三方面的编码器。
根据本发明的第六方面,提供了一种多媒体终端,它包括根据本发明第四方面的解码器。
根据本发明第五和/或第六方面的多媒体终端最好是移动多媒体终端,用于通过无线电连接与移动电信网络通信。
附图简述现在将参照附图,通过示例描述本发明的实施例,其中图1是根据现有技术的通用视频编码器的示意方框图;图2是根据现有技术且与图1所示编码器对应的通用解码器的示意方框图;图3显示了根据现有技术的宏块的形成;图4显示了作为示例的之字形扫描顺序;图5是根据本发明实施例的视频编码器的示意方框图;图6是根据本发明实施例且与图5所示编码器对应的视频解码器的示意方框图;以及图7是可实施根据本发明的方法的多媒体通信终端的示意方框图。
本发明详细说明在下面的详细说明中,给出了本发明的示范实施例。这些实施例涉及视频编码器中(run,level)对的变长编码及其在对应视频解码器中的后续解码,(run,level)对表示作为块变换编码结果产生的非零值变换系数。然而,本领域的技术人员会理解,根据本发明的方法可以一般地适用于表示为(run,level)对的数据符号或要编码的数据符号集的任何等效表示的VLC编码。
图5是可应用根据本发明的VLC编码方法的视频编码器600的示意方框图。图5所示视频编码器的结构大致与图1所示现有技术视频编码器的结构相同,但对执行变长编码操作的那些编码器部件进行了适当的修改。在某种意义上功能实现和操作与前述现有技术视频编码器相同的所有视频编码器部件以相同的标记标识。在此说明书中,假定所有变长编码操作在视频复用编码器670中执行。然而,应理解,在本发明的替代实施例中,可提供单独的变长编码单元。还应注意的是,根据本发明的方法可应用于视频编码器生成的某些数据符号(例如,与非零值变换系数相关联的(run,level)对),并且其它VLC编码方法可用于将其它数据符号编码。
现在将详细地介绍视频编码器600的操作。在将数字视频帧编码时,编码器600在某种意义上以类似于前面结合图1所述的方式操作,以生成INTRA编码和INTER编码的压缩视频帧。如本文前面所述的那样,在INTRA编码模式下,对每个图像数据(像素值)块应用离散余弦变换(DCT),以生成对应的变换系数值二维阵列。DCT操作在变换块104中执行,由此生成的系数随后传递到量化器106中进行量化。在INTER编码模式下,对预测误差值块应用功能块104执行的DCT变换。由此产生的变换系数也传递到量化器106并在其中量化。
应注意的是,ITNER编码帧可包含INTRA编码图像块;此外,在一些情况下,不对特定图像块应用变换编码。例如,如果INTRA预测在INTRA编码模式下使用,则在编码器中从一个或多个先前编码的图像块中预测一些图像块。这种情况下,编码器为解码器提供要在预测中使用的先前数据块的指示,并且不输出任何变换系数数据。此外,在INTER编码模式下,某个块的预测与该块本身的图像数据之间的差异可能很小,以致从数据压缩率角度上最好不发送任何预测误差信息。因此,根据本发明的VLC编码方法适用于经过变换编码及随后的变换系数量化的那些图像块。
根据本发明,在视频复用编码器670收到量化变换系数块(二维阵列)时,它确定阵列中非零值系数的数量Nc,并将此数量的指示在比特流635中传送给解码器。在本发明的优选实施例中,Nc是在传输前作了变长编码。在替代实施例中,可以如上所述传送或可以应用另一种编码方法。
视频复用编码器670接着将非零值系数表示为(run,level)对。更具体地说,如图4中所示那样,先使用预定的扫描顺序扫描量化变换系数的二维阵列,以生成有序的一维阵列。有序的一维阵列中的每个非零值系数值随后用run值和level值表示,其中,level值表示系数值,run值表示在非零值系数前连续的零值系数的数量。
随后,视频复用编码器670对run和level值应用变长编码,以便为每个(run,level)对指配一个VLC码字。根据本发明的优选实施例,在将符号编码前考虑可能的最大run(表示为max_run),通过选择(run,level)对到码号的不同映射,将(run,level)对编码。在对量化变换系数块中第一(run,level)对进行编码时,将max_run设为等于块中可存在的非零值系数的最大可能数量减去先前确定的Nc值。因此,对于4×4块,max_run初始化为max_run=16-Nc(1)以下示范伪码提供了根据本发明将码字指配给(run,level)对的一种方法Index_RL=RL_index[max_run,level,run];(2)其中,RL_index根据max_run值将run_level值的整数值映射到不同的码号。max_run在使用训练材料运行模拟后初始化。最后,用表2或表5所列VLC码字之一将Index_RL编码。
更具体地说,对于每个可能的max_run值,通过分析不同(run,level)对的出现概率,以经验方式从一个或多个视频数据测试序列中构造映射函数RL_index。随后将应用映射方法生成的码号(即,Index_RL值)用于从码字表中选择表示(run,level)对的码字。本发明的优选实施例使用以上表2中所示的码字表或表5中所示的码字表。
表6和表7显示了根据max_run值将(run,level)对映射到码号的示例。在所述两个表中,行对应于level值,列对应于run值,而每个单元格中的条目表示该特定run-level对(即,run和level值的组合)的VLC码字的码号。为最可能的对相配码号1,为第二最可能的对指定码号2,以此类推。表6和表7均列出了前15个最可能的对。表6显示了max_run为8时的情况,而表7显示了max_run为3时的情况。
Run
Level表6max_run=8。
Run
Level表7max_run=3使用以上映射方法,选择VLC码字以表示特定的(run,level)对后,视频复用编码器670在比特流635中将码字发送到解码器。如果当前数据块有更多的(run,level)对要编码,则它将通过减去当前run值来更新max_run,以便用于将下一(run,level)对编码,更新方式即max_run=max_run-run
编码过程会继续,直至已将给定块的所有(run,level)对表示为码字为止,随之视频复用编码器670接收下一量化变换系数块以进行编码,并对下一数据块重复编码过程。
现在将参照图6描述根据本发明的视频解码器700的操作。图6所示视频解码器结构大致与图2所示的现有技术视频解码器的结构相同,但对执行变长解码操作的那些解码器部件进行了适当的修改。功能实现和操作在某种意义上与前述现有技术视频解码器相同的所有视频解码器部件用相同的标记标识。在下面的说明中,假定所有变长解码操作在视频复用解码器770中执行。然而,应理解,在本发明的替代实施例中,可提供单独的变长解码单元。
现在将详细地介绍该视频解码器的操作。这里,假定图6所示视频解码器与结合图5所述的编码器相对应,因此能够接收编码器600发送的比特流635并将其解码。在该解码器中,比特流由视频复用解码器770接收并分成各组成部分。如先前有关现有技术的所述那样,对从比特流中提取的压缩视频数据按宏块进行处理。根据本发明,INTRA编码宏块的压缩视频数据包括表示宏块的每个块的VLC编码(run,level)对的变长码字,以及每块中出现的非零值变换系数的数量Nc的指示和编码控制信息(例如,与量化参数QP相关)。INTER编码宏块的压缩视频数据包括每块的VLC编码预测误差信息(包括每块的VLC编码的(run,level)对和Nc指示)、宏块的运动矢量信息和编码的控制信息。
以同样的方式处理INTRA编码宏块的每个块的Nc值和(run,level)对和与INTRA编码宏块相关联的每个预测误差数据块的Nc值和(run,level)对。
更具体地说,在对INTRA或INTER编码图像块的VLC编码(run,level)对解码时,视频复用解码器770先确定该块中非零值量化变换系数的数量。如上所述,与非零值量化变换系数数量Nc相关的信息由编码器600插入比特流635中。此信息由解码器700的视频复用解码器770从接收的比特流中抽取。
随后,视频复用解码器770开始对图像块的VLC编码的(run,level)对解码。根据本发明,解码操作的执行方式类似于如上所述编码器中执行的编码过程。更具体地说,在对与特定图像块相关联的第一变长码字解码时,视频复用解码器770通过将max_run的值设为等于块中可能存在的非零值系数的最大数量减去从接收的比特流中提取的与所述块相关的Nc值,将max_run值初始化。它随后确定与接收码字对应的码号,并根据max_run的值,选择将该码号与run和level值的特定组合相关的映射表,解码器中使用的映射表对应于编码器中用于生成码字的那些映射表。
在恢复与数据块第一非零值量化变换系数对应的level和run值后,视频复用解码器770通过减去刚确定的run值来更新max_run的值,并开始对数据块的下一码字进行解码。此过程会继续,直到已将表示特定图像块的所有码字解码为止,视频复用解码器770随之从解码的(run,level)对重建图像块的量化变换系数,并将它们传递到逆量化器210。如结合现有技术视频解码器200所述的那样,视频解频过程的剩余部分继续,从而形成每个图像块的重建像素值。
图7显示了包括可适于按照本发明操作的视频编码和解码设备的终端装置。更具体地说,该图显示了根据ITU-T建议H.324实现的多媒体终端80。终端可视为多媒体收发装置。它包括捕获数据流并将其编码和复用以便经通信网传送的单元以及接收多媒体内容并将其去复用、解码和显示的单元。ITU-T建议H.324定义了终端的全部操作,并涉及控制其不同构成部分操作的其它建议。此种多媒体终端可在诸如常规移动视频电话等实时应用或诸如从例如因特网多媒体内容服务器检索和/或流式传送视频剪辑的非实时应用中使用。
在本发明范围中,应理解图7所示H.324终端仅仅是适于应用本发明方法的多种替代多媒体终端实施例之一。还应注意到,就终端设备的位置和实现而言,存在多种替代方案。如图7所示,多媒体终端可位于连接到诸如模拟PSTN(公共交换电话网)等固定线路电话网络的通信设备中。这种情况下,多媒体终端配有符合ITU-T建议V.8、V.34和可选的V.8bis标准的调制解调器91。或者,多媒体终端可连接到外部调制解调器。调制解调器允许将多媒体终端生成的复用数字数据和控制信号转换成适合经PSTN传输的模拟形式。它还使多媒体终端能够从PSTN接收模拟形式的数据和控制信号,并将它们转换成可由终端以适当方式去复用并加以处理的数字数据流。
H.324多媒体终端也可以这样实现,使它可直接连接到数字固定线路网络,如ISDN(综合业务数字网络)。这种情况下,调制调解器91可替换为ISDN用户网络接口。在图7中,此ISDN用户网络接口由备选功能块92表示。
H.324多媒体终端也可适于在移动通信应用中使用。如果配合无线通信链路使用,则调制解调器91可替换为任何适当的无线接口,如图7中备选功能块93所示。例如,H.324/M多媒体终端可包括无线电收发信机,其可实现到当前第二代GSM移动电话网,或所提出的第三代UMTS(通用移动电话系统)的连接。
应注意的是,在设计用于双向通信,即用于收发视频数据的多媒体终端中,同时提供按照本发明实施的视频编码器和视频解码器是有利的。此类编码器和解码器对经常实现为一个组合功能单元,称为“编解码器”。
现在将参照图7进一步详细描述典型的H.324多媒体终端。
多媒体终端80包括称为“终端设备”的多个单元。这包括一般性地分别用标记81、82和83表示的视频、音频和远程信息处理装置。例如,视频设备81可包括捕获视频图像的摄像机、显示接收视频内容的监视器和可选的视频处理设备。音频设备82通常包括例如用于捕获语音消息的麦克风以及再现接收音频内容的扬声器。音频设备还可包括其它音频处理单元。远程信息处理设备83可包括数据终端、键盘、电子白板或静态图像收发信机,如传真机。
视频设备81连接到视频编解码器85。视频编解码器85包括均根据本发明实现的视频编码器和相应的视频解码器。此类编码器和解码器将在下面描述。视频编解码器85负责以适当的形式将捕获的视频数据编码,以便通过通信链路传输,并且将从通信网络接收的压缩视频内容解码。在图7所示示例中,视频编解码器是根据ITU-T建议H.26L实现的,但进行了适当的修改以便在视频编解码器的编码器和解码器中实施根据本发明的自适应变长编码方法。
终端的音频设备连接到图7中用标号88表示的音频编解码器。类似于视频编解码器,音频编解码器包括编码器/解码器对。它将终端音频设备捕获的音频数据转换成适合经通信链路传输的形式,以及将从网络接收的音频数据变换成适合再现的形式,例如,适合在终端的扬声器上再现。音频编解码器的输出传递到延迟块87,以补偿视频编码过程引入的延迟,从而确保音频和视频内容的同步。
多媒体终端的系统控制功能块84采用适当的控制协议(信令功能块88)在发送和接收终端之间建立共同的操作模式,控制端到网络的信令。信令功能块88交换有关发送和接收终端的编码和解码功能的信息,并可用于实现视频编码器的不同编码模式。系统控制部功能块84还控制数据加密的使用。有关在数据传输中要使用的加密类型的信息从加密功能块89传递到复用器/去复用器(MUX/DMUX单元)90。
在始自多媒体终端的数据传输期间,MUX/DMUX单元90将编码的、同步的视频和音频流与从远程信息处理设备83输入的数据和可能的控制数据组合在一起,形成单个比特流。有关要应用到比特流的数据加密类型(如果有的话)的信息由加密功能块89提供,用于选择加密模式。对应地,正在接收复用的并且可能加密的多媒体比特流时,MUX/DMUX单元负责将该比特流解密,将其分成各多媒体组成分量,并将这些分量传递到适当的编解码器和/或终端设备,以进行解码和再现。
应注意的是,根据本发明的多媒体终端功能单元、视频编码器、解码器和视频编解码器可实现为软件或专用硬件,或两者的组合。根据本发明的变长编码和解码方法特别适合以计算机程序的形式实现,该计算机程序包括用于执行本发明功能步骤的机器可读指令。因此,根据本发明的变长编码器和解码器可实现为存储在存储媒体上并在诸如个人台式计算机的计算机中执行的软件代码。
如果多媒体终端80是移动终端,即,如果它配有无线电收发信机93,则本领域的技术人员可以理解,它还可以包括其它单元。在一个实施例中,它包括具有允许用户操作多媒体终端80的显示器和键盘、控制负责多媒体终端不同功能的功能块的中央处理器如微处理器、随机存取存储器RAM、只读存储器ROM和数字摄像机。微处理器的操作指令是对应于多媒体终端80基本功能的程序代码,存储在只读存储器ROM中,并可在需要时,例如在用户的控制下由微处理器执行。微处理器按照程序代码使用无线电收发信机93形成与移动通信网络的连接,从而使多媒体终端80可经无线电路径从移动通信网络收发信息。
微处理器监视用户接口的状态并控制数字摄像机。微处理器响应用户命令而指示摄像机将数字图像录制到RAM中。一旦捕获了图像,或者在捕获过程期间,微处理器将图像分割成图像段(例如宏块),并如上所述使用编码器对各段执行运动补偿编码以生成压缩图像序列。用户可命令多媒体终端80在其显示屏上显示捕获的图像,或者使用无线电收机信机93将压缩的图像序列发送到另一多媒体终端、连接到固定线路网络(PSTN)的视频电话或其它一些电信装置。在优选实施例中,图像数据的传输在对第一段编码时便开始,以便收信方可以最小的延迟开始对应的解码过程。
虽然在特定实施例的范围中进行了描述,但本领域的技术人员清楚,可以对所述内容进行多种修改并予以不同的变化。因此,虽然已针对一个或多个优选实施例对本发明作了示意和描述,但本领域的技术人员将理解,可以在不脱离如上所述本发明范围和精神的情况下,进行某些修改或改变。
本发明的一个替代实施例基于以下观察对系数的之字形扫描往往根据其值将系数排序,这样,一维阵列中位置较靠前的系数比阵列中位置较靠后的系数具有更大的绝对值。因此,连续的level值表现出极大的相似性,即,在给定的变换系数块内,要编码的系数的level一般具有与先前编码系数大致类似的幅值。此替代实施例利用了这种相似性,按照如下关系将(run,level)对编码Index_RL=RL_Index{max_run,level,run,pre_level}(3)其中,pre_level是块中先前编码的level值。与先前所述的实施例相比,存在影响(run,level)的索引值分配的另一参数(即,pre_level)。
本发明的又一实施例依据的事实是连续的level值表现出很强的相关性。更具体地说,先前编码的level值除了用于索引分配中,还可用于指定不同的VLC码本以将当前符号编码。下面的示范伪码提供了一种方法,用于将VLC码本指配给通过采用本发明前述实施例之一找到的(run,level)对码号VLC_N=Nc_map[prev_level] (4)其中,prev_level是块中先前编码的level值,并且Nc_map是将整数值映射到不同的可用VLC代码的阵列。
权利要求
1.一种将包括零值数据符号和非零值数据符号的数据符号集编码的方法,它包括-通过映射操作指配码字以表示非零值数据符号及相关联的若干在前或在后的零值符号,其特征在于将一个码字指配给非零值数据符号及其相关联的若干在前或在后的零值数据符号的所述映射操作依赖于所述数据符号集中零值数据符号的最大可能数量。
2.如权利要求1所述的编码方法,其特征在于结合将非零值数据符号及其相关联的若干在前或在后的零值数据符号指配给一个码字,通过从零值数据符号的所述最大可能数量中减去所述相关联的若干在前或在后的零值数据符号的数量以得到零值数据符号的更新的最大可能数量,从而更新所述数据符号集中零值数据符号的所述最大可能数量,其中,借以将后续码字指配给非零值数据符号及其相关联的若干在前或在后的零值数据符号的所述映射操作依赖于零值数据符号的所述更新的最大可能数量。
3.如权利要求1或2所述的编码方法,其特征在于通过从所述数据符号集中数据符号的总数中减去所述数据符号集中非零值数据符号的数量,确定所述数据符号集中零值数据符号数量的所述最大可能数量。
4.如权利要求1、2或3所述的编码方法,其特征在于将所述数据符号集中非零值数据符号的所述数量指示发送到对应的解码装置。
5.如权利要求1到4中任意一项所述的编码方法,其特征在于根据所述数据符号集中零值数据符号的所述最大可能数量从映射表集选择特定的映射表来执行所述映射操作,所述映射表集的每个映射表定义数据符号到码字的指配关系。
6.如权利要求5所述的编码方法,其特征在于每个所述映射表定义非零值数据符号及其相关联的若干在前或在后的零值数据符号到码字的指配关系。
7.如权利要求5所述的编码方法,其特征在于每个所述映射表定义非零值数据符号及其相关联的若干在前或在后的零值数据符号到码号的指配关系,每个码号表示码字集中的一个码字,并可用作所述码字集的引用,由此定义非零值数据符号及其相关联的若干在前或在后的零值数据符号到码字的指配关系。
8.如权利要求1到7中任意一项所述的编码方法,其特征在于所述数据符号集表示变换系数值。
9.如权利要求1到8中任意一项所述的编码方法,其特征在于先前编码的非零值数据符号的值用于从包含码字的码本集中指定一个码本,以将当前非零值数据符号编码。
10.如权利要求1到9中任意一项所述的编码方法,其特征在于所述方法用于视频编码器中。
11.一种将表示数据符号集的码字集解码的方法,所述数据符号集包括零值数据符号和非零值数据符号,所述方法包括-接收所述数据符号集中表示若干非零值数据符号的指示;-接收表示非零值数据符号及相关联的若干在前或在后的零值数据符号的码字;-通过执行逆映射操作,将所述码字解码以恢复所述非零值数据符号及其相关联的若干在前或在后的零值数据符号;其特征在于所述逆映射操作依赖于所述数据符号集中零值数据符号的最大可能数量;通过所述逆映射操作,可从所述码字将非零值数据符号及其相关联的若干在前或在后的零值数据符号解码。
12.如权利要求11所述的解码方法,其特征在于结合将接收的码字解码以恢复由所述码字表示的所述非零值数据符号及其相关联的若干在前或在后的零值数据符号,通过从零值数据符号的所述最大可能数量中减去所述相关联的若干在前或在后的零值数据符号的数量以得到零值数据符号的更新的最大可能数量,从而更新所述数据符号集中零值数据符号的所述最大可能数量,所述逆映射操作依赖于零值数据符号的所述更新的最大可能数量,通过所述逆映射操作,将后续码字解码以恢复所述后续码字表示的所述非零值数据符号及其相关联的若干在前或在后的零值数据符号。
13.如权利要求11或12所述的解码方法,其特征在于通过从所述数据符号集的数据符号的总数中减去所述数据符号集中非零值数据符号的数量,确定所述数据符号集中零值数据符号的所述最大可能数量。
14.如权利要求11、12或13所述的解码方法,其特征在于所述数据符号集中非零值数据符号的数量指示是从对应的编码装置接收的。
15.如权利要求11到14中任意一项所述的解码方法,其特征在于根据所述数据符号集中零值数据符号的所述最大可能数量从逆映射表集中选择特定的逆映射表,从而执行所述逆映射操作,所述逆映射表集的每个逆映射表定义码字到数据符号的指配关系。
16.如权利要求15所述的解码方法,其特征在于每个所述逆映射表定义码字到非零值数据符号及其相关联的若干在前或在后的零值数据符号的指配关系。
17.如权利要求15所述的解码方法,其特征在于对所述接收的码字进行解码以恢复码号,所述码号用作根据所述数据符号集中零值数据符号的所述最大可能数量选择的特定逆映射表的引用,由此恢复由所述码字表示的所述非零值数据符号及其相关联的若干在前或在后的零值数据符号。
18.如权利要求11到17中任意一项所述的解码方法,其特征在于所述数据符号集表示变换系数值。
19.如权利要求11到18中任意一项所述的解码方法,其特征在于先前解码的非零值数据符号的值用于从包含表示非零值数据符号的码字的码本集中选择一个码本,以将当前码字解码。
20.如权利要求11到19中任意一项所述的解码方法,其特征在于所述方法用于视频解码器中。
21.一种用于将包括零值数据符号和非零值数据符号的数据符号集编码的编码器,它包括-通过执行映射操作指配码字,以表示非零值数据符号及相关联的若干在前或在后的零值符号的部件,其特征在于用于指配码字的所述部件设置来调整所述映射操作,通过所述映射操作,根据所述数据符号集中零值数据符号的最大可能数量来指配码字。
22.如权利要求21所述的编码器,其特征在于包括用于结合将非零值数据符号及其相关联的若干在前或在后的零值数据符号指配给一个码字,通过从零值数据符号的所述最大可能数量中减去所述相关联的若干在前或在后的零值数据符号的数量以得到零值数据符号的更新的最大可能数量,从而更新所述数据符号集中零值数据符号的所述最大可能数量的部件,用于指配码字的所述部件设置来调整所述映射操作,通过所述映射操作,根据零值数据符号的所述更新的最大可能数量来将后续码字指配给非零值数据符号及其相关联的若干在前或在后的零值数据符号。
23.如权利要求21或22所述的编码器,其特征在于它设置来通过从所述数据符号集的数据符号总数中减去所述数据符号集中非零值数据符号的数量,从而确定所述数据符号集中零值数据符号的所述最大可能数量。
24.如权利要求21、22或23所述的编码器,其特征在于它包括用于将所述数据符号集中非零值数据符号数量指示发送到对应解码装置的部件。
25.如权利要求21到24中任意一项所述的编码器,其特征在于用于指配码字的所述部件设置来根据所述数据符号集中零值数据符号的所述最大可能数量从映射表集中选择特定的映射表,从而执行所述映射操作,所述映射表集的每个映射表定义数据符号到码字的指配关系。
26.如权利要求25所述的编码器,其特征在于每个所述映射表定义非零值数据符号及其相关联的若干在前或在后的零值数据符号到码字的指配关系。
27.如权利要求25所述的编码器,其特征在于每个所述映射表定义非零值数据符号及其相关联的若干在前或在后的零值数据符号到码号的指配关系,每个码号表示码字集中的一个码字,其中指配码字的所述部件用于将所述码号用作到所述码字集的引用,由此定义非零值数据符号及其相关联的若干在前或在后的零值数据符号到码字的指配关系。
28.如权利要求21到27中任意一项所述的编码器,其特征在于所述数据符号集表示变换系数值。
29.如权利要求21到28中任意一项所述的编码器,其特征在于先前编码的非零值数据符号的值用于从包含码字的码本集中指定一个码本,以将当前非零值数据符号编码,其中指配码字的所述部件用于将所述先前编码的非零值数据符号的所述值用作到所述码本集的引用。
30.如权利要求21到29中任意一项所述的视频编码器。
31.一种用于将表示数据符号集的码字集解码的解码器,所述数据符号集包括零值数据符号和非零值数据符号,所述解码器包括-用于接收所述数据符号集中表示非零值数据符号数量指示的部件;-用于接收表示非零值数据符号及相关联的若干在前或在后的零值数据符号的码字的部件;-用于通过执行逆映射操作,将码字解码以恢复所述非零值数据符号及其相关联的若干在前或在后的零值数据符号的部件;其特征在于用于将所述码字解码的所述部件设置来调整所述逆映射操作,通过所述逆映射操作,根据所述数据符号集中零值数据符号的最大可能数量,将非零值数据符号及其相关联的若干在前或在后的零值数据符号解码。
32.如权利要求31所述的解码器,其特征在于它包括用于结合将接收的码字解码以恢复所述码字所表示的所述非零值数据符号及其相关联的若干在前或在后的零值数据符号,通过从零值数据符号的所述最大可能数量中减去所述相关联的若干在前或在后的零值数据符号的数量以得到零值数据符号的更新的最大可能数量,从而更新所述数据符号集中零值数据符号的所述最大可能数量的部件;用于将码字解码的所述部件设置来调整所述逆映射操作,通过所述所述逆映射操作,根据零值数据符号的所述更新的最大可能数量,将后续码字解码以恢复所述后续码字表示的所述非零值数据符号及其相关联的若干在前或在后的零值数据符号。
33.如权利要求31或32所述的解码器,其特征在于它设置来通过从所述数据符号集的数据符号的总数中减去所述数据符号集中非零值数据符号的数量,确定所述数据符号集中零值数据符号的所述最大可能数量。
34.如权利要求31、32或33所述的解码器,其特征在于它包括用于从对应的编码装置接收所述数据符号集中非零值数据符号的所述数量指示的部件。
35.如权利要求31到34中任意一项所述的解码器,其特征在于用于将码字解码的所述部件设置来根据所述数据符号集中零值数据符号的所述最大可能数量从逆映射表集中选择特定的逆映射表,执行所述逆映射操作,所述逆映射表集的每个逆映射表定义码字到数据符号的指配关系。
36.如权利要求35所述的解码器,其特征在于每个所述逆映射表定义码字到非零值数据符号及其相关联的若干在前或在后的零值数据符号的指配关系。
37.如权利要求35所述的解码器,其特征在于用于将码字解码的所述部件设置来将接收的码字解码,以恢复码号并将所述码号用作根据所述数据符号集中零值数据符号的所述最大可能数量而选择的所述特定逆映射表的引用,由此恢复所述码字表示的所述非零值数据符号及其相关联的若干在前或在后的零值数据符号。
38.如权利要求31到37中任意一项所述的解码器,其特征在于所述数据符号集表示变换系数值。
39.如权利要求31到38中任意一项所述的解码器,其特征在于用于将码字解码的所述部件设置来利用先前解码的非零值数据符号的所述值,从包含表示非零值数据符号的码字的码本集中选择一个码本,以将当前码字解码。
40.如权利要求31到39中任意一项所述的解码器。
41.一种多媒体终端,它包括如权利要求30所述的视频编码器。
42.一种多媒体终端,它包括如权利要求40所述的视频解码器。
43.如权利要求41或42所述的多媒体终端,其特征在于它包括用于形成到无线电通信网的无线链路的部件。
全文摘要
本发明涉及用于将包括零值数据符号和非零值数据符号的数据符号集编码的方法,所述方法包括通过执行映射操作指配码字以表示非零值数据符号及相关联的若干在前或在后的零值数据符号。根据本发明,将一个码字指配给非零值数据符号及其相关联的若干在前或在后的零值数据符号的映射操作依赖于所述数据符号集中零值数据符号的最大可能数量。本发明还描述了对应的解码方法及编码和解码装置。
文档编号H04N7/50GK1656690SQ03812229
公开日2005年8月17日 申请日期2003年4月2日 优先权日2002年4月2日
发明者R·库尔切伦, M·卡策维茨 申请人:诺基亚有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1