2008年9月29日星期一

徐家骏:我在华为工作十年的感悟

徐是华为数据中心的头,技术超级牛人,一级部门总监,华为副总裁,年收入过千万,数据中心是用火山岩建的深入地下的一个大型建筑.防辐射,可防卫星的电子,雷达等手段的侦察.里面有象卫星发射中心那种超大屏幕,机房里满是三米的大型服务器和大型计算机.连接整个华为全球的每一台终端,整个华为每天三十多万封邮件,海外和全球的同步研发,内部的信息管理,内部流程,华为的国内国际IP电话都是通过出去.

上周,我正式提交了离职报告,准备给自己的职业生涯一个很大的转折,这是我长时间的思考最后所做的决定.但真的提出离职后,回想在公司的十年,还是百感交集.

1997 年7月16日,我只身提着一个包从深圳宝安机场下飞机,走出机场,天是那么蓝、白云那么低、空气那么潮,仰头望天,对这个城市,对公司、对即将开展的工作和生活、对自己的前途一片茫然.到了科技园,发现是个荒凉而偏僻的地方,不过倒很安静,上学的几年中,一连串的打击,使得我似乎有点喜欢这种安静、荒凉、在他乡的感觉.现在想想,经过十年的工作,自己的心灵真是麻木得可以了.那时候的心里,好像时时有些什么没有着落的东西在激荡,但又说不出来,只有在听德沃夏克的《自新***交响曲》时,才发现多有深处的共鸣以至落泪.

由于没赶上大批应届生的接待,我是自己一个人来到科技园1号楼的,干净整洁的大楼,很帅很靓的保安和前台,进进出出精神饱满的员工,让人的心情为之一振. 象没头苍蝇一样乱走了一会后,一位人力资源的大姐,很职业、热情、耐心的告诉了我入职手续如何办理,并安排我当晚在粤海门华为之家临时居住,又安排之后的宿舍事宜,在举目无亲的异乡让人倍感亲切,至今记得.

来深圳、来华为当时确实是一种机缘,96年华为名气并不响,特别是在行业之外,偶尔一次我在同学家里看到一张华为人报,有几片文章印象至今很深:一篇是周劲写的欧洲考察心得,讲欧洲一个20-30人的小公司,所具有的那种全球化运作战略、能力和气度.一篇是唐东风写的被评为杰出员工受表彰后的感想.还有一篇名头很大“中央研究部知识产权处”,当时被这个名头吓了一跳.文中讲到华为当年研发累计投入1.8亿人民币,更让我吓一个跟斗.我想当时清华大学一年科研经费也就1亿多点,这家公司什么来头,花的科研投入比清华还多?当时就有了兴趣.

快毕业的时候,连连受挫,找工作跟当年大部分同学一样,希望留北京,但连续被联想、方正、科海、卫通等当时大名鼎鼎的公司录取后又告知要交几万块钱才能解决户口问题之后,想到了还有华为这样一家公司,给人力资源部寄了一份简历.没几天,一个深圳的电话,说某年某月某日有个副总裁来北京,面试一下.抱着试试看的态度跑过去了,是公司原副总胡红卫,他基本上没有问我什么问题,到是介绍了一下华为的情况,然后把人力资源经理田景琦叫了过来,当场就给了我一个“录取通知函”和入职操作指导.我一肚子犯嘀咕,这是不是一家骗子公司?怎么这样就算面试通过了?连工资有多少都没有机会问.之后一直到报到前,都有点怀疑, 幸好有个本科的同学,在华为工作过,在向他咨询后了解到公司还是实实在在有的,才下了决心过来.总的说来,就是被一张华为人报“骗”来的.

就这样懵懵懂懂到了华为,一开始新员工培训,纪律严明、严格,班车不会多等半分钟,之后是部门培训,大量的信息扑面而来.之后到了工作岗位上,给我分配的工作是ERP系统管理员兼DBA,虽然以前也搞过一些大系统,如兼职做过印度人的大型银行软件的客户化开发,但见到我们的ALPHA 8200和我们的软件ORACLE,心里还是激动不已. IT的发展一日千里,10年前的技术与今天比,很多人可能没有体会了.那时比较落后,很多人也没有机会接触这种当时很先进的系统.我见到我们居然有2G巨大内存的“超级服务器”当时实在是佩服不已,为自己能做它的管理员而自豪,又为自己将来能不能玩转它而焦虑.我师傅王忠宁见到我就撂给我一本书《ORALCE ADMINISTRATOR GUIDE》,一寸半厚的英文书,愣是一周之内从头到尾看完并写了厚厚的读书笔记和一大堆不懂的问题,自此再也不怕厚厚的英文书.

当时正好是公司ERP上线没多久,业务正在推行,系统极不稳定,每天的并发程序有一半是跑错的,系统还会动不动 CRASH.我看完一本书后,在刚刚成为 One Book Man时,问题单就来了,有一个重要的××引入程序有时候跑得出来,有时候跑不出来.说实话,那时候对ERP、ORALCE、操作系统一切几乎还是一头雾水,而问题却已经传过来了,只好硬着头皮,摸索了好半天,终于明白了有一批数据在倒的时候,系统准出错.几万条数据,一条条试是不可能的,我就想出了用二分法,一批一批的试,完全手工动作,笨拙、费时、费力,做了几十遍,花了整整一天中午饭都错过了,终于定位到了其中一条数据,而后发现是数据超长而数据库定义的长度不够并且校验程序有BUG没校验出来.经过又返回去重复验证,证明找到的原因是正确的.当时真是心中大喜,几乎在完全不懂系统、不懂这个程序是做什么的、不懂程序处理的逻辑、不懂数据库的设计的情况下,把这个BUG定位出来并交回给ORACLE处理了.这是我上班后解决的第一个问题,至今我对这个问题本身还并不明白,呵呵.这让我懂得了一个道理,工作和读书不是一回事,工作是要解决问题的,是要产生结果和输出的.不管怎么样,能找到方法解决问题、能够有好的输出结果那就是成功.读书才追求的是慢慢读,读懂为止.

那时的系统,真是岌岌而可危,公司的业务高速发展,业务也不断推行,系统的负荷越来越高,但系统却不是经常宕机,就是跑得如老牛般慢.我们的技术水平和管理水平,也是与现在不可同日而语.水平不行体力补,大家兢兢业业背负责任,闯过种种难关,终于还是挺过来了.现在想想,还真是有点后怕的,稍有不慎真有可能全线崩溃.我也能理解有些大企业,为什么倒起来那么快了.现代的组织,经常是高度复杂的组织,就象生物一样,低等的蚯蚓断成两段,照样生存.而高等的人,身上戳个小小的洞可能得毙命.高度复杂的组织,就象人体一样,内部小小一块地方如果出关键问题了,组织可能崩溃.要保证不崩溃只有两条路:1)组织本身的设计和流程的设计高度科学、冗余和足够的制度性反应机制,这是西方国家的强项,他们的公司历一百年不倒,是有强大的内在因素的.2)依靠组织内每一个最小单元的高度的负责、警觉.虽然我们多年来一直在强调第一种能力的培养,但我们天生缺少这样的土壤和基因,因此第二种能力变得十分重要,虽然这不是最好的办法.

头两年的工作中,我们水平很低,体力劳动很多,有一段时间,我一上班就得高度紧张地盯着系统,不停地干预,系统才能跑下去.一会儿系统进程死了,一会儿空闲进程多了要杀掉,一会儿表空间不够了要扩展,一会儿用户提交了不合理的并发程序要中止...有一段时间,我成了热线兼现场支持,一天接50-80个电话,接了电话到处跑.之后我们做了很多改进工作,升级了系统硬件、写了自动脚本,成立了专门的热线等等,这期间我慢慢懂得了一个道理,一个大的复杂系统要成功的管理好,没有绝招,依靠的只是一点一滴持续不断的改进和努力.

有一度由于压力过大,也使我精神高度紧张,到了比较神经质的地步,有一段时间,一听到CALL机响,甚至是电视广告里的“摩托罗拉寻呼机,随时随地传信息 ”中的BP声,我的心跳就不由自主加速,喉咙发干.有一次去香港出差,从出发开始就一直惴惴不安,生怕系统出问题,结果刚到香港住进酒店,一个电话就来了,说系统崩溃了.我立即打国际长途叫赵×赶紧去处理,过了几分钟,赵回电话绝望地说,他以最快速度赶到一号楼,进了电梯刚走到一半,喀嗒停电了,电梯卡在中间半个多小时,祸不单行,当时那种感觉真是 “农夫内心如汤煮”啊.最后过度紧张使得我想逃避,导致我提出了辞职.所幸那时候的领导袁总和郭总,开导我多次,我逐渐有所缓解,然后慢慢开始理解了什么叫大将风度.做我们这一行,要如履薄冰、但也要有点临危不惧的精神.工作紧张,但心情要避免无谓的紧张.后来我们的ERP系统、IT数据中心,又出现过多次危险情况,淹过水、着过火,而我们最终都能够化险为夷.

工作并不只有艰苦和繁琐,有时候,乐趣也不期而至.当时我们的数据库总是出ORA-1555错误,严重影响系统的运行,我多天努力、百思而不得其解.现在的管理员可能会想,这不是一个小问题吗,但那时网络还没现在这么发达,什么东西一GOOGLE都出来了,我找了大量的资料,苦苦思索,最后终于灵光一现, 象拼藏宝地图一样拼出了逻辑严密的解释和解决方案,我记得当时是深夜,内心偷着乐的感觉妙不可言,不需要别人知道、不需要别人理解,走出公司大门,仰望星空,深深吸一口气,内心偷着乐.还有另一次,当我们经过30多个小时的连续作战,解决种种问题,终于顺利升级成功ERP系统后,那种感觉也象打了胜仗的将军,充满胜利的喜悦.记得当时正是刚谈女朋友,给她写了第一封也是唯一一封情书,成为太太后,她有一次跟我说,你那玩意儿叫啥呀,那能叫情书吗?通篇都在讲你如何如何工作的,象工作汇报一样,简直可以跟鲁迅写给许广平的“情书”相媲美,尽是革命理想,没有点花前月下.....还有一次,我们的EMAIL系统突然出了故障,大量的来信收不到.那时是华为开拓海外市场的初期,海外还根本没有什么公司网络,所有的一切都是靠EMAIL和国际长途,天象塌下来一般,我们跟主管国际市场的徐直军汇报、最后向老板汇报请示是否应该报公安,因为当时的故障现象很象DDOS攻击.系统停了整整七天,我们请了各路专家,日夜攻关,试了N个方案,大家象大禹治水一样过家门而不入.最后还真找到了一个木马“冰河”的攻击,但却发现不是根本原因,故障依旧.最后一天晚上,我与阿韦坐在科技园一号楼冰冷的网络机房,看着系统一封一封的邮件,连接了,又中断了,一筹莫展,濒临崩溃.我抱着死马当活马医的心态,又祭出了我的“二分法” 体力活,测试了一封空邮件,能成功;测试了一封大邮件,失败;取其中间值,又失败;再取中间值,成功;再取前两次的中间值,成功.....一直到深夜,试了N次,终于总结出了规律!再一验证,只要在某个大小的地方,比它大的统统收不到.重要发现!然后改用PING包,发现在一千四百多字节的地方,再大就 PING不通了,现象可重复.再去想理论,如果按协议理解,这也不可能啊,即使MTU调小了,大包超过MTU也应该自动分片啊?除非是MTU在某个地方调小了,而协议又有异常.发现这个规律后,阿韦立刻跟电信联系,果然是一周前电信调整了路由器MTU并且CISCO的路由器有BUG引起.问题就此解决,当时吸了口气,那种舒坦啊!...没经受过类似极限考验的人可能不容易理解那种快乐!这种快乐是工作本身带来的,不需要别人来表扬,甚至不需要别人知道.能够有机会也能用心去体会这种快乐的人,怎么会不热爱工作?

工作也肯定不是只有成功和荣誉,有时候我也做很多蠢事和傻事,或者由于幼稚被人骗,或者是由于轻率导致工作失误.有一段时间,ERP系统岌岌可危,系统容量面临崩溃.我多次大声疾呼,几乎每一次有机会见到CIO郭总都大呼小叫一番.郭总当时刚来我们部门,一开始觉得我这个人怎么能这样?在一次部门全体会议上,郭总点名批评“徐家骏总是瞎咋呼,只会威胁我,却拿不出一个好的方案”.心里相当郁闷,但系统还在我手里,能等着它死吗?我还是一如既往的瞎咋呼,但也改进了一点,拿出了方案.郭总批准花了500多万来改进系统,这次给了我们1 -2年的稍稍太平时间,从而有机会做更多的改进优化工作.当时的500多万跟现在的概念可大有不同,现在IT花个500多万是小菜,那时500多万可是天文数字啊!当时相当佩服郭总的魄力,记得他要做大笔花钱的决策时,常说的一句话是“牛都杀了,还在乎牛毛?!”.很久以后,郭总有一次提到,徐家骏这个人工作还是蛮执着的.后来我的职位不断地得到了提升.之后我负责了很多重大的项目,往往涉及重大的投资,几百万、几千万,这些年来总共给公司花掉好几个亿. 这中间技术方案制定,也有被忽悠了的.甚至重大项目投标时,有供应商恶毒的投诉诬蔑我的事,所幸公司及领导给了我这样的土老冒充分的信任.这些事我的体会是:只要你心无旁骛,目标单纯,就是想把这个事情搞好,并且持续地、啥都不计较地、傻傻地去推动,内心无愧,一时可能会有工作失误,一时可能会得罪人,可能会有人不理解,但长远来看还是会得到公正的承认的.

公司快速发展和扩张,由于工作业绩还过得去,很快就被提拔为小主管了,一开始觉得做主管也没啥,业务的细节我都是一清二楚的,不就是多了几个人一起干活吗?有一次,IT二把手袁总说“我要参加一次你组织的部门例会,看看你是怎么做管理的 ”,没问题,在例会上,我侃侃而谈,把业务分析得透彻细致,把工作安排得井井有条,洋洋得意地结束了会议,期望着袁总能给点表扬.袁总一声不吭坐到结束, 等人都走了,劈头盖脸一顿“徐家骏,你知道这叫什么吗?这叫生产队长!农民!...”,一开始还不服气,我业务这么清楚、工作安排得这么妥当,管理能力还不行?后来,慢慢地自己也发现了问题,后来部门安排了去参加封闭4 天的管理干部培训,才算接触到了管理ABC,渐渐体会到,原来管理也是一门学问,而且大有学问.有了这个认识,后来我也时时留心.其实在华为要学习管理最简单,第一要诀是向身边的人学,华为的很多管理者,修养和能力超强,在平时和他们一起工作的一点一滴中,如果你细心去观察和体会,收获实在可以不少.比如说,有一段时间,我每周参加IT部门干部例会时,大家讲得差不多了,该由领导作判断和决策、做工作安排之前,我就会猜,领导可能会做有什么判断、会做什么决策,特别是有些事情充满矛盾和冲突,需要权衡时.一开始十猜九不中,并且很多看法别人说出来之后觉得耳目一新、不胜佩服.于是就去想他为什么会这样判断和决策,背后做的功夫是什么,慢慢地自己处理类似问题的思路也比较开阔了.另外、别人在管理中犯的错误,也是自己学习的好机会,自己犯错误自己是不容易觉察的,但别人犯错误自己可以觉察,然后可以警醒自己避免类似错误.

后来,做数据中心经理、技术支持经理、IT基建经理、系统运作副总监,变做边学,做团队管理、做考核、做流程优化,应对种种难题:如用户严重不满、工作头绪繁多流程乱来、资源严重紧张、骨干员工要离职、刺头员工提种种要求、部门骨干之间文人相轻、部门之间配合大起冲突、末位淘汰等等等等,逐渐逐渐对管理的体会越来越深,对管理的重要性认识越来越深.应对这些难题,当时真是殚精竭虑,有时甚至痛苦不堪.但我事后的体会是,凡是自己在感觉严重受挑战、整天闹心痛苦的工作阶段,往往是自己能力和心态进步比较快的阶段,而有时候工作一切都已摆平、风平浪静,可以悠哉游哉的时候,半年过去,发现自己一无所获,毫无建树,其实内心深处更加焦虑和痛苦.我后来总结过很多管理工作的要点和戒律,也总结了一句话,叫做“成功人士就是经常成功地跟自己过不去的人士”.

2003年下半年,数据中心建成后,IT运作这一块,在多年的岌岌可危之后,终于有点风平浪静的意思了,为了“跟自己过不去”,其实也是为了自己的兴趣, 我向领导申请去信息安全部并得到了批准.当时业界还处在冬天时期,华为在冬天时期,不但面临竞争对手的威胁,更严重的是面临内部的威胁,屡屡爆发的重大产品、商务信息泄密,给公司造成了重大的损失,信息安全形势十分严峻,也触发了公司最高领导层对信息安全工作的超级重视.信息安全工作是是一个基本纯防守的工作,防守战线太长太长,整个系统的防守强度取决于最薄弱环节,而攻击者却可以集中资源,只要攻其一点即可.我到信息安全部,发现我们的管理体系、政策体系经过几年的努力,已经有一定的建树,而技术方面的能力却是很薄弱的环节.因此,重点在此方面开展了工作.几年之内,我们部署了很多防护系统,也培养了一批人,在我离开信息安全部时,整体上应该讲有了较大的改变.

调到信息安全部工作期间,其实给我最深的体会是跨部门的合作,在原来部门时,信息安全部也经常来“烦”我,我的反应经常的是排斥和不满,到了信息安全部后,变成经常是我得去“烦”别人,并且我们部门是特别讨人“烦”.如何取得他人的合作?是一直来磕磕碰碰的难题.比如 SPES开发和推行这个大项目,要 “烦”的人实在太多了:数据中心、网络部、PC、海外IT、研发信管办、销服信管办、采购、发货、进出口部、物流、各国代表处、公司各级领导、最终用户等等.在不断地“烦”人的过程中,我总结出了一套“合作方法论”,有很多道道,不过最终总结起来,一句话简单说就是“如果你总是抱怨别人跟你不合作的时候, 问题一定是出在你自己身上.”

03年底,当时业界连续几次蠕虫的发作,部门几个技术人员一直在讨论如何搞一个方案对付这个问题,我们设想了种种可能性,最后部门技术大牛季昕华提出一个设想:把客户端的软件和网络上的设备联动起来来控制蠕虫,并且做了一个很有意思的胶片,把对付SARS的手段用来对付蠕虫了.我一下子被这个新颖的设想所吸引,后来我在此基础上与大家多次讨论进一步扩展了概念,提出了策略强制系统的概念.为了让我们的设想能够付诸现实,我在部门其实并未授权的情况下,偷偷搞了几个人,花了半年时间把POC系统做了出来. POC系统刚出来,我们就听到了CISCO在04年中发布了其SDN/NAC产品概念,跟我们的思路非常接近,这给了我们很大的信心,后来我干脆主动请缨,放弃其他管理事务,全职投入到组建一直开发队伍,开发SPES产品中去.最终我们产品开发成功了,在公司全球100多个国家6万多员工大规模的推广也成功了,并且在公司内部良好运行至今.这件事给我最大的启示是:我们要有信心、要敢做,CISCO并不可怕.说老实话我们是一支很土八路的队伍,也不属于公司的研发体系,我们这支土八路的队伍,坐了2年冷板凳,磨啊磨啊,最终还真磨出来一个还不赖的东西. 2004年底,在磨出来这个东东之后,我们又开始张罗产品认证、组织市场活动、策划定价及销售策略、寻求多方合作、建设支持体系等,在我们经过艰苦的市场拓展,客户已经开始广为感兴趣并已经形成几单实际销售的情况下,公司由于政策问题,为了确保资源最大限度投放到公司内部工作以支持公司海外市场的大发展, 叫停了我们真正做成对外销售的产品,虽然我理解公司的大方针,但这个决定还是让我非常痛心,否则我相信今天这个产品很有可能已得到更大的发展.前不久我去北京出差,跟一个公司产品的代理商偶尔聊天,他不知道我是SPES的主要负责人,大大的吹了一通我们的东东并很惋惜为什么不卖,不禁让我又喜又悲.

转眼工作十年了,在华为的十年,正是华为从名不出专业圈子到现在成为路人皆知的大公司,高速发展的十年,见证了公司多年的奋斗历程.也投身其中,在大潮中边学边游泳,走到今天.现在我要离开公司了,准备去开始新的事业,接受全新的挑战,我将要去做的事情,风险很大,很有可能是九死一生,九死后还能不能有一生,也难说.在开始新的事业之前,想起了对过去的十年做个一个详细的总结.在一个象华为这样高速发展的大企业工作,有时是一种炼狱般的锻炼,如果我能够总结十年的经验和教训,从中学到关键的做事、做人的道理,我想对将来一定大有益处.

这些年来有些人离开公司,写一些东西或书,对公司指手画脚、评头论足、指点江山,对公司的高层领导逐个点评一番,我个人感觉除了带来一些娱乐价值,还有什么益处呢?公司照样在发展,发展的背后,6万人种种梦想、努力、贡献、牺牲、奋斗、抱怨、不满、沉淀、离去、希望、失落;发展的背后,种种机会、重大决策、危机、失误等等的内在逻辑又岂是局外人说得清楚?我不想多说公司,只是想对自己的工作经历好好反思反思,想想自己做了什么努力,做了什么贡献,做了什么自己最高兴、做了什么自己最受益、学到了什么?总得说来,我在华为的十年是懵懵懂懂过来的,当初我好像没有什么远大的理想、没有详细的规划,只是想着把一件一件事情做好.通过自己的总结和反思,将来我希望自己能够更加有规划、更加清晰一点.

大概想了想,我觉得有以下几点,是这些年深有体会的经验和教训,值得今后再发扬.

一、 “从小事做起,学会吃亏,与他人合作”,这是研究生毕业前最后一堂课,电子电路的老师最后送给我们几句话,虽然我忘了这位老师的名字,但这几句话却至今铭记.在华为的工作实践,越发感受到这简单的几条的道理深刻.从小事做起不是一直满足于做小事,也不是夸夸其谈好高骛远.学会吃亏不是忍受吃亏,是不斤斤计较于一时一地的是非得失,是有勇气关键时候的放弃.

二、“心有多大,舞台就有多大”,我们很多的成功,来自于敢想,敢做,就象我第一次接到问题单,根本不懂,但敢去试,敢去解决,还真的解决了;就像我们做 SPES,即使没人、没技术、没积累,还有CISCO等大公司也在做,我们也敢做,敢推行,不盲目崇拜或畏惧权威,也取得了成功.当然,这不只是盲目的胆大,心大还意味着积极地关注广大的外部世界,开阔宽容的心胸接受种种新鲜事物.

三、 “好好学习,天天向上”,这句话用来形容对IT人的要求,最贴切不过了.真正的成功者和专家都是“最不怕学习”的人,啥东西不懂,拿过来学呗.我们 IT 现在有个技术大牛谭博,其实他不是天生大牛,也是从外行通过学习成为超级专家的,他自己有一次跟我说,当年一开始做UNIX系统管理员时,看到#提示符大吃一惊,因为自己用过多年在UNIX下搞开发都是%提示符,从未有过管理员权限.看看专家的当初就这水平!当年跟我做备份项目时,我让他研究一下 ORALCE数据库时点回退的备份和恢复方法,他望文生义,以为数据库的回退是象人倒退走路一样的,这很有点幽默的味道了,但他天天早上起来,上班前先看一小时书,多年积累下来,现在在系统、数据库、开发等多个领域已成为没人挑战的超级专家了.但是,学习绝对不是光从书本学习,其实更重要的是从实践工作中学习,向周边学习.比如说我在华为觉得学到最重要的一个理念是“要善于利用逆境”,华为在冬天的时候没有天天强调困难,而是提出“利用冬天的机会扭转全球竞争格局”并真的取得成功,如果没有这个冬天,华为可能还要落后业界大腕更多年份;华为在被CISCO起诉时没有慌乱,而是积极应对,利用了这次起诉达到了花几亿美金可能达不到的提高知名度的效果.等等这些,把几乎是灭顶之灾的境遇反而转化为成功的有利条件,对我留下的印象十分深刻,也对公司高层十分佩服.

四、勇于实践,勇于犯错,善于反思.很多事情知易行难,关键是要有行动,特别是管理类的一些理论、方法、观念.空谈、空规划一点用处都没有,不如实际把它做出来,做出来后不断反思改进,实实在在最有说服力.没有实践中的反复演练和反思,即使是人人皆知的东西要做好都其实不容易,举个小例子,比如做管理者要会倾听,我想华为99.9%的管理者都很懂这一点,但实际做的如何呢?华为有多少管理者做到了不打断别人讲话?不急于下结论给定义?不急于提供解决方案? 有多少管理者能够做到自然地引导对方表达?问问对方感受?确认自己明白对方?

五、要有方法、有套路,对问题系统思考、对解决方案有战略性的设计.在前几年的工作中,由于取得了一点成功,技术上也有了一点研究,就开始夜郎自大起来了,后来公司化重金请来了大批顾问,一开始对有些顾问还真不怎么感冒.后来几年公司规模越来越大、IT的复杂性越来越增加的情况下,逐渐理解了很多.西方公司职业化的专家,做任何事情都有方法论、有套路,甚至于如何开一个会都有很多套路,后来我对这些套路的研究有了兴趣,自己总结出了不少套路并给部门的骨干培训和讨论.在一个复杂的环境下,很多问题已经不能就事论事来研究和解决,非常需要系统性的方法和战略性的眼光.对于一个组织的运作来讲,制度和流程的设计尤其需要这一点.爱恩斯坦说过: We can't solve problems by using the same kind of thinking we used when we created them.

六、独立思考,不人云亦云.公司大了,人多了,混日子也容易了.人很容易陷入随波逐流、不深入业务的境地,而看不到问题和危险.专家有过一个研究,雪崩发生时,一般受害者都是一批一批的,很少有单个人的受害者,原因很简单,单个人在雪崩多发地会相当小心和警觉.但一个群体,群体越大,每个个体就会有一种虚幻的安全感和人云亦云的判断,但现实是不管群体的力量有多大,雪崩都是不可抵抗的.因此我觉得在大的机构里,保持独立思考的能力尤为重要.

七、少抱怨、少空谈、积极主动,多干实事.我曾经是个抱怨很多的愤青,经常容易陷入抱怨之中.但多年的工作使得我有所转变,因为知道了抱怨是最无济于事的.世界上永远有不完美的事情,永远有麻烦,唯一的解决之道是面对它,解决它.做实实在在的事情,改变我们不满的现状,改变我们不满的自己.实际上也有很多值得抱怨的事情都是我们自己一手搞出来的,比如社会上很常见的是高级干部退下来了,抱怨人心不古、感慨世态炎凉,如果好好去探究一下,原因很可能是他权位在手春风得意时不可一世、视他人如粪土造成的.

八、对职业负责、对目标负责,对自己负责,成功者往往自觉自律、信守承诺、心无旁骛.大企业肯定会有绩效考核、会有论功行赏、会有KPI、会有领导指示、甚至会有一点企业政治,但如果我们片面地追求考核成绩、片面追求KPI指标、片面追求权钱利益,片面地对上负责、对别人负责,而不对自己负责、不对自己的目标负责,失去工作的使命感、责任心、热情和好奇心,必将不能达到自己的最佳境界.而一个企业如何能够成功营造一个环境,让每个个体尽量发挥到最佳境界, 企业也会战无不胜.

九、多点人文修养和审美情趣,看起来与工作不怎么相关,其实太相关了.杰出成就的取得离不开对美的境界的追求,最伟大的科学发现,往往蕴涵着秩序、简洁和美.缺乏一点审美的追求,什么UGLY的事情都敢做、不择手段、凡事凑合,一点都不“高雅”,必将不能长久.

十、 “大家好,才是真的好”,关注人,帮助人,真诚待人,厚道做人.快速发展的现代社会,由于媒体的作用,过分渲染了人与人之间日益冷漠、诡诈的关系,但实际的社会、社区可能真的不是那么回事,起码我来华为之前,对一个大企业中工作的人事关系开始还有点未知的恐惧,但实际上在这个集体中的感觉几乎人人都能开放、真诚相待,关系融洽和谐.所以关键是我们自己要能够真诚对待他人,在与他人互动中将心比心.当然,工作中的冲突是不可避免的,实际上冲突也是没有必要去避免,甚至很多冲突对组织来讲,是大有益处的.就象夫妻吵一架后感情往往更好.只要我们掌握两大原则:1)对事不对人,2)与人为善.就肯定能把适度的冲突引导到对自己、对组织都有利的方向.

十一、开放和分享的态度,在一个高科技公司工作,如果报着保守和封闭的心态,成长肯定会受阻.

十二、做好时间管理.在华为工作十年,3650天,工作日3000天左右,这些时间是不是花在最重要的事情上了,有效的、有产出的工作时间究竟有多少,实在值得怀疑.时间管理是我在华为工作当中最大的教训之一,可能也是公司整体性的问题,工作缺乏计划,经常是面临不断的被打断;或者是不断去打断同事下属; 或者是不断的会议、讨论,占去绝大部分的时间;或者是被自己的兴趣所牵引,花大量时间搞一些不着边际的事情;或者是花很多时间在一些细枝末节的事情上,把很难很重要的事情一直拖到非解决不可的地步然后被迫仓促行事.现在回想,如果真的能管理好这十年时间,我觉得成就应该大很多.

在华为的十年,还有一笔最宝贵的财富是结识无数优秀的同事、朋友,他们给予我很多启发、给予我无私帮助,要感谢无数给予过我帮助、启发的人:

首先感谢我的师傅王忠宁和二师傅祈宇,是他们带着我走上了工作岗位的第一步并真诚地帮助我.或许是由于左手有六个手指头的缘故,师傅个性偏执,牢骚满腹, 与很多人合不来.但我跟他一年多,一起抽烟、一起在冰冷的机房喝冰冷的可乐、一起发牢骚、一起到路边小摊吃炒米粉,无话不谈,成了最好的朋友,他对自己的事情高度负责的精神和刚直的个性给了我深深的感染.他终身未婚,在99年不幸患肝癌离世.去世前几天,我去医院看他,给他送了一朵鲜红的玫瑰花,希望他能够把花献给他喜欢的、住院期间给他很好照顾的护士,他非常高兴.

感谢我的老领导许总,刚到部门时他给我们做ERP培训,我们班上所有的人都皱着眉头很痛苦,因为都听不懂他的诸暨话.而我大喜,因为我也是浙江诸暨人.作为公司元老级人物,许总这么多年来工作激情丝毫不减,让人佩服;许总经常骂我们,甚至狗血喷头,但他也是最经常请我们吃饭的领导,点菜的水平很高,酒德很好...也感谢曾经作为我领导的郭总、袁总、李总、胡总、洪总、周总、陆总、付总等,他们给予我太多机会、给予我太多宽容,我从他们身上也学到很多很多.

感谢太多同事和下属,不管是还在华为或者已经离开的,曾经为了支撑我们的工作目标,他们承担太多压力、默默付出太多.科技园我们的机房值班人员邓迅雷,天天晚上彻夜坐在冰冷而空气不好的机房里,为了防止老鼠咬断网线,想了种种办法捉老鼠.周振惠老婆在医院生孩子,他却半夜在公司加班处理自动仓库的紧急问题.EMAIL系统出问题内存泄漏,在找到根源之前,向阳连续2天24小时坐在电脑前监视和及时重启服务.WDGL服务器几百G数据全部丢失,沈勇偷偷摸摸、吭哧吭哧折腾了半个多月,借信用卡从美国自费买了软件,最终终于把数据恢复回来,避免了一场IT的灾难.SPES开发组,一开始基本是在师出无名失败风险极大的情况下,成年累月日夜奋战,幸好后来胡总力排众议鼎力支持,才终于搞出来一点土土的东西.SPES在海外实施时,柯晓宇在埃及去机场遇车祸,清醒过来第一反应是赶紧再找车去机场,否则误机了耽误下一个地区的实施.吴橹晓楠等人,瞒着家人和老婆,抢着要去伊拉克,还以为那儿可以搞支AK47 玩玩.孙颖单身女将,独闯欧亚诸国,李晶顾磊在孟加拉上吐下泻,打电话回来说话的力气都没有,照样圆满完成超出预计复杂度的任务.还有小宋、小曹、周讯、老翟、老刘、家汉、牟头、老叶、陈君、伏朝阳、李斌、小麦、张华彦、齐燕英、鲁飞、闵朋、曾宇斌、邓湛、钟美琴等等等等……,一回忆太多太多扑面而来,真是不能一一列举.

感谢我们部门所有默默无闻、给予我们无数帮助的秘书MM,小吴、小关、梁、沈、肖、王、龙等等,特别感谢我97年刚到公司时的秘书李丽东,做事雷厉风行, 我新员工刚报到时用一台电脑没多久,有个老员工过来说这个电脑是他的,他要拿走.我赶忙向许总求救,许总听完我的汇报后,抬起头:“嗯&@$# %,我们部门的电脑怎么管理怎么这么混乱?必须加以改进了!”之后一时没下文,我也不知道怎么办,灰溜溜回到了座位上发愁,看到小李起身慢慢走到那个老员工前面,劈头盖脸狂骂一顿,不知道说了些啥,走回来时,拍拍我肩膀“徐家骏,搞定了”.当时我对她崇敬不已,简直须仰视可见.之后有一天,她上班的时候叫我,“徐家骏,到我家去一趟”,我乐呵呵的去了,把她的一台破24寸电视机从蛇口的一端搬到了另一端的修理站,当然,这算是外出公干!

感谢若干多的供应商销售和支持人员、顾问,多年来我有时把他们逼得走头无路.DEC的罗辉、SUN的李建文、IBM的GARY、ORALCE的张力、高波等等等等,都是我崇拜的大牛,从他们我学到了很多很多.我最佩服的张力有一个本事无人能及,他能端端正正地坐着,手放在键盘上,头直直得好像在盯着屏幕, 然后睡着并且打很大的呼噜.98年我们系统从10.6升级到10.7,我陪着他一口气干了30个小时,中间偶尔等系统在跑,他就这样睡着了.我盯着系统, 一跑完就叫他,他眼睛一睁,手就开始动了,中间遇到重重难关,他都不慌不忙,很帅,很有大将风度.升级完后,我跟他去海景酒店的房间休息,我也学他,在洗澡的时候睡着了,从浴缸里咣噹摔到了外面地上,他煞有介事的冲过来“干啥干啥呢?这么大动静!”.

感谢在我喝醉稀巴烂时半夜扶我一直到家里的王涛,感谢在我发高烧一人倒在中心医院重症抢救室时前来救我的老罗、建新,老罗陪我一夜后第二天又正常来上班了,并且晚上又加班了;我一直希望自己也有他那牛一样的金刚不坏之躯.还有他太太,细致入微,给我买了各种必要的住院物品,在困难之中倍感温暖.

感谢我的父母,他们大半辈子都在极艰苦、极勤奋、又是快乐中度过,他们给了我最无私的爱,也给了我最大的宽容和自由.从初中开始,凡有我的重大决定,他们都让我自己做主.初中考高中,冒着没学上的风险,我要考县里的中学,他们支持我.考大学,他们说“清华是好的,北大是好的,科大也是好的...”,大学毕业找工作,他们说“联想是好的,方正是好的,考研也是不错的”,研究生毕业,他们说“华为是好的...”虽然他们没听说过华为,只知道是家民营企业不大保险.找老婆时他们说“这个媳妇真好...”,并且要求我不许欺负她,而不顾实际情况真好相反.

感谢我的太太,虽然欺负我,但对我的工作和所有怪念头都理解和支持,我工作太忙过,也发烧过 PDA、发烧过智能手机、发烧过钢琴、发烧过小提琴、发烧过 APPLE,有时候回家陪这些“小情人”比陪她的时间多,她都能谅解.她对金钱和名誉常常很不在乎,家庭财务也一塌糊涂.不过做事雷厉风行、执行力超强, 我刚提离职,她就以迅雷不及掩耳盗铃之势把我们的房子卖掉了.

感谢我的女儿,虽然她才不到二岁,但她带给我和太太的快乐和幸福简直难以描述.在养育她的过程中,我们自身不断学习、反思,也得到很大的提高,小孩的成长也是我们父母重新成长一次的机会,在与她互动的过程中,我觉得最主要的不是我和太太教育她,而是她教育我们,她触发了我们更好地去面对、体会、反思、感悟生活和人生,并且她也触发了我很多关于管理的深入思考,感觉育儿和管理很多方面真是很相通的.为此我还专门开了一个博客,把自己对于儿童教育、管理等的感悟记录下来.

最后感谢公司老板,给我们提供了这样一个工作平台,在这个平台上我们努力过、奋斗过、沮丧过、抱怨过、成功过、快乐过...我们从一个土老冒逐渐成长为一个职业人.真心说声谢谢!希望公司变得越来越强大,越来越成为中国人在世界上的骄傲.

2008年9月28日星期日

车牌模糊识别技术

随着计算机和视频技术的发展,车牌自动识别系统己成为智能交通系统的重要组成部分,并已广泛应用于车辆追查和跟踪、车辆出入控制、公路收费监控等领 域。完整的车牌自动识别系统由图像釆集、图像处理、模糊识别等模块组成,其中对一幅已知车辆数字图像进行预处理、车牌定位、二值转换、车牌分类、车牌分 割、字符识别、结果优化的过程简称车牌模糊识别。目前国内已有众多单位开展了车牌识别技术研发,虽然各家都取得一定的成功,但车牌识别技术本身毕竟要符合 实战要求,为此笔者综观各家实际车牌识别系统后提出了车牌识别系统的几点不足之处和改进方法,供该领域的专业人士和领导参考。

一、图像预处理
根 据三基色原理,世界上任何色彩都可以由红绿蓝(RGB)三色不同比例的混合来表示,如果红绿蓝(RGB)三个信号分别由一个字节表示,则该图像颜色位数就 达到二十四位真彩,也就是说在二十四位真彩的数字图像中每个像素点由三个字节来表示,根据数字图像水平和垂直方向像素点数(即图像分辨率)可计算出一幅图 像实际位图大小。事实上,在车牌自动识别系统中车辆图像是通过图像采集卡将运动的车辆图像抓拍下来,并以位图的格式存放在系统内存中。这时的车辆数字图像 虽然没有被人为损伤过,但在实际道路上行驶的车辆常会因为各种各样的原因使得所拍摄的车辆图像效果不理想,如外界光线对车牌的不均匀反射、极强阳光形成的 车牌处阴影、摄像机快门值设置过大而引起的车辆图像拖影、摄像头聚焦或后背焦没有调整到位而形成的车辆图像不清晰、由于视频传输线而引起的图像质量下降、 所拍摄图像中存在的噪声干扰、所安装的车牌不规范或车辆行驶变形等等。这些都给车牌的模糊识别增加了难度,在现有的技术条件下任何优秀、先进的车牌识别软 件也是无法达到百分之百车牌正确识别率。但我们可以对车辆图像根据不同应用特点进行识别前的预处理,尽最大可能提高车牌正确识别率,这些图像预处理包括图 像平滑、倾斜校正、灰度修正等。

其中图像平滑的目的是为了减少图像中的噪声,一般情况下在空间域内采用领域平均法来减少噪声,在频率域内 由于噪声频谱多在高频段,因此釆用各种形式的低通滤波方法来减少噪声。空间域是指对图像像素灰度值直接运算后取代,频率域是对图像的像素值进行变换运算后 反变换取代,如傅立叶变换等。实际常用的方法是通过一个像素点和周围像素点的平均运算来去除突然变化的像素点,从而滤掉一定的噪声,当然如果釆用不合适的 图像平滑算法,则会带来图像模糊。

在道路实际行驶的车辆中,车牌在图像中往往存在不水平情况,如摄像机不在车道正中央、挂放的车牌不水平 或车辆突然变道行驶等都会使采集的车牌图像需要进行车牌倾斜校正。由于车牌的上下沿是两条明显的平行线,所以一般釆用HOUGH变换,检测出这两条直线的 倾斜角,或者利用特征投影法来检测车牌的倾斜角,然后对车牌图像进行水平校正。

灰度修正也是图像增强行之有效的方法,通常采用直方图修正 法使图像具有期望的灰度分布.水平方向为像素灰度值,垂直方向为该像素值出现的数量,根据灰色图像直方图调整图像像素值的分布范围,确保图像亮度值均匀和 平滑,同时如果直方图中存在多个峰值,则按直方图峰值计算出限定阀值,然后进行分段图像处理,由此分离出背景和噪声。当然,这种车辆图像预处理过程需要有 一定的运算时间,而对于实时车牌识别系统来说,图像预处理的时间不可能太长,否则会加重内存负担,并可能丢失其它车辆图像数据。

二、 车牌定位
我 们知道车牌定位对车牌识别系统来说至关重要,在车辆图像中往往存在许多类似车牌的区域,如养路费牌、广告牌、车灯区等都容易干扰车牌的定位。常用的车牌定 位算法有(1)自适应边界搜索法利用倒L型、水平直线、垂直直线这些结构元素搜索、定位字符,然后找出符合一定格式的字符群,即认为是车牌;(2)区域生 长法是对边缘图像进行均匀性区域生长,以获得潜在的车牌区域,然后利用车牌的几何特征以及车牌区域内的边缘灰度直方图统计特征删除伪车牌,即得真实车牌; (3)灰度图像数学形态学运算法则利用车牌形状特征、字符排列格式特征,对预处理后的灰度图像进行一系列的形态学运算,得到直线与一定数目的字符相邻的区 域即认为是车牌;(4)基于字符串特征增强的分割方法釆用一种线性滤波器突出牌照区域的纹理,再釆用取阈值的方法来分割牌照区域;(5)模糊聚类法则利用 模糊逻辑系统,根据一些分类参量判别由粗分割得到的图像中不确定部分是隶属于背景还是目标,从而分割出车牌;(6)基于灰度图的车牌定位和分割法首先选取 适当的阈值用迭代法得到二值图,再根据车牌中文字笔画的垂直边缘特征做车牌定位;(7)DFT变换法是先对图像逐行做DFT变换,然后把频率系数逐行累加 平均并根据这些平均值做出频谱曲线,根据频谱曲线中的“峰”的起始点位置确定车牌水平位置,对这一水平区域逐行做DFT变换可确定车牌竖直位置。虽然上述 车牌定位算法已在实践中取得成功,但对于车辆实时监控系统来说上述方法所需的时间仍然偏长,为此我们经过大量实践后找到了基于图像差分投影法,从而将车牌 识别时间缩短到一百毫秒以内。其原理是将车辆灰色图像按水平方向求差分图,然后按垂直方向求差分,最后对差分后的车辆图像分别在水平和垂直方向投影,按照 给定的车牌尺寸范围找出可似车牌区域。

然后按照水平和垂直方向投影得出有可能的车牌区域有三个,包括两个车灯区,由于车灯区在尺寸和字符数上不符合常规车牌特征,所以即可排除,从而仅剩下唯一的车牌区域,再从灰色图像中切出真正的车牌区图像。

三、 二值转换
实 际上,在车牌定位时已经将二十四位真彩图像转换成八位灰色图像,即用一个字节表示一个像素点,而一个字节能表示256种灰度,这对提取字符特征来说仍是困 难的,需要进一步将灰色图像转化为黑白二色图像,这个转换过程就称作二值转换。常用的车牌图像二值化方法是将各个像素灰度值与一个经验值(常称阈值)相比 较,如果该值少于阈值,则灰度值取“0”(即黑色),否则为“255”(即白色).

通常根据该车牌灰色图像的直方图得到最小和最大灰度值,然后设定阈值为最小和最大灰度值的平均值,再通过这二个区域的灰度迭代出最佳阈值,该方法的具体程序见参考文献[2]P466-469页。但实际二值化需要分区进行,否则会形成字符笔画断裂和加粗等。

四、 车牌分类和字符分割
众所周知,我国车牌种类繁多,常见的车牌有民用车牌、警用车牌、军用车牌、武警车牌和个性化车牌等,按照中华人民共和国机动车号牌标准(GA36-92)规定。
从 汽车牌照的结构特点看,民用车牌最少也有八个字符,若以7×9点阵表示一个字符为例,水平方向需要7个像素点、垂直方向需要9个像素点,加上字符水平之间 必须有一定的间距,以及车牌左右和上下都有边框存在,因此车牌水平宽度在图像中所占的大小应不低于100个像素点为宜,考虑到诸如灰尘、雾、油漆剥落或颜 色变淡等缺陷对车牌的影响,用于车牌识别的最佳尺寸为水平方向不少于110个像素点、重直方向不少于15个像素点,否则容易产生车牌定位出错,即使定位出 车牌,也容易产生字符识别错误。

字符在竖直方向上的投影必然在字符间或字符内的间隙处取得局部最小值,因此字符的正确分割位置应该在上述 局部最小值的附近,并且这个位置应满足车牌字符的标准数目、字符尺寸等条件,这样就排除了在复杂环境下车牌定位错误。在水平方向上从左至右检测各坐标的投 影数值,当检测到第一个投影值不为零的坐标可视为首字符的左边界,从该坐标向右检测到的第一个投影值为零的坐标可视为首字符的右边界,其余字符的边界坐标 同理可得。通过字符的平均字宽和两字符左边界之间的平均距离去除可能存在的错误切分。对于字宽小于平均字宽一定比例(如0.2)的字符可视为无效字符;前 后两字符距离小于平均距离且此距离与字宽之和不大于平均距离,则合并之为一个字符;对于字宽大于平均字宽一定比例(如2.4)则视为两字符出现粘连,当字 符数量多于或少于车牌可能的字符数时则认为所定位的车牌无效,这就是车牌垂直分割法。

五、 字符和车牌颜色识别
1、 字符优化
按 照上述车牌定位和切割方法很方便取得单个字符图像,不过此时的字符图像也可能存在字符与边框相连、字符变形和字符断裂等情况,为此在真正识别之前需要对字 符位图作进一步的技术处理,如下图车牌二值图经水平方向腐蚀后明显有利于图像分割和识别,但对于黑底和蓝底的车牌则适得其反。常用的方法是将用于识别的字 符位图按新的点阵大小重新采样,然后搜索字符位图的精确上下左右边界值,依照字符位图的宽高值和新的边界值重新确定字符像素点,并排除非字符情况,如左右 边界值之差过小、上下边界差过小等情况即认为非字符,用“?”取代。

2、 字符类型
设定类型0为民用车汉字,包含“京、津、晋、 冀、蒙、辽、吉、黑、沪、苏、浙、皖、闽、赣、鲁、豫、鄂、湘、粤、桂、琼、川、贵、云、藏、陕、甘、青、宁、新,渝” ;类型1为英文字母,包括除“I”外的“A—Z”其他字母;类型2为数字,包括“0—9”;类型3为数字和字母,包括类型1和类型2;类型4为武警英文字 母,包括“WJ”;类型5为武警数字,包括“0—9”;类型6为警车尾字“警”字;类型7为军用车汉字,包含“甲、乙、丙、丁、戊、己、庚、辛、壬、癸、 子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥”;类型8为民用车尾字,包括“0—9、学、试、领、港”等字。按照上述字符类型设定,我们可以得到车牌 字符类型表为民用汽车{0,l,3,3,2,2,8}、武警汽车{4,5,5,5,5,5,5,5}、军用汽车{7,l,2,2,2,2,2}、警用汽车 {0,3,3,2,2,2,6}等。

3、 标准特征库
将切分下来的字符图像变换到40×40的点阵空间上,按照水平和垂直方向提 取二值特征、按照字符结构在水平、垂直、左、右四个方向的几何投影图像特征建立多维特征库,其中标准汉字从宋体字库中选取,字母及数字从OCR-A字库中 选取。对标准字符分别进行归一化、轮廓化和特征抽取,标准模板就是从中抽取特征得到的特征向量。

4、 字符匹配
字符识别方法目前 主要有基于模板匹配算法和基于人工神经网络算法。基于模板匹配算法首先把待识别字符二值化并将其尺寸大小缩放为字符数据库中模板的大小,然后与所有的模板 进行匹配,最后选最佳匹配作为结果。由于这种匹配算法稳定性较差、时间花费也较大,因此在此基础上提出了基于关键点的匹配算法。此算法先对待识别字符进行 关键点提取,然后对关键点去噪,最后再确定字符的分类。这种匹配算法只利用了字符的关键点进行匹配,因此提高了识别速度又具有较高的识别率。基于人工神经 网络的算法主要有两种:一种是先对待识别字符进行特征提取,然后用所获得的特征来训练神经网络分类器;另一种方法是直接把待处理图像输入网络,由网络自动 实现特征提取直至识别出结果。前一种方法识别结果与特征提取有关,而特征提取比较耗时,因此特征提取是关键。
笔者认为,目前依据我国车牌特点采用 模板匹配算法识别速度更快。具体做法是将待识别的字符位图提取字符特征加权值,然后逐一与该类型相关的已知字符的标准特征库加权值比较,从中选取最理想的 字符作识别结果,当该理想字符相关的特征加权值小于给定的最小经验值,则认为该字符匹配成功,当该理想字符相关的特征加权值大于给定的最大经验值,则认为 该字符匹配错误,如采用“?”取代。对于容易相混的字符需要作进一步细节区分,如“0-8、5-8、0-D、0-Q、S-5、S-8、B-8、B-0、 B-D、D-Q、7-T、1-7、4-A”等。

5、 颜色识别
对于二值转换后的车牌图像依据我国车辆牌照特点十分容易分辨出黄色 和白色的车牌底色,但对于蓝底白字和黑底白字需要进—步从原灰度车牌中提取特征,如可以提取车牌分隔符区域,即截取第二个字符右边界和第三个字符的左边界 的车牌区,通过分析该区域灰色度就能区分出蓝色和黑色车牌底色,因为黑色和蓝色灰度存在明显差别。

六、 结果优化
按 照模板匹配算法,可以得到若干个车牌识别结果,从中我们选取字符匹配成功数最多者。如果全部字符匹配成功,则输出结果肯定准确,而在实际运行的车牌识别系 统中即使对字符作了优化处理,但仍有部分字符受车牌色差和环境的影响有识别出错可能,为此在识别结果中不妨设定最小出现数,如规定整个车牌中有四位识别正 确就给出车牌结果,这样有利于车牌模糊识别技术的应用。同时,依据我国车牌结构特点还需要进行车牌语法校验,如民用车牌尾字不存在“警”字、军牌格式中不 会出现“领、港、挂、学”字、警牌尾字不能出现“学、港、领、挂”字、警牌首位不能出现军牌汉字、武警车牌中不能出现民用和军用车牌汉字等等,这样可以大 大提高车牌正确识别率。

七、 字符训练
由于车牌安装角度、车牌制作工艺不同和外界污渍都会对字符识别产生影响,因此完整的车牌模糊识别系统应能提供字符自学习功能,即根据已知字符的二值图像重新生成特征库或改变部分特征库加权值,只有具备字符训练的车牌模糊识别软件才会有很高的车牌识别正确率、很强的适应性。

八、结束语
按照我国公安部门规定,车牌号码由省市区简称、车辆注册机关、注册编号、分类号码组成,现行的车牌种类繁多,这就给车牌模糊识别增加了难度,笔者通过分析现有车牌结构特点后认为有如下几点值得相关专家和领导关注:
(1)车牌编码规则应统一,如摩托车、农用运用车、拖拉机、使馆车辆应参照大小型汽车编码规则,尾部可相应改为“摩、农、拖、使”字:
(2)军队和武警大小车牌也应参照上述编码原则;
(3)针对车牌生产厂家众多的特点,应将车牌材料统一配给,确保车牌一致性;
(4)规范车牌安装区域,避免车牌中的字符被紧固螺钉和装饰物阻挡。
总之,通过上述分析我们知道车牌模糊识别的关键是车牌区域定位和字符识别,这两方面技术虽然已日趋成熟,但识别算法本身始终是人编的,追求更高的车牌模糊识别正确率永远是业内专业人士共同努力的目标。

小波神经网络程序

clc
clear
%step 1=========================
%定义输入样本;
t=0:0.01:1.5;
x=-sin(2*pi*t);
targ=[0 0 1 1 0 0 ];
eta=0.02;aerfa=0.935;
%初始化连接权wjh(输出层和隐层的连接权);whi(隐层和输出层的连接权);
%假设小波函数节点数为:H个;样本数为P;
%输出节点数为:J个;输入节点数为:I个;
H=15;P=2;
I=length(t);
J=length(targ);
%初始化小波参数
b=rand(H,1);
a=rand(H,1);
%初始化权系数;
whi=rand(I,H);
wjh=rand(H,J);
%阈值初始化;
b1=rand(H,1);
b2=rand(J,1);
p=0;
%保存的误差;
Err_NetOut=[];
flag=1;count=0;
while flag>0
flag=0;
count=count+1;

%step 2=================================
xhp1=0;
for h=1:H
for i=1:I
xhp1=xhp1+whi(i,h)*x(i);
end
ixhp(h)=xhp1+b1(h);
xhp1=0;
end
for h=1:H
oxhp(h)=fai((ixhp(h)-b(h))/a(h));
end
%step 3====================================
ixjp1=0;
for j=1:J
for h=1:H
ixjp1=ixjp1+wjh(h,j)*oxhp(h);
end
ixjp(j)=ixjp1+b2(j);
ixjp1=0;
end
for i=1:J
oxjp(i)=fnn(ixjp(i));
end
%step 6==保存每次误差=====
wuchayy=1/2*sumsqr(oxjp-targ);
%E_x=1/2*sumsqr(x);
Err_NetOut=[Err_NetOut wuchayy];%保存每次的误差;
%Err_rate=Err_NetOut/E_x;

%Err_rate

%oxjp

%求detaj ,detab2==================================
for j=1:J
detaj(j)=-(oxjp(j)-targ(j))*oxjp(j)*(1-oxjp(j));
end

for j=1:J
for h=1:H
detawjh(h,j)=eta*detaj(j)*oxhp(h);
end
end
detab2=eta*detaj;

%求detah, detawhi detab1 detab detaa;========================

sum=0;
for h=1:H
for j=1:J
sum=detaj(j)*wjh(h,j)*diffai((ixhp(h)-b(h))/a(h))/a(h)+sum;
end
detah(h)=sum;
sum=0;
end
for h=1:H
for i=1:I
detawhi(i,h)=eta*detah(h)*x(i);
end
end
detab1=eta*detah;
detab=-eta*detah;
for h=1:H
detaa(h)=-eta*detah(h)*((ixhp(h)-b(h))/a(h));
end

%引入动量因子aerfa,修正各个系数==========================================
wjh=wjh+(1+aerfa)*detawjh;
whi=whi+(1+aerfa)*detawhi;
a=a+(1+aerfa)*detaa';
b=b+(1+aerfa)*detab';
b1=b1+(1+aerfa)*detab1';
b2=b2+(1+aerfa)*detab2';

%======================================================
%引入修正算法!!

%判断所有的样本是否计算完==================================
p=p+1;
if p~=P
flag=flag+1;
else
if Err_NetOut(end)>0.05
flag=flag+1;

else
figure;
plot(Err_NetOut);
title('误差曲线');
disp('目标达到');
%disp(oxjp);
end
end
if count>2000
figure;
plot(Err_NetOut);
title('误差曲线');
disp('目标未达到');
disp(oxjp);
break;
end
end



diffai.m

function y3=diffai(x);
y3=-0.75*sin(1.75*x)*exp(-x.^2/2)-cos(1.75*x)*exp(-x.^2/2)*x;

fai.m

function yl=fai(x)
yl=cos(0.75.*x)+exp(-x.^2/2);

fnn.m
function y2=fnn(x)
y2=1/(1+exp(-x));

2008年9月26日星期五

车牌识别程序VIN.rar

车牌识别程序VIN.rar
下载一
下载二
不能下载的请在下面留下你的电子邮件地址

神经网络进行字符识别MATLAB程序

神经网络进行字符识别
close all
clear
echo on
clc
%用BP神经网络进行英文字符识别
%NEWFF——生成一个新的前向神经网络
%TRAIN——对神经网络进行训练
%SIM——对神经网络进行仿真
pause % 敲任意键开始
clc
%载入训练样本
[alphabet,targets]=prprob
[R1,Q1]=size(alphabet)
[R2,Q2]=size(targets)
pause
clc
%生成神经网络
S1=10
S2=R2
net=newff(minmax(alphabet),[S1 S2],{'logsig' 'logsig'},'traingdx');
net.LW{2,1}=net.LW{2,1}*0.01;
pause
clc
%训练神经网络
%1.用理想样本训练神经网络
P=alphabet;
T=targets;
%net.performFcn='see';
net.trainParam.goal=0.1;
net.trainParam.show=20;
net.trainParam.epochs=5000;
net.trainParam.mc=0.095;
[net,tr]=train(net,P,T);
pause
clc
%2.用喊有不同程度噪声的样本训练神经网络
netn=net;
netn.trainParam.goal=0.6;
netn.trainPAram.epochs=300;
T=[targets targets targets targets];
for pass=1:10
fprintf('Pass=%.0f\n',pass);
P=[alphabet,alphabet,(alphabet+randn(R1,Q1)*0.1),(alphabet+randn(R1,Q1)*0.2)];
[netn,tr]=train(netn,P,T);
echo off
end
echo on
pause
%3.再次用理想样本训练神经网络
netn.trainParam.goal=0.1;
netn.trainParam.epochs=500;
netn.trainParam.show=5;
P=alphabet;
T=targets;
[netn,tr]=train(netn,P,T);
%训练结束
pause
clc
%对识别网络进行测试
%设置测试参数
noise_range=0:0.05:5; %噪声均方差
max_test=100;
network1=[];%网络1的误识率
network2=[];%网络2的误识率
%进行网络仿真和测试
for noiselevel=noise_range
fprintf('Testing network with noise level of %.2f.\n',noiselevel);
errors1=0;
errors2=0;
for i=1:max_test
P=alphabet+randn(35,26)*noiselevel;
%测试网络1
A=sim(net,P);
AA=compet(A);
errors1=errors1+sum(sum(abs(AA-T)))/2;
%测试网络2
An=sim(net,P);
AAn=compet(An);
errors2=errors2+sum(sum(abs(AAn-T)))/2;
echo off
end
network1=[network1 errors1/26/100];
network2=[network2 errors2/26/100];
end
echo on
pause %敲任意键绘制测试结果曲线——误识率曲线
clc
%绘制网络误识率曲线
plot(noise_range,network1*100,'--',noise_range,network2*100);
title('Percentage of Recognition Errors(%)');
xlable('Noise Level');
ylable('Network1-- network2---');
pause
clc
%一个测试实例
%生成一个喊噪声的字母B作为网络输入
noisyB=alphabet(:,2)+randn(35,1)*0.2;
%绘制含噪声的字母B的位图
plotchar(noisyB);
pause
clc
%对输入模式进行识别
A2=sim(netn,noisyB);
A2=compet(A2)
answer=find(alphabet(A2)==1);
%绘制识别结果对应的模式位图
plotchar(alphabet(:,answer));
pause
echo off

vlpr licence plate reader vancover rcmp

2008年9月24日星期三

手写数字识别的原理及应用

林晓帆 丁晓青 吴佑寿

一、引言

手写数字识别(Handwritten Numeral Recognition)是光学字符识别技术(Optical Character Recognition,简称OCR)的一个分支,它研究的对象是:如何利用电子计算机自动辨认人手写在纸张上的阿拉伯数字。

在整个OCR领域中,最为困难的就是脱机手写字符的识别。到目前为止,尽管人们在脱机手写英文、汉字识别的研究中已取得很多可喜成就,但距实用还有一定距离。而在手写数字识别这个方向上,经过多年研究,研究工作者已经开始把它向各种实际应用推广,为手写数据的高速自动输入提供了一种解决方案。

二、研究的实际背景

字符识别处理的信息可分为两大类:一类是文字信息,处理的主要是用各国家、各民族的文字(如:汉字,英文等)书写或印刷的文本信息,目前在印刷体和联机手写方面技术已趋向成熟,并推出了很多应用系统;另一类是数据信息,主要是由阿拉伯数字及少量特殊符号组成的各种编号和统计数据,如:邮政编码、统计报表、财务报表、银行票据等等,处理这类信息的核心技术是手写数字识别。这几年来我国开始大力推广的“三金”工程在很大程度上要依赖数据信息的输入,如果能通过手写数字识别技术实现信息的自动录入,无疑会促进这一事业的进展。因此,手写数字的识别研究有着重大的现实意义,一旦研究成功并投入应用,将产生巨大的社会和经济效益。

三、研究的理论意义

手写数字识别作为模式识别领域的一个重要问题,也有着重要的理论价值:

1.阿拉伯数字是唯一的被世界各国通用的符号,对手写数字识别的研究基本上与文化背景无关,这样就为各国,各地区的研究工作者提供了一个施展才智的大舞台。在这一领域大家可以探讨,比较各种研究方法。

2.由于数字识别的类别数较小,有助于做深入分析及验证一些新的理论。这方面最明显的例子就是人工神经网络(ANN)------相当一部分的ANN模型和算法都以手写数字识别作为具体的实验平台,验证理论的有效性,评价各种方法的优缺点。

3.尽管人们对手写数字的识别已从事了很长时间的研究,并已取得了很多成果,但到目前为止机器的识别本领还无法与人的认知能力相比,这仍是一个有难度的开放问题(Open problem)。

4.手写数字的识别方法很容易推广到其它一些相关问题棗一个直接的应用是对英文这样的拼音文字的识别。事实上,很多学者就是把数字和英文字母的识别放在一块儿研究的。

四、研究的难度

数字的类别只有十种,笔划又简单,其识别问题似乎不是很困难。但事实上,一些测试结果表明,数字的正确识别率并不如印刷体汉字识别正确率高,甚至也不如联机手写体汉字识别率高,而只仅仅优于脱机手写体汉字识别。这其中主要原因是:第棧值淖中涡畔⒘亢苄。煌中捶ê?B>字形相差不大,使得准确区分某些数字相当困难;第二,数字虽然只有十种,而且笔划简单,但同一数字写法千差万别,全世界各个国家各个地区的人都用,其书写上带有明显的区域特性,很难完全做到兼顾世界各种写法的极高识别率的通用性数字识别系统。另外,在实际应用中,对数字识别单字识别正确率的要求要比文字要苛刻得多。这是因为,数字没有上下文关系,每个单字的识别都事关重要,而且数字识别经常涉及的财会、金融领域其严格性更是不言而喻的。因此,用户的要求不是单纯的高正确率,更重要的是极低的、千分之一甚至万分之一以下的误识率。此外,大批量数据处理对系统速度又有相当的要求,许多理论上很完美但速度过低的方法是行不通的。因此,研究高性能的手写数字识别算法是一个有相当的挑战性的任务。

五、学习和测试样本库的选择

正如前一部分提到的,手写数字的写法带有明显的地区性和民族性,因而选择一个可供系统训练和测试使用的样本库是手写数字识别研究的重要基础之一,对识别系统的性能也有重要的影响。研究者对所需的样本库有两种选择:一是自己根据需要建立专门的样本库,二是选用其它机构做好的现成的样本库。前者的优点是帖近自己的应用,缺点也是明显的:要费相当的精力且代表性很难保证,与其它人的结果不好比较。因此,现在的趋势是使用有权威性的通用样本库。目前,比较有代表性的、样本数量较大的手写数字样本库有:(1).NIST数据库,由美国国家标准与技术局收集;(2).CEDAR数据库,是由纽约州立大学Buffalo 分校计算机科学系文本分析与识别中完成的邮政编码的样本库;(3).ETL数据库,由日本电工技术研究所收集;(4). ITPT数据库, 由日本邮电通信政策研究所收集。

六、识别系统性能的评价

作为一个识别系统,我们最终要用某些参数来评价其性能的高低,手写数字识别也不例外。评价的指标除了借用一般文字识别里的通常做法外,还要根据数字识别的特点进行修改和补充。

对一个手写数字识别系统,可以用三方面的指标表征系统的性能:

正确识别率
A=正确识别样本数/全部样本数*100%

替代率(误识率)
S=误识样本数/全部样本数*100%

拒识率
R=拒识样本数/全部样本数*100%

三者的关系是:
A+S+R=100%


数字识别的应用中,人们往往很关心的一个指标是“识别精度”,即:在所有识别的字符中,除去拒识字符,正确识别的比例有多大,我们定义:

识别精度P=A/(A+S)*100%。

一个理想的系统应是R,S尽量小,而P,A尽可能大。而在一个实际系统中,S,R是相互制约的,拒识率R的提高总伴随着误识率S的下降,与此同时识别率A和识别精度P的提高。因此,在评价手写数字识别系统系统时,我们必须综合考虑这几个指标。另外,由于手写数字的书写风格、工整程度可以有相当大的差别,因此必须弄清一个指标在怎样的样本集合下获得的。

以上多种因素使得不同系统的性能很难做绝对比较,根据作者从文献中所看到的和在科研实践中的体会,可以认为目前手写数字识别研究的较高水平是:对自由书写的数字,在不拒识时达到96%以上的识别率;在拒识少于15%的样本时,误识率能降到0.1%以下。

(孙靖夷的研究结果?───)

七、手写数字的识别方法

手写数字识别在学科上属于模式识别和人工智能的范畴。在过去的四十年中,人们想出了很多办法获取手写字符的关键特征。这些手段分两大类:全局分析和结构分析。对前者,我们可以使用模板匹配、象素密度、矩、特征点、数学变换等技术。这类的特征常常和统计分类方法一起使用。对后者,多半需要从字符的轮廓或骨架上提取字符形状的基本特征,包括:圈、端点、节点、弧、突起、凹陷、笔画等等。与这些结构特征配合使用的往往是句法的分类方法。

多年的研究实践表明,对于完全没有限制的手写数字,几乎可以肯定:没有一种简单的方案能达到很高的识别率和识别精度。因此,最近这方面的努力向着更为成熟、复杂、综合的方向发展。一方面,研究工作者努力把新的知识运用到预处理,特征提取,分类当中,如:神经网络、数学形态学等。作者认为,在手写数字识别的研究中,神经网络技术和多种方法的综合是值得重视的方向。

八.基于手写数字识别的典型应用

手写数字识别有着极为广泛的应用前景,这也正是它受到世界各国的研究工作者重视的一个主要原因。下面我们将介绍基于手写数字识别的应用系统的特殊要求,以及一些以手写数字识别技术为基础的典型应用。

(一). 基于手写数字识别的应用系统的特殊要求:

尽管手写数字识别与一般的文本(如:汉字,英文等)识别同属于光学字符识别(OCR)的大范畴,从应用的角度出发,手写数字识别应用系统有很多特殊的要求:

1.识别精度要达到很高的水平:

在一般的文本识别中,信息的冗余较大,有充分的上下文信息,因而对识别的精度要求不是十分高,达到98%-99%就足够了。而在数字识别中,由于没有上下文关系,数据中的每一位数字都至关重要(试想:在财务报表中,把40,000元认成90,000元,从字符识别的角度仅认错了一个数字,但对用户而言,这是一个绝对不能容许的错误)。一般来说,这类实用系统的精度至少应在99.9%以上。前面已经提到,高性能的自由手写数字识别是一个很困难的问题,至今为止还没有什么方法能与人的辨识能力相比,那么在目前的技术水平下,如何满足高精度的要求呢?

(1) 要求书写者用规定的字型认真填写,避免使用某些容易造成混淆的变体。

这个限制对用户可能是很不方便的,因为这意味着书写速度的降低和书写习惯的改变,但从整体上,系统的识别水平将有大幅度的提高,能很大程度上提高系统的运行效率。

(2) 提高拒识率。

通过提高拒识率就可以减低误识率,直到达到指定的精度要求。当然,拒识的增多意味着操作人员的介入的增加,这对用户是极为不利的。

(3) 加入逻辑校验。

在通信系统中,人们常通过加校验码来保证数据的高质量传输,常见的校验码有:奇偶校验,汉明码等。在基于手写数字的应用系统中,我们也可以采用类似的方法。不过,这时校验方式应尽量简单,直观,利于填写人快速算出。

2. 对处理速度也有很高的要求:

数字识别面对的都是极其大量的数据报表,一般都要求达到每分钟几页到几十页的处理能力(包括扫描到完成识别的全过程)。而众所周知,处理速度与处理精度是一对矛盾,现在既要达到前面提到的高识别精度,又要有如此之高的速度,无疑增加了系统的设计难度。不过近年来,硬件水平提高很快,目前市场上已有较低价格, 每分钟可扫描10-20页的高性能扫描仪;微机的运算速度更是飞快提高。这些都为高的处理速度奠定了坚实的基础。

3. 要能批量自动作业。

在一般的文本识别中,多是操作者一页页地送入文本,手工帮助机器进行版面分割(机器的自动分割能力往往是十分有限的)后再开始识别,很难保证高质量的批量自动识别。而在数字识别系统中这是一个必须做到且应能做到的基本要求。原因如下:

(1) 如果每页的处理都要人手工帮助完成,系统的综合处理速度无法达到要求;

(2) 扫描仪的自动进纸(ADF-Automatic Document Feeding)技术已十分成熟;

(3) 处理的对象在很多情况下是版面完全相同的大批表格,很容易作到栏目的自动提取。

4. 要有便于批量快速校对修改的手段。

(二)、手写数字识别在大规模数据统计中的应用:

在大规模的数据统计(如:行业年检、人口普查等)中,需要输入大量的数据,以前完全要手工输入,则需要耗费大量的人力和物力。近年来在这类工作中采用OCR技术已成为一种趋势。

因为在这种应用中,数据的录入是集中组织的,所以往往可以通过专门设计表格和对书写施加限制以便于机器的自动识别。目前国内的大多数实用系统都要求用户按指定规范在方格内填写。另外,这些系统往往采用合适的用户界面对识别结果做全面的检查,最终保证结果正确无误。可以看出,这是一类相对容易的应用,对识别核心算法的要求比较低,是目前国内很多单位应用开发的热点。

(三).手写数字识别在财务、税务、金融领域中的应用:

财务、税务、金融是手写数字识别大有可为的又一领域。随着我国经济的迅速发展,每天等待处理的财务、税务报表、支票、付款单等越来越多。如果能把它们用计算机自动处理,无疑可以节约大量的时间、金钱和劳力。与上面提到的统计报表处理相比,在这个领域的应用难度更大,原因有:1.对识别的精度要求更高;2.处理的表格往往不止一种,一个系统应能智能地同时处理若干种表格;3.由于处理贯穿于整个日常工作之中,书写应尽量按一般习惯(如:不对书写者的写法做限定,书写时允许写连续的字串,而不是在固定的方格内书写),这样对识别及预处理的核心算法要求也提高了。

(四).手写数字识别在邮件分拣中的应用:

随着人们生活水平的提高,经济活动的发展,通信联系的需求使信函的互换量大幅度增加,我国函件业务量也在不断增长,预计到2000年,一些 大城市的中心邮局每天处理量将高达几百万件,业务量的急剧上升使得邮件的分拣自动化成为大势所趋。在邮件的自动分拣中,手写数字识别(OCR)往往与光学条码识别(OBR---Optical Bar Reading),人工辅助识别等手段相结合,完成邮政编码的阅读。目前使用量最大的OVCS分拣机的性能指标:OCR拒分率30%,OCR分拣差错率1.1%。

九、手写数字识别技术展望

随着国家信息化进程的加速,手写数字识别的应用需求将越来越广泛,因此应当加强这方面的研究工作。作者认为,应用系统的性能的关键与瓶颈仍然在于手写数字识别核心算法性能上,最终目标是研究零误识率和低拒识率的高速识别算法。此外,尽早建立反映中国人书写习惯的、具有国家标准性质的手写数字样本库也是当务之急。

2008年9月21日星期日

字符分割MATLAB代码

%本函数实现字符分割
%输入中值滤波后的二值图像carImg
%输出为字符分割线的列值incise
function incise=character(carImg)
[m,n]=size(carImg);
projectionV=sum(carImg);
num1=0;
num2=0;
for k=1:n-1
if projectionV(k)>0&projectionV(k+1)==0
num1=num1+1;
incise1(num1)=k+1;
end
if projectionV(k)==0&projectionV(k+1)>0
num2=num2+1;
incise2(num2)=k;
end
end
incise(1)=incise2(1);
len=length(incise1);
incise(len+1)=incise1(len);
incise(2:len)=round((incise1(1:len-1)+incise2(2:len))/2);

%进行行处理,使行白像素的个数少于14的,整行置为0;
carImg=rowZ(carImg);
%进行列处理,使列白像素的个数少于5的整列置为0;
carImg=columnZ(carImg);
figure,imshow(carImg);title('zeros');
projection=sum(carImg);
%字符分割
incise=character(carImg)

2008年9月19日星期五

车牌识别

印刷汉字识别方法综述


印刷汉字识别方法综述

刘长松 郭繁夏 丁晓青 郭宏

  一、文字识别概述

  汉字是历史悠久的中华民族文化的重要结晶,闪烁着中国人民智慧的光芒。汉字数量众多,仅清朝编纂的《康熙字典》就包含了49,000多个汉字,其数量之大,构思之精,为世界文明史所仅有。由于汉字为非字母化、非拼音化的文字,所以在信息技术及计算机技术日益普及的今天,如何将汉字方便、快速地输入到计算机中已成为关系到计算机技术能否在我国真正普及的关键问题。前文图1所示将汉字输入到计算机里一般有两种方法:人工键入和自动输入。其中人工键入速度慢而且劳动强度大,一般的使用者每分钟只能输入40~50个汉字。这种方法不适用于需要处理大量文字资料的办公自动化、文档管理、图书情报管理等场合。而且随着劳动力价格的升高,利用人工方法进行汉字输入也将面临经济效益的挑战。自动输入又分为汉字识别输入及语音识别输入。

  由于汉字数量众多,汉字识别问题属于超多类模式集合的分类问题。汉字识别技术可以分为印刷体识别及手写体识别技术。而手写体识别又可以分为联机(on-line)与脱机(off-line)两种。这种划分方法可以用图1来表示。

  从识别技术的难度来说,手写体识别的难度高于印刷体识别,而在手写体识别中,脱机手写体的难度又远远超过了联机手写体识别。

  到目前为止,除了脱机手写体数字的识别已有实际应用外,汉字等文字的脱机手写体识别还处在实验室阶段。

  联机手写体的输入,是依靠电磁式或压电式等手写输入板来完成的。在书写时,笔在板上的运动轨迹(在板上的坐标)被转化为一系列的电信号,电信号可以串行地进入到计算机中。从这些电信号我们可以比较容易地抽取笔划和笔顺的信息。从90年代以来,联机手写体的识别正逐步走向实用,方兴未艾。中国大陆及台湾地区的科研工作者推出了多个联机手写体汉字识别系统,国外的一些大公司也开始进入这一市场。这一技术也迎合了pda(personaldigitalassistant)的发展潮流。

  与脱机手写体和联机手写体识别相比,印刷体汉字识别已经实用化,而且在向更高的性能、更完善的用户界面的方向发展。因为它有着广泛的应用前景。目前,办公自动化已成为信息社会不可避免的发展趋势。虽然在计算机网络飞速发展的今天,许多信息已经电子化,世界各地出现了许多“电子版”的报纸、杂志等出版物。但是我们可以看到印刷材料的数量也大大地增加了,一些专业单位如新闻社、图书馆、古籍出版社、档案馆等所接触的印刷材料更是浩如烟海,毕竟阅读印刷材料更为符合人的自然阅读习惯;同时,网络信息资源的爆炸性增长以及网络传输容量的限制,都是方便、快速地获取这些信息的约束因素。电子化的与印刷文本材料如同一枚硬币的两面,互相补充、互相促进,在未来的十几年或更长的时间内将不会出现一者被另一者取代的情况。



  二、印刷体文字识别流程简介

  印刷体文字识别的过程如前文图2所示。原始图象是通过光电扫描仪,ccd器件或电子传真机等获得的二维图象信号,可以是灰度(grayscale)或二值(binary)图象。为简单计,在本文以后的论述中,除非特别提及,图象输入的方式均指由扫描仪输入。前文图2印刷体文字识别的简单流程图所示预处理包括对原始图象的去噪、倾斜校正或各种滤波处理。版面分析完成对于文本图象的总体分析,区分出文本段落及排版顺序,图象、表格的区域;对于文本区域将进行识别处理,对于表格区域进行专用的表格分析及识别处理,对于图象区域进行压缩或简单存储。行字切分是将大幅的图象先切割为行,再从图象行中分离出单个字符的过程。特征提取是整个环节中最重要的一环,它是从单个字符图象上提取统计特征或结构特征的过程,包括为此而做的细化(thinning)、归一化(normalization)等步骤。提取的特征的稳定性及有效性,直接决定了识别的性能。文字识别即从学习得到的特征库中找到与待识字符相似度最高的字符类的过程。后处理则是利用词义、词频、语法规则或语料库等语言先验知识对识别结果进行校正的过程。

  由此可见,印刷汉字识别技术主要包括:

  (1)扫描输入文本图象。

  (2)图象的预处理,包括倾斜校正和滤除干扰噪声等。

  (3)图象版面的分析和理解。

  (4)图象的行切分和字切分。

  (5)基于单字图象的特征选择和提取。

  (6)基于单字图象特征的模式分类。

  (7)将被分类的模式赋予识别结果。

  (8)识别结果的编辑修改后处理。

  其中(4)、(5)和(6),也就是图2中的阴影部分,是印刷汉字识别中最为核心的技术。近几年来,印刷汉字识别系统的单字识别正确率已经超过95%,为了进一步提高系统的总体识别率,扫描图象、图象的预处理以及识别后处理等方面的技术,也都得到了深入的研究,并取得了长足的进展,有效地提高了印刷汉字识别系统的总体性能。



  三、印刷体文字识别的研究历程

  印刷体文字的识别可以说很早就成为人们的梦想,早在1929年,taushek就在德国获得了一项有关ocr的专利。欧美国家为了将浩如烟海、与日俱增的大量报刊杂志、文件资料和单据报表等文字材料输入计算机进行信息处理,从50年代就开始了西文ocr(opticalcharacterrecognition,光学字符识别)技术的研究,以便代替人工键盘输入。

  印刷体汉字的识别最早可以追溯到60年代。1966年,ibm公司的casey和nagy发表了第一篇关于印刷体汉字识别的论文,在这篇论文中他们利用简单的模板匹配法识别了1,000个印刷体汉字。70年代以来,日本学者做了许多工作,其中有代表性的系统有1977年东芝综合研究所研制的可以识别2000汉字的单体印刷汉字识别系统;80年代初期,日本武藏野电气研究所研制的可以识别2300个多体汉字的印刷体汉字识别系统,代表了当时汉字识别的最高水平。此外,日本的三洋、松下、理光和富士等公司也有其研制的印刷汉字识别系统。这些系统在方法上,大都采用基于k-l数字变换的匹配方案,使用了大量专用硬件,其设备有的相当于小型机甚至大型机,价格极其昂贵,没有得到广泛应用。

  我国对印刷汉字识别的研究始于70年代末、80年代初,大致可以分为三大阶段:

  (1)第一阶段从70年代末期到80年代末期,主要是算法和方案探索。

  (2)第二阶段是90年代初期,中文ocr由实验室走向市场,初步实用。

  (3)第三阶段也就是目前,主要是印刷汉字识别技术和系统性能的提高,包括汉英双语混排识别率的提高和稳健性的增强。

  同国外相比,我国的印刷体汉字识别研究起步较晚。但由于我国政府对汉字自动识别输入的研究从80年代开始给予了充分的重视和支持,经过科研人员十多年的辛勤努力,印刷体汉字识别技术的发展和应用,有了长足进步:从简单的单体识别发展到多种字体混排的多体识别,从中文印刷材料的识别发展到中英混排印刷材料的双语识别。各个系统可以支持简、繁体汉字的识别,解决了多体多字号混排文本的识别问题,对于简单的版面可以进行有效的定量分析,同时汉字识别率已达到了98%以上。

  清华大学电子工程系、中国科学院计算所智能中心、北京信息工程学院、沈阳自动化研究所等单位分别研制开发出实用化的印刷体汉字识别系统。尤其是由清华大学电子工程系研制的清华th-ocr产品,始终处于技术与产品发展的最前沿,并占据着最大的市场份额,代表着中文ocr技术发展的潮流。

  这一成就,是对中华文化宝贵遗产的继承和发扬,在世界电脑发展史上,必将留下光辉的一页,同时,这也是造福子孙千秋万代的大事。国家高技术研究发展"863"计划、国家重点科技攻关计划、国家自然科学基金和军事基础研究基金都对这一研究课题予以极大的重视和大力的支持。



  四、印刷体文字识别研究方法简介

  识别方法是整个系统的核心。用于汉字识别的模式识别方法可以大致分为结构模式识别、统计模式识别及两者的结合。下面分别进行介绍。

  1、结构模式识别

  汉字是一种特殊的模式,其结构虽然比较复杂,但具有相当严格的规律性。换言之,汉字图形含有丰富的结构信息,可以设法提取含有这种信息的结构特征及其组字规律,作为识别汉字的依据,这就是结构模式识别。

  结构模式识别是早期汉字识别研究的主要方法。其主要出发点是汉字的组成结构。从汉字的构成上讲,汉字是由笔划(点横竖撇捺等)、偏旁部首构成的;还可以认为汉字是由更小的结构基元构成的。由这些结构基元及其相互关系完全可以精确地对汉字加以描述,就像一篇文章由单字、词、短语和句子按语法规律所组成一样。所以这种方法也叫句法模式识别。识别时,利用上述结构信息及句法分析的方法进行识别,类似一个逻辑推理器。

  用这种方法来描述汉字字形结构在理论上是比较恰当的,其主要优点在于对字体变化的适应性强,区分相似字能力强;但是,在实际应用中,面临的主要问题是抗干扰能力差,因为在实际得到的文本图象中存在着各种干扰,如倾斜,扭曲,断裂,粘连,纸张上的污点,对比度差等等。这些因素直接影响到结构基元的提取,假如结构基元不能准确地得到,后面的推理过程就成了无源之水。此外结构模式识别的描述比较复杂,匹配过程的复杂度因而也较高。所以在印刷体汉字识别领域中,纯结构模式识别方法已经逐渐衰落,句法识别的方法正日益受到挑战。

  2、统计模式识别

  统计决策论发展较早,理论也较成熟。其要点是提取待识别模式的的一组统计特征,然后按照一定准则所确定的决策



  (2)利用变换特征的方法。对字符图象进行二进制变换(如walsh,hardama变换)或更复杂的变换(如karhunen-loeve,fourier,cosine,slant变换等),变换后的特征的维数大大降低。但是这些变换不是旋转不变的,因此对于倾斜变形的字符的识别会有较大的偏差。二进制变换的计算虽然简单,但变换后的特征没有明显的物理意义。k-l变换虽然从最小均方误差角度来说是最佳的,但是运算量太大,难以实用。总之,变换特征的运算复杂度较高。

  (3)投影直方图法。利用字符图象在水平及垂直方向的投影作为特征。该方法对倾斜旋转非常敏感,细分能力差。

  (4)几何矩(geometricmoment)特征。m.k.hu提出利用矩不变量作为特征的想法,引起了研究矩的热潮。研究人员又确定了数十个移不变、比例不变的矩。我们都希望找到稳定可靠的、对各种干扰适应能力很强的特征,在几何矩方面的研究正反映了这一愿望。以上所涉及到的几何矩均在线性变换下保持不变。但在实际环境中,很难保证线性变换这一前提条件。

  (5)spline曲线近似与傅立叶描绘子(fourierdescriptor)。两种方法都是针对字符图象轮廓的。spline曲线近似是在轮廓上找到曲率大的折点,利用spline曲线来近似相邻折点之间的轮廓线。而傅立叶描绘子则是利用傅立叶函数模拟封闭的轮廓线,将傅立叶函数的各个系数作为特征的。前者对于旋转很敏感。后者对于轮廓线不封闭的字符图象不适用,因此很难用于笔划断裂的字符的识别。

  (6)笔划密度特征。笔划密度的描述有许多种,这里采用如下定义:字符图象某一特定范围的笔划密度是在该范围内,以固定扫描次数沿水平、垂直或对角线方向扫描时的穿透次数。这种特征描述了汉字的各部分笔划的疏密程度,提供了比较完整的信息。在图象质量可以保证的情况下,这种特征相当稳定。在脱机手写体的识别中也经常用到这种特征。但是在字符内部笔划粘连时误差较大。

  (7)外围特征。汉字的轮廓包含了丰富的特征,即使在字符内部笔划粘连的情况下,轮廓部分的信息也还是比较完整的。这种特征非常适合于作为粗分类的特征。

  (8)基于微结构特征的方法。这种方法的出发点在于,汉字是由笔划组成的,而笔划是由一定方向,一定位置关系与长宽比的矩形段组成的。这些矩形段则称为微结构。利用微结构及微结构之间的关系组成的特征对汉字进行识别,尤其是对于多体汉字的识别,获得了良好的效果。其不足之处是,在内部笔划粘连时,微结构的提取会遇到困难。

  (9)特征点特征。早在1957年,solatronelectronicsgroup公司发布了第一个利用窥视孔(peephole)方法的ocr系统。其主要思想是利用字符点阵中一些有代表性的黑点(笔划),白点(背景)作为特征来区分不同的字符。后有人又将这种方法运用到汉字识别中,对其中的黑点又增加了属性的描述,如端点、折点、交叉点等。也获得了比较好的效果。其特点是对于内部笔划粘连的字符的识别的适应性较强,直观性好,但是不易表示为矢量形式,不适合作为粗分类的特征,匹配难度大。

  当然还有许多种不同的统计特征,诸如图描述法、包含配选法、脱壳透视法、差笔划法等,这里就不一一介绍了。

  3、统计识别与结构识别的结合

  结构模式识别与统计模式识别各有优缺点,随着我们对于两种方法认识的深入,这两种方法正在逐渐融合。网格化特征就是这种结合的产物。字符图象被均匀地或非均匀地划分为若干区域,称之为“网格”。在每一个网格内寻找各种特征,如笔划点与背景点的比例,交叉点、笔划端点的个数,细化后的笔划的长度、网格部分的笔划密度等等。特征的统计以网格为单位,即使个别点的统计有误差也不会造成大的影响,增强了特征的抗干扰性。这种方法正得到日益广泛的应用。

  4、人工神经网络

  人工神经网络(artificialneuralnetwork,以下称ann)是一种模拟人脑神经元细胞的网络结构,它是由大量简单的基本元件-神经元相互连接成的自适应非线性动态系统。虽然目前对于人脑神经元的研究还很不完善,我们无法确定ann的工作方式是否与人脑神经元的运作方式相同,但是ann正在吸引着越来越多的注意力。

  ann中的各个神经元的结构与功能较为简单,但大量的简单神经元的组合却可以非常复杂,我们从而可以通过调整神经元间的连接系数完成分类、识别等复杂的功能。ann还具有一定的自适应的学习与组织能力,组成网络的各个“细胞”可以并行工作,并可以通过调整“细胞”间的连接系数完成分类、识别等复杂的功能。这是冯·诺依曼的计算机无法做到的。

  ann可以作为单纯的分类器(不包含特征提取,选择),也可以用作功能完善的分类器。在英文字母与数字的识别等类别数目较少的分类问题中,常常将字符的图象点阵直接作为神经网络的输入。不同于传统的模式识别方法,在这种情况下,神经网络所“提取”的特征并无明显的物理含义,而是储存在神经物理中各个神经元的连接之中,省去了由人来决定特征提取的方法与实现过程。从这个意义上来说,ann提供了一种“字符自动识别”的可能性。此外,ann分类器是一种非线性的分类器,它可以提供我们很难想象到的复杂的类间分界面,这也为复杂分类问题的解决提供了一种可能的解决方式。

  目前,在对于象汉字识别这样超多类的分类问题,ann的规模会很大,结构也很复杂,现在还远未达到实用的程度。其中的原因很多,主要的原因还在于我们对人脑的工作方式以及ann本身的许多问题还没有找到完美的答案。



  五、汉字识别技术的最新进展

  汉字识别最为重要的指标是识别正确率,最新技术包括两个方面:一是使用组合优化特征的综合识别方法,提高正确率,增加适应性;二是英文与数字的比例超过1/3时的汉英双语混排识别。

  1、组合优化特征的综合识别方法

  抽取单一种类的特征进行汉字识别,误识率较难降低,且抗干扰性不易提高。因为这样所利用的汉字信息量有限,不能全面反映汉字的特点,对任何一种特征来说,必然存在其识别的“死角”,即利用该特征很难区分的汉字。从模式识别的角度来看,若将汉字的全部矢量化特征所组成的空间称作空间(iΚ1,2,……),那么利用整个空间Ω的信息进行汉字识别,由于提供的汉字信息很充分,抗干扰性会大大增强。

  但是,在实际应用中,必须考虑到识别正确率与识别速度(运算量)及系统资源三者的折衷。所以任何一个实用的ocr系统只利用其中部分子空间的信息。由于信息的缺陷,便不可避免地遇到识别“死角”的问题。

  “组合优化特征法”识别汉字的基本思想是:首先,在长期汉字识别研究的基础上,选择结构元等多种基于汉字笔划结构的统计特征,这些特征具有良好的类内聚合和类间发散的分类能力;其次,有机地多种汉字特征互为补充,相得益彰,使汉字识别的“死角”大幅减小,从而提高识别率。

  “组合优化特征”的综合识别方式,是建立在对各种方法充分了解的基础之上,基于知识的识别方式,因为这样既富有针对性,充分发挥了各个方案的长处,取得了高的识别率,又提高了系统的运行效率。

  2、汉英双语混排识别

  随着信息产业的开放与发展,越来越多的英文词语出现在我国的印刷文本材料中。尤其在科技文献刊物中,更是屡见不鲜,英文、数字的比例常常超过1/3。英文字母出现在文本行中,其大小、高度与汉字中的偏旁部首很类似,难以区分是汉字偏旁部首,还是英文字母;英文单词中字母之间的距离不等,粘连也相当普遍;汉字是以横竖等笔划为基本结构的,而英文则是以曲线为主。因此,汉英双语混排识别的关键在于汉字和英文字母的正确分辨和切分。切分的传统方法是利用“高度—宽度—位置”信息,但是由于汉字中可左右分离的字很多,其各部分无论高度和宽度,均与英文字母很接近,如“即”、“旧”等;而且,英文字母的粘连现象也无法解决;此外,许多英文的双字母组合,三字母组合,是用一个字模来印刷的,如“fi”等。因此,在“高度—宽度—位置”准则基础上,根据“tet(try-error-try)准则”,加入了“切分—预识别—二次切分”的手段。即对于各种可能出现的切分情况,进行预识别,从中选出误差最小,最合乎语言逻辑习惯的组合。

  对于粘连的英文字母,由于连续粘连在一起的字母可能有多个,组合的情况较多,且粘连的种类亦有较大区别。进行“穷举式”试切分,所花费的时间代价太大。因此采用“化整为零”的方法,根据最佳邻域搜索原则以及字母串在水平和垂直方向上的投影信息,将字母串从最可靠的地方一分为二,分为两个子串;然后在这两个子串内再重复上述步骤,直到子串的长度大约为三个英文字母的平均宽度;最后进行“穷举式”试切分,从而大大缩短了切分所用的时间。从而有效地解决了汉英双语混排文本的识别。

  3、高性能实用汉字识别系统的其它关键技术

  实用汉字识别系统的其它关键技术主要包括:

  (1)扫描仪自动亮度调节(abj-automaticbrightnessajustment)技术。

  (2)印刷表格的自动输入的邻域分析技术。

  (3)版面的自动分析(ala-automaticlayoutanalysis)技术。

  综上所述,最新的印刷汉字识别技术流程,如图3所示。



  六、结论与展望

  总体来说,近几年来国内对印刷体汉字识别的研究还是相当深入的,也取得了很大成绩,使系统的识别率不断上升。目前印刷体汉字识别系统的应用已经相当成熟。

2008年9月18日星期四

初入职场两件事:入对行,跟对人

入对行跟对人

在 中国,大概很少有人是一份职业做到底的,虽然如此,第一份工作还是有些需要注意的地方,有两件事情格外重要,第一件是入行,第二件事情是跟人。第一份工作 对人最大的影响就是入行,现代的职业分工已经很细,我们基本上只能在一个行业里成为专家,不可能在多个行业里成为专家。很多案例也证明即使一个人在一个行 业非常成功,到另外一个行业,往往完全不是那么回事情,"你想改变世界,还是想卖一辈子汽水?"是乔布斯邀请百事可乐总裁约翰·斯考利加盟苹果时所说的 话,结果这位在百事非常成功的约翰,到了苹果表现平平。其实没有哪个行业特别好,也没有哪个行业特别差,或许有报道说哪个行业的平均薪资比较高,但是他们 没说的是,那个行业的平均压力也比较大。看上去很美的行业一旦进入才发现很多地方其实并不那么完美,只是外人看不见。

说 实话,我自己都没有发大财,所以我的建议只是让人快乐工作的建议,不是如何发大财的建议,我们只讨论一般普通打工者的情况。我认为选择什么行业并没有太大 关系,看问题不能只看眼前。比如,从前年开始,国家开始整顿医疗行业,很多医药公司开不下去,很多医药行业的销售开始转行。其实医药行业的不景气是针对所 有公司的,并非针对一家公司,大家的日子都不好过,这个时候跑掉是非常不划算的,大多数正规的医药公司即使不做新生意撑个两三年总是能撑的,大多数医药销 售靠工资撑个两三年也是可以撑的,国家不可能永远捏着医药行业不放的,两三年以后光景总归还会好起来的,那个时候别人都跑了而你没跑,那时的日子应该会好 过很多。有的时候觉得自己这个行业不行了,问题是,再不行的行业,做得人少了也变成了好行业,当大家都觉得不好的时候,往往却是最好的时候。大家都觉得金 融行业好,金融行业门槛高不说,有多少人削尖脑袋要钻进去,竞争激励,进去以后还要时时提防,一个疏忽,就被后来的人给挤掉了,压力巨大,又如何谈得上快 乐?也就未必是"好"工作了。

太阳能这个东西至今还不能进入实际应用的阶段,但是中国已经有7家和太阳能有关的公司在纽交所上市了,国美苏宁永乐其实是贸易型企业,也能上市,鲁泰纺织连续10年利润增长超过50%,卖茶的一茶一座,卖衣服的海澜之家都能上市…其实选什么行业真的不重要,关键是怎么做。事情都是人做出来的,关键是人。

有 一点是需要记住的,这个世界上,有史以来直到我们能够预见得到的未来,成功的人总是少数,有钱的人总是少数,大多数人是一般的,普通的,不太成功的。因 此,大多数人的做法和看法,往往都不是距离成功最近的做法和看法。因此大多数人说好的东西不见得好,大多数人说不好的东西不见得不好。大多数人都去炒股的 时候说明跌只是时间问题,大家越是热情高涨的时候,跌的日子越近。大多数人买房子的时候,房价不会涨,而房价涨的差不多的时候,大多数人才开始买房子。不 会有这样一件事情让大家都变成功,发了财,历史上不曾有过,将来也不会发生。有些东西即使一时运气好得到了,还是会在别的时候别的地方失去的。

年 轻人在职业生涯的刚开始,尤其要注意的是,要做对的事情,不要让自己今后几十年的人生总是提心吊胆,更不值得为了一份工作赔上自己的青春年华。我的公司是 个不行贿的公司,以前很多人不理解,甚至自己的员工也不理解,不过如今,我们是同行中最大的企业,客户乐意和我们打交道,尤其是在国家打击腐败的时候,每 个人都知道我们做生意不给钱的名声,都敢于和我们做生意。而勇于给钱的公司,不是倒了,就是跑了,要不就是每天睡不好觉,人还是要看长远一点。很多时候, 看起来最近的路,其实是最远的路,看起来最远的路,其实是最近的路。

跟对人是说,入行后要跟个好领导好老师,刚进社会的人做事情往往没有经验,需要有人言传身教。对于一个人的发展来说,一个好领导是非常重要的。所谓"好"的标准,不是他让你少干活多拿钱,而是以下三个。

首 先,好领导要有宽广的心胸,如果一个领导每天都会发脾气,那几乎可以肯定他不是个心胸宽广的人,能发脾气的时候却不发脾气的领导,多半是非常厉害的领导。 中国人当领导最大的毛病是容忍不了能力比自己强的人,所以常常可以看到的一个现象是,领导很有能力,手下一群庸才或者手下一群闲人。如果看到这样的环境, 还是不要去的好。

其 次,领导要愿意从下属的角度来思考问题,这一点其实是从面试的时候就能发现的,如果这位领导总是从自己的角度来考虑问题,几乎不听你说什么,这就危险了。 从下属的角度来考虑问题并不代表同意下属的说法,但他必须了解下属的立场,下属为什么要这么想,然后他才有办法说服你,只关心自己怎么想的领导往往难以获 得下属的信服。

第三,领导敢于承担责任,如果出了问题就把责任往下推,有了功劳就往自己身上揽,这样的领导不跟也罢。选择领导,要选择关键时刻能抗得住的领导,能够为下属的错误买单的领导,因为这是他作为领导的责任。

有 可能,你碰不到好领导,因为,中国的领导往往是屁股决定脑袋的领导,因为他坐领导的位置,所以他的话就比较有道理,这是传统观念官本位的误区,可能有大量 的这种无知无能的领导,只是,这对于你其实是好事,如果将来有一天你要超过他,你希望他比较聪明还是比较笨?相对来说这样的领导其实不难搞定,只是你要把 自己的身段放下来而已。多认识一些人,多和比自己强的人打交道,同样能找到好的老师,不要和一群同样郁闷的人一起控诉社会,控诉老板,这帮不上你,只会让 你更消极。和那些比你强的人打交道,看他们是怎么想的,怎么做的,学习他们,然后跟更强的人打交道。

Leo感悟:工作有时就像婚姻!

最近在一个朋友的婚礼上发言,见证他们美好的新婚时刻,我感触很多。工作11年之后,我越来越认为工作在某些时候真的很像婚姻

到了适婚年龄,一般情况下,我们会先在异性里选择个目标,然后再找个能托付终身的人结合,一同成长、相嚅以沫地携手走向人生的尽头;到了适合工作的时候,我们会先选对个自己有兴趣的行业,行业定下来之后 ,我们最好能再跟个有能力、有胸怀的领导,让自己进步,继而成功。

在 婚姻之中选对人会终身幸福,在工作之中选对行、跟对人会少走很多弯路,尽快走向成功。很少人在结婚之后发现彼此差异太大而劳燕分飞(至少在我这个年纪,我 的身边还没遇到。也可能是我接触面比较窄。),而工作中我们如果发现行业不对或者老大有问题的时候,可以很快换个行业、换个老大,这年头都是双选,换工作 的成本毕竟不像离婚那么高。

入对行、选对老大,是事业成功的基石!这方面不能凑合!!!

预告:我最近会进些学校搞校园招聘,在与老师和大学生打交道的过程中,我感慨很多,将有望近期推出《Leo谈当然大学生》系列,敬请关注!

一种完整的汽车牌照识别算法



车辆牌照识别是计算机视觉与模式识别技术在智能交通领
域应用的重要研究课题之一 , 该技术可广泛应用于交通控制与
诱导 , 交通流量检测 , 住宅社区和停车场信息化 , 机场、港口
等出入口车辆管理 , 不停车自动收费等。到现在为止已经有大
量学者在牌照识别问题上做了很多研究 , 提出很多方法。例如
在牌照定位方面 , 主要有基于色彩空间的牌照颜色建模方法 ,
基于 Hough 直线检测的牌照边框定位方法 , 基于牌照纹理特
征的定位方法和基于模板匹配的定位方法等; 在字符分割模
块 , 主要有基于纹理、投影特征的分割算法 , 基于 SVM 的聚
类方法和基于区域生长的分割算法等; 在字符识别模块主要有
模板匹配法、特征分类法和基于神经网络的分类方法等。由于
实际拍摄的图像往往存在噪声污染 , 畸变扭曲 , 字符断裂 , 光
照不均 , 牌照颜色、尺寸多样化等问题 , 而且系统对算法的复
杂度、鲁棒性有较高要求 , 所以单一地运用某种方法不能解决
问题。本文在参考这些研究并综合考察各种算法的基础上 , 提
出一套完整的牌照识别算法 , 在牌照定位模块 , 利用牌照纹理
和投影特征定位 , 并提出了波峰合并算法 , 避免了常规算法中
循环检测跳变点的复杂程序。在字符分割模块利用投影特征和
牌照尺寸的先验知识进行分割。在字符识别模块采用基于字符
特征的分步识别方法和基于牌照字符排列的模块识别结构。整
个处理过程还包含了牌照的噪声去除、边缘检测、反色处理、
二值化等处理步骤 , 考虑了牌照图像中各种可能的不利情况
最后 , 经实验检验 , 该套算法是行之有效的。
1  牌照定位
牌照的定位算法主要应用了牌照区域的纹理特征和投影特
征。(1) 纹理特征: 在牌照的灰度图像中 , 牌照字符与牌照底
色间较大的灰度差异导致字符与牌照底色交界处有明显的灰度
值跳变 , 这种跳变在很大程度上与光照无关 , 而字符与牌照底
色内部无明显跳变。牌照内多个字符均匀分布 , 在车牌所在的
矩形区域内形成有规律的边缘纹理间隔特征。牌照所在矩形区
域长宽比有一定变化范围。(2) 投影特征: 牌照的纹理特征导
致在图像的边缘检测投影图上 , 牌照区域呈现独特的峰谷分布
特征。对边缘检测图进行水平投影和垂直投影如图 1 所示 , 可
以看出 , 牌照区域的水平投影表现为连续的波峰区域 , 区域内
部没有大的落差 , 波形平缓 , 与其它小的波峰区域有明显的波
谷间隔。牌照区域的垂直投影为连续的峰谷交替 , 表现为一组
密集的小峰群 , 各个小波峰间距较小 , 可以合并成一个大的波
峰区域。这组小峰群与其他峰群有较大的间隔 , 可以明显区
分。依据这些投影特征 , 可以对牌照进行水平和垂直定位。
111  边缘检测
首先 , 根据公式 (1) 将读入的彩色位图图像灰度化 , 然
后利用中值滤波方法去除图像中小的颗粒噪声。由于牌照的纹
理的特征主要体现在边缘交界处 , 且由于笔划原因 , 车牌区域
字符的水平边缘较垂直边缘远为丰富 , 所以本算法采用改进的
水平一阶差分算子 (2) 对图像进行水平边缘检测 , 该算子运
算简单 , 能有效地检测出水平方向的边缘象素。然后对检测结
果进行二值化处理 , 大量处理实验表明取阈值为 75 能很好地
保留牌照区域的纹理 , 同时削弱图像其余部分的背景纹理。最
后利用模板 [1 , 1 , 1 ] 对二值化后的单边缘象素进行水平膨
图 1  对边缘检测图进行投影
胀处理 , 使纹理特征更加明显。
gray = (013 3 r + 01 59 3 g + 0111 3 b)
(1)
µ F( x , y) = max[ F( x , y) - F( x - 1 , y) ,
F( x , y) - F( x + 1 , y) ]
(2)
112  投影定位
根据牌照的投影特征 , 投影定位的具体算法就是从水平投
影图中检测出连续的波峰区域 , 从垂直投影图中检测出密集的
峰群区域。检测算法是峰值区域合并。以往的纹理定位中 , 检
测牌照区域算法主要采用统计跳变点的方法 , 算法复杂且不直
观。本算法将行或列的投影和作为判断元素 , 从整体投影特征
出发 , 具有直观且算法简单的特点。在该算法中将投影曲线的
局部最大值定义为波峰 , 局部最小值定义为波谷 , 波峰及其两
侧波谷所夹的区域为该波峰的波峰区域。由投影图可见 , 要寻
找的区域是由毗邻或间隔的波峰区域组成的 , 所以该算法的思
想就是不断合并满足条件的相临波峰区域 , 算法流程如图 2 所
示。
图 2  算法流程
2  字符分割
字符分割就是把牌照中的 7 个字符独立地提取出来。首先
要在锁定的牌照位置上恢复牌照的灰度图像 , 然后用二值化的
方法最大限度地区分字符和背景区域 , 并根据需要对处理结果
做反色处理和倾斜矫正 , 最后依据字符和边框的投影特征进行
字符分割。下面逐一对这些步骤进行介绍。
211  二值化处理
字符和底色的区分在图像处理中应用的是二值化的方法 ,
将字符和底色用两个灰度级表示。二值化阈值的选取采用“特
征线”法[1 ] 。该算法的原理是提取穿过车牌中部的水平直线作
为特征线 , 统计该线上像素点的灰度特征来确定阈值。本文采
用特征线的灰度均值加上一个动态偏移量作为阈值 , 且对牌照
区域进行分段二值化处理 , 避免了牌照灰度不均对二值化的影
响。
T = m + mse/ 2
式中 , m 为特征线灰度均值, mse 为动态偏移量 , 取值为特征线
灰度值的均方差
m =
1
wi dt h ∑
wi dth
k = 1
gray ( J , k)
  J =
hei ght
2
; wi dt h 为牌照区域宽度, gray 为每点的灰度
值, hei g ht 为牌照区域高度
mse =
1
wi dt h ∑
width
k = 1
( gray ( J , k) - m) 3 ( gray ( J , k) - m)
T 为最终所求阈值,二值化就是将牌照区域中灰度大于该
阈值的像素置白( gray = 255 或 RGB = (255 ,255 ,255) ) ,小于
该阈值的像素置黑( gray = 0 或 RGB = (0 ,0 ,0) ) 。
212  牌照反色
我国现行的牌照主要有 4 种类型 : 蓝底白字、黄底黑
字、白底黑字 (或红字) 和黑底白字[ 2 ] 。这 4 种规格的牌
照在二值化图像中表现为黑底白字或白底黑字 , 为统一牌
照区域为黑底白字 , 需要对牌照区域进行反色判断和反色
处理。本文采用连通区域法进行反色判断。判断依据 : 二
值化后的牌照底色部分和字符表现为不同灰度级的连通区
域 , 且底色的连通区域像素数一定远大于单个字符的连通
像素数。根据连通区域像素数目区分底色和字符 , 并将底
色和字符的灰度做比较即可判断是否需要反色处理。上述
步骤中寻找连通区域的算法为 :
Step1  扫描图像 , 对首先遇到的未标记点 s , 标记 s , 并
将 s 的所有 8 个邻点压入堆栈。
Step2  堆栈为空时 , 标记过程结束。堆栈非空时 , 从堆
栈弹出 1 个点并标记该点 , 然后将该点的所有未标记的且具有
相同灰度的邻点压入堆栈。
Step3  重复第 2 步 , 直至堆栈为空时一个连通域标记完
成。
Step4  转第 1 步 , 继续标记下一个连通域 , 直到图像扫
描结束。
213  倾斜矫正
当车牌由于悬挂或摄像原因倾斜角度过大时 , 就要对
牌照进行倾斜矫正。本文采用 Hough 变换进行倾斜矫正。
检测对象是牌照四周首行或首列边缘像素 , 利用 Hough 变
换做 4 条直线拟和 , 求出倾斜角 , 然后对图像进行水平和
垂直矫正。
214  利用投影特征进行字符分割
字符分割分为水平分割和垂直分割。水平分割主要是去除
上下边框及铆钉 , 寻找字符主体区域; 垂直分割是去除左右边
框及二、三字符中间的小圆点 , 然后将 7 个字符完整独立地分
割开。水平切分前 , 在不影响笔画的条件下对牌照图像做上下
方向的腐蚀运算 , 使字符区域和上下边框间的波谷更明显 , 然
后依据波谷切分出字符主体区域。在垂直投影图中 , 与投影均
值相比 , 过长投影一般为边框 , 过短投影一般为铆钉、间隔点
或污点 , 将这些投影视均为噪声去除。然后分波谷切分、字符
区域判定、牌照特征统计和矫正切分 4 步进行垂直分割 , 如下
步骤所示。
(1) 波谷切分: 以波谷作为分割条件 , 将连续的投影区域
切分开[3 ] 。
(2) 字符区域判定: 在牌照字符中 , 除汉字因笔画断裂和
字符“1”会造成较窄的投影外 , 其余字符宽度一致 , 且字符
宽度与牌照长、宽符合一定比例 , 即: L ≈415 H , H ≈119Wc ,
其中L 为字符串长度, H 为字符高度, Wc 为常规字符(“1”除外)
宽度。依据这两个条件对第一步分割出的投影区域进行判断,标
定出常规字符区域。
(3) 牌照特征统计:根据确定的字符区域, 统计具体的 H ,
Wc 值及常规字符间距 D (二、三字符间距除外) 值。
(4) 矫正分割:如果字符区域判定结果小于 7 个字符, 则根
据已经确定的字符区域的位置和字符信息 H 、Wc 、D 对剩余的
投影区做判断分割。其中字符“1”的投影区域满足:W n ≈
013Wc , Dn ≈01 5W c , W n 为字符“1”的宽度, Dn 为字符“1”两
侧的字符间隙。对剩余投影区域进行矫正分割后就可以切分出
7 个完整的字符区域。
3  字符识别
车牌共有 7 个字符 , 一般第 1 个字符是汉字 (警车除外) ,
第 2 个字符是大写英文字母 , 第 3 、4 个字符可能是英文字母 ,
也可能是阿拉伯数字 , 目前第 5 至第 7 个字符均为阿拉伯数
字 , 如“鲁 A ·X 1 2 3 4”。根据字符排列顺序分别采用“汉
字识别”、“字母识别”、“字母数字混合识别”、“数字识别”4
个识别模块 , 每个识别模块都是根据待识别字符的特点 , 分为
粗分类、细分类和特征识别 3 步进行识别。下面对汉字识别和
字母数字识别模块加以介绍。
311  汉字识别
(1) 粗分类: 对汉字进行组合分析 , 根据汉字能不能分解
为偏旁、部首这一性质 , 可以将汉字分成独体字和合体字两大
类。由于汉字结构复杂 , 笔划多 , 为便于识别 , 本文将合体字
仅分为上下式和左右式两类 , 将包围式、半陷式等都归入独体
字类[4 ] 。分类方法是对字符不同方向的投影做双峰检测。
(2) 细分类: 利用矩特征、区域密度、轮廓特征系数、笔
画 (横、竖、左斜、右斜笔画) 特征进行分类。
(3) 特征识别: 针对形似字 , 可以对含有特征笔画的区域
做比较判别。
312  字母数字识别
(1) 粗分类: 根据字母和数字所包含的封闭环的数量和位
置将字符分为单封闭环字符类、双封闭环字符类、无封闭环字
符类[5 ] 。所谓封闭环是指构成字母和数字的弧笔画所形成一个
封闭的环 , 如数字“0”、“8”。
(2) 细分类: 根据字符包含的直笔画的位置和数量进行分类 , 其中直笔画又可分为横笔画、竖笔画、左斜笔画和右斜笔
画 , 笔画识别方法是对字符区域不同方向的投影做波峰检测。
(3) 特征识别: 对形似字可以根据对称性和对含有特征笔
画的区域做对比分析加以区别。
4  处理实例
处理实例分别如图 3~图 7 所示。
图 3  读入彩色图象     图 4  牌照定位结果图
图 5  牌照区域二值化结果 图 6  字符分割结果
图 7  识别结果
5  结论
本文的牌照识别算法主要是从牌照和字符的自身特点出
发 , 具有稳定和适应性好的优点。处理过程中综合考虑了各种
情况 , 如牌照倾斜矫正、反色处理等; 牌照的定位和字符分割
部分在应用纹理和投影特征的基础上 , 提出了直观、简单的波
峰合并算法; 字符识别模块最大地应用了字符的固定特征 , 避
免了模板匹配等识别方法要求归一化、对字符完整性要求高的
特点。通过采集车头和车尾的 200 多幅车辆牌照图像 , 并依据
此方法进行试验 , 结果表明在光照合适、倾斜角小于 15°的条
件下 , 准确定位率可以达到 96 %。
参考文献:
[ 1 ] 张思远 , 樊志远 , 吴仁彪. 车牌识别预处理中的二值化及倾斜矫
正算法 [J ] 中国民航学院学报 , 2006 , 24 (1) : 39 - 41.
[ 2 ] 周运祥 , 林志毅. 车牌识别中反色判断的新方法 [J ] . 交通与计
算机 , 2005 , (3) : 117 - 119.
[ 3 ] 刘庆祥 , 胡迎春. 智能车牌识别系统中字符图像分割技术的研究
[J ] . 长江大学学报 (自科版) , 2005 , 2 (1) : 65 - 67.
[ 4 ] 任柯昱 , 唐  丹 , 尹显东. 基于字符结构知识的车牌汉字快速识别
技术 [J ] . 计算机测量与控制 , 2005 , 13 (6) : 592 - 594.
[ 5 ] 宋建才. 字符结构知识在车牌识别中的应用 [J ] . 计算机应用 ,
2005 , 21 (3) : 33 - 36.

车牌识别概述

车辆牌照识别是计算机视觉与模式识别技术在智能交通领
域应用的重要研究课题之一 , 该技术可广泛应用于交通控制与
诱导 , 交通流量检测 , 住宅社区和停车场信息化 , 机场、港口
等出入口车辆管理 , 不停车自动收费等。到现在为止已经有大
量学者在牌照识别问题上做了很多研究 , 提出很多方法。例如
在牌照定位方面 , 主要有基于色彩空间的牌照颜色建模方法 ,
基于 Hough 直线检测的牌照边框定位方法 , 基于牌照纹理特
征的定位方法和基于模板匹配的定位方法等; 在字符分割模
块 , 主要有基于纹理、投影特征的分割算法 , 基于 SVM 的聚
类方法和基于区域生长的分割算法等; 在字符识别模块主要有
模板匹配法、特征分类法和基于神经网络的分类方法等。由于
实际拍摄的图像往往存在噪声污染 , 畸变扭曲 , 字符断裂 , 光
照不均 , 牌照颜色、尺寸多样化等问题 , 而且系统对算法的复
杂度、鲁棒性有较高要求 , 所以单一地运用某种方法不能解决
问题。本文在参考这些研究并综合考察各种算法的基础上 , 提
出一套完整的牌照识别算法 , 在牌照定位模块 , 利用牌照纹理
和投影特征定位 , 并提出了波峰合并算法 , 避免了常规算法中
循环检测跳变点的复杂程序。在字符分割模块利用投影特征和
牌照尺寸的先验知识进行分割。在字符识别模块采用基于字符
特征的分步识别方法和基于牌照字符排列的模块识别结构。整
个处理过程还包含了牌照的噪声去除、边缘检测、反色处理、
二值化等处理步骤 , 考虑了牌照图像中各种可能的不利情况
最后 , 经实验检验 , 该套算法是行之有效的。
1  牌照定位
牌照的定位算法主要应用了牌照区域的纹理特征和投影特
征。(1) 纹理特征: 在牌照的灰度图像中 , 牌照字符与牌照底
色间较大的灰度差异导致字符与牌照底色交界处有明显的灰度
值跳变 , 这种跳变在很大程度上与光照无关 , 而字符与牌照底
色内部无明显跳变。牌照内多个字符均匀分布 , 在车牌所在的
矩形区域内形成有规律的边缘纹理间隔特征。牌照所在矩形区
域长宽比有一定变化范围。(2) 投影特征: 牌照的纹理特征导
致在图像的边缘检测投影图上 , 牌照区域呈现独特的峰谷分布
特征。对边缘检测图进行水平投影和垂直投影如图 1 所示 , 可
以看出 , 牌照区域的水平投影表现为连续的波峰区域 , 区域内
部没有大的落差 , 波形平缓 , 与其它小的波峰区域有明显的波
谷间隔。牌照区域的垂直投影为连续的峰谷交替 , 表现为一组
密集的小峰群 , 各个小波峰间距较小 , 可以合并成一个大的波
峰区域。这组小峰群与其他峰群有较大的间隔 , 可以明显区
分。依据这些投影特征 , 可以对牌照进行水平和垂直定位。
111  边缘检测
首先 , 根据公式 (1) 将读入的彩色位图图像灰度化 , 然
后利用中值滤波方法去除图像中小的颗粒噪声。由于牌照的纹
理的特征主要体现在边缘交界处 , 且由于笔划原因 , 车牌区域
字符的水平边缘较垂直边缘远为丰富 , 所以本算法采用改进的
水平一阶差分算子 (2) 对图像进行水平边缘检测 , 该算子运
算简单 , 能有效地检测出水平方向的边缘象素。然后对检测结
果进行二值化处理 , 大量处理实验表明取阈值为 75 能很好地
保留牌照区域的纹理 , 同时削弱图像其余部分的背景纹理。最
后利用模板 [1 , 1 , 1 ] 对二值化后的单边缘象素进行水平膨
图 1  对边缘检测图进行投影
胀处理 , 使纹理特征更加明显。
gray = (013 3 r + 01 59 3 g + 0111 3 b)
(1)
µ F( x , y) = max[ F( x , y) - F( x - 1 , y) ,
F( x , y) - F( x + 1 , y) ]
(2)
112  投影定位
根据牌照的投影特征 , 投影定位的具体算法就是从水平投
影图中检测出连续的波峰区域 , 从垂直投影图中检测出密集的
峰群区域。检测算法是峰值区域合并。以往的纹理定位中 , 检
测牌照区域算法主要采用统计跳变点的方法 , 算法复杂且不直
观。本算法将行或列的投影和作为判断元素 , 从整体投影特征
出发 , 具有直观且算法简单的特点。在该算法中将投影曲线的
局部最大值定义为波峰 , 局部最小值定义为波谷 , 波峰及其两
侧波谷所夹的区域为该波峰的波峰区域。由投影图可见 , 要寻
找的区域是由毗邻或间隔的波峰区域组成的 , 所以该算法的思
想就是不断合并满足条件的相临波峰区域 , 算法流程如图 2 所
示。
图 2  算法流程
2  字符分割
字符分割就是把牌照中的 7 个字符独立地提取出来。首先
要在锁定的牌照位置上恢复牌照的灰度图像 , 然后用二值化的
方法最大限度地区分字符和背景区域 , 并根据需要对处理结果
做反色处理和倾斜矫正 , 最后依据字符和边框的投影特征进行
字符分割。下面逐一对这些步骤进行介绍。
211  二值化处理
字符和底色的区分在图像处理中应用的是二值化的方法 ,
将字符和底色用两个灰度级表示。二值化阈值的选取采用“特
征线”法[1 ] 。该算法的原理是提取穿过车牌中部的水平直线作
为特征线 , 统计该线上像素点的灰度特征来确定阈值。本文采
用特征线的灰度均值加上一个动态偏移量作为阈值 , 且对牌照
区域进行分段二值化处理 , 避免了牌照灰度不均对二值化的影
响。
T = m + mse/ 2
式中 , m 为特征线灰度均值, mse 为动态偏移量 , 取值为特征线
灰度值的均方差
m =
1
wi dt h ∑
wi dth
k = 1
gray ( J , k)
  J =
hei ght
2
; wi dt h 为牌照区域宽度, gray 为每点的灰度
值, hei g ht 为牌照区域高度
mse =
1
wi dt h ∑
width
k = 1
( gray ( J , k) - m) 3 ( gray ( J , k) - m)
T 为最终所求阈值,二值化就是将牌照区域中灰度大于该
阈值的像素置白( gray = 255 或 RGB = (255 ,255 ,255) ) ,小于
该阈值的像素置黑( gray = 0 或 RGB = (0 ,0 ,0) ) 。
212  牌照反色
我国现行的牌照主要有 4 种类型 : 蓝底白字、黄底黑
字、白底黑字 (或红字) 和黑底白字[ 2 ] 。这 4 种规格的牌
照在二值化图像中表现为黑底白字或白底黑字 , 为统一牌
照区域为黑底白字 , 需要对牌照区域进行反色判断和反色
处理。本文采用连通区域法进行反色判断。判断依据 : 二
值化后的牌照底色部分和字符表现为不同灰度级的连通区
域 , 且底色的连通区域像素数一定远大于单个字符的连通
像素数。根据连通区域像素数目区分底色和字符 , 并将底
色和字符的灰度做比较即可判断是否需要反色处理。上述
步骤中寻找连通区域的算法为 :
Step1  扫描图像 , 对首先遇到的未标记点 s , 标记 s , 并
将 s 的所有 8 个邻点压入堆栈。
Step2  堆栈为空时 , 标记过程结束。堆栈非空时 , 从堆
栈弹出 1 个点并标记该点 , 然后将该点的所有未标记的且具有
相同灰度的邻点压入堆栈。
Step3  重复第 2 步 , 直至堆栈为空时一个连通域标记完
成。
Step4  转第 1 步 , 继续标记下一个连通域 , 直到图像扫
描结束。
213  倾斜矫正
当车牌由于悬挂或摄像原因倾斜角度过大时 , 就要对
牌照进行倾斜矫正。本文采用 Hough 变换进行倾斜矫正。
检测对象是牌照四周首行或首列边缘像素 , 利用 Hough 变
换做 4 条直线拟和 , 求出倾斜角 , 然后对图像进行水平和
垂直矫正。
214  利用投影特征进行字符分割
字符分割分为水平分割和垂直分割。水平分割主要是去除
上下边框及铆钉 , 寻找字符主体区域; 垂直分割是去除左右边
框及二、三字符中间的小圆点 , 然后将 7 个字符完整独立地分
割开。水平切分前 , 在不影响笔画的条件下对牌照图像做上下
方向的腐蚀运算 , 使字符区域和上下边框间的波谷更明显 , 然
后依据波谷切分出字符主体区域。在垂直投影图中 , 与投影均
值相比 , 过长投影一般为边框 , 过短投影一般为铆钉、间隔点
或污点 , 将这些投影视均为噪声去除。然后分波谷切分、字符
区域判定、牌照特征统计和矫正切分 4 步进行垂直分割 , 如下
步骤所示。
(1) 波谷切分: 以波谷作为分割条件 , 将连续的投影区域
切分开[3 ] 。
(2) 字符区域判定: 在牌照字符中 , 除汉字因笔画断裂和
字符“1”会造成较窄的投影外 , 其余字符宽度一致 , 且字符
宽度与牌照长、宽符合一定比例 , 即: L ≈415 H , H ≈119Wc ,
其中L 为字符串长度, H 为字符高度, Wc 为常规字符(“1”除外)
宽度。依据这两个条件对第一步分割出的投影区域进行判断,标
定出常规字符区域。
(3) 牌照特征统计:根据确定的字符区域, 统计具体的 H ,
Wc 值及常规字符间距 D (二、三字符间距除外) 值。
(4) 矫正分割:如果字符区域判定结果小于 7 个字符, 则根
据已经确定的字符区域的位置和字符信息 H 、Wc 、D 对剩余的
投影区做判断分割。其中字符“1”的投影区域满足:W n ≈
013Wc , Dn ≈01 5W c , W n 为字符“1”的宽度, Dn 为字符“1”两
侧的字符间隙。对剩余投影区域进行矫正分割后就可以切分出
7 个完整的字符区域。
3  字符识别
车牌共有 7 个字符 , 一般第 1 个字符是汉字 (警车除外) ,
第 2 个字符是大写英文字母 , 第 3 、4 个字符可能是英文字母 ,
也可能是阿拉伯数字 , 目前第 5 至第 7 个字符均为阿拉伯数
字 , 如“鲁 A ·X 1 2 3 4”。根据字符排列顺序分别采用“汉
字识别”、“字母识别”、“字母数字混合识别”、“数字识别”4
个识别模块 , 每个识别模块都是根据待识别字符的特点 , 分为
粗分类、细分类和特征识别 3 步进行识别。下面对汉字识别和
字母数字识别模块加以介绍。
311  汉字识别
(1) 粗分类: 对汉字进行组合分析 , 根据汉字能不能分解
为偏旁、部首这一性质 , 可以将汉字分成独体字和合体字两大
类。由于汉字结构复杂 , 笔划多 , 为便于识别 , 本文将合体字
仅分为上下式和左右式两类 , 将包围式、半陷式等都归入独体
字类[4 ] 。分类方法是对字符不同方向的投影做双峰检测。
(2) 细分类: 利用矩特征、区域密度、轮廓特征系数、笔
画 (横、竖、左斜、右斜笔画) 特征进行分类。
(3) 特征识别: 针对形似字 , 可以对含有特征笔画的区域
做比较判别。
312  字母数字识别
(1) 粗分类: 根据字母和数字所包含的封闭环的数量和位
置将字符分为单封闭环字符类、双封闭环字符类、无封闭环字
符类[5 ] 。所谓封闭环是指构成字母和数字的弧笔画所形成一个
封闭的环 , 如数字“0”、“8”。
(2) 细分类: 根据字符包含的直笔画的位置和数量进行分类 , 其中直笔画又可分为横笔画、竖笔画、左斜笔画和右斜笔
画 , 笔画识别方法是对字符区域不同方向的投影做波峰检测。
(3) 特征识别: 对形似字可以根据对称性和对含有特征笔
画的区域做对比分析加以区别。
4  处理实例
处理实例分别如图 3~图 7 所示。
图 3  读入彩色图象     图 4  牌照定位结果图
图 5  牌照区域二值化结果 图 6  字符分割结果
图 7  识别结果
5  结论
本文的牌照识别算法主要是从牌照和字符的自身特点出
发 , 具有稳定和适应性好的优点。处理过程中综合考虑了各种
情况 , 如牌照倾斜矫正、反色处理等; 牌照的定位和字符分割
部分在应用纹理和投影特征的基础上 , 提出了直观、简单的波
峰合并算法; 字符识别模块最大地应用了字符的固定特征 , 避
免了模板匹配等识别方法要求归一化、对字符完整性要求高的
特点。通过采集车头和车尾的 200 多幅车辆牌照图像 , 并依据
此方法进行试验 , 结果表明在光照合适、倾斜角小于 15°的条
件下 , 准确定位率可以达到 96 %。
参考文献:
[ 1 ] 张思远 , 樊志远 , 吴仁彪. 车牌识别预处理中的二值化及倾斜矫
正算法 [J ] 中国民航学院学报 , 2006 , 24 (1) : 39 - 41.
[ 2 ] 周运祥 , 林志毅. 车牌识别中反色判断的新方法 [J ] . 交通与计
算机 , 2005 , (3) : 117 - 119.
[ 3 ] 刘庆祥 , 胡迎春. 智能车牌识别系统中字符图像分割技术的研究
[J ] . 长江大学学报 (自科版) , 2005 , 2 (1) : 65 - 67.
[ 4 ] 任柯昱 , 唐  丹 , 尹显东. 基于字符结构知识的车牌汉字快速识别
技术 [J ] . 计算机测量与控制 , 2005 , 13 (6) : 592 - 594.
[ 5 ] 宋建才. 字符结构知识在车牌识别中的应用 [J ] . 计算机应用 ,
2005 , 21 (3) : 33 - 36.

2008年9月14日星期日

Matlab在图像处理与目标识别方面的应用实验

Matlab在图像处理与目标识别方面的应用实验 —— 二、汽车牌照定位与字符识别
作者:林健(北京理工大学计算机科学技术学院)
指导教师:尚斐(北京理工大学医学图像实验室)
对于汽车牌照定位和数字识别,通过高通滤波,得到所有的边缘 ;对边缘细化,找出所有封闭的边缘;对封闭边缘求多边形逼近 ,在逼近后的所有四边形中,找出尺寸与牌照大小相同的 ,牌照被定位。对牌照区域中细化后的图形对象计算傅立叶描述子 ,用预先定义好的决策函数,对描述子进行计算,判断数字是几。
注意,由于BLOG功能的原因,这里无法显示图片 。您可以下载Word原文档(包含m源文件和相关图片) 。下载地址:
http://disk.linjian.cn

二、汽车牌照定位与字符识别

待处理的图像如下所示。图像整体比较清晰干净,车牌方向端正 ,字体清楚,与周围颜色的反差较大。

要定位汽车牌照并识别其中的字符,我们采用Matlab平台提供的一些图像处理函数,以傅立叶变换通过字符模 板与待处理的图像匹配为核心思想。基本方法如下:

1、读取待处理的图像,将其转化为二值图像。经试验 ,采用门限值为0.2附近时车牌字符最为清楚,杂点最少(如下左图)。

I = imread('car.jpg');
I2 = rgb2gray(I);
I4 = im2bw(I2, 0.2);

2、去除图像中面积过小的,可以肯定不是车牌的区域。

bw = bwareaopen(I4, 500);

3、为定位车牌,将白色区域膨胀,腐蚀去无关的小物件 ,包括车牌字符(如下右图)。

se = strel('disk',15);
bw = imclose(bw,se);

4、此时车牌所在白色连通域已清晰可见,但在黑色区域以外 ,是一个更大的白色连通域,将车牌所在连通域包围了 。有必要将其填充。

bw = imfill(bw,[1 1]);

5、查找连通域边界。同时保留此图形,以备后面在它上面做标记。

[B,L] = bwboundaries(bw,4);
imshow(label2rgb(L, @jet, [.5 .5 .5]))
hold on
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2),boundary(: ,1),'w','LineWidth',2)
end

6、找出所有连通域中最可能是车牌的那一个。判断的标准是 :测得该车牌的长宽比约为4.5:1,其面积和周长存在关系:(4.5×L×L)/(2× (4.5+1)×L)21/27,以此为特征,取metric=27*area/perimeter ^2作为连通域的匹配度,它越接近1,说明对应的连通域越有可能是4.5:1的矩形。

% 找到每个连通域的质心
stats = regionprops(L,'Area','Centroid ');
% 循环历遍每个连通域的边界
for k = 1:length(B)
% 获取一条边界上的所有点
boundary = B{k};
% 计算边界周长
delta_sq = diff(boundary).^2;
perimeter = sum(sqrt(sum(delta_sq,2)));
% 获取边界所围面积
area = stats(k).Area;
% 计算匹配度
metric = 27*area/perimeter^2;
% 要显示的匹配度字串
metric_string = sprintf('%2.2f',metric);
% 标记出匹配度接近1的连通域
if metric >= 0.9 && metric <= 1.1
centroid = stats(k).Centroid;
plot(centroid(1),centroid(2), 'ko');
% 提取该连通域所对应在二值图像中的矩形区域
goalboundary = boundary;
s = min(goalboundary, [], 1);
e = max(goalboundary, [], 1);
goal = imcrop(I4,[s(2) s(1) e(2)-s(2) e(1)-s(1)]);
end
% 显示匹配度字串
text(boundary(1,2)-35,boundary (1,1)+13,...
metric_string,'Color','g',...

'FontSize',14,'FontWeight', 'bold');

end

图示为找到的各个连通区域,中部被标记“○”的矩形匹配度为0.99,是最可能的区域。下边是由它确定的二值图像中的车牌区域 :

7、将车牌图像反白处理,并扩充为256×256的方阵(如下左图),以便下面傅立叶变换中矩阵旋转 运算的进行。

goal = ~goal;
goal(256,256) = 0;
figure;
imshow(goal);

8、从文件读取一个字符模板(以“P”为例,模板图像 直接从上述二值图像中截取得到)。对图像计算傅立叶描述子,用预先定义好的决策函数对描述子进行 计算。变换后的图像中,亮度的高低指示相应区域与模板的匹配程度 (如下中图)。

w = imread('P.bmp');
w = ~w;
C=real(ifft2(fft2(goal).*fft2 (rot90(w,2),256,256)));

9、通过检查C的最大值,试验确定一个合适的门限(这里240比较合适) ,显示亮度大于该门限的点,也就是与模板的匹配程度最高的位置 (如下右图)。

thresh = 240;
figure;
imshow(C > thresh);

对照左右两图,可以说明字符“P”被识别和定位了。同样的方法,可以识别和定位其它字符。

这种方法总体上比较容易理解,Matlab的函数隐藏了傅立叶变换等复杂的计算。缺点 :在定位车牌方面,程序专门按本题给定图像的特点设计 ,没有普适性。字符识别方面,仅能识别与给定模板基本一致的字符 。车牌大小、角度、光线、完整性、清晰度发生变化后 ,就无法识别了。同时对于“8”与“B”这样相似的字符 ,识别时常常混淆。

* 参考文献:

1Applications of the Fourier Transform, Matlab 7.0 Help Documents, The MathWorks.

2Identifying Round Objects, Matlab 7.0 Demos, The MathWorks.

标准车牌图片

2008年9月13日星期六

印刷体汉字识别系统

一、文字识别概述
汉字是历史悠久的中华民族文化的重要结晶,闪烁着中国人民智慧的光芒。汉字数量众多,仅清朝编纂的《康熙字典》就包含了49,000多个汉字,其数量之大,构思之精,为世界文明史所仅有。由于汉字为非字母化、非拼音化的文字,所以在信息技术及计算机技术日益普及的今天,如何将汉字方便、快速地输入到计算机中已成为关系到计算机技术能否在我国真正普及的关键问题。
图1 文字识别的分类

由于汉字数量众多,汉字识别问题属于超多类模式集合的分类问题。汉字识别技术可以分为印刷体识别及手写体识别技术。而手写体识别又可以分为联机(on-line)与脱机(off-line)两种。这种划分方法可以用图1来表示。

从识别技术的难度来说,手写体识别的难度高于印刷体识别,而在手写体识别中,脱机手写体的难度又远远超过了联机手写体识别。

到目前为止,除了脱机手写体数字的识别已有实际应用外,汉字等文字的脱机手写体识别还处在实验室阶段。

联机手写体的输入,是依靠电磁式或压电式等手写输入板来完成的。在书写时,笔在板上的运动轨迹(在板上的坐标)被转化为一系列的电信号,电信号可以串行地进入到计算机中。从这些电信号我们可以比较容易地抽取笔划和笔顺的信息。从90年代以来,联机手写体的识别正逐步走向实用,方兴未艾。中国大陆及台湾地区的科研工作者推出了多个联机手写体汉字识别系统,国外的一些大公司也开始进入这一市场。这一技术也迎合了PDA(Personal Digital Assistant)的发展潮流。

与脱机手写体和联机手写体识别相比,印刷体汉字识别已经实用化,而且在向更高的性能、更完善的用户界面的方向发展。因为它有着广泛的应用前景。目前,办公自动化已成为信息社会不可避免的发展趋势。虽然在计算机网络飞速发展的今天,许多信息已经电子化,世界各地出现了许多“电子版”的报纸、杂志等出版物。但是我们可以看到印刷材料的数量也大大地增加了,一些专业单位如新闻社、图书馆、古籍出版社、档案馆等所接触的印刷材料更是浩如烟海,毕竟阅读印刷材料更为符合人的自然阅读习惯;同时,网络信息资源的爆炸性增长以及网络传输容量的限制,都是方便、快速地获取这些信息的约束因素。电子化的与印刷文本材料如同一枚硬币的两面,互相补充、互相促进,在未来的十几年或更长的时间内将不会出现一者被另一者取代的情况。

二、印刷体文字识别流程简介

印刷体文字识别的过程如图2所示。原始图象是通过光电扫描仪,CCD器件或电子传真机等获得的二维图象信号,可以是灰度(Grayscale)或二值(Binary) 图象。为简单计,在本文以后的论述中,除非特别提及,图象输入的方式均指由扫描仪输入。

 



图2 印刷体文字识别的简单流程图

预处理包括对原始图象的去噪、倾斜校正或各种滤波处理。版面分析完成对于文本图象的总体分析,区分出文本段落及排版顺序,图象、表格的区域;对于文本区域将进行识别处理,对于表格区域进行专用的表格分析及识别处理,对于图象区域进行压缩或简单存储。行字切分是将大幅的图象先切割为行,再从图象行中分离出单个字符的过程。特征提取是整个环节中最重要的一环,它是从单个字符图象上提取统计特征或结构特征的过程,包括为此而做的细化(Thinning)、归一化(Normalization)等步骤。提取的特征的稳定性及有效性,直接决定了识别的性能。文字识别即从学习得到的特征库中找到与待识字符相似度最高的字符类的过程。后处理则是利用词义、词频、语法规则或语料库等语言先验知识对识别结果进行校正的过程。

由此可见,印刷汉字识别技术主要包括:

(1) 扫描输入文本图象。

(2) 图象的预处理,包括倾斜校正和滤除干扰噪声等。

(3) 图象版面的分析和理解。

(4) 图象的行切分和字切分。

(5) 基于单字图象的特征选择和提取。

(6) 基于单字图象特征的模式分类。

(7) 将被分类的模式赋予识别结果。

(8) 识别结果的编辑修改后处理。

其中(4)、(5)和(6),也就是图2中的阴影部分,是印刷汉字识别中最为核心的技术。近几年来,印刷汉字识别系统的单字识别正确率已经超过95%,为了进一步提高系统的总体识别率,扫描图象、图象的预处理以及识别后处理等方面的技术,也都得到了深入的研究,并取得了长足的进展,有效地提高了印刷汉字识别系统的总体性能。

三、印刷体文字识别的研究历程

印刷体文字的识别可以说很早就成为人们的梦想,早在1929年,Taushek就在德国获得了一项有关OCR的专利。欧美国家为了将浩如烟海、与日俱增的大量报刊杂志、文件资料和单据报表等文字材料输入计算机进行信息处理,从50年代就开始了西文OCR(Optical Character Recognition,光学字符识别)技术的研究,以便代替人工键盘输入。

印刷体汉字的识别最早可以追溯到60年代。1966年,IBM公司的Casey和Nagy发表了第一篇关于印刷体汉字识别的论文,在这篇论文中他们利用简单的模板匹配法识别了1,000个印刷体汉字。70年代以来,日本学者做了许多工作,其中有代表性的系统有1977年东芝综合研究所研制的可以识别2000汉字的单体印刷汉字识别系统;80年代初期,日本武藏野电气研究所研制的可以识别2300个多体汉字的印刷体汉字识别系统,代表了当时汉字识别的最高水平。此外,日本的三洋、松下、理光和富士等公司也有其研制的印刷汉字识别系统。这些系统在方法上,大都采用基于K-L数字变换的匹配方案,使用了大量专用硬件,其设备有的相当于小型机甚至大型机,价格极其昂贵,没有得到广泛应用。

我国对印刷汉字识别的研究始于70年代末、80年代初,大致可以分为三大阶段:

(1) 第一阶段从70年代末期到80年代末期,主要是算法和方案探索。

(2) 第二阶段是90年代初期,中文OCR由实验室走向市场,初步实用。

(3) 第三阶段也就是目前,主要是印刷汉字识别技术和系统性能的提高,包括汉英双语混排识别率的提高和稳健性的增强。

同国外相比,我国的印刷体汉字识别研究起步较晚。但由于我国政府对汉字自动识别输入的研究从80年代开始给予了充分的重视和支持,经过科研人员十多年的辛勤努力,印刷体汉字识别技术的发展和应用,有了长足进步:从简单的单体识别发展到多种字体混排的多体识别,从中文印刷材料的识别发展到中英混排印刷材料的双语识别。各个系统可以支持简、繁体汉字的识别,解决了多体多字号混排文本的识别问题,对于简单的版面可以进行有效的定量分析,同时汉字识别率已达到了98%以上。

清华大学电子工程系、中国科学院计算所智能中心、北京信息工程学院、沈阳自动化研究所等单位分别研制开发出实用化的印刷体汉字识别系统。尤其是由清华大学电子工程系研制的清华TH-OCR产品,始终处于技术与产品发展的最前沿,并占据着最大的市场份额,代表着中文OCR技术发展的潮流。

这一成就,是对中华文化宝贵遗产的继承和发扬,在世界电脑发展史上,必将留下光辉的一页,同时,这也是造福子孙千秋万代的大事。国家高技术研究发展“863”计划、国家重点科技攻关计划、国家自然科学基金和军事基础研究基金都对这一研究课题予以极大的重视和大力的支持。

四、印刷体文字识别研究方法简介

识别方法是整个系统的核心。用于汉字识别的模式识别方法可以大致分为结构模式识别、统计模式识别及两者的结合。下面分别进行介绍。

4.1 结构模式识别

汉字是一种特殊的模式,其结构虽然比较复杂,但具有相当严格的规律性。换言之,汉字图形含有丰富的结构信息,可以设法提取含有这种信息的结构特征及其组字规律,作为识别汉字的依据,这就是结构模式识别。

结构模式识别是早期汉字识别研究的主要方法。其主要出发点是汉字的组成结构。从汉字的构成上讲,汉字是由笔划(点横竖撇捺等)、偏旁部首构成的;还可以认为汉字是由更小的结构基元构成的。由这些结构基元及其相互关系完全可以精确地对汉字加以描述,就像一篇文章由单字、词、短语和句子按语法规律所组成一样。所以这种方法也叫句法模式识别。识别时,利用上述结构信息及句法分析的方法进行识别,类似一个逻辑推理器。

用这种方法来描述汉字字形结构在理论上是比较恰当的,其主要优点在于对字体变化的适应性强,区分相似字能力强;但是,在实际应用中,面临的主要问题是抗干扰能力差,因为在实际得到的文本图象中存在着各种干扰,如倾斜,扭曲,断裂,粘连,纸张上的污点,对比度差等等。这些因素直接影响到结构基元的提取,假如结构基元不能准确地得到,后面的推理过程就成了无源之水。此外结构模式识别的描述比较复杂,匹配过程的复杂度因而也较高。所以在印刷体汉字识别领域中,纯结构模式识别方法已经逐渐衰落,句法识别的方法正日益受到挑战。

4.2 统计模式识别

统计决策论发展较早,理论也较成熟。其要点是提取待识别模式的的一组统计特征,然后按照一定准则所确定的决策函数进行分类判决。

汉字的统计模式识别是将字符点阵看作一个整体,其所用的特征是从这个整体上经过大量的统计而得到的。统计特征的特点是抗干扰性强,匹配与分类的算法简单,易于实现。不足之处在于细分能力较弱,区分相似字的能力差一些。常见的统计模式识别方法有:

(1) 模板匹配。模板匹配并不需要特征提取过程。字符的图象直接作为特征,与字典中的模板相比,相似度最高的模板类即为识别结果。这种方法简单易行,可以并行处理;但是一个模板只能识别同样大小、同种字体的字符,对于倾斜、笔划变粗变细均无良好的适应能力。

(2)利用变换特征的方法。对字符图象进行二进制变换(如Walsh, Hardama变换)或更复杂的变换(如Karhunen-Loeve, Fourier,Cosine,Slant变换等),变换后的特征的维数大大降低。但是这些变换不是旋转不变的,因此对于倾斜变形的字符的识别会有较大的偏差。二进制变换的计算虽然简单,但变换后的特征没有明显的物理意义。K-L变换虽然从最小均方误差角度来说是最佳的,但是运算量太大,难以实用。总之,变换特征的运算复杂度较高

五、汉字识别技术的最新进展

汉字识别最为重要的指标是识别正确率,最新技术包括两个方面:一是使用组合优化特征的综合识别方法,提高正确率,增加适应性;二是英文与数字的比例超过1/3时的汉英双语混排识别。

5.1 组合优化特征的综合识别方法

抽取单一种类的特征进行汉字识别,误识率较难降低,且抗干扰性不易提高。因为这样所利用的汉字信息量有限,不能全面反映汉字的特点,对任何一种特征来说,必然存在其识别的“死角”,即利用该特征很难区分的汉字。从模式识别的角度来看,若将汉字的全部矢量化特征所组成的空间称作空间(i=1,2,……),那么利用整个空间Ω的信息进行汉字识别,由于提供的汉字信息很充分,抗干扰性会大大增强。

但是,在实际应用中,必须考虑到识别正确率与识别速度(运算量)及系统资源三者的折衷。所以任何一个实用的OCR系统只利用其中部分子空间的信息。由于信息的缺陷,便不可避免地遇到识别“死角”的问题。

“组合优化特征法”识别汉字的基本思想是:首先,在长期汉字识别研究的基础上,选择结构元等多种基于汉字笔划结构的统计特征,这些特征具有良好的类内聚合和类间发散的分类能力;其次,有机地多种汉字特征互为补充,相得益彰,使汉字识别的“死角”大幅减小,从而提高识别率。

“组合优化特征”的综合识别方式,是建立在对各种方法充分了解的基础之上,基于知识的识别方式,因为这样既富有针对性,充分发挥了各个方案的长处,取得了高的识别率,又提高了系统的运行效率。

5.2 汉英双语混排识别

随着信息产业的开放与发展,越来越多的英文词语出现在我国的印刷文本材料中。尤其在科技文献刊物中,更是屡见不鲜,英文、数字的比例常常超过1/3。英文字母出现在文本行中,其大小、高度与汉字中的偏旁部首很类似,难以区分是汉字偏旁部首,还是英文字母;英文单词中字母之间的距离不等,粘连也相当普遍;汉字是以横竖等笔划为基本结构的,而英文则是以曲线为主。因此,汉英双语混排识别的关键在于汉字和英文字母的正确分辨和切分。切分的传统方法是利用“高度椏矶葪位置”信息,但是由于汉字中可左右分离的字很多,其各部分无论高度和宽度,均与英文字母很接近,如“即”、“旧”等;而且,英文字母的粘连现象也无法解决;此外,许多英文的双字母组合,三字母组合,是用一个字模来印刷的,如“fi”等。因此,在“高度椏矶葪位置”准则基础上,根据“TET(Try-Error-Try)准则”,加入了“切分椩な侗饤二次切分”的手段。即对于各种可能出现的切分情况,进行预识别,从中选出误差最小,最合乎语言逻辑习惯的组合。

对于粘连的英文字母,由于连续粘连在一起的字母可能有多个,组合的情况较多,且粘连的种类亦有较大区别。进行“穷举式”试切分,所花费的时间代价太大。因此采用“化整为零”的方法,根据最佳邻域搜索原则以及字母串在水平和垂直方向上的投影信息,将字母串从最可靠的地方一分为二,分为两个子串;然后在这两个子串内再重复上述步骤,直到子串的长度大约为三个英文字母的平均宽度;最后进行“穷举式”试切分,从而大大缩短了切分所用的时间。从而有效地解决了汉英双语混排文本的识别。

5.3 高性能实用汉字识别系统的其它关键技术

实用汉字识别系统的其它关键技术主要包括:

(1) 扫描仪自动亮度调节(ABJ-Automatic Brightness Ajustment)技术。

(2) 印刷表格的自动输入的邻域分析技术。

(3) 版面的自动分析(ALA-Automatic Layout Analysis)技术。

综上所述,最新的印刷汉字识别技术流程,如图3所示。



 

图3 最新的印刷汉字识别技术流程

六、结论与展望

总体来说,近几年来国内对印刷体汉字识别的研究还是相当深入的,也取得了很大成绩,使系统的识别率不断上升。目前印刷体汉字识别系统的应用已经相当成熟。例如,刚刚通过国家教委组织的鉴定的清华TH-OCR97综合集成汉字识别系统,对中等质量的样本,识别率已经可以达到99%左右或更高。不过,这些系统还存在着一些可改进之处:

 

从识别角度

(1) 汉字识别率总是汉字识别中最重要的指标,应该达到更新的高度,从而最大程度地减少用户校对、修改的工作量。

(2) 印刷体汉字识别的鲁棒性(Robustness)还不够强。Robust在英文中是“健壮的”或“强的”之意。鲁棒性可以理解为识别系统对于不同质量、不同字号、不同字体的文本图象表示出来的适应性。在文字识别中,识别系统的鲁棒性尤其反应在随着印刷质量的下降,系统误识率的上升趋势上。

目前的OCR系统都对扫描图象的质量有一定要求,扫描亮度不能太暗也不能太亮,保证文字的图象即不会暗成一个黑块也不会亮得笔画发生很多断裂。这就对用户的使用提出了较高要求。

印刷文本的质量可能千差万别,一般用户对扫描仪的操作也可能不够合适,这往往造成识别图象的质量不佳,为使任何未经训练的用户都能用好OCR系统,系统的鲁棒性必须不断提高。

(3) 汉英混排文本的切分仍不够成熟。与识别技术相比,对切分的理论和方法还缺乏系统的研究和理论。随着汉字识别率的上升以及汉英混排文本的增多,切分错误在所有错误中所占的比重不断上升,怎样使文字正确分割变成了另一个还未很好解决的问题。

 

用户界面和自动化程度方面

(1) 扫描仪自动亮度调节,无须用户选择门限,自动随文本种类、印刷质量不同选择合适的扫描仪亮度门限,以保证识别率。

(2) 版面的自动分析,无需人工干预,可以将印刷文本材料,如报纸、杂志等,上面有各种插图、表格、花边,且同时存在横、竖版面等加以区分和作相应的标记,以便分别处理。

(3) 中文印刷表格的自动录入,对于中文印刷表格,可以进行框线的自动检测、栏目自动切分,直至将各栏目中的内容识别出来,并且可以和数据库直接相连,完成印刷表格自动录入至数据库的任务。

(4) 版面自动恢复,仅有文字识别往往不能满足实际需要。能够保持原来的排版形式、字体信息、表格和插入的图形图象,以便在Word、北大方正等排版软件中直接修改,一直是许多用户的梦想。

(5) 系统提供用户自学习功能,使用户自由地扩大专业识别字符集;以及适用于各种应用环境的汉字识别系统。例如:MS-DOS环境、Windows环境和UNIX环境下中文OCR版本,满足不同用户的需求。

 

其它方面

(1) 系统总体性能的进一步提高。解决象报纸这种栏目多而位置排列复杂的印刷文本材料的版面自动理解;利用自然语言理解知识进行识别后处理;进一步提高英文的识别率和适应性,降低系统的误识率,等等。

(2) Internet/Intranet上的网络版本。充分利用网络上的资源及计算能力,提高系统的性能,使用户能够更方便地协同工作。

(3) 系统固化以及系统各部分的质量和性能的稳定提高。

(4) 扩大OCR核心技术的应用范围,开发更多的应用系统,并将研究成果迅速转化为产品,提高软件的商品化水平,使之能大量地走出国门,走向全世界。

这些都是汉字识别系统急待解决的问题,也是汉字识别技术今后努力发展的重要方向。

欢迎访问、交流!对本博客有何建议,请
来信告知!
本博内容来源于网络,如有不当或侵犯权益,请来信告知,将及时撤除!
如引用博客内容、论文,请注明原作者!

Google一下本博客