Telecine 和 Inverse Telecine

最近总是琢磨着要往技术博客上写点东西,正好最近在做Inverse Telecine,就现学现卖,写点心得。

Telecine这个概念是在标准视频设备中看电影而引入的,这个单词为电视(Television)电影(Cinema)缩写而成。Telecine的简写为TK,因为TC已经用来表示Time Code了。

传统的电影的帧率为24fps,也叫做FLM24,而电视的帧率为25fps(PAL)或者30fps(NTSC),如果简单地在电视设备上直接播放电影的话,画面就会出现抖动,为了避免在这种现象,就需要在播放过程中适当地加入一些帧(或者场),这个过程就叫Telecine。从24fps转到30fps,正好是4->5的转换,也就是说,每4场会增加一场,这就是所谓的3:2 Pull-Down(有人把Pulldown翻译成“下拉”,不过我总觉得别扭)。如果原始序列为T0B0 T1B1 T2B2 T3B3, 做了3:2 Pulldown的序列为: T0B0 T0B1 T1B2 T2B2 T3B3。

还有种FLM30,这种电影在拍摄时就是按30fps采样的,在NTSC电视上播放时不需要增加帧,而只简单的将帧转换成场进行播放即可,这个过程就是2:2 Pulldown。

Inverse Telecine就是Telecine的逆过程,为什么要做Inverse Telecine呢?这可能又是个历史原因:目前的很多NTSC的流是从FLM24的源通过3:2 Pulldown转换得来的,用于电视播放。但现在的电视不像以前的电视,除了Interlace(隔行)模式外有Progressive(逐行)模式,也就是说,需要做Deinterlacing(去隔行)。通常的去隔行算法都是考虑正常的TBTB输入的,如果出现了上面所说的T0B0T0B1这样的输入,必然消弱去隔行算法的效果,于是Inverse Telecine就出现了。

因而Inverse Telecine就包含两个部分的内容:Telecine的探测和帧重组。

先说Telecine的探测,对于3:2 Pulldown,如果我们把相隔两场的差别做一个统计,应该呈现出(低高高高高 低高高高高)这样的特性,也就是一个低差别后跟着4个高差别。

对于2:2 Pulldown,上面的算法就失灵了,但由于组成一帧的两场总是来自于同一时间,那么相隔的两场的差总是成成对相似的统计特性,根据这样的统计特性,可以判断当前帧是否为2:2 Pulldown。

探测到当前视频序列属于哪种Pulldown之后,进行帧重组就很简单了:如果是2:2 Pulldown,什么都不用做,按正确的帧输出即可,如果为3:2 Pulldown,需要丢掉重复的场,同时把时间顺序颠倒了的场重新排列。

posted @ 2008-09-03 20:56  老猴的技术博客  阅读(3071)  评论(0)    收藏  举报