《车牌识别系统实验报告》由会员分享,可在线阅读,更多相关《车牌识别系统实验报告(13页珍藏版)》请在金锄头文库上搜索。
1、图像处理与计算机视觉期末作业专业:计算机软件与理论年级:2018级学号:12018000758姓名:何勇2019年8月21日车牌识别系统(VLRP)实验报告一、实验目的1、了解车牌识别系统及其应用;2、结合本门课程所学内容,设计一个车牌识别系统并实现。二、实验原理1、图像预处理:针对车牌的颜色特征,利用hsv色域进行二值化,并进行膨胀和去噪处理。 摄像时的光照条件,牌照的整洁程度,摄像机的状态(焦距,角度和镜头的光学 畸变),以及车速的不稳定等因素都会不同程度的影响图像效果,出现图像模糊, 歪斜或缺损,车牌字符边界模糊不清,细节不清,笔画断开,粗细不均等现象, 从而影响车牌区域的分割与字符识别
2、的工作,所以识别之前要进行预处理。2、车牌定位:对预处理后的图片进行区域标记,根据各连通量的长宽比以及黑色像素所占 比例定位车牌位置。从背景中准确地确定牌照区域是整个识别过程的关键。首先 对采集到的图像进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候 选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为 牌照区域,并将其从图象中分割出来。3、字符分割:完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。在 本次系统开发中,字符分割采用垂直投影法。由于字符在垂直方向上的投影必然 在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的 字符书写
3、格式、字符尺寸限制和一些其他条件,利用垂直投影法对复杂环境下的 汽车图像中的字符分割有较好的效果。4、字符识别:用图像分类和识别中的所学内容对字符识别,比如基于模板匹配算法、基于 支持向量机或基于神经网络的方法。我选择的是基于BP的神经网络算法。将分 割出来的字符做n等分分割,统计个等分块内的黑像素比例,并与特征库比对, 识别字符。三、系统流程图四、实验步骤4.1基于颜色的BP神经网络车牌定位车牌底色库I.I训练BP神经网 1络区分车牌像素是否蓝色L图4-1车牌定位流程图图4-2车牌底色库部分样本建立车牌底色库,在本论文中仅对蓝底白字车牌进行研究。对于这些车牌样 本,将其从RGB色彩空间转换为
4、得到其CR CB红色及蓝色分量。对车牌样本每 个像素,均可得到其CR CB。而我们关心的只是两种像素,即蓝色非蓝色像素。 对于蓝色的像素,在转换为CR CB后其对应的BP神经网络映射关系为输出为 1。非蓝色的像素,在转换为CR CB后相对应的BP映射为输出为0。由于BP 神经网络要求输入值0到1,所以CR CB还需作简单的处理,把它转为符合要 求的输入。到此,用于进行车牌定位的BP神经网络模型有了输入层及输出层。即,输 入层含两个神经结点(某像素的CR CB分量),输出层仅一个神经结点(对应逻 辑关系为这个像素在视觉上是否为蓝色),中间层设计为仅含4结点的一层。设计好BP神经网络模型后,将车牌
5、的底色投入训练,在网络收敛后可用。 这时的神经网络可以认为是已具备区分蓝色及非蓝色的能力了(对于训练得到的 权值保存到一个文件CharBpNet.txt中,以便在恢复网络时直接读取而节省大量 的训练时间)。然后对任意的一张含车牌的图像每个像素,将它投入网络当中, 如果网络认为是蓝色的(结点输出为范围在0.8-1.0间的),那么将此像素映射 成255;如果网络认为非蓝色的(结点输出范围在0-0.8间),那么将此像素映 射成0。这样我们可以得到除了一张二值图像外,还可以将车牌从复杂的自然图 像分离开来(当然这是从十分理想的角度出发的,实际上当车辆颜色也是蓝色的 时候是无法分离的)。图4-3左图为自
6、然车辆图像,右图为经BP神经网络后得到的二值图像4.2基于图像投影技术的车牌分割图像投影技术一般分为水平投影和垂直投影。所谓投影就是对图像的某种特 征的统计,然后以直方图形式反映其特征强度。一般是对二值图像而用的,水平 方向的投影就是每行的非零像素值的个数,在这里就是1或者255,垂直投影就 是每列图像数据中非零像素值的个数。由于车牌字符在车牌上,所以这部分可以认为是对字符的粗定位或车牌的精 确定位。在设计上算法上可以这样做。对二值图像分别作水平和垂直方向的投影, 得到其直方图分布,然后分别在波峰的地方作直线,这样水平方向和垂直方向共 计四条直线,它们相交形成一矩形,此矩形即为车牌的大概位置。
7、图4-4将要进行投影的二值图像4.2.1水平投影技术逐行统计白点直方图显示投影统计结果波峰即车牌上下边缘图4-5车牌水平投影效果图按行累加每个像素点的灰度值做投影,横坐标为灰度累加的和,纵坐标为图 像的行数,即可确定车牌区域上下边缘。水平分析算法如下:1)从下向上逐行扫描图像,记下每行中灰度值为255的像素点的个数;2)找到第一个灰度值为255的像素点的个数大于某个阈值的行(并且紧挨着的若 干行都满足个数大于某阈值),记录下行号,即为车辆牌照最下边缘;3)然后继续扫描,找到第一个灰度值为255的像素点的个数小于阈值的行(并且 紧挨着的若干行都满足个数大于某阈值),记录下行号,即为车辆牌照的最上
8、边 缘;4)这时不再继续扫描,根据记录的两个行号,对原始图像进行裁剪;5)得到裁剪后的图像,即为水平方向定位的牌照图像区域。4.2.2垂直投影技术逐列统计白点直方图显示投影统计结果波峰即车牌左右边缘图4-6车牌垂直投影个效果图按列累加每个像素点的灰度值做投影,横坐标为灰度累加的和,纵坐标为图 像的行数,即可确定车牌区域左右边缘。垂直分析算法如下:1)从左向右逐列扫描图像,记下每行中灰度值为255的像素点的个数;2)找到第一个灰度值为255的像素点的个数大于某个阈值的列(并且紧挨着的若 正列都满足个数数大于某阈值),记录下列号,即为车辆牌照最右边缘;3)然后继续扫描,找到第一个灰度值为255的像
9、素点的个数小于阈值的列(并且紧挨着的若干列满足个数大于某阈值),记录下列号,即为车辆牌照的最左边缘;4)这时不再继续扫描,根据记录的两个列号,对原始图像进行裁剪;5)得到裁剪后的图像,即为垂直方向定位的牌照图像区域。分别投影后效果如图4-7所示:图4-7分别投影后效果图值得一提的是并不是所有的自然车辆图像经BP神经网络动作后都那么完美 的,这也是为什么在求车牌各个边缘的时候设定一个阈值(并且紧挨着的若干行 都满足个数大于某阈值)的原因。如图4-8所示:图4-8示例图经过对车牌的二值图像的水平和垂直投影后,我们已经得到了车牌的精确位 置,也即字符的所在区域。至此,我们可以把注意力从原始的二值图像
10、集中到二 值图像中的车牌局部区域来(即如何从车牌中分割出每个字符)。除了可用比例的方法来进行字符分割外,本文采用一种适应性更好的基于投影技术来进行分割。字符分割处理采用基于投影特征值的方法,对于数字及字符, 由于它们都属于连体字,因此只需在字符或数字之间找到一条无边的空白区(窄 的区域),即可实现数字及字符之间的分割处理。图4-9即将进行字符分割的车牌图像显然要在上图中分割出字符,只需在车牌内(白色矩形)对字符作像素为 255的垂直投影,具体方法如下:逐列统计黑点直方图显示投影统计结果波峰即字符边缘按列累加每个像素点的灰度值做投影,横坐标为灰度累加的和,纵坐标为图 像的行数,即可确定车牌区域左
11、右边缘。垂直分析算法如下:1)从左向右逐列扫描图像,记下每行中灰度值为0的像素点的个数;2)找到第一个灰度值为0的像素点的个数大于某个阈值的列(并且紧挨着的若正 列都满足个数数大于某阈值),记录下列号,即为车辆牌照最右边缘;3)然后继续扫描,找到第一个灰度值为0的像素点的个数小于阈值的列(并且紧 挨着的若干列满足个数大于某阈值),记录下列号,即为车辆牌照的最左边缘;4)这时不再继续扫描,根据记录的两个列号,对原始图像进行裁剪;5)得到裁剪后的图像,即为垂直方向定位的牌照图像区域;6)保存每个字符的区域坐标。效果如图4-10所示:图4-10字符分割效果示意图4.3基于BP神经网络的车牌字符识别4
12、.3.1车牌字符库的建立字符库的建立是为字符的识别作准备的,字符库要求每个字符按一定标准保 存,如保存格式一致,大小规格相同,每个字符的数目相同等等。在本次车牌识 别系统研究中,只对数字及字母作研究,对汉字不作研究,所以共计34个不同 各类的字符。数字0和字母o,数字1和i为均认为是同一字符,每个字符用程 序获取10个不尽相同的字符,字符库的建立是为了训练BP神经网络的样本。4.3.2图像的缩放技术在计算机图像处理中,图像缩放是指对数字图像的大小进行调整的过 程。图像缩放是一种非平凡的过程,需要在处理效率以及结果的平滑度和 清晰度上做一个权衡。当一个图像的大小增加之后,组成图像的像素的可 见度
13、将会变得更高,从而使得图像表现得更“软”。相反,缩小一个图像将会 增强它的平滑度与清晰度。本次系统开发中,我采用最邻近插值法将每个字符都归一化到 6*12的 统一规格中去,所谓的最近邻插值,通俗理解就是将每一个原像素原封不动 地复制映射到扩展后对应四个像素中,效果图 4-11所示:tlj5Fl52|图4-11归一化前的各字符归一化后各字符一次为:岬4.3.3字符的保存首先给字符编号,0-9分别编号为00-09, A-Z分别编号为10-33。在本文中, 字符的保存格式为raw原始图像数据文件,命名依次为000raw到339raw。即不 超过340的三位数加格式名raw,前两位数代表这个字符的编号
14、,第三位数n代 表这字符是第n张字符,如某字符某名为089raw即意味着这字符代表数字8, 它在库中是第9张(从第0张开始计数)。又如330raw代表着这字符为字母Z,它 是第0张。为了使字符库的字符和待识别的字符尽量保持一致性,字符的建立是 通过程序的方法获得的。具体做法如下:1)分割车牌中的每个字符;2)将各个字符逐一归一化到6*12统一标准;3)将归一化的字符按一定的标准命名保存即可。最后得到了 340张不同的共34种的格式为.raw的文件,用程序显示这些字符库 如图4-12所示:2n0000n001II1iI1I11212222233333335344Jj日A5Es555耳E5566&bgS67771771777忘aS3SSflegg999g999A3GAAAAA0RS厚EBBRrrCCcccc0u0nDn(uD0ErEEEEEEFFFFFFF