当前位置:文档之家› 基于滴水算法的验证码中粘连字符分割方法

基于滴水算法的验证码中粘连字符分割方法

基于滴水算法的验证码中粘连字符分割方法
基于滴水算法的验证码中粘连字符分割方法

车牌的定位与字符分割报告

车牌的定位与分割 实验报告 一实验目的 针对交通智能系统所拍摄的汽车图片,利用设定的算法流程,完成对汽车车牌部分的定位,分割车牌部分,并完成字符的分割,以便于系统的后续分析及处理。 二实验原理 详见《车牌的定位与字符分割》论文。 三概述 1一般流程 车牌自动识别技术大体可分为四个步骤:图像预处理、车牌定位与分割、车牌字符的分割和车牌字符识别。而这四个步骤又可归结为两大部分:车牌分割和车牌字符识别。 图1-1为车牌自动识别技术的一般流程图。 2本实验的流程 (1)图像预处理:图像去噪 (2)车牌的定位:垂直边缘检测(多次)形态学处理的粗定位

合并邻近区域结合车牌先验知识的精确定位 (3)车牌预处理:车牌直方图均衡化倾斜校正判定(蓝底白字或者黄底黑字)归一化、二值化 (4)字符的分割:垂直投影取分割阈值确定各个字符的左右界限(结合字符宽度、间隔等先验知识)分割字符 四实验过程 4.1图像预处理 4.1.1图像去噪 一般的去噪方法有:空间域上的均值滤波和中值滤波;频率域上的巴特沃斯滤波器。图4-1是各滤波器处理椒盐噪声的效果。 a.被椒盐噪声污染的图片 b.均值滤波的效果图 c.中值滤波的效果图 d.BLPF的效果图 图4-1 各滤波器处理椒盐噪声的仿真 可见,中值滤波对椒盐噪声的处理效果极好,而一般所拍摄的图片上最多的便是孤立的污点,所以此处以中值滤波为主进行去噪。图4-2是采用中值滤波处理实际汽车图片的效果。

a.原始图像 b.灰度图像 c.中值滤波后的图像 图4-2 中值滤波处理实际汽车图片的效果 很显然,经过中值滤波后去除了原图上的部分污点。 4.1.2图像复原 由于通常情况下都不知道点扩展函数,所以我们采用基于盲解卷积的图像复原策略。 图4-3~4-7图是函数进行盲解卷积的实验结果,其中图4-3是图像cameraman 的模糊图像。 图4-3 模糊图像 在盲解卷积处理中,选择适当大小的矩阵对恢复图像的效果很重要。PSF的大小比PSF的值更重要,所以首先指定一个有代表性的全1矩阵作为初始PSF。恢复的图像如图4-4所示,初始PSF如图4-5所示。

(完整word版)字符分割

在车牌自动识别系统中最重要的指标是字符的识别率,对字符识别的准确率直接影响了系统的性能。字符识别部分由车牌图像的二值化、滤波、字符分割、字符大小规一化、汉字、字母和数字识别等模块组成。这一周我主要学习了字符分割模块的有关内容。 车牌字符分割的任务就是把多行或多字符图像中的每个字符从整个图像中分割出来,使其成为单个字符图像,为下一步将标准的单个字符输入到字符识别模块做准备。字符分割是字符识别的基础,字符分割的质量直接影响到字符识别的效果。字符分割之前,首先要进行图像的二值化,然后再进行字符分割,从而分割出一个个具体的二值图表示的字符图像点阵,作为单字识别的输入数据。由于文本图像不但包括了组成文本的一个个字符,而且包含了字符行间距与字符间的空白,甚至还会带有各种标点符号,这就需要采用一定的处理技术将文本中的一个个字符切分出来,形成单个字符的点阵,以便进行字符识别。车牌字符分割的原理主要是利用车牌字符自身的一些特点如规则整齐的排列、字符之间有一定的间隔、字符的宽高比例固定等等,对车牌区域进行垂直方向的投影,利用字与字之间的空白间隙在图像行垂直投影上形成的空白间隙将单个汉字的图像切割开来。 4.2投影分割 投影分割方法的原理是首先将车牌图像转换为二值图像(设白色为1,黑色为0),然后将车牌像素灰度值按垂直方向累加,即所谓的垂直投影。由于车牌中字符之间的灰度值通常为O,因此,投影图将会在字符之间形成谷底,或者说在字符处形成波峰(一种特殊的波峰)。通过寻找两个波峰之间的谷点,将其作为字符分割的位置,完成字符的分割。投影分割法的具体步骤如下: (1)先自下而上对图像进逐行扫描直至遇到第一个白色象素点。记录下来,然后再由上而下对图像进行逐行扫描直到找到第一个白色象素点,这样,就找到图像大致的高度范围。(2)在这个高度范围之内再自左向右逐行扫描,遇到第一个白色象素时认为是字符分割的起始位置,然后继续扫描,直至遇到没有白色象素的列,则认为是这个字符分割结束。然后继续按照上述的方法扫描,直至图像的最右端,就得到每个字符比较精确的宽度范围。(3)在已知的每个字符比较精确的宽度范围内,按照(1)的方法,分别进行自上而下和自下而上的逐行扫描来获得每个字符精确的高度范围。投影分割的方法比较常用,主要是针对在车牌定位、图像预处理后比较规则的车牌图像。它的优点是程序逻辑设计简单,循环执行功能单一,便于设计和操作,程序执行时间短。缺点是由于车牌图像通常会有噪声,产生字符的断裂和交叠等情况,在投影时字符之间的谷底会受到很大影响,造成谷底不明显,严重时谷底会消失,造成字符分割误差甚至错误,最终影响字符的识别。因此该方法对车牌字符的断裂和交叠问题,解决得不很理想。 4.3基于聚类分析的字符分割 基于聚类分析的字符分割原理是按照属于同一个字符的像素构成一个连通域的原则,再结合牌照字符的高度、间距的固定比例关系等先验知识,来分割车牌图像中的字符。其具体算法步骤为: (1) 以等于车牌图像宽度七分之一的阈值‘对车牌图像按行进行逐行扫描,如果有线段的长度大于‘就可以认为是牌照的上下边框,再以等于车牌图像高度五分之三的阈值Z:对车牌图像按列进行逐列扫描,如果有线段的长度大于厶,则认为是车牌的左右边框。因此可除去车牌边框部分。 (2)根据车牌字符的先验知识,在预处理好的车牌图像上预设7个类中心。设置类中心可以采用程序提示给定坐标值的方法,也可以采用给予固定坐标值的方法。 (3)自下向上对图像进行逐行扫描,每扫描到一个白色象素时,都要与上述每个类已获得的每个(白色)象素比较距离d,找到与该象素距离最近的已获得象素点,并认为这两个象素属于同一类,即属于同一字符。距离d取两个象素点:彳(x,Y)扫描得到的当前象素,曰O,),)

基于垂直投影法的车牌字符分割算法设计

毕业论文(设计) 学院: 计算机科学学院 专业: 软件工程年级: 题目:基于垂直投影法的车牌字符分割算法设计学生姓名: 学号: 指导教师姓名: 职称: 年月

XXXX大学本科毕业论文(设计)原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。 作者签名:年月日 目录 摘要 (1)

Abstract (1) 第一章绪论 (1) 1.1车牌识别技术的背景 (1) 1.2 车牌识别系统的工作原理 (2) 1.3 国内外研究 (3) 1.4 本文主要内容 (3) 第二章基本理论介绍 (3) 2.1 数字图像处理技术 (3) 2.1.1 bmp位图 (4) 2.1.2 RGB编码方式 (4) 2.1.3二值图像 (4) 2.1.4 Otsu算法 (4) 2.1.5灰度图像 (5) 2.1.6 中值滤波 (5) 第三章车牌图像的预处理 (5) 3.1车牌图像的灰度化 (5) 3.2车牌图像的二值化 (5) 3.3 去噪处理 (6) 3.3.1去除车牌边框 (7) 3.3.2去除车牌图像中的圆点 (8) 第四章车牌字符分割算法 (8) 4.1传统垂直投影的车牌字符分割算法 (8) 4.2 改进的垂直投影的车牌字符分割算法 (9) 第五章系统实现 (10) 第六章总结与展望 (13) 6.1 总结 (13) 6.2 展望 (13) 致谢 (14) 参考文献 (15)

基于垂直投影法的车牌字符分割算法设计 摘要:车牌识别系统在现代社会有着广泛应用,而车牌字符分割是其中的一项关键技术。本文针对车牌字符分割算法做了较为深入的研究。首先,要想正确的分割车牌图像,必须得到质量较好的车牌二值化图像。所以,本文对车牌字符分割的预处理部分进行较为深入的研究,尤其是车牌图像二值化后的去噪处理。传统投影法对车牌图像要求比较高,容易受到噪声的影响,从而造成分割字符的粘连与断裂。针对传统投影法的不足,文章提出一种基于垂直投影法的改进的字符分割算法,该算法可以有效地识别车牌字符。该方法抗干扰能力较强,能有效的减少字符粘连与断裂,分割准确度较高。 关键词:车牌识别;二值化;字符分割;垂直投影法 Vertical projection-based license plate character segmentation algorithm design Abstract:License plate recognition system has a wide range of applications in modern society, the license plate character segmentation is a key technology. In this paper, the license plate character segmentation algorithm to do a more in-depth study. First of all, in order to correct segmentation of license plate image must be of good quality license plate binary image. So more in-depth study of the pre-processing part of the license plate character segmentation, especially after the license plate image binarization denoising. Traditional projection on the license plate image requires relatively high, easily affected by noise, resulting in a split character adhesion and fracture. For the lack of traditional projection method, the paper presents a segmentation algorithm based on the improvement of the vertical projection of the characters, the algorithm can effectively identify the license plate character. Strong anti-interference ability of the method, which can effectively reduce the character adhesion and fracture, split high degree of accuracy. Keywords License Plate Recognition; binarization ;Character segmentation; Vertical projection 第一章绪论 随着世界经济的快速发展,以及汽车制造技术的提高,使得汽车迅速成为人们日常生活中的一个必需品。这造成全球的汽车数量猛增,而随之也导致城市的交通压力越来越大,城市的交通状况也因此得到了更多的关注。如何有效地对交通进行管理,也成为各国政府和相关部门所关注的焦点和热点。针对这些问题,人们开始将计算机技术、通信技术、计算机网络技术和自动化信息处理等很多新的科学技术用于交通道路的监视和管理系统,以此提高车辆管理和运输的效率。它主要是通过对过往车辆实施检测,提取有关的交通数据来达到对交通的监控、管理和指挥。车牌自动识别技术[1]是指能够检测到受监控路面的车辆并自动提取车辆车牌信息(含汉字字符、英文字母、阿拉伯数字及号牌颜色)进行处理与识别的技术。它以计算机技术、图像处理技术、模糊识别技术为基础,建立运动车辆的特征模型,识别车辆特征,如号牌、车型、颜色等,并着重解决高速车辆图像的获取及清晰度问题。本文是在以往的车牌分割算法[2]的基础上介绍了车牌识别技术中的一种字符分割算法,该算法是针对一种已有的字符分割算法(投影法)的改进性研究。 1.1车牌识别技术的背景 随着21 世纪经济全球化和信息时代的到来,迅猛发展的计算机技术、通信技术和计算机网络技术,水平不断提高的自动化信息处理技术在人们社会活动和生活的各个领域得到广泛应用。同时,高速度、高效率的生活节奏,使汽车普及成为必然趋势。伴随着世界各国汽车数量的增加,城市的交通状况越来越受到人们的重视。如何有效地进行交通管理日益成为各国政府相关部门所关注的焦点。针对这一问题,

基于opencv2.0的车牌检测与字符分割的代码

本程序主要实现的是车牌的定位与检测 主要是利用申继龙论文里面的方法 1、采集得到的图像 2、把RGB图像转换成HSI彩色图像 3、利用设定的H、S阈值得到二值图像 4、对二值图像水平投影获得候选区域 5、对候选区域的HSI图像边缘检测 */ #include "stdafx.h" #include "opencv2/opencv.hpp" #include "opencv2/objdetect/objdetect.hpp" #include "opencv2/features2d/features2d.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/calib3d/calib3d.hpp" #include "opencv2/nonfree/nonfree.hpp" #include "opencv2/nonfree/features2d.hpp" #include "opencv2/imgproc/imgproc_c.h" #include "opencv2/legacy/legacy.hpp" #include "opencv2/legacy/compat.hpp" #include #include #include #include #include #include #include #include #include using namespace std; using namespace cv; #define pi 3.14159265 IplImage* srcImage=NULL;//存储原图片 IplImage*srcImage1=NULL;//存储原始图片的副本 IplImage* HSI=NULL; static IplImage* grayImage=NULL;//存储原图片灰度图 static double posdouble=0.0; IplImage* channelOneImage=NULL; IplImage* channelTwoImage=NULL; IplImage* channelThreeImage=NULL; IplImage* plateImage=NULL;//存储车牌图像 IplImage* grayPlateImage=NULL;//存储车牌灰度图像 vectorcharacterImageList;//存储7个车牌字符图像的容器vectorxList;//存储7个车牌字符的起始和结束位置

Java分割字符串

https://www.doczj.com/doc/2a10194796.html,ng.String 的 split() 方法, JDK 1.4 or later public String[] split(String regex,int limit) 示例代码 public class StringSplit { public static void main(String[] args) { String sourceStr = "1,2,3,4,5"; String[] sourceStrArray = sourceStr.split(","); for (int i = 0; i < sourceStrArray.length; i++) { System.out.println(sourceStrArray[i]); } // 最多分割出3个字符串 int maxSplit = 3; sourceStrArray = sourceStr.split(",", maxSplit); for (int i = 0; i < sourceStrArray.length; i++) { System.out.println(sourceStrArray[i]); } } } 输出结果: 1 2 3 4 5 1 2 3,4,5

split 的实现直接调用的 matcher 类的 split 的方法。在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。在正则表达式中有特殊的含义的字符,我们使用的时候必须进行转义,示例: public class StringSplit { public static void main(String[] args) { String value = "192.168.128.33"; // 注意要加\\,要不出不来,yeah String[] names = value.split("\\."); for (int i = 0; i < names.length; i++) { System.out.println(names[i]); } } } split分隔符总结 1.字符"|","*","+"都得加上转义字符,前面加上"\\"。 2.而如果是"\",那么就得写成"\\\\"。 3.如果一个字符串中有多个分隔符,可以用"|"作为连字符。 比如:String str = "Java string-split#test",可以用Str.split(" |-|#")把每个字符串分开。这样就把字符串分成了3个子字符串。 java.util.Tokenizer JDK 1.0 or later StringTokenizer StringTokenizer 类允许应用程序将字符串分解为标记。StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用String 的 split 方法或 java.util.regex 包。 代码示例 public class StringSplit { public static void main(String[] args) { String ip = "192.168.128.33"; StringTokenizer token=new StringTokenizer(ip,"."); while(token.hasMoreElements()){

车牌识别(字符切割)大作业

图像处理技术

目录一.引言 (1) 二.目的和意义 (1) 三.设计原理 (1) 四.字符分割程序 (2) 五.结果 (4) 六.测试代码 (5) 七.系统的不足 (5) 八.总结 (5) 九.心得体会 (5) 十.致谢 (6) 十一.参考文献 (6)

一.引言 随着人们生活水平的不断提高,机动车辆数量大幅度增加,与之相配套的高速公路,城市路网及停车场越来越多,显著提高了人们对交通控制方面的要求。由于计算机技术的发展,信息处理水平的提高使智能交通系统成为世界交通领域研究的重要课题。其中车牌识别是智能交通系统的重要组成部分。车牌识别系统能够自动、实时地检测车辆、识别汽车车牌,从而监控车辆的收费、闯关、欠费以及各种舞弊现象。本系统为基于蓝色车牌的车牌识别系统,它能够识别非蓝色车辆的蓝底白字车牌。该系统通过车牌提取、车牌定位、预处理、字符分割、字符识别五个模块组成车牌识别系统。 二.目的和意义 通过对车牌识别系统的研究,自己开发小型车牌识别系统,虽有一定的局限性与不完整性,但可以使自己更加的熟悉MATLAB语言,激发对研究的兴趣,拓宽知识面,为自己以后的研究打下基础。在提升自身科研能力的同时,还能提高团队合作精神,清楚团队成员的分工,协调成员间的工作,为今后的团队合作研究积累经验。 三.设计原理 字符分割在此系统中有着承前启后的作用。它在前期车牌定位的基础上进行字符的分割,然后利用分割的结果进行字符的识别。字符识别的算法很多,应为车牌字符间间隔较大,不会出现字符粘连的情况,所以此处采用的方法为寻找连续有文字的块,若长度大于某阈值,则认为组成该块有两个字符,需要分割。一般分割出来的字符要进行进

语音识别字符分割算法_原创.

5.设计方法 5.1概述 5.2硬件系统的设计 语音信号预处理 (1)预加重 预加重的目的是提升高频部分,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求频谱,以便于频谱分析或声道参数分析。在计算机里用具有6dB/频程升高频特性的预加重数字滤波器来实现,一般是一阶的FIR数字滤波器: 为预加重系数,值接近于l,在0.9和1之间,典型值为0.94。 预加重的DSPBuilder实现: 为了便于实现,将上式中的一阶FIR预加重滤波器用差分方程表示为: 其中,为原始语音信号序列,N为语音长度,上面的公式显示其在时域 上的特性。又因为0.94接近于15/16,所以将上面的式子变为 除以16可以用右移4位来实现,这样就将除法运算化简为移位运算,降低了计算复杂度。在后面的模块设计中,也乘以或者除以一些这样的数,这些数为2的幂次,都可以用移位来实现。 预加重的硬件实现框图如下: 预加重实现框图 DSP Builder中的图形建模为:

预加重滤波器的DSPBuilder结构图 (2)分帧 语音信号是一种典型的非平稳信号,其特性随时间变化,其在很短的时间内是平稳的,大概为1小20ms,其频谱特性和物理特征可近似的看做不变,这样就可以采用平稳过程的分析处理方法来处理。 分帧的DSP Builder实现: 语音信号在10到20ms之间短时平稳(这样可以保证每帧内包含1一7个基音周期),也就是说选取的帧长必须介于10到20ms之间,此外,在MFCC特征提取时要进行FFT变换,FFT点数一般为2的幂次,所以本文中选择一帧长度为16ms,帧移为1/2帧长,这样一帧就包含了16KHz*16ms=256个点,既满足短时平稳,又满足FFT变换的要求。 由于采集的语音是静态的,语音长度已知,很容易计算出语音的帧数,但是在硬件上或实时系统中,语音长度是无法估计的,而且还要考虑存储空间的大小和处理速度,采用软件实现时的静态分帧方法是行不通的,可以利用硬件本身的特点进行实时的动态分帧。 为了使帧与帧之间平滑过渡,保持连续语音流的自相关性和过渡性,采用交叠分帧的算法。帧移取1/2帧长,即128个数据点当作一个数据块。FIFO1大小为一帧语音长度,分成两个数据块,预加重后的数据写入这个FIFO。为了实现帧移交叠,在FIFO1读数据时,同时再用FIFO2保存起来,当FIFO的一块数据读完以后,紧接着从FIF22读出这一块的副本。写入的一块数据,相当于被重复读出2次,所以FIFO1的读时钟频率设计为写时钟频率的2倍,而FIFOZ的读写时钟频率和FIFO1的读时钟频率相同。分帧以后的数据在图中按时间标号为1、2、2、3.··…,1、2为第一帧,2、3为第二帧,以此类推。

SQL 分割字符串函数 SQL SPLIT

SQL 分割字符串函数 SQL SPLIT 2009-06-10 00:15 我们在操作数据库时,经常要用到分割字符串以达到某种目的,下面是一个SQL分割字符串的函数: --CODE: -- ============================================= -- Author: -- Create date: <2009-06-09> -- Description: -- ============================================= CREATE FUNCTION [dbo].[fn_split]

( --输入字符串 @InputString NVARCHAR(MAX), --分隔符号 @Seprator NVARCHAR(10) ) RETURNS @tempTable TABLE ([value] NVARCHAR(200)) AS BEGIN DECLARE @index int DECLARE @value NVARCHAR(200) --去除输入字符串前后的空格 SET @InputString = RTRIM(LTRIM(@InputString)) --分隔符号@Seprator在输入字符串@InputString中的开始位置 SET @index=CHARINDEX(@Seprator, @InputString) WHILE @index>0 BEGIN --返回输入字符串(@InputString)左边开始指定个数(@index-1)的字符 SET @value=LEFT(@InputString,@index-1) --插入数据 INSERT @tempTable VALUES(@value) --重新设置输入字符串截取输入字符串从输入字符串@index+1处开始且长度为LEN(@InputString)-@index SET @InputString = SUBSTRING(@InputString, @index+1, LEN(@InputString)-@index) --分隔符号@Seprator在输入字符串@InputString中的开始位置 SET @index=CHARINDEX(@Seprator, @InputString) END --如果输入字符串不为空 IF(@InputString<>'\') BEGIN INSERT @tempTable VALUES(@InputString) END RETURN END --使用 SELECT * FROM dbo.fn_split('A,B,CD,EFG,H',',') --结果

基于matlab的车牌字符分割

《多媒体通信技术》课程报告 专业通信与信息系统 学号 姓名 任课教师

基于matlab的车牌字符分割 摘要:本文利用投影分割的方法对车牌字符进行分割,并利用模板匹配的方法进行字符识别,在图像进行预处理后的基础上,利用对车牌图像分块扫描的方法对车牌图像去边框处理,在去边框的基础上对每个字符进行分割,得到单个字符。关键字:字符;预处理;分割 1、引言 智能交通系统(intelligent transportation system,ITS)的发展现今对社会生活、国民经济和城市建设产生积极而深远的影响,我国已经将其列为优先发展的高技术产业化重点领域[1]。车牌识别系统(1icense plate recognition,IJR)是目前交通部门十分重要的科研课题之一,它主要包括车牌定位、字符分割和字符识别三部分,字符分割和字符识别是最后的关键环节。本文主要通过运用投影分割的方法对车牌进行字符分割并利用模板匹配的方法对车牌字符进行识别。2、图像预处理 图像预处理是对输入的图像进行一系列变换处理,使之成为符合字符识别模块要求的图像。图像预处理环节对于最终识别的正确率有很大影响,由于图像本身受到各种自然因素或设备因素的影响,图像的清晰度往往不是很理想,有时还会带有较明显的图像噪声。若不对图像进行预处理,这些噪声将给后续的识别模块带来严重影响,最终可能造成识别错误。因此,预处理的好坏一定程度上影响到字符识别的正确率。图像预处理首先需要将待识别的字符从输入的灰度图中分离出来。最常用的方法就是图像二值化。 2.1图像的灰度化

就是将彩色图像转化为具有256个灰度级的黑白图像,灰度图像只保留图像的亮度信息,去除了色彩信息,就像我们平时看到的黑白照片,它的亮度由暗到明,而且亮度变化是连续的。图像灰度化后可以使处理运算量大大减少,这样处理过程就变得更加简单和省时。在灰度图像中,通常将亮度划分成0到255共256个级别,0最暗,255最亮。 图2-1 灰度化的图像 2.2 图像的阈值化处理 所谓图像二值化就是指将灰度图转化为只含有两种灰度值的图像,一种为背景,另一种为待识别的字符,本文采用动态阈值法将图像二值化:如果输入图像较暗或者车牌较脏,如果采用固定的阈值将图像进行二值化,生成的二值图会非常黑或者有很多噪声。二值化有很多方法,主要为P片法或者峰谷法。本文采用的是P片法,阈值的大小的设定基于以下假设:由于现有车牌绝大部分为蓝底白字或者黄底黑字车牌,设理想的车牌平均包含大约60%的蓝/黄色像素和40%的白/黑色像素。首先,将图像二值化,计算出黑色和白色像素的比例,将它和期望值进行比较。从而算出新的阈值,直到近似等于期望值为止[2]。图1为理想状态下车牌原图片和的阈值化图片。 图2-2-1 阈值化的图像 图像经过上述步骤处理后,已经从带有噪声的灰度图像转变为符合识别要求的图像。该图像为只包含两种灰度值的二值图像,并且具有统一尺寸。而且在预处理环节中,已最大限度地去除了输入图像中的噪声,在保持字符原本信息不丢失的前提下,把待识别的字符从背景中成功地分离出来。 3 车牌的去边框处理

字符串分割函数

[C语言]字符串处理 - 以指定的字符串分割字符串(支持中文字符) 2008-11-8: 函数StringSplit(分割字符串到一个字符串数组中,其中该数组第0位为分割后字符串的个数) 2008-11-10: 函数StringSplit_Struct(以定义一个新结构的方式来实现该函数) /*C代码如下*/ #include /*实现方案1*/ /*分割字符串到一个字符串数组中,其中该数组第一位为分割后的个数*/ char** StringSplit(const char* string,const char* split) { char** result; /*首先分配一个char*的内存,然后再动态分配剩下的内存*/ result = (char * * )malloc(sizeof(char *)*1); memset(result,0,sizeof(char *)*1); /*定义一个遍历用的指针和一个寻找位置用的指针*/ char* p = string; char* pos = string; /*无论是否存在该分割串,绝对都会分割到一个字符串*/ int count = 1; while(*p != '\0') { char* temp; char* tt; /*查找该字符串*/ pos = strstr(p,split); /*结果为0说明剩下的字符串中没有该字符了*/ if(pos == 0) { result = (char * * )realloc(result,sizeof(char *)*(count+2)); result[0] = count; result[count] = p; result[count+1] = NULL; return result; } /*分配临时字符串空间*/ temp = (char * )malloc(sizeof(char)*(pos - p+1)); memset(temp,0,sizeof(char)*(pos - p+1)); /*设置头指针,以便赋值时使用*/ tt = temp; while(p<=pos) {

一种新的车牌图像字符分割与识别算法

微电子学与计算机2007年第24卷第2期 1 引言 智能交通系统(ITS)是一个热点研究领域,受到日益广泛的关注,车牌识别是其重要组成部分。对行驶车辆的牌照进行自动识别,从而完成自动收费、无人停车管理等,这无疑节省了人力、物力,同时提高了交通管理的效率。车牌识别系统主要包括四大部分,如图1所示。在准确定位车牌后,字符分割的好坏对字符识 别率起着至关重要的作用。由于处于实际环境中,受天气、光照、观察点的影响,经定位后的车牌还是存在各种各样的噪声。因此,必须对图像进行预处 理,以改善图像质量,提高字符识别率[1 ̄3]。 2面向字符分割的图像预处理 2.1光照不均校正与对比度增强 车牌不可避免的存在噪声,而且由于车牌识别系统在室外24小时工作,光照度大范围变化,也存在光照不均,亮度太低、对比度太小等情况,这些都会降低系统的字符识别率,因此需要采取去噪,光照不均校正和对比度增强等措施。本文应用中值滤波滤除噪声,通过低通滤波获得图像背景的照度估计,再从原始图像中减去此照度来校正光照不均[4],然后通过对比拉伸变换增强对比度[5]。2.2二值化分割 由车牌定位得到的车牌字符图像一般为彩色图或灰度图,为方便后面的字符分割和识别要先对图像进行二值化处理, 二值化的好坏直接影响到后 一种新的车牌图像字符分割与识别算法 陈振学1,汪国有1,刘成云2 (1华中科技大学图像识别与人工智能研究所图像信息处理与智能控制教育部重点实验室,湖北武汉430074) (2武汉科技大学信息科学与工程学院,湖北武汉430081) 摘要:提出了一种新的字符分割算法,该算法利用由中间向两端搜索的方法确定字符的上下边界,且利用一维 循环清零法及先验知识垂直分割得到单个的字符。实验结果表明,该算法较好的解决了以上问题,适用于各种质量的车牌图像,分割的正确率较高。 关键词:智能交通系统;字符分割;投影特征;先验知识中图分类号:TP391.41 文献标识码:A 文章编号:1000-7180(2007)02-0042-03 ANovelAlgorithmofCharacterSegmentationinLicensePlatesRecognition CHENZhen-xue1,WANGGuo-you1,LIUCheng-yun2 (1InstituteofPatternRecognition&ArtificialIntelligence,StateEducationCommissionLaboratoryforImageProcessing &IntelligenceControl,HuazhongUniversityofScienceandTechnology,Wuhan430074,China) (2CollegeofInformationScienceandEngineering,WuhanUniversityofScienceandTechnology,Wuhan430081,China)Abstract:TheLPR (LicensePlateRecognition)systemconsistsofthreesteps:licenseplatelocating,charactersegmen-tationandcharacterrecognition.CharactersegmentationisanimportantstepinaLPRsystem.Therearemanyfactorsthatcausethecharactersegmentationtaskdifficult,suchasimagenoise,plateframe,rivet,spacemark,platerotationandilluminationvariance.Thispaperpresentsanewalgorithmforcharactersegmentation.Firstly,characterstop-bottomedgescanbeobtainedbysearchingfrommiddletoend.Andthen,thesinglecharacterscanbesegmentedusingone-dimcycleclearingandpriorknowledge.Theexperimentresultsshowthegoodperformanceofthesegmentationalgo-rithm. Keywords:ITS;Charactersegmentation;Projectionfeature;Priorknowledge 收稿日期:2005-10-24 基金项目:总装备部基金项目(51401020201JW0521) 42

车牌字符分割

图像处理包括图像二值化、车牌定位、字符分隔、字符识别。每一步都关系系统成功与否以及好坏。如果图片二值化不好就不方便车牌定位,如果定位的车牌图片不准确就谈不上字符的切割,字符图片切割不好就难以识别。这些应该很好理解,可见成员之间需要很好的默契。而我负责了图像处理中的字符分隔模块,起初我不知道位图形式以及如何读取位图,可见我获取信息的主动性和能力并不好。非常感谢其他组员提供了读取位图像素数据的相关方法,才能使我能放心去思考切割的算法,而不必去担心如何获取数据的问题。我使用了一种字符像素横向和纵向扫描的算法,得到字符在横向和纵向的像素分布波形,通常是缓慢的连续变化,车牌越模糊,变化越缓慢。自然,波峰是字符区,波谷是字符间的空隙区。它们的分界点并不明显,必然需要找到介于波峰与波谷之间的一个阀值,将波形变成01直方波形。那么阀值自然是个关键,如果定得不准,就可能切不出所有字符,这是我之前遇到的问题,那时我固定了阀值,使它介于平均波峰值和平均波谷值之间的某个固定点,但这通常只能切割出模糊图片的部分字符,因为有些波峰和波谷并没有被切分开来。于是我采用了另一种策略,即使用动态扫描,从最小的波谷扫到最大的波峰,并不断计算切得的波峰数量(实际就是字符数量)。然后判断这个切割数是否符合实际车牌上的字符数量,如果符合,可以停止扫描,切割位置可以明确定在波峰和波谷的变化点上。当然,我进行了各种优化,比如更多判断来排除各种车牌边框等干扰。在DOS窗口上经过反复的数据显示测试,终于得到了非常不错的字———————————————————————————————————————————— (1)利用字符像素XY方向扫描; (2)分析波形; (3)动态指定阀值; (4)获得01分布; (5)判断波形变化次数; (6)去干扰; (7)获得切割位置; 时间有限,有不完善之处可以去本人博客提问: https://www.doczj.com/doc/2a10194796.html,/flashforyou #pragma once #include #include //数学函数库 #include #include #include #include "stdafx.h" #include #define WIDTHBYTES(bits) (((bits)+31)/32*4) ///////////////////////////////////// typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned long DWORD; typedef long LONG;

投影法分割字符 网上找到的

%计算车牌水平投影,并对水平投影进行峰谷分析 histcoll=sum(sbw2); histrow=sum(sbw2'); figure;subplot(2,1,1);bar(histcoll);title('垂直投影(含边框)'); subplot(2,1,2),bar(histrow);title('水平投影(含边框)'); figure;subplot(2,1,1);bar(histrow);title('水平投影(含边框)'); subplot(2,1,2);imshow(sbw2);title('车牌二值子图'); %对水平投影进行投影分析 meanrow=mean(histrow); minrow=min(histrow); levelrow=(meanrow+minrow)/2; count1=0; l=1 for k=1:hight if histrow(k)<=levelrow count1=count1+1; else if countl>=l markrow(l)=k; %上升点 markrow1(l)=countl; %谷宽度(下降点至下一个上升点)l=l+1; end count1=0; end end markrow2=diff(markrow); %峰距离(上升点至下一个上升点) [ml,nl]=size(markrow2); nl=nl+1; markrow(l)=hight; markrow(l)=count1; markrow2(nl)=markrow(l)-markrow(l-1); l=0; for k=1:nl markrow3(k)=markrow(k+1)-markrow1(k+1); %下降点 markrow4(k)=markrow3(k)-markrow(k); %峰宽度(上升点至下降点)markrow5(k)=markrow3(k)-double(unit16(markrow4(k)/2)); %峰中心位置end %去水平(上下)边框,获取字符高度 maxhight=max(markrow2); findc=find(markrow2==maxhight); rowtop=markrow(findc); rowbot=markrow(findc+1)-markrow1(findc+1); sbw2=sbw(rowtop:rowbot,:); %子图为(rowbot-rowtop+1)行 maxhight=rowbot-towtop+1; %字符高度(rowbot-rowtop+1)

数字视频中文字分割算法的研究

万罡周洞汝崔永毅傅华胜 (武汉大学计算机信息学院,武汉<#""=!) 摘要文章对三种文字分割算法,包括基于阈值的二值化算法、基于分裂/ 合并的算法和基于纹理的算法,进行了分析、实验与评价,最后提出一种边缘检测— —投影— —局部区域二值化的文字分割算法,并给出与前面一些算法的比较。关键词文字分割阈值分裂/ 合并边缘检测 文章编号0""!6>##06(!""#)"!6"0"#6"#文献标识码? 中图分类号@A#B0 !"#$%&’"()*+,&-."(/&0 1)2"!),/)’"3".&’.’4.,."3+5.$)& 63’73’,8(&’,-#9#. :&’,%.;#<#3=()’, (C)D’:,&)+,.E F.&D G,):*H-)+H),I G8’+J+-K):;-,L,I G8’+<#""=!) *>="-3?":%+,8-;,8);-;,,8:))M-EE):)+,’5(.:-,8&.E,)N,;)(&)+,’,-.+,-+H5G M-+(,8:);8.5M6O’;)M’5(.:-,8&,;D5-,,-+(/ &):(-+(O’;)M’5(.:-,8&’+M,)N,G:)O’;)M’5(.:-,8&,’:)’+’5L P)M’+M)K’5G)M,,8)+,,8)’G,8.:;O:-+(’+)EE-H-)+,,)N, ;)(&)+,’,-.+’5(.:-,8&’;E.55.Q,E-:;,,’+)M()M),)H,-.+ R D:.S)H,-.+O’;)M&),8.M-;G;)M,.(),,)N,:)(-.+;,;)H.+M,,)N,:)(-.+;’:);)(&)+,)M OL ,8:);8.5M6O’;)M&),8.M$ @)%A&-$=:@)N,;)(&)+,’,-.+,@8:);8.5M,*D5-,,-+(/ &):(-+(,T M()M),)H,-.+ 文字分割的本质是图像分割(%&’()*)(&)+,’,-.+)。图像分割是计算机视觉领域中极为重要的内容之一,是实现自动图像分析时首先需要完成的操作。它是根据图像的某些特征或特征集合的相似性准则,对图像像素进行分组聚类,把图像平面划分为一系列“有意义”的区域,使其后的图像分析、识别等高级处理阶段所要处理的数据量大大减少,同时又保留有关图像结构特征的信息。尽管对图像分割算法的研究已有几十年的历史,依据各种理论,至今已提出了上千种类型的分割算法,但是它们大都是针对具体问题的,目前还没有通用的分割理论和算法。下面将对三种文字分割算法,包括基于阈值的二值化算法、基于分裂/ 合并的算法和基于纹理的算法,进行分析、实验与评价,并提出一种边缘检测— —投影— —局部区域二值化的文字分割算法。有关,则所得的阈值是与坐标相关的(即动态阈值,前两种阈值对应可称为固定阈值)。 以上对阈值分割方法的分类思想是通用的。近年来,许多取阈值分割方法借用了神经网络、模糊数学、遗传算法、信息论等工具,但这些方法仍可归纳到以上三种方法类型中。 0$0阈值的灰度图像二值化 在利用单阈值方法来分割灰度图像时一般都对图像有一定的假设。最常用的模型可描述如下:假设图像由具有单峰灰度分布的目标和背景组成,且目标和背景象素在灰度值上有很大的差别。对于这类图像,它们的灰度直方图基本上可看作是由分别对应目标和背景的两个单峰直方图混合而成,可以把双峰之间的谷点作为阈值!,对图象作以下二值化处理: ’(#,$)3!0 若%(#,$)!!(! " 若%(#,$)"! 0 基于阈值的二值化算法 在基于阈值的灰度图像分割算法中,确定阈值是关键。阈值一般可写成如下形式: 对于某些新闻视频中的标题新闻、影视片名或演员表等它们的背景一般比较简单,可以采用单阈值分割方法。但是,大多数视频中的文字都有较复杂的背景,反映在其灰度直方图上 !"!1#,$,%(#,$),&(#,$)2(0)将出现多个峰谷,此时若采用单阈值的分割方法则无法将文字 其中%(#,$)是在象素点(#,$)对处的灰度值,&(#,$)是该点邻域的某种局部性质。换句话说,!在一般情况下可以是(#,$),%(#,$)和&(#,$)的函数。借助式(0),可以将阈值分割方法分成如下三类: (0)如果仅根据%(#,$)来选取阈值,所得的阈值仅与各个图像象素的本身性质相关(即全局阈值); (!)如果阈值是根据%(#,$)和&(#,$)来选取的,所得的阈值就是与(局部)区域性质相关的(即局部阈值)。 (#)如果阈值除根据%(#,$)和&(#,$)来选取外,还与(#,$)从背景中分离出来。为此,作者尝试采用多阈值方法将所有的峰都分离出来,如果灰度图像中的文字所占的象素的灰度值相近且与图像中其他目标的灰度值不同,则必然有一个被分离出来的峰对应于图像中的文字目标。 基于局部阈值的二值化算法 0$! 基于局部阈值的方法通过定义考察点的领域,并由邻域计算模板来实现考察点灰度与邻域点的比较,较全局阈值方法有更广泛的应用。其中典型的局部比较方法有4’&)5678’.算法和9):+;)+算法等。与4’&)5678’.算法相比,9):+;)+算法的 作者简介:万罡,男,0B=U年生,湖北荆州人,硕士研究生,主要研究方向:图形图像处理及多媒体技术。周洞汝,0B#B年生,教授,博士生导师,主要研究方向:图形图象视频压缩,V%*应用技术等。

相关主题
文本预览
相关文档 最新文档