入门视频采集与处理(BT656简介)

http://ticktick.blog.51cto.com/823160/553535

1.  帧的概念(Frame)

一个视频序列是由N个帧组成的,采集图像的时候一般有2种扫描方式,一种是逐行扫描(progressive scanning),一种是隔行扫描(interlaced scanning)。对于隔行扫描,每一帧一般有2个场(field),一个叫顶场(top field),一个叫底场(bottom field)。假设一帧图像是720行,那么,顶场就包含其中所有的偶数行,而底场则包含其中所有的奇数行。

2.  场的概念(field)  

注意,上面提到顶场和底场,用的是“包含”二字,而不是说完全由后者组成,因为在BT.656标准中,一个场是由三个部分组成的:

场 = 垂直消隐顶场(First Vertical Blanking) + 有效数据行(Active Video) + 垂直消隐底场(Second Vertical Blanking)

对于顶场,有效数据行就是一帧图像的所有偶数行,而底场,有效数据行就是一帧图像的所有奇数行。顶场和底场的空白行的个数也有所不同,那么,对于一个标准的 8bit BT656(4:2:2)SDTV(标清)的视频而言,对于一帧图像,其格式定义如下:

Lines Field / VBlk Line
Description
PAL NTSC F V
22 19 '0' '1' Field 1 - First Vertical Blanking (Top)
288 240 '0' '0' Field 1 - Active Video
2 3 '0' '1' Field 1 - Second Vertical Blanking (Bottom)
23 20 '1' '1' Field 2 - First Vertical Blanking (Top)
288 240 '1' '0' Field 2 - Active Video
2 3 '1' '1' Field 2 - Second Vertical Blanking (Bottom)
625 525  

由上图可以知道,对于PAL制式,每一帧有625行,其中,顶场有效数据288行,底场有效数据也是288行,其余行即为垂直消隐信号。为什么是288行?因为PAL制式的SDTV或者D1的分辨率为 720*576,即一帧有576行,故一场为288行。

由上图我们还可以知道,顶场有效数据的起始行为第23行,底场有效数据的起始行为第335行。

另外,上图中的 F 标记奇偶场,V标记 是否为垂直消隐信号。

3.  每一行的组成(Lines)

下面说明每一行的组成,一行是由4个部分组成:

行 = 结束码(EAV) + 水平消隐(Horizontal Vertical Blanking) + 起始码(SAV) + 有效数据(Active Video)

典型的一行数据组成如下图所示:

起始码(SAV)和结束码(EAV),它是标志着一行的开始结束的重要标记,也包含了其他的一些重要的信息,后面将会讲到。

为什么水平消隐 是280字节,这个我暂时还没搞清楚,不知道是不是标准定义的。

为什么一行中的有效数据是 1440 字节? 因为PAL制式的SDTV或者D1的分辨率为
720*576,即一行有720个有效点,由于采集的是彩色图像,那么一行就是由亮度信息(Y)和色差信息(CbCr)组成的,由于是
YCbCr422格式,故一行中有720列Y,720列CbCr,这样,一行的有效字节数就自然为 720 x 2 = 1440 字节了。

4.  EAV和SAV

EAV和SAV都是4个字节(Bytes),由上面的图可以知道,SAV后面跟着的就是有效的视频数据了。那么,EAV和SAV的格式是怎么样的呢?

EAV和SAV的4个字节的格式规定如下(下面以16进制表示):

FF 00 00 XY

其中,前三个字节为固定的,必须是FF 00 00,而第4个字节(XY)是根据场、消隐信息而定的,其8个bit含义如下: 1 F V H  P3 P2 P1 P0

其中,F:标记场信息,传输顶场时为0,传输底场时为1

V:标记消隐信息,传输消隐数据时为1,传输有效视频数据时为0

H:标记EAV还是SAV,SAV为0,EAV为1

而 P0~P3为保护比特,其值取决于F、H、V,起到校验的作用,计算方法如下:

5.  总结

这篇文章仅仅讲了BT.656格式中最基本的一些概念,权当入门,许多视频采集芯片都会涉及这方面的知识。如有疑问,欢迎留言讨论。最后,感谢《A Brief Introduction to Digital Video》这篇英文文章对BT.656的介绍,写得很不错,我基本上根据它了解BT656和写这篇文章的,有兴趣的童鞋可以看看。

入门视频采集与处理(BT656简介)的更多相关文章

  1. 每天进步一点点------入门视频采集与处理(BT656简介)

    凡是做模拟信号采集的,很少不涉及BT.656标准的,因为常见的模拟视频信号采集芯片都支持输出BT.656的数字信号,那么,BT.656到底是何种格式呢?      本文将主要介绍 标准的 8bit B ...

  2. 入门视频采集与处理(学会分析YUV数据)

    做视频采集与处理,自然少不了要学会分析YUV数据.因为从采集的角度来说,一般的视频采集芯片输出的码流一般都是YUV数据流的形式,而从视频处理(例如H.264.MPEG视频编解码)的角度来说,也是在原始 ...

  3. 每天进步一点点------入门视频采集与处理(显示YUV数据)

    做视频采集与处理,自然少不了要学会分析YUV数据.因为从采集的角度来说,一般的视频采集芯片输出的码流一般都是YUV数据流的形式,而从视频处理(例如H.264.MPEG视频编解码)的角度来说,也是在原始 ...

  4. Window 下 VFW 视频采集与显示

    引言 经过几天的努力终于将VFW视频采集与显示功能完整实现了,不得不说网上对这方面完整的详细讲解文章是在太少了.所以就要本人来好好总结一下让后来者不再像我一样折腾好久.在本文中我将详细讲解VFW视频采 ...

  5. javascript入门视频第一天 小案例制作 零基础开始学习javascript

    JavaScript 是我们网页设计师必备的技能之一.我们主要用javascript来写的是网页特效.我们从零基础开始学习javascript入门. 但是,好的同学刚开始不知道怎么学习,接触js,因此 ...

  6. V4L2视频采集原理

    一.简介 Video for Linuxtwo(Video4Linux2)简称V4L2,是V4L的改进版.V4L2是linux操作系统下用于采集图片.视频和音频数据的API接口,配合适当的视频采集设备 ...

  7. 让OMCS支持更多的视频采集设备

    有些OMCS用户在他的系统使用了特殊的视频采集卡作为视频源(如AV-878采集卡),虽然这些采集卡可以虚拟为一个摄像头,但有些视频采集卡需要依赖于自带了sdk才能正常地完成视频采集工作.在这种情况下, ...

  8. 使用 AForge.NET 做视频采集

    AForge.NET 是基于C#设计的,在计算机视觉和人工智能方向拥有很强大功能的框架.btw... it's an open source framework. 附上官网地址: http://www ...

  9. (三)WebRTC手记之本地视频采集

    转自:http://www.cnblogs.com/fangkm/p/4374610.html 前面两篇文章介绍WebRTC的运行流程和使用框架接口,接下来就开始分析本地音视频的采集流程.由于篇幅较大 ...

随机推荐

  1. 【Qt】Qt之自定义界面(右下角冒泡)【转】

    简述 网页右下角上经常会出现一些提示性的信息,桌面软件中也比较常见,类似360新闻.QQ消息提示一样! 这种功能用动画实现起来很简单,这节我们暂时使用定时器来实现,后面章节会对动画框架进行详细讲解. ...

  2. linux命令详解之chkconfig命令使用方法

    介绍一个linux常用命令,chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:c ...

  3. 虚拟局域网VLAN

    6.5.1配置路由器广域网端口的PPP封装 (1)配置路由器A: Router>enable Router#config Router_config#hostname Router-A Rout ...

  4. FastLoad错误 — RDBMS error 2634

    我们来看一下下面这条语句: BEGIN LOADING stu_flERRORFILES error_1, error_2;   如果此时已经存在error_1或error_2表,那么将会报错,信息如 ...

  5. java中封装

    .什么是封装? 封装就是将属性私有化,提供公有的方法访问私有属性. 做法就是:修改属性的可见性来限制对属性的访问,并为每个属性创建一对取值(getter)方法和赋值(setter)方法,用于对这些属性 ...

  6. andriod Kernel configuration is invalid

    error:  ERROR: Kernel configuration is invalid.         include/generated/autoconf.h or include/conf ...

  7. 理解PHP 依赖注入|Laravel IoC容器

    看Laravel的IoC容器文档只是介绍实例,但是没有说原理,之前用MVC框架都没有在意这个概念,无意中在phalcon的文档中看到这个详细的介绍,感觉豁然开朗,复制粘贴过来,主要是好久没有写东西了, ...

  8. VS2013中自动缩进和注释的快捷键

    自动缩进: ctrl +k 再 ctrl +f 注释: ctrl+k 再 ctrl +c 取消注释: ctrl+k 再 ctrl+u

  9. [SC] OpenSCManager FAILED 1722

    在服务器A(windows server 2008 r2)执行如下命令访问远端服务器B(windows server 2003)的服务运行状况: sc \\servername query " ...

  10. VBS基础篇 - 队列

    VBS中的队列需要使用System.Collections.Queue '建立队列 Dim Que : Set Que = CreateObject("System.Collections. ...