引言
车牌识别系统是一项比较成熟的技术,并且已经得到了广泛的应用:
文章图片
图1 图片识别系统(图片来源于百度)
车牌识别技术主要包含三个方面:车牌定位、字符分割和字符识别三个核心模块。车牌定位是利用车牌的颜色和形状特征确认并获取汽车的车牌位置;字符分割是将获取到的车牌切割成单个字符;字符识别目前主要有基于模板匹配算法和基于人工神经网络算法对切割的字符进行识别。下面我们对基于MATLAB的车牌识别系统进行详细的介绍。
本文重点讲解车牌定位的实现。
1.图像数据读入
这里所说的车牌识别是基于图像的车牌识别技术。要想实现车牌识别,首先要从计算机中读取含有要识别车牌的图片,MATLAB常用的读取图片有两种方式,一是利用uigetfile函数,执行此函数可得到供用户选择图片文件的对话框,用户选择要识别的图片并确定后,会返回此图片的文件名和路径名。二是利用imread函数将图像数据读出,赋值给变量I,从而实现图像数据的读入。读取之后的I矩阵是一个三维矩阵,第一第二维表示图像的宽和高,第三维表示RGB三色。
文章图片
图2 读取图片
素材图片来源于百度图库。
2. 图像转换
我们读取图片之后得到的矩阵式三维数据I,而在处理图片时,我们只需要其中的一种颜色就可以实现图片的识别,这样就降低了数据处理的复杂程度。使用的函数是rgb2gray函数,该函数接收一个彩色图像,返回该图像转换为灰度图后的图像数据,并将该数据赋值给变量I1,转换完之后的I1也是矩阵,但是是二维矩阵,没有彩色信息。
文章图片
图3 灰度图像
3. 边缘检测
图像的边缘检测是数字图像处理的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。经典的边缘检测方法,是通过对原始图像中像素的某小邻域构造边缘检测算子来达到检测边缘这一目的来实现的。
常用的边缘检测算子有:Roberts Cross算子,Prewitt算子,Sobel算子, Kirsch算子,罗盘算子,Canny算子,Laplacian算子等,本文采用最常用的一阶算子Roberts Cross算子,计算得到如下结果:
文章图片
图4 边缘检测
4. 图像腐蚀
腐蚀主要用于形态学中除去图像的某些部分,Matlab用imerode函数实现图像腐蚀。常见图像形态学运算:腐蚀、膨胀、开运算、闭运算、骨架抽取等,其中最基本的形态学操作是:膨胀和腐蚀。
膨胀和腐蚀的主要用途:消除噪声;分割出独立的图像元素,在图像中连接相邻的元素;寻找图像中明显的极大值或极小值区;求出图像的梯度。腐蚀和膨胀是对像素值大的部分而言的,即高亮白部分而不是黑色部分,腐蚀是图像中的高亮部分被腐蚀掉,领域缩减,效果图拥有比原图更小的高亮区域。
所以说,腐蚀之后的图像是取原图像更精华的部分,从而去除噪声。
文章图片
图5 图像的腐蚀
5. 图像平滑处理
图像平滑是指用于突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分的图像处理方法,目的是使图像亮度平缓渐变,减小突变梯度,改善图像质量。图像平滑的方法包括:插值方法,线性平滑方法,卷积法等等。这样的处理方法根据图像噪声的不同进行平滑,比如椒盐噪声,就采用线性平滑方法。下面给出平滑后的效果图。
文章图片
图6 图片的平滑处理
6. 移除小对象
bwareaopen是matlab函数,作用是删除二值图像BW中面积小于P的对象,默认情况下conn使用8邻域。本文利用bwareaopen函数对图像的小对象进行剔除。
文章图片
图7 移除小对象
7. 确定车牌位置
通过上面的6步骤处理之后,我们可以看出,已经基本确定了车牌所在的位置,现在需要将车牌在图片中的具体坐标确定,以方便下一步的剪裁。
这里确定车牌位置的思路为:找出图像矩阵中最大的元素,它所对应的行即为该二值图像中白色像素点最多的行,该行可认为是靠近车牌中心的一行。 然后我们以这一行为起点,分别向上向下逐行扫描,确定车牌的上边界(或下边界)。 同理,我们可以用相同的方法确定出车牌的左边界和右边界。
文章图片
图8 确定车牌在图中的位置
8. 剪切出车牌
第7步我们已经确定了车牌在图中的方位,下面直接剪切出相应的数据即可:
【基于颜色|基于颜色 车牌定位 matlab,基于MATLAB的车牌定位问题】
文章图片
图9 车牌剪切图
总结
本文主要讲解了车牌识别中的车牌定位问题。(未完待续)
推荐阅读
- 数学建模及Matlab|清风数学建模学习笔记 层次分析法Matlab代码实现及代码优化问题
- 数学建模|数学建模学习笔记(清风)——层次分析法
- MATLAB|数字图像处理(实验三 图像增强)
- 多目标优化算法|多目标优化算法(多目标袋獾优化算法MOTDO(提供MATLAB代码))
- 机器人学习|【机器人】Car-Like小车移动机器人控制实验(word报告+matlab程序代码)
- matlab|图像处理压缩Huffman编码方法实现
- 数据可视化|小波变换进行图像变换Matlab实现
- 数据可视化|离散余弦变换进行图像变换Matlab实现
- matlab|FPGA实现sobel边缘检测并Modelsim仿真,与MATLAB实现效果对比