探讨面向设计模式的人脸信息系统

中国论文网 发表于2022-11-15 12:26:09 归属于通信学论文 本文已影响515 我要投稿 手机版

       中国论文网为大家解读本文的相关内容:          

摘 要:本文在明确人脸信息系统设计必要性的基础上,分析了设计模式的概念,对人脸信息系统的结构、外观模式、策略模式以及桥接模式进行了设计,并进一步探讨了人脸信息系统主要设计模式的实现。

关键词:设计模式;人脸信息系统;面向对象
1 引言
  设计模式通常是对于某一类软件设计问题的可重用的解决方案。与此同时,随着社会信息化迅速发展,人脸信息系统越来越广泛,规模越来越大,需求越来越多,系统日益复杂。当然在不同的领域中对设计模式的应用也会有所不同。探索人脸信息系统中的设计模式,对人脸信息系统的设计有重要的意义。
2 设计模式的概念界定
  设计模式是面向对象设计的专家设计经验的总结,描述了解决一般设计问题的方案和效果,其价值在于重用抽象的、通用的面向对象设计思想来解决具体的设计问题。设计模式所关注的是特定的设计问题及其解决方案,在每种模式中均描述了一个设计问题和一个经过验证的、通用的解决方案,这个方案说明了在软件开发过程中特定场景下解决重复发生的问题的方法,它通常由多个对象组成。每一个设计模式都集中于一个特定的面向对象设计问题或设计要点,描述了什么时候使用它,以及使用的效果和如何取舍等,是软件设计过程中的设计经验,可以被应用于任何系统。
  此外,设计模式在抽象的粒度和抽象层次上各不相同,对设计模式进行分类可以帮助找出相关的模式,也有利于发现新的模式。从结构型的角度出发,设计模式可以分为:桥接模式(Bridge)、组合模式(composite)、外观模式(Facade)、策略模式(Strategy)、代理模式(proxy)等[1]。
  总之,设计模式提供了一个公共的解决方案的词汇表,可用来简洁地表达解决方案,也会使新的系统开发者更加容易理解其设计思路。
3 人脸信息系统的设计
3.1系统主要结构的设计
  人脸信息系统根据功能需求主要分为三个模块:人脸特征训练模块、人脸检测模块和特征提取与识别模块。当一幅图像载入后,首先对其进行预处理去除噪声,锐化,颜色转换,然后通过检测算法检测是否存在人脸,如存在继续对人脸进行定位与分割,并对人脸图像进行归一化、特征提取和识别,最后将特征与人脸数据库中的特征数据进行比对得到结果。还要其他模块如人脸信息登记、图像预处理、结果处理等。系统的主要结构如图3-1所示:
  
  
  
  
  
  
  
  
  
  
  

图3-1 人脸信息系统的结构图
3.2 系统外观模式的设计
  为了简化客户程序与子系统之间的交互接口,以及将复杂系统的内部子系统与客户程序之间的依赖解藕,就要用外观模式。GOF中对外观模式的定义:“为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。”本文研究的人脸信息系统外观模式结构如图3-2所示:
  
  
  
  
  
  
  
  
  
  
  图3-2 人脸信息系统外观模式结构图
  图3-2中,Clientl、Client2、Client3…要使用子系统的功能时,用一个Facade类封装子系统中的功能对应的接口,让Facade提供更高级、更方便的接口供Client使用,来代替原来子系统的接口。而且很多时候Client并不需要使用子系统的所有功能。这样Facade模式就可以用来隐藏或者封装系统。Facade类能够将系统作为自己的私有成员包含进来。在此情况下,原系统将与Facade联系起来,但Facade的客户无需看到。
  本文研究的人脸信息系统适应性很好,能够从多种外部系统或子系统或设备获取要用来进行人脸识别的图像,这些子系统可能会是PC图像文件、手持终端、摄像头等,要从这些子系统获取图像就要与这些子系统打交道。假设设备或子系统提供使用的接口类或者是组件分别为:PC图像文件(PicFromFile),摄像头(PicFromMonitor),相机(PicFromCamaro) [2]。
  此外,每个接口类或者是组件都有它们自己的从相应的设备或子系统获取图像的方法,如果让系统在每次需要图像时直接使用这些接口类或者是组件,则会让程序杂乱无章,很容易出错,调试也会繁杂。而且使用这些子系统或者设备只是为了获得一个图像即一张相片,亦即一个Pictures类对象,为了解决这个问题把每个接口类用外观模式进行封装。这样,当人脸信息系统中要获取图像时,只需定义一个Facade类对象调用其GetPic()方法即可,而不用去调用一序列的初始化、检测设备、读取数据、返回图像等过程。
3.3 系统策略模式的设计
  策略模式的基本思想是定义对同一操作的多种算法,把它们一个个封装起来,并且使它们可相互替换,本模式使算法可独立于使用他的客户而变化。使用strategy模式可以给系统设计带来如下优点:增强灵活性,系统可以根据不同需求选择不同算法;增强可可扩展性,添加新的算法时,可以直接添加新的子类,增强代码的可读和易维护性,它使得算法可以独立于它使用的客户而变化。
  strategy模式定义所有算法的公共接口。Context使用这个接口来调用某ConcreteStrategy定义的算法。以strategy接口实现某具体算法Context用一个ConcreteStrategy对象来配置,维护一个对strategy对象的应用。可以定义一个接口让strategy访问它的数据。
3.4 系统桥接模式的设计
  本文研究的人脸信息系统中的特征与比对方法都是变化的,那么根据面向对象设计原则:“找出变化并封装之”和“优先使用对象聚集,而不是类继承”,这样可以应用Bridge模式来设计这些类。
  针对人脸信息系统的特征类和比对方法类应用,本文设计Bridge模式的思想是“将抽象部分与其实现部分分离,使他们可以独立地变化”。用Brid模式将所有实现定义一个接口,供抽象类的所有派生类使用。实现方法是将实现封装在一个抽象类中,在要实现的抽象的基类中包含一个实现的指针(或句柄)。
4 人脸信息系统的实现
4.1系统实现环境
  本文研究的人脸信息系统实现主要是指系统的类及类之间的关系是如何实现的。系统编程采用VC++语言,因为VC++支持虚函数和抽象函数,能实现面向对象的多态特性,从而能更好地实现设计模式的效果。
4.2 系统相关设计模式的实现
  (1)外观模式的实现
  从设备获取图片的抽象类及具体实现类的实现代码框架如下所示:
  classPicFromCamera : PublicFetchPic
  { public :
   Picture* getPic() ; // 返回获取并生成的图片
   } ;
  Picture* PicFromCamera :: getPic ( )
  { Picture*P = NULL ;
Initcamera() ; // 对应具体的设备初始化方法
ReadoataFlue() ; //读取数据流
MakePicture() ; // 将读取的数据生成图片
Return p ; // 返回图片数据
  }
  (2)策略模式的实现
  本文研究的人脸信息系统的人脸检测接口类及其具体实现类的代码框架类如下所示:
  Class Detection
  {public :
Detection ( picture *P ) ;
Virtual void pretreat ( ) ; // 预处理方法接口
Virtual bool detect ( ) ; //检测方法接口
……
Private:
Picture*Pc ;
} ;
  Class DetectKnowledge : Public Detection
  { public :
   DetectKnowledge ( Picture *p ) ; // 知识检测方法
   Void pretreat( ) ; // 预处理具体算法
   Bool detect( ) ; //检测具体算法
  } ;
  (3)桥接模式的实现
  本文研究的人脸信息系统的特征抽象类及其具体实现类代码框架如下所示:
  Class Feature
  { public :
   Virtual int compare ( CCompareAlgorithm * ) =0 ; // 比对方法接口
   ……
   Private:
    Vector < double > v ; //人脸特征数据序列
   } ;
  Class FeatureFaceFeature : Public Feature
  { public :
   Int compare ( CCompareAlgorithm *) ; // 调用比对方法
   ……
} ;
  Int FeatureFaceFeature :: compare ( CCompareAlgorithm *ca )
  { ca -> compare ( ) ; //调用具体的比对算法
  Return l ;
  }
4.3 系统的测试
本文研究的基于设计模式的人脸信息系统的测试主要针对性能及准确率进行。
(1)性能测试。数据库服务器上存放有10万条记录,在性能测试期间使用了10台客户机,每台客户机上测试了20张人脸图像,平均每张人脸比对时间在30秒内,且数据库服务器没有因为连接过多,查询数据量大而出现严重不能正常工作的情况。
(2)准确率测试。由于图像受光照等环境因素影响,对识别准确率提出了挑战。但因为本系统设计独特,适应性较强,算法多向性、强适应性等,使得系统准确率提高。经过测试200张人脸图像的识别情况,有162张人脸图像能准确地从人脸特征库中识别出来。
5 小结
目前,该系统已经在某部门中使用,经过不断的测试和意见反馈,基于设计模式的人脸信息系统运行稳定,并且具有非常好的扩展性,客户提出新的功能需求时,可以很容易的进行扩展。使用该系统将工作人员从繁琐的日常事务中解脱出来,实现办公和业务办理的自动化,从而进一步提高办公效率和快速应变的能力,提高了部门的办公效率,也给被认证用户提供了方便,不再需要出示指纹、拿身份证等手续了。

参考文献:
[1]汪作文.试论面向对象的设计模式[J].科技信息, 2009,(28).
[2]罗昊,孟传良.基于特征脸和LDA的人脸识别[J].贵州工业大学学报(自然科学版), 2005,(01).

  中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。

返回通信学论文列表
展开剩余(