隔行扫描
每一帧被分割为两场,每一场包含了一帧中所有的奇数扫描行或者偶数扫描行,通常是先扫描奇数行得到第一场,然后扫描偶数行得到第二场。
无论是逐行扫描还是隔行扫描,都有视频文件、传输和显像三个概念,这三个概念相通但不相同。最早出现的是隔行扫描显像,同时就配套产生了隔行传输。而隔行扫描视频文件是到数字视频时代才出现的,其目的是为了兼容原有的隔行扫描体系(隔行扫描还依然在广泛应用)。
通常显示器分“隔行扫描” 和 “逐行扫描”两种扫描方式。逐行扫描相对于隔行扫描是一种先进的扫描方式,它是指显示屏显示图像进行扫描时,从屏幕左上角的第一行开始逐行进行,整个图像扫描一次完成。因此图像显示画面闪烁小,显示效果好。先进的显示器大都采用逐行扫描方式。
隔行扫描情况下,由于视觉暂留效应,人眼将会看到平滑的运动而不是闪动的半帧半帧的图像。但是这种方法造成了两幅图像显示的时间间隔比较大,从而导致图像画面闪烁较大。 因此该种扫描方式较为落后,通常用在早期的显示产品中。

扫描区别

每一帧图像由电子束顺序地一行接着一行连续扫描而成,这种扫描方式称为逐行扫描。把每一帧图像通过两场扫描完成则是隔行扫描,两场扫描中,第一场(奇数场)只扫描奇数行,依次扫描1、3、5…行,而第二场(偶数场)只扫描偶数行,依次扫描2、4、6…行。隔行扫描技术在传送信号带宽不够的情况下起了很大作用,逐行扫描和隔行扫描的显示效果主要区别在稳定性上面,隔行扫描的行间闪烁比较明显,逐行扫描克服了隔行扫描的缺点,画面平滑自然无闪烁。

在电视的标准显示模式中,i表示隔行扫描,p表示逐行扫描。

说隔行显示不如逐行,这又是为什么?这就要看这两种模式在显像时的具体过程。
我们有一部30p的视频用作测试。假设有一台高速摄影机,对着平板电视拍摄(CRT存在扫描过程,解释起来稍微有些复杂,所以以平板电视为例)。接着我们用慢镜头重新观看电视机的工作状况,就会看到下列景象。
1080p(逐行)   :每秒显示30个画面(实际上是60个场,由于第一个1/60秒和第二个1/60秒内显示的画面是一样的,所以看不到区别)。
1080i (隔行):   每秒显示60个场,我们用“第一场”、“第二场”、“第三场”等表示在第一个、第二个、第三个1/60秒内发生的事。
如图:
第一场:显示上场的画面,下场还没出来,所以是空的
第二场:下场显示出来了,而上场依然存在,所以我们看到了一张完整的画面。
第三场:上场刷新成第2帧的内容,而下场没动
第四场:下场跟进刷新,于是我们就看到完整的第2帧了
第五场:上场变成了第3帧,而下场仍然还是第2帧中的内容
第六场:下场继续跟进,我们又看到了完整的第3帧
……
可以看到1080p和1080i在显示上根本的不同了。由于单位时间内总会有一半时间看到交错的画面,所1080i的显示会略有模糊。

隔行扫描视频编码(interlaced-scan video coding)

隔行扫描图像的每帧包括两个场,所以对于隔行扫描图像有三种编码方式:

  1、将两场合并为一帧进行编码;

  2、将两场分别编码;

  3、将两场合 并为一帧,但是在宏块级别上,将一个帧宏块划分为两个场宏块进行编码。

前两种编码方式称为图像自适应帧/场编码(Picture-adaptive frame-field, PicAFF or PAFF)

第三种称为宏块自适应帧/场编码(Macroblock-adaptive frame-field, MBAFF)。

  • PAFF:对于一个运动图像,由于场之间存在着较大的扫描间隔,所以帧中相邻两行之间的空间相关性相对于逐行扫描图像较小,因此对两个场分别编码 会更节省码流。对于一个非运动图像,相邻两行之间存在较大的空间相关性,将两场合并为一帧编码更有效。所以PAFF编码方式可以针对整个图像的编码方式做 自适应调整,选择帧编码或场编码。
  • MBAFF:当图像同时存在运动区域和非运动区域时,PAFF的劣势便显现出来,PAFF的自适应粒度太粗,无法实现满足更加精细的编码要求,于 是MBAFF应运而生。MBAFF对帧编码或场编码的选择是基于宏块的,MBAFF将两场合并为一帧进行编码,但将每一个帧宏块(16x16)划分为场宏 块对(8x16),针对每一个帧宏块,比较帧编码和场编码产生的码流大小,使用最节省码流的方式。

运动补偿

  一种描述相邻帧(相邻在这里表示在编码关系上相邻,在播放顺序上两帧未必相邻)差别的方法,具体来说是描述前面一帧(相邻在这里表示在编码关系上的前面,在播放顺序上未必在当前帧前面)的每个小块怎样移动到当前帧中的某个位置去。这种方法经常被视频压缩/视频编解码器用来减少视频序列中的时域冗余。它也可以用来进行去交织(deinterlacing)以及运动插值(motion interpolation)的操作。

  一个视频序列包含一定数量的图片--通常称为帧(frame)。相邻的图片通常很相似,也就是说,包含了很多冗余。使用运动补偿的目的是通过消除这种冗余,来提高压缩比。

  最早的运动补偿的设计只是简单的从当前帧中减去参考帧,从而得到通常含有较少能量(或者称为信息)的"残差",从而可以用较低的码率进行编码。解码器可以通过简单的加法完全恢复编码帧。

  一个稍微复杂一点的设计是估计一下整帧场景的移动和场景中物体的移动,并将这些运动通过一定的参数编码到码流中去。这样预测帧上的像素值就是由参考 帧上具有一定位移的相应像素值而生成的。这样的方法比简单的相减可以获得能量更小的残差,从而获得更好的压缩比--当然,用来描述运动的参数不能在码流中 占据太大的部分,否则就会抵消复杂的运动估计带来的好处。

  通常,图像帧是一组一组进行处理的。每组的第一帧(通常是第一帧)在编码的时候不使用运动估计的办法,这种帧称为帧内编码帧(Intra frame)或者I帧。该组中的其它帧使用帧间编码帧(Inter frame),通常是P帧。这种编码方式通常被称为IPPPP,表示编码的时候第一帧是I帧,其它帧是P帧。

  在进行预测的时候,不仅仅可以从过去的帧来预测当前帧,还可以使用未来的帧来预测当前帧。当然在编码的时候,未来的帧必须比当前帧更早的编码,也就是说,编码的顺序和播放的顺序是不同的。通常这样的当前帧是使用过去和未来的I帧或者P帧同时进行预测,被称为双向预测帧,即B帧。这种编码方式的编码顺序的一个例子为IBBPBBPBBPBB。

转载于:https://www.cnblogs.com/maxiaodoubao/p/4465902.html

隔行扫描 和 逐行扫描相关推荐

  1. 隔行扫描与逐行扫描视频有什么区别

    视频显示有两种基本方式:隔行扫描 或 逐行扫描. 逐行扫描,用在计算机显示器和数字电视机上,一次显示图象的所有水平线,作为一帧. 隔行扫描,用在标准NTSC,PAL,SECAM制电视机上,一次只显示一 ...

  2. [转帖]隔行扫描与逐行扫描视频有什么区别

    视频显示有两种基本方式:隔行扫描 或 逐行扫描. 逐行扫描,用在计算机显示器和数字电视机上,一次显示图象的所有水平线,作为一帧. 隔行扫描,用在标准NTSC,PAL,SECAM制电视机上,一次只显示一 ...

  3. 隔行扫描和逐行扫描(interlace and progressive )

    隔行和逐行扫描 隔行扫描方式源于早期的模拟电视广播技术,这种技术需要对图像进行快速扫描,以便最大限度地降低视觉上的闪烁感,但是当时可以运用的技术并不能以如此之快的速度对整个屏幕进行刷新. 于是,将每帧 ...

  4. 隔行扫描, 逐行扫描

    逐行扫描 : 对每一行进行扫描,如果一帧图像是连续扫描625行组成的,每秒钟共扫描50帧图像,即帧扫描频率为50帧/秒,或写成50Hz(赫兹),行扫描频率为 31.25kHz. 隔行扫描 : 分别对奇 ...

  5. ffmpeg将视频从隔行扫描转为逐行扫描

    其实主要是这个参数 -deinterlace 隔行扫描的视频一般在播放的时候 会有横条感 逐行扫描的视频播放的时候感觉会好很多 会感觉清晰很多 ffmpeg -i 1.mts -strict -2 - ...

  6. 隔行扫描与逐行扫描的区别

    早期的电视制式均采用隔行扫描,但是现在很多的高清.专业级的视频采集卡都是采用逐行扫描模式,虽然现在的视频设备和数字视频技术已近有了很大的发展和进步,但是在时候中这两种扫盲模式和显示模式一直还存在,在前 ...

  7. 扫描线(scanning line)是什么?(水平清晰度)(电视行(TVLine))(隔行扫描、逐行扫描)

    电视的画面清晰度是以水平清晰度作为单位.通俗地说,我们可以把电视上的画面以水平方向分割成很多很多扫描线,分得越细,这些画面就越清楚,而水平线数的扫描线数量也就越多.清晰度的单位是"电视行(T ...

  8. linux逐行扫描,FFmpeg怎么区分识别视频是逐行扫描还是隔行扫描

    最近遇到要识别隔行扫描的视频加以特殊转码处理的问题.google了一番以后找到两个解决的方式,记录一下. 方法一:使用隔行扫描检查滤镜idet区分隔行扫描和逐行扫描 ffmpeg -filter:v ...

  9. FFmpeg怎么区分识别视频是逐行扫描还是隔行扫描

    最近遇到要识别隔行扫描的视频加以特殊转码处理的问题.google了一番以后找到两个解决的方式,记录一下. 方法一:使用隔行扫描检查滤镜idet区分隔行扫描和逐行扫描 ffmpeg -filter:v ...

最新文章

  1. 《小印记》源码分享--极光推送服务器篇
  2. 搞定全局ID生成器:SpringBoot2.x 集成百度 uidgenerator
  3. python基础-2
  4. SAP Spartacus 中的 Commands and queries
  5. 字符串之从规定的字符串中根据下标得到字符
  6. 13.MongoDB之Gridfs
  7. java读取redis数据_Java连接redis操作数据
  8. clinux 防火墙增加白名单_linux增加iptables防火墙规则的示例
  9. yalmip决策变量
  10. 因子分析模型 - 因子分析法原理与代码实现 -(Python,R)
  11. 强化物联网连接 Silicon Labs收购Micrium
  12. 配置文件(properties类)
  13. Not allowed to access vertices on mesh ‘Combined Mesh (root: scene)
  14. 苏宁金融红包系统大促海量流量背后的技术支撑
  15. css箭头图片方向转换
  16. 安卓7.0核心破解示列
  17. 实战分享:一文读懂RS-232总线
  18. Windows X86(32位系统)为什么可使用最大内存4G,再加内存条,内存也不会增加?
  19. 《C语言程序设计》(谭浩强第五版) 第8章 善于利用指针 习题解析与答案
  20. 【patch】x64dbg_2018_10_11导出的内存补丁文件内容如何理解地址偏移(va内存,Rva相对,Fva文件)

热门文章

  1. LITS数据集 总切片和单张Nii切片数目统计
  2. 电子成绩单战疫:高校凭证管理转型提速
  3. 无法将“pyinstall”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
  4. Global Average Pooling与FC、Global Max Pooling的比较
  5. N63044-第十三周
  6. Oracle登录密码错误解决方法
  7. 计算机技能考试练习题~
  8. DDD微服务架构设计第四课 微服务落地实践的技术中台
  9. 计算机考研考英语作文,The computer计算机英语作文
  10. C语言memset函数及其用法