如何确定和解析摄像头的 Bayer 贴图像素格式
上次修订日期:2015 年 11 月 25 日
我们所有的彩色成像产品都能够将原始的每像素 8 位或 16 位点刻 Bayer 贴图图像数据流传输到 PC,然后进行色彩处理/插值,变成 24 位或 32 位 BGR 数据。 参见“不同色彩处理算法”进一步了解色彩处理的详细信息。 如果要将摄像头配置为输出原始 Bayer 数据,请查阅摄像头的《技术参考手册》。
特定摄像头的红、绿、蓝像素实际物理排列取决于成像传感器自身的色彩滤镜阵列布置。 但该原始色彩数据发出的格式(即顺序)取决于具体摄像头型号和固件版本。 可以使用我们所有摄像头都有的 BAYER_TILE_MAPPING 寄存器 0x1040 查询该格式。 关于该寄存器的更多信息,请查阅 《数字摄像头寄存器参考》。
原始数据可以通过 FlyCaptureImage 结构(例如,FlyCaptureImage.pData)的 pData 指针进行编程访问。 在每像素 8 位中原始数据可以通过 FlyCaptureImage 结构(例如,FlyCaptureImage.pData)的 pData 指针访问。 在每像素 8 位模式下,第一个字节表示行 0 列 0 处的像素,第二个字节表示行 0 列 1处的像素,等等。
下面给出一个 2048 x 2048 彩色 Grasshopper3 (GS3-U3-41C6C) 发出 GBRG 格式 RAW8 图像数据的示例。 我们通过 pData pointer 访问图像数据时,得到以下内容:
-
- pData[0] = 行 0 列 0 = 绿色像素 (G)
- pData[1] = 行 0 列 1 = 蓝色像素 (B)
- pData[2048] = 行 1 列 0 = 红色像素 (R)
- pData[2049] = 行 1 列 1 = 绿色像素 (G)