【计算机视觉】车牌分割定位识别

目录

一、引言

二、基本概述

三、车牌图像处理

(一)图像灰度化

(二)二值化

(三) 边缘检测

1.信噪比

2.定位精度

3.单边缘响应

(四)形态学运算

(五)滤波处理

四、定位处理

五、字符处理

(一)阈值分割

(二)阈值化分割

(三)归一化处理

六、字符识别

1.结构识别

2.统计识别

3.BP 神经网络

4.模板匹配

(一)模板匹配的字符识别

(二)字符识别车牌经典应用

七、Python代码展示字符分割和识别

(一)利用字符分割实现车牌的分割处理

1.实现步骤

2.Python完整代码展示

3.程序运行结果展示

(二)利用字符识别车牌

1.实现步骤

1. 初始化与交互准备

2. 车牌预处理与定位

3. 手动调整车牌区域

4. 车牌裁剪与二值化优化

5. 字符分割(核心步骤)

6. 结果输出

2.Python代码完整展示

3.程序运行结果展示

八、总结


一、引言

车牌自动识别模块是现代社会智能交通系统(ITS)的重要组成部分,是图像处理和模式识别技术研究的热点,具有非常广泛的应用。车牌识别主要包括以下 4 个步骤:

・车牌图像处理;

・车牌定位处理;

・车牌字符处理;

・车牌字符识别。

本文通过对采集的车牌图像进行灰度变换、边缘检测、腐蚀及平滑等过程进行车牌图像预处理,并由此得到一种基于车牌颜色纹理特征的车牌定位方法,最终实现了车牌区域定位。车牌字符分割是为了方便后续对车牌字符进行匹配,从而对车牌进行识别。

本文用到的图片样例:

二、基本概述

车牌定位与字符识别技术以计算机图像处理、模式识别等技术为基础,通过对原图像进行预处理及边缘检测等过程来实现对车牌区域的定位,然后对车牌区域进行图像裁剪、归一化、字符分割及保存,最后将分割得到的字符图像与模板库的模板进行匹配识别,输出匹配结果。

在进行车牌识别时首先要正确分割车牌区域,为此人们已经提出了很多方法:使用霍夫变换检测直线来定位车牌边界获取车牌区域;使用灰度阈值分割、区域生长等方法进行区域分割;使用纹理特征分析技术检测车牌区域等。霍夫变换对图像噪声比较敏感,因此在检测车牌边界直线时容易受到车牌变形或噪声等因素的影响,具有较大的误检测概率。灰度阈值分割、区域生长等方法则比霍夫直线检测方法稳定,但当图像中包含某些与车牌灰度非常相似的区域时,便不再适用了。同理,纹理特征分析方法在遇到与车牌纹理特征相似的区域或其他干扰时,车牌定位的正确性也会受到影响。因此,仅采用单一的方法难以达到实际应用的要求。

车牌分割定位识别主要包括 4 个步骤:一是车牌图像处理;二是车牌定位处理;三是车牌字符处理;四是车牌字符识别。

三、车牌图像处理

原本的图像每个像素点都是 RGB 定义的,或者称为有 R/G/B 3 个通道。在这种情况下,很难区分谁是背景,谁是字符,所以需要对图像进行一些处理,把每个 RGB 定义的像素点都转化成一个 bit 位(即 0-1 代码),具体方法如下。

(一)图像灰度化

RGB 图像根据三基色原理,每种颜色都可以由红、绿、蓝 3 种基色按不同的比例构成,所以车牌图像的每个像素都由 3 个数值来指定红、绿、蓝的颜色分量。灰度图像实际上是一个数据矩阵 I,该矩阵中每个元素的数值都代表一定范围内的亮度值,矩阵 I 可以是整型、双精度,通常 0 代表黑色,255 代表白色。

在 RGB 模型中,如果 R=G=B,则表示一种灰度颜色。其中 R=G=B 的值叫作灰度值,由彩色转为灰度的过程称为图像灰度化处理。因此,灰度图像是指只有强度信息而没有颜色信息的图像。一般而言,可采用加权平均值法对原始 RGB 图像进行灰度化处理,该方法的主要思想是,从原始图像中取 R、G、B 各层的像素值经加权求和得到灰度图的亮度值。在现实生活中,人眼对绿色(G)敏感度最高,对红色(R)敏感度次之,对蓝色(B)敏感度最低,因此为了选择合适的权值对象输出合理的灰度图像,权值系数应该满足 G>R>B。实验和理论证明,当 R、G、B 的权值系数分别选择 0.299、0.587 和 0.114 时,能够得到最适合人眼观察的灰度图像。

(二)二值化

灰度图像二值化在图像处理的过程中有着很重要的作用,图像二值化处理不仅能使数据量大幅减少,还能突出图像的目标轮廓,便于进行后续的图像处理和分析。对车牌灰度图像而言,所谓的二值化处理就是将其像素点的灰度值设置为 0 或 255,从而让整幅图片呈现黑白效果。因此,对灰度图像进行适当的阈值选取,可以在图像二值化的过程中保留某些关键的图像特征。在车牌图像二值化的过程中,灰度大于或等于阈值的像素点被判定为目标区域,其灰度值用 255 表示;否则这些像素点被判定为背景或噪声而排除在目标区域以外,其灰度值用 0 表示。

图像二值化是指在整幅图像内仅保留黑、白二值的数值矩阵,每个像素都取两个离散数值(0 或 1)之一,其中 0 代表黑色,1 代表白色。在车牌图像处理系统中,进行图像二值化的关键是选择合适的阈值,使得车牌字符与背景能够得到有效分割。采用不同的阈值设定方法对车牌图像进行处理也会产生不同的二值化处理结果:阈值设置得过小,则容易误分割,产生噪声,影响二值变换的准确度;阈值设置得过大,则容易过分割,降低分辨率,使噪声信号被视为噪声而被过滤,造成二值变换的目标损失。

(三) 边缘检测

边缘是指图像局部亮度变化最显著的部分,主要存在于目标与目标、目标与背景、区域与区域、颜色与颜色之间,是图像分割、纹理特征提取和形状特征提取等图像分析的重要步骤之一。在车牌识别系统中,边缘提取对于车牌位置的检测有很重要的作用,常用的边缘检测算子有很多,如 Roberts、Sobel、Prewitt、Log 及 Canny 等。据实验分析,Canny 算子于边缘的检测相对精确,能更多地保留车牌区域的特征信息。Canny 算子在边缘检测中有以下明显的判别指标。

1.信噪比

信噪比越大,提取的边缘质量越高。信噪比(SNR)的定义为:

式中,G(x)代表边缘函数,h(x)代表宽度为 W 的滤波器的脉冲响应,σ代表高斯噪声的均方差。

2.定位精度

边缘的定位精度 L 的定义为:

式中,G′(x)、h′(x)分别是G(x)、h(x)的导数。L 越大,定位精度越高。

3.单边缘响应

为了保证单边缘只有一个响应,检测算子的脉冲响应导数的零交叉点的平均距离D(f′)应满足:

式中,h′′(x)是h(x)的二阶导数。

以上述指标和准则为前提,采用 Canny 算子的边缘检测算法步骤为:

(1)预处理。采用高斯滤波器进行图像平均。

(2)梯度计算。采用一阶偏导的有限差分来计算梯度,获取其幅值和方向。

(3)梯度处理。采用非极大值抑制方法对梯度幅值进行处理。

(4)边缘提取。采用双阈值算法检测和连接边缘。

(四)形态学运算

数学形态图像处理的基本运算有 4 个:膨胀(或扩张)、腐蚀(侵蚀)、开启和闭合。二值形态学中的运算对象是集合,通常给出了一个图像集合和一个结构元素集合,利用结构元素对图像集合进行形态学操作。

膨胀运算符号为⊕,图像集合 A 用结构元素 B 来膨胀,记作A⊕B,定义为:

式中,表示 B 的映像,即与 B 关于原点对称的集合。因此,用 B 对 A 进行膨胀的运算过程如下:首先做 B 关于原点的映射得到映像,再将其平移 x,当 A 与 B 映像的交集不为空时,B 的原点就是膨胀集合的像素。腐蚀运算的符号是Θ,图像集合 A 用结构元素 B 来腐蚀,记作AΘB,定义为:

因此,A 用 B 腐蚀的结果是所有满足将 B 平移 x 后 B 仍旧被全部包含在 A 中的集合,也就是结构元素 B 经过平移后全部被包含在集合 A 中原点所组成的集合中。

在一般情况下,由于受到噪声的影响,车牌图像在阈值化后得到的边界往往是不平滑的,在目标区域内部也有一些噪声孔洞,在背景区域会散布一些小的噪声干扰。通过连续的开运算和闭运算可以有效地改善这种情况,有时甚至需要经过多次腐蚀之后再加上相同次数的膨胀,才可以产生比较好的效果。

(五)滤波处理

图像滤波能够在尽量保留图像细节特征的条件下对噪声进行抑制,是图像预处理中常用的操作之一,其处理效果的好坏将直接影响后续的图像分割和识别的有效性和稳定性。

均值滤波也被称为线性滤波,采用的主要方法为邻域平均法。该方法对滤波像素的位置(x,y)选择一个模板,该模板由其邻近的若干像素组成,求出模板中所包含像素的均值,再把该均值赋予当前像素点(x,y),将其作为处理后的图像在该点上的灰度值g(x,y),即

M 为该模板中包含当前像素在内的像素总个数。

在一般情况下,在研究目标车牌时所出现的图像噪声都是无用的信息,而且会对目标车牌的检测和识别造成干扰,极大地降低了图像质量,影响图像增强、图像分割、特征提取、图像识别等后继工作的进行。因此,在程序实现中为了能有效地进行图像去噪,并且能有效地保存目标车牌的形状、大小及特定的几何和拓扑结构特征,需要对车牌进行均值滤波去噪处理。

四、定位处理

车牌区域具有明显的特点,因此根据车牌底色、字色等有关知识,可采用彩色像素点统计的方法分割出合理的车牌区域。下面以蓝底白字的普通车牌为例说明彩色像素点统计的分割方法。假设经数码相机或 CCD 摄像头拍摄采集到了包含车牌的 RGB 彩色图像,将水平方向记为 y,将垂直方向记为 x,则:首先,确定车牌底色 RGB 各分量分别对应的颜色范围;其次,在 y 方向统计此颜色范围内的像素点数量,设定合理的阈值,确定车牌在 y 方向的合理区域;再次,在分割出的 y 方向区域内统计 x 方向上此颜色范围内的像素点数量,设定合理的阈值进行定位;最后,根据 x、y 方向的范围来确定车牌区域,实现定位。

五、字符处理

(一)阈值分割

阈值分割算法是图像分割中应用场景最多的算法之一。简单地说,对灰度图像进行阈值分割就是先确定一个处于图像灰度取值范围内的阈值,然后将图像中各个像素的灰度值与这个阈值进行比较,并根据比较的结果将对应的像素划分为两类:像素灰度大于阈值的一类和像素灰度小于阈值的另一类,灰度值等于阈值的像素可以被归入这两类之一。分割后的两类像素一般分属图像的两个不同区域,所以对像素根据阈值分类达到了区域分割的目标。由此可见,阈值分割算法主要有以下两个步骤。

(1)确定需要分割的阈值。

(2)将阈值与像素点的灰度值进行比较,以分割图像的像素。

在以上步骤中,如果能确定一个合适的阈值,就可以准确地将图像进行分割。在阈值确定后,将阈值与像素点的灰度值进行比较和分割,就可对各像素点并行处理,通过分割的结果直接得到目标图像区域。一般选用最常用的图像双峰灰度模型进行阈值分割:假设图像目标和背景直方图具有单峰分布的特征,且处于目标和背景内部相邻像素间的灰度值是高度相关的,但处于目标和背景交界处两边的像素在灰度值上有很大的差别。如果一幅图像满足这些条件,则它的灰度直方图基本上可看作由分别对应目标和背景的两个单峰构成。如果这两个单峰部分的大小接近且均值相距足够远,两部分的均方差也足够小,则直方图在整体上呈现较明显的双峰现象。同理,如果在图像中有多个呈现单峰灰度分布的目标,则直方图在整体上可能呈现较明显的多峰现象。因此,对这类图像可用取多级阈值的方法来得到较好的分割效果。

如果要将图像中不同灰度的像素分成多个类,则需要选择一系列的阈值将像素分到合适的类别中。如果只用一个阈值分割,则称为单阈值分割算法;如果用多个阈值分割,则称为多阈值分割算法。因此,单阈值分割可看作多阈值分割的特例,许多单阈值分割算法可被推广到多阈值分割算法中。同理,在某些场景下也可将多阈值分割问题转化为一系列的单阈值分割问题来解决。以单阈值分割算法为例,对一幅原始图像f(x,y)取单阈值 T 分割得到二值图像可定义为:

这样得到的g(x,y)是一幅二值图像。

在一般的多阈值分割情况下,阈值分割输出的图像可表示为:

式中,

评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值