车牌识别LPR(四)-- 车牌定位
第四篇:车牌定位
车牌定位就是采用一系列图像处理或者数学的方法从一幅图像中将车牌准确地定位出来。车牌定位提取出的车牌是整个车牌识别系统的数据来源,它的效果的好坏直接影响到整个系统的表现,只有准确地定位出车牌,才会有后续的车牌分割与字符识别。
目前车牌定位有两大类、基于灰度、基于彩色。
基于灰度:
我们采用的是基于灰度的形态学的车牌定位:首先根据车牌区域中丰富的纹理特征,提取车牌图像中垂直方向的边缘并二值化。然后对得到的二值图像进行数学形态学(膨胀、腐烛、幵闭运算等)的运算,使得车牌区域形成一个闭合的连通区域。最后通过车牌的几何特征(高、宽、宽高比等)对得到的候选区域进行筛选,最终得到车牌图像。
基于灰度的还有边缘检测的车牌定位:由于车牌字符的灰度值与车牌底色的灰度值相差较大,字符与底色的交界处就有灰度突变,灰度突变处就会产生边缘,这是车牌定位技术中非常重要的特征。也可以通过检测车牌的外边框来定位车牌,由于外边框的上下左右四边都为直线,而且有明显的边缘特征,所以首先利用边缘检测算法提取车牌边框位置,然后,用Hough变换算法检测直线,确认外边框的上下左右四条边位置就确定了车牌在图像中的位置。
基于投影法的车牌定位方法:首先对车牌图像进行二值化,由于车牌区域存在明显的剧烈的字符与背景的灰度跳变,将跳变次数投影到垂直轴上,那么车牌区域对应的垂直轴上会有一个明显的峰值,这样可以得到车牌的上下边界。然后对上下边界内的区域进行水平投影,字符区域会出现明显的峰值,这样可以得到车牌的左右边界。这种方法比较理想化。
基于纹理分析的车牌定位方法:所谓的纹理特征是指对图像进行扫描得到的灰度变化曲线,由于扫描经过车牌得到的变化曲线明显不同于经过非车牌得到的曲线,根据这个特点再结合形态学操作和其它先验知识就能从图像中提取出车牌。
基于彩色的:
从颜色空间的角度来看,HSV (Hue色调,Saturation饱和度,Value亮度)颜色空间具有线性伸缩性,比RGB颜色空间更容易区分色彩。HSV车牌定位典型的思路是首先将车牌图像从RGB空间转换到HSV空间,然后寻找图像中含有蓝白相间、黄黑相间、白红相间和白黑相间的地方,对得到的候选区域进一步用字符颜色提取车牌字符,最后用车牌的字符特征确定车牌位置。基于彩色图像的车牌定位方法对字符颜色和背景颜色固定的车牌可以取得较好的效果。
基于彩色图像的边缘检测和区域生长相结合的车牌定位:实现该方法的基本思想是:首先可以利用边緣检测算子对原始彩色(RGB空问)图像进行边缘检测,使得车牌区域的纵向纹理特征得到增强;接着利用数学形态学中的膨胀算法实现区域的连通,然后采用区域生长的方法对候选区域进行标记,最后利用车牌具有的特征和字符排列的频率特点,去除伪车牌区域,得到车牌区域。
基于纹理和颜色综合特征的车牌定位:首先将原始彩色图像M0的颜色空间转化到HSV颜色空间Ml;接着对Ml进行色彩分割,把所需要的颜色的区域设置为前景白色,其他区域设为背景黑色,此时得到图像M2,其次对M2采用区域生长的方法进行处理,并生成连通区域,得到车牌区域的集合A,然后若集合A中不包含车牌,则继续对Ml进行色彩分割,提取下一块前景颜色区域,并对该区域进行车牌特征分析,重复上述过程。
车牌轮廓特征判断条件:
(1)外接轮廓的高度大于5个像素或小于25个像素
(2)外接轮廓的宽度大于20个像素或小于80个像素
(3)外接轮廓的宽高比大于2或小于10
由于我国车牌种类繁多,颜色组合不一致,会遇到以下问题:一方面各地发放的车牌的底色色调会有所不同,另一方面受自然光照变化影响,采集到车牌图像的色度的变化范围也很大。因此,定位我国车牌的方法不适宜直接利用颜色信息进行定位。
其实,还有一些文献里提出支持向量机和adaboost等分级分类的定位方法,虽然使用训练的方法可以很准确的得到车牌图像,但是实际中由于环境的复杂性,单纯的一种方法并不不能得到很好的结果。对图像进行预处理,结合三次定位,像素统计粗定位,颜色阈值定位,文理特征定位,一次次的精确定位结果,调整参数,知道得到正确的车牌图像。
这里有涉及到边缘检测的应用,其中边缘检测就有几种常用的算子方法。还涉及颜色空间的转换,这里不做具体展开。
车牌识别LPR(四)-- 车牌定位的更多相关文章
- 车牌识别LPR系统系列文章汇总
这里的LPR的的几篇文章是之前项目的一些相关资料的整理,涉及实验室内部的资料就没有放上来,希望能对想了解这方面的同学,有所帮助,那怕了解个大概也好.知道整体的思路就好.当初就是一个人瞎摸索,走了很多的 ...
- 车牌识别LPR(一)-- 研究背景
在年尾用了几天的时间将2014年的所有工作都总结了一遍,将之前的文档综合了下. 以下是LPR系统,车牌识别的一些总结资料. 第一篇:LPR研究背景 汽车的出现改变了以往出行徒步和以马代步的时代,极大地 ...
- 车牌识别LPR(三)-- LPR系统整体结构
第三篇:系统的整体架构 LPR系统大体上可由图像采集系统,图像处理系统,数据库管理系统三个子系统组成.它综合了通讯.信息.控制.传感.计算机等各种先进技术,构成一个智能电子系统. 图像采集系统:图像采 ...
- 车牌识别LPR(八)-- 字符识别
第八篇:字符识别 车牌定位.车牌倾斜校正.车牌字符分割都是为车牌字符识别做的前提工作,这些前提工作直接关系到车牌识别系统的性能.车牌字符识别是车牌识别系统的核心部分,车牌字符识别的准确率是衡量车牌识 ...
- 车牌识别LPR(二)-- 车牌特征及难点
第二篇:车牌的特征及难点 2.1 对我国车牌的认识 我国目前使用的汽车牌号标准是 2007 年开始实施的<中华人民共和国机动车号牌>GA36-2007(2010 年修订).根据 GA36 ...
- 车牌识别LPR(六)-- 字符分割
第六篇:字符分割 在知道了车牌字符的规律之后,可以根据车牌的特点对字符进行分割.一般最容易想到的方法就是根据车牌投影.像素统计特征对车牌图像进行字符分割的方法.是一种最常用的.最基本的.最简单的车牌字 ...
- 车牌识别LPR(七)-- 字符特征
第七篇:字符特征 选择的字符特征应该满足以下条件: (1)选取的字符特征具有较强的鲁棒性,不受字符变形.弯曲等影响. (2)两个字符的字符特征不能完全相同,但部分相同是允许的,即选择的字符特征是唯一的 ...
- 车牌识别LPR(五)-- 一种车牌定位法
该方法是某个文章中看到的,有点忘了是那一篇了,看的太多也太久了. Step1.把采集到的RGB图像转换为HSI图像. HSI模型能反映人对色彩的感知和鉴别能力,非常适合基于色彩的图像的相似比较,故采用 ...
- 模式识别之车牌识别---一个开源车牌识别项目easypr
http://doc.okbase.net/subconscious/archive/105312.html https://github.com/liuruoze http://www.cnblog ...
随机推荐
- TQ2440开发板网络配置方式
一.命令行模式 1.设置IP.子网掩码(netmask) #ifconfig eth0 <IP地址> netmask <子网掩码> up up 表示开启网卡eth0,可以不加 ...
- 【正则】精通JS正则表达式,没消化 信息量太大,好文
http://www.jb51.net/article/25313.htm 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用 ...
- KAFKA分布式消息系统
2015-01-05 大数据平台 Hadoop大数据平台 基本概念 kafka的工作方式和其他MQ基本相同,只是在一些名词命名上有些不同.为了更好的讨论,这里对这些名词做简单解释.通过这些解释应该可以 ...
- C#更改控制台文本颜色
C#更改控制台文本的前景色和背景色 关键字:C# NET 控制台 前景色 背景色地址:http://www.cnblogs.com/txw1958/archive/2012/12/07/cshar ...
- cocos2dx中加载图片资源的方法,和从内存中获取已经加载的图片资源的方法
游戏中通常需要将常用的资源如:声音,图片,plist文件,提前加载进内存,以加快游戏的流畅度 1.预加载声音: SimpleAudioEngine::getInstance()->preload ...
- c# 重载运算符(+-|&)和扩展方法
通常我们需要对class的相加,相减,相乘 等重载以适应需求, 如caml查询的时候,我们可以定义一个caml类,然后来操作这些查询. 首先,我们定义一个class为Test public class ...
- WPFMediaKit照相功能
最近写的一个WPF照相功能,往各位吐槽,提供优化 在WPF 设计器中添加如下代码 xmlns:wpfmedia="clr-namespace:WPFMediaKit.DirectShow.C ...
- 工程移除CocoaPods依赖库
http://zanderzhang.gitcafe.io/2015/09/26/工程移除CocoaPods依赖库/ 点这里--->CocoaPods安装和使用教程 当我们工程安装很多第三方开源 ...
- c++ 时间格式化
struct tm tm_time; strptime(time.c_str(), "%Y%m%d %H:%M:%S", &tm_time); time_t tt = mk ...
- 16进制串hex与ASCII字符串相互转换
提供两个函数,方便十六进制串与ASCII 字符串之间的相互转换,使用函数需要注意的是返回的串是在堆上通过 calloc 分配的,所以,记得使用完返回值释放该块,并且将指向该块的指针 =NULL . c ...