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

凡是做模拟信号采集的,很少不涉及BT.656标准的,因为常见的模拟视频信号采集芯片都支持输出BT.656的数字信号,那么,BT.656到底是何种格式呢?
      本文将主要介绍 标准的 8bit BT656(4:2:2)YCbCr SDTV(标清) 数字视频信号格式,主要针对刚刚入门模拟视频采集的初学者入门之用。

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(标清)的视频而言,对于一帧图像,其格式定义如下:

    由上图可以知道,对于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和写这篇文章的,有兴趣的童鞋可以看看。

—————————————————————————————————————————————————————————

以下转自特权博客http://www.eefocus.com/ilove314/blog/11-09/231422_89195.html

ITU-RBT.656视频标准接口

ITU-RBT.656视频标准接口PAL制式(720*576)每场由四部分组成。

●  有效视频数据,分为奇场和偶场,均由288行组成。每行有1440个字节,其中720个字节为Y分量,360个字节为Cb分量,360个字节为Cr分量。Y分量的取值为16~235CbCr分量的取值为16~240

●  水平消隐,有280个字节。

●  垂直消隐。

●  控制字。

对于有效数据行,其格式如图1所示。EAVSAV为嵌入式控制字,分别表示有效视频的终点和起点。EAVSAV均为4个字节构成,前3个字节FF0000为固定头,“XY”为控制字。“XY”的8bit含义如下:

●  Bit7Const),常数,总为1

●  Bit6F),场同步信号,表示该行数据处于奇场还是偶场。

●  Bit5V),垂直同步信号,表示处于场消隐区间还是正程区间(有效数据行)。

●  Bit4H),水平同步信号,表示是“SAV”还是“EAV”。

●  Bit3-0P3P2P1P0),纠错位。P3=V(XOR)HP2=F(XOR)HP1=F(XOR)VP0=F(XOR)V(XOR)H

EAVSAV的详细定义如表1所示。

1

Bit7

Bit6

Bit5

Bit4

Bit3-0(P3P2P1P0)

Hex

Description

1

0

0

0

0000

0x80

Even,Active,SAV

1

0

0

1

1101

0x9d

Even, Active,EAV

1

0

1

0

1011

0xab

Even,Blank, SAV

1

0

1

1

0110

0xb6

Even, Blank, EAV

1

1

0

0

0111

0xc7

Odd, Active, SAV

1

1

0

1

1010

0xda

Odd, Active, EAV

1

1

1

0

1100

0xec

Odd, Blank, SAV

1

1

1

1

0001

0xf1

Odd, Blank, EAV

 

Blanking为水平消隐区,通常由80H/10H来填充。

 

 

1

         对于图1中的Valid data(有效数据)区,其数据排列顺序如图2所示。即Y : Cb : Cr="4" : 2 : 2。从图像的像素点上来理解,就是每个像素点有一个单独的Y值,而相邻的两个像素点的CbCr数据是一样的。

 

 图2

         PAL一场的数据行格式如图3所示。 

 

3

         工程实践中就是通过EAVSAV对行、场信息进行检测,分离出有效数据。而EAVSAV的差别只在控制字XY数据有别。因此表2对控制字XY和行、场之间的关系做了映射,并且理论上控制字XY数据流也是按照表2的上到下、左到右的顺序出现的。但是在实际工程中,特权同学发现奇场和偶场的顺序好像和这里的定义刚好反了。

2

行数

F

V

EAV

SAV

1~22

0

1

0xb6

0xab

23~310

0

0

0x9d

0x80

311~312

0

1

0xb6

0xab

313~335

1

1

0xf1

0xec

336~623

1

0

0xda

0xc7

624~625

1

1

0xf1

0xec

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

眼图(Eye Diagram)与数字信号测试

问题: 什么是眼图?它用在什么场合?反映了波形的什么信息?NI相应的解决方案是怎样的? 解答: 眼图(Eye Diagram)可以显示出数字信号的传输质量,经常用于需要对电子设备、芯片中串行数字信号或者…

BZOJ 1609 [Usaco2008 Feb]Eating Together麻烦的聚餐:LIS LDS (nlogn)

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id1609 题意: 给你一个只由数字"1,2,3"组成的序列a[i],共n个数。 你可以任意更改这些数字,使得序列中每一种数字都“站在一起”,并且单调不减或不增…

Oracle 数据库字典 sys.obj$ 表中关于type#的解释

sys.obj$ 表是oracle 数据库字典表中的对象基础表,所有对象都在该表中有记录,其中type#字段表明对象类型,比如有一个表 test ,则该对象在sys.obj$ 中存在一条记录,name列为test, type#列为2,表示…

Python高级特性:列表生成式

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。 最常见的例子: 生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):>>> list(range(1, 11)) [1, 2, 3, 4, 5, 6, 7, 8…

2018年智能音箱对比

众所周知,2014年底,电商巨头亚马逊推出智能音箱产品Echo之后,引起市场的强烈反响。随后、谷歌、微软、苹果均开始布局智能音箱市场,国内公司以玲珑科技打头阵。2017年国内公司纷纷发布智能音箱,被称为智能音箱元年。经…

AMD与CMD区别

AMD:异步模块定义,是一个浏览器端模块化开发的规范,由于不是原生JS支持,使用AMD规范需要用到require.js库require.js注意解决两个问题1、多个js文件可能有依赖关系,被依赖的文件需要早于依赖它的文件加载到浏览器2、js加载的时候浏…

[LeetCode] Interleaving String

1. 是一个很明显的动态规划题。 2. s3中的每个字符不是s1中的就是s2中的,只要根据它之前的状态做转移就可以。 1 class Solution {2 public:3 bool isInterleave(string s1, string s2, string s3) {4 int n s1.size();5 int m s2.size();6 …

Python Urllib库详解

Urllib库详解 什么是Urllib? Python内置的HTTP请求库 urllib.request 请求模块 urllib.error 异常处理模块 urllib.parse url解析模块 urllib.robotparser robots.txt解析模块 相比Python2变化 python2 import urllib2 response urllib2.urlopen(http://www.baidu.com) pytho…

LVDS通信接口详细介绍

1. 概述 LVDS Low-Voltage Differential Signaling 低电压差分信号,属于平衡传输信号。 这种技术的核心是采用极低的电压摆幅高速差动传输数据,从而有以下特点: 低功耗---低误码率---低串扰---低抖动---低辐射 良好的信号完整性。 推…

ThinkPHP简单的验证码实现

ThinkPHP简单的验证码实现 写一个最简单的TP验证码。 写Controller 首先在Controller/IndexController.class.php&#xff08;简称Index&#xff09;文件中编辑&#xff1a; 1 <?php 2 namespace Home\Controller; 3 use Think\Controller; 4 use Think\Verify;//这个类…

Celery框架简单实例

Python 中可以使用Celery框架 Celery框架是提供异步任务处理的框架&#xff0c;有两种用法&#xff0c;一种&#xff1a;应用程式发布任务消息&#xff0c;后台Worker监听执行&#xff0c;好处在于不影响应用程序继续执行。第二种&#xff0c;设置定时执行&#xff08;这边没测…

沸腾新十年 | 中国语音产业江湖和科大讯飞的前半生

沸腾新十年 | 中国语音产业江湖和科大讯飞的前半生 2019-01-09 来源:左林右狸 写在前面&#xff1a; 这是《沸腾新十年》的第十一篇剧透文&#xff0c;也是2019年的第一篇剧透文&#xff0c;从确认选题到采编到反复修改&#xff0c;这篇稿子操作时间前后历经近半年。究其原…

权值

【概述】 在数学领域&#xff0c;权值指加权平均数中的每个数的频数&#xff0c;也称为权数或权重。在搜索引擎中&#xff0c;权值越高的内容在排序中越靠前。 实际应用中可以通过修改权值来重新调整索引在列表中的排序位置。 【示例】 1 /**2 * 创建索引3 */4 …

vue.js devtools的安装

http://www.cnblogs.com/lolDragon/p/6268345.html http://blog.csdn.net/wxl1555/article/details/76091614 转载于:https://www.cnblogs.com/songmengyao/p/7609548.html

[oracle]分区表学习

&#xff08;一&#xff09;什么是分区 所谓分区&#xff0c;就是将一张巨型表或巨型索引分成若干个独立的组成部分进行存储和管理&#xff0c;每一个相对小的&#xff0c;可独立管理的部分&#xff0c;称为分区。 &#xff08;二&#xff09;分区的优势 提高数据可管理性。对表…

主函数和子函数的传值传址例子

#include<string.h> #include<stdlib.h> #include<stdio.h> typedef unsigned char Uint8; void *Test_Function(Uint8 **add)//返回堆空间&#xff0c;需要用二级指针 { Uint8 *devInit(Uint8 *)malloc(20*sizeof(Uint8)); memcpy(devInit,"malloc …

Matcher类的简单使用

今天工作时遇到一个问题&#xff0c; 用正则处理html标签时不知该如何下手。还好有Matcher帮助解决了问题。需求如下&#xff1a;例如有如下html文章内容&#xff1a;<p><a href"www.baidu.com">百度的链接</a>; 这是一个百度的链接。 <a href&…

USB 摄像头成熟方案介绍

UVC&#xff0c;全称为&#xff1a;USB video class 或USB video device class。是Microsoft与另外几家设备厂商联合推出的为USB视频捕获设备定义 的协议标准&#xff0c;目前已成为USB org标准之一。 如今的主流操作系统(如Windows XP SP2 and later, Linux 2.4.6 and later…