(1) 模型部分
模型部分表现为图像的采集、处理、文字识别等与数据相关的处理操作。系统设计时将与图像数据处理相关的处理操作进行封装,实现了CDibImage类。该类描述了所有与证件图像相关的数据处理。在对此类系统中证件图像的特点进行分析和归纳总结的基础上,提出了一组合理、有效的处理流程方案,并用OpenCV的图像库实现自动白平衡色彩补偿、失真样条曲线建模畸变补偿[7]、基于轮廓信息和Hough变换的倾斜角检测完成倾斜矮正、结合图像先验知识的粗分割与细分割以及文字信息识别。该方案是一种通用的处理流程和解决方案,实现证件图像各个信息图块的正确分割,适用于所有的证件图像处理,因而能够适应日后扩展的新型证件识别的需要。模型的扩展包括增加模型的功能集和扩展模型的应用对象。前者诸如增加图像伽玛值校正算法等操作,通过增加新的数据处理函数或者通过一些特定类进行封装便可实现。后者诸如利用已有的模型处理新型的证件,此时仅需要针对该证件上相应的信息段分布规律按以上流程进行简单再设计即可实现。
(2) 控制器部分
为了保证逻辑的一致性,在采用MVC设计的系统中通常仅设计单控制器[9]。显然,单控制器需要在系统中被多次调用。为此,系统对控制器专门采用单件模式(Singleton) [8]设计。将单件模式应用于MVC模式中的控制器设计,能够使系统开发过程更具有安全性,免除了控制器的作用域全局化(即相当于全局变量)带来的潜在不安全性,利于软件规模的扩展设计。通常情况下,单件类自身负责保存它的唯一实例,并且使用一个静态成员函数提供全局的访问点[9]。
定义一个控制器类Controller,为该类定义一个静态成员函数GetInstance,以提供这个类操作的全局访问点。Controller类还定义了一个表态成员变量static Controller* singleton,用于保存一个指向它的唯一实例的指针。客户仅通过Controller::GetInstance函数访问这个单件。指针变量Singleton初始化为0,而静态成函数GetInstance返回该变量值。如果其值为0,则用唯一的实例初始化它。Singleton使用惰性(Lazy)初始化,它的返回值直到第一次访问时才被创建和保存。Controller类的构造函数是私有类型的,试图直接实例化Controller类的程序将在编译时得到一个错误信息,这就保证了仅可以创建一个实例。
(3) 视图部分
软件系统的视图部分表现为与用户交互的图形用户界面。软件设计中采用CTabCtrl页表容器控件,用以容纳各种证件显示页面。为此设计了一个类CTabSheet,其UML的类属性如图5所示。
利用CTabSheet这个类,只需要在主界面中维护一个该类的对象CTabSheet m_tabSheetCard,便可以实现对各个页面的管理与控制。例如要增加页面,则仅调用CTabSheet::AddPage()这个方法即可;要更换页面,则只需要调用TabSheet::SetCurSel()方法设置当前选中的新页面即可。在系统中,所有的证件子对话框类均继承于CCertificate这个类,如图6所示,而该类又继承于MFC中的CDialog类。若要添加新的护照页面,可以用MFC向导生成相应的CPassport类。
4 实验
实验中硬件装置的镜头采用前面所介绍的广角镜,PC采用Lenovo 奔腾双核CPU的启天M6900 PC机器。系统先对采集到的图像进行样条函数畸变补偿,校正处理后的身份证图像如图7所示;再对处理后的身份证图像进行识别,采集到证件的信息内容如图8所示。从整个采集识别情况来看,本方案设计的证件系统能有效地实现图像的输入、捕捉、处理以及证件信息识别等功能。
本文提出了一个证件信息采集系统,并对整个系统的软硬件部分进行描述。系统采用焦距为1.8 mm、可视角大于140°的微距广角镜头,使得证件在镜头前方约45 mm处可以得到完整取景。采用MVC架构设计证件图像信息采集软件,在软件架构上实现了各模块之间的松耦合,保证系统软件部分的可扩展性和可复用性。试验表明,本证件系统可以满足实际证件信息采集使用要求,并具有良好的可扩展性,为今后扩大系统的证件识别种类和加入更新的图像处理算法提供了良好的软件平台。本证件信息采集系统亦是RFID型证件识别系统的一个有效功能补充。
【想第一时间了解安防行业的重磅新闻吗?请立即关注中安网官方微信(微信号:cpscomcn)——安防行业第一人气微信,万千精彩,千万不要错过!!!
网友评论
共有0条评论 点击查看全部>>24小时阅读排行
本周阅读排行