1 题目的主要研究内容
使用MATLAB将采集到的图像信息读入,采用一系列的方法对图像信息进行预处理;再分析不同像素点分布与边缘的相应变化范围,从而确定牌照的大致位置,由此分割出车牌的矩形区域;使用二值化的方式对矩形区域处理,再选用相应阈值将此切割成一个个字符;然后使用神经网络来识别字符,输出即为识别的车牌。
2 流程介绍
①原始车牌图像:由扫描装置拍摄到的车牌图像或者本地上传。
② 车牌图像预处理:对动态采集到的车牌图像进行滤波、边界增强等处理以克服图像干扰。
③ 车牌定位:计算边缘图像的投影面积,寻找峰谷点,大致确定车牌位置,再计算此连通域内的宽高比,剔除不在域值范围内的连通域,最后得到车牌字符区域。
④ 字符分割:利用投影检测的字符定位分割方法得到单个的字符。
⑤ 字符数据库:为下一步的字符识别建立字符模板数据库。
⑥ 字符识别:基于人工神经网络的OCR算法,通过训练识别出相关的字符,得到最后的汽车牌照,包括英文字母和数字。
3 详细介绍
3.1 图像预处理
在实际应用中,不同的光照条件、汽车自身的运动变化、拍摄的角度、硬件设备等等因素会直接影响到拍摄图像的效果,存在各种噪声;故在牌照定位前,对图片信息预处理从而改善图像质量,获得更加有效的信息。
(1)灰度处理
灰度化处理就是将彩色的三维图像转变为二维图像。彩色图像有R、G、B 三个分量,灰度化就是使彩色的R、G、B 分量转化为三个相等的分量。灰度值大的像素点比较亮,灰度值小的像素点比较暗。
(2)图像增强
为提高识别率和精确度,必须在边缘提取前增强汽车牌照部位和其他部位的对比度以及增强车辆图像,使二维灰度化的图像明暗对比鲜明。本次课设中采取直方图均衡化的方式来对图像进行增强处理。由于图像有时会出现整体偏暗或者整体偏亮的情况,要使用MATLAB中的变换函数将原图像的直方图修的更为均匀,使其层次鲜明丰富、直方图均匀分布,从而避免整体偏暗或者整体偏亮的极端情况。
3)边缘提取
在检测边缘时,为突出图像灰度变化的作用,需要利用微分算子把图像信息进行微分运算;由于在图像边缘处的地方灰度变化比较大,所以此处图像微分计算所得到的值比较高;可以把此值作为相应点的边缘强度;将设置好的阈值与分支比较结果来判断和提取边缘点,只要分支大于阈值,就可以将其作为边缘点来提取。其主要的步骤如下:为了突出图像中的局部边缘,需要使用边缘来增强算子的方法;接着定义像素的边缘强度、设置门限,最后提取边缘点集,依此进行完成边缘的提取。
3.2 车牌预处理
由于放置不当或拍摄角度问题,分割下来的车牌可能存在水平或垂直方向的倾斜。为了准确的分割字符,识别出车牌,所以分割下来的车牌要进行倾斜校正。倾斜校正分为两步:第一步是计算出倾斜的角度,第二步是根据倾斜的角度进行旋转变化。
3.3 字符分割
为了得到包含车牌字符的水平条形区域,需要将分割后的车牌图形进行二值化和倾斜校正,然后将车牌字符分割出来,以便于识别。本课设采用的字符分割方法是先规定分割出的车牌区域长宽为23852,设置阈值为2,寻找大于阈值2的列的数目,然后找到跳变对应的前边缘和后边缘所对应的列,当跳变点所对应的前边缘和后边缘所对应列的长度是23852的0.02倍时进行分割。
3.4 车牌识别
本文设计的汽车牌照识别系统是基于CNN神经网络的识别系统。cnn神经网络是一种多层前馈神经网络,它采用了误差反向传播算法。cnn神经网络的实现分为学习过程和识别过程两个部分,在学习过程中,同时进行着两个过程,分别是信息的正向传播和误差的反向传播。基于BP算法的前馈网络由输入层、隐层、输出层三个部分组成。
4 识别结果:
5.cnn训练截图
相关程序代码获取:
基于matlab的CNN神经网络车牌识别