由于参加飞思卡尔智能车比赛,铺赛道变成了一个重要的环节。而此次铺赛道用了过去留下的赛道
进行拼接,导致赛道的长度不好计算,因此,博主与小伙伴想了一些办法估算长度,下面介绍Matlab
图像矫正估算赛道长度的方法。
    首先由于赛道过长的原因,无法获得整个赛道的图,俯视图则更不为可能。因此,本次方法为采集
两张图片进行分别处理计算再相加。图片如下图所示。代码在文末链接,供参考改进。


飞思卡尔--Matlab图像矫正估算赛道长度 飞思卡尔--Matlab图像矫正估算赛道长度


接着我们截取我们需要的部分(以下以一边赛道为例)。


飞思卡尔--Matlab图像矫正估算赛道长度


1.然后我们取该赛道的灰度值

飞思卡尔--Matlab图像矫正估算赛道长度

2.接着再进行图像的矫正

飞思卡尔--Matlab图像矫正估算赛道长度

3.进行初次的去噪(补充横线的白点)

飞思卡尔--Matlab图像矫正估算赛道长度

4.对全黑的矩阵用双线法进行补充。(此处为关键,也可用最近邻插值法,由于博主在此处的算法较
为粗略,因此算法复杂度高,且处理效果一般,改进空间较大)

飞思卡尔--Matlab图像矫正估算赛道长度

5.对改图进行二值化

飞思卡尔--Matlab图像矫正估算赛道长度

6.观察图像,再次去噪

飞思卡尔--Matlab图像矫正估算赛道长度

7.最终效果图(该图左边反光较大,可再次进行处理)

飞思卡尔--Matlab图像矫正估算赛道长度

PS:下图为用PS矫正后的图像(效果更好)。

飞思卡尔--Matlab图像矫正估算赛道长度

用同样的方法可以得出另一半赛道的图片。
    得出了二值化的矩阵之后,可利用面积法算出赛道的长度。首先计算出所有白点的个数。由于赛道
的宽度是已知的(去掉两边的路肩共40cm),于是可以取一小段直道取其行的平均值,就可以算出赛道
的宽度共占多少个像素点,也就可以算出一个像素点占多大的长度,再用总像素点除以每行所占像素点
再乘以每个像素点的长度,即可大致得出赛道长度(由于再某些地方(十字和环岛)白像素点重叠了,
因此最后再加上这些值即为赛道总长度。
    用改方法算出的赛道长度大约为55米左右,用PS矫正后的图片则算出57米左右,而用车跑圈,利用
编码器计数则算出56米左右。可见该方法还是存在一定的可行性的。
    最后附上代码的网址http://blog.csdn.net/weixin_36340979/article/details/79200972。
    对博主有好意见提议的欢迎留言一起讨论。












相关文章: