最近在了解这方面的东西,现在只要是整理下这段时间看的资料吧(主要科普为主)。
自动识别车牌(Automatic license plate detection) 这个玩意现在已经很普及了,但是针对一些特定的情况还是需要修改,定制一波(就比如苦逼的我入了一个这样的坑)。
当前的主流模式大致分为以下:
1.获得图片;
2.车牌提取;
3.车牌分割;
4.字符识别;
第一步,获得图片:
就不用说了,你可以直接导入图片或者视频流固定没秒截取几张图这样。
第二步,车牌提取:
这部分就是要从图片中萃取出车牌的位置来,需要考虑的情况蛮多的(如果要进入到应用估计更多),如:定位,大小,颜色,字体,掩体,倾斜。
提取部分的话方法就有很多了:
1. 利用边界/边缘的信息提取,也是主要要讲一下的内容。汽车的车牌都是方方正正的,特例比较少点。这里的话比较流行的边角检测法就是sobel算子(算子就是函数吧,CV的术语)。
sobel算子就是利用边缘两侧灰度的突变来检测的,既然说到灰度的话,那么我们的初始获得的图片都是用rgb的,这样就需要进行灰度化处理。如果直接将原图灰度化处理的话,又会带来另一个问题,
就是sobel找出的候选区域会太多了。这就是由于没有去噪的缘故,这里的话是用高斯滤波去噪。
(不过我从其他地方看到有个比sobel还要快上7-9倍的方法,还没来得及看。先埋个坑。有兴趣的可以看看:
A new vertical edge detection algorithm and its application)
2.全局图像解析,就是将整个图像都考虑进去,有轮廓检测法,预存一些车牌模型进去。这样的做法可能精确率在普遍的情况下会比较高,但是低于低分辨率(轮廓扭曲的)就不太合适,以及比较费时(准备模型多)
3.纹理处理法,通过解析图片中颜色频率过度来鉴别,就比如说车牌底色为黑色,车身又是另外的颜色(如黄色),这样容易区分出来。当有很多边缘的时候就是出现计算量大,目前不太适合应用。
剩下的3,4部分就等下次再补充吧。先撤。
如果想来个综合了解的话可以直接从这个paper里看:
Automatic License Plate Recognition (ALPR):A State-of-the-Art Review