具体实施方式
通过参考以下的详细说明,并结合附图进行阅读,可更好地了解以上概述的和由阐述的权利要求给定的本发明。下面提出的、用来构建和使用本发明的一个特定的实施方案的一个特定的优选实施例的详细说明,并不打算限制所阐述的权利要求,而用作为本发明的具体的实例。下面提出的具体的实例是用于处理图象次序和提供压缩的输出的编辑器的优选的特定实施方案。然而,本发明也可以应用于其它类型的***。
I.原理部分介绍
优选实施例是允许在压缩域中编辑图象序列的***,即不需要完全译码压缩图象。所以,本发明应当允许图象序列处理使用相对较小的处理量或传输资源;例如,体现本发明原理的编辑器可以提供实时图象处理,其中通过使用运行适当的软件的个人计算机把两个图象拼接在一起,诸如在电视会议应用项中那样。替换地,本发明在网络编辑***中可以找到应用,其中把广告与来自实况体育比赛的提供物混合在一起。
图2显示在拼接应用项中的优选实施例的运行,类似于以上结合图1讨论的拼接应用项。如图2所示,第一组图象101的一部分,以头部图象结尾,被拼接到第二组图象105,以尾部图象107开始。第一和第二组图象的每组以压缩格式被存储,如第一组MPEG图象111和第二组MPEG图象113所表示的,这些帧在图2上保持以粗黑体、划底线、斜体字形表示。每组帧以压缩格式被馈送到体现本发明的原理的编辑器115。进入的压缩帧被进行帧变换,如两个参考块117和119所示。帧变换块的目的是修改一个或多个特定的帧对于其它的帧的依赖性,以使得特定的帧可被重新排序或与不同的图象或图象序列相组合。可以通过把有限数目的帧(但不是整个的GOP)变换成图象域,如两个阴影的帧120表示的,然后再把这些阴影帧重新变换成压缩域,而进行该变换。然而,如下面进一步描述的,优选地不是通过全部变换成图象域,而是通过全部在压缩域内进行操作,而执行变换。例如,在优选实施例中的两个参考块117和119表示每组帧被变换成(不用执行离散余弦逆变换“IDCT”)压缩的数据子集121和123,只代表要被保持的那些帧。这些子集然后被组合,正如相加块125表示的,然后施加速率控制,以防止数据下溢出或上溢出,正如参考块127表示的。编辑器完成的结果然后被提供给全部MPEG遵从的压缩图象输出序列129,由此,编辑被完成,以产生复合图象序列131,而不用把两个图象序列103和105的每个序列全部译码到图象域。
参照图1,以上在背景一节中讨论的,需要全部图象序列译码和重新编码的实时拼接运行会需要多到20,000MOPS(“每秒百万运算次数”);通过代之以在压缩域进行拼接,如图2所示,预期本发明可以通过少于2,000MOPS以每秒一次拼接的速率完成拼接。优选地,本发明以运行在计算机或特定的用途的编辑器(此后,二者都被称为“计算装置”)的软件来实施。
如上所述,“编辑”和“处理”“时间次序”是指对于图象在图象序列内的次序进行图象处理,以及包括把来自一个序列的图象与来自不同的序列的图象进行拼接,重新排序压缩图象,把序列颠倒成反向重放模式,从一个序列中除去选择的图象,以及以快进模式重放序列等等。另外,本发明的优选应用项是MPEG格式图象;然而,应当看到,本发明也可被应用于其它压缩图象序列格式,诸如活动-JPEG,H261,和H263,以及基于不采用离散余弦变换(“DCT”)或离散正弦变换(“DST”)的压缩方案的预测;例如,本发明可被应用于使用小波或子频带变换的方案。
图3显示对于实施本发明的原理的编辑器153的典型的应用项151,即,包括混合来自两个卫星提供物的压缩信号的实时应用项。图3显示两个卫星155和157,它们发送两个不同的压缩图象信号,例如,两场不同的足球比赛。由参考数字159和161表示的发送被一个或多个接收机163接收,以及被馈送到相应的输入缓存器165和167。替换地,输入到***的两个输入可以是来自两个数字电视摄像机的输出,即输出数字压缩图象序列的摄像机。不离开压缩域,或不执行IDCT,优选地编辑器153在用户接口169的控制下运行,把两个压缩图象信号按需要进行混合。优选地,***包括(与编辑器和相关的缓存器168并行地)一个或多个MPEG译码器170,它被使用来通过用户接口显示图象。例如,用户接口可包括一个或多个监视器171和键盘173,以及可同时显示几个图象窗口,诸如相应于每个传输159和161的窗口,以及相应于编辑器的输出175的窗口。通过用户接口,控制编辑器153的个人可以使得编辑器在几个图象信号之间切换输出,诸如在两个足球比赛之间,或把广告与实况卫星传输相混合,等等。
输出175被馈送到输出图象缓存器177,以及由此馈送到发射机179,以便方式复合卫星信号到卫星181。信号然后可被有线公司接收站处的本地MPEG译码器183接收,以及通过电缆185发送到各个电视用户,以参考数字187表示。
应当看到,刚才讨论的应用项,即,它涉及到卫星提供物,是对于优选的编辑器的一个应用项,也可被应用于电视后期制作室,或作为使用于单独的个人计算机的软件,用于图象或电视会议应用项。
通过以上介绍的优选实施例的几个主要特性,现在将以附加的细节讨论优选实施例。
II.编辑压缩图象序列
A.概述
如前所述,优选实施例使用帧变换,如有必要,以与任何想要的处理相一致的方式改变时间依赖性。下面,将讨论两个特定的处理,即,剪切和拼接两个图象序列在一起,以及变换图象序列,以便反向重放。然而,本发明可被应用于图象的任何处理,重新安排相对于其它图象的时间次序(包括把下次要被排序的图象安排到新的图象中,诸如拼接)。
在一个MPEG压缩方案中,I帧只包括对于图象的每个8×8象素块的离散余弦(“DCT”)系数。变换(诸如DCT)典型地在图象压缩下被执行,以便缩短图象序列(例如,对于图象所需要的存储器或传输带宽)。DCT的结果典型地是另一个8×8矩阵,其中每个数值代表在相应的象素块内按行和按列的强度改变的频率。非常高的频率数值,它代表在8×8象素块中正常的和快速的强度变化,典型地被认为没有低的频率数值重要,以及在8×8 DCT矩阵的右下方被找到;通过被称为“量化”的步骤,这些数值有时被扫描和被处理而变成为零。每个8×8矩阵然后通过使用一种从左上方到右下方的正常图案来回扫描矩阵的方案被编码,以使得被假定为不太重要的数值是最后的,以及优选地每个矩阵的编码以可变长度一串零作为结尾。整个可变长度串然后用换码字符代替,以及每个被量化、编码的DCT矩阵然后变成为可变长度的DCT系数串,画面跟随换码字符,它表示DCT矩阵的其余项目是零。
P帧使用运动矢量以及DCT系数。更具体地,P帧的每个块对于相应于先前的P或I帧被搜索,以便确定最接近的匹配(典型地在31象素的位置窗口内在任何方向)。标识最佳适配的结果的运动矢量,然后被编码。另外,当前帧的象素块和先前帧的最佳适配的象素块被比较,以便产生差值,它是以DCT格式被编码的这些差值,正如刚才结合I帧描述的。这样,P帧根据I或P帧被预测,以及依赖于先前的I或P帧的译码,用于图象域重新构建。压缩图象是I帧或P帧还是B帧,由每个帧的头部信息中的一个区确定,该区由译码器使用来确定适当的解压程序。
B帧可以依赖于先前的I或P帧以及以后的I和P帧。因为图象序列中的目标经常在几个图象上逐渐改变,以前的和以后的帧的平均值经常提供对于当前帧的良好的估值,以及需要最少的编码的DCT系数(以及对于图象重新产生的最小量的编码的预测差值数据)。典型地,B帧包括对于紧接的先前的I或P帧和紧接的以后的I或P帧的运动矢量代表物,以及对于来自由这些其它帧产生的平均的象素块的差值的DCT系数。
优选的编辑器修改I、P和B帧到对于重新排序相关的帧的显示序列所必须的程度。例如,优选的压缩的帧的序列代表对于一组画面(“GOP”)的图象的时间次序;
I1B2B3P4B5B6P7B8B9I10
图象的时间次序,由下标数字表示,将需要以压缩格式的I,P,和B帧的重新排序,因为,如上所述,译码器通常需要以后的P或I帧来译码B帧。因此,上述的序列的发送的(或编码的)次序将是如下:
I1P4B2B3P7B5B6I10B8B9
1.图象拼接
在第一个假设下,图象序列
I1B2B3P4B5B6P7B8B9I10
在第二图象序列的帧5到帧7以后要被剪切和拼接,首先按时间次序表示,然后按发送次序表示为如下:
IABBPCBDPEBFPGBHBIIJ
IAPCBBPEBDPGBFIJBHBI
也就是说,希望形成第三个图象,具有以下表示的帧:
I 1 P 4 B 2 B 3P7 B 5B6I10B8B9-IAPCBBPEBD P GBFIJ B H B I
其中以粗黑线、斜体、划底线的字形出现的帧可被保持,其余帧被丢弃。通常,这样的拼接在压缩域时出现问题,因为在这个假设下,第一序列的帧B5可能依赖于帧P7,不再存在,以及帧PC依赖于帧PE,PC,和IA,也不再存在。因此,以上刚讨论的帧的组合典型地不全部解压每个图象序列,就不可能。
然而,与传统方式相反,优选的编辑器在本例中在执行编辑以前不把两个图象序列的每个序列变换成图象域,而进行处理。具体地,第一图象序列首先通过变换帧B5,以便去除它对于任何以后的帧(例如帧P7)的依赖性,而被处理。编辑器,通过以下描述的“代码转换”处理,确定对于依赖于帧P4(和P7)的块,它应当加上对于由指向帧P4的运动矢量表示的块的1/2的DCT系数估值,而减去对于由指向帧P7的运动矢量表示的块的DCT系数的1/4的值,以及去除由帧B5附加到将来的帧的依赖性。编辑器,也识别帧PC取决于帧PE,PC和IA,使用代码转换来变换帧PG的每个DCT块,以便把帧重新形成为I帧,例如,IG,通过首先把帧PC变换成独立的帧IC,然后把帧PE变换成独立的帧IE。以发送的次序表示,第一和第二图象序列的每个序列然后成为如下:
I 1 P 4 B 3P7 B’ 5B6I10B8B9,和
IAPCBBPEBD I GBF I J B H B I
给定以上表示的两个序列后,不被包括在拼接的图象中的帧可以仅仅被丢弃,其余压缩帧的简单排序导致以下的、MPEG遵从的序列:
I1P4B2B3-IG-B’5-IJBHBI
参照图2和4,进一步显示剪切和拼接两个图象序列在一起。回到图2,应当指出,第一组MPEG帧111标识要被保持的五个帧,即,斜体的、划底线的序列“...IPBB和B”[第五帧实际上是按重放次序的第六帧]。编辑器表示,要被保持的帧没有运动矢量,它指向要被剪切的帧(例如,如果编辑帧是B帧,就是这种情况)。因此,编辑器可以仅仅使用序列“...IPBB B”,而不用进行任何帧变换。另一方面,第二组MPEG帧113表示,帧“PBBPI...”是要被保持的。编辑器,在它的起始的处理步骤的一部分中,表示头第三个帧,即P帧和两个B帧,取决于将被剪切的帧,以及如果要执行想要的处理,则帧变换是必须的。首先,P帧依赖于先前的P帧,它又依赖于先前的I帧。第二,B帧依赖于第一个、保持的P帧和先前的P帧,它又依赖于先前的P和I帧。以下的说明表明这些依赖性,其中可以看到帧的发送次序,以及要被保持的帧以粗黑体、斜体字形表示:
正如图2上由参考数字123表示的,帧变换块首先把P帧变换成I帧,然后变换B帧,去除全部对于先前的帧的依赖性(即,新的帧被表示为B’和“B-前向”)。
图4上更好地显示剪切和拼接两个图象序列在一起。将要假定,这些图象序列已被去量化以及被扩展到基于运动矢量(“MV”)和基于离散余弦变换(“DCT”)的代表物。首先,编辑器通过识别在第一帧序列中任何剪切点形成头部数据流,正如图4的处理块201表示的。如果任何帧具有向前看的依赖性,即,它们是具有指向到将被剪切的P或I帧的指针的B帧,则编辑器进行变换这样的结尾的B帧到B后向帧,以使得时间依赖性将不受想要的剪切影响。这个操作由图4的参考数字203表示。
编辑器也通过类似的处理形成尾部数据流,正如由图4的处理块205和207表示的。在这种情况下,然而,具有后向时间依赖性的领先的帧必须被变换,以便去除这些依赖性。因此,如果领先帧包括指向要被剪切的帧的P帧,则P帧被变换成I帧。类似地,如果领先帧包括B帧,则这些帧被处理而变成为B前向帧(B帧没有后向依赖性)。在这方面,图2显示了以发送次序的帧,按照本发明的剪切和拼接可通过剪切重放次序或发送次序而被等价地执行。
一旦准备好头部数据流和尾部数据流,将它们互相排序(如参考数字209表示的),以便产生复合序列,以及速率被匹配,以便防止数据下溢出或上溢出。如果缓存器速率对于先前的和拼接的分段是非常不同的,则可以对于符号序列执行另一个帧变换,以便匹配比特速率,如图4的方块211,213和215表示的。然而,通常,预期比特速率可通过几种不同的方法,包括通过速率调节过渡帧,而被适当地调节,如图4的方块217和219表示的。这种速率调节仅仅减小或增加在对于过渡帧的DCT代表中的数据量,以便匹配原先的参量,例如通过重新量化DCT系数,加上零(“比特填充”),或通过按照已知的方法减小在过渡帧中的高频数据量。在Egawa等的美国专利No.5,534,944中讨论了一种这样的方法。
2.反向重放
在第二假设的情况下,假定想要以相反次序重放图象1-10的序列。在这种情况下,序列重放次序将是如下:
I10B9B8P7B6B5P4B3B2I1
然而,这样的反向重放惯常地产生问题,因为P7依赖于帧P4和I1,而不依赖于帧I10,以及因为P4依赖于帧I1,而不依赖于帧P7或I10。结果,以上的图象序列(1)典型地必须完全被译码,然后各个图象在图象域中被重新排序,以及反向序列必须被重新压缩。
在这种第二假设的情况下,优选的编辑器通过把P帧按需要变换成I帧,而处理压缩帧。编辑器处理帧P4,以便(a)以下面描述的方式把它的DCT系数与I1帧的DCT系数组合,以及(b)在进行这种组合时,使用对于帧P4的运动矢量,这样,运动矢量不再必要;结果是新的压缩帧I4。同样地,帧P7被处理,以产生新的压缩帧I7。编辑器在压缩域中处理B帧,然后改变它的运动矢量,即,前向矢量变成为后向矢量以及后向矢量变成为前向矢量,而完全不用改变对于B帧的DCT系数。压缩的、反向重放序列将在时间次序上呈现为如下:
I10B9B8I7B6B5I4B3B2I1
以及将呈现为适合于贮存,或按以下的次序发送:
I10I7B9B8I4B6B5I1B3B2
还可以进一步执行附加处理来压缩这个序列。具体地,在重新排序后的帧I7可被变换回P帧,这时依赖于帧I10,以及帧I4可被变换成P帧,依赖于帧的号码10和7。
把序列变换成反向重放次序,由图5的方框图表示。具体地,感兴趣的序列225首先被处理,把所有的P帧变换成I帧,如功能块227和压缩帧数据组235表示的,如图5的右面所示。在本例中,帧以重放序列被显示,以及从0到9进行编号,以便表示原先的重放次序。第二,B帧被处理,以便切换它们的指针指向它们的两个锚定的帧(即,前向运动矢量变成为后向运动矢量,以及反之亦然),如由功能块229和压缩帧数据组237表示的。第三,帧以想要的重放序列被重新排序,如方块231和压缩帧数据组239表示的。正如由压缩帧数据组239表示的,这些帧现在被重新排序,以使得原先是最后的帧(帧9)成为第一,等等。最后,对于新的序列检验比特速率,如必要执行附加速率改变,以便保持速率参量,如功能块233表示的。如果想要的话,则可在帧的重新排序以前,进行量化和速率匹配,如图5的功能块234表示的。
用于实施这些功能的硬件和指令典型地包括计算机(它可被嵌入在特定的用途的编辑***中)和相关的缓存器,连同用于多个帧或编码的比特流(例如,压缩的多个帧),用于在对于同一个或新的数据序列进行重新排序帧时临时使用,输入机构和输出机构(诸如,CDROM,卫星提供物,存储器提供物,或其它***),和特定的用途的软件,它们可以被装载到计算机上或由特定用途的编辑器的制造商提供的。
3.替换的实施例;关键帧到图象域的转换
如前所述,图象重新排序也可以通过识别关键帧,把它们转换到图象域,然后以任何想要的方式重新处理这些图象而被执行,以使得它不违反时间依赖性。例如,图2表示拼接应用项,其中序列“...BBIPBPBBPI...”被剪切,硬件后五个帧被附加到另一个图象序列。如果帧“PBBPI”仅仅被剪切,在这种假设下,头三个帧不再能被正确地译码,因为它们完全依赖于先前的丢失的I或P帧。虽然优选实施例需要这些帧的频率域变换来去除这样的依赖性,但有可能完全地解压只是很少的四个帧,然后进行三次重新变换而达到想要的拼接。例如,在任何剪切以前,帧“PBB...”可被译码到图象域,然后被记录为“IPB...”帧。同样地,反向重放可以通过颠倒B帧的依赖性,把P帧变换到图象域,重新排序这些帧,然后把这些帧重新变换为基于新的帧的时间次序的P帧。所有这些变动被看作为本发明的精神。
B.特定的帧变换
1.P到I的帧变换
在图6上以方框图形式显示了P帧241到I帧243的变换。在虚线245内看到的一组动作优选地作为用于割断当前帧与参考帧之间的时间依赖性的子程序被实施;在这方面,由当前帧识别的参考帧首先被找到,然后确定参考帧是否为I帧(如处理块247和判决块249所表示的)。例如,如果发现要被代码转换的帧P7依赖于帧P4,它又依赖于帧I1,则嵌套的代码转换子程序被调用,使用帧P4为当前帧和帧I1为参考帧,把帧P4变换成独立的帧I4。图6的功能块251表示的这个处理过程,按所必须的那麽多的嵌套环进行下去,以便产生I帧作为使用于P帧241的参考帧。在涉及帧P7,P4和I1的假设中,编辑器的主要子程序使用帧P7作为当前帧和帧I4作为锚定的帧,来产生帧I7。
子程序245通过首先把这些帧装载到相关的缓存器和通过处理P帧内的每个DCT块以去除它对于参考帧的依赖性,而处理每个当前P帧和参考I帧,如图6的功能块253和256表示的。去除对于参考帧的依赖性,这里被称为“代码转换”,将在下面参照图9和10更详细地加以说明。一旦不参照其它帧对宏块进行处理,与该块有关的头部就通过去除表示运动矢量存在的一个比特而被处理,如图6的方块257表示的。如果当前帧的所有的DCT块都已被处理(或如果想要的话在其它时间),则帧的头部被处理反映作为I帧的这个帧的新的状态,以及子程序结束,如判决块259和功能块261表示的;如果没有的话,则子程序选择P帧241的下一个DCT块,以便以同样的方式进行处理,直至所有的块被处理为止,如功能块263表示的。
2.B到B’帧的变换
通过图7显示了B帧到B’帧的变换,该变换利用子程序271,它在实施上类似于以上结合图6描述的子程序。具体地,B帧273通过编辑器确定要被割断的时间依赖性的方向,如参考数字275表示的;这个方向将取决于想要的帧处理。在某些情况下,对于将来帧的依赖性要被割断,以及B帧实质上被变换成B’帧(例如,对于只有一个时间依赖性方向的B帧)。在其它情况下,对于过去帧的依赖性以同样的方式被切除。最后,构建想要的处理,可能希望只分离一个B帧,在这种情况下,子程序271将被调用两次,第一,把B帧实际上变换成B’帧,以及第二,把B’帧变换成I帧。正如从图7看到的,子程序是相当直截了当的,它利用方块277-289和293,它们是与以上结合图6描述的功能块(247-259和263)相同的;然而,不像P帧到I帧的变换,不必把所有的参考帧变换成I帧的格式,因为B帧可能依赖于P帧或I帧。通过P到I帧的变换,功能块291被执行来更新帧头部信息,以及子程序271的产品是B’帧295,它至多只有一个时间依赖性方向。
3.I到P帧的变换
从I帧到P帧的变换可以在完成反向重放序列时或在执行速率匹配时被执行,后一种情况将在下面描述。在优选实施例中,预期对于I帧进行量化应当能够匹配于缓存器速率(由此防止缓存器下溢出和缓存器上溢出),以及帧变换不一定速率匹配。无论如何,帧变换也可以任选地被使用于帮助速率匹配。
在DCT域内I帧到P帧的变换遇到困难,因为当现有的参考帧已被编码在离散的8×8 DCT方块时很难搜索最佳适合于特定的DCT块。优选实施例通过直接把当前的块的DCT系数与参考帧的整个的离散的块进行匹配而避免这种困难。虽然这样不一定给出与现有的图象的最佳适配,但预期这个程序应当提供足够接近的适配减小数据速率到可接受的量。如果附加计算能力是可提供的,则其它的方法也可被使用来计算高精确的运动矢量。
如图8所示,I帧301通过第二子程序303被处理来产生P帧305。首先,从可提供的I帧中选择适当的锚定的帧,如功能块307表示的。在某些情况下存在类似于以上表示的递归问题的问题(与I到P和B到B’的变换相结合),但它是在图8所示的功能以外被处理的。例如,在反向重放序列中,其中或许一系列I帧被重新排序,然后被变换成P帧,这时,递归问题仅仅通过首先处理在时间上最后的P帧(如功能块302表示的)而被解决,即,以使得参考帧总是被选择为I帧。
编辑器把要被变换的I帧放置到第二缓存器(由参考数字309表示的每个处理块),以及对当前帧逐个块地进行处理,表示与参考帧的DCT块的紧密的匹配。如果结果的DCT能量小于该块的原先的DCT能量,则规定一个运动矢量,以及在块的相关的头部信息中表示它的存在,其余DCT系数通过从参考块中减去来自当前块的DCT系数而被确定。这个处理过程进行下去,直至所有的块被处理为止,此后,帧头部信息被更新,如方块301表示的,反映作为P帧305的这个帧的新的状态。上述的逐块的处理过程是由图8的数字313-319表示的。
4.代码转换
通过利用时间冗余度进行的压缩视频的运动压缩是指由相应的参考块x’从先前的或将来的画面预测当前的画面的每个8×8空间域块x,以及通过使用DCT算法编码结果的预测误差块e=x-x’。在某些画面(例如,B画面)中,可以从过去的或将来的参考块或二者估值这些块。见:Coding of Moving and Associated Audio(移动的和相关的音频的编码),Committee Draft of Standard ISO11172,ISO/MPEG90/176,December 1990;Video Codec for Audio Visual Services atpx64kbits/s(用于px64kbits/s音频视频业务的视频编码译码器),CCITT Recommendation H.261,1990;和D.Le Gall,MPEG:A VideoCompression Standard for Multimedia Applications(用于多媒体应用项的视频压缩标准),Commun.Of the ACM,Vol.34,NO.4,pp.47-58,April 1991。为了简单起见,下面的讨论将假定:只是过去的被使用(P画面),以及扩展是直截了当的。
最佳匹配的参考块x’可能没有对准当前画面的8×8块。通常,参考块将与至多四个相邻的空间域块交截,它们今后被表示为x1,x2,x3,和x4,它们一起形成一个16×16方块,其中x1相应于西北,x2相应于东北,x3相应于西南,和x4相应于东南。大写的、斜体字表示X被使用来指这些块的DCT代表。各个块x,x’,x1,x2,x3,和x4在图10上也分别用参考数字325,327,329,331,333,和335表示,以及用虚线337把它们与描述相关的处理步骤的方框图分开。
代码转换的目标是从给定的DCT X计算当前块的新的DCT X”以及DCT X1,...,X4。因为DCT可以仅仅通过把它们的系数相加X”=X’+X而被组合,剩余的主要问题是直接从X1,...,X4计算X’的问题。
参考块x’与x1的交截形成h×w的长方形(即,具有h行和w列),其中1≤h≤8以及1≤w≤8。这个事实表示,x’与x2,x3和x4的交截分别是h×(8-w),(8-h)×(8-w),(8-h)×(8-w)尺寸的长方形。
根据S.F.Chang and D.G.Messerschmitt,Manipulation andCompositing of MC-DCT Compressed Video(MC-DCT压缩视频的处理和组合),IEEE Journal on Selected Areas of Communications,Vol.13,No.1,pp.1-11,1994,和S.F.Chang and D.G.Messerschmitt,A New Approach to Decoding and CompositingMotion-Compensated DCT Based Images(译码和组合基于运动补偿的DCT的图象的新方法),Proc.ICASSP 1993,Minneapolis,April1993,很容易看到,x’可被表示为适当的窗口的和位移的版本的叠加,即
其中ci,j,(i=1,...,4,j=1,2)是零和一的稀疏的8×8矩阵,它们执行窗口和移位运算。Chang和Messerschmitt的工作,出处同上,提出使用对于DCT的矩阵乘法的分布特性。具体地,因为StS=I,上述的方程可被重新写为:
通过把S前乘这个方程的两边以及把St后乘这个方程的两边,可以得出:
其中Cij是cij的DCT。Chang和Messerschmitt建议预先计算对于每个可能的w和h的组合的固定的矩阵Cij和通过使用上述的方程直接在DCT域中计算X’。虽然大多数矩阵Cij不是稀疏的,但根据{Xi}的典型的稀疏性,以及由于参考块可能是对准一个方向,即或者w=8或者h=8,这表示以上的方程的右面只包含两项;或在两个方向w=h=8,在这种情况下,x’=x1,所以根本不需要计算,这样仍旧可以节省计算。
通过使用两个捷径,X’的计算甚至可以更有效地进行。首先,某些矩阵cij对于每个给定的w和h,互相相等。具体地,
其中Ih和Iw分别是尺寸为h×h和w×w的单位矩阵。同样地,
c31=c41=Lg-h
和 c22=c42=U8-w’
节省计算资源的第二捷径是,不是全部预先计算Cij,更有效的是把这些矩阵做成相当稀疏的矩阵。这种方案在美国专利No.5,708,732更全面地描述,它被分配给予本申请相同的权利,它在此整体地引用,以供参考。
使用以上提到的两个观察报告的最好方法为如下:
首先,预先计算有效地固定的矩阵,
JiΔUi(MA1A2A3)t i=1,2,...,8
和 KiΔLi(MA1A2A3)t i=1,2,...,8
这些矩阵是非常复杂的,所以,预先乘上Ki或Ji可以非常有效地被实施。接着,通过使用下式计算X’,
它可以从上述的第一方程组,或通过它的第二形式,容易地得出,
取决于对于给定的w和h这些表示式中哪个表示式需要更少的计算量。
虽然这个说明表示如何进行代码转换来产生运动补偿参考块X’,但对于P帧到I帧的变换和B帧到B’帧的变换的每个变换,必须执行进一步的处理(它是不同的)。具体地,P帧到I帧的变换的代码转换处理(见图6的功能块255)利用当前的DCT块与来自参考块之间的简单的加法,如图10的功能块263表示的。然而,对于B帧到B’帧的变换,当前帧的DCT X代表一个或两个其它帧的上的差别,所以,如果在执行代码转换时,确定DCT X只指向另一个帧,则把X加到X’是和P帧到I帧的变换完全相同地被处理。另一方面,如果确定DCT X代表在当前帧和两个其它帧平均值之间的差值,则新的DCT必须被计算,以便有不加权的(例如,全部,与一半相对比)对于无影响的参考帧的时间依赖性;所以,新的DCT X”通过把1/2 X’加到X和减去1/2X,而被计算,如图10的功能块373表示的。
参照图9和10,表示相应于当前画面的去量化的DCT 8×8块的代码转换,以便引入来自参考帧的信息(所以,消除对参考帧时间依赖性的需要)。图9给出表示优选的编辑器的配置的方框图,而图10给出在执行代码转换时使用的处理的方框图。
如以上结合图6(P帧到I帧的变换)和图7(B帧到B’帧的变换,即B前向帧或B后向帧)表示的,在每种情况下执行代码转换,以便消除对于另一个特定的参考帧的依赖性。例如,如果双向(B)帧被变换成只有后向依赖性的B’帧(使得它的依赖性类似于P帧),则执行图9表示的处理,以便消除对于将来帧的依赖性(但对于先前的、I帧或P帧的依赖性不必改变)。在以下的讨论中,假定要被割断的时间依赖性是后向的,虽然讨论同样地应用于割断前向的时间依赖性。
如图9所示,在处理当前帧的每个DCT块时,编辑器341的模块339从存储器343取得运动矢量h,w,而第二和第三模块345和347取得当前帧的DCT块和四个8×8 DCT块,X1,X2,X3,X4,它们是参考帧I或P帧的一部分,以及把它们传送通过去量化器348;如果参考帧是P帧,则参考帧必须被变换成I帧。对于参考帧是I帧,第四模块349使用h和w来取得所需要的J,K矩阵,由此预先计算一组固定的矩阵。一旦参考帧的适当的区域被定位,包括确定锚定的区域所必须的信息的四个8×8 DCT块就由用于实行反向运动补偿计算的处理单元351被变换成单个8×8 DCT块X’。这样确定的方块然后与当前帧的8×8 DCT块相组合(通过加法器)以便引入来自锚定的区域的单个DCT块之间的差值以及产生与参考帧无关的、新的DCT块。所述的编辑器的各种模块和单元优选地按照被存储在机器可读的媒体357上的指令被实施,诸如可被运行在建议足够的存储器和图象处理支持硬件的计算机工作站或特定的用途的图象编辑机的软件。指令以图10的方框图361所示的方式运行,以及以上述的方式执行处理功能363-373。
一旦所有的块被处理,就由编辑器341产生新的帧355。这个新的帧355被输出到量化器353作为变换的帧的一部分,以便产生已被补偿成去除时间依赖性的、新的DCT块。帧记录和输出模块356可以把修改的帧存储在缓存器358,用于时间重新排序,然后输出来自存储器343的原先的帧和来自缓存器358的变换的帧,在其中时间次序是根据已被提供给编辑器的用户命令362而想要的。
III.速率控制
MPEG应用项常常使用恒定的比特速率,诸如视频图象被存储在软盘的情况,信息以每秒1.5兆比特的恒定速率被读出。应当看到,每个I,P,B帧可以具有依赖于画面内容而变化的数据量[在编码时,每个GOP被格式化为包括规定每个这些类型帧的缓存器尺寸的信息,以及I,P,B缓存器可以具有可变的填充速率和可变的腾空速率]。而且,从先前讨论中回想起,P帧典型地包含一部分被包含在I帧中的数据(例如,三分之一)以及B帧典型地包含一部分被包含在P帧中的数据(例如,四分之一)。所以,应当看到,在压缩域中图象处理在不同的帧的类型之间变换到的程度,或多或少的数据可被***到图象序列内,这使得如果没有寻址的话,相关的缓存器被不正确地读出。
每个编码的帧包含表示数据流的缓存状态的参量。速率控制的目标是确保缓存需要是满足的。例如,在上述的判决应用项中,两个编码的输入图象序列,每个以预定的方式使用缓存器。速率控制的目标是速率调节靠近拼接点处的编码图象数据,导致从第一图象序列的使用法到第二图象序列的缓存使用法的适度的过渡。
在优选实施例中,速率控制是如结合图4表示的那样地被执行。更具体地,进行帧的量化,以便防止译码器缓存器下溢出,而用结尾的零填充特定的帧(例如,改变每个DCT块的运行长度编码的版本,以便使用更多的零)被利用作为解决上溢出的优选的方法。在严重的情况下,可以通过把P帧变换成I帧而执行帧变换,但最好使用其它方法来解决速率控制,包括量化,数据划分和比特填充方法。事实上,在过渡帧中细节可被加上或被降低,以便保留处理的平滑度以及避免缓存错误。
上述的优选的编辑器提供处理图象的时间次序的有效的方法,然后放置到靠近其它的帧,而不必完全解压图象帧。所以,优选的编辑器应当找到对于活动画面、视频的编辑领域和其中图象被使用或被传输的其它领域的很宽范围的应用项。
在描述本发明的几个示例性实施方案后,将会看到,对于本领域技术人员将很容易造成各种改变、修改和改进。这样的改变、修改、和改进虽然不是以上直接描述的,但无论如何,打算和意味属于本发明的精神和范围。因此,上述的讨论只打算是说明性的;本发明只由以下的权利要求和等价物限制和规定。
附录
以下的附录是作为本申请的一部分而被提供的论文,用来提供在实施这里描述的本发明的实施例时的进一步的细节。
附录A.Susie J.Wee and Bhaskaran Vasudev,Splicing MPEGVideo Streams In The Compressed Domain。
附录B.Susie J.Wee,Bhaskaran Vasudev and Sam Liu,Transcoding MPEG Video Streams In The Compressed Domain。
附录A
拼接压缩域中的MPEG视频信号
(Splicing MPEG Video Streams in the Compressed Domain)
Susie J.Wee and Bhaskaran Vasudev
Hewlett-Packard Laboratories
1501 Page Mill Road,MS 3U-4
Palo Alto,CA 94304
摘要:提出一种用于有效地拼接两个MPEG编码的视频数据流的算法。该算法只处理每个视频数据流中的、包含受到拼接影响的一部分以及它直接作用在这些帧的DCT系数和运动矢量。算法以非常低的计算复杂性达到良好的图象性能,以及引入速率控制用来防止缓存器下溢出和上溢出。如果有附加处理功率可供使用的话,则它可被用来进一步改进拼接的数据流质量。
引言
拼接是在视频编辑应用项中通常使用的技术。当拼接未压缩的视频时,解决办法是显而易见的:只要丢弃无用的帧和连接其余的数据。换句话说,对于未压缩的视频,拼接仅仅是剪切和粘贴操作。这种解决办法的简明性依赖于未压缩视频数据的排序和独立性。
现代视频压缩算法,诸如MPEG,使用预测方法来进行典型的视频序列固有的时间冗余度。这些方法达到高的压缩度,但在这样做时,它们在编码数据流中产生时间依赖性。这些依赖性使得许多先前认为简单的操作复杂化-拼接就是这样的一种操作。
在本文中,我们解释拼接两个MPEG编码的视频数据流的问题。我们开发一种压缩域拼接算法,它提供在计算复杂性与压缩效率之间的自然的折衷;这种算法可被定做来满足特定的***的需要。我们找到的、文献中发表的、关于这个课题的唯一的先前的工作是由Meng和Cheng[1]的视频编辑***部分。本文从描述拼接MPEG编码视频数据流的问题开始。然后给出建议的算法。讨论帧变换和速率控制,拼接算法以软件来实施,并给出实验结果。
拼接算法
拼接操作的目标是形成视频数据流,包含一个视频序列的头Nhead个帧和另一个视频序列的最后的Ntail帧。一种朴实的拼接解决办法是完全解压两个视频数据流,在象素域中剪切和粘贴解压的视频帧,以及重新压缩该结果。对于这个方法,拼接的视频中的每个帧必须全部被重新编码。这种方法由于重新编码具有许多缺点,包括高的计算需求,高的存储器需要,和低的性能。
在建议的算法中,通过只处理受到拼接影响的帧,计算需求被减小。例如,在大多数情况下,只有需要被处理的或重新编码的帧是在GOP中的、受到头部和结尾剪切点影响的那些帧,至多,有头部数据流中一个这样的GOP和结尾数据流中的一个GOP。而且,数据不需要被解压到它的象素域代表物;通过只部分地解压数据流到它的运动矢量和稀疏DCT代表物,可以得到改进的性能。
拼接算法解压三个部分:形成包含来自一个序列的一系列帧的头部数据流,形成包含来自另一个序列的一系列帧的结尾数据流,和匹配这些数据流,以便形成MPEG遵从的数据流。头部和结尾数据流的拼接剪切点可以出现在IPB视频序列中的任何一点。拼接MPEG编码的视频数据流的一个困难在于,需要译码拼接序列的一个帧的视频数据可能依赖于来自不包括在拼接序列中的数据。
在提出的算法中,这个时间依赖性问题通过变换适当的帧的预测模型而被解决。帧变换对于拼接时包括的帧,保持原先的MPEG数据流的编码次序;这简化了拼接算法的计算需求。算法造成MPEG遵从的数据流带有可变尺寸的GOP,利用了GOP头部没有规定GOP中的帧的数目或它的结果这一事实,而这些全都是由编码数据流中画面数据的排序和类型规定的。算法使用速率控制,以便确保结果的拼接的数据流满足特定的缓存器限制。提出的拼接算法的步骤为如下所述。
1.形成头部数据流。当对于头部数据的剪切是紧接在I或P帧以后出现时,这是最简单的情形。当这种情形出现时,所有的相关的视频数据被包含在数据流的一个相邻的部分中。数据流的不相关的部分可以被丢弃,以及其余的相关的部分不需要被处理。当剪切紧接在B帧以后出现时,需要某些额外的处理,因为一个或多个P帧预测是基于不被包括在最后的拼接视频序列中的锚定的帧的。在这种情况下,数据流的领先的部分被提取出直到拼接时被包括的最后的I或P帧,然后其余的B帧被变换成Bfor帧,如下面在帧变换一节中描述的。
2.形成结尾数据流。当剪切是紧接在I帧以前出现时,这是最简单的情形。当这种情形出现时,这个帧以前的视频数据可以被丢弃,以及其余的部分不需要被处理。当剪切是紧接在P帧以前出现时,P帧必须被变换成I帧,以及其余的数据保持不动。当剪切是紧接在B帧以前出现时,需要额外的处理,因为一个锚定的帧没有被包括在拼接序列中。在这种情况下,如果第一个非B帧是P帧的话,它必须被变换成I帧。然后,每个第一个接连的B帧必须被变换成Bback帧,如下面在帧变换一节中描述的。
3.匹配头部和结尾数据流。头部和结尾数据流的IPB结构和缓存器参量决定匹配操作的复杂性。该步骤需要正确地组合两个数据流,然后处理靠近拼接点的帧,以便确保满足缓存器限制条件。如果对于头部数据的剪切是紧接在I或P帧后面出现,则组合操作只需要连接两个数据流;否则,对于头部数据的剪切是紧接在B帧后面出现,在这种情况下,组合操作首先放置头部数据流的所有数据,直到最后的接连的B帧,然后放置来自头部序列的最后的接连的B帧,以及最后放置来自结尾序列的其余的数据。然后,围绕拼接点的画面的缓存器参量被适当地匹配。在最简单的情况下,简单的重新量化是足够的。然而,在更困难的情况下,也需要帧变换,以便防止译码器缓存器下溢出。这个处理过程将在速率控制一节再讨论。
帧变换
拼接算法可能需要在I,P和B预测模式之间的帧变换。P或B帧到I帧的变换是相当直截了当的,然而,在任何其它组的预测模式之间的帧变换是更困难的。精确的算法需要这些解压的视频的运动估值-这种处理占拼接算法的计算需求的主要部分。在本文中,我们使用适当的算法,它大大地减小对于变换所需要的计算量。如果有附加处理功率可供使用的话,则附加处理可被用来进一步改进拼接的质量。
提出的拼接算法的头两个步骤可以需要B到Bfor,P到I,和B到Bback帧变换;以及在下一节,将表明第三步骤可以需要I到P帧变换。下面描述这些变换的每个变换。在这些变换中,只把数据部分地译码成它的DCT和运动矢量(DCT+MV域)代表物。然后,这个数据被处理成它的新的DCT+MV或DCT域代表物,结果被记录到MPEG数据流。帧变换常常需要逆运动补偿运算。当需要这种运算时,有效的DCT域算法被使用来直接从锚定的帧的帧内的DCT系数来计算运动补偿预测的新的DCT系数[2]。
P到I的帧变换。为了译码P帧,必须首先译码GOP中先前的I和P帧。同样地,当把P帧变换到I帧时,在GOP中的先前的I和P帧首先被部分地译码成DCT域代表物。然后,对于每个P帧,使用DCT域逆运动补偿算法来计算运动补偿预测的DCT系数,然后把它加到部分译码的残余DCT系数,以便形成帧内的DCT系数代表物。最后,帧内的DCT系数被重新编码成MPEG数据流。
I到P的帧变换。I到P的帧变换的困难在于,对于前向预测,没有运动矢量可供使用。因为运动矢量估值的高的计算化费,帧的每个宏块初始地以帧内模式或以前向预测模式下以(0,0)的运动矢量被编码。如果有附加计算功率可供使用的话,则使用快速DCT域运动估值算法,以便找到较好的运动矢量来改进每个块的运动补偿预测。
B到Bfor的帧变换。在P帧中,每个宏块可以以帧内模式或用前向预测来编码。在B帧中,每个宏块可以以帧内模式或用前向、后向、或双向预测来编码。我们规定Bfor帧为其中宏块可以用前向预测或以帧内模式进行编码的帧。B到Bfor的帧变换需要B帧的每个宏块被变换到只使用前向预测的可允许的宏块。这样,如果B宏块用前向预测或以帧内模式进行编码,则它可被留下,但如果宏块用后向、或双向预测来编码,则它必须被变换成帧内的或前向预测宏块。在我们的变换中,双向宏块通过使用给定的前向运动矢量被变换成前向预测宏块。新的预测被计算,以及残余的DCT系数被适当地调节。如果宏块使用后向预测,则它或者以帧内模式或者以前向预测以(0,0)的运动矢量被编码。正如I到P的帧变换那样,如果有附加计算功率可供使用的话,则使用快速DCT域运动估值算法,以便改进运动矢量。
B到Bback的帧变换。Bback帧被规定为其中宏块可以用后向预测或以帧内模式进行编码的帧-这实际上是Bfor帧的二重性,但用于后向预测。这样,B到Bback的变换仅仅是B到Bfor的变换的二重性,在其中前向和后向情形被颠倒。
速率控制
在MPEG中,每个画面被编码成可变长度数据段。然而,显示的序列的帧的速率是恒定的。达到MPEG数据流的恒定比特速率(CBR)传输,需要在编码器和译码器中的缓存器。在CBR传输时,译码器缓存器以恒定的速率被填充,以及I,P,或B画面数据在相应于序列的帧速率的常规的时间间隔内被腾空。如果画面包含大量数据,则缓存器腾空很大的量。这样,包含许多紧密地接连的大的帧的数据流会造成缓存器下溢出,即CBR信道中,在要被显示的时间不一定接收到画面数据。
MPEG语法需要在序列头部中规定的缓存器的尺寸,这样它在数据流开始时一次地被规定以及不能改变。MPEG也需要在每个画面头部中规定的vbv_delay参量;vbv_delay参量表示在画面开始码被译码以前,画面开始码必须被存储在缓存器中的时间长度[3]。
在提出的拼接算法中,许多帧在各种时间模式之间被变换。I帧典型地比起P或B帧需要更多的数据;这样,如果产生许多I帧,则结果的数据流会导致缓存器下溢出。拼接算法必须引入速率控制的某种形式,以便防止缓存器下溢出和上溢出。
问题变成为匹配头部和结尾数据流的缓存器参量的问题。更精确地,靠近拼接点的头部和结尾帧应当被处理,以使得其余的结尾帧的vbv_delay参量保持它们的原先的数值。这样,如果我们假定,两个原先的数据流满足缓存器限制条件,则通过正确地匹配头部和结尾数据流,我们确保拼接的数据流也满足缓存器限制条件。
Meng和Chang通过以低的数据速率***合成的淡入的画面而解决速率控制问题[1]。他们提到通过使用数据划分来应用速率修改算法的可能性,但没有进一步发展它。
在本算法中,我们用两个方法之一达到速率控制。如果围绕拼接点的画面的缓存器占用率是相同的,则我们重新靠近拼接点的帧中的量化DCT系数,以便得出适当的匹配。如果结果的数据流满足缓存器限制条件,以及它具有可接受的视频质量,则拼接操作是完全的。如果缓存器占用率非常不同,或如果重新量化的数据流仍旧造成缓存器下溢出,则降低比特速率需要更大量的运算。在这种情况下,在头部和结尾数据流中靠近拼接点的I帧被变换成P帧。具体地,在头部序列中最后的I帧和在结尾序列中的第二I帧被变换成P帧。另外,重新量化被使用来精细调整缓存器匹配问题。应当指出,这些帧变换不改变画面数据的编码次序。
实验结果
提出的算法被使用来拼接MPEG编码的足球和拉拉队视频数据流。两个数据流具有在30fps中的352×240象素的分辨率,它们以1152目标数据速率被编码。图1的上部显示数据流的PSNR和缓存器占用率。数据流具有15个帧的GOP:1个I帧,4个P帧和10个B帧。拼接数据流在足球与拉拉队序列之间进行每20帧的切换。
如果数据流被拼接而不用速率控制,则缓存器下溢出,如在图1的右下图的较低的轨迹所示。当加上带有重新量化的速率控制时,缓存器下溢出问题被消除。结果的PSNR显示于图的左下部分。实线代表原先的编码帧的PSNR,以及点线代表拼接点数据流的PSNR。
致谢
作者感谢Sam Liu提供在这些仿真中使用的MPEG分析软件。
参考文献
[1] J.Meng and S.F.Chang,”Buffer control techniquesfor compressed-domain video editing.”In Proceedings of the IEEEInternational Symposium on Circuit and Systems,(Atlanta,GA),May 1996。
[2] N.Merhav and B.Vasudev,“Fast inverse motioncompensation algorithms for MPEG-2 and for partial DCTinformation.”HP Laboratories Technical Report,HPL-96-53,April 1994。
[3] MPEG-2 International Standard,Video RecommendationITU-T H.262,ISO/IEC 13818-2,January 1995。
附录B
压缩域中的MPEG视频数据流
(MPEG Video Streams In The Compressed Domain)
Susie J.Wee,Bhaskaran Vasudev and Sam Liu,TranscodingHewlett-Packard Laboratories
关键词:MPEG,代码转换,视频压缩,视频处理,压缩域处理,拼接,反向重放。
摘要:压缩数字视频对于视频贮存和通信正在变得很流行。常常希望对于压缩视频数据流执行各种视频处理任务;然而,当操作施加到压缩视频时,一度被认为简单的操作(诸如变换和下缩放)变成为不直截了当的。完全解压视频到象素域、进行处理和重新压缩整个视频序列的朴实的解决办法是不经济的和不实际的。
我们正在研究把压缩视频数据从一个遵从标准的数据流代码转换到另一个遵从标准的数据流的问题。目标是开发视频代码转换算法,达到具有计算效率的高的性能。我们开发了多个达到这个目标的压缩域算法。我们完成了视频代码转换器的软件版本,能够在多种模式之间代码转换MPEG遵从的数据流。
1.引言
视频压缩算法被使用来压缩引言各种应用项的数字视频,包括互联网上的视频传送,高级电视广播,以及视频贮存和编辑。现代压缩算法的性能,诸如MPEG,是相当印象深刻的,-未处理的视频数据速率常常可被减小15-80倍而在重新构建的视频质量上没有显著的损失。然而,这些压缩算法的使用常常使得其它的处理任务相当困难。例如,许多一度被认为简单的操作,诸如变换和下缩放,在施加到压缩视频数据流时,变成为复杂得多。
代码转换的目标是把一个标准遵从的压缩视频数据流变换成另一个标准遵从的压缩视频数据流,具有更好地适用于特定的应用项的性质。这对于许多应用项是有用的。例如,在互联网上发送视频的视频服务器困难被严格的带宽要求限制。在这种情况下,高质量压缩比特流可以需要在发送以前被代码转换到较低速率的压缩比特流;这可以通过降低视频的空间或时间分辨率或通过重新量化MPEG数据,而被达到。另一个应用项可能需要MPEG视频数据流被代码转换到易于实行视频编辑功能的数据流,诸如拼接或快进和反向重放;这可以涉及去除编码数据流中的时间依赖性。最后,在视频通信***中,发送的视频数据流可能受到严厉的信道条件,导致数据丢失;在这时,产生对信道错误更鲁棒(robust)的遵从标准的视频数据流,可能是有用的。
在本文中,我们给出一系列压缩域图象和视频代码转换算法,它们被设计达到具有计算效率的高性能的目标。我们集中在视频压缩算法,依赖于块离散余弦变换(DCT)和运动补偿预测。这可应用于多种支配的图象和视频编码标准,包括JPEG,MPEG-1,MPEG-2,H.261,和H.263。在本文的其余部分,我们将集中在MPEG;然而,许多的这些结果也应用到其它标准。
本文首先概述与本工作有关的MPEG视频压缩算法的某些方面。然后规定代码转换问题以及讨论压缩域代码转换的重要性。我们提供在本项目早期开发的某些图象(帧内)代码转换算法的概要说明。然后,我们描述当前正在开发的视频(帧内)代码转换算法。
2 MPEG视频压缩
我们的代码转换算法被设计来利用MPEG视频压缩标准的各种特性。MPEG视频压缩标准的详细描述可以在[VK95,MPFL97]中找到。在这一节,我们将概略地讨论与本工作有关的标准的某些方面。
MPEG编码在单位的分级结构中的视频,称为序列,画面组(GOP),画面,分片,和宏块。宏块以左到右、上到下方式进行扫描,以及这些宏块的系列形成一个分片。在一帧的所有分片包括画面,相邻的画面形成GOP,以及所有的GOP形成整个序列。MPEG语法允许GOP包含任何数目的帧,但典型地大小从9到15帧。每个GOP通过编码帧内模式的第一帧而刷新时间预测。GOP的其余帧可以用帧内或帧间(预测)编码技术进行编码。
MPEG算法允许每个帧以三种模式之一进行编码:帧内(I),前向预测(P),和双向预测(B)。典型的IPB图案以显示次序是:
I帧是与其它帧独立地被编码。P帧依赖于基于先前的I或P帧的预测。B帧依赖于基于先前的和以后的I或P帧的预测。注意到,每个B帧依赖于来自将来的帧的数据,即将来的帧必须在当前的B帧可被编(译)码以前被编(译)码。为此,编码次序与显示次序不同。对于以上显示的序列的编码次序是:
I0P3B1B2P6B4B5P9B7B8I0B10B11P3B1B2P6B4B5P9B7B8I0B10B11
(2)
MPEG需要编码视频数据以编码次序被放置在数据流中。
GOP总是以I帧开始。典型地,它包括跟随的(显示次序)P和B帧,它们在下一个I帧以前出现,虽然语法也允许GOP包含多个I帧。上述的序列包含两个完整的GOP加上一个I帧。GOP头部没有规定GOP中I,P,或B帧的数目,它也没有规定GOP的结构-这些全部由数据流中数据的次序确定。这样,没有限制GOP的大小和结构的规则,虽然应当细心确保满足缓存器限制条件。
我们发现定义一种被称为一个组的子结构是有用的。一个组是包含两个接连的I或P锚定的帧和所有的B帧的单元,其中B帧的预测是基于这两个锚定帧。组的重要性在于,它代表对于B帧的依赖性的最小的单元。
MPEG使用块运动补偿的预测,以便减小视频固有的时间冗余度。在块运动补偿预测中,当前帧被划分成被称为宏块的16×16象素单元。每个宏块与先前的编码的帧的多个16×16块进行比较。单个运动矢量(MV)被使用来代表基于最佳匹配的这个块。这个块被用作为当前块的预测,以及预测中的误差,被称为残余,被编码成数据流。
视频序列的帧可被编码为I,P,或B帧。在I帧中,每个宏块必须以帧内模式被编码,即,不使用预测。在P帧中,每个宏块可以用前向预测或以帧内模式被编码。在B帧中,每个宏块可以用前向、后向、或双向预测或以帧内模式被编码。对于每个前向或后向预测的宏块规定一个MV,而对于每个双向预测的宏块规定两个MV。这样,每个P帧具有前向运动矢量区和一个锚定的帧,而每个B帧具有前向和后向运动矢量区和两个锚定的帧。
MPEG使用DCT变换编码方法来编码帧内和剩余宏块。四个8×8块DCT被使用来编码每个宏块,以及结果的DCT系数被量化。量化通常导致稀疏的数据代表物;即,量化的DCT系数的大多数幅度等于零。这样,只有非零的系数的位置和幅度被编码到数据流中。
3MPEG代码转换:问题阐述
MPEG代码转换的目标是处理一个MPEG遵从的视频数据流成为另一个MPEG遵从的视频数据流,具有较好地适合于特定的应用项的性质。代码转换不同于编码和译码处理之处在于,代码转换器的输入和输出是MPEG视频数据流。代码转换问题的朴实解决办法,如图1的上部所示,包括以下步骤:首先,MPEG编码的视频数据流被完全地解压到它的象素域代表物;然后这个象素域视频通过适当的操作被处理;以及最后处理的视频被重新压缩成新的MPEG视频数据流。这样的解决办法是计算上昂贵的以及具有大的存储器需求。另外,编码的视频的质量由于每次重新编码循环会恶化。
更有效的代码转换解决办法,如图1的下部所示,是只部分地解压视频数据流和直接对压缩域数据进行处理。对于某些操作,通过只处理受到代码转换操作影响的部分的视频数据流。在本工作中,视频数据流的受影响的部分被部分地解压成运动矢量(MV)和离散余弦变换(DCT)代表物。通过消除进一步解压MV和DCT代表物到空间域,处理空间域数据,和把结果重新压缩成它的新的MV/DCT,计算需求被减小。对于许多压缩域代码转换操作,通过利用量化的DCT系数典型地具有的稀疏性,得到附加的增益。
4 帧内代码转换算法
用帧内方法编码的图象和视频帧由块DCT系数组代表。当使用帧内DCT编码时,原先的视频帧被划分成8×8块,每个块用8×8 DCT独立地被编码。这强加人工块结构,它使得被认为在象素域中直截了当的多种空间处理操作复杂化,诸如转换,下缩放,和滤波。多个有效的精确和近似压缩域算法已被开发用于代码转换DCT压缩图象个视频帧。这些方法中的几种方法将在下面概略地描述,对于更详细的说明,读者可参考文献[MV96,MV94,KM95,SSV96,Mer96,NV95]。
8×8块DCT的严格的结构使得简单的操作(如转换)很困难。困难性在于,处理的图象的DCT块与原先的图象的DCT块不一致。例如,考虑16×16的象素块,它是由四个8×8块DCT变换的。如果希望计算任意的8×8的象素子块的DCT,则必须首先计算四个逆DCT,然后提取适当的子块,最后执行前向DCT运算。在[MV96]中开发的逆运动补偿直接对于DCT域数据进行这个运算。这个算法可被扩展到全局转换运算,因为全局转换是逆运动补偿的特例,其中所有的运动矢量解压相同的数值。通过利用这个事实,可以执行进一步的最佳化,以便提高代码转换操作的效率。
快速DCT域下缩放算法已被开发用于整数子采样因子[MV96]。当下缩放时,下缩放的图象的一个8×8 DCT块从原先的图象的多个8×8 DCT块确定。在这些算法中,当下缩放N×N因子时,下缩放图象的每个象素包含原先的图象的相应的N×N象素的平均值。有效的算法也被开发用于以DCT域滤波图象[KM95]。该方法可被使用来把二维对称的可分开的滤波器加到DCT编码的图象。另外,上述的代码转换算法的近似的、无乘法的版本也被开发[Mer96,NV95]。
5帧内代码转换算法
用帧内编码技术编码的视频帧以运动矢量和剩余DCT系数代表。这些帧基于来自一个或多个先前编码的帧的预测被编码;这样,正确地译码一个帧首先需要译码一个或多个帧。在帧之间的这种时间依赖性使得多种空间和时间处理技术大大地复杂化,诸如,转换,下缩放和拼接。在本节中,我们描述我们为MPEG视频数据流的时间模式变换,拼接,和反向重放而开发的帧内代码转换算法。
5.1时间模式变换
在任何的时间模式之间代码转换的能力对于压缩域视频处理加上很大的灵活性和能力。另外,它提供了折衷参量的方法,以便得出各种速率/鲁棒性模型。例如,包含所有的I帧的MPEG序列,虽然从压缩的观点看来最不有效,是对于视频通信***的信道有害分量最鲁棒的。另外,I帧MPEG视频数据流最易于实行许多视频编辑操作,诸如拼接,下缩放和反向重放。最后,一旦I帧代表物是可提供的,就可把帧内代码转换算法应用于序列的每个帧,以便得到对整个序列相同的结果。
我们概略地描述对于把包含I,P和B帧的MPEG视频数据流代码转换到只包含I帧的MPEG视频数据流所需要的步骤。在任何的时间模式组之间的代码转换的更一般的问题是更困难的任务,目前还在研究中。
把IPB MPEG视频数据流代码转换到全部I帧MPEG视频数据流需要四个步骤:
1.计算运动补偿预测的DCT系数。这可以通过使用第4节描述的压缩域逆运动补偿程序从先前的编码帧的帧内系数被计算。
2.形成每个帧的帧内DCT代表物。这个步骤只涉及把预测的DCT系数加到剩余DCT系数。
3.重新量化帧内DCT系数。这个步骤必须执行,以确保满足新的数据流的缓存器限制条件。重新量化可被用来控制新的数据流的速率。
4.重新排序编码数据和更新相关的头部信息。如果B帧被使用,则IPB MPEG数据流的编码次序将不同于只有I的MPEG数据流的编码次序。这样,每个帧的编码的数据必须被适当地重排。另外,头部数据的适当的参量必须被更新。
5.2拼接
拼接操作的目标是形成包含一个视频序列的头N个帧和另一个视频序列的最后N个帧。对于未编码的视频,解决办法是明显的:只丢弃不用的帧和连接其余的数据。两个性质使得这种解决办法显而易见:(1)代表每个帧所需要的数据是自包含的,即,它是与其它的帧无关的数据;以及(2)未编码的视频数据具有原先的排序的想要的特性;即,视频数据的次序相应于视频帧的显示次序。MPEG编码的视频数据不必要保持这些时间依赖性或原先的排序的性质(虽然可以以压缩效率为代价强迫做到这一点)。这使得拼接两个MPEG编码数据的任务复杂化。
我们开发直接在压缩域中拼接两个数据流的灵活的算法。该算法允许在计算复杂性与压缩效率之间的自然的折衷,这样,它可以对于特定的***的需求被定做。提出的算法处理多种属性。最小数目的帧被译码和处理,这样导致低的计算需求,而同时保留压缩效率。另外,头部和结尾数据流可被分开地处理,以及最后的拼接数据流是两个数据流的简单的匹配。最后,编码的视频数据的次序保持不变。
朴实拼接解决办法是完全地解压视频,拼接译码的视频帧。以及重新压缩该结果。对于这种方法,拼接的视频序列中的每个帧必须被重新压缩。这种解压有多个缺点,包括高的计算需求,高的存储器需求和低的性能(多个重新编码循环会恶化视频数据)。
通过只处理受到拼接影响的帧以及只译码对于该处理所需要的帧,可以减小计算需求。具体地,需要被重新编码的帧仅仅是组中的、受到头部和结尾剪切点影响的那些帧;至多,在头部数据流有一个这样的组和在结尾数据流中一个组。而且,需要被译码的唯一的附加帧是两个GOP中的、受到拼接影响的I和P帧。
提出的算法导致MPEG遵从的数据流带有可变尺寸的GOP。这利用了GOP头部不规定GOP中帧的数目或它的结构的事实;而是这些全由编码数据流中的数据的次序规定。
我们在下面概略地描述拼接操作的每个步骤。进一步的讨论被包括在[WV97]中。
1.形成头部数据流。当对于头部数据的剪切是紧接在I或P帧以后出现时,这是最简单的情形。当这种情形出现时,所有的相关的视频数据被包含在数据流的一个部分中。数据流的不相关的部分可以被丢弃,以及其余的相关的部分不需要被处理。当剪切紧接在B帧以后出现时,需要某些额外的处理,因为一个或多个P帧预测是基于不被包括在最后的拼接视频序列中的锚定的帧的。在这种情况下,数据流的领先的部分被提取出直到拼接时被包括的最后的I或P帧,然后其余的B帧被变换成Bfor帧,它具有只依赖于序列中的先前的帧的预测。
2.形成结尾数据流。当剪切是紧接在I帧以前出现时,这是最简单的情形。当这种情形出现时,这个帧以前的视频数据可以被丢弃,以及其余的部分不需要被处理。当剪切是紧接在P帧以前出现时,P帧必须被变换成I帧,以及其余的数据保持不动。当剪切是紧接在B帧以前出现时,需要额外的处理,因为一个锚定的帧没有被包括在拼接序列中。在这种情况下,如果第一个非B帧是P帧的话,它必须被变换成I帧。然后,每个第一个接连的B帧必须被变换成Bback帧,它具有只依赖于序列中的以后的帧的预测。
3.匹配头部和结尾数据流。头部和结尾数据流的IPB结构和缓存器参量决定匹配操作的复杂性。该步骤需要正确地组合两个数据流,然后处理靠近拼接点的帧,以便确保满足缓存器限制条件。如果对于头部数据的剪切是紧接在I或P帧后面出现,则组合操作只需要连接两个数据流;否则,对于头部数据的剪切是紧接在B帧后面出现,在这种情况下,组合操作首先放置头部数据流的所有数据,直到最后的接连的B帧,然后放置来自头部序列的最后的接连的B帧,以及最后放置来自结尾序列的其余的数据。然后,围绕拼接点的画面的缓存器参量被适当地匹配。在最简单的情况下,将进行简单的重新量化,然而,在更困难的情况下,也需要帧变换,以便防止译码器缓存器下溢出。
头两个步骤可能需要在I,P和B预测模式之间变换帧。把PB帧变换到I帧和把B帧变换到Bfor或Bback是直截了当的,然而,在之间的变换是更复杂的。精确的算法涉及对于译码的视频进行运动估值-这个处理可以支配算法的计算需求。我们目前正在开发能大大地减小对于这个变换所需要的计算量的近似算法。
5.3反向重放
反向重放代码转换的目标是产生新的MPEG数据流,当它被译码时,显示与原先的MPEG数据流相反的次序的视频帧。对于来编码的视频,解决办法是简单的:以相反的次序重新排序视频帧数据。这种解决办法的简单性依赖于两个性质:每个视频帧的数据是自包含的以及它是与数据流中的位置无关的。这些性质对于MPEG编码的视频数据典型地不保持正确。
反向重放代码转换是困难的,因为MPEG压缩对于帧的次序的改变是不恒定的,例如,颠倒输入帧的次序将不仅仅颠倒输出MPEG数据流的次序。而且,颠倒输入帧的次序不导致“反向的”运动矢量区。然而,如果仔细地进行代码转换,则包含在原先的MPEG视频数据流中的许多运动矢量信息可被使用来节省大量的计算量。
我们开发了直接作用在压缩域数据上的反向重放代码转换算法。提出的算法是简单的,以及用低的计算和存储器需求达到高的性能。这个算法仅仅译码来自原先的MPEG数据流的以下的数据:I帧必须部分地被解压到它们的DCT代表物,以及P帧必须部分地被解压到它们的MV/DCT代表物,而对于B帧,只有前向和后向运动矢量区需要被译码。
提出的反向代码转换算法具有以下的步骤:
1.P帧到I帧的变换。通过使用第4节中描述的压缩域逆运动补偿算法可以对于DCT系数直接实施这个操作。
2.交换在每个B帧中使用的前向和后向运动矢量区。这个步骤利用B帧的预测处理的对称性。在反向的数据流中,B帧将具有相同的两个锚定的帧,但是以相反的方向。这样,前向预测区可以只与后向预测区交换,导致很大的计算节省。注意到,只有运动矢量区需要被译码用于B帧。
3.重新量化DCT系数。这个步骤必须被执行来确保满足新的数据流的缓存器限制条件。重新量化可被使用来控制新的数据流的速率。
4.正确地重新排序帧数据和更新相关的头部信息。如果没有B帧被使用,则重新次序处理是相当直截了当的。然而,当B帧被使用时,必须仔细地正确地重新排序来自原先的编码次序的数据,以便颠倒编码次序。另外,必须更新来自头部数据的适当的参量。
我们已开发非常简单的用于反向重放代码转换的算法。结果的MPEG视频数据流因为由变换P帧到I帧造成的额外的数据,而略大于原先的MPEG数据流。然而,由于多个编码增益来自压缩B帧,数据速率的增加是中等的。如果计算功率是可提供的,则压缩可以通过把新的I帧变换到P帧而被恢复。一个方法是执行全部运动估值,以便得到新的前向运动矢量区;然而,这是计算上昂贵的操作。我们当前正在开发近似算法,它通过利用被包含在原先的MPEG数据流中的运动矢量信息而可以大大地减小这些计算化费。
6最后附注
我们研究了在压缩域上代码转换MPEG视频数据流的问题。在这个项目的较早阶段,开发了有效的帧内(图象)代码转换算法,用于逆运动补偿,转换,下缩放,和滤波。近年来,我们开发了帧内(视频)代码转换算法,用于时间模式变换到I帧,拼接,和反向重放。
通过首先把时间模式变换到I帧,然后把适当的帧内代码转换方法施加到I帧上,可以得出用于转换,下缩放,和滤波的基本视频代码转换算法。然而,到I帧的变换导致比特速率的增加。当前的工作涉及开发真正的帧内代码转换解决办法,它达到高的性能,而同时保留压缩效率。
[KM95] R.Kresch and Merhav,Fast DCT domain filtering usingyhe DCT and the DST.HP Laboratories Technical Report,HPL-95-140,December 1995。
[Mer96] N.Merhav.Multiplication-free approximatealgorithms for compressed domain linear operations on images.HP Laboratories Technical Report,HPL-96-111,July 1996。
[MPFL97] Joan L.Mitchell,W.B.Pennebaker,C.E.Fogg,andD.J.LeGall.MPEG Video Compression Standard.Digital MultimediaStandards Series.Chapman and Hall,1997。
[MV94] N.Merhav and B.Vasudev.A transform domain approachto spatial domain image downscaling.HP Laboratories TechnicalReport,HPL-94-116,December 1994。
[MV96] N.Merhav and B.Vasudev.Fast inverse motioncompensation algorithms for MPEG-2 and for partial DCTinformation.HP Laboratories Technical Report,HPL-96-53,April1994。
[NV95] B.K.Natarajan and B.Vasudev.A fast approximatealgorithm for scaling down digital images in the DCT domain.InProceedings of the IEEE International Conference on ImagesProceeding,Washington,D.C.,October 1995。
[SSV96] B.Shen,I.K.Sethi and B.Vasudev.Digital videoblue screen editing in compressed domain.In Proceedings of theISET/SPIE Visual Communications and Image processing Conference,San Jose,CA,February 1996。
[VK95] B.Vasudev and K.Konstantinides.Image and VideoCompression Standards:algorithm and Architectures.KluwerAcademic Publishers,1995。
[WV97] S.J.Wee and B.Vasudev.Splicing MPEG Video StreamsIn The Compressed Domain.In Proceedings of the IEEEInternational Conference on Multimedia Signal Processing.Princeton,NJ,June 1997。