计算机视觉与深度学习实战:以MATLAB、Python为工具
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

5.3 程序实现

车牌自动识别系统以车辆的动态视频或静态图像作为输入,通过牌照颜色、牌照号码等关键内容的自动识别来提取车牌的详细信息。系统硬件配置一般包括线圈触发设备、摄像设备、灯光设备、采集设备、车牌号码识别器等;其软件核心配置包括车牌定位算法、车牌字符分割算法和车牌字符识别算法等。某些车牌识别系统还具有通过视频图像判断车辆驶入监控区域的功能,一般被称为视频车辆检测,被广泛应用于道路车流量统计等方面。在现实生活中,一个完整的车牌识别系统应包括车辆检测、图像采集、车牌定位、车牌识别等模块。例如,当车辆检测模块检测到车辆时,会触发图像采集模块采集当前的车辆图像,车牌定位识别模块会对图像进行处理,定位车牌位置,再将车牌中的字符分割出来进行识别,最后组成车牌号码输出。

车牌信息是一辆汽车独一无二的标识,所以车牌识别技术可以作为辨识一辆车最为有效的方法。车牌识别系统包括汽车图像的输入、车牌图像的预处理、车牌区域的定位和字符检测、车牌字符的分割和识别等部分,如图5-3所示。如图5-4所示为根据车牌颜色纹理特征参数定位车牌区域。

图5-3 车牌识别流程图

图5-4 车牌区域定位

车牌区域定位和分割的过程通过颜色纹理范围定义、行列扫描的方式来实现。核心代码如下:

图像二值化指在整幅图像画面内仅有黑、白二值的图像。在实际的车牌处理系统中,进行图像二值变换的关键是确定合适的阈值,使得字符与背景能够分割开来。车牌图像经过二值变换后具备良好的保形性,能有效保持车牌的形状信息,并能去除额外的孔洞区域。车牌识别系统一般要求具有速度高、成本低的特点,采用二值图像进行处理,能大大提高处理效率。阈值处理是通过OSTU算法生成一个阈值,如果图像中某个像素的灰度值小于该阈值,则将该像素的灰度值设置为0或255,或者将其灰度值设置为255或0,如图5-5所示。

图5-5 图像二值化

为了集成车牌识别的过程,可通过设计工具栏的快捷方式,组织按钮控件、显示控件等对象得到GUI框架,如图5-6所示。

图5-6 GUI框架设计

其中,字符分割按钮关联了对车牌字符图像的分割及存储操作,能进行归一化处理,得到待识别的对象。核心代码如下:

载入车牌图像,进行定位、二值化、切割、识别操作,实验效果如图5-7所示。

图5-7 车牌识别效果

其中,字符识别过程采用了模板匹配的方法,在实际操作中通过对归一化后的字符图像与模板库进行对比得到对应的字符结果,并组织成车牌字符串进行输出。核心代码如下: