数字视频简介
引言 这是一篇翻译的文章,目前我也找不到原文在哪里了,先把自己空闲时边看边翻译的译文贴出来,希望对刚入行的兄弟们有所帮助。
正文 本文对BT656(4:2:2)YCbCr标准定义的8位数字视频格式做简单介绍。当然,本文不对整个视频标准的细节做详细介绍,只是从应用的角度做介绍。 • Frames 一帧交织的视频由两个视频区域近乎完全重叠场组成。第一场存放奇场视频,第二场存放偶场视频。 • Fields 一场视频由三个独立的区域构成,第一空白区域,有效视频区域和第二空白区域。两场之间的唯一区别是第一空白区域的线数目不同,第一场的第一空白区域线数目要比第二场少一条。 NTSC/PAL制式视频帧(包括两场)如下: Lines Field/VBlk Line PAL NTSC F V Description 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 有两个非常重要的参数,F(Field Number)奇偶场标签和V(Vertical Blanking)竖直空白区域。这两个参数控制了竖直方向开始的行位置。F值为逻辑0表示这些视频线处于Field 1,同理逻辑1表示这些视频线处于Filed 2。V值为逻辑0表示这些视频线属于有效视频区域,同理逻辑1表示这些视频线属于竖直空白区域。 • Lines 视频线由四部分组成,EAV Code,Blanking Video,SAV Code以及Active Video。如下表所示: EAV Code Blanking Video SAV Code Active Video 255 0 0 EAV Cb Y Cr Y 255 0 0 SAV Cb Y Cr Y 4Bytes 280(268)Bytes 4Bytes 1440Bytes EAV(End Active Video)有效视频结束和SAV(Start Active Video)有效视频开始码都由四个字节组成。前三个字节用于视频同步,最后一个字节用于视频线编码。 到目前为止还没有讨论的参数是H(Horizontal Blanking)水平空白区域。在EAV Code,Blanking Video和SAV Code中H值为逻辑1,在有效视频区域(Active Video)该值为逻辑0。 注意: 上面说Horizontal Blanking水平空白区域标志H值在SAV中为逻辑1,但是并非如此。SAV中的H值应该为逻辑0,即使当前H值本身为逻辑1。这样的情况应该特别注意! EAV和SAV位结构组成相同,如下表: Bit: 7 6 5 4 3 2 1 0 Value: ’1’ F V H V xor H F xor H F xor V F xor V xor H 异或位可以用于检测和纠正F,V和H值。如果有一个或两个成员出错通过异或位成员纠错。 空白视频线有280字节(PAL)或268字节(NTSC),有效视频线有1440字节(PAL & NTSC)。这些字节按照Cb、Y、Cr、Y序列排列,其含义如下表: Y 亮度值(正常取值范围16∼235) Cb 蓝色色度分量值(正常取值范围16∼240) Cr 红色色度分量值(正常取值范围16∼240) 亮度色度空间和RGB空间区别比较大,有时需要相互转换,转换的公式如下: Y = 16 + 0.257R + 0.504G + 0.098B Cb = 128 + 0.148R − 0.291G + 0.439B Cr = 128 + 0.439R − 0.368G − 0.071B R = 1.164(Y − 16) + 1.596(Cr − 128) G = 1.164(Y − 16) − 0.813(Cr − 128) − 0.391(Cb − 128) B = 1.164(Y − 16) + 2.018(Cb − 128) 公式实现R(0∼255)、G(0∼255)、B(0∼255)与Y(16∼235)、Cb(16∼240)、Cr(16∼240)之间相互转换。 每两个Y值之间存在一个Cb或Cr值,因此在由RGB转换时必须注意。有很多采样方法,最简便的两种是一次转换一个或两个像数点。 • One Pixel Interleave 使用上面的转换公式一次转换一个RGB像数点,偶场像数点使用蓝色色度分量值奇场像数点使用红色色度分量值: P ixel1 : Y = 16 + 0.257R0 + 0.504G0 + 0.098B0 Cb = 128 − 0.148R0 − 0.291G0 + 0.439B0 P ixel2 : Y = 16 + 0.257R1 + 0.504G1 + 0.098B1 Cb = 128 − 0.148R1 − 0.291G1 + 0.439B1 最终转换结果:(R0 , G0 , B0 ),(R1 , G1 , B1 )转换为(Cb0 , Y0 ),(Cr1 , Y1 ),以此类推。 • Two Pixel Average 使用上面的转换公式一次转换两个RGB像数点,蓝色色度分量值和红色色度分量值求平均后使用: P ixel1 : Y0 = 16 + 0.257R0 + 0.504G0 + 0.098B0 Cb0 = 128 − 0.148R0 − 0.291G0 + 0.439B0 Cr0 = 128 + 0.439R0 − 0.368G0 − 0.071B0 P ixel2 : Y1 = 16 + 0.257R1 + 0.504G1 + 0.098B1 Cb1 = 128 − 0.148R1 − 0.291G1 + 0.439B1 Cr1 = 128 + 0.439R1 − 0.368G1 − 0.071B1 Average : Cb01 = (Cb0 + Cb1 )/2 Cr01 = (Cr0 + Cr1 )/2 最终转换结果:(R0 , G0 , B0 ),(R1 , G1 , B1 )转换为(Cb01 , Y0 , Cr01 , Y1 ),以此类推。 • The Complete Picture 最简单的单色屏幕YCbCr值通过下面计算公式计算获得。蓝色RGB值为Red = 0,Green = 0,Blue = 255,使用下面转换公式获取YCbCr值: Y = 16 + 0.257(0) + 0.504(0) + 0.098(255) = 41 Cb = 128 − 0.148(0) + 0.291(0) + 0.439(255) = 240 Cr = 128 + 0.439(0) − 0.368(0) − 0.071(255) = 110 当没有接收到图像和声音信号没有时通常使用黑色像数点显示空白区域,使用下面转换公式获取YCbCr值: Y = 16 + 0.257(0) + 0.504(0) + 0.098(0) = 16 Cb = 128 − 0.148(0) + 0.291(0) + 0.439(0) = 128 Cr = 128 + 0.439(0) − 0.368(0) − 0.071(0) = 128 使用上面提到的帧、场和线的描述,一个满屏蓝色PAL制式视频构成如下(NTSC制式值在括号中): Field 1 - First Vertical Blanking(Top) - Repeat for 22(19) lines EAV Code Blanking Video SAV Code Active Video 255 0 0 182 128 16 128 16 255 0 0 171 128 16 128 16 Repeat1(1)time Repeat70(67)times Repeat1(1)time Repeat360(360)times Field 1 - Active Video - Repeat for 288(240)lines EAV Code Blanking Video SAV Code Active Video 255 0 0 157 128 16 128 16 255 0 0 128 240 41 110 41 Repeat1(1)time Repeat70(67)times Repeat1(1)time Repeat360(360)times Field 1 - Second Vertical Blanking(Bottom) - Repeat for 2(3)lines EAV Code Blanking Video SAV Code Active Video 255 0 0 182 128 16 128 16 255 0 0 171 128 16 128 16 Repeat1(1)time Repeat70(67)times Repeat1(1)time Repeat360(360)times Field 2 - First Vertical Blanking(Top) - Repeat for 23(20)lines EAV Code Blanking Video SAV Code Active Video 255 0 0 241 128 16 128 16 255 0 0 236 128 16 128 16 Repeat1(1)time Repeat70(67)times Repeat1(1)time Repeat360(360)times Field 2 - Active Video - Repeat for 288(240)lines EAV Code Blanking Video SAV Code Active Video 255 0 0 218 128 16 128 16 255 0 0 199 240 41 110 41 Repeat1(1)time Repeat70(67)times Repeat1(1)time Repeat360(360)times Field 2 - Second Vertical Blanking(Bottom) - Repeat for 2(3)lines EAV Code Blanking Video SAV Code Active Video 255 0 0 241 128 16 128 16 255 0 0 236 128 16 128 16 Repeat1(1)time Repeat70(67)times Repeat1(1)time Repeat360(360)times | | |
阅读(1222) | 评论(0) | 转发(0) |