首先放上结果:
新能源车牌识别结果:
蓝色车牌识别结果:
正文开始:
1、在进行图像处理任务之前,首先要明确处理对象和处理流程
处理对象: 新能源车牌和蓝色车牌
处理流程:
2、由于要对蓝色和新能源车牌进行识别,而且新能源车牌是渐变色,所以直接通过设定阈值的方法去识别两种车牌并没有单独识别蓝色车牌的可靠性高。这里,我根据车牌字符的特征进行车牌位置定位:
i.根据字符特征初步找出车牌位置
可以看到,到这里已经找出了车牌的大致区域,但是还存在许许多多的干扰区域。
(这里使用了caimouse的方法,以下是原文链接)
https://blog.csdn.net/caimouse/article/details/104731023?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160706323119195265195568%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=160706323119195265195568&biz_id=0&spm=1018.2118.3001.4449
ii.根据车牌长宽比进行初步筛选
我们可以用最小外接矩形算法框出上一步已选出的区域,然后根据车牌长宽比设定阈值,将满足阈值的矩形筛选出来,当然但还是会存在一部分干扰区域。
(matlab实现最小外接矩形算法的链接如下)
https://blog.csdn.net/qq_31963169/article/details/110728827
iii.对矩形内像素进行颜色统计
到这里我们即可准确找出车牌位置,与此同时车牌的类型(新能源或蓝牌)也可以在这里判断出来
3、倾斜校正
这一步是为后面垂直投影法分割字符和模板匹配做准备
简单来讲,使用霍夫线算法检测车牌上下边框所在直线,计算这条直线倾斜角度,之后对车牌进行旋转即可。当然复杂点的方法可以具体看我的源程序,具体效果如下图:
4、二值化、形态学处理、字符识别
i.二值化和形态学处理这里就不在赘述,很多博客已经讲的非常清晰
ii.字符分割
在这里需要对字符进行准确的分割,在分割之前还是可能会有干扰,需要再次分割出车牌字符的准确位置。这里我的方法是:先向左投影,设定阈值,切割出上下边界,同理在切割出左右边界。但是这只适用于车牌边框明显的情况下,所以我不建议你使用这个方法,慎用!!!
到这里就可以使用垂直投影法进行字符分割,这里需要注意的是新能源车牌有八位,蓝牌有七位
分割结果如下图所示:
iii.字符识别
这里使用模板匹配,因为新能源车牌字符和蓝牌字符不一致,所以要制作两套字符模板。另外需要注意的是,根据《中华人民共和国机动车号牌》序号编码规则,26个英文字符中“I“、”O“不能使用,所以不存在"1"和"I"、"0"和"O"字符混淆的问题
5、最后将结果输出即可
6、结尾
其实看到这里可以发现,这套处理流程对黄色车牌(卡车)的处理同样有效,但是对应的一些参数需要调整。
字符模板(新能源、蓝牌、黄牌)资源如下
https://download.csdn.net/download/qq_31963169/13697488
程序源码如下
https://download.csdn.net/download/qq_31963169/13986382