《车牌识别算法讲解(共3页).docx》由会员分享,可在线阅读,更多相关《车牌识别算法讲解(共3页).docx(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上Canny边缘检测预处理:将图像灰度化1、去噪(均值滤波、中值滤波、高斯滤波)2、求图像梯度的幅值和方向幅值:G=(J(i,j+1)-J(i,j)2+(J(i+1,j)-J(i,j)2由于幅值是x方向和y方向的叠加,根据x方向和y方向的权重,该幅值的方向也能求出来,这个在后面非极大值抑制中用来定位参与计算的点。最右边和最下边的点是不参与计算的。3、非极大值抑制(1)将图像边缘的点去除掉(这里只需要将边缘的像素点灰度值变为0即可)(2)内部点梯度值为0的去除掉(梯度为0,就是灰度没有变化,一定不是边缘点)(3)在垂直边缘方向上,两侧灰度值的加权和是否都比边缘上点的灰度值
2、小,就是要找到极大值点,边缘的方向有四种情况xy weight=|y|/|x|4、灰度图像二值化Sobel算子1、预处理:将图像灰度化我们所说的算子是给图像做卷积的单位。这个单位可以大,可以小。大的有5x5的矩阵,这就是二阶微分算子,有高斯-拉普拉斯算子这个单位也可以小,比如3x3的矩阵,有prewitt算子和sobel算子。也有更小的2x2矩阵的Roberts算子这些都有其运用的地方,再小或者更大的就失去实际运用的效果了。2、这里我选择了sobel算子。它由水平梯度模板和垂直梯度模板组成。用水平梯度模板和图像卷积后,就能表象图像像素点值在水平方向上的变化。图中的水平线段由于在水平方向上基本上
3、没有变化,所以变换后的图像也基本上看不到水平线段了。垂直梯度模板同理。将两幅图像通过公式相加后就得到了边缘被锐化的图像。这里的边缘由于知道水平和垂直分量,所以其也是有方向性的。3、将图像二值化后就能得到边缘的线段了。这里也要注意一下,线段有可能不是一个像素宽度的,如Roberts算子,我们就要对其进行图像细化,将线段变成一个像素点宽度,方法我会在后面介绍。Hough变换经过之前的处理过后,我们用肉眼就能看到二值图像中有一条一条的线段。计算机是如何识别这些线段的呢。这里用了Huogh变换。我们平常描述线段y=mx+b,m和b是已知量,x和y是变量。Hough变换中我们把x和y变成已知量,图像中线
4、段上的每个像素点就对应一个x和y。运用公式就可以将即将(x,y)平面的每个点变换为-空间的每一条曲线。曲线的交点就是过这些点的公共的直线,利用这个方法就能定位图像中的直线。字符分割这里我们只讨论大陆的蓝底车牌。这样的车牌是有固定的特点的。在字符分割时还要处理几种情况。在投影的图像中,我们也可以发现一些东西。不同的字符投影有些区别不大,有些是有明显的区别的。我们可以通过这些来辅助判别一些字符。图像细化前面提到了图像的细化,这里也需要用到。后面我们要用字符的形态特征来判别字符,当字符只有一个字符宽度时才可以方便准确地辨别出不同的字符。这里用到了基于索引表的图像细化算法。取3x3的矩阵,要判断的像素
5、点放中间,周围还有8个位置。8位的话,一共有256中情况。所以我们用了8x8的索引表。每次的判别就是一次卷积操作。P0幅值2,p1幅值4,p3幅值8,后面的幅值各自位上的权重。卷积后,得到的值到索引表中查询,如果为1就删去。索引表这样设置是前人智慧的结晶应该是这样的细化效果最好。循环操作,直到没有可以删去的点为止,这样就能将图像中的字符细化到只有一个像素宽度。字符识别不同的字符有着不同的形态特征,我们这里用到了四个特征,下面我依次来介绍。1、 笔画的斜率,四个方向可以得到12个特征向量2、 字符的拐点,拐点的幅度累加和,四个方向可以得到四个特征向量3、 侧面轮廓深度,比如字符S和u。字符S在左
6、右侧面具有明显的凹特征,顶部和底部都比较平缓;而字符u的顶部有明显的凹特征其他3个侧面轮廓均比较平缓。四个侧面的轮廓深度累积值,可获得4个特征向量。4、 只对字符外围和骨架或轮廓的特征扫描提取,往往无法很好地区分一些外围特征类似而内部特征差异较大的字符。如字符“B”和“D”,这两个字符的外围轮廓累积特征是非常接近的,但是其字符内部特征有明显的差异。这里引入字符内部像素统计特征提取。如图(d)所示,在字符图片中划分两个粗网格,并计算两个网格分别包含的像素数量。字符内部像素统计特征提取共获得2个特征向量。Robert算子定位比较精确,但由于不包括平滑,所以对于噪声比较敏感。Prewitt算子和So
7、bel算子都是一阶的微分算子,而前者是平均滤波,后者是加权平均滤波且检测的图像边缘可能大于2个像素。这两者对灰度渐变低噪声的图像有较好的检测效果,但是对于混合多复杂噪声的图像,处理效果就不理想了。LOG滤波器方法通过检测二阶导数过零点来判断边缘点。LOG滤波器中的a正比于低通滤波器的宽度,a越大,平滑作用越显著,去除噪声越好,但图像的细节也损失越大,边缘精度也就越低。所以在边缘定位精度和消除噪声级间存在着矛盾,应该根据具体问题对噪声水平和边缘点定位精度要求适当选取。(1)去噪任何边缘检测算法都不可能在未经处理的原始数据上很好地處理,所以第一步是对原始数据与高斯 mask 作卷积,得到的图像与原
8、始图像相比有些轻微的模糊(blurred)。这样,单独的一个像素雜訊在经过高斯平滑的图像上变得几乎没有影响。(2)用一阶偏导的有限差分来计算梯度的幅值和方向。(3)对梯度幅值进行非极大值抑制。仅仅得到全局的梯度并不足以确定边缘,因此为确定边缘,必须保留局部梯度最大的点,而抑制非极大值。(non-maxima suppression,NMS)解决方法:利用梯度的方向。四个扇区的标号为0到3,对应3*3邻域的四种可能组合。在每一点上,邻域的中心象素M与沿着梯度线的两个象素相比。如果M的梯度值不比沿梯度线的两个相邻象素梯度值大,则令M=0。(4)用双阈值算法检测和连接边缘。减少假边缘段数量的典型方法是对Ni,j使用一个阈值。将低于阈值的所有值赋零值。但问题是如何选取阈值?解决方法:双阈值算法。双阈值算法对非极大值抑制图象作用两个阈值1和2,且212,从而可以得到两个阈值边缘图象N1i,j和N2i,j。由于N2i,j使用高阈值得到,因而含有很少的假边缘,但有间断(不闭合)。双阈值法要在N2i,j中把边缘连接成轮廓,当到达轮廓的端点时,该算法就在N1i,j的8邻点位置寻找可以连接到轮廓上的边缘,这样,算法不断地在N1i,j中收集边缘,直到将N2i,j连接起来为止。在连接边缘的时候,用数组模拟队列的实现。以进行8-连通域搜索。专心-专注-专业