论文部分内容阅读
摘要:近年来,我国加强了对车辆管理智能系统的研究和应用工作,而车牌识别技术技术正是其中非常关键的一项技术。本文对基于OpenCV的车牌识别技术进行了一些有意义的探讨,希望对相关工作的开展能够有所借鉴。
关键词:OpenCV;车牌识别技术;车牌定位
1 引言
现代化社会的高速发展给社会生活带来了翻天覆地的改变,比如汽车的保有量不断升高,为人们的生活和工作带来了极大的便利。但与此同时我们也要清醒地认识到,车辆数量的增多也会带来一些消极问题,比如公路拥堵,为了确保交通运行的顺畅,我们必须提升车辆管理水平。在这种背景形势下,我国加强了对车辆管理智能系统的研究和应用工作,而车牌识别技术技术正是其中非常关键的一项技术。
车牌识别主要包括车牌定位、字符分割和字符识别这三个环节,其在小区车辆进出管理、高速公路车辆收费以及公共安全领域得到了广泛应用。本文对基于OpenCV的车牌识别技术进行了一些有意义的探讨。
2 车牌定位
现实中,固定摄像机拍摄到的车辆图像一般会包含车辆背景信息,如何在一幅大的图像中将车牌区域定位出来,是关系到能否将车牌准确识别出来的关键因素,这同时也是后续进行字符分割以及识别的前提和基础。
2.1图像灰度化
固定摄像头拍摄到的汽车图像一般都是彩色图像,但彩色图像在分析过程中會受到较大限制,且不利于对车牌区域进行精准定位。所以当拿到一张汽车图像后,一般第一步就需要对其进行灰度化处理。将彩色图像转换为灰度图的方法也比较多,而OpenCV就提供了相应的转换函数cvtColor,利用该函数可以直接将拍摄到的RGB彩图转换为灰度图。一般经过灰度化处理的图像还应该进行滤波处理,这样能在一定程度上提升定位的准确性。滤波可以应用OpenCV库中的medianBlur函数实现。
2.2垂直边缘检测
考虑到车身纹理主要是水平边缘,而车牌字符纹理却属于竖直边缘情况,所以为了提取字符边缘信息,就有必要对灰度图像进行竖直边缘检测。竖直边缘检测可以采用Sobel函数实现,并进一步利用threshold函数对经过垂直边缘检测的图像进行二值化处理,得到边缘二值化图像。
2.3形态学处理
通过上述处理得到的二值化图像中依然还会包含一些干扰因素,比如车身和车辆所处背景中的其他物体等等,此时就需要采用形态学处理的手段来排除这些干扰因素,即作膨胀腐蚀处理。考虑到汽车车牌上的数字是横向排列的,所以只需要进行横向膨胀就能使车牌区域连通成为一个整体。此时,图像中的其他干扰区域可能依然保持着没有连通的小碎块状态,这样就可以利用开运算对这些干扰区域加以去除。最后再进行相应的逆向操作就可以将车牌恢复到原先形态。
2.4车牌矩形筛选
经过上述处理后的车牌会连通成一个整体,即近似显示成为一个矩形区域,此时就可以利用OpenCV库中的cvFindContours函数来进行轮廓检测。当然,因为汽车的停放背景中也可能包含其他竖直横排字符,比如广告牌之类的,所以检测出的矩形区域可能并不唯一,这时就需要作更进一步地聚类和筛选,应结合实际车牌的特点,比如长宽比等信息,构建一个合适的筛选算法来完成车牌区域的定位。
3 字符分割
3.1倾斜校正
现实中,由于摄像头安装位置等因素的影响,拍摄到的图像可能会存在一定倾斜,而这会严重影响到字符分割,所以需要对图像进行倾斜校正(如图1所示)。此时,可以利用算法将构成车牌矩形边框的直线提取出来,然后计算直线的倾斜角度。在此基础上,通过将原有图像进行相应的旋转来完成校正操作。待图像完成倾斜校正后,就可以Otsu方法对其进行阈值化出来,此时字符图像就能作为前景被提取出来。
3.2边框去除
车牌是通过铆钉固定在汽车上,而铆钉和车牌边框也会影响到字符分割,所以还需要进一步对这些干扰因素进行去除。实际中可以利用基于像素跳变次数的方法来对边框和铆钉进行去除。对于字符区域,一条水平扫描线会经过若干字符,即完成多次像素跳变。而上下边框和铆钉部分,像素的跳变次数则会大大降低,极限情况如扫描行与水平边框重合时,像素可能零跳变。利用这一特点,可以从车牌中间位置向上下进行行扫描,当发现扫描到的像素跳变次数小于预设值时,就代表识别到了上下边框,进而实现去除。同理,可以利用列扫描的方式来完成左右边框的识别和处理。
3.3车牌字符分割
相对于一般字符,车牌上的字符有其独有特点,比如都是由7个字符组成,且首字符是汉字,第二个字符是字母,后五个字符是数字和字母的组合。而且车牌上的字符高度、宽度和间距都是固定。利用这些特性,可以采用垂直投影法来完成字符分割。字符区域内的像素和非字符区域的像素对比明显,因此可以通过检测字符与字符间白色像素的波谷来完成每一个字符的分割。在此基础上,考虑到我国车牌的第二个字符和第三个字符间的间距较大,所以可以利用这一特性找到的第二个字符的右边界,然后分别向左右搜索来实现进一步分割。
4 字符识别
字符识别有模版匹配法、统计特征匹配法和神经网络方法等等,当前比较流行的是神经网络方法。将分割到的每一个字符进行归一化的图像处理,然后提取出字符图像的特征向量,将该向量作为输入,运行已经训练好的神经网络,此时就可以得到一个结果输出,即字符识别结果。
参考文献:
[1]党浩,杨莉军,田益民,等.OpenCV汽车牌照识别方法改进[J].北京印刷学院学报,2016,24(4):26-28
[2]卓俊宇,胡志慧.一种基于OpenCV的车牌识别定位方法的研究与实现[J].中国管理信息化,2015,18(13):209-211
[3]赵亚飞,黄磊.基于OpenCV的车牌检测[J].中国科技博览,2014,(6):80
[4]张海宁,李彬,陈超波,等.基于OpenCV的车牌识别系统研究[J].工业仪表与自动化装置,2012,(6):78-80
关键词:OpenCV;车牌识别技术;车牌定位
1 引言
现代化社会的高速发展给社会生活带来了翻天覆地的改变,比如汽车的保有量不断升高,为人们的生活和工作带来了极大的便利。但与此同时我们也要清醒地认识到,车辆数量的增多也会带来一些消极问题,比如公路拥堵,为了确保交通运行的顺畅,我们必须提升车辆管理水平。在这种背景形势下,我国加强了对车辆管理智能系统的研究和应用工作,而车牌识别技术技术正是其中非常关键的一项技术。
车牌识别主要包括车牌定位、字符分割和字符识别这三个环节,其在小区车辆进出管理、高速公路车辆收费以及公共安全领域得到了广泛应用。本文对基于OpenCV的车牌识别技术进行了一些有意义的探讨。
2 车牌定位
现实中,固定摄像机拍摄到的车辆图像一般会包含车辆背景信息,如何在一幅大的图像中将车牌区域定位出来,是关系到能否将车牌准确识别出来的关键因素,这同时也是后续进行字符分割以及识别的前提和基础。
2.1图像灰度化
固定摄像头拍摄到的汽车图像一般都是彩色图像,但彩色图像在分析过程中會受到较大限制,且不利于对车牌区域进行精准定位。所以当拿到一张汽车图像后,一般第一步就需要对其进行灰度化处理。将彩色图像转换为灰度图的方法也比较多,而OpenCV就提供了相应的转换函数cvtColor,利用该函数可以直接将拍摄到的RGB彩图转换为灰度图。一般经过灰度化处理的图像还应该进行滤波处理,这样能在一定程度上提升定位的准确性。滤波可以应用OpenCV库中的medianBlur函数实现。
2.2垂直边缘检测
考虑到车身纹理主要是水平边缘,而车牌字符纹理却属于竖直边缘情况,所以为了提取字符边缘信息,就有必要对灰度图像进行竖直边缘检测。竖直边缘检测可以采用Sobel函数实现,并进一步利用threshold函数对经过垂直边缘检测的图像进行二值化处理,得到边缘二值化图像。
2.3形态学处理
通过上述处理得到的二值化图像中依然还会包含一些干扰因素,比如车身和车辆所处背景中的其他物体等等,此时就需要采用形态学处理的手段来排除这些干扰因素,即作膨胀腐蚀处理。考虑到汽车车牌上的数字是横向排列的,所以只需要进行横向膨胀就能使车牌区域连通成为一个整体。此时,图像中的其他干扰区域可能依然保持着没有连通的小碎块状态,这样就可以利用开运算对这些干扰区域加以去除。最后再进行相应的逆向操作就可以将车牌恢复到原先形态。
2.4车牌矩形筛选
经过上述处理后的车牌会连通成一个整体,即近似显示成为一个矩形区域,此时就可以利用OpenCV库中的cvFindContours函数来进行轮廓检测。当然,因为汽车的停放背景中也可能包含其他竖直横排字符,比如广告牌之类的,所以检测出的矩形区域可能并不唯一,这时就需要作更进一步地聚类和筛选,应结合实际车牌的特点,比如长宽比等信息,构建一个合适的筛选算法来完成车牌区域的定位。
3 字符分割
3.1倾斜校正
现实中,由于摄像头安装位置等因素的影响,拍摄到的图像可能会存在一定倾斜,而这会严重影响到字符分割,所以需要对图像进行倾斜校正(如图1所示)。此时,可以利用算法将构成车牌矩形边框的直线提取出来,然后计算直线的倾斜角度。在此基础上,通过将原有图像进行相应的旋转来完成校正操作。待图像完成倾斜校正后,就可以Otsu方法对其进行阈值化出来,此时字符图像就能作为前景被提取出来。
3.2边框去除
车牌是通过铆钉固定在汽车上,而铆钉和车牌边框也会影响到字符分割,所以还需要进一步对这些干扰因素进行去除。实际中可以利用基于像素跳变次数的方法来对边框和铆钉进行去除。对于字符区域,一条水平扫描线会经过若干字符,即完成多次像素跳变。而上下边框和铆钉部分,像素的跳变次数则会大大降低,极限情况如扫描行与水平边框重合时,像素可能零跳变。利用这一特点,可以从车牌中间位置向上下进行行扫描,当发现扫描到的像素跳变次数小于预设值时,就代表识别到了上下边框,进而实现去除。同理,可以利用列扫描的方式来完成左右边框的识别和处理。
3.3车牌字符分割
相对于一般字符,车牌上的字符有其独有特点,比如都是由7个字符组成,且首字符是汉字,第二个字符是字母,后五个字符是数字和字母的组合。而且车牌上的字符高度、宽度和间距都是固定。利用这些特性,可以采用垂直投影法来完成字符分割。字符区域内的像素和非字符区域的像素对比明显,因此可以通过检测字符与字符间白色像素的波谷来完成每一个字符的分割。在此基础上,考虑到我国车牌的第二个字符和第三个字符间的间距较大,所以可以利用这一特性找到的第二个字符的右边界,然后分别向左右搜索来实现进一步分割。
4 字符识别
字符识别有模版匹配法、统计特征匹配法和神经网络方法等等,当前比较流行的是神经网络方法。将分割到的每一个字符进行归一化的图像处理,然后提取出字符图像的特征向量,将该向量作为输入,运行已经训练好的神经网络,此时就可以得到一个结果输出,即字符识别结果。
参考文献:
[1]党浩,杨莉军,田益民,等.OpenCV汽车牌照识别方法改进[J].北京印刷学院学报,2016,24(4):26-28
[2]卓俊宇,胡志慧.一种基于OpenCV的车牌识别定位方法的研究与实现[J].中国管理信息化,2015,18(13):209-211
[3]赵亚飞,黄磊.基于OpenCV的车牌检测[J].中国科技博览,2014,(6):80
[4]张海宁,李彬,陈超波,等.基于OpenCV的车牌识别系统研究[J].工业仪表与自动化装置,2012,(6):78-80