目录
一. 车牌定位
0 流程
1 将原图像二值化得到黑白图像
基于颜色特征
基于边缘特征
2 筛选车牌区域
第一轮筛选(利用几何特征)
第二轮筛选(利用支持向量机)
3 车牌倾斜斜矫正
二. 车牌预处理
0 流程
1 车牌预处理 方法一:基于颜色特征和大津法二值化
1.1 蓝色车牌预处理
1.2 绿色车牌预处理
1.3 黄色车牌预处理
2 车牌预处理 方法二:基于k-means聚类
3 去除边框
4 二次校正(左右偏斜)
三. 字符分割
1 方法一:垂直投影找波峰
2 方法二:
3 两种方法对比
四. 字符识别
五 输出演示
输入:原图像
输出:得到分割出车牌列表
得到原图二值化图像 -> 轮廓检测 -> 长宽面积等筛选 -> svm筛选 -> 倾斜矫正
四次检测: 1 按照蓝色 2 按照绿色 3 按照黄色 4 按照边缘 得到四个车牌列表
以寻找蓝色车牌为例:选用BGR掩膜与S通道掩膜叠加 进行横向分量大的膨胀 得到二值图像
效果演示: mask_gbr 为 GBR通道掩膜所得二值图像
mask_s 为饱和度通道掩膜所得二值图像
image_bin 为 mask_gbr 和 mask_s与操作经腐蚀后最终结果
增加一个颜色列表 判别按照边缘检测找出的车牌颜色 ,存入列表
(不同颜色车牌进行二值化操作、字符数目不同,需记录)
问题 :
如果膨胀力度大,容易造成车牌字符与背景边缘粘连,识别失败。
膨胀力度较小,容易出现下图车牌分裂,只检测到右半部分的情况。
例
解决:
加大膨胀力会直接造成车牌失败,不予采取。
对于膨胀力度较小,车牌缺失,只能得到车牌右半部分的情况:
roimg为旋转校正图片,rect0(x0,y0,w0,h0) 为当前检测轮廓的位置信息
若 w0/h0<3:直接视为为非车牌区域,舍去
若 w0/h0>3.5:直接将rect0对应的区域投入支持向量机判断是否为车牌
若 3<=w0/h0<=3.5 :向左拓展当前区域,拓展长度为w/2,在拓展区域进行轮廓检测,若能找到轮廓外接矩形满足:
高>2/3h0, max(长/宽,宽/长)<1.5的轮廓,则将rect1(x0-int(w0/2),y0,w0+int(w0/2),h0), 位
置信息对应区域投入支持向量机判断是否为车牌。
例:
红色框代表rect0位置信息,绿色框为向左拓展区域,绿色框内容部
在二值图像上 获取轮廓,并求得外接矩形
通过外接矩形长、宽、长宽比、轮廓包含面积占矩形面积占比,排除一部分轮廓
准备若干车牌图像和非车牌图像用于SVM模型的训练, 将一轮筛选后保留下的轮廓,利用训练好的模型,判别当前区域是否为车牌
过程记录在 csdn :https://blog.csdn.net/afeiererer/article/details/88534905
效果演示: 从左到右依次为 原二值图像、一轮筛选后结果、二轮筛选后结果
车牌字符能够正确分割的前提是车牌图像能够水平,以至于水平投影和垂直投影能够正常进行。
对于下面这种图像,我们可以明显看到车牌有倾斜角度,需要将图像校正,提取车牌。
得到 选出的车牌区域 的 最小外接矩形 ,得到偏转角度 ,旋转原图像 (旋转操作前需扩张原图,以防旋转出边界,造成车牌缺失及数组越界错误)
抠取车牌图像 ,添加至车牌列表
ps: 经过旋转,大体保证上下平齐,但由于拍摄角度,可能如下图出现左右歪斜情况。
(后期将进行二次校正)
输入:车牌原图像
输出:用于字符分割的二值图
二值化 (不同颜色车牌处理方式不同)-> 去除边框->二次校正(左右倾斜)
采用了对比度增强的方法,车牌和数字的对比度得到提高。但部分图像对于汉字部分容易出现模糊情况
采用锐化方法汉字更加清晰,但图像杂质较多
改进方案:将经过锐化预处理的车牌二值化图像和经过对比度增强预处理的车牌二值化图像进行与操作。保留了锐 化的清晰优点,灰度拉伸的杂质少优点。
对比: 第一列为增强对比度后OTSU二值结果,第二列为锐化后OTSU二值结果,第三列为前二者进行与操作的最 终结果
选用提取图像G通道进行大津法(OTSU)二值化的方法
效果:
选用将图像灰度化后进行大津法(OTSU)二值化的方法
效果:
牌照主要分为背景色和文字颜色,其中蓝、黑、黄牌照背景色为单色,一般k=2的聚类即可;绿色牌照背景为白、绿双色,更适用于k=3的聚类(字符更突显)。
但由于光线、杂质等因素,部分车牌进行K=2的k-means聚类可能出现如下状况:
假定车牌原图 SRC 高宽分别为h、w, 我们设定一个高为h/2,宽为w/2的窗口,以一定步长在原图上滑动,若出现窗口中白色像素数量>窗口面积*90, 或窗口中黑色像素数量>窗口面积*90 ,视为失败聚类,将对此类车牌进行k=3的像素聚类。改进效果如下:
对于K=2的聚类,我们统计两类像素:像素值为0的像素个数n0、像素值为255的像素个数n255,认为两类像素中个数多的为背景。所以若n0<n255,将聚类得到的图像取反,保证字符为白色,背景为黑色。
对于K=3的聚类,我们统计三类像素:像素值为0的像素个数n0、像素值为255的像素个数n255,像素值为128的像素个数n128,首先抛除n0,n255,n128中最大值对应的像素种类,视为背景。再从剩余的两种像素中选择出字符代表的像素种类的值,根据这个值进行掩膜运算,筛选出字符去除背景,得到二值图像。
去除上下边框:查找水平直方图波峰,认为水平方向,最大的波峰为车牌区域
去边框效果:
利用霍夫直线检测,求检测到的直线的平均值作为车牌偏斜角度,进行仿射变换
阈值选取:
如果得到波峰小于6(新能源汽车车牌小于7)则舍去
输出波峰:
分割效果:
绿线为每个波峰左端,红线为每个波峰右端。
两条线所夹区域为分割出的数字(汉字、字母),将用于投入支持向量机进行预测。
找到确定的分界,然后补全界限。比如找到了 第1个字符与第2个字符分界,第3个和第4个分界 ,但是没找到 第2个和第3个分界,则取前两个界限中间。
过程:
1.找到不是字符的列
2.找到跳变
3.去杂线
4.找到分界
效果:
取每两条线之间区域,做轮廓检测,找到轮廓包含面积最大的,取其外接矩形部分,投入支持向量机进行预测。
上方为方法一分割效果,下方为方法二分割效果。
可见两种方法各有优劣,可以互相补充。
数字模型需要两套(7位车牌和8位车牌的数字 ‘2’ ,‘4’,‘6’ 字体不同)
Plan A:车牌预处理1+分割1 得到识别结果 r0
Plan B:车牌预处理1+分割2 得到识别结果 r1
Plan C:车牌预处理2+分割1 得到识别结果 r2
比较规则:
设目标结果长度为n (新能源汽车车牌n=8,蓝黄等其余车牌n=7)
串长度 小于n-1 或 大于n+1 视为无效 ,不参与比较 ,所有有效串长度均为 n-1 或 n+1 或 n 。
若三个串最大长度<n ,返回空,识别失败
若三个串中只有一个长度为n ,返回长度为n的串
剩余情况,每位取出现频率最高的字符,返回前n位
CNN:
本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com
本文链接:http://www.glev.cn/tnews/2044.html