确定二值化阀值,进行图像分割,极大提高图像处理速度。本文主要介绍了中心线拟合、

随着汽车保有量的不断攀升,交通拥堵、交通事故不断频发,越来越多的国家投入到智能网联汽车的研发,智能网联汽车多采用传感器融合方案,视觉传感器作为其中一种重要的传感器,进行图像采集。本文采用摄像头传感器进行图像采集,进行赛道元素特征识别,辅助智能车快速通过多种赛道元素,对于提高城市交通智能化有着重要意义。

摄像头传感器是视觉检测的核心器件,信息量丰富,相较于电磁传感器,扫描距离更远,有利于提前进行路径规划。本方案采用龙邱神眼摄像头 MT9V034 作为图像传感器 , 为灰度数字摄像头,只需 3.3 V 供电,分辨率为 120×188,具有高动态成像、超低功耗等多种优 点,该摄像头采用 8 位并行输出,故像素点灰度值范围为 0 ~ 255。

结合智能小车循迹特点,一般会将分辨率设置为 80×60,即可获取赛道图像处理所需数据。高分辨率,图像会更清晰,但数据量增加,传输时间延长,影响图像处理效率,如果再打开串口使用上位机,有机发光半导体(organic electroluminescence display, OLED)屏上图像会延迟,帧率降低,也不便于调试。一般会降低分辨率提高帧率,但也会考虑算法性能,应注重单片机处理速度与图像刷新速度协调。

智能小车采用后轮驱动,为避免车模抖动,应让质心靠后,提高小车抓地力,同时还要保证摄像头尽量靠前,采取到更多有效数据,故将摄像头放在车模中部,关于车轴对称。为减轻整车重量,选用空心碳素纤维管作为固定件,并用哥俩好胶水固定摄像头角度,方便调试。

将摄像头正装,OLED 屏幕上图像显示顺序,从上到下依次为 0 ~ 59 行,从左到右依次为 0 ~ 79 列,一般小车前进时,近处图像位于最大行处,远处图像位于 0 行处。

本方案采用DMA( 直接存储器访问,Direct Memory Access) 进行数据传输,DMA 可以进行高速数据传输,通过 DMA 控制器,可以将摄像头等外设单元采集的数据直接传输到我们的内存中,只有数据传输开始、结束时才会与 CPU(中央处理器)交流,传输过程中,CPU 可以专心进行图像处理;普通数据传输方式,每一个数据传输都需要依赖 CPU 进行,极大占用 CPU 资源。DMA 传输,极大提高了单片机处理效率,故我们采用 DMA 进行数据传输。

FRM 为场中断,每当 FRM 管脚连接的 IO 口检测到一个沿变化,摄像头和单片机之间开始传输一副图像数据;LINE 为行中断,每当 LINE 管脚连接的 IO 口检测到一个沿变化,摄像头和单片机之间开始传输一行数据;PIX 为像素时钟,每当 PIX 管脚连接的 IO 口检测到一个沿变化,摄像头和单片机之间开始传输一个数据。需要采集一副图像时,会先读取到一个场信号,连续两个场信号之间为一副完整图像,当读取到一个场信号后,会连续读取到 120 个行信号,每两个行信号间,会连续读取到 188 个点信号。获得一个场中断后,开始将图像的每一行数据存入数组,并开始进行行累加计数,当计数达到 120 行后,会获得下一个场中断,一副图像采集完毕,及时将行累加计数器清 0,并置场结束标志位,开始进行数据处理。

因选用的摄像头传感器为灰度传感器,无需额外进行图像灰度化,本方案主要采用阀值分割法进行图像分割。阀值的确定是阀值分割法的核心,常见的阀值分为:静态阀值和动态阀值[2],静态阀值容易受到环境光线影响,对不同环境的赛道适应力较差;动态阀值抗干扰性强,对光照变化不敏感。为更好地适应不同赛道环境变化,本方案采用大津法确定动态阀值。大津法(OTSU),利用统计学方法,让计算机在每一张图片上都自适应的根据图片整体亮度确定阈值,单片机在不同环境下都能自适应找到不同的分割阈值,每一张图片的阈值都不一样,受图像亮度和对比度的影响小,但对噪声非常敏感。一般采集的灰度直方图会存在两个峰值,两峰之间存在一个谷底,而大津法的阈值即为峰谷对应的灰度值。

假设灰度直方图中某一灰度值i恰为峰谷,以此为 阀值 Threshold 进行图像分割 , 将一幅图像中所有像素分成前景和背景两部分,前景即为白色,背景即为黑色,验证类间方差是否最大。为优化算法性能,对传统类间方差计算式作出变式,得到公式 1,通过下式计算类间方差值:

在所有灰度值中使类间方差值最大的灰度值即为二值化分割阀值 Threshold。

循环 0 ~ 255 个灰度值,记录每一个灰度值对应的类间方差值,将其与已知的最大类间方差值比较,记录两者间最大值,并进行循环计数,当循环计数值达 256 次,即可确定此时最大类间方差值对应的灰度值为二值化阀值 Threshold。

如果是固定赛道,可以多次试运行大津法算法,记录对应多种赛道元素的二值化阀值,可以得到一个灰度值范围,比如 70 ~ 140, 缩小灰度值遍历范围,提高算法效率。赛道上光线一般比较均匀,当一幅图像中包含噪声和非均匀光照时,可能会造成大津法阀值不准确,而赛道图像中部分元素灰度差别大,特别是可能会遇到上帝之光的干扰,使部分赛道光照与正常赛道光照差异较大,可以采集赛道时,隔行隔列采集,以此形成的灰度直方图,可以有效减少噪声和非均匀光照;面对上帝之光,也可以尝试部分区域求大津的方法,只对赛道前半部分用大津法求二值化阀值,对图像后半部分舍弃,因为小车往往需要近处图像进行数据处理,及时进行赛道循迹,舍弃远处图像数据,可以使图像二值化数值更接近于赛道近处值,效果更好。也可将赛道划分为远近两个区域,对其分别大津法求阈值,并分别加权求出更理想的二值化阈值。

一般情况下,赛道光照强,二值化动态阈值会更大,对于光斑等干扰,不易找到合适阈值,可以安装滤光片等光学元器件改善。

遍历赛道所有像素点灰度值,如果某一像素点灰度值大于二值化阈值,则置为白点 1,如果灰度值小于二值化阈值,则置为黑点 0。

因为摄像头采集到的近处图像实际中线]与赛道理想中线接近,远处图像可能两者差别比较大,所以我们一般选择从近处到远处开始扫线 行的理想中线 列开始向左向右两方向分别扫线,找到黑白跳变点,记录左右边界点位置。

以向左扫线为例,当向左扫线找到一点 H 的值同其左边一点 J 的值差值为 1 时,再以 H 点向左间隔 3 个点找到点 K,计算点 K 同其左边一点 L 的差值为 0 时,继续以 K 点向左间隔 3 个点找到点 M,计算点 M 同其左边一点 N 的差值为 0 时,即可判断找到第 59 行左边界点,将其计入一个大小为 60 的左线数组,这种方法有效避免了噪声、光斑对边界点提取的影响。同理获得第 59 行右边界坐标,左边界坐标与右边界坐标求和后除以 2,即为当前赛道第 59 行实际中点坐标,并将其存入中线数组。

继续以第 59 行实际中点坐标为起始点开始进行第 58 行左右扫线,因为部分赛道如果选取理想中点第 40 列作为下一行左右扫线起始点,可能理想中线正好位于黑域,左右两边扫线遇到的都是黑点,黑白跳变点位置同扫线起始点间隔较远,连贯性不好,极大地浪费 CPU 性能,不利于小车快速巡线。同理进行 For 循环向上迭代求中线 行,将各行中点连接,即为实际中线。

用右边界数组减左边界数组,可以得到赛道宽度。从起始点第 59 行第 40 列的像素开始,向上扫线,找到白黑跳变点,用图像总行数减去白黑跳变点的值即为赛道长度;在某些特定元素判断中,可以使用赛道宽度、赛道长度作为辅助判断,识别特定元素。

选取一个控制行,控制行与实际中线、理想中线交点分别为 O、P,计算两点差值作为偏差,乘以比例项系数

, 作为 PWM 一部分用于小车转向控制。也可以计算多行偏差,对远处偏差赋予低权重,近处偏差赋予高权重,进行累加作为最终偏差,为进一步提高车速,可以针对不同赛道元素,对多行不同区域分别赋予不同的权重。控制行的选取需要综合考虑车速、摄像头前瞻位置等,一般车速越快,控制行数值选取越小。

对于部分特殊赛道或者当小车偏离赛道理想中线时,可能无法找到边界线。当出现单边丢线时,根据不同赛道元素,有多种处理方法,以左边丢线为例,可以将图像左边框线,当算法向左扫线 的时候,即判定该点为左边界点;也可以选择找到某一特殊点,比如拐点,利用拐点和其他已知点进行补线,一般采用

[5]补线处理赛道元素。可以找到左边界丢线 个左边界点,利用公式 2 和公式 3 计算出拟合直线的

和B,将丢线后的行数依次作为纵坐标带入公式 4 计算出横坐标,补齐左边界。当出现双边丢线时,一般是处于特殊元素十字路口处,可以选择存储历史数组的方法,用之前的实际中线数据过特殊元素。也可以选择通过左右拐点等同时补线,通过两边界丢线 个边界点分别拟合出两条直线,补全左右边界。为降低算法复杂度,也可以直接使用丢线前几行的赛道进行直接补线,因车速、电池电量等情况,可能会不稳定。

同理可知,C 为左上拐点,在 C 点下方的左边界线自右向左接近水平生长,斜率较小,在 C 点上方的左边界斜率急剧变大;D 为右上拐点,在 D 点下方的右边界线自右向左接近水平生长,斜率较小,在 D 点上方的右边界线斜率急剧变大。

当左右扫线找到左下拐点 A、右下拐点 B,且从左下拐点向上隔行扫描 2 行,发现下拐点上方白点数目大于某一设定值时,即可判定正入十字。

十字路口下拐点上方有多行空白行,发生丢边现象,需要找特征点,使用最小二乘法构造边界线。左右巡线找到左下拐点 A、右下拐点 B、左上拐点 C、右上拐点 D, 利用斜截式分别构造线段 AC、BD,补出拐点空白行的左右边界线,再利用左右边界线 作为实际中线。正入十字元素补线 正入十字元素补线图

进入圆环后,可以正常扫线找到左右边界,出环后,用相同方法补线 斜入十字路口

以左斜进入十字路口为例,当左右扫线找到左下拐点 A、右上拐点 D,判定为斜入十字。

十字路口下拐点上方有多行空白行,发生丢边现象,需要找特征点,使用最小二乘法构造边界线。左右扫线找到左下拐点 A、左上拐点 C、右上拐点 D, 利用斜截式构造线段 AC,作为左下拐点上方空白行的左边界;取右上拐点 D 点后方 5 个边界点,利用最小二乘法反向补线 行作为纵坐标代入最小二乘法拟合右边界线,循环到 y 取值为 D 点纵坐标,补出丢失的右上拐点下方的右边界,再利用左右边界线 作为实际中线 车库元素处理

本方案主要通过 DMA 传输数据、大津法分割图像,提高单片机处理性能;寻找赛道元素特征点,拟合赛道中线,并对特殊元素进行识别与处理,使智能车更平稳快速通过多种赛道元素,达到了设计要求。

[2] 巴德凯.自适应图像分割及并行挖掘方法的研究与实现[D].北京:北方工业大学,2016.

[5] 徐翔,王琪,高进可,秦海亭,张钰洁.智能车车道识别与图像处理[J].自动化技术与应用,2020,39(07):91-95.

发表回复

您的电子邮箱地址不会被公开。