STC 单片机摄像头组别面临图像处理效率挑战。核心痛点在于内存资源不足及算法计算耗时过长,导致单帧处理耗时高达 20ms 以上,影响车辆运行稳定性、反应速度甚至可能导致冲出赛道。
针对这一高频痛点,经过反复测试与迭代优化,整理出一套实用性极强的帧率优化思路,实测验证有效,优化后单帧处理耗时可稳定降至 9-11ms,彻底解决卡顿难题。
实测数据对比,直观呈现优化效果
| 图像处理方案 | 单帧采集 + 处理耗时 |
|---|---|
| 未优化(采集 + 处理) | 20ms-25ms(能感觉到慢,上限较低) |
| 优化后(采集 + 处理) | 9ms-11ms(流畅稳定,提高了上限) |
卡顿问题核心症结主要集中在两点:一是内存资源不足,二是算法计算耗时过长。在拆解具体优化方法前,先补充基础知识点。
基础铺垫:灰度图、二值化与大津法核心解析
1. 灰度图:摄像头采集的核心图像格式
摄像头拍摄到的图像为灰度图,仅包含明暗信息,不包含色彩信息。每个像素点的明暗程度用灰度值(0-255)表示。其中,灰度值 0 对应纯黑色,255 对应纯白色,介于两者之间的数值则对应不同深浅的灰色,赛道与背景的差异,本质就是灰度值的差异。
2. 二值化:突出赛道特征的关键步骤
由于灰度图包含大量明暗渐变的像素点,直接用于赛道识别会增加计算量,因此需要进行二值化处理。二值化的核心是设定一个固定阈值,将灰度图中所有像素点的灰度值与该阈值对比,灰度值大于阈值的像素设为纯白色(对应赛道区域),小于等于阈值的像素设为纯黑色(对应背景区域),最终将灰度图转化为仅含黑白两色的二值图,清晰区分赛道与背景。
为了让大家更直观理解阈值对二值化效果的影响,不同阈值下,赛道与背景的区分效果差异明显,阈值选择不当会导致赛道轮廓模糊、背景干扰过多,甚至无法识别赛道。
3. 大津法:自动筛选最优二值化阈值的核心算法
二值化的关键在于阈值选择,手动设定阈值不仅效率低,还会受环境光照影响。而大津法(也叫最大类间方差法),正是为解决这一问题而生的自动阈值筛选算法,其核心原理围绕'类间方差最大化'展开,无需手动干预,能适配不同光照场景。
简单来说,大津法的核心逻辑是:通过遍历所有可能的灰度阈值(0-255),计算每个阈值对应的'类间方差',找到类间方差最大的阈值,即为最优二值化阈值。
结合示意图,进一步拆解大津法原理的三个关键环节:
- 直方图:示意图上方的灰色柱状图,是大津法计算的基础,用于显示该灰度图的灰度分布情况。横轴为灰度值(0-255),纵轴为对应灰度值的像素数量。
- 方差曲线:示意图下方的蓝色曲线,代表每个灰度阈值(0-255)对应的类间方差。曲线的每个点,都对应一个阈值的类间方差结果。
- 最佳阈值:图中用红圈标记的曲线最大值点,是大津法的最终输出,即为自动筛选的最优二值化阈值。
精准优化——针对大津法,破解内存与耗时痛点
了解基础原理后,回归核心优化需求。大家常用的 188×120 分辨率图像,若直接定义两个完整数组,可能会出现内存不够的问题;同时,每帧均遍历全图像素计算阈值,会大幅增加计算耗时。
经过多轮测试验证,总结出两个实用的优化技巧,二者组合使用可实现效果翻倍,且不影响图像识别精度。


