自学内容网 自学内容网

模板匹配的交通标志识别系统MATLAB

模板匹配的交通标志识别系统MATLAB

一、背景

随着交通技术的日益完善和交通工具的多样化发展,交通安全成为当前最热门的问 题,道路交通关系着人们的生命以及财产安全。

交通标志的识别是保证交通安全的一个重要环节。交通标识包含丰富的道路交通信 息,为驾驶员提供警示、指示等辅助信息,对减轻驾驶员的驾驶压力、降低道路的交通 压力、减少交通事故的发生起着重要的辅助作用。

如果完全依靠驾驶员注意和发现交通标识并做出正确的反应,难免会增加驾驶员的 负担,加速疲劳,严重地可能导致交通事故。道路交通标识识别是通过用安置于车辆前 方的摄像头(这里常借助车道保持辅助系统中的摄像头),检测道路标识(限速、禁止超 车),通对交通标志的采集、处理、识别,将所获取的信息以最快的速度第一时间传送给 驾驶员或直接对汽车采取相应的操作.从而降低了交通安全隐患并节省了人力资源。

、核心代码

由于代码篇幅较长,所以只放入了核心部分的代码

%识别标志

Color = 0; % 按照颜色来分 颜色标记  1是红色 2 是蓝色 3是黄色

if get(handles.radiobutton3,'Value')

Color = 1;

elseif get(handles.radiobutton4,'Value')

    Color = 2;

elseif get(handles.radiobutton5,'Value')

    Color = 3;

end

handles.Color = Color;

Image = handles.I;

switch Color

    case 1

        DI = Image(:,:,1);       

            &abs(double(Image(:,:,2))-double(Image(:,:,3)))<50& abs(double(Image(:,:,1))-double(Image(:,:,2)))>30);

    case 2

        DI = Image(:,:,3);      

case 3        

DI = rgb2gray(Image);

      

end

axes(handles.axes2);

imshow(DI);

axes(handles.axes3);

imshow(GI);

handles.GI = GI;

guidata(hObject, handles);

测试过程图

1.测试图

为了更好地呈现程序对多交通标志的处理,测试时选取了一幅有三个标志两种不同颜色的图像,且需要识别的是黄色警告类标志。

2.边缘检测

边缘检测的目的是找到图像中亮度变化剧烈的像素点构成的集合,表现出来往往是轮廓。如果图像中边缘能够精确的测量和定位,那么就意味着实际的标志能够被定位和测量,包括标志的面积、直径、形状等就能被测量。边缘检测分为四个步骤,分别如下。

2.1 噪声处理

噪声,简而言之就是图像中随机出现的灰度变化大的离散的像素点。噪声可能来自于图像采集,量化等过程,也可能产生于图像传送过程中,具有离散性和随机性等特点。而高斯滤波实质上是一种信号的滤波器,其用途是信号的平滑处理。

首先进行噪声处理。用imnoise函数添加高斯噪声并用高斯滤波去除噪声。

2.2 计算梯度图像

当用高斯滤波降低图像噪声的时候,会带来图像模糊的副作用。从逻辑上考虑,图像模糊是因为图像中物体的轮廓不明显,轮廓边缘灰度变化不强烈,层次感不强造成的。

我们知道微分就是求函数的变化率,即导数。由于梯度的定义只适用于连续的函数,而图像是二维的离散函数,因此对于图像来说我们需要使用有限差分来近似计算梯度。

梯度提供了两种信息——大小和方向。梯度的方向告诉我们函数在这个点沿着这个方向上升最快(负梯度就代表函数在这个点沿着负梯度方向下降最快)。把函数比作一座“山”,我们站在半山腰上,如果我们要上山则沿着梯度方向可以最快到达山顶,如果是下山则沿着梯度的反方向(负梯度方向)则可以最快到达山脚。梯度的大小代表了沿着这个方向的变化率,即导数。所以我们用微分来表示图像灰度的变化率。

2.3 非极大值抑制

非极大值抑制是抑制不是极大值的元素,可以理解为局部最大搜索,这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。它可以帮助抑制除局部最大值之外的所有梯度值,使其指示具有最强烈的强度值变化的位置。

在交通标志检测过程中在同一目标的位置上会产生大量的候选框,这些候选框相互之间可能会有重叠,此时我们需要利用非极大值抑制找到最佳的目标边界框,消除冗余的边界框。

2.4 双阈值检测和边缘连接

它利用图像中要提取的目标与背景在灰度上的差异,通过设置阈值来把像素级分成若干类,从而实现目标与背景的分离。

先设置高、低两个阈值(一般高阈值是低阈值的2至3倍),遍历整个灰度矩阵,若某点的梯度高于高阈值,则在结果中置1,若该点的梯度值低于低阈值,则在结果中置0,若该点的梯度值介于高低阈值之间,则需要进行如下判断:检查该点(将其视为中心点)的8邻域点,看是否存在梯度值高于高阈值的点,若存在,则说明该中心点和确定的边缘点相连接,故在结果中置1,否则置0。

3. 腐蚀膨胀

图像的腐蚀操作类似于中值平滑,首先要取每个位置的一个邻域内的最小值(中值平滑是取中间值),将其作为该位置的输出像素值。这里的邻域不局限于矩形结构,还包括椭圆形结构和十字交叉形结构。它的具体定义为结构元,作用类似于平滑操作中的卷积核。

膨胀和腐蚀操作原理相似,膨胀是选取每个位置邻域内的最大值作为输出灰度值。膨胀后的图像的整体亮度会有提高,图形中较亮物体的尺寸变大,而较暗物体的尺寸会减小甚至消失。

4. 切割标志

根据MATLAB工具箱中的颜色阈值器Color Thresholder的RGB颜色空间,在点云上绘制ROI选择黄色并确定标志位置。

根据图像处理后的结果及颜色阈值器Color Thresholder确定的位置对原图像进行切割,得到交通标志

5. 识别结果

模板匹配是数字图像处理的重要组成部分之一。把不同传感器或同一传感器在不同时间、不同成像条件下对同一景物获取的两幅或多幅图像在空间上对准,或根据已知模式到另一幅图中寻找相应模式的处理方法就叫做模板匹配。简单而言,模板就是一幅已知的小图像。模板匹配就是在一幅大图像中搜寻目标,已知该图中有要找的目标,且该目标同模板有相同的尺寸、方向和图像,通过一定的算法可以在图中找到目标,确定其坐标位置。

采用模板匹配法对切割后的标志进行识别,系统成功识别出结果——注意行人。

​四、参考文献

[1] 张建波. 大学数学实验:MATLAB版[M]. 北京:人民邮电出版社,2022.8.

[2] 崔盼,张荣辉. 基于MATLAB图像处理的道路交通标志处理技术的研究[J]. 黑龙江交通科技,2022,40(10):182-183.

[3] 房泽平,段建民,郑榜贵. 基于特征颜色和SNCC的交通标志识别与跟踪[J]. 交通运输系统工程与信息,2021,14(1):47-52.

[4] 关鑫. 自然环境下交通标志牌的检测与识别[J]. 电脑知识与技术,2019,12(15):190-192.

[5] 娄月新. 基于Matlab的交通标志识别系统设计与实现[J]. 电脑编程技巧与维护,2019(6):83-84.

[6] 孙巍,孙国荣,张瑞龙. 基于MATLAB的道路交通标志识别[J]. 教育教学论坛,2022(12):55-57.

[7]王国栋,姚力. 基于MATLAB的图像处理技术在足迹图像中的应用[J]. 云南警官学院学报,2019(5):107-113.


原文地址:https://blog.csdn.net/2401_84170369/article/details/142918986

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!