交错、反交错与IVTC —— 从入门到放弃
我在对视频进行反交错处理的时候,发现中文网络上难以找到系统讲解交错原理以及简明扼要指导如何利用MeGUI/AVS进行IVTC/反交错的文章。
网上找到的大多都是神仙讨论天书笔记,许多概念也纠缠在一起……
所以斗胆在这里整理一个入门级的介绍,也作为自己的参考资料。
不欢迎一切转载。
一、隔行扫描与逐行扫描
为了更好地说明交错,得先从传送图像的原理讲起。
在传送电视图像的时候,将每帧图像分解为像素,之后一个一个像素、一行一行顺序传送的方式叫做扫描。
逐行扫描是非常容易理解的扫描方式。将这一帧的图像从左至右从上至下扫描完成之后,输出一张完整的图像。扫完第一帧再继续扫第二帧,如此循环。由于每一次输出的图像都是完整的画面,所以观众观看的时候会觉得图像非常稳定细腻。
逐行扫描(Progressive Scan)
但是这样的扫描方式需要有相当大的带宽来传送这些电信号,尤其在早期的时候由于技术限制和成本高昂,很难以实现。
怎么办呢?为了减少带宽,人们采用了隔行扫描的方式。
原理是将一帧的这一幅画面分为两个场来扫描。
完整的一帧 → 奇数行(奇场) → 偶数行(偶场)
先扫描奇数行得到第一场(奇场/Field 1/Odd Field),然后扫描偶数行得到第二场(偶场/Field 2/Even Field)。两个场加起来组成完整的画幅。快速播放的时候由于视觉暂留效应,人眼不会注意到两场只有一半的扫描行,而会看到完整的一帧。
隔行扫描(Interlace Scan)
通常有一种误解是,偶场和奇场是由同一帧的画面分拆得来的。
实际上,摄像机采集的方式和隔行扫描显示的方式是完全相同的。当摄像机采集图像时,偶场和奇场不是同时采集的。
以每秒60场的摄像机为例,偶场的采集在奇场的1/60秒之后进行。
只要图像中没有出现变化,比如说是静止的场景,两个场会补足对方形成完整流畅的画面。
但我们不是生活在PPT里,一旦画面出现变化,交错(interlace)便出现了。
运动的汽车出现了交错
记得上文强调过两个场并不是同一帧的画幅,而是分处不同时间的。
当运动发生时,物体会在第一场处于位置A,而在下一场移动到位置B。此时两个场不能互相补足对方,画面上就会有一些交错。
这个动图演示了一个番茄从左向右的移动过程。由于每一个场和上一个场的位置都有细微的不同,交错便这样出现了。
以上是一些帮助你更好理解交错原理的背景知识,接下来我们更进一步。
二、交错、反交错与IVTC
当你发现你手上的视频出现类似上文中的横纹拉丝情况,在想办法挂滤镜反交错之前,首要任务是需要确认视频和横纹的类型究竟是什么。
如果如上文所说,因为这是由隔行扫描录制的视频(interlaced video),那么我们需要做的是反交错(Deinterlacing)。
但还有另一种更常见的情况是,随着时代发展,如今逐行扫描已经渐渐普及。
于是影像本身是逐行扫描视频,但是为了在不同制式的电视和DVD里能正常播放和存储,许多时候要将原始视频进行一些处理。
这种转换的过程名为Telecine,缩写为TC,中文叫胶卷过带。
全世界最通用的两种电视制式为北美+日本为主的NTSC制式(30fps),与中国大陆+香港+欧洲为主的PAL制式(25fps)。
全世界电影拍摄的一般帧率都是24fps。
举例来说,要将24fps的视频转换为NTSC所要求的30fps。24/30=4/5,意味着原视频中的每4帧都要增加1帧。
经过Telecine输出的视频,一秒内的帧总数就由24帧增加为30帧了。
这个转换的方法叫做3:2 pull down。是将原视频拆分为偶场和奇场之后,在每两帧后添加一个第三帧的方法,如下图这般。
转换成果如大家所见,也就是常说的5烂2,每5帧里有2帧是烂的。
3:2 pulldown 下的Telecine
上图是一个NTSC制式的3:2 pulldown例子。可以看到第1-2帧为交错的,之后3-4-5是正常的,再接着6-7为交错,8-9-10为正常,如此每5帧烂2帧的循环。
Euro pulldown下的Telecine
也有其他情况,比如说将24fps的电影转换为PAL制式的25fps。如果你的视频如上图这般是13帧正常图像,接着12帧交错图像。那么极有可能是遇见了Euro pulldown。
Interlaced video
而如果帧帧都交错呢,多半可以说这是一个Interlaced视频了(这种从摄制源头就是交错的视频也被称为true interlaced video)。
True interlaced video现在仍频繁出现于大部分的体育赛事、演唱会DVD,部分电视剧集和一些低成本电影,以及大量的纪录片和花絮/幕后里。
除了上文这些常见的Interlace与Telecine……在处理片源时我们还会遇见非常多的奇葩情况。
比如强行把NTSC制式的碟压进PAL DVD里的,比如片源经过了无数道手的剪辑和压制之后再次Telecine的,比如整体60i系统+正片24p+片尾和特典是24t+24p+30p再内置一个60i字幕的(没错索尼我在说你)
处理这些片源确实会把人逼疯,对此我也只能说……
相信你一定可以久病成医的:D
三、使用MeGUI进行反交错处理
接下来我们进入到实战阶段。使用MeGUI来进行反交错处理。
在中文网络里,不论是处理Interlaced还是Telecine视频都会用“反交错”这一个词。
但因两者原理有些许不同,准确来讲
处理Interlaced视频叫反交错(Deinterlacing),处理Telecine视频叫做Inverse Telecine(IVTC)。
如果视频只是单纯的Telecine,那么是可以通过IVTC实现完美还原的。
但如果是Interlaced视频,则永远无法补足从源头损失的那一半信息,只能通过不同的算法和滤镜来尽量达成较好的视觉效果。
在这里推荐一下Deinterlacing Algorithms By Rebeca Sanz Serrano,是一篇非常优秀的论文,细致比较了不同的反交错算法之间的优劣。
基本逻辑是,先确认交错种类。
可以IVTC的就不要上Deinterlacing。单纯的TC视频明明可以通过IVTC来完美还原,无脑Deinterlacing反而会让它白白损失清晰度。
以及勤预览。每帧每帧检查效果。
单纯的Telecine视频
通过观察是否为非常规律的交错(例如5烂2)来判断。
(MeGUI的自动分析偶尔会误判,不要过分依赖自动分析)
解决办法:
MeGUI内置滤镜TIVTC
或因MeGUI自带decomb,可以直接写Telecide() ,例子:
Telecide(Guide=1,Post=False)
Decimate(Cycle=5) #5帧循环的语句 复杂的情况可以在这里根据视频来调整
当你很确定自己的视频就是5帧循环,也可以省略decimate:
Telecide(Guide=1,Show=true)
需要做Deinterlacing的视频。
不同的反交错滤镜究竟哪个更好是在压制界几十年争论不息的话题……
简单来说,对视频的清晰度和整体质量没有完美要求的话,可以选择Yadif。
速度快,对CPU没什么压力。然而产出的视频对完美主义者不甚友好,损失了清晰度不说,线条边缘偶尔还会残留锯齿。但是当片源本身也是清晰度不够高的DVD时,Yadif很多时候也够用。
而对于疑难杂症视频或者完美主义者,可以选择QTGMC等大型滤镜,成品质量相当不错。就是非常非常非常耗时。
碰到解决不了的问题视频,以及值得自己在上面砸十几个小时的珍贵档源就轰上去QTGMC吧。
下图是一个对目前常见的Deinterlacing滤镜的速度与质量比较。
这个测试是MSU的发布者做的,所以可以不要管MSU :P
如上文所说,Yadif以及MeGUI内置的Tdeint是常见的快速而低质滤镜,QTGMC则恰好相反。
还有位于两者之间的nnedi3。在对Yadif效果不满意时可以尝试换nnedi3再试试看。
常见的交错视频基本可以通过这几个滤镜来解决。
再过问题重重的档源就需要手动调整了,非我力不能及,欢迎大神们讨论如何神仙反交错。
以及、处理动画片源又是另一个世界的事情了……
本文基本所有配图都非原创,Link在下面列出,感谢数十年来孜孜不倦与视频压制作斗争的各国前辈们。
愿天国再也没有interlace。
封面图是十八岁刚刚出道时的山本美月,没什么特别的含义,只是因为我喜欢:)
Link
http://foro.doom9.org/ivtc-tut.htm (圣经,这一篇不读不行)
Nicky Pages' Digital Solutions (非常全面详细的一个介绍,讲解交错与TC)
What is Progressive scan 3/2 pulldown? (最清晰地讲解扫描和Telecine的一篇)
http://www.infognition.com/tutorials/rip_guides/interlaced.html (如何判断交错的种类)
Deinterlacing - VideoLAN Wiki (比较详细地介绍了Deinterlacing的不同滤镜)
Compressor 3 User Manual(IVTC基础介绍)
如果之后还有力气大概会再详细写写滤镜比较,但是写这篇的工作量已经有点超出我想象了。
交错、反交错与IVTC —— 从入门到放弃相关推荐
- android 播放器 反交错,反交错- 视频横纹处理
以下名词解释摘自维基百科 反交错"(deinterlacing)是将交错式(即隔行扫描)(interlace)影像讯号转换为渐进式(逐行扫描)(progressive)影像讯号的一种方法. ...
- avs php,【求助!】小白求个标准反交错AVS脚本和解答困扰我的几个问题!!
小白入门,几个问题困扰我,求大大解答~ 1.MeGUI中的x264参数设置最后一项Misc标签的Other选项中Thread-Input是AVS单线程还是视频解码单线程?因特4核CUP是勾选还是不勾? ...
- De-interlace 反交错 简介
<script type="text/javascript"> </script> <script type="text/javascrip ...
- 爬虫入门到放弃系列07:js混淆、eval加密、字体加密三大反爬技术
前言 如果再说IP请求次数检测.验证码这种最常见的反爬虫技术,可能大家听得耳朵都出茧子了.当然,也有的同学写了了几天的爬虫,觉得爬虫太简单.没有啥挑战性.所以特地找了三个有一定难度的网站,希望可以有兴 ...
- python ** 运算符_Python从入门到放弃运算符(2)
摘要:上一篇Python从入门到放弃-运算符(1),讲了Python的运算符中的算术运算符.赋值运算符.比较(关系)运算符,这篇继续讲Python的运算符. 逻辑运算符 逻辑运算符是对真和假两种布尔值 ...
- shell逻辑运算符优先级_ios从入门到放弃之C基础巩固运算符
继续接着上一次ios从入门到放弃之C基础巩固-----printf函数.scanf函数.scanf函数实现原理来巩固C语言基础,这次学习的是一个非常不起眼的语言基础----运算符,这里主要是对一些比较 ...
- 操作系统锁的实现方法有哪几种_「从入门到放弃-Java」并发编程-锁-synchronized...
简介 上篇[从入门到放弃-Java]并发编程-线程安全中,我们了解到,可以通过加锁机制来保护共享对象,来实现线程安全. synchronized是java提供的一种内置的锁机制.通过synchroni ...
- 【从入门到放弃-Java】并发编程-锁-synchronized
简介 上篇[从入门到放弃-Java]并发编程-线程安全中,我们了解到,可以通过加锁机制来保护共享对象,来实现线程安全. synchronized是java提供的一种内置的锁机制.通过synchroni ...
- JavaScript从入门到放弃 -(七)ES6
目录 1. ES6相关概念 1.1 什么是 ES6 ? 1.2 为什么使用 ES6 ? 2 ES6新增语法 2.1 新增关键字 2.1.1 let 关键字 小结 2.1.2 const 关键字 小结 ...
- JavaScript从入门到放弃 -(六)正则表达式
正则表达式 1. 正则表达式概述 1.1 什么是正则表达式 1.2 正则表达式的特点 2. 正则表达式在JavaScript中的使用 2.1 创建正则表达式 2.1.1 通过调用 RegExp 对象的 ...
最新文章
- 21天让你成为Horizon View高手—Day18:Windows操作系统优化
- [转]小白都能看懂的softmax详解
- 链表的头结点和尾节点的用处
- Oracle优化查询技巧
- php递归面包屑,php实现面包屑导航例子分享,_PHP教程
- SAP License:税额保留小数位差异处理
- java登陆session用法_java中session用法
- 适配器模式之桥梁模式
- 数据库课设 - 机票预订系统
- 区块链研习 | 什么是IFO
- 透视宝Java监控部署流程
- “语象观察”-爬取人民日报并统计词频
- 疫苗预约系统,疫苗预约管理系统,疫苗预约小程序系统设计与实现
- iOS 读书笔记-单元测试XCTest
- 员工和老板的差距不只是能力,还有战略思维
- Deepin系统卸载alsa-base后导致系统无法启动
- vue-element-admin--使用体验
- LeetCode1166.设计文件系统
- 心理学上的被动_心理学:为什么有些人在感情里总是很被动?
- 5. ESP8266固件的编译(RTOS SDK固件)