背景综述


交通标志在我们的日常生活中应用很广泛,它们遍布在道路的各个角落,以自身不同的标志来提醒行人与驾驶员道路状况。现在,人们的出行方式多种多样,可以是步行,骑自行车,乘坐公共交通工具或者驾车等等,所以道路交通标志与我们的人身安全更加息息相关。我们每个人都应该熟悉每种道路交通标志所代表的意义,并知道如何去遵守交通标志所代表的交通规则。
根据调查发现,交通标志在校园外具有很强的约束力,因为有交通管理机关进行管理,有相应的交通法规进行约束。但是,在校园内,交通标志的约束力明显偏低,人们在校园内经常忽视交通标志的存在,这是存在极大的交通安全隐患的,人们应该引起相应的重视。
人们获取交通标志信息是通过人眼进行识别,经过大脑分析,进而得知交通标志所代表的意义。但是当人们遇到一个陌生的交通标志,其对于交通标志的识别就受到极大的制约,往往会造成对交通标识判断错误或者忽视等情况的发生。所以我们需要一种高效的交通标志检测与识别的方法。


设计目的


基于Matlab的校园交通标志检测与识别设计旨在设计并实现交通标志的准确检测与高效识别,帮助人们可以更好地认识交通标志并理解其存在的重要意义,使人们在保障人身安全的同时,遵守交通法规。


实现过程


在进行Matlab程序设计与编写之前,先需要采集校园的交通标志图像,校园的交通标志图像主要分为禁止类、警示类以及指示类三类,这三类都具有各自颜色以及形状特点,这也在图像分割与特征提取时会用到。对于交通标志的识别分为检测与识别两部分,检测是通过交通标志的颜色以及形状特征,将交通标志从自然场景中提取出来,识别则是识别出检查到的交通标志内容。


第一步为了更好地进行信息的交互,需要先设计基于Matlab的GUI界面设计


根据设计需求,在GUI设计界面,在一个面板放置了三个单选按钮,分别为红色标志、蓝色标志、黄色标志,用于区分交通标志的类型,也就是禁止、警示与指示三类。


第二步其次我们需要读入含有交通标志的图像


所以设计了读取图像按钮,以及用于显示原始图像的坐标区。然后在读取图像按钮的CallBack回调函数中编写Matlab程序,程序的大致思路如下:首先利用Matlab提供的uigetfile函数实现弹窗选择需读入图像,利用axes函数创建axes1坐标系并显示原始图像,再调用guidata函数刷新相关变量。


第三步接下来是对原始图像进行高斯滤波


在GUI界面设计了高斯滤波按钮以及用于滤波后图像显示的axes6坐标系。在高斯滤波按钮的回调函数中编写Matlab程序,对于读入的交通标志原始图像,利用fspecial 函数建立预定义的滤波算子,接着借助infilter函数进行滤波处理,然后用axes函数创建axse6坐标系用于显示滤波后的图像。之所以进行高斯滤波,是为了一定程度消除高斯噪声,方便后续的交通标志图像处理。


第四步为了进行交通标志的提取


在GUI界面设计了标志提取按钮,同时设计了axes2与axes3坐标系,用于显示原始交通标志图像的灰度及二值化图像。GUI界面设计后是进行CallBack回调函数里编写相应的Matlab程序,大致设计思路如下,首先获取步骤一选择的标志类型,然后对读入的原始图像或高斯滤波后的图像进行灰度化,二值化,根据原始图像的红、蓝、黄三种颜色的分量,进行交通标志大致提取。


第五步对初步定位到的交通标志图像进行图像分割操作


大致思路是通过对图像进行形态学滤波的精准定位与分割。在GUI界面中设计了标志分割按钮以及用于显示分割后的图像的axes4坐标系,然后在标志分割按钮的CallBack回调函数中编写相应的Matlab程序。图像分割实现过程大致如下,先以三行三列全为1的矩阵作为腐蚀膨胀的模板,再进行腐蚀运算,腐蚀二值化图像,再利用bwareaopen函数去除腐蚀图像中的噪声,然后就是图像分割步骤。


第六步,对进行标志分割后的得到的图像进行标志识别


在GUI设计界面设计了标志识别按钮与显示交通标志识别结果的text2。在标志识别按钮CallBack函数中编写Matlab程序,大致思路是利用BP神经网络算法先进行训练,然后根据训练结果与经过处理的交通标志图像进行参照,进而得出校园交通标志的识别结果。


设计实现效果


在这里插入图片描述
在这里插入图片描述