咨询热线:400-168-2016
  新闻中心 News - 技术动态
   
  常用视频采集格式简介
  • 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 G G 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(=I420)格式为每个像素都提取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所示。

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格式。

Genedu景瑞录播系列产品支持以上常用视频采集格式。

 

   
Copyright © 2014 Shanghai Genedu Info-Tech Co.Ltd.All Rights Reserved
版权所有 上海景瑞信息技术有限公司  沪ICP备 10202509号-2