Mono8 格式为单通道 8 位灰度图像格式。Sensor 采用单线曝光、单线输出的工作方式:每次行触发信号,Sensor 对单行像素进行曝光并读出,图像数据按行顺序连续输出。这种简单的机制使得 Mono8 格式成为分时频闪应用中最容易处理的像素格式。
下图展示了 Mono8 格式在 2 灯分时频闪应用中的曝光时序:
|
时刻 |
T0 |
T1 |
T2 |
T3 |
T4 |
T5 |
T6 |
|
触发 |
|
✓ |
|
✓ |
|
✓ |
|
|
L1 灯 |
亮 |
|
亮 |
|
亮 |
|
亮 |
|
L2 灯 |
|
亮 |
|
亮 |
|
亮 |
|
|
图像行 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |

原始图像的行序与拆分后的对应关系如下:
|
原始行号 |
1 |
2 |
3 |
4 |
|
光源 |
L1 |
L2 |
L1 |
L2 |
|
→ 拆分 → |
└─→ 图 1 |
└─→ 图 2 |
└─→ 图 1 |
└─→ 图 2 |
|
结果 |
奇数行 |
偶数行 |
奇数行 |
偶数行 |
拆分规则:将原始图像按行号奇偶性分为两组。奇数行(1,3,5,...)组成第 1 张子图像,偶数行(2,4,6,...)组成第 2 张子图像。每张子图像的行数为原始图像的 1/2。
关键要点:N 灯应用必须使用 N 倍触发精度
|
触发精度 |
空间定位 |
拆分效果 |
|
原有精度 |
Δx = v·Δt |
❌ 位置错位Δx/2 |
|
2 倍精度 |
Δx/2 = v·(Δt/2) |
✓ 位置精确对齐 |
|
N 倍精度 |
Δx/N = v·(Δt/N) |
✓ 最优对齐效果 |
原理说明:提升触发精度后,相邻行的时间间隔缩小为原来的 1/N,对应的空间位移也缩小为 1/N,使得 N 个光源的触发时刻能够精确对齐到不同的空间位置。
RGB8 格式为三通道 8 位彩色图像格式。与 Mono8 的单线曝光不同,RGB8 格式的 Sensor 采用三线曝光机制:每一行完整的 RGB 像素数据需要三次独立的曝光才能获取。
RGB8 格式获取一行完整像素需要三次曝光:
|
步骤 |
第 1 次 |
第 2 次 |
第 3 次 |
第 4 次 |
第 5 次 |
第 6 次 |
|
曝光通道 |
R |
G |
B |
R |
G |
B |
|
光源 (2 灯) |
L1 |
L2 |
L1 |
L2 |
L1 |
L2 |
|
空间位置 |
3.0 |
3.5 |
4.0 |
4.5 |
5.0 |
5.5 |

注意:如上图所示,在 2 灯分时频闪应用中,获取一行 RGB 数据的三次曝光分别来自不同光源、不同空间位置。这导致合成的 RGB 像素包含混叠信息,无法直接使用。
|
通道 |
光源 |
空间位置 |
问题 |
|
R (红色) |
L1 |
位置 3 |
|
|
G (绿色) |
L2 |
位置 3.5 |
❌ 位置不一致 |
|
B (蓝色) |
L1 |
位置 4 |
❌ 光源不同 |
混叠后果:同一像素的 R、G、B 分量来自不同空间位置(3, 3.5, 4)和不同光源(L1, L2, L1),导致颜色失真和位置错位。这种混叠发生在 Sensor 输出的 RAW 域,因此必须在 RAW 域进行拆分处理。
正确的处理流程:
|
步骤 1 |
Sensor 输出 RAW 数据 |
获取 R/G/B 三通道的原始数据 |
|
步骤 2 |
RAW 域拆分 |
按光源将 R/G/B 数据分组 |
|
步骤 3 |
独立插值 |
对每组 RAW 数据独立进行色彩插值 |
|
步骤 4 |
输出 RGB 图像 |
得到 N 张独立的彩色子图像 |
|
|
|
|
关键配置:Line Rate Ratio (LRR) 应设置为光源数量 N。这样每次触发信号,Sensor 输出 N 行数据,便于按光源进行分组拆分。同时需要使用 N 倍触发精度确保空间位置对齐。
BayerRBGG8 格式采用 Bayer 色彩滤镜阵列 (Color Filter Array, CFA)。Sensor 表面覆盖一层滤镜,每个像素仅能获取 R、G、B 中的一种颜色信息。通过后续的插值算法(Demosaicing)恢复完整的彩色图像。
BayerRBGG 格式的像素排列如下:
|
行\列 |
1 |
2 |
3 |
4 |
|
第 1 行 |
R |
G |
R |
G |
|
第 2 行 |
G |
B |
G |
B |
|
第 3 行 |
R |
G |
R |
G |
|
第 4 行 |
G |
B |
G |
B |
Bayer 阵列特点:R 和 B 像素各占 25%,G 像素占 50%(人眼对绿色更敏感)。每 2 行构成一个完整的 Bayer 周期(R/G 行 + G/B 行)。
Bayer 格式采用二线曝光机制:
|
时刻 |
T0 |
T1 |
T2 |
T3 |
|
曝光次数 |
第 1 次 |
第 2 次 |
第 3 次 |
第 4 次 |
|
输出行 |
第 1 行 (R/G) |
第 2 行 (G/B) |
第 3 行 (R/G) |
第 4 行 (G/B) |
|
Bayer 周期 |
└── 周期 1 ──┘ |
|
└── 周期 2 ──┘ |
|
说明:每次行触发信号,Sensor 进行 2 次曝光,输出 2 行数据。这 2 行构成一个完整的 Bayer 周期,后续插值算法需要这 2 行数据才能正确恢复颜色。

Bayer 格式的关键配置参数:
|
参数 |
设置值 |
说明 |
|
Line Rate Ratio |
0 |
无需隔行拆分拼接 |
|
拆分单位 |
2 行 |
保持 Bayer 周期完整性 |
|
触发精度 |
N 倍 |
N 灯应用使用 N 倍触发精度 |
⚠重要:必须在 RAW 域拆分
|
错误做法 |
先插值 → 后拆分 |
|
后果 |
第 3 行插值会参考第 1 次曝光(L1 灯)的 2 位置行与第 2 次曝光(L2 灯)的 4 位置行,导致颜色异常 |
|
正确做法 |
先拆分 → 后插值(每张子图像独立插值) |
原理解释:Bayer 插值算法需要参考邻域像素。如果先插值后拆分,插值过程会混入不同光源的邻域信息,导致颜色失真。正确做法是在 RAW 域按 2 行单位拆分,然后对每张子图像独立进行插值。
|
图像格式 |
触发精度 |
Line Rate Ratio |
曝光方式 |
拆分单位 |
|
Mono8 |
N 灯使用 N 倍 |
不适用 |
单线曝光 |
1 行 |
|
RGB8 |
N 灯使用 N 倍 |
N(灯数) |
三线曝光 |
3 行 |
|
BayerRBGG8 |
N 灯使用 N 倍 |
0 |
二线曝光 |
2 行 |
|
|
|
|
|
|
【Mono8 格式流程】
|
原始图像 |
→ |
隔行提取 |
→ |
N 张子图像 |
|
(H 行) |
|
(奇/偶行分组) |
|
(H/N 行) |
|
|
|
|
|
|
【RGB8 格式流程】
|
RAW 数据 |
→ |
RAW 域拆分 |
→ |
独立插值 |
→ |
N 张 RGB 图像 |
|
(H×3 行) |
|
(按 LRR 分组) |
|
(Demosaicing) |
|
(H/N 行) |
|
|
|
|
|
|
|
|
【BayerRBGG8 格式流程】
|
RAW 数据 |
→ |
按 2 行拆分 |
→ |
独立插值 |
→ |
N 张 RGB 图像 |
|
(H 行) |
|
(保持 Bayer 周期) |
|
(Bayer 插值) |
|
(H/2N 行) |
|
|
|
|
|
|
|
|
• 触发精度共性:三种格式在 N 灯应用中均需使用 N 倍触发精度,这是由分时频闪的时序特性决定的。触发精度不足会导致空间位置错位。
• 曝光机制差异:Mono8 采用单线曝光,RGB8 采用三线曝光,Bayer 采用二线曝光。曝光方式的差异是拆分策略不同的根本原因。
• RAW 域处理必要性:RGB8 和 Bayer 格式必须在色彩插值前进行拆分。插值算法会参考邻域像素,若邻域来自不同光源,会导致颜色混叠。
• LRR 配置策略:Mono8 无需设置 LRR;RGB8 的 LRR 应等于光源数量 N;Bayer 的 LRR 固定为 0(无需隔行拼接)。
• 拆分单位:Mono8 按 1 行拆分,RGB8 按 3 行拆分,Bayer 按 2 行拆分。拆分单位必须与曝光方式匹配,保持数据完整性。
系统选型:灰度检测优先选择 Mono8 格式(算法简单、处理速度快);彩色检测优先选择 Bayer 格式(数据量小、传输带宽低)。
参数配置:在算法开发初期,先确定光源数量 N,然后配置 N 倍触发精度和对应的 LRR 参数。
处理流程:对于 RGB 和 Bayer 格式,确保在 ISP 流水线的 RAW 域进行拆分,然后再进行色彩插值。
验证方法:使用标定板(如棋盘格)验证拆分后图像的空间对齐精度,确保无明显错位。
调试技巧:先用 Mono8 格式验证时序和触发精度,再切换到彩色格式进行 RAW 域拆分调试。