引言
这是一篇翻译的文章,目前我也找不到原文在哪里了,先把自己空闲时边看边翻译的译文贴出来,希望对刚入行的兄弟们有所帮助。
正文
本文对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
结束语
遗憾的是当时没有翻译完,待我下次找到原文再对本文完善。
|
文件: | a_brief_introduction_to_digital_video.pdf |
大小: | 153KB |
下载: | 下载 |
|