4. 道路场景图像预处理
EyeQ 芯片上的车道线与可行驶区感知,前端输入通常来自安装在前挡风玻璃后的单目摄像头,输出为 YUV 或 RAW 格式的 Bayer 图像。原始图像在进入 CNN 或传统特征提取之前,必须经过一轮“轻量但关键”的预处理。这一章讨论的不是通用图像美化,而是面向 EyeQ 实时约束(典型帧率 30fps、单帧预算约 33ms、片上内存与带宽有限)的预处理链路设计。
一、去噪:先判断噪声类型,再选滤波器
车载摄像头在夜间高 ISO 增益下,噪声以高斯噪声与椒盐噪声混合形式出现。工程上不建议直接上非局部均值(NLM)或 BM3D,因为它们的计算量在 EyeQ 上不可接受。实际做法是:
- 高斯噪声:使用 3×3 或 5×5 的可分离高斯核,σ 取 0.8~1.2。可分离卷积把 5×5 的 25 次乘加降为 10 次,对 EyeQ 的 SIMD 单元非常友好。
- 椒盐噪声:先做 3×3 中值滤波,但中值滤波对细车道线有腐蚀风险,因此只在亮度通道 Y 上做,且仅对疑似噪声点(与邻域均值偏差超过阈值 T=40)执行。
- 时域去噪:利用相邻帧对齐后的加权平均,权重 α 取 0.3~0.5,可显著抑制随机噪声,但需注意运动物体拖影。
一个可参考的示例参数:在 1280×720 输入下,3×3 高斯 + 条件中值,单帧耗时约 1.2ms(EyeQ4 实测量级,具体以实际平台为准)。
二、对比度增强:CLAHE 的裁剪与分块
逆光、隧道出口、树荫交替是车道线检测最头疼的场景。全局直方图均衡会放大暗区噪声,因此采用限制对比度自适应直方图均衡(CLAHE)。关键参数:
- 分块数:8×8,块太小会放大噪声,块太大则局部适应性不足。
- 裁剪阈值 clipLimit:2.0~3.0,超过阈值的直方图部分均匀分配到各灰度级。
- 插值:块间采用双线性插值,避免块边界出现明显接缝。
CLAHE 只在 Y 通道执行,色度通道 U/V 保持原样,避免颜色失真。若在 EyeQ 上实现,可先对 Y 做 8×8 分块直方图统计,再用查表方式完成映射,整体耗时约 2~3ms。
三、逆光与阴影处理:分区域增益与形态学
逆光场景下,天空区域过曝、路面欠曝。直接全局 gamma 校正无法兼顾。工程做法是:
- 用亮度阈值(如 Y > 200)分割出高亮区域,用 Y < 50 分割出暗区。
- 对暗区做局部 gamma 提升(γ=0.7),对高亮区做压缩(γ=1.3),中间区域保持线性。
- 阴影边界用形态学开运算(3×3 结构元)平滑,避免增益突变产生伪边缘。
注意:逆光处理会改变图像整体亮度分布,后续 ROI 裁剪和金字塔构建必须使用处理后的图像,否则车道线对比度判断会失准。
四、ROI 裁剪:把算力花在路面上
车道线只出现在图像下半部分。以 1280×720 为例,ROI 通常取 y ∈ [360, 720],x ∈ [160, 1120],即下半部中间区域。裁剪后面积约为原图的 40%,直接减少后续 CNN 约 60% 的卷积计算量。
ROI 不是固定矩形,而是随车速和转向动态调整的梯形:车速越高,ROI 上边界越靠上(更远视野);转向时,ROI 向弯道内侧偏移。EyeQ 上可用简单的透视变换矩阵实现梯形裁剪,避免逐像素判断。
五、多尺度金字塔:兼顾近处细节与远处结构
车道线在近处宽、远处窄,单一尺度难以同时检测。构建 3 层高斯金字塔:
- Level 0:原始 ROI,1280×360,用于近处车道线边缘。
- Level 1:下采样 2 倍,640×180,用于中距离车道线。
- Level 2:下采样 4 倍,320×90,用于远处车道线走向和消失点估计。
金字塔构建本身可用 5×5 高斯核 + 隔行隔列采样,每层耗时约 0.5ms。注意:金字塔必须在 ROI 裁剪之后构建,否则会浪费算力在无关区域。
六、面向 EyeQ 实时性的预处理优化策略
上述五步如果串行执行,在 EyeQ4 上约 7ms,占 33ms 预算的 21%,看似宽裕,但车道线网络本身可能占用 15~20ms,因此预处理仍需精打细算。几条经过验证的策略:
- 通道分离:所有预处理只在 Y 通道做,U/V 直接下采样后送入网络,节省约 40% 带宽。
- 查表替代实时计算:CLAHE 的映射函数、gamma 曲线都预先算成 256 项 LUT,运行时只做查表。
- ROI 先行:先裁剪再滤波,滤波面积减少 60%,去噪和 CLAHE 的耗时同步下降。
- 金字塔与 ROI 联动:Level 1 和 Level 2 直接从 ROI 下采样,不保留全图金字塔。
- 跳过策略:当帧间亮度变化小于阈值(如平均 Y 变化 < 5)时,跳过 CLAHE 和逆光处理,直接复用上一帧的 LUT。
总结来说,EyeQ 上的预处理不是“把图像变好看”,而是在有限算力下,把车道线和可行驶区最需要的对比度、尺度、区域信息保留下来,同时把无关区域和噪声压下去。去噪、CLAHE、逆光阴影、ROI、金字塔这五步的顺序和参数,必须围绕“车道线在哪个尺度、哪个区域、以什么对比度出现”来设计,而不是照搬通用图像处理流程。