视频基本原理 - BT709和BT1120

article/2025/9/26 5:23:53

上文描述了BT601BT656的内容以及两者之间的关系。本文主要描述BT1120规范,但是在这之前,先讲述一下BT709规范。

就如上文描述的:BT601SDTV的数据结构,BT656SDTV的接口定义;

                                   BT709HDTV的数据结构,BT1120HDTV的接口定义;

我们先来了解一下BT709的由来。

20世纪70年代中期,日本开始研究高清晰度电视显示技术。70年代末,EBU代表团远赴日本NHK研究实验室,参观HDTV演示,这次演示给大家留下了深刻的印象。就在那时,SMPTE成立了一个委员会来研究HDTV及其应用,该委员会的结论是HDTV将在影院中占有一席之地。受其影响,HDTV并未在欧洲的广播行业开花结果。

19812月,SMPTE在旧金山召开冬季会议,其间NHK展示了其1125i/30模拟系统。同时,EBU技术委员会受邀来到旧金山,参加有关4:2:2格式的讨论,并借机参观了NHK的高清演示。不久,EBU V1/HDTV小组决定成立一个专家组来研究HDTV

19826月,NHK受邀来到爱尔兰,向参加EBU全体会议的人员做了HDTV演示。其间播放了有关自然与体育的画面,以及反映日本文化的纪录片,V1/HDTV小组也目睹了这一盛况。这是HDTV在欧洲的首次亮相,演示非常成功。不久V1/HDTV小组意识到,必须与其他组织达成一个全球一致的HDTV图像格式。由于NHKHDTV系统是基于1080i/30格式的,而欧洲一直使用25Hz系统,因此帧频的转换问题阻碍了该系统在欧洲的使用。与此同时,美国ATSC正在着手制定地面高清广播标准,由于40Hz图像更容易转换到25Hz30Hz,因此ATSC建议全球统一使用40Hz帧频(80Hz场频)。然而,面对40Hz所需的带宽资源与并不突出的效果,SMPTE最终未采纳这一提案。在一位BBC工程师的提议下,NHK开发了一种转换器,可将1125i/30下变换到625i/25格式,以便欧洲顺利采纳1125i/30格式。

至此,在HDTV制作格式的问题上,EBU内部产生了分歧。以意大利、瑞士等为代表的一方坚持采纳1125i/30格式,而法、德、英等国代表则认为应坚持25Hz,而且转换器成本高昂,对图像质量也有影响。后来,NHK又开发了一种能将1125i/30格式HDTV信号带宽压缩为89 MHz,并通过卫星传输的系统,这就是大名鼎鼎的MUSEMUSE将图像分为4个部分,巧妙地利用隔行扫描原理,对不同部分分别加以不同的时空滤波器。之后,MUSE来到了欧洲,RAI在都灵的研究中心对其进行了测试。20世纪80年代,日本开始利用MUSE进行高清电视广播。

20世纪80年代初,ITU成立了一个委员会,专门研究HDTV并试图达成全球统一标准。由于该小组依赖EBUSMPTE及其他国家政府的提案,因此该小组的讨论反映了EBUSMPTE的主张。在19851986年召开的多次ITU会议上,美国代表建议ITU将日本开发的30Hz格式采纳为全球标准,并认为只要以政府的名义施压,就会迫使欧洲接受该格式。欧洲代表对此嗤之以鼻,并坚持拒绝接受该格式。

1986年于南斯拉夫召开的ITU会议上,25 Hz30 Hz的支持者僵持不下,讨论遇到了巨大障碍。离开南斯拉夫后,一些欧洲政府与企业的代表决心要自行开发HDTV图像格式与广播格式。后来,这便成为著名的尤里卡95计划中的HD-MAC项目。5年后,一个集制作与模拟/数字广播为一体的25Hz HDTV系统诞生。

1990年,ITU 11A工作组重开有关HDTV的会议,1080p/501080p/60两种逐行扫描系统成为讨论的基础。然而,在HDTV是否应包含隔行扫描这一问题上,欧洲代表再次遇到了疑惑。按照ITU之前的定义,HDTV必须提供比SDTV更高的运动效果,而SDTV的场频已经是50Hz60Hz,因此采用这种场频的HDTV不能提供比SDTV更好的质量,也就不属于真正的HDTV。不过,考虑到在当时的技术条件下,隔行系统较为现实,ITU会议最终达成了一致,即接受50Hz/60 Hz两种场频和帧频、一种图像格式(1920×1080)及一种数据率,NHK也随着提交了一份ITU-R BT.709建议的新草案。2年后,随着24/25Hz格式的加入,HDTV开始在电影行业崭露头角。

作为一个全球合作项目,709建议书的诞生过程,是智慧的结晶,也是妥协的产物。

               首先,BT601定义了SDTV的色彩空间,BT709也定义了HDTV的色空间,BT709色彩标准不是色域里最丰富的,而是在电视、电影中能看到的影像中最丰富的色彩,同时它也是国际上都遵循的行业标准,如下图中三角部分就是BT709的色空间;


BT709 选用YCbCr 4:2:2的模式,下面是和BT601类似的YCbCr色空间的推导过程:

Y是亮度值,由R,G,B的加权平均可以得到:Y=kr*R +kg*G + kb*B; 这里kr,kb,kg是加权因子。

颜色信号可以由不同的颜色差别来表示:

Cb= B-Y;   Cr =R-Y;  Cg = G-Y

对于一个颜色图像的完整的描述由给定Y和三个色差: Cb, Cr, Cg 来表示。然后Cb+Cr+Cg是一个常数,那么我们只需要两个色度参数就可以了,第三个可以通过其他两个计算出来。在YCbCr空间中,只有YCb,Cr值被传输和存储,而且CbCr的分辨率可以比Y低,因为人类视觉系统对于亮度更加敏感。这就减少了表示图像的数据量。通常的观察情况下,RGBYCbCr表示的图像看上去没有什么不同。对于色度采用比亮度低的分辨率进行采样是一种简单而有效的压缩办法。

一个RGB图像可以在捕捉之后转换为YCbCr格式用来减少存储和传输负担。在显示图象之前,再转回为RGB.注意没有必要去指明分别的加权值kg(因为kb+kr+kg=1),而且G可以从YCbCr中解压出来,这说明不需要存储和传输Cg参数。

Y = kr R + (1-kb-kr)G + kb B

Cb = 0.5/(1-kb) * (B-Y)

Cr = 0.5/(1-kr) * (R-Y)

则:

R = Y + (1-kr)/0.5 * Cr

G = Y - 2kb(1-kb)/(1-kb-kr) * Cb-2kr(1-kr)/(1-kb-kr) * Cr

B = Y + (1-kb)/0.5 * Cb

 

ITU-RBT.709决议定义了Kr= 0.2126  Kb = 0.072那么代换参数就有了如下等式:

Y= 0.2126R + 0.7154G + 0.072B

Cb = 0.5388(B - Y )

Cr = 0.635(R - Y )

Y = 0.2126R + 0.7154G + 0.072B

Cb = (-0.1145R - 0.3855G + 0.500B)

Cr = (0.500R - 0.4543G - 0.0457B)

则:

R = Y + 1.5748Cr

G = Y - 0.1868Cb - 0.4680Cr

B = Y + 1.856Cb

 

CbCr加上偏置,就得到下面的公式:

Y = 0.299R + 0.587G + 0.114B

Cb = (-0.1145R - 0.3855G + 0.500B) +128

Cr =  (0.500R - 0.4543G - 0.0457B) + 128

 关于RGBYCbCr色空间的详细介绍,请参考前文视频基本原理--RGB to YUV&YCbCr


ITU-R BT.709 建议书内,对1125行和1250行系统HDTV(高清晰度电视)已经确立了演播室标准,标准中包含有有关常规电视的系统以及像素平方通用图像格式(CIF)逐行扫描的系统;

 ITU-R BT.709 建议书中包含下列HDTV演播室标准,以覆盖宽广的应用范围:

常规电视系统方面:

总行数11252:1 隔行扫描,场频60Hz,有效行1035

总行数12502:1 隔行扫描,场频50Hz,有效行1152

CIF 系统(1920×1080)方面:

总行数1125,有效行1080

图像频率60503025 24 Hz,包括逐行、隔行和帧分段传输;

对于1125/60/2:1 系统,表示图像信号的数字码字借助于2030对屏蔽导线并行地传输。20对导线应用于传输由亮度Y和时分复用的色差CB/CR分量组成的信号集合,30对导线应用于传输RGB 信号或是传输带有附加数据流(辅助信道)的YCB/CR 分量。一对附加的屏蔽导线运载74.25MHz 的同步时钟。

对于基于CIF格式的HDTV系统,格式标准汇总如下表:


下面是数字编码参数:


所以,常用的1080P
50/60HZ
148.5Mhz的数据采样率,1080i50/60HZ 或者1080P 25/30Hz 则是74.25Mhz的数据采样率。时钟信号规范如下图所示:


BT1120是高清晰度电视(HDTV) 演播室信号BT709规范的数字接口,因为BT1120采样YCbCr422模式,所以一般是16bit/20bit的数据流通道加上一个采样时钟通道。

数字接口是在单个信号源与单个目的端之间提供单向连接,数据信号为二进制信息形式,相应的编码的信号有:

1  图像数据

2  定时基准码

3  附属数据

        BT1120标准中说明的图像数据指的是图像的有效尺寸的数据。而其中定时基准码包括SAVEAV信号;SAVEAV中间又包括消隐区附属数据;详细内容如下图所示:


上图我们看到视频中的某一帧的状态。L1L2 是帧消隐区,同样 
L5
L6也是帧消隐区。我们看看下图,来说明各个参数的意义。


从上图我们看到了再L3 L4行之间才是真正的有用的1080行视频数据。举个例子,1920x1080P60Hz格式的时序为例,BT1120规定一个时钟传输一个像素16bit/20bitYCbCr),那么一秒钟需要多少个时钟呢?下面简单的换算下,像素的总行数(1125x像素的总列数(2200x  帧率(60=148.5M; VESA规范中定义的1080P 60Hz时序,像素时钟也即是148.5M,如下图所示。


对于每行的数据的格式,BT656类似,由EAV 作为一行有效数据结束,SAV 作为一行有效数据开始,而SAVEAV中间又包括消隐区附属数据,如下图所示:


由上面的格式,我们可以看到每一行在视频传输过程中的格式。在定时基准码的前3个字节是恒定的。FF , 00 , 00, 第四个字节XY是我们需要分析的。


上图给出的数值是为10比特接口的建议值。如果是8比特的系统取高八位就可以了。4字节XY中:

F是奇偶场标志,F=0/1对应第1/2场;

V表示场同步,V=0/1表示对应有效行/场消隐行;

H是行同步信号,H=0/1对应行有效视频开始处(SAV)/行有效视频结束处(EAV)

P0P1P2P3:保护比特,P0P1P2P3 比特的状态决定于FV 比特的状态,在接收机中,这种安排容许纠正l比特误码和检出2比特误码。具体逻辑如下:

P3 = V xor H

P2 = F xor H

P1 = F xor V

P0 = F xor V xor H

 

结果参考下表:


通过以上分析,就应该可以知道EAV SAV可以填什么数据了。也知道
BT1120
每行的数据格式。

    在实际的使用中,因为现在的视频接收接口器件一般要求全制式,全格式支持,在后端数字输出接口标注的时候不是很严格区分BT656BT1120的区别,一般会指出支持BT656模式或者BT1120模式,指的就是支持带EAV/SAV的内嵌同步模式。对于8bit/10bit数据总线,SDTVNTSC/PAL  480i/576i)的分辨率就是BT656模式,16bit/20bitHDTV分辨率就是BT1120模式。


come from:https://sanwen8.cn/p/4a2pBem.html


http://chatgpt.dhexx.cn/article/4bqLmyWJ.shtml

相关文章

codeql

title: codeql categories: javacodeql date: YYYY-MM-DD HH:mm:ss tags:javacodeql代码审计 codeql 下一个靶场来测试 https://github.com/l4yn3/micro_service_seclab/ 引擎安装(codeql) https://github.com/github/codeql-cli-binaries/releases SDK安装(ql) https:/…

VScode连接SQL Server数据库执行语句

VScode的下载地址:VScode官网 推荐插件:VScode实现HTML的编写、运行和调试&推荐插件 sql文件中文乱码:解决VScode打开文件后中文显示为乱码 安装SQL Server (mssql)拓展 连接到SQL Server 按Ctrl Shift P或F1以打开命令面板输入sql…

【DB2报错】创建存储过程报SQLSTATE:-104 SQLCODE:42601

今天创建存储过程的时候碰到这个报错: AN unexpected tkoen "END-OF-STATEMENT" was found following "COMMIT",Expected tokens may include:"END IF"..SQLSTATE:-104 SQLCODE:42601 翻译:在“COMMIT”之后发现了一个异…

TinyXML2下载与编译

最近有使用到用XML格式来封装UDP报文,所以研究下TinyXML。 TinyXML下载地址: https://github.com/leethomason/tinyxml2 进入到tinyxml2文件目录下,找到.sln文件(解决方案文件) 直接用VS2010以上版本打开&#xff0…

C++ 使用 tinyxml2 解析创建 xml

目录 1. github 地址 2. 使用 3. 解析xml demo 4. 注意点 5. 解析效果展示 6.创建xml 7.创建xml效果展示 8. 完整的示例,添加Vector 9. 参考 1. github 地址 GitHub - leethomason/tinyxml2: TinyXML2 is a simple, small, efficient, C XML parser that …

TinyXML2 学习

换cocos2d-x版本到2.1.3之后,自己的文件读写也用了引擎CCUserDefault使用的TinyXML2,在这汇总了一下TinyXML2的使用,希望大家看这一篇文章就可以解决自己的问题,省得到处查阅…… 注意,文章一次解释了写操作->读操…

Tiny-XML

Tiny-XML 2023-01-15:基于C语言实现的小型XML解析器 解析代码实现仅600余行大部分数据结构使用链表实现,malloc、free、realloc、strdup函数已在文件开头使用宏定义设置,方便移植于别的平台项目注释内容丰富,数据结构和常用函数方法已于文件…

xml开发笔记(一):tinyXml2库介绍、编译和工程模板

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/111828450 长期持续带来更多项目与技术分享,咨询请加QQ:21497936、微信:yangsir198808 红胖子(红模仿)的博文大全&#x…

tinyxml2的安装使用及示例总结

TinyXml2 库使用方法 安装 下载地址 https://github.com/leethomason/tinyxml2 使用 git 下载 (1)下载 tinyxml2 git clone https://github.com/leethomason/tinyxml2.git (2)进入相应目录并编译 cd tinyxml2/ cmake . make &…

C++使用TinyXml2解析Xml

1. TinyXml2 简介 TinyXml 一直是一个非常好用的 Xml 解析工具 , 最新的开源版本 TinyXml2 相对于旧版本的 TinyXml 使用更少的内存 , 更快 , 并且使用更少的内存分配 , 现在是所有开发的重点 , 经过良好的测试 , 是您的最佳选择 , 除非您有维护TinyXML-1代码的要求 ; TinyX…

使用tinyxml2库解析xml

tinyxml2简介 tinyxml2是c编写的轻量级的xml解析器,而且是开放源代码的,在一些开源的游戏引擎中用的比较多。源码托管在github上。 源码地址:https://github.com/leethomason/tinyxml2 tinyxml2使用起来非常简单,下载源码后无需…

TinyXml学习笔记

TinyXml学习笔记 张弛<> 注:本文的最新版本可以在下面的地址找到 http://amidiot.512j.com/article/tinyxml/tinyxml_note.htm 一、 TinyXml的特点 TinyXml是一个基于DOM模型的、非验证的轻量级C解释器。 1. SAX和DOM 目前XML的解析主要有两大模型&#…

TinyXml使用详解

本文用一个详细的例子说明了TinyXml的使用方法。如写、查找、插入、替换、加载、遍历等常见操作。 首先简单介绍一下TinyXml,要看详细的在网上搜搜了^_^: 1、TinyXml源代码只有4个cpp文件和2个头文件。 2、首先要理解TinyXml中的各个基本类型之间的关系,看看这个继承图大家…

TinyXML2使用教程

TinyXML2使用教程 原文转自 http://blog.csdn.net/K346K346/article/details/48750417 1.TinyXML2概述 TinyXML2是simple、small、efficient开源的C XML文件解析库&#xff0c;可以很方便的应用到现有的项目之中。非常适合存储简单数据&#xff0c;配置文件&#xff0c;对象…

TinyXML使用方法

TinyXML 使用说明 TinyXML是一个C的XML解析库&#xff0c;网上的评价都不错&#xff0c;是一个轻量级的XML解析库。关于TinyXML使用的文章有很多&#xff0c;而且官方也有完整的文档&#xff0c;这里只是简单把自己使用记录写下来&#xff0c;方便以后查阅。 一个XML文档例子&…

C++ 本地使用tinyxml2解析Xml文件

1、基本介绍 TinyXML2是一个开源、简单、小巧、高效的C XML解析器&#xff0c;它只有一个.h文件和一个.cpp文件组成&#xff0c;可以轻松集成到其它程序中。非常方便我们使用c对xml进行处理。 可以读取、修改和保存的文档对象模型(Document Object Model, DOM)。它不能解析DTD…

快速上手 TinyXML-2 不完全教程

TinyXML-2 不完全教程 XML 作为程序开发中非常常用的数据文档之一&#xff0c;各个语言或是开发环境都有对应的用于处理 XML 文件的库。在 C 语言中&#xff0c;TinyXML-2 就是这样的一个库。 TinyXML-2 是一个简单&#xff0c;小巧&#xff0c;高性能的 C 的 XML 解析器&…

开源库TinyXML2简介及使用

TinyXML2是一个开源、简单、小巧、高效的C XML解析器&#xff0c;它只有一个.h文件和一个.cpp文件组成&#xff0c;可以轻松集成到其它程序中。它解析XML文档并从中构建可以读取、修改和保存的文档对象模型(Document Object Model, DOM)。它不能解析DTD(Document Type Definiti…

c/c++操作xml库-Tinyxml2入门及高级用法

一、概念 TinyXML2是一个开源、简单、小巧、高效的C XML解析器&#xff0c;它只有一个.h文件和一个.cpp文件组成&#xff0c;可以轻松集成到其它程序中。它解析XML文档并从中构建可以读取、修改和保存的文档对象模型(Document Object Model, DOM)。它不能解析DTD(Document Typ…

关于Anaconda卸载干净的问题【已解决】

在卸载anaconda时&#xff0c;为了卸载干净&#xff0c;一般会在win10自带的 应用与功能中选择anaconda 进行卸载。 &#xff0c;也可以用anaconda文件中卸载程序Uninstall-Anaconda3.exe进行卸载。 然后再把相应路径下的剩余文件删掉。 但是&#xff01; 这还不够&#xff0c…