基于matlab的车牌识别系统设计论文内容摘要:
图像进行二值化,然后轮廓平滑处理后,图像的每个点为两个离散值中的一个,这两个值代表开 (1)与关 (0),即只有黑与白的特殊灰度图像,并且整个图像只有两个域 (如果有多个域需改变参数后重新进行一此剔除干扰对象处理 ),全 1 的域即为车牌区域,并且近似矩形,长宽比为 :1,也可以用这两个特性去检验提取的区域是否为车牌区域。 经区域确定了,即可将车牌的四个边界值确定下来。 这里采用水平与垂直双向投影法。 水平坐标的确定,先定义一个 1x 的数组,其中 错误 !未找到引用源。 为原始图像的宽度值,然后将二值图像垂直投影到 x 轴。 从直方图中基本可以看书水平方向上的两个分界线,为了便于处理,该课题将像素值临界值定量化,取值 5个像素。 从左向右寻找第一个 1值像素大于 5的 错误 !未找到引用源。 坐标为水平方向左侧分界线,从右向左寻找到第一个 1值像素量大于 5的为右侧分界线,程序可以用 for循环语句。 垂直方向的分界线可用同样的 方法实现。 分界线计算后,即可从原图像中剪切出只包含车牌的区域图像。 剪切得到的图像如下。 图 为二值图切割的车牌区域,图 RGB 图像切割出来的图像: 图 车牌区域二值图裁减图像 图 原图中的车牌区域图像 对比原始图像与二值图裁减图可以看出,车牌的四个边界值基本上被确定下来了,这样就可以从原始图像中直接确定车牌的区域了。 所以车牌就成功地被提取出来了。 14 字符切割 字符切割前的图像去噪处理 由于图像车牌号区域提取后获得的是从原始图像中剪切的,是 RGB 图像 ,分割同样采取投影法,故同样需要先将 RGB 图像转换成灰度值,再将灰度图转化成二进制图,转化的方法就是限定一个阀值,如果大于阀值则为 1,小于阀值为 0,阀值采用 全局 阀值 ,全局阀值 是指整幅图像都采用相同的 阀值 T 处理,适用于背景和前景有明显对比的图像。 虽然 图像间受背景 、 光照等影响存在较大的差异, 但计算简单,程序运算效率高。 在 Matlab 实现方式如下: T=round(License_Image_Gray_max(License_Image_Gray_maxLicense_Image_Gray_min)/3)。 同时采集大的图像噪点依然存在,因此可以通过处理图像的低频部分来锐化图像。 这里采用高通滤波算法。 由此可得出滤波前后的图像如下所示: 图 车牌区域图像滤波前效果 图 车牌区域图像滤波后效果 可以对比滤波前跟滤波后的图像,如图 和图 所示,很明显,不但噪声去除了,而且图像得到了锐化。 15 字符切割前的图像膨胀和腐蚀处理 腐蚀已经在在上文介绍,膨胀刚好与腐蚀相反,运算规则是输出图像的像素值是输入图像邻域中的最大值,在一个二值图像中,只要一个像素值为 1,则相应的输出像 素值为 1。 根据经验值,车牌图像中,字符面积与车牌面积之比在 (,)之间,因此计算字符面积与车牌面积比值,如果大于 ,如果小于 则对图像进行膨胀, 在这里结构元素 Se 使用一个二维单位矩阵1001错误 !未找到引用源。 对于此对象,系统给予膨胀处理,效果图如图 所示: 图 车牌区域图像腐蚀、膨胀后效果 字符切割 完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。 字符分割一般采用垂直投影法。 由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符、尺寸限制和一些其他条件。 利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。 分析垂直投影找到每个字符中心位置 去掉车牌的框架 计算水平投影进行车牌水平校正 16 图 牌照字符切割框图 2020年颁布的我国车牌规范 (普通中小型汽车 )规定车牌总长 440mm,牌照中的 7个字符的实际总长为 409mm 左右,宽 140mm,每个字符 45mm宽, 90mm高,字符间距为10mm,其中第二个字符与第三个字符的间距较为特殊,为 ,最后一个字符与第一个字符距边界 25mm。 这样,如果平均分配每个字符在牌照中占据的宽度,那么每个字符宽度为: width/7( width 为车牌图像的宽度)。 但是,实际上,第二个第三个字符之间存在一个黑点,牌照左右两边与图像边缘也都有一定的宽度,所以每个字符的宽度应该小于 width/7。 考虑所有的情况,一般情况下最小的宽度为 width/9。 因此,字符的宽度可以从 width/9 到 width/7 之间渐进的变化得到 ,程序流程图。 字符切割流程图如 下图所示: 按左右宽度切割出字符 17 图 字符切割流程图 字符分割一般采用垂直投影法。 在这之前还必须切除周边空白, 由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符、尺寸限制和一些其他条件。 利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。 经过切割,切割的字符图像如下: 图 经切割的七个字符 开始 车牌二值图像 切除周边空白 垂直投影 从左往右查找,垂直投影白色像素点累计小于 10 的值的 wide 以水平区域( 0,wide)剪切出 判断是否为标准字符 保存这个字符 将剩余部分保存并覆盖原先图像 字符个数是否为 7 结束 Y N N Y 18 切割后一连串的字符串变成了单个字符,为后面的字符匹配识别奠定了基础。 字符识别 字符识别方法选择 目前字符识别的方案有使用神经网络和模板匹配法进行比对。 人工神经网络是模拟人脑思维功能和组织建立起来的数学模型,虽然现在神经网络正在迅速发展,但总体来说应用还是相对复杂的。 模板匹配法虽然识别率低,但实现简单,计算量小,只有矩阵的加减与统计,而且车牌字符是有阿拉伯数字,英文大写字母,还有部分汉字,虽有字库量不大, 字符较规整时 对字符图像的缺损、污迹干扰适应力强且识别率相当高,因此 本课题使用这种方法。 对于模板匹配,首先建立标准模板库,库中字符使用统一的尺寸,这里使用 20 40。 字符归一化 由于图像采集时图像的像素值不一样,经切割出来的字符的大小也会不一样,所以在进行匹配前必须先进行字符图像归一化。 使图像字符大小跟模板图像大小一致,Matlab提供一个改变图像大小的函数 imresize(I, Size, Model), Model是插值运算方法,这里选用 39。 nearest39。 最近邻插值 法 ,经归一化后的图像如下。 图 经归一化后的七个字符 切割的字符经过归一化之后,每个字符的大小基本一致,由此便解决了像素值不一致 带来的问题,并且利于和库中的字符进行匹配比较。 字符匹配识别 字符匹配识别的是要前提要简历可以与之相比较的字库表,再将已切割并进行了归一化处理的单个字符相比较,逐个字符进行匹配比较,再将待识别的字符的特征值 19 和模板字符相减,找到相减值为最小的那个即为匹配得最好的字符。 字符识别步骤如下: 图 字符匹配框图 字符匹配的准确度是车牌识别中的关键部分,所以首先要简历精准有效的模板字库表,便于切割完的字符与库中内容相比较,接下来是读取切割的字 符,从第一个字符开始一次与库中字符相比较匹配,切割后的字符特征值与库中模板字符相减,找到值最小的那个就是匹配得最恰当的字符。 匹配方法采用将目标图像与模板图像逐点做差,得到第三幅图像,程序实现如下 for ii=1:40 or jj=1:20 Word_Image_Diff(ii,jj)=Word_Image(ii,jj)Word_Image_Code(ii,jj)。 end end 最后计算第三幅二进制图像中像素值为 1的个数,数值最小的即为匹配出来的结果,经对比可得相似度 最高的数字 建立模板字库表 读取分割出来的字符 第一个字符与模板中的汉字模板进行匹配 第二个字符与模板中的字母模板进行匹配 待识别字符与模板字符相减,值越小相似度越大,找到最小的一个即为匹配的最好的 识别完成,输出此模板对应值 后 5 个字 符与模板中的字母与数字模板进行匹配 20 图 字符相似度比较 如图 :第一个字符在 Lib_Code_No=39处取得最大相似度,查字库Lib_Code_No=39的字符为“鲁”,则可以确定该字符为“鲁”,同理可得出其他 6个字符。 4 仿真结果及分析 车牌定位及图像读取及其图像处理 车牌定位后系统边缘检测的仿真结果图如下图所示 : 21 图 图像读取及检测结果图 结果分析:图像车牌区域提取就是从原图中截取含车牌的部分,即 RGB 图像,然后进行字符的切割与识别。 为了去除图像中的噪声点必须对截取的图像 进行滤波处理,经滤波后,不仅去除了噪声,并且使图像得到了锐化。 经过这些步骤可以使得最终识别出的图像与原图的相似度更高,即结果更精确。 仿真的结果也使得车牌部分从原图被准确的提取出来了,达到了 车牌定位及图像读取及其图像处理的目的。 车牌字符分割及其图像处理 对经边缘检测扫描后的图像经字符切割后的图像如下图所示: 图 字符分割及归一化结果图 结果分析: 从 MATLAB 编程运行结果看 ,便于 图像进行匹配识别,必须先将连续的字符切割成单个字符,并且在切割字符之前要将周边空白切除掉。 由以上结果图可 22 以看到 ,车牌被切成只含字符部分,并且七个字符被切成清晰的七个字符,实现了字符切割。 由右侧的归一化图像可以看出,切割出的图像像素值和模板图像达到了一致,由此便避免了切割出的图像像素值不一。基于matlab的车牌识别系统设计论文
相关推荐
源蜂鸣器驱动需要 130mA,所以就要加 9012NPN 三极管来获得大电流。 9012 的常温最大输出 500mA 电流。 6 本设计的不足和反思 最为一个温度监控系统,应该加上按钮,当温度异常,蜂鸣器 报警时,按下复位按钮,蜂鸣器停止报警,但是红灯继续闪烁。 当故障排除后,红灯灭,系统恢复正常。 如果一分钟后故障没有排除,蜂鸣器再次报警。 检测的实时温度应该通过 UART 上传到上位机
[x] += fValue。 } // 频带系数 for (i = 0。 i nHalfH。 i++) { pData[i][x] *= fRadius。 pData[nHalfH + i][x] /= fRadius。 } } } delete[] pData。 delete[] pRow。 delete[] pColumn。 } } } // 二维离散小波恢复(单通道浮点图像) void
ist_height / max_val)。 //要绘制的高度 rectangle(hist_img, Point(i*scale, hist_height 1), Point((i + 1)*scale 1, hist_height intensity), CV_RGB(255, 255, 255))。 } dstImg = hist_img。 } int CrackDetection:
波)的已调波形,而且 ω1 与 ω2 之间的改变是瞬间完成的。 2FSK 信号的产生如图 所示: 图 2FSK 信号产生方法 2FSK 信号最常用的解调方法是采用的相干检测法,如图 所示 :图 2FSK 相干解调的方法 Simulink 通信工具箱中提供了专门的 FSK 调制和解调模块,应用FSK 调 制模块能方便的产生 2FSK 信号。 因此,设计 2FSK 仿真模型时,只需根据图 所示框图
b 语言语法限制不严格 ,程序设计自由度大 ,程序的可移植性好。 Matlab 还推出了功能强大的适应于图像分析和处理的工具箱 ,常用的有图像 处理工具箱、小波分析工具箱及数字信号处理工具箱。 利用这些工具箱 ,我们可以很方便的从各个方面对图像的性质进行深入的研究。 Matlab 图像处理工具箱支持索引图像、 RGB 图像、灰度图像、二进制图像并能操作 .bmp、 jpg
wx,cx, cy, angle) frontalmodel=rgb2gray(frontalmodel)。 model_rot = imresize(frontalmodel,[ly wx],39。 bilinear39。 )。 % 调整模板大小 model_rot = imrotate(model_rot,angle,39。 bilinear39。 )。 % 旋转模板 [l,r,u,d] =