隔行扫瞄/逐行扫瞄的介绍(Interlaced / Progressive)

 

本篇不是着重在理论说明, 而是实际验証结果的分享, 所以只简略解释何谓交错与非交错, 请参考如后.

交错扫瞄(隔行扫瞄, Interlaced), 就是一个画面分成两次送出, 先送奇数线的画面后, 再送偶数线, 显示时再将它们合成完整画面. 非交错扫瞄(逐行扫瞄, Porgressive), 就是每次都送完整的画面, 不需要奇偶画面重新组合. 所以在非交错式显示的萤幕上观看时, 交错画面要把它重组回来, 这个动作叫做 "去交错" (Deinterlaced)

直接来看看, 到底它们是什么.
下图是隔行扫瞄 (Interlaced) 的图, 影片镜头是由右而左缓慢移动的为每个选手做特写.

我们可以发现在上图中, 选手的衣服边缘处有细纹产生, 穿着2号球衣的这个 "2" 字样也可以看出明显的细纹, 而且在衣服上胸口处的菱形黑色斜边线条有锯齿纹状.

为了怕大家看不清楚, 做了局部放大, 整理如下图, 让大家可以看的更清楚.

注意上图中, 左方放大的图 (红色箭头所指的红色框框处), 选手的衣领和脸部边缘处都有细纹出现. 这就是在动态画面下使用 "交错" (Interlaced) 方式显示会产生的问题. 所以有所谓 "去交错" (Deinterlaced), 目的在尽量将这种现象降低.

下图是开启 "去交错" (Deinterlaced) 后的状况.

在上图中, 我们可以发现, 先前的细纹不见了, 但画面变的模糊了一点点, 这是因为做 "去交错" 的关系, 做了一些调整所造成的结果.

接着我们来看看, 假设收到的影像已经是使用 "非交错" (逐行扫瞄, Progressive), 表现又如何呢? 贴一张 "非交错" 的图如下, 让大家做一个比较.

不知道大家看出差异了没有, 在 "非交错" 讯号中, 即然是非交错, 当然没有去交错问题, 省了一次处理的麻烦和画质的失真. 所以上图中没有锯齿和细纹等等现象.

为了更清楚解释, 我将三个放大图摆在一起, 请参考下图.

由左而右分别是 "交错扫瞄" (左边), "交错扫瞄+去交错处理" (中间), "非交错扫瞄" (右边). 请注意每个图的左下角, 在衣服上的菱形黑色图案, 左边和中间的图都有锯齿状, 而右边的 "非交错扫瞄" 没有这个状况. 再来是中间图的菱形图黑色表现没有旁边两个来的黑. 也就是说做 "去交错" 处理 (中间的图) 会比没有做 "去交错" 的表现来的糊一点点. 所以 "去交错" 做的好不好也很重要.

以上是比较静态的, 接着来就找个动作大一点, 夸张一点的图, 会看的更清楚一些.下图是一台车快速的转弯移动中.

由上图中, 我们可以看到很明显的横线, 状似抽丝, 已经不是细纹可以形容, 大家应该都可以清楚的看见了吧, 这个例子是十分夸张的图, 为了说明方便特别贴出来.

接下来就是 "去交错" (Deinterlaced) 后的状况, 如下图.

我们可以发现, 横条细纹在 "去交错" 后不见了, 但是仍有拖影的现象, 在这么大动作的画面中, 这是无法避免的, 就算是用 "非交错" (逐行扫瞄) 方式也会有拖影现象, 只是程度上的差别而已.

接着下面几张图, 再来比较一下, 让各位更清楚. 也是一台跑车在过弯时的图, 这次一口气比 "交错", "交错+去交错", "非交错" 三种, 每张图为了容易看到差异, 都有贴上一张局部放大的图.


再补上一张 "非交错" 的原图, 让大家自行比对前几张的差异.

照样在最后将三者排开, 比对差异.

最左边是 "交错", 所以会看到线条, 中间是 "交错+去交错处理", 虽然线条不见了, 但有点拖影现象, 而最右边是 "非交错"

所有的图除了有缩放图和裁图之外(为了配合网页宽度), 没有做任何后制修饰动作, 都是实际的图. 每张缩图后的状况我都会检视和原图的差异, 基本上不会太大. 希望能让大家对 "交错", "去交错", "非交错" 的现象有更进一步的了解, 由于是手动不断重复该画面来抓图, 有时候不是很准确. 我想还是对解说有帮助, 所以就贴上来和大家分享.
再来个范例说明, 下图是一段录下来的MPEG2档案, 属于场景较暗的画面, 看起来可能有点辛苦, 但我有放大说明. 原来档案是 "交错" 格式, 请参考下图

做局部放大给大家看会比较清楚

可以由白色衣领部份看出来, 刚好两两相错, 很明显第一个场(Field)和第二个场交差显示后有很大的差异.

此时我们开启软件做 "去交错" 后请参考下图.

做 "去交错" 后更暗了, 再做局部放大如下图

隐约可以看到两个白色衣领出现.

可是有时在做 "去交错" 时会发生 "颜色" 残影. 这现象说明要借用一下图
(原图出处 : http://www.100fps.com/)

我们一样发现这个快速动作的画面, 也出现的 "交错" 现象.

但重点是, 做了去交错之后, 请参考下图.

发现上图的 "红", "绿" 色依然留着残影, 原因是 "去交错" 时没有将这两个地方做处理, 为何会如此呢? 引用原文的说明如下. (保持作者的原意)

....
To make things even more complicated, some digital camcorders have something you could call "color interlacing". While this term maybe somewhat inaccurate to describe the source of the artefacts, it is quite descriptive for the end result.
....
But even after deinterlacing some red and some green pixels stay where the last field was.
....

Some camcorders mix different colors into different fields, or use CCDs that react slower, so that you get this strange color patterns sometimes.
Furthermore there are camcorders with known "hardware bugs" that produce a color halo or a color bleeding or a color smearing (the example above was filmed with a Sony PC110, that has this known "color behaviour").
Furthermore there is something like color unsharpness resulting from the fact, that color resolution is lower than the picture resolution, meaning for example that 4 pixels share 1 color.
Furthermore there are color aberrations introduced by the camcorder's lens system.
......

以上文字说明是配合作者的图示, 可以参考原网址的图文参照解释.

除了图像会有交错现象外, 还有颜色交错 (color interlaced) 与亮度交错(brightness interlaced)
参考资料 : http://zh.wikipedia.org/wiki/去交錯

隔行扫瞄/逐行扫瞄的介绍(Interlaced / Progressive)的更多相关文章

  1. 肤浅的聊聊 TiDB 扫表算子, 扫索引算子, 合取范式(CNF), 析取范式(DNF), skyline pruning

    这一章主要涉及TiDB如下的源码: 1. 扫表算子怎样转换为扫索引算子; 2. 怎样把Selection算子的过滤条件化简, 转为区间扫描; 假设我们有一个表: t1( id int primary ...

  2. C#开发微信门户及应用(45)--微信扫码登录

    在前面随笔<C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理>介绍了基于微信开放平台接口实现的微信扫码直接登录的过程.本篇介绍对扫码登录的一些改进和处理,以便更方便应用在实 ...

  3. ASP.NET Core 2.0 支付宝当面付之扫码支付

    前言 自从微软更换了CEO以后,微软的战略方向有了相当大的变化,不再是那么封闭,开源了许多东西,拥抱开源社区,.NET实现跨平台,收购xamarin并免费提供给开发者等等.我本人是很喜欢.net的,并 ...

  4. node实现微信扫码群发消息《附上github代码》

    本篇文章就是为大家介绍一下我是如何用node去实现扫码群发功能,源代码地址在最后面 获取登录二维码 -> 扫码登录服务端           首先介绍一下主要流程,并附上关键代码 1.获取UUI ...

  5. Android | 教你如何开发扫二维码功能

    前言   最近要做一个停车场扫码收费的app,在网上搜了一圈,首先接触到了ZXing,上手试了下,集成过程不复杂,但是感觉效果欠佳,比如距离稍微远点儿就扫不出来了,另外角度对的不好,反光或者光线比较暗 ...

  6. 超简单集成HMS Scan Kit扫码SDK,轻松实现扫码购

    前言   在前面的文章中,我们向大家介绍了HMS Scan Kit 的快速集成方法以及HMS Scan Kit和其他开源扫码工具的竞争力对比分析,如果没有看到也没关系,文章下方的往期链接中有文章入口. ...

  7. Win10环境前后端分离项目基于Vue.js+Django+Python3实现微信(wechat)扫码支付流程(2021年最新攻略)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_182 之前的一篇文章:mpvue1.0+python3.7+Django2.0.4实现微信小程序的支付功能,主要介绍了微信小程序内 ...

  8. Odoo 仓库扫码打包方案

        Odoo仓库扫码的设计,前提是操作人在PC上先做好分拣单,然后根据打印出来的分拣单去仓库进行扫码打包,默认的情况下,分拣在被确认的时候会自动保留库位中已经存在的库存(已经分配批次\序列号),而 ...

  9. .NET Core2.0 环境下MVC模式的支付宝扫码支付接口-沙箱环境开发测试

    所有配置以及相关信息均可以从PC支付中获取 使用的生成二维码的组件名为QRCoder,该组件引用了一个第三方实现的System.Drawing类库,和支付宝官网类似 当面付SDK为Alipay.Aop ...

随机推荐

  1. 《剑指offer》第三十八题(字符串的排列)

    // 面试题38:字符串的排列 // 题目:输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串abc, // 则打印出由字符a.b.c所能排列出来的所有字符串abc.acb.bac.bca ...

  2. Qt与FFmpeg联合开发指南(一)——解码(1):功能实现

    前言:对于从未接触过音视频编解码的同学来说,使用FFmpeg的学习曲线恐怕略显陡峭.本人由于工作需要,正好需要在项目中使用.因此特地将开发过程总结下来.只当提供给有兴趣的同学参考和学习. 由于FFmp ...

  3. jdk1.8

    Jdk1.8新特性 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性.在本文中我们将学习这些新特性, ...

  4. yii CComponent组件 实例说明1

    yii CComponent组件 实例说明 yii中的module,controller都是CComponent的子类,可以说yii的架构基石就是依托在CCompnent基础上的,这里研究下CComp ...

  5. python-day64--web框架

    http协议. 一.HTTP简介 1.HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输 ...

  6. thinkphp得到客户端的ip

    /** * 获取客户端IP地址 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字 * @return mixed */function get_cli ...

  7. Leetcode 73

    class Solution { public: void setZeroes(vector<vector<int>>& matrix) { vector<vec ...

  8. sql连接详解

    笛卡尔乘积: A={a, b},集合B={0, 1, 2},则AxB的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}; (AxB≠BxA) ...

  9. DB2性能调优

    1.更新统计信息 --更新数据库所有表统计信息 --连接到数据库(-v选项,表示要回显命令,以下同) db2 -v connect to DB_NAME --查看是否收集过统计信息,什么时候更新的   ...

  10. hibernate--一级和二级缓存(使用Ehcache)以及查询缓存

    https://blog.csdn.net/u012411414/article/details/50483185 有一下几点需要理清才行: 一级缓存是session缓存 session关闭就小时 二 ...