GIGE 协议摘录 —— GVSP 协议(三)(中):https://developer.aliyun.com/article/1598400
3.7 Mono10Packed
这种像素格式定义了一种 10 位单色、无符号、GigE 视觉特定的打包格式。
注意:此像素格式不尊重像素格式命名约定,因为该格式是在 GigE Vision 1.0 中引入的(在创建像素格式命名约定之前)。
使用这种 GigE Vision 打包风格,两个 10 位像素被打包成 24 位,如下图所示(小端布局)。与像素格式命名约定的分组样式的主要区别在于字节的排序(分组字节是像素格式命名约定的最后一个字节)。
#define MV_GVSP_PIX_MONO 0x01000000 #define MV_GVSP_PIX_OCCUPY12BIT 0x000C0000 #define MV_GVSP_PIX_MONO10_PACKED (MV_GVSP_PIX_MONO | MV_GVSP_PIX_OCCUPY12BIT | 0x0004)
3.8 Mono12
此像素格式定义了一个 12 位单色、无符号、非打包的格式。有关其他信息,请参阅像素格式命名约定。
#define MV_GVSP_PIX_MONO 0x01000000 #define MV_GVSP_PIX_OCCUPY16BIT 0x00100000 #define MV_GVSP_PIX_MONO12 (MV_GVSP_PIX_MONO | MV_GVSP_PIX_OCCUPY16BIT | 0x0005)
3.9 Mono12Packed
这种像素格式定义了一种 12 位单色、无符号、GigE 视觉特定的打包格式。
注意:此像素格式不尊重像素格式命名约定,因为该格式是在 GigE Vision 1.0 中引入的(在创建像素格式命名约定之前)。
使用这种 GigE Vision 打包风格,两个 12 位像素被打包成 24 位,如下图所示(小端布局)。与像素格式命名约定的分组样式的主要区别在于字节的排序(分组字节是像素格式命名约定的最后一个字节)。
#define MV_GVSP_PIX_MONO 0x01000000 #define MV_GVSP_PIX_OCCUPY12BIT 0x000C0000 #define MV_GVSP_PIX_MONO12_PACKED (MV_GVSP_PIX_MONO | MV_GVSP_PIX_OCCUPY12BIT | 0x0006)
请注意,当图像宽度包含奇数数的像素时,第二行的第一个像素将不会在 3 字节的边界上开始对齐。
3.10 Mono14
此像素格式定义了一种 14 位单色、无符号、非打包的格式。有关其他信息,请参阅像素格式命名约定。
#define MV_GVSP_PIX_MONO 0x01000000 #define MV_GVSP_PIX_OCCUPY16BIT 0x00100000 #define MV_GVSP_PIX_MONO14 (MV_GVSP_PIX_MONO | MV_GVSP_PIX_OCCUPY16BIT | 0x0025)
3.11 Mono16
此像素格式定义了一个 16 位单色、无符号、解打包的格式。有关其他信息,请参阅像素格式命名约定。
#define MV_GVSP_PIX_MONO 0x01000000 #define MV_GVSP_PIX_OCCUPY16BIT 0x00100000 #define MV_GVSP_PIX_MONO16 (MV_GVSP_PIX_MONO | MV_GVSP_PIX_OCCUPY16BIT | 0x0007)
3.12 BayerGR8
这种像素格式定义了一个 8 位的 GRBG(绿-红-蓝-绿)拜耳模式,无符号,解打包格式。有关其他信息,请参阅像素格式命名约定。
所有的拜耳像素格式(像素格式功能)必须代表完整图像的拜耳模式(没有 ROI )。
GVSP 数据引线( data leader )的 pixel_format 字段包含完整图像的实际拜耳像素格式。当 ROI 被激活时,接收器可以查看 offset_x 和 offset_y 字段,以确定它是否需要相对于其左上角调整拜耳瓷砖(Bayer tile)进行解码。
注意:GVSP 数据必须自描述,以便使任何接收器能够解码图像流。因此,以需要使用不同的像素格式进行解码的方式修改原始图像数据的特征必须确保像素格式字段和像素格式特性被相应地设置。
为了使像素格式(PixelFormat)特性与图像数据引线(Data Leader)的像素格式字段相匹配,建议将任何感兴趣区域的偏移量与拜耳贴图的大小对齐(In order for the PixelFormat feature to match the pixel_format field of the Image Data Leader, it is recommended to align the offset of any area of interest to the size of the Bayer tile.)。这通常是通过在 GenICamTM 标准特性命名约定的OffsetX和OffsetY特性上增加2个像素来实现的。
此外,当实现图像翻转时(GenICam 标准特征命名约定的 ReverseY 功能),设备内部应该通过在翻转方向上将图像捕获移动 1 像素来补偿在拜耳瓷砖上发生的镜像效应。(Additionally, when implementing image flip (ReverseX and ReverseY features of the GenICam Standard Features Naming Convention), the device should internally compensate for the mirror effect taking place on the Bayer tile by shifting image capture by 1 pixel in the direction of the flip.)
上述原则也适用于任何颜色滤光器阵列(CFA)图案。
#define MV_GVSP_PIX_MONO 0x01000000 #define MV_GVSP_PIX_OCCUPY8BIT 0x00080000 #define MV_GVSP_PIX_BAYGR8 (MV_GVSP_PIX_MONO | MV_GVSP_PIX_OCCUPY8BIT | 0x0008)
3.13 BayerRG8
这种像素格式定义了一个 8 位 RGGB(红绿-绿蓝)拜耳模式,无符号,未打包格式。有关其他信息,请参阅像素格式命名约定。
3.14 BayerGB8
3.16 BayerGR10
这种像素格式定义了一个 10 位的 GRBG(绿-红-蓝-绿)拜耳模式,无符号的,未打包的格式。有关其他信息,请参阅像素格式命名约定。
3.20 BayerGR12
这种像素格式定义了一个 12 位 GRBG(绿-红-蓝绿色)拜耳模式,无符号,解打包格式。有关其他信息,请参阅像素格式命名约定。
3.24 BayerGR10Packed
这种像素格式定义了一个 10 位的 GRBG(绿-红-蓝-绿)拜耳模式,无符号,GigE 视觉特定的打包格式。
注意:此像素格式不尊重像素格式命名约定,因为该格式是在 GigE Vision 1.0 中引入的(在创建像素格式命名约定之前)。
使用这种 GigE Vision 包装风格,两个 10 位的颜色组件( C1 和 C2 )被打包成 24 位,如下图所示(小端布局)。与像素格式命名约定的分组样式的主要区别在于字节的排序(分组字节是像素格式命名约定的最后一个字节)。
上面的打包方式与 **Mono10Packed ** 相同。
3.28 BayerGR12Packed
这种像素格式定义了一个 12 位的 GRBG(绿-红-蓝-绿)拜耳模式,无符号,GigE 视觉特定的打包格式。
注意:此像素格式不尊重像素格式命名约定,因为该格式是在 GigE Vision 1.0 中引入的(在创建像素格式命名约定之前)。
使用这种 GigE Vision 打包风格,两个 12 位的颜色组件(C1和C2)被打包成 24 位,如下图所示(小端布局)。与像素格式命名约定的分组样式的主要区别在于字节的排序(分组字节是像素格式命名约定的最后一个字节)。
上面的打包方式与 Mono12Packed 相同。
3.32 BayerGR16
这种像素格式定义了一个 16 位的 GRBG(绿-红-蓝-绿)拜耳模式,无符号,解打包格式。有关其他信息,请参阅像素格式命名约定。
3.36 RGB8
此像素格式定义了一个 8 位 RGB(红-绿-蓝)、无符号、解压缩格式。有关其他信息,请参阅像素格式命名约定。
#define MV_GVSP_PIX_COLOR 0x02000000 #define MV_GVSP_PIX_OCCUPY24BIT 0x00180000 #define MV_GVSP_PIX_RGB8_PACKED (MV_GVSP_PIX_COLOR | MV_GVSP_PIX_OCCUPY24BIT | 0x0014)
3.37 BGR8
此像素格式定义了一个 8 位 BGR(蓝绿-红色)、无符号、解打包的格式。有关其他信息,请参阅像素格式命名约定。
3.38 RGBa8
此像素格式定义了一个 8 位RGBa(红-绿-蓝-透明通道)、无符号、解压缩格式。有关其他信息,请参阅像素格式命名约定。alpha 组件的内容是特定于制造商的。
3.39 BGRa8
此像素格式定义了一种 8 位 BGRa(蓝-绿-红-阿尔法)、无符号、解压缩格式。请参阅像素格式命名约定以获取更多信息。alpha 组件的内容为特定于制造商。
3.40 RGB10
此像素格式定义了一个 10 位 RGB(红-绿-蓝)、无符号、解压缩格式。有关其他信息,请参阅像素格式命名约定。
3.41 BGR10
这种像素格式定义了一个 10 位 BGR(蓝绿-红色)、无符号、解压缩格式。有关其他信息,请参阅像素格式命名约定。
3.42 RGB12
此像素格式定义了一个 12 位 RGB(红-绿-蓝)、无符号、解压缩格式。有关其他信息,请参阅像素格式命名约定。
3.43 BGR12
这种像素格式定义了一个 12 位 BGR(蓝绿-红色)、无符号、解压缩格式。有关其他信息,请参阅像素格式命名约定。
3.44 RGB16
此像素格式定义了 16 位 RGB(红绿-蓝)、无符号、解压缩格式。有关其他信息,请参阅像素格式命名约定。
3.45 RGB10V1Packed
这种像素格式定义了一个 10 位 RGB(红-绿-蓝)、无符号、GigE 视觉特定的打包格式。
使用这种 GigE Vision 包装风格,三个 10 位的颜色组件被组合成 32 位,如下所示(小端布局)。与像素格式命名约定的分组样式的主要区别是字节的顺序。
3.50 YUV411_8_UYYVYY
此像素格式定义了一个 8 位 YUV 4:1:1、无符号、解打包的格式。有关其他信息,请参阅像素格式命名约定。
3.54 YCbCr8_CbYCr
此像素格式定义了一个 8 位 YCbCr 4:4:4,无符号、解打包格式。此像素格式为每个组件使用 256 个值的全部范围。有关其他信息和颜色空间转换,请参阅像素格式命名约定。请注意在像素格式名称的末尾明确列出的组件顺序。
3.66 RGB8_Planar
这个像素格式定义了一个 8 位 RGB(红绿蓝)、无符号、未压缩、平面格式,其中每个颜色平面在不同的流通道上传输。
这种像素格式需要 3 个连续的流通道。
- 红色平面(流通道 N)(Red plane (stream channel N)):
- 绿色平面(流通道 N+1)(Green plane (stream channel N+1)):
- 蓝色平面(流通道 N+2)(Blue plane (stream channel N+2)):
3.69 RGB16_Planar
这个像素格式定义了一个 16 位 RGB(红绿蓝)、无符号、未压缩的平面格式,其中每个颜色平面在不同的流通道上传输。
这种像素格式需要 3 个连续的流通道。
像素格式定义(Pixel Format Defines)
下面为 GVSP 支持的各种像素格式提供了 #define 定义。每个像素格式都用一个 32 位的值来表示。上面的 8 位表示该颜色。第二个上 8 位表示一个像素所占用的位数(包括任何填充)。这可用于快速计算使用此像素格式存储图像所需的内存量。
//=================================================== // PIXEL FORMATS //=================================================== // Indicate if pixel is monochrome or RGB #define GVSP_PIX_MONO 0x01000000 #define GVSP_PIX_RGB 0x02000000 // deprecated in version 1.1 #define GVSP_PIX_COLOR 0x02000000 #define GVSP_PIX_CUSTOM 0x80000000 #define GVSP_PIX_COLOR_MASK 0xFF000000 // Indicate effective number of bits occupied by the pixel (including padding). // This can be used to compute amount of memory required to store an image. #define GVSP_PIX_OCCUPY1BIT 0x00010000 #define GVSP_PIX_OCCUPY2BIT 0x00020000 #define GVSP_PIX_OCCUPY4BIT 0x00040000 #define GVSP_PIX_OCCUPY8BIT 0x00080000 #define GVSP_PIX_OCCUPY12BIT 0x000C0000 #define GVSP_PIX_OCCUPY16BIT 0x00100000 #define GVSP_PIX_OCCUPY24BIT 0x00180000 #define GVSP_PIX_OCCUPY32BIT 0x00200000 #define GVSP_PIX_OCCUPY36BIT 0x00240000 #define GVSP_PIX_OCCUPY48BIT 0x00300000 #define GVSP_PIX_EFFECTIVE_PIXEL_SIZE_MASK 0x00FF0000 #define GVSP_PIX_EFFECTIVE_PIXEL_SIZE_SHIFT 16 // Pixel ID: lower 16-bit of the pixel formats #define GVSP_PIX_ID_MASK 0x0000FFFF #define GVSP_PIX_COUNT 0x46 // next Pixel ID available
1、单个缓冲区格式定义(Mono buffer format defines)
#define GVSP_PIX_MONO1P (GVSP_PIX_MONO | GVSP_PIX_OCCUPY1BIT | 0x0037) #define GVSP_PIX_MONO2P (GVSP_PIX_MONO | GVSP_PIX_OCCUPY2BIT | 0x0038) #define GVSP_PIX_MONO4P (GVSP_PIX_MONO | GVSP_PIX_OCCUPY4BIT | 0x0039) #define GVSP_PIX_MONO8 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0001) #define GVSP_PIX_MONO8S (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0002) #define GVSP_PIX_MONO10 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0003) #define GVSP_PIX_MONO10_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0004) #define GVSP_PIX_MONO12 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0005) #define GVSP_PIX_MONO12_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0006) #define GVSP_PIX_MONO14 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0025) #define GVSP_PIX_MONO16 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0007)
2、Bayer buffer format defines
#define GVSP_PIX_BAYGR8 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0008) #define GVSP_PIX_BAYRG8 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0009) #define GVSP_PIX_BAYGB8 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x000A) #define GVSP_PIX_BAYBG8 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x000B) #define GVSP_PIX_BAYGR10 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000C) #define GVSP_PIX_BAYRG10 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000D) #define GVSP_PIX_BAYGB10 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000E) #define GVSP_PIX_BAYBG10 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000F) #define GVSP_PIX_BAYGR12 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0010) #define GVSP_PIX_BAYRG12 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0011) #define GVSP_PIX_BAYGB12 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0012) #define GVSP_PIX_BAYBG12 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0013) #define GVSP_PIX_BAYGR10_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0026) #define GVSP_PIX_BAYRG10_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0027) #define GVSP_PIX_BAYGB10_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0028) #define GVSP_PIX_BAYBG10_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0029) #define GVSP_PIX_BAYGR12_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x002A) #define GVSP_PIX_BAYRG12_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x002B) #define GVSP_PIX_BAYGB12_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x002C) #define GVSP_PIX_BAYBG12_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x002D) #define GVSP_PIX_BAYGR16 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x002E) #define GVSP_PIX_BAYRG16 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x002F) #define GVSP_PIX_BAYGB16 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0030) #define GVSP_PIX_BAYBG16 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0031)
3、RGB打包的缓冲区格式定义(RGB Packed buffer format defines)
#define GVSP_PIX_RGB8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0014) #define GVSP_PIX_BGR8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0015) #define GVSP_PIX_RGBA8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY32BIT | 0x0016) #define GVSP_PIX_BGRA8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY32BIT | 0x0017) #define GVSP_PIX_RGB10 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0018) #define GVSP_PIX_BGR10 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0019) #define GVSP_PIX_RGB12 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x001A) #define GVSP_PIX_BGR12 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x001B) #define GVSP_PIX_RGB16 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0033) #define GVSP_PIX_RGB10V1_PACKED (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY32BIT | 0x001C) #define GVSP_PIX_RGB10P32 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY32BIT | 0x001D) #define GVSP_PIX_RGB12V1_PACKED (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY36BIT | 0X0034) #define GVSP_PIX_RGB565P (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0035) #define GVSP_PIX_BGR565P (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0X0036)
4、YUV和YCbCr打包缓冲区格式定义(YUV and YCbCr Packed buffer format defines)
#define GVSP_PIX_YUV411_8_UYYVYY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY12BIT | 0x001E) #define GVSP_PIX_YUV422_8_UYVY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x001F) #define GVSP_PIX_YUV422_8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0032) #define GVSP_PIX_YUV8_UYV (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0020) #define GVSP_PIX_YCBCR8_CBYCR (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x003A) #define GVSP_PIX_YCBCR422_8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x003B) #define GVSP_PIX_YCBCR422_8_CBYCRY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0043) #define GVSP_PIX_YCBCR411_8_CBYYCRYY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY12BIT | 0x003C) #define GVSP_PIX_YCBCR601_8_CBYCR (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x003D) #define GVSP_PIX_YCBCR601_422_8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x003E) #define GVSP_PIX_YCBCR601_422_8_CBYCRY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0044) #define GVSP_PIX_YCBCR601_411_8_CBYYCRYY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY12BIT | 0x003F) #define GVSP_PIX_YCBCR709_8_CBYCR (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0040) #define GVSP_PIX_YCBCR709_422_8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0041) #define GVSP_PIX_YCBCR709_422_8_CBYCRY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0045) #define GVSP_PIX_YCBCR709_411_8_CBYYCRYY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY12BIT | 0x0042)
5、RGB平面缓冲区格式定义(RGB Planar buffer format defines)
#define GVSP_PIX_RGB8_PLANAR (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0021) #define GVSP_PIX_RGB10_PLANAR (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0022) #define GVSP_PIX_RGB12_PLANAR (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0023) #define GVSP_PIX_RGB16_PLANAR (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0024)