关于灰度图像的处理以及这一年来做车的回顾

最近搞了一些计算机视觉在MCU上的应用,较为合适的方案类似于openmv,但是其消耗时间也略长,并不适合高频控制。为此,必须要对传统图像处理中的算法进行简化以适应MCU。


对于边缘的提取以及是否二值化,我的想法是无论是边缘提取还是二值化都需要进行图像遍历,而二值化的好处仅仅是可以简化图像,那么为什么不直接在边缘提取中整合呢?所以我不采用先二值化的方案。边缘检测可以使用Canny算法,不过这个算法的缺点就是耗时过长,但是除去其中的高斯模糊没办法简化以外,其余都可以。比如非极大值抑制则完全可以以阈值的形式来体现,而且在先期计算图像梯度时也不需要使用八个方向,四个即可,最终的形态学分析也完全可以和赛道线合理性判断相结合,那么整体简化下来,计算量就会小很多了。

即便是Canny算法,也无可避免地会遇到强光干扰的问题,这时可以采用Gamma变换对图像进行整体灰度映射,高光时进行高光压缩,低光时进行高光扩展,将噪声压制于背景之中,同时,这样的做法可以使得后续的边缘提取问题归一化,即无论环境光照如何,最后经过变换后的图像,灰度直方图呈现出统一。


关于逆透视,这是个讲了很久的问题,全局逆透视不太现实,浮点运算过多,正确的操作应该是边缘逆透视,而且是以矩阵运算的形式这样方便自己修改逆透视参数。随便用一些软件仿真一下即可得到矩阵参数,我这里使用的是Python。