打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
RGB-YUV的数字与模拟分析
关于RGB、YUY2、YUYV、YVYU、UYVY、AYUV【转】
DirectShow中常见的RGB/YUV格式
文章来源:http://hqtech.nease.net
原文作者: 陆其明
小知识:RGB与YUV----摘自《DirectShow实务精选》 作者:陆其明
计 算机彩色显示器显示色彩的原理与彩色电视机一样,都是采用R(Red)、G(Green)、B(Blue)相加混色的原理:通过发射出三种不同强度的电子 束,使屏幕内侧覆盖的红、绿、蓝磷光材料发光而产生色彩。这种色彩的表示方法称为RGB色彩空间表示(它也是多媒体计算机技术中用得最多的一种色彩空间表 示方法)。
根据三基色原理,任意一种色光F都可以用不同分量的R、G、B三色相加混合而成。
F = r [ R ] + g [ G ] + b [ B ]
其中,r、g、b分别为三基色参与混合的系数。当三基色分量都为0(最弱)时混合为黑色光;而当三基色分量都为k(最强)时混合为白色光。调整r、g、b三个系数的值,可以混合出介于黑色光和白色光之间的各种各样的色光。
那 么YUV又从何而来呢?在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD摄像机进行摄像,然后把摄得的彩色图像信号经分色、分别放大校正后得到 RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送 出去。这种色彩的表示方法就是所谓的YUV色彩空间表示。
采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。
YUV与RGB相互转换的公式如下(RGB取值范围均为0-255):
Y = 0.299R + 0.587G + 0.114B
U = -0.147R - 0.289G + 0.436B
V = 0.615R - 0.515G - 0.100B
R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U
在DirectShow 中,常见的RGB格式有RGB1、RGB4、RGB8、RGB565、RGB555、RGB24、RGB32、ARGB32等;常见的YUV格式有 YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、 YUV420等。作为视频媒体类型的辅助说明类型(Subtype),它们对应的GUID见表2.3。
表2.3 常见的RGB和YUV格式
GUID 格式描述
MEDIASUBTYPE_RGB1 2色,每个像素用1位表示,需要调色板
MEDIASUBTYPE_RGB4 16色,每个像素用4位表示,需要调色板
MEDIASUBTYPE_RGB8 256色,每个像素用8位表示,需要调色板
MEDIASUBTYPE_RGB565 每个像素用16位表示,RGB分量分别使用5位、6位、5位
MEDIASUBTYPE_RGB555 每个像素用16位表示,RGB分量都使用5位(剩下的1位不用)
MEDIASUBTYPE_RGB24 每个像素用24位表示,RGB分量各使用8位
MEDIASUBTYPE_RGB32 每个像素用32位表示,RGB分量各使用8位(剩下的8位不用)
MEDIASUBTYPE_ARGB32 每个像素用32位表示,RGB分量各使用8位(剩下的8位用于表示Alpha通道值)
MEDIASUBTYPE_YUY2 YUY2格式,以4:2:2方式打包
MEDIASUBTYPE_YUYV YUYV格式(实际格式与YUY2相同)
MEDIASUBTYPE_YVYU YVYU格式,以4:2:2方式打包
MEDIASUBTYPE_UYVY UYVY格式,以4:2:2方式打包
MEDIASUBTYPE_AYUV 带Alpha通道的4:4:4 YUV格式
MEDIASUBTYPE_Y41P Y41P格式,以4:1:1方式打包
MEDIASUBTYPE_Y411 Y411格式(实际格式与Y41P相同)
MEDIASUBTYPE_Y211 Y211格式
MEDIASUBTYPE_IF09 IF09格式
MEDIASUBTYPE_IYUV IYUV格式
MEDIASUBTYPE_YV12 YV12格式
MEDIASUBTYPE_YVU9 YVU9格式
下面分别介绍各种RGB格式。
¨ RGB1、RGB4、RGB8都是调色板类型的RGB格式,在描述这些媒体类型的格式细节时,通常会在BITMAPINFOHEADER数据结构后面跟着 一个调色板(定义一系列颜色)。它们的图像数据并不是真正的颜色值,而是当前像素颜色值在调色板中的索引。以RGB1(2色位图)为例,比如它的调色板中 定义的两种颜色值依次为0x000000(黑色)和0xFFFFFF(白色),那么图像数据001101010111…(每个像素用1位表示)表示对应各 像素的颜色为:黑黑白白黑白黑白黑白白白…。
¨ RGB565使用16位表示一个像素,这16位中的5位用于R,6位用于G,5位用于B。程序中通常使用一个字(WORD,一个字等于两个字节)来操作一个像素。当读出一个像素后,这个字的各个位意义如下:
高字节 低字节
R R R R R G G G G G G B B B B B
可以组合使用屏蔽字和移位操作来得到RGB各分量的值:
#define RGB565_MASK_RED 0xF800
#define RGB565_MASK_GREEN 0x07E0
#define RGB565_MASK_BLUE 0x001F
R = (wPixel & RGB565_MASK_RED)>> 11; // 取值范围0-31
G = (wPixel & RGB565_MASK_GREEN) >> 5; // 取值范围0-63
B = wPixel & RGB565_MASK_BLUE; // 取值范围0-31
¨ RGB555是另一种16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。使用一个字读出一个像素后,这个字的各个位意义如下:
高字节 低字节
X R R R R R GG       G G G B B B B B (X表示不用,可以忽略)
可以组合使用屏蔽字和移位操作来得到RGB各分量的值:
#define RGB555_MASK_RED 0x7C00
#define RGB555_MASK_GREEN 0x03E0
#define RGB555_MASK_BLUE 0x001F
R = (wPixel & RGB555_MASK_RED)>> 10; // 取值范围0-31
G = (wPixel & RGB555_MASK_GREEN) >> 5; // 取值范围0-31
B = wPixel & RGB555_MASK_BLUE; // 取值范围0-31
¨ RGB24使用24位来表示一个像素,RGB分量都用8位表示,取值范围为0-255。注意在内存中RGB各分量的排列顺序为:BGR BGR BGR…。通常可以使用RGBTRIPLE数据结构来操作一个像素,它的定义为:
typedef struct tagRGBTRIPLE {
BYTE rgbtBlue; // 蓝色分量
BYTE rgbtGreen; // 绿色分量
BYTE rgbtRed; // 红色分量
} RGBTRIPLE;
¨ RGB32使用32位来表示一个像素,RGB分量各用去8位,剩下的8位用作Alpha通道或者不用。(ARGB32就是带Alpha通道的 RGB32。)注意在内存中RGB各分量的排列顺序为:BGRA BGRA BGRA…。通常可以使用RGBQUAD数据结构来操作一个像素,它的定义为:
typedef struct tagRGBQUAD {
BYTE rgbBlue; // 蓝色分量
BYTE rgbGreen; // 绿色分量
BYTE rgbRed; // 红色分量
BYTE rgbReserved; // 保留字节(用作Alpha通道或忽略)
} RGBQUAD;
下 面介绍各种YUV格式。YUV格式通常有两大类:打包(packed)格式和平面(planar)格式。前者将YUV分量存放在同一个数组中,通常是几个 相邻的像素组成一个宏像素(macro-pixel);而后者使用三个数组分开存放YUV三个分量,就像是一个三维平面一样。表2.3中的YUY2到 Y211都是打包格式,而IF09到YVU9都是平面格式。(注意:在介绍各种具体格式时,YUV各分量都会带有下标,如Y0、U0、V0表示第一个像素 的YUV分量,Y1、U1、V1表示第二个像素的YUV分量,以此类推。)
¨ YUY2(和YUYV)格式为每个像素保留Y分量,而UV分量在水平方向上每两个像素采样一次。一个宏像素为4个字节,实际表示2个像素。(4:2:2的意思为一个宏像素中有4个Y分量、2个U分量和2个V分量。)图像数据中YUV分量排列顺序如下:
Y0 U0 Y1 V0 Y2 U2 Y3 V2 …
¨ YVYU格式跟YUY2类似,只是图像数据中YUV分量的排列顺序有所不同:
Y0 V0 Y1 U0 Y2 V2 Y3 U2 …
¨ UYVY格式跟YUY2类似,只是图像数据中YUV分量的排列顺序有所不同:
U0 Y0 V0 Y1 U2 Y2 V2 Y3 …
¨ AYUV格式带有一个Alpha通道,并且为每个像素都提取YUV分量,图像数据格式如下:
A0 Y0 U0 V0 A1 Y1 U1 V1 …
¨ Y41P(和Y411)格式为每个像素保留Y分量,而UV分量在水平方向上每4个像素采样一次。一个宏像素为12个字节,实际表示8个像素。图像数据中YUV分量排列顺序如下:
U0 Y0 V0 Y1 U4 Y2 V4 Y3 Y4 Y5 Y6 Y8 …
¨ Y211格式在水平方向上Y分量每2个像素采样一次,而UV分量每4个像素采样一次。一个宏像素为4个字节,实际表示4个像素。图像数据中YUV分量排列顺序如下:
Y0 U0 Y2 V0 Y4 U4 Y6 V4 …
¨ YVU9格式为每个像素都提取Y分量,而在UV分量的提取时,首先将图像分成若干个4 x 4的宏块,然后每个宏块提取一个U分量和一个V分量。图像数据存储时,首先是整幅图像的Y分量数组,然后就跟着U分量数组,以及V分量数组。IF09格式与YVU9类似。
¨ IYUV格式为每个像素都提取Y分量,而在UV分量的提取时,首先将图像分成若干个2 x 2的宏块,然后每个宏块提取一个U分量和一个V分量。YV12格式与IYUV类似。
¨ YUV411、YUV420格式多见于DV数据中,前者用于NTSC制,后者用于PAL制。YUV411为每个像素都提取Y分量,而UV分量在水平方向上 每4个像素采样一次。YUV420并非V分量采样为0,而是跟YUV411相比,在水平方向上提高一倍色差采样频率,在垂直方向上以U/V间隔的方式减小 一半色差采样,如图2.12所示。
颜色问题:
我们在DVDRIP或内嵌的时候,通常会遇到一些关于颜色方面的术语,比如YUV、RGB、YV12、4:2:2、4:2:0等等。不少人刚接触到这些东西的时候,会觉得晕头转向,不知所云。
再如,不少文章中强调影片在VDM处理的过程中要选Fast recompress,但是Fast recompress、Normal recompress、Full processing mode之间又有什么区别呢?
本文来一一为您解答这些问题。
本 文是一篇总结性的文章,所以不少段落都是直接摘自其他的文章的。在这里向原作者表示谢意。本文参考了原载于DVD Benchmark由Don Munsil & StaceySpears原作的《The Chroma Upsampling Error(颜色Upsampling错误)》和Silky的文章。
1.什么是RGB?
RGB是红绿蓝三原色的意思,R=Red、G=Green、B=Blue。
2.什么是YUV/YCbCr/YPbPr?
亮 度信号经常被称作Y,色度信号是由两个互相独立的信号组成。视颜色系统和格式不同,两种色度信号经常被称作U和V或Pb和Pr或Cb和Cr。这些都是由不 同的编码格式所产生的,但是实际上,他们的概念基本相同。在DVD中,色度信号被存储成Cb和Cr(C代表颜色,b代表蓝色,r代表红色)。
3.什么是4:4:4、4:2:2、4:2:0?
在 最近十年中,视频工程师发现人眼对色度的敏感程度要低于对亮度的敏感程度。在生理学中,有一条规律,那就是人类视网膜上的视网膜杆细胞要多于视网膜锥细 胞,说得通俗一些,视网膜杆细胞的作用就是识别亮度,而视网膜锥细胞的作用就是识别色度。所以,你的眼睛对于亮和暗的分辨要比对颜色的分辨精细一些。正是 因为这个,在我们的视频存储中,没有必要存储全部颜色信号。既然眼睛看不见,那为什么要浪费存储空间(或者说是金钱)来存储它们呢?
像Beta或VHS之类的消费用录像带就得益于将录像带上的更多带宽留给黑—白信号(被称作“亮度”),将稍少的带宽留给彩色信号(被称作“色度”)。
在MPEG2(也就是DVD使用的压缩格式)当中,Y、Cb、Cr信号是分开储存的(这就是为什么分量视频传输需要三条电缆)。其中Y信号是黑白信号,是以全分辨率存储的。但是,由于人眼对于彩色信息的敏感度较低,色度信号并不是用全分辨率存储的。
色 度信号分辨率最高的格式是4:4:4,也就是说,每4点Y采样,就有相对应的4点Cb和4点Cr。换句话说,在这种格式中,色度信号的分辨率和亮度信号的 分辨率是相同的。这种格式主要应用在视频处理设备内部,避免画面质量在处理过程中降低。当图像被存储到Master Tape,比如D1或者D5,的时候,颜色信号通常被削减为4:2:2。
[center]
在图一中,你可以看到4:4:4格式的亮度、色度采样分布。就像图中所表示的,画面中每个象素都有与之对应的色度和亮度采样信息。[/center]
其 次就是4:2:2,就是说,每4点Y采样,就有2点Cb和2点Cr。在这种格式中,色度信号的扫描线数量和亮度信号一样多,但是每条扫描线上的色度采样点 数却只有亮度信号的一半。当4:2:2信号被解码的时候,“缺失”的色度采样,通常由一定的内插补点算法通过它两侧的色度信息运算补充。
[center]
图 二表示了4:2:2格式亮度、色度采样的分布情况。在这里,每个象素都有与之对应的亮度采样,同时一半的色度采样被丢弃,所以我们看到,色度采样信号每隔 一个采样点才有一个。当着张画面显示的时候,缺少的色度信息会由两侧的颜色通过内插补点的方式运算得到。就像上面提到的那样,人眼对色度的敏感程度不如亮 度,大多数人并不能分辨出4:2:2和4:4:4颜色构成的画面之间的不同。[/center]
色度信号分辨率最低的格式,也就是DVD所使用的 格式,就是4:2:0了。事实上4:2:0是一个混乱的称呼,按照字面上理解,4:2:0应该是每4点Y采样,就有2点Cb和0点Cr,但事实上完全不是 这样。事实上,4:2:0的意思是,色度采样在每条横向扫描线上只有亮度采样的一半,扫描线的条数上,也只有亮度的一半!换句话说,无论是横向还是纵向, 色度信号的分辨率都只有亮度信号的一半。举个例子,如果整张画面的尺寸是720*480,那么亮度信号是720*480,色度信号只有360*240。在 4:2:0中,“缺失”的色度采样不单单要由左右相邻的采样通过内插补点计算补充,整行的色度采样也要通过它上下两行的色度采样通过内插补点运算获得。这 样做的原因是为了最经济有效地利用DVD的存储空间。诚然,4:4:4的效果很棒,但是如果要用4:4:4存储一部电影,我们的DVD盘的直径至少要有两 英尺(六十多厘米)!
[center]
图三表示了概念上4:2:0颜色格式非交错画面中亮度、色度采样信号的排列情况。同4:2:2格式 一样,每条扫描线中,只有一半的色度采样信息。与4:2:2不同的是,不光是横向的色度信息被“扔掉”了一半,纵向的色度信息也被“扔掉”了一半,整个屏 幕中色度采样只有亮度采样的四分之一。请注意,在4:2:0颜色格式中,色度采样被放在了两条扫描线中间。为什么会这样呢?很简单:DVD盘上的颜色采样 是由其上下两条扫描线的颜色信息“平均”而来的。比如,图三中,第一行颜色采样(Line 1和Line 2中间夹着的那行)是由Line 1和Line 2“平均”得到的,第二行颜色采样(Line 3和Line 4中间夹着的那行)也是同样的道理,是由Line 3和Line 4得到的。
虽然文章中多次提到“平均”这个概念,但是这个“平均”可不是我们通常意义上的(a+B)/2的平均。颜色的处理有极其复杂的算法保证其最大限度地减少失真,接近原始质量。[/center]
4.什么是YV12,什么是YUY2?
在个人计算机上,这些YUV读出来以后会以一些格式包装起来,送给软件或硬件处理。包装的方式分成两种,一种是Packed format,把Y和相对应的UV包在一起。另一种是Planar format,把Y和U和V三种分别包装,拆成三个plane(平面)。
其中YV12和YUY2都是一种YUV的包装格式,而且两种都是Packed format。(实际上,只有YUY2才是Packed format,而YV12则是属于Planar format。)
YV12和YUY2的不同,在于YV12是YUV4:2:0格式,也就是DVD/VCD上原本储存的格式。YUY2则是YUV4:2:2格式。
5.为什么影片在VDM处理的过程中要选Fast recompress?
选择Fast recompress的原因,现得从Avisynth 2.5讲起。
Avisynth 2.5最大的特色,就是支持YV12直接处理。我们知道原始MPEG数据是YUV4:2:0,也就是YV12的格式,以前我们在做DivX/XviD压缩的时候,处理流程是:
DVD/VCD(YUV 4:2:0) -> DVD2AVI(YUV4:2:0 ->YUV4:2:2 ->YUV4:4:4 -> RGB24) -> VFAPI(RGB24) ->TMPGEnc/AviUtl/VirtualDub(RGB24) -> DivX/XviD Codec(RGB24 ->YUV4:2:0)-> MPEG-4(YUV 4:2:0)
ps. VFAPI 内部只能以 RGB24 传递数据,所以会转成 RGB24 输出
或是
DVD/VCD(YUV 4:2:0) ->MPG2DEC.DLL(YUV 4:2:0 ->YUV4:2:2) -> Avisynth 2.0.x(只能用支援YUV4:2:2 的滤镜,不能用 RGB24/32 的 filter) ->VirtualDub(YUV 4:2:2,不能使用 VD 的 filter,因为 VD 的 filetr 都是在 RGB32 上处理,压缩时要选 Fast recompress,才会直接原封不动的送YUV4:2:2,也就是 YUY2 的数据给 Codec 压缩) -> DivX/XviDCodec(YUV 4:2:2 ->YUV4:2:0) -> MPEG-4(YUV 4:2:0)
所以以前的处理流程中间要经过好几次YUV<-> RGB 的转换。这个转换是有损的,做得越多次,原始的色彩信息就损失的越严重。而且这个转换的计算又耗时(这就可以解释为什么我们将YV12转为RGB输出时会卡的多,不过,RGB的品质真的更高的多
)。那么有人(Marc FD)就想到,反正最后转成 MPEG 都要存成YUV4:2:0 的格式,那么为什么不干脆一路到底,全程都以YV12处理,也就是所有的 filter 都改写成YV12的版本,直接在YV12上做调整色彩、滤噪讯、IVTC 等工作,这样:
1. 处理的数据量少。(YV12的资料,UV 比YUY2少一半,比RGB 24/32少更多)
2. 不用转换计算
所以速度快。再加上又可以避免YUV<-> RGB 转换的损失,岂不是一举两得?
所以支持YV12的 Avisynth 2.5 就诞生了。
但 是目前VirtualDub还是不支持 YV12,即使选 Fast recompress,VD还是会将YV12的输入转为 YUY2。所以要得到全程YV12处理的好处,必须使用VirtualDubMod才行,这个改版才有支持YV12。只有在选择Fast recompress的时候,VDM才不会进行任何处理,直接将数据丢给编码器压缩,这样就能保留YV12,实现了全程YV12。
RGB颜色表示系统
1.相加混色和相减混色
相加混色是由发光体发出的光相加而产生的颜色,而相减混色是先有白色光,而后从中减去某些成分(吸收)得到各种彩色;相加混色的三基色是红、绿、蓝(RGB),而相减混色的三基色是青(Cyan)、品(Magenta)、黄(Yellow)(CMY,一般不确切的说成是黄、蓝、红);相加混色和相减混色有不同规律(指颜料相混)。
于是相应的有:
RGB:位图颜色的一种编码方法,用红、绿、蓝三原色的光学强度来表示一种颜色。这是最常见的位图编码方法,可以直接用于屏幕显示。
CMYK:位图颜色的一种编码方法,用青、品红、黄、黑四种颜料含量来表示一种颜色。常用的位图编码方法之一,可以直接用于彩色印刷。
2.CIE的RGB颜色表示系统
国际照明委员会(CIE)选择红色(λ=700.00nm)、绿色(λ=546.1nm)和蓝色(435.8nm)三种单色光作为表色系统的三基色。产生1lm的白光所需要的三基色的近似值可用下面的亮度方程来表示:
1lm(W)= 0.30lm(R)+ 0.59lm(G)+ 0.11lm(B)
为了计算方便采用T单位制:
1lm(W)= 1T(R)+ 1T(G)+ 1T(B)
3.人类的彩色感觉
4.色彩深度
色彩深度又叫色彩位数,即位图中要用多少个二进制位来表示每个点的颜色,是分辨率的一个重要指标。常用有1位(单色),2位(4色,CGA),4位(16色,VGA),8位(256色),16位(增强色),24位和32位(真彩色)等。色深16位以上的位图还可以根据其中分别表示RGB三原色或CMYK四原色(有的还包括Alpha通道)的位数进一步分类,如16位位图图片还可分为RGB565,RGB555X1(有1位不携带信息),RGB555A1,RGB444A4等等。
色彩空间
1.YUV色彩空间
YUV是PAL和SECAM模拟彩色电视制式采用的颜色空间。Y表示亮度(Luminance或Luma),是不同权重的R、G、B的平均:
Y = kr R + kg G + kb B
色彩信息可以表示为色差(Chrominance或Chroma),每一个色差表示了RGB与Y的差:
U = B - Y
V = R - Y
这样彩色图像的完整信息——亮度和色差,就由Y和UV分别给出了。
与RGB视频信号传输相比,YUV最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输);采用YUV还有一个原因是,使彩色视频信号的传输兼容老式黑白电视。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。
YUV与RGB相互转换的公式 (RGB取值范围均为0-255)
Y = 0.299R + 0.587G +0.114B
U = -0.147R - 0.289G +0.436B
V = 0.615R - 0.515G -0.100B
R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U
2.YCbCr色彩空间
YCbCr 则是在世界数字组织视频标准研制过程中作为ITU-R BT1601 建议的一部分, 其实是YUV经过缩放和偏移的翻版。其中Y与YUV 中的Y含义一致, Cb , Cr 同样都指色彩, 只是在表示方法上不同而已。在YUV 家族中, YCbCr 是在计算机系统中应用最多的成员, 其应用领域很广泛,JPEG、MPEG均采用此格式。一般人们所讲的YUV大多是指YCbCr。YCbCr 有许多取样格式, 如4:4:4 , 4:2:2 , 4:1:1和4:2:0。
3.YUV 、YIQ 、YCbCr的区别
对于YUV模型,实际上很多时候,我们是把它和YIQ/YCbCr模型混为一谈的。
实际上,YUV模型用于PAL和SECAM制式的电视系统,Y表示亮度,UV并非任何单词的缩写。
YIQ模型与YUV模型类似,用于NTSC制式的电视系统。YIQ颜色空间中的I和Q分量相当于将YUV空间中的UV分量做了一个33度的旋转。
YCbCr颜色空间是由YUV颜色空间派生的一种颜色空间,主要用于数字电视系统中。从RGB到YCbCr的转换中,输入、输出都是8位二进制格式。
三者与RGB的转换方程如下:
RGB -> YUV:
Y = 0.299R + 0.587G +0.114B,   U = -0.147R - 0.289G + 0.436B, V = 0.615R - 0.515G - 0.100B
RGB -> YIQ:
Y = 0.299R + 0.587G +0.114B, I = 0.596R - 0.275G- 0.321B, Q = 0.212R - 0.523G+ 0.311B
RGB -> YCbCr:
Y = 0.299R + 0.587G +0.114B, Cb = -0.169R - 0.331G+ 0.500B, Cr = 0.500R - 0.419B - 0.103B
从公式中,我们关键要理解的一点是,UV/CbCr信号实际上就是蓝色差信号和红色差信号,进而言之,实际上一定程度上间接的代表了蓝色和红色的强度,理解这一点对于我们理解各种颜色变换处理的过程会有很大的帮助。
我们在数字电子多媒体领域所谈到的YUV格式,实际上准确的说,是以 YCbCr色彩空间模型为基础的具有多种存储格式的一类颜色模型的家族(包括YUV444 / YUV422 / YUV420/ YUV420P等等)。并不是传统意义上用于PAL制模拟电视的YUV模型。这些YUV模型的区别主要在于UV数据的采样方式和存储方式,这里就不详述。
而在Camera Sensor中,最常用的YUV模型是 YUV422格式,因为它采用4个字节描述两个像素,能和RGB565模型比较好的兼容。有利于Camera Sensor和Camera controller的软硬件接口设计。
YCbCr采样格式
1.YUV与YCbCr的区别
YUV色彩模型来源于RGB模型,该模型的特点是将亮度和色度分离开,从而适合于图像处理领域。
应用:basic color model usedin analogue color TV broadcasting。
YCbCr模型来源于YUV模型。YCbCr is a scaled andoffset version of the YUV color space。
应用:数字视频,ITU-R BT.601recommendation。
通过上面的比较可以确定,我们在h.264,mpeg等编码标准中用的YUV其实是YCbCr,大家不要被名称搞混淆了。
2.YCbCr主要的采样格式
人类的视觉系统(HVS)对色度的敏感程度低于亮度,所以,色度频道的采样率可比Y频道低,同时不会明显降低视觉质量,从而达到了压缩的目的。主要的采样格式有YCbCr 4:4:4、YCbCr 4:2:2、YCbCr 4:2:0和YCbCr 4:1:1。MPEG-4和H.264支持前三种采样格式,YCbCr 4:2:2用于高质量的彩色视频中;应用最广泛的是YCbCr 4:2:0,比如视频会议、数字电视、DVD等,用与PAL制式;YCbCr 4:1:1则多用于后者用于NTSC制的DV数据中。
(1) YUV 4:4:4    24bit/pixel
YUV三个信道的抽样率相同,因此在生成的图像里,每个象素的三个分量信息完整(每个分量通常8比特),经过8比特量化之后,未经压缩的每个像素占用3个字节。
下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1][Y2 U2 V2] [Y3 U3 V3]
存放的码流为: Y0 U0 V0 Y1 U1 V1 Y2U2 V2 Y3 U3 V3
(2) YUV 4:2:2    16bit/pixel
每个色差信道的抽样率是亮度信道的一半,所以水平方向的色度抽样率只是4:4:4的一半。对非压缩的8比特量化的图像来说,每个由两个水平方向相邻的像素组成的宏像素需要占用4字节内存。
下面的四个像素为:[Y0 U0 V0] [Y1 U1 V1][Y2 U2 V2] [Y3 U3 V3]
存放的码流为:Y0 U0 Y1 V1 Y2 U2 Y3 V3
映射出像素点为:[Y0 U0 V1] [Y1 U0 V1][Y2 U2 V3] [Y3 U2 V3]
(3) YUV 4:1:1    12bit/pixel
4:1:1的色度抽样,是在水平方向上对色度进行4:1抽样。对于低端用户和消费类产品这仍然是可以接受的。对非压缩的8比特量化的视频来说,每个由4个水平方向相邻的像素组成的宏像素需要占用6字节内存。
下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
存放的码流为: Y0 U0 Y1 Y2 V2 Y3
映射出像素点为:[Y0 U0 V2] [Y1 U0 V2][Y2 U0 V2] [Y3 U0 V2]
(4)YUV4:2:0    12bit/pixel
4:2:0并不意味着只有Y,Cb而没有Cr分量。它指得是对每行扫描线来说,只有一种色度分量以2:1的抽样率存储。相邻的扫描行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是 4:2:0……以此类推。对每个色度分量来说,水平方向和竖直方向的抽样率都是2:1,所以可以说色度的抽样率是4:1。对非压缩的8比特量化的视频来说,每个由2x2个2行2列相邻的像素组成的宏像素需要占用6字节内存。
下面八个像素为:[Y0 U0 V0] [Y1 U1 V1][Y2 U2 V2] [Y3 U3 V3] [Y5 U5 V5] [Y6 U6 V6] [Y7U7 V7] [Y8 U8 V8]
存放的码流为:Y0 U0 Y1 Y2 U2 Y3 Y5 V5Y6 Y7 V7 Y8
映射出的像素点为:[Y0 U0 V5] [Y1 U0 V5][Y2 U2 V7] [Y3 U2 V7] [Y5 U0 V5] [Y6 U0 V5] [Y7U2 V7] [Y8 U2 V7]
另外,4:2:0 采样有两种常见的变化形式。其中一种形式用于MPEG-2 视频,另一种形式用于MPEG-1 以及 H.261 和H.263。下图左边显示了MPEG-2 方案中使用的采样网格,右边显示了MPEG-1以及H.261和H.263方案中使用的采样网格。
下图是YUV 4:1:1和YUV 4:2:0的区别:
电视制式
1.电视制式概要
电视信号的标准也称为电视的制式。目前各国的电视制式不尽相同,制式的区分主要在于其帧频的不同、分解率的不同、信号带宽以及载频的不同、色彩空间的转换关系的不同等等。
电视制式就是用来实现电视图像信号和伴音信号,或其它信号传输的方法,和电视图像的显示格式,以及这种方法和电视图像显示格式所采用的技术标准。严格来说,电视制式有很多种,对于模拟电视,有黑白电视制式,彩色电视制式,以及伴音制式等;对于数字电视,有图像信号、音频信号压缩编码格式(信源编码),和TS流(Transport Stream)编码格式(信道编码),还有数字信号调制格式,以及图像显示格式等制式。
2.彩色电视制式
NTSC
PAL
SECAM
解释
正交平衡调幅制——National Television Standards Committee
正交平衡调幅逐行倒相制——Phase-Alternative Line
行轮换调频制——Sequential Coleur Avec Memoire
帧频(Hz)
30
25
25
场频(Hz)
60
50
50
点*行
858*525
864*625
864*625
分辨率
760*480
720*576
720*576
亮度带宽(MHz)
4.2
6
6
色度带宽(MHz)
1.3(I),0.6(Q)
1.3(U),1.3(V)
>1.0(U),>1.0(V)
彩色幅载波(MHz)
3.58
4.43
4.25
声音载波(MHz)
4.5
6.5
6.5
使用地区
美国、加拿大等大部分西半球国家以及中国的台湾、日本、韩国、菲律宾等
德国、英国等一些西欧国家,新加坡、中国大陆及香港,澳大利亚、新西兰等
法国、东欧和中东一带
一个与人的视觉生理特点有关,当图像的刷新速度达到5 帧/秒的时候,人开始感觉图像是活动的,而达到24 帧/秒的时候,人感觉图像是完全连续和流畅的(电影所使用的帧频就是24 Hz ),所以视频信号帧频应大于等于24 Hz。理论上来说帧频越高越好,但是帧频越高对电路的要求也越高,技术越复杂,成本也越高。另一个原因是因为我国的电网频率是50Hz, 当采用25 Hz 帧频时,隔行扫描时的场频为50 Hz ,正好与电网同频,这样,电源对图像的干扰是固定的,人眼不容易感觉出来,所以选择了25Hz的帧频。
电视在显示图像的时候,把一帧分成了两场来显示,一个场由帧中的奇数行组成,叫做奇场;另一个场由帧中的偶数行组成,叫做偶场。之所以要这样做,主要是因为在CRT显像管上每秒钟显示25帧图像时,人眼感觉到连续性还是不太好,而且还有明显的闪烁,一帧分成两场后,场频为50Hz,图像更加连续一些。当然还有一些别的原因,与电路设计方面有关。
PAL制式每帧图像共625行,每场为312.5行,在每场的312.5行中,有一些行要用作场消隐,是不包含视频信号的。按照CCIR656标准规定的行编号方法,奇场的行号为第1至 312.5行,偶场的行号为第312.5至625行, 其中,奇场的第23.5至310行包含有效的视频信号,共287.5行。偶场的第336至622.5行包含有效的视频信号,共287.5行。所以一帧中有效的总行数为576。由最上面的半行,加上中间的574行,加上最下面的半行
VGA信号和RGB信号的区别
作者:同三维视频网 来源:www.xiangb.com 发表时间: 2010-10-18
VGA信号时一种模拟信号,RGB信号如果指的是现在市面流行的RGBHV信号的话,那么VGA信号与RGB信号是同一种信号,都是红、绿、兰三原色信号,加水平同步信号和垂直同步信号,即RGBHV信号,他们都是分量视频信号的一种形式,都是模拟信号,都不是数字信号...
随着现在各种功能需求的数码设备不断涌现,视频信号也越来越多,如传统的VGA信号、分量信号、AV视频信号、色差信号,到目前的HDMI数字信号、DVI信号、SDI信号等,都已经广泛在各种视频设备中使用。其中很多用户对RGB信号和VGA信号不是很清楚,下面我们就针对这两种信号之间的区别进行下全面介绍。
RGB信号和VGA信号都是传输计算机信号的,那这两种信号有什么不同呢?是不是象有的人说的VGA信号是模拟信号,RGB信号是数字信号呢?
VGA信号时一种模拟信号,RGB信号如果指的是现在市面流行的RGBHV信号的话,那么VGA信号与RGB信号是同一种信号,都是红、绿、兰三原色信号,加水平同步信号和垂直同步信号,即RGBHV信号,他们都是分量视频信号的一种形式,都是模拟信号,都不是数字信号,即从信号性质和结构是一模一样的信号;两者的区别只是传输和处理的要求不一样(技术标准不一样),我们知道,信号接口和传输电缆传输信号时都带来信号损失,而且一般说来在同样条件下频率越高损失越大,所以对一般带宽不高的RGBHV信号,我们从节约成本考虑,可以用15针D型接口,一般3+2或3+5线传输,由于信号的带宽并不高,所以信号处理芯片的频率也不必太高,这类RGBHV信号就叫VGA信号;对分辨率更高,灰度等级更高的RGBHV信号,就必须使用五个Q9头连接(每个分支信号一个),用5根宽频带的同轴电缆组成的RGBHV信号电缆传输,用更高频率的芯片来处理信号,这就是RGBHV信号(五线制RGB信号)。
相对于VGA一条主线传输,RGB信号中还有水平同步信号和垂直同步信号复合用一根线传输,这就是RGBS(四线制RGB信号),再将这个复合的同步信号,与绿色信号或蓝色信号复合,即是三线制的RGB信号。RGBS和RGB常常在图形工作站和电视广播中大量使用。
这两种视频信号应用的领域也有所不同,VGA信号方式主要用来传输和处理几十到100M带宽的RGBHV信号,而RGB方式用来传输和处理100M~200多M带宽的RGBHV信号。(要求处理设备带宽是信号的2~3倍以上,以满足信号高次谐波的通过)
我们再来介绍下两种信号的传输距离。RGB信号和VGA信号在标准电平下,通常VGA信号传输距离按标准只有几米,在工程实践中超过15米就不稳定了,甚至失效;RGB信号传输不同带宽按标准只有10~50米,,在工程实践中超过60~80米就不稳定了,甚至失效;至于那些使用将信号放大,增加电容等补偿技术,使信号传输到更远的距离,那时另外一回事,这种方法在不同带宽信号下效果不一样,也不稳定;所以长线传输还是应该用现在调制后用网线传输,或光纤传输。
通过以上知识介绍,相信大家现在对RGB和VGA信号都有了较为清楚的认识,目前同三维针对行业用户需求,推出了多款VGA信号采集卡,如T200AE高清VGA音视频采集卡,就是一款带有高清模拟VGA接口输入,两路标清视频信号输入,一路音频信号输入的多功能多用途专业采集卡,不仅支持各种Directshow开发的视频应用软件,还带有完整的二次开发包SDK,可以针对需求进行开发。并具有高速存储、高速传输、高清还原、占用CPU率低、性价比高等特点。
usb摄像头采集到的视频数据是模拟信号还是数字信号
http://zhidao.baidu.com/question/135464327.html
没有数字摄像头一说,所有的CMOS和CCD感光体,都是将光源通过一定的滤波方式 分别照射到相应的单色感光体上,一共3种,分别是 R BG,红 蓝 和绿,每一种单色感光体 会将这种波长的光的强度 转换成为很微弱的电压值,这种电压值非常微弱,在uV-mV之间,摄像头内部芯片 需要把这些微弱的电压进行放大,然后用高位 DA,比如10bit 12bit 16bit 20bit 24bit 进行量化,然后再经过USB协议进行8B/10B编码串行化 ,才能呢个输入到USB接口;
自然界万物都是模拟的,我们进行处理只不过是将模拟转变为数字,只要是人眼睛看到的,耳朵听到的,手摸到的,都是模拟的东西。数字只是一个独立于模拟世界的另一世界的物质,任何模拟信号都可以转换成为数字信号,但是数字信号不能完全的还原成模拟信号。
如果你想问 USB摄像头采集到的视频是什么信号的话,那么是模拟信号,如果你想问 USB摄像头传输到电脑是什么信号的话,那么是 数字串行信号,如果你想问 在显示器上看到的USB摄像头采集到图像是什么信号的话 那么也是模拟信号。
其他回答 共1条
2010-1-29 12:50 热心网友
数字信号
一般模拟摄像头需要连接相应的视频压缩卡,因为模拟摄像头拍摄的画面若想能够被电脑使用,必须进行模数转换
而数字摄像头可以即插即用
数字摄像头之所以选择USB接口,并不是因为它是数字的,而是因为USB是目前最流行的接口设备
以后将可能会出现USB3.0、esata等接口摄像头,同样是数字的
因此usb摄像头并不是数字摄像头的必要条件,只不过现在的数字摄像头大都采用usb罢了
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
数字视频基础知识
对YUV格式的详细描述,以及存储形式
一文读懂rawRGB、RGB和YUV数据格式与转换
YUV格式详细解释与FFMPEG的关系
RGB、YUV和YCbCr
谈谈RGB、YUY2、YUYV、YVYU、UYVY、AYUV_UU=uClinux ubu...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服