最近工作依然在车牌定位上。经过粗定位,车牌框或大或小,或误定位情况杂多。而往往高的识别率最重要的就是对这些情况如何一一解决,即所谓的细节问题。
这里粗略描述下过程,讨论方法而已,毕竟调试过程无法细说,代码也是很简单的。
首先,颜色是一重要特征,在精定位作为一种辅助作用,可以对一大部分车牌进行调整。当然这里是指中国大陆的车牌,蓝色为主,其他特殊车牌不作讨论。判断一个定位出来的block是否为蓝色,我用了YUV,对U和V值划定一个范围,这个范围要依据实际采集的图像为准。按行可以计算出具有最多蓝色像素的行,当然block中所含有的蓝色像素个数也能得到,以这两个数值为条件(行最大蓝色像素值和总蓝色像素个数),对满足条件的block进行上下即左右调整。有一种block的情况是满足上述两个条件,但是在汉字区域蓝色像素稀少,有时在调整左边界的时候会把字符切掉。所以需要对这种情况再进行判断条件的更改,重新调整回来。
其次,由于光线影响,蓝色信息难免缺失,或者整个block已经没有了蓝色信息。这种情况我用了梯度图像。先求得左右方向的梯度图像,再二值化(阈值选取适当,也是一个可调参数),然后遍历每行,如果两个白点之间连续黑像素小于5个以内,则这些黑像素用白点替换。紧接着对图像做4领域或8领域判断,消除一些相对孤立的点。这些预处理做完就开始调整左右边界了,方法是统计好每列白点数,然后逐列判断白点密度。对于车牌区域左右两边区域较复杂的情况,可能无法调整过来。
复杂背景下采集的图像,情况复杂,只有采集一定量的图像并进行大量分析调试,才能尽量多的发现问题并归类。所以简单来说,精调,就是去发现那些细节问题,然后解决问题,这需要大量样本作基础。
【车牌定位之梯度图像】
推荐阅读
- 图像算法|OpenCV Threshold ( Python , C++ )
- yolov3
- CTPN——cpu版本使用
- tf-faster-rcnn 训练自己的数据
- (图像缩放算法)最邻近插值法
- 图像算法|Blob Detection Using OpenCV