第六篇:字符分割

在知道了车牌字符的规律之后,可以根据车牌的特点对字符进行分割。一般最容易想到的方法就是根据车牌投影、像素统计特征对车牌图像进行字符分割的方法。是一种最常用的、最基本的、最简单的车牌字符分割方法。它的精髓是对车牌图像进行逐列扫描,统计车牌字符的每列像素点个数,并得到投影图,根据车牌字符像素统计特点(投影图中的波峰或者波谷),把车牌分割成单个独立的字符。

图像的边缘信息一般都是高频信息,所以在水平、垂直方向上对车牌图像进行小波变换,对其高频信息进行重构,获得相应的高频信息方面的子图,在车牌垂直投影图像中找到每个车牌字符的边界所在位置,并记下边界位置的横坐标;同理在水平投影图像中找到相应的边界的纵坐标,再根据相应的字符坐标值将字符分割出来。

一般在进行分割之前需要对车牌进行预处理:倾斜校正和去噪处理。

在进行分割之后需要统一字符大小,对其进行归一化和去边框处理。

(1)统一车牌底色:

对不同类型的车牌灰度图像进行二位化以后,有的呈现的是黑底白字,而有的则是白底黑字,为了便于对字符进行分割,需首先将不同种类车牌的二值化结果进行景颜色和目标颜色的统一,然后再用相关字符分割的方法对车牌屮的字符进行切分和提収。统一车牌底色可以有两种方法:

基于颜色分量的判断,但由于我国车牌种类太多,这个方法并不能完全区分,但是区分两种车牌类型还是可以的,例如蓝底白字车牌中的RR,在考虑到光照影响和使用已久褪色车牌上这种方法就不好了。

基于二值图像中像素比例特征的车牌底色判断:一般情况下,二值化后的车牌图像中字符笔画的像素个数在整个车牌的像素数目中所占的比例要小于50%。因此,可以通过分别计算二值化后的车牌中两种像素值的像素个数的大小来判断是否需要反色,若目标像素的比例大于50%,则将图像进行反色,否则不进行处理。这种方法的优点是算法简单,适用各种底色类型的车牌。缺点是若车牌中含有的字符的笔画较粗或者是车牌上存在较多污点或者是有装饰物等因素影响时,往往不能准确的判断底色。

(2)图像去噪

采集的图像总是会受到各种噪声的影响。为了保证后续处理的精确度,需要抑制图像中的噪声。对二值化后的车牌图像进行中值滤波处理,它是一种常见的非线性滤波方法,是一种局部平均的图像平滑技术,也是一种低通滤波。经典的中值滤波算法步骤如下:

1、令一个 3*3模板沿行或者列方向的移动;

2、每次移动后,对模板覆盖区域的像素灰度值进行排序;

3、用排序得到的中值代替模板内中心位置的原始图像像素灰度值。

通过以上步骤可以看出,中值滤波的主要功能就是让与周围像素灰度值的绝对差较大的像素改为与周围像素灰度值接近的灰度值,去除那些相对于其领域像素更亮或更暗的灰度。一般来说,小于中值滤波器模板面积一半的亮或暗区域会被滤掉,而较大的物体则会几乎原封不动的保留下来。

(3)倾斜校正

通常车牌区域的上下沿是两条明显的平行直线,一般都采用Hough 变换,检测出这两条直线的倾斜角,然后对车牌进行校正。然而传统的 Hough变换是对整幅图像的每个像素进行计算,以求出图像中可能存在的直线。

要想使用 Hough 变换计算车牌的倾斜角度,必须先确定进行 Hough 变换所需要的数据,即车牌的边缘点。如果图像包含完整的车牌,一般采用检测车牌的上下边框边缘点来作为 Hough 变换的数据,但由于实际得到的车牌不一定含有边框或者只有极少量的边框,所以最常用的是直接检测车牌每个字符上下边缘点作为Hough 变换的数据来源,但是由于实际中得到的车牌含有噪声、污损等原因,用这种方法会产生大量的干扰点,影响校正效果。

方法:对车牌图像在垂直方向进行投影并用高斯滤波器进行平滑,定位投影曲线中的所有波谷点,然后在相应的二值图中,查找所有波谷点之间最高的连通区域,得到的各个区域大部分就是车牌中的各个字符,最终选取各个连通域中即字符的最高和最低点作为 Hough 变换的检测点。对图像进行旋转时采用双线性插值。

(4)去边框

定位出来的车牌图像往往会包含车牌的部分或者全部边框,甚至还包含部分车身,为车牌字符分割带来了不利影响。因此就需要先对车牌图像进行去边框处理,其原理如下:采用水平投影得到上下边界。

(5)字符分割

采用一种基于相邻字符最大间隔宽度的方法来对车牌中的字符进行分割。由单行车牌的特点可以知道,在第二个字符和第三个字符之间存在一个圆形的间隔符,且该间隔符在每个单行车牌中有且仅有一个,还有一个重要的特点就是此间隔符所在的间隙约是其他相邻字符之间间隙的2.6倍,是整个车牌图像中相邻字符的最大间隙,根据这一先验知识首先确定了第二个字符右边缘和第三个字符左边缘的位置,然后由二值图像的垂直投影及单个字符的高宽比确定后5个和前2个字符的精确位置,因此,该方法的最为关键的部分是寻找图像中间隔符所在的空隙。

采用连通域和投影相结合的方法来对车牌图像进行字符分割,采用四连通标记法对车牌字符边界进行标记,形成连通域;然后判断各个区域的高宽是否基本等于车牌字符区域的高宽(去边框时已经求出),若相差较大时,就进行垂直投影,把宽小于车牌字符宽的相邻区域进行合并,把宽大于车牌字符宽的相邻区域进行进一步分割;最后对各个区域加矩形边框,提取单个车牌字符。

在理想的情况下,波谷的值应该为零,并且两个字符之间应该存在波谷,但是由于受到噪声的干扰,使得波谷的值为非零。常见的字符分割的问题有:字符粘连、字符断裂、数字“1”。字符粘连是指两个以上的字符连在一起,在垂直投影上的表现是原本应该为波谷的地方,现在却为非零的垂直投影值;字符断裂是一个字符分裂为几部分,在垂直投影上的表现为几段垂直投影;数字“1”的垂直投影值比较小,容易误判为噪声。可以结合车牌中字符的几何特征解决上述问题。设车牌中字符的宽度为 Width。

1)字符粘连

当 Width

2)字符断裂

若 charWidthi charWidthi+1。其中 charWidthi为当前字符的宽度,charWidthi+1为下一个字符的宽度。此时把当前字符和下一个字符合并。

3)数字“1”

当 charWidthi

采用的车牌字符分割方法;对车牌图像进行灰度化处理,去除颜色信息,使后面的字符分割算法运行速度更快;对灰度车牌图像进行二值化处理(otsu),并统一车牌图像的背景和字符的颜色;对有一定倾斜角度的车牌图像进行倾斜校正处理,对车牌图像进行去边框处理;采用连通域与投影法相结合的方法对车牌图像进行字符分割,为后面的单个字符识别做准备。

java车牌识别字符分割_车牌识别LPR(六)-- 字符分割相关推荐

  1. halcon粘连字符分割_机器视觉—字符识别之粘连字符分割识别

    粘连字符的分割有很多种方法: 第一种方法:利用阈值法提取联通区域,再利用形态学分离字符: 第二种方法:每个字符定义一个感兴趣区域: 第三种方法: 计算区域每列像素数目,由于不同字符之间连接部分非常狭窄 ...

  2. java名片识别源码_名片识别名片信息快速提取

    原标题:名片识别名片信息快速提取 以中安的名片识别技术为例剖析,它可提供移动端名片识别OCR API,同时还提供云端名片识别OCR API. Application Programming Inter ...

  3. java名片识别源码_名片识别

    原标题:名片识别 以文通科技的名片识别技术为例剖析,它可提供移动端名片识别OCR API,同时还提供云端名片识别OCR API. Application Programming Interface,简 ...

  4. yolov3识别的类别_车型识别相关技术

    原文链接:https://blog.csdn.net/weixin_36431018/article/details/112369786 在交通安防中,车型识别是一个重要的技术点,车型识别主要包括车辆 ...

  5. halcon识别ocr汉字_手写汉字识别——手写文本快速电子化的好方法

    最近在试着把之前手写的一些文本录入电脑,在动手敲打之前,我就想会不会已经有很好的工具能够解决这个问题了呢?一搜索一尝试,我才发现原来手写汉字识别已经发展到很实用的地步啦-连我这..一手烂字都能有很高的 ...

  6. gb2312 java编码几个字节_彻底搞懂乱码——字符,字节和编码

    级别:中级 摘要:本文介绍了字符与编码的发展过程,相关概念的正确理解.举例说明了一些实际应用中,编码的实现方法.然后,本文讲述了通常对字符与编码的几种误解,由于这些误解而导致乱码产生的原因,以及消除乱 ...

  7. 语义分割和实例分割_一文读懂语义分割与实例分割

    以人工智能为导向的现代计算机视觉技术,在过去的十年中发生了巨大的变化.今天,它被广泛用于图像分类.人脸识别.物体检测.视频分析以及机器人及自动驾驶汽车中的图像处理等领域.图像分割技术是目前预测图像领域 ...

  8. 0宽字符加密_艺术鬼才!Unicode 字符还能这么玩?

    上周的时候,朋友圈的直升飞机不知道为什么就火了,很多朋友开着各种花式飞机带着起飞. 还没来得及了解咋回事来着,这个直升飞机就 到的微博热搜. 后面越来越多人开来他们的直升飞机,盘旋在朋友圈上方.于是很 ...

  9. 发生无法识别的错误_车牌识别系统的核心部件抓拍摄像机怎么安装?

    谈到车牌识别停车场系统,相信很多人都已经切身体验到了它给我们日常停车带来的便捷之处.但是,如果系统安装的不规范很容易导致识别不出车牌号,甚至识别车牌号错误的情况的发生,主要原因就是车牌识别摄像机的安装 ...

最新文章

  1. spark-scheduled调度算法
  2. LeetCode 509. Fibonacci Number--Python解法
  3. oracle adf 使用,ORACLE ADF 问题总结
  4. 1乘到100 python_python每日一练之如何计算你的应发奖金?
  5. 百度视频携手神策数据 为用户精准推送短视频内容
  6. 架设HmailServer邮件服务器以及webmail
  7. pygame系列_游戏中的事件
  8. 微软桌面虚拟化vdi 安装测试体验
  9. Android之Fragment(一)
  10. Scala 中的集合(三):实现一个新的 Collection 类
  11. 超越传感器和相机 - 将物联网从云端迁移到物理世界
  12. 商品翻牌效果(纯css)
  13. 后高考时代必备APP 社交、旅行都不能少
  14. 双指针 -- 替换空格
  15. 计算机所有相关系统设置在哪,Win7系统高级设置在哪里 win7系统怎么打开高级设置...
  16. 保存单文件为mhtml
  17. 将ListT转化成 DataTable--调整可空类型的转化错误
  18. 【计算机组成原理】1.计算机系统概述
  19. ear的英语怎么念_ear的三种发音各有哪些英文单词
  20. android手机 清除DNS缓存命令

热门文章

  1. ESOURCE_LOCKED - cannot obtain exclusive access to locked queue '2484_0_00163'
  2. VR设计人体工程学建议
  3. Python线程,以及多线程带来的数据错乱和死锁的解决方法
  4. static,this,private关键字用法
  5. python遍历多层嵌套列表_python遍历多层嵌套列表
  6. windows下制作Ubuntu的U盘启动工具
  7. 关于报错,Whoops! Lost connection to ws://XXX.XXX.XXX.XXX:15684/ws
  8. 移动硬盘传输大文件容易中途断开连接
  9. Android:TV设置遥控器组合键
  10. 毕业论文答辩PPT攻略