基于MATLAB的车牌提取与字符分割系统
本项目是一个基于MATLAB环境开发的自动化车牌识别预处理系统。该系统能够从复杂的车辆图像中定位车牌区域,并将其中的汉字、字母和数字精确分割为独立的字符图像。系统采用了经典的数字图像处理算法,旨在为后续的字符识别阶段提供高质量、标准化的输入数据。
功能特性
- 交互式图像加载:通过图形用户界面(GUI)允许用户自主选择本地计算机中的车辆图片(支持JPG、PNG、BMP格式)。
- 自适应预处理:系统自动检测图像色彩模式并进行灰度化处理,同时通过中值滤波和直方图均衡化有效抑制噪声并增强对比度。
- 精准车牌定位:利用Sobel垂直边缘检测结合形态学操作,能够从复杂背景中识别并提取符合中国车牌比例特征的目标区域。
- 自动化倾斜校正:计算车牌区域的偏转角度,并利用双线性插值算法进行自动旋转校正。
- 边缘干扰剔除:具备物理边框剔除功能,通过比例裁剪去除车牌边缘的螺钉和金属框干扰。
- 鲁棒的字符分割:采用垂直投影算法,通过像素分布规律动态确定字符间隙,实现对车牌字符的独立切割。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 工具箱需求:Image Processing Toolbox(图像处理工具箱)。
- 硬件建议:标准桌面配置,支持图形窗口输出。
实现逻辑与步骤详解
系统的核心逻辑严格遵循以下技术流水线:
- 图像读取与格式转换
系统调用文件选择对话框获取图片路径。读取后,首先判断图像维度。若为彩色RGB图像,则应用加权平均法将其转换为灰度图,为后续的梯度计算做准备。
- 图像强化处理
为了降低相机感光噪声,系统应用3x3模板的中值滤波进行平滑处理。随后,执行直方图均衡化(Histogram Equalization),重新分布像素亮度,使车牌区域与背景的对比更加鲜明,有利于边缘检测。
- 候选区域定位
定位阶段首先执行Sobel垂直边缘检测,捕捉车牌字符产生的密集竖向边缘。接着使用5x20的长方形结构元素进行形态学膨胀、孔洞填充和腐蚀还原。这一组合操作能将离散的字符边缘连接成一个稳固的矩形块,并过滤掉细小的噪点。
- 车牌筛选与裁剪
系统对所有连通区域进行特征分析。筛选逻辑基于中国车牌的长宽比特性:设定宽高比阈值(2.0至5.5之间)及面积阈值(大于2000像素)。在所有满足条件的区域中,选取面积最大的候选者作为目标车牌,并执行裁剪。
- 姿态调整与精处理
通过连通域的旋转角度属性判断车牌是否倾斜。若角度在1度至45度之间,系统将对车牌进行反向旋转校正。之后,使用Otsu法(大津法)计算全局自适应阈值,将车牌转化为二值化图像。
- 干扰消除
为了消除车牌物理边框对字符分割的影响,系统通过比例像素置零法去除顶部和底部各10%以及左右两边各2%的区域。最后使用面积开运算(bwareaopen)删除小于50像素的非文字杂点。
- 字符分割逻辑
采用垂直投影法,对二值化车牌图在水平方向进行像素求和。系统设定最大投影值的10%作为阈值,生成波峰和波谷图。通过寻找波形从0到1(字符起点)和从1到0(字符终点)的跳变点来界定字符边界。分割过程中会根据字符宽度进行过滤,剔除宽度不足车牌总宽1/20的伪字符(如未除净的柳钉)。
关键函数与算法分析
- medfilt2 与 histeq:这一对组合在预处理阶段起到了关键作用,medfilt2在保护边缘的同时消除了孤立噪点,histeq则解决了光照不均导致的车牌区域过暗或过亮问题。
- Sobel 垂直算子:由于车牌字符具有丰富的垂直方向跳变,使用垂直边缘检测比全向检测能更有效地过滤掉路面、护栏等水平干扰物。
- imfill 与 regionprops:形态学填充解决了字符内部中空的问题,而连通域属性分析则是将“图形”转化为“语义特征”的关键步骤,实现了智能筛选。
- 垂直投影算法(Vertical Projection):这是字符分割的核心。该算法将二维图像信息降维到一维分布上,通过寻找像素分布的“波谷”来精确定位字符间的物理间隙,是处理标准化排列对象(如车牌、文本)最稳健的手段之一。
- 自动化可视化:系统在运行结束时会自动生成两组图表,一是对定位过程的步骤追踪,二是对分割出的每一个独立字符进行阵列展示。