车牌检测和识别(转)
视频车牌检测与识别
综合网上上各种车牌识别方法,总结出一个较为简单的车牌识别方案,采用VS2013+OpenCv2.4.9实现。并且附上可运行的源代码以及测试图片和视频,详细参数设置请参照源代码。识别部分的训练样本见我上传的资源。
实现方法
(一) 检测车辆(基于混合高斯模型的背景差分法)
1. 读取视频(avi格式),选定目标区域框用于检测车辆
2. 检测车辆,基于混合高斯模型的背景差分法检测前景,经过腐蚀、膨胀后,若像素值大于200的像素点数大于80000且上一帧像素点数小于80000,则视为检测出车辆并保存改区域的图片
(二) 检测车牌区域(基于HSV颜色空间+形态学方法)
1. 车牌粗定位
(1) 改变图片尺寸(480´320)得到resizeimg
(2) 转换为HSV空间,并在HSV空间直方图均衡化
(3) 在HSV空间检测蓝色区域,范围为(100,90,80)—(130,255,255),得到blueimg
(4) 对blueimg进行膨胀运算、开运算得到image1
(5) 对resizeimg灰度化
(6) 进行直方图均衡化
(7)中值滤波
(8)Canny算子边缘检测
(9)进行开运算、闭运算得到image2
(10)对HSV空间检测蓝色分量的image1和边缘检测得到的image2进行按位与得到andimage
(11)对andimage进行膨胀运算
(12)寻找最大连通域
(13)圈出最大连通域所在的矩形区域并切割得到ROIimage
2. 车牌精确定位
(1)对ROIimage转换蓝色空间并均衡化
(2)检测蓝色区域,范围为(100,90,90)—(140,255,255)
(3)框出非零点集所在的最大矩形区域并切割得到roimage
(4)Canny算子检测roimage并利用hough变换进行水平倾斜校正得到houghimage
(5)对houghimage进行灰度化、二值化(浙大张引二值化)
(6)对二值化车牌水平方向统计黑白跳变次数
(7)从车牌中间向上下搜索,若跳变次数小于14,设定为上下边界并切割,得到jingqueimage
(三) 车牌字符切割(投影法)
1.对对车牌进行垂直投影,求垂直方向投影平均值mean,设定投影特征值TZ=0.63´mean
2.先从第三个字符开始切割,选择车牌宽度的0.3倍处作为起始点,向右寻找大于TZ的点作为上升点,从上升点向左搜索投影值等于0的点作为字符起点,寻找上升点后下一个等于0的点作为终点,切割出该部分,对该部分扩充调整其宽高比为0.5,对其归一化16*32,二值化得到字符
3.第四个到第七个字符的切割方法与第三个字符相同
4. 切割第二个字符,选择车牌宽度的0.35处作为起始点,向左寻找大于特征值的点作为上升点,从上升点向左搜索投影值等于0的点作为字符起点,寻找上升点左边下一个等于0的点作为终点,切割出该部分,对该部分扩充调整其宽高比为0.5,对其归一化16´32,二值化得到字符
5. 切割第一个字符,切割方法同第二个字符。求后六个字符的宽度平均值,若切割出字符宽度小于平均值的0.8倍,则重新寻找下一个为零的波谷作为终点,切割出该部分。对该部分扩充调整其宽高比为0.5,对其归一化16´32,二值化得到字符
(四) 车牌识别(BP神经网络)
1. 汉字识别
(1)网络层数:输入层:560 隐含层:132 输出层:31
(2)激活函数:Sigmoid函数
(3)神经网络的训练参数:
a) 最大迭代次数:10000
b)误差最小值:0.001
c) 权值更新率:0.07
d) 权值更新冲量:0.07
(4)输入样本:
a) 特征提取:512个像素点+32个水平投影值+16个竖直投影值共560维
b) 训练样本数:所有省份样本共1195个
(5) 输出结果:输出层共31个,如“京”:0.9,,0.1……0.1,选取输出的31个值的最大的值为识别结果
(6) 对汉字识别:提取特征并进行预测,输出省份
2. 字母识别
(1)网络层数:输入层:560 隐含层:117 输出层:24
(2)激活函数:Sigmoid函数
(3)神经网络的训练参数:
a) 最大迭代次数:30000
b) 误差最小值:0.001
c) 权值更新率:0.07
d) 权值更新冲量:0.07
(4)输入样本:
a) 特征提取:512个像素点+32个水平投影值+16个竖直投影值共560维
b) 训练样本数:所有省份样本共1200个
(5)输出结果:输出层共24个,如“A”:0.9,,0.1……0.1,选取输出的24个值的最大的值为识别结果
(6) 对字母识别:提取特征并进行预测,输出字母
3. 字母和数字识别
(1)网络层数:输入层:560 隐含层:139 输出层:34
(2)激活函数:Sigmoid函数
(3)神经网络的训练参数:
a) 最大迭代次数:30000
b) 误差最小值:0.001
c) 权值更新率:0.06
d) 权值更新冲量:0.06
(4)输入样本:
a) 特征提取:512个像素点+32个水平投影值+16个竖直投影值共560维
b) 训练样本数:所有省份样本共5100个
(5)输出结果:输出层共34个,如“A”:0.9,,0.1……0.1,选取输出的34个值的最大的值为识别结果
(6)对字母和数字识别:提取特征并进行预测,输出字母
总结
采用基于视频检测的车牌识别系统,测试的场合是小区门禁处静止摄像机,实现对行驶的车辆进行车牌识别。从功能划分可以分为三块,车辆的视频检测、车牌的定位和车牌字符的分割与识别。
由于交通场景的复杂性和多样性,本设计有许多值得进一步研究的地方,主要有以下几个方面:
1. 本设计的计算速度较慢,尚未能满足实时性的要求。
2. 在车牌定位模块,对于截取图片中的车辆的距离有一定要求,车辆占比区域太大会造成车牌定位不准的情况。
3. 在字符分割模块,基于大多车牌字符都没有粘连,本设计采用的投影法。对于字符粘连的车牌会出现分割错误。
4. 在字符识别模块,由于汉字神经网络样本不足和特征提取不太理想,造成汉字识别率较低。
下载地址:
车牌识别代码:http://download.csdn.net/download/weixin_35654926/9778589
训练样本:http://download.csdn.net/download/weixin_35654926/9776072
车牌检测和识别(转)相关推荐
- 【camera】基于深度学习的车牌检测与识别系统实现(课程设计)
基于深度学习的车牌检测与识别系统实现(课程设计) 代码+数据集下载地址:下载地址 用python3+opencv3做的中国车牌识别,包括算法和客户端界面,只有2个文件,surface.py是界面代码, ...
- python用法查询软件_如何使用Python应用软件实现车牌检测和识别
1.车牌检测和识别项目介绍 车牌的检测和识别的应用非常广泛,比如交通违章车牌追踪,小区或地下车库门禁.在对车牌识别和检测的过程中,因为车牌往往是规整的矩形,长宽比相对固定,色调纹理相对固定,常用的方法 ...
- 车牌识别,车辆检测,车牌检测和识别,与车相关的点点滴滴
前言: 最近接到了几个单子,都是和车辆有关的,其中有车辆检测,还有车牌检测和识别等,与车相关的,这里就是总结下自己所了解到的相关技术,同时备份到自己的网盘将代码. 车辆检测 车辆检测,车辆检测是一个老 ...
- 深度学习 端对端的车牌检测与识别 LPDR算法 License Plate Detection and Recognition CCPD
文章目录 链接 CCPD数据集 图片的标注 论文 使用 评价 ref 链接 github: https://github.com/xijunjun/CCPD 论文+模型 CCPD数据集 图片的标注 比 ...
- 智能驾驶 车牌检测和识别(三)《CRNN和LPRNet实现车牌识别(含车牌识别数据集和训练代码)》
智能驾驶 车牌检测和识别(三)<CRNN和LPRNet实现车牌识别(含车牌识别数据集和训练代码)> 目录 智能驾驶 车牌检测和识别(三)<CRNN和LPRNet实现车牌识别(含车牌识 ...
- 智能驾驶 车牌检测和识别(一)《CCPD车牌数据集》
智能驾驶 车牌检测和识别(一)<CCPD车牌数据集> 目录 智能驾驶 车牌检测和识别(一)<CCPD车牌数据集> 1. 前言 2.车牌号码说明 3.车牌数据集CCPD (1)车 ...
- 智能驾驶 车牌检测和识别(二)《YOLOv5实现车牌检测(含车牌检测数据集和训练代码)》
智能驾驶 车牌检测和识别(二)<YOLOv5实现车牌检测(含车牌检测数据集和训练代码)> 目录 智能驾驶 车牌检测和识别(二)<YOLOv5实现车牌检测(含车牌检测数据集和训练代码) ...
- 智能驾驶 车牌检测和识别(五)《C++实现车牌检测和识别(可实时车牌识别)》
智能驾驶 车牌检测和识别(五)<C++实现车牌检测和识别(可实时车牌识别)> 目录 智能驾驶 车牌检测和识别(五)<C++实现车牌检测和识别(可实时车牌识别)> 1. 前言 2 ...
- 智能驾驶 车牌检测和识别(四)《Android实现车牌检测和识别(可实时车牌识别)》
智能驾驶 车牌检测和识别(四)<Android实现车牌检测和识别(可实时车牌识别)> 目录 智能驾驶 车牌检测和识别(四)<Android实现车牌检测和识别(可实时车牌识别)> ...
最新文章
- FUSE队列管理浅析
- java学习与总结:操作系统
- C# Marshal类基本概念和入门示例程序
- [Abp 源码分析]后台作业与后台工作者
- 获取可用密码算法的列表
- IntelliJ IDEA修改项目的根目录名称_修改包目录的名称_修改模块名称_修改项目名称
- Android textview 获取url,获取电话号码
- 30 行代码实现蚂蚁森林自动“偷”能量
- centos elasticsearch7 安装_SkyWalking学习笔记(CentOS环境)
- VMware下安装Linux,Centos-7-x86_64-NetInstall.iso版本
- uml点餐系统活动图_UML 活动图
- 黑马49期 day06-mysql入门(对照视频整理的一份笔记--有改动)
- 《iPhone-电脑文件导入苹果手机》
- Microsoft官网 Windows10 系统重装教程
- 打通实体店面线上线下私域场景之微信小程序通道
- VS CODE下 无法执行 node-gyp 命令
- 集成测试的“面子”和“里子”
- 进行域名解析时,递归和迭代查询方式是什么意思?
- 收藏 根据拼音首字母筛选人名
- 数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)
热门文章
- linux如何调试脚本程序,调试Linux shell脚本的方法
- FPGA实现VGA显示(一)——————屏幕驱动及color_bar显示
- css知多少(7)——盒子模型
- acc 蓝牙_蓝牙耳机什么牌子好,哪个品牌的无线蓝牙耳机便宜好用
- 小网站服务器空间,小型网站空间服务器
- IOS学习笔记6—Objective C—Foundation框架
- [Silverlight]实战WCF RIA gzip压缩
- pandas中size方法_eplot,在pandas中流畅的使用pyecharts!
- 【我的相册】北方的传统面艺
- 笑谈ArcToolbox (1) ArcToolbox 的发展方向