[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的激光雷达定位算法从零开始移植
调试的过程太麻烦了,因此打算详细解释一下每步的含义,很多地方懂了之后发现其实很简单,但是学起来却发现很多地方无从下手,因为资料太少了,真的都是不断踩坑一点一点摸索出来的,写以此文以便后人乘凉 此处将展 ...
随机推荐
- 『OpenCV3』Harris角点特征_API调用及python手动实现
一.OpenCV接口调用示意 介绍了OpenCV3中提取图像角点特征的函数: # coding=utf- import cv2 import numpy as np '''Harris算法角点特征提取 ...
- 3.3 建立松耦合组件(MVC 模式最重要的特性之一是它支持、关注“分离”)《精通 ASP.NET MVC 5》 推荐指数:8 星半
笔者通常希望应用程序中的组件尽可能独立,而只有很少几个可控的依赖项.—— 在理想情况下,每个组件都不了解其他组件,而只是通过抽象接口来处理应用程序的其他区域.这称为松耦合 .—— 它能够使应用程序更易 ...
- Oracle解析复杂json的方法(转)
转:Oracle解析复杂json的方法 问题背景: 当前在Oracle数据库(11G之前的版本)解析json没有可以直接使用的系统方法,网上流传的PLSQL脚本大多也只可以解析结构较单一的json串, ...
- spting Boot 创建一个springBoot项目
spting Boot 创建一个springBoot项目 1)学习springBoot使用软件:IDEA软件(前面的文章有安装idea的过程). 也可以使用另一种方法在https://start.sp ...
- vue上传文件
<div> <input type="file" class="file" name="file" @change=&qu ...
- Dos命令的介绍
Dos命令的介绍目录 1.什么是Dos 2.Dos的简介 3.Dos命令有哪些 4.Dos命令下常见的错误信息 5.Config.sys文件的命令和配置 6.Dos自带的的批处理命令 1.什么是Dos ...
- .net群讨论笔记
本篇为.net群中学到的零碎知识点笔记,将持续更新 感谢群内大神,群号(128485855) 1.关于URL编码问题encodeURIComponent 2.c#直接打开本机的excel(包括其他类型 ...
- sgu 183. Painting the balls 动态规划 难度:3
183. Painting the balls time limit per test: 0.25 sec.memory limit per test: 4096 KB input: standard ...
- FormShortCut MainForm 和 二级FORM
发现,主FORM 定义的快捷键,在二级FORM里也有效. 反过来,就无效. 这样的话,就要考虑 快捷键的冲突问题 了,本来以为不同的FORM 是独立的. http://codeverge.com/em ...
- 破解电视盒 运营商送的,各种型号。通用 TTL 破解电视盒,更新华为悦盒
ZTE ZXV10B860AV1.1 准备工作,准备一个优盘,里面放上当贝桌面的apk 准备ttl线,淘宝10元以内包邮. 把优盘插打盒子上,打开盒子,用ttl连接上,只连gnd tx rx ,V ...