课程设计-车牌识别(还需完善)

原理步骤

1.图像预处理
包括二值化和去噪两部分。
图像二值化:应用领域很广泛,称为处理过程中的一个基本手段。
二值化阈值几种常用的选取方法:双峰{2-Mode}法,P参数法,Otsu法,迭代法等。本次课程设计采用的方法为迭代法。
迭代法是一种全局二值化方法,它要求图像分割阈值的算法是基于逼近的思想,首先选择一个近似阈值作为估计值的初始值,然后进行分割,产生子图像,并根据子图像的特性来选取新的阈值,再利用新的阈值分割图像,经过几次循环,使错误分割的图像像素点降到最少。这样做的效果好于用初始阈值直接分割图像的效果。具体算法步骤如下所述:
(1)求出图像中的最小灰度值和最大灰度值,分别记为Zmin和Zmax,则阈值初值T0=(Zmin+Zmax)/2;
(2)根据阈值TK将图像分割成目标和背景两部分,求出两部分的平均灰度值Z0和Z1,平均灰度值等于=å(灰度值*该灰度值的权重)/像素点的总数;
(3)求出新阈值T1=(Z0+Z1)/2;
(4)如果T0=T1,则结束,否则将TI的值赋予T0,转向(2)

去噪方法:
(1)求当前像素点NN邻域像素的平均值,若超过阈值,则将对应像素点置为白色(目标色),否则置为黑色(背景色);
(2)循环图像的每一个像素值;
(3)计算像素周围的3
3邻域的8个像素的均值;
(4)比较均值与给定阈值的大小,若大于阈值则置为对应像素为白,反之置黑。

2.对车牌定位
横向扫描确定上下边界。
理论依据:
车牌区域所在行相邻像素之间的变化(0->255、225->0)会
很频繁。
连续变化的行超过一定宽度,根据宽度排除一些广告、商标
等图案的干扰。

纵向扫描初步确定车牌的左、右边界。
实现步骤:
(1)计算车牌高度
(2)纵向扫描,记录每一列白像素点的个数,若某一列i的白像素点数大于一定值,且满足条件连续列的宽度大于一定值,则认为第i列为车牌的左边界。
(3)根据车牌的宽高比例计算车牌的右边界。

3.对车牌进行字符分割
任务:把单个字符从车牌字符串中分离出来。
根据车牌特征信息排除干扰:
(1)排除尺寸大小或长宽比例不符合车牌字符特征的连通域u,滤除大部分噪声点的干扰;
(2)确定车牌字符精确的起始行与结束行位置,排除螺钉对第二和第六个字符的干扰;
(3)充分利用车牌字符的位置和顺序信息,查找连通域漏检的字符,排除干扰区域。

字符分割方法:
垂直投影法,利用字与字之间形成的空白间隔将单个字符的图像切割出来的。
单纯的垂直投影造成的两个难题:粘连字没有分开,二分字和三分字没有合并。根据字符的高宽比有一定的范围。
对粘连字:估计出下一个字符的大致位置。
对多分字:以估计的宽度合并宽度较小的字。
字符细化方法:对图像进行多次迭代细化直到不存在可以消去的简单边界点为止。

归一化:
在车牌字符中,字符的宽度是不确定的,如字符“1”和“0”,
但字符的高度均相同,因此,可根据字符的高度来进行大小归一化。
归一化方法:将字符的外边框按比例线性放大或缩小到标准字符尺寸。根据给定的高度与提取车牌的高度计算缩放的比例,宽度与高度同比例缩放。

4.对车牌字符进行识别
模板匹配法:
首先把待识别字符二值化,并将其尺寸大小缩放为数据库中模板的大
小,然后与所有的模板进行匹配,最后选最佳匹配作为结果。


matlab实现

  • 图形用户界面创建: guide

  • Gui_cpsb代码

function varargout = Gui_cpsb(varargin)
% GUI_CPSB MATLAB code for Gui_cpsb.fig
%      GUI_CPSB, by itself, creates a new GUI_CPSB or raises the existing
%      singleton*.
%
%      H = GUI_CPSB returns the handle to a new GUI_CPSB or the handle to
%      the existing singleton*.
%
%      GUI_CPSB('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in GUI_CPSB.M with the given input arguments.
%
%      GUI_CPSB('Property','Value',...) creates a new GUI_CPSB or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before Gui_cpsb_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to Gui_cpsb_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help Gui_cpsb

% Last Modified by GUIDE v2.5 30-May-2020 14:55:05

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @Gui_cpsb_OpeningFcn, ...
                   'gui_OutputFcn',  @Gui_cpsb_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{
   1})
    gui_State.gui_Callback = str2func(varargin{
   1});
end

if nargout
    [varargout{
   1:nargout}] = gui_mainfcn(gui_State, varargin{
   :});
else
    gui_mainfcn(gui_State, varargin{
   :});
end
% End initialization code - DO NOT EDIT


% --- Executes just before Gui_cpsb is made visible.
function Gui_cpsb_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to Gui_cpsb (see VARARGIN)
clc;warning off all;%清除


% Choose default command line output for Gui_cpsb
handles.output = hObject;
handles.imgfilename=[];%图像文件名
handles.imgdata=[];%彩色图像数据信息
handles.imgoutputhuidu=[];%灰度化图像输出信息
handles.imgoutputerzhi=[];%二值化图像输出信息
handles.imgoutputquzao=[];%去噪图像输出信息
handles.imgoutputdingwei=[];%定位图像输出信息
handles.imgoutput1=[];
handles.imgoutput2=[];
handles.imgoutput3=[];
handles.imgoutput4=[];
handles.imgoutput5=[];
handles.imgoutput6=
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值