[CLPR] 定位算法探幽 - 边缘和形态学
一. 引言
如何从一副图片中找到车牌? 这是机器视觉的一个应用. 理所当然地, 思考的角度是从车牌本身的信息入手, 为了讨论方便, 下面均以长窄型蓝白车牌为例.
下图就是这样一张车牌的基本信息.

一眼看过去, 可以得到的信息有: 长宽比 - 3.14, 字符数 - 7, 第一个字符是汉字, 第二个字符是字母, 之后为5个字母/数字混合等距排列.
同时还可以大致了解到, 一个清晰的车牌应该拥有足够多的边缘信息, 换句话说, 边缘信息足够密集地聚集在一个3.14:1的矩形中.
所以今天介绍的算法, 都使用的是边缘信息, 结合上形态学来进行判别.
二. 什么是边缘?
什么是边缘? 一般我们定义灰度(256阶)图像中灰度的跳变点为边缘. 跳变点指的是相近的两个像素的灰度差异较大.
一般用于计算边缘的方法是使用算子对图像进行处理, 我们这里使用的是Sobel算子. 用于检测垂直边缘的三阶Sobel算子的形式大致如下:

我们设算子为S, 图像中应用于算子的部分为GS, 输出为OS. 我们可以得到OS = GS * S. 也即计算了GS左侧和右侧灰度值的差, 将此差值赋予中间的三个像素. 可以看到, 这是符合我们对于边缘的定义的. 下面我们就看看使用垂直和水平两个方向的Sobel算子的计算结果:
第一张是原图, 第二张是灰度边缘.


三. 形态学 - Morphology
形态学听起来高大上, 实际上不过是利用图像的一些几何特征进行分析罢了. 在CLPR(中国车牌识别)学术领域, 形态学分析可以说占据了半壁江山.
第一章我们就分析过, 车牌可以利用的形态学信息不过寥寥: 长宽比3.14, 边缘密度高等.
其中长宽比如何确定? 边缘密度的高低又如何定量?
这些参数的获取方法和确定方法才是隐藏在形态学分析背后的关键所在.
四. 中国车牌识别常见算法汇总
我总结了21世纪以来国内外大多数期刊学报发表的关于CLPR的论文以及它们的效果, 这里先放出来, 以便下一步分析.

大多数已发表的结果定位的成功率都在96%以上. 基于应用情景的不同, 成功率略有波动但无须在意.
这里我们分析第一篇论文"A hybrid License Plate Extraction Method Based On Edge Statistics and Morphology". 这篇论文发表于模式识别国际会议(ICPR2004)的Proceedings上. ICPR属于模式识别领域最顶级的会议了, 所以这篇文章的可靠性还是有的. 下面我们看看这篇论文定位算法的基本思路:

我们可以看到, 这篇文章使用的是垂直边缘检测配合边缘分析和形态学提取的方法. 其中的第三步是算法的关键实现点, 通过连接近邻的边缘点构造边缘线进而连接这些线来构造矩形, 最后根据矩形的位置信息来合并这些矩形, 从而实现了一种巧妙的图像膨胀. 这种膨胀不同于一般IP中使用的无目的的膨胀, 它倾向于合并那些水平距离不远, 垂直距离相近的矩形(见下式).

连接密度定义
overlapV是两个矩形垂直方向上的重叠部分, disH是它们的水平距离, h1, h2, w1, w2则是它们的高度和宽度.
- 当两矩形越处于同一水平线, overlapV越大, 则D就越大, 这两个矩形就越倾向于合并;
- 当两个矩形距离越远, 则disH就越大, D就越小, 这两个矩形就越不倾向于合并;
- 当两个矩形都比较高, D越小, 越不倾向于合并;
- 当两个矩形都比较宽, D越大, 越倾向于合并;
所以问题的关键就落在了D取多少的时候应该合并, 取多少的时候又不该合并呢? 这是一个阈值选取问题. 论文中选取了4阶阈值(64, 32, 16, 8)分别对图像进行处理, 得到4张处理后的图. 随后基于以下四点进行提取:
- 高阈值得到的矩形优先级高;
- 图像底部的矩形优先级高;
- 符合标准车牌的比例的矩形优先级高;
- 交叉的区域可以参考D的定义.
在获取这些图后, 作者又使用了非线性滤波器(但是没说是什么滤波器)移除了一些窄长边缘. 随后使用3x15的窗对上述图像进行卷积, 再使用大津二值法进行二值化. 二值化结束后, 对于每一个边缘点, 如果它上下的边缘点的距离低于某一阈值, 我们就连接它上下的边缘. 随后使用1x9的窗口对图像进行膨胀.
这之后就是连通分量分析和特征提取. 此处不再赘述.
五. 边缘定位算法的优劣分析
边缘定位算法的优点是准确率非常高, 但是问题明显.
- 受噪声影响, 误检率高;
- 受噪声影响, 容易粘黏导致形态学分析失效;
- 受光照条件影响, 性能鲁棒性不足.
对于第一点和第二点, 我们需要对边缘进行处理, 尽量滤除非车牌的边缘或弱化它们.
对于第三点, 图像的预处理就非常重要, 直方图均衡化特别是分块局部直方图均衡化是常用的手段, 也有针对特定灰度的折线分段灰度拉伸算法, 此处也不赘述.
总结起来, 使用边缘算法需要注意两点:
- 预处理工作
- 边缘滤波
[CLPR] 定位算法探幽 - 边缘和形态学的更多相关文章
- 关于APIT定位算法的讨论
关于APIT定位算法的讨论 [摘要] 无线传感器网络节点定位机制的研究中,基于距离无关的定位技术得到快速发展,其中基于重叠区域的APIT定位技术在实际环境中的定位精度高,被广泛研究和应用. [关键 ...
- Trilateration三边测量定位算法
转载自Jiaxing / 2014年2月22日 基本原理 Trilateration(三边测量)是一种常用的定位算法: 已知三点位置 (x1, y1), (x2, y2), (x3, y3) 已知未知 ...
- LED室内定位算法:RSS,TOA,AOA,TDOA(转载)
转载自:https://blog.csdn.net/baidu_38197452/article/details/77115935 基于LED的室内定位算法大致可以分为四类: 1. 几何测量法 这种方 ...
- 基于麦克风阵列的声源定位算法之GCC-PHAT
目前基于麦克风阵列的声源定位方法大致可以分为三类:基于最大输出功率的可控波束形成技术.基于高分辨率谱图估计技术和基于声音时间差(time-delay estimation,TDE)的声源定位技术. 基 ...
- 伪距定位算法(matlab版)
在各种伪距定位算法中,最小二乘法是一种比较简单而广泛的方法,该算法可以分为以下几步: 1.准备数据与设置初始值 这里准备数据,主要是对于各颗可见卫星,收集到它们在同一时刻的伪距测量值,计算测量值的各项 ...
- SIFT定位算法关键步骤的说明
1. SIFT算法中一些符号的说明 $I(x,y)$表示原图像. $G(x,y,\sigma)$表示高斯滤波器,其中$G(x,y,\sigma) = \frac{1}{2\pi\sigma^2}exp ...
- Canny算法检测边缘
Canny算法是边缘检测的一个经典算法,比单纯用一些微分算子来检测的效果要好很多,其优势有以下几点: 边缘误检与漏检率低. 边缘定位准确,且边界较细. 自带一定的滤噪功能,或者说,对噪声的敏感度要比单 ...
- mser 最大稳定极值区域(文字区域定位)算法 附完整C代码
mser 的全称:Maximally Stable Extremal Regions 第一次听说这个算法时,是来自当时部门的一个同事, 提及到他的项目用它来做文字区域的定位,对这个算法做了一些优化. ...
- 基于Ubuntu1604+ROS-kinetic+roscpp的激光雷达定位算法从零开始移植
调试的过程太麻烦了,因此打算详细解释一下每步的含义,很多地方懂了之后发现其实很简单,但是学起来却发现很多地方无从下手,因为资料太少了,真的都是不断踩坑一点一点摸索出来的,写以此文以便后人乘凉 此处将展 ...
随机推荐
- CentOS7 Install Docker(转)
https://linux.cn/article-4340-1.html CentOS 7 中 Docker 的安装 Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想 ...
- 秒杀多线程第七篇 经典线程同步 互斥量Mutex
本文转载于:http://blog.csdn.net/morewindows/article/details/7470936 前面介绍了关键段CS.事件Event在经典线程同步问题中的使用.本篇介绍用 ...
- Application 类
Application 类具有用于启动和停止应用程序和线程以及处理 Windows 消息的方法,如下所示: Run 在当前线程上启动应用程序消息循环,并可以选择使某窗体可见. Exit 或 ExitT ...
- wordpress 使用less 样式无法及时刷新
wordpress 样式无法及时刷新 wordpress编写style样式时,无法及时刷新页面,因此特意记录一番如何处理较好,网友的建议清除Chrome缓存,实时修改style携带的参数 折腾之旅开启 ...
- WEB-WELCOME-FILE-LIST
当用户在浏览中输入的UTL不包含某个servlet 名或JSP页面的时候,welecome-file-list元素可以指定默认的文件. (即也就是输入:http://hostip:port/webAp ...
- learning docker steps(4) ----- docker swarm 初次体验
参考:https://docs.docker.com/get-started/part4/ 了解 swarm 集群 swarm 是一组运行 Docker 并且已加入集群中的机器.执行此操作后,您可以继 ...
- POJ 2195 Going Home 最小费用流 难度:1
Going Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17955 Accepted: 9145 Descr ...
- ACID测试标准
缩写ACID代表原子性(atomicity).一致性(consistency).孤立性(isolation).持久性(duration) 通过了ACID测试的事物在多线程.并行处理或多用户环境中就是安 ...
- 基于jquery,bootstrap数据验证插件bootstrapValidator 教程
bootstrap:能够增加兼容性的强大框架. 因为项目需要数据验证,看bootstrapValidator 还不错,就上手一直,完美兼容,话不多说. 需要引用css: bootstrap.min.c ...
- 小知识,用myeclipes找jar
有些时候,换台电脑就换了一个框架的版本,找对应的jar是一件非常麻烦的事. 我们可以使用myeclipes快速得到我们想要的jar 首先新建一个项目,然后使用myeclipes的自动生成框架技术,生成 ...