Chinaunix首页 | 论坛 | 博客
  • 博客访问: 465927
  • 博文数量: 150
  • 博客积分: 2706
  • 博客等级: 少校
  • 技术积分: 1200
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-09 11:41
文章分类

全部博文(150)

文章存档

2012年(7)

2011年(6)

2010年(68)

2009年(69)

我的朋友

分类: IT业界

2012-05-16 23:55:50

个我们经常被问到的问题是:“DVD机为什么就不能从碟片上取出逐行帧,不经过隔行处理就送出去?”简单地说,原因就是很多碟片的部分或者全部帧都不是储存为逐行的。即使节目源是电影,也不要求所有的帧都像例1那样储存,电影储存到碟片上的时候用例3那种方法是很常见的。我们前面说过,大部分好莱坞的大制作都比较近似第一种方法,但这只是因为他们的编码软件好,可以辨认出3-2方式并去掉重复的那场来获得压缩效率。这么做并不是为了改善逐行播放,那只是意外得到的副产品罢了。 
  
  而且,还有很多DVD都是用摄像机拍的,或者使用胶片拍了以后转成视频再进行编辑的。这种节目要想放得好的话就要用相对复杂的视频模式隔行转逐行算法。很多便宜的逐行芯片在这方面都不怎么样。 
  
  电影模式的隔行转逐行 
  
  对于节目源是电影的DVD,要想显示完美的逐行图像,DVD机需要找出把MPEG数据流里的那些场合在一起才能生成每个电影帧。理论上说,PROGRESSIVE_FRAME标志应该告诉DVD机碟片上的帧是从电影来的,所以应该放在一起。但是我们前面说过了,这个标志有时会设错。 
  
  所以,大部分DVD机是用标准的MPEG-2解码器来产生数字隔行视频,然后将其送入逐行芯片。逐行芯片总是寻找重复的场来判断此视频是否源于电影,在标准的3-2序列中,第1场和第3场是一样的。如果逐行芯片看到连续的5场序列而第1场和第3场又是一样的,它就会转到电影模式的隔行转逐行过程。 
  
  进入电影模式以后,逐行芯片只是简单地把第1场和第2场合并起来形成一幅逐行图像,用它来输出三个逐行帧,然后再把第4场和第5场合并起来形成下一幅逐行图像,并将其输出两帧。对下面五场再重复此过程。DVD机输出的帧仍然是3-2序列,但是它生成的是每秒60个完整的逐行帧,而不是每秒60场。逐行芯片工作在电影模式时算法是非常的简单,而且生场的电影帧是完整的,没有任何损失和质量下降。 
  
  在电影模式下最常见、最烦人的问题是有时候逐行芯片会把不该放在一起的两场放在一起,这通常是由于3-2序列被打断而逐行芯片调整的速度不够快。发生这种情况时,图像的奇数行是某个时间的,而偶数行是另外一个时间的。如果图像中有运动物体,那么它的边缘看起来就会有钉状的线条突出来,就像梳子的齿一样。所以这种现象叫做梳齿,尽管有时候也叫羽化或链齿。 
  
  视频模式的隔行转逐行 
  
  有时候,序列是不规则的。由于各种原因(后面详述),3-2序列可能会时不时地中断,或者视频节目源可能根本就不是电影。纪录片、音乐会和电视节目经常是用摄像机拍的,这样就没什么好办法能产生完美的逐行帧了。摄像机每秒捕获60个单独的场,每一场都是不同时间的,所以移动的物体在每一场里都处于不同的位置。 
  
  不管是哪种情况,只要逐行芯片没有看到3-2电影序列,它就要转到视频模式的隔行转逐行过程。这里的算法就复杂多了。有两种技术比较简单,但效果都不太好,另外还有一些复杂得多的算法。我们将其分为五类,按复杂程度排列。 
  
  单场插值(BOB) 
  
  这种算法只是将每一场扩大为完整的一帧。场中扫描线间失去的行是用其上下行的数据插值来填充的。如果做得不好,图像看起来会有斑驳的马赛克。即使做得好,图像看起来也会偏柔,因为不可避免地损失了分辨率。而且,随着镜头的移动,很细的水平线会“抖动”。这些细线只在一帧里的某一场中出现,所以DVD机在交替播放奇数场和偶数场时这些线会忽而出现忽而消失。这是最基本的隔行转逐行算法,而且在别的算法都不行时几乎所有的逐行芯片都会回到这种算法。 
  
  场合并(WEAVE) 
  
  在这种算法下,两个连续的场被合并为一帧。这通常只在两场之间没有或极少移动的情况下才工作得比较好,比如两场是一个电影帧的情况。如果场与场之间有移动,图像就会有梳齿,就是很烦人的。所以极少有逐行芯片把这个作为主要算法。 
  
  垂直过滤 
  
  大多数电脑DVD播放软件都用这种技术。因为解码软件一般没有足够的能力同时进行运动适应逐行运算和MPEG-2解码,所以解码软件会使用比较便捷的技术来得到过得去的结果。最常见的是,它们把MPEG的一帧里储存的两场合并在一起,然后在垂直方向上将图像稍稍柔化,使得造成的梳齿看起来更象是重影而不是梳齿。这会导致垂直分辨率的损失以及物体运动和摇镜头时奇怪的抖动。你一旦注意到这种现象,看起来就会非常难受。 
  
  运动适应逐行运算 
  
  这实际上是一整类算法,它们会根据图像的某个区域看起来是静止还是移动的来转换不同的逐行算法。如果一个区域是静止的,算法就使用两场的图像数据并将其合并。但是对于移动的区域,算法只是对当前场进行插值(BOB)。这保持了观众最容易注意到的屏幕静止部分的分辨率,同时以损失分辨率为代价减少了屏幕运动部分的梳齿现象。做得好的话,这种算法看起来是很不错的。大部分好的逐行芯片都使用某种形式的运动适应算法。 
  
  运动补偿逐行运算 
  
  这是通常只有在非常非常昂贵的逐行解决方案里才能找到的东西,我们这里只是出于资料完整的目的才提一下。这种算法对图像进行仔细的分析,判明图像的运动部分,然后把两场中相同的图像合并起来,个别区域进行偏移来对运动进行补偿。这种算法需要很高的处理能力,我们所知的任何DVD机上都没有这种算法。 
  
  -Don Munsil-
  
  cainiao译 
阅读(1515) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~