由于在车牌定位中,我们使用了归一化过程。因此所需要处理的车牌的大小是统一的,在目前的版本中这个值是136*36。
那么字符分割的结果就是将车牌中的所有文字一一分割开来,形成单一的字符块。生成的字符块就可以输入下一步的字符识别部分进行识别。我们可以使用人工神经网络,也就是ANN来识别字符。
具体而言,字符分割过程是如何做的呢?简单说,就是:灰度化->颜色判断->二值化->取轮廓->找外接矩形->截取图块。
1.灰度化
首先,我们把彩色的图片转化为灰度化图片。注意:为了以后可以利用彩色信息,在前面的车牌检测过程中,我们的输出结果不是灰度化图片,而是彩色图片。这样以后当我们改正算法,想利用彩色信息时就可以使用了。
但是在这里,我们的算法还是针对的是灰度化图片,因此首先进行灰度化处理。
灰度化后的图片见下图:
2.颜色判断
灰度化之后,为了分割字符。我们需要获取字符的轮廓。注意:分割字符有很多种方法。例如投影法,滑动窗口判断法,在这里,使用的是取字符轮廓法。
因为需要取轮廓,就需要把图片转化成一个二值化图片。不过,由于蓝色和黄色车牌图片的区别,两者需要用的二值化参数不一样,因此这里需要对车牌图片的颜色进行一个判断。车牌颜色对二值化的影响的分析见后面“其他细节”章节。
这里颜色判断的使用的是前面颜色定位详解里的模板匹配法。
3.二值化
获取颜色后,就可以选择不同的参数进行大津阈值法来进行二值化。对于本示例图片中的蓝色车牌而言,使用的参数为CV_THRESH_BINARY。
二值化后的效果见下图:
4.取轮廓
接下来,使用被多次用到的取轮廓方法findContours。关于这个方法的具体内容,在前面的开发详解中已做过介绍,这里不再赘述。
取轮廓后的结果如下图:
注意:直接使用findContours方法取轮廓时,在处理中文字符,也就是“苏”时,会发生断裂现象。因此为了处理中文字符,EasyPR换了一种思路,使用了额外的步骤来解决这个问题。具体可以见后面的“中文字符处理”章节。
5.找外接矩形
使用了中文字符处理方法以后,成功获取了所有的字符的外接矩形。
具体见下图:
6.截取图块</