指纹算法研究平台的设计与实现_第1页
指纹算法研究平台的设计与实现_第2页
指纹算法研究平台的设计与实现_第3页
指纹算法研究平台的设计与实现_第4页
指纹算法研究平台的设计与实现_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

指纹算法研究平台的设计与实现

0指纹算法研究平台识别生物特征是当前生物特征识别领域最常用的技术之一。目前很多国内外学者对指纹识别技术作了大量研究,不同原理的指纹识别算法不断涌现。算法研究工作者都需要将自己的算法实现并进行性能测试计。因此,绝大多数算法研究工作者都需要搭建针对自己所研究算法的研究平台。通常,这些平台是同具体的算法紧密集成在一起的,不具有通用性。这不仅造成资源的浪费而且也使算法研究工作者难以将精力完全投入到算法研究上,影响了算法研究的进度。图1说明了在指纹图像识别算法研究工作中,算法研究、平台、应用有着紧密的关系。从这样的相互关系中,不难看出平台对于指纹识别算法研究的重要意义。目前,还很难见到关于通用指纹算法研究平台设计与开发方面的成果。北京数字指通软件技术有限公司开发了一种指纹图像处理系统FingerpassPlatform,该系统采用美国国家标准指纹数据库NIST作为测试数据集,采用FVC2000、FVC2002的性能评价体系,可以加载多个识别算法,并可以随时扩充,在一定程度上具备进行指纹识别算法辅助研究的功能。本文针对当前指纹识别算法研究平台中存在的问题,借鉴了FingerpassPlatform系统的功能定义,讨论了通用指纹算法研究辅助平台的研究与开发。通过该平台不仅可以更好的从局部上去理解单个算法的性能指标、不同算法的性能差异,而且还有助于在整体上去理解和把握不同算法之间的影响。本文介绍了指纹算法研究平台的设计和开发所涉及的MVC设计模式、工作流思想和基于插件的软件设计等理论基础;给出了平台的整体设计、操作平台详细设计、平台API、平台插件接口详细设计和平台数据模型接口;举例说明了本文所设计与开发的指纹识别算法平台在指纹图像预处理中的应用;最后对本文所做的工作进行了总结。1指纹算法设计的理论基础指纹算法研究辅助平台定义了开放式的体系结构,在设计上借鉴了一些当前较为流行的体系结构和程序设计思想,本节重点介绍指纹算法研究平台设计与开发的理论基础。1.1控制部分功能业务程序MVC设计模式的主要思想是用面向对象的设计方法将用户界面与程序本身隔离。由应用功能层、人机界面层、控制器3部分构成。应用功能层是不依赖用户界面的,这样就隔离了用户界面的变更对业务程序的影响。用户界面负责收集用户的输入,显示用户需要的数据;控制器负责将用户的请求调用到实际的业务程序,也将业务程序处理的结果回送给用户界面;业务程序具体处理业务操作。同时业务模块可能主动发送消息到用户界面,通知界面显示数据。1.2概念的发展:从提出一个概念时提出的概念工作流是针对工作中具有固定程序的常规活动而提出的一个概念。通过将工作活动分解成定义良好的任务、角色、规则和过程来完成执行和监控,达到提高生产组织水平和工作效率的目的。1.3改变文件的格式插件是一种程序设计技术,是一种基于部件技术的软件体系结构。在插件式结构的应用中,程序并不是单一的执行文件,而是由主程序和若干外部小模块组成,这些小模块是按一定的规则编写,能够在运行时动态加入到系统中。2指纹算法平台的设计和实现指纹识别算法研究辅助平台在设计上借鉴了MVC设计模式、工作流管理系统、插件软件设计思想等先进的软件体系结构,具有较好的可扩充性。2.1指纹算法研究平台通过对已有平台的研究我们发现作为一个算法研究平台只需提供算法性能统计和算法运行过程观察两类功能就可以很好的达到算法研究的目的。不同的指纹算法在性能统计指标和算法中间结果的表现形式必然存在较大差异,针对这个问题我们的指纹算法研究平台定义了一个开放式的体系结构,将指纹识别算法模块、算法性能统计模块和算法运行过程观察模块均设计成平台插件,通过开发插件,算法研究工作者可以在平台下对各种不同的指纹算法进行研究。平台系统结构如图2所示。指纹算法研究平台采用算法链路模型对算法执行过程进行了抽象:数据装载插件是算法运行的起始点,负责获取算法运行所需的数据;一系列指纹算法插件构成指纹算法的主体,指纹算法执行过程就是按照一定的顺序依次执行每个算法插件;性能评价插件负责对指纹算法一次运行的结果进行收集,并对多次运行的结果进行性能评价;算法观察插件对算法运行过程中产生的中间结果或性能评价插件产生的结果进行可视化的显示。算法插件通过平台API与指纹识别算法研究平台通信。指纹识别算法研究平台的体系结构是先进的开放式体系结构,具有非常好的可扩充性,不同的算法和性能评价标准可以很容易的集成到平台之上,同时在逻辑上算法插件开发工作者完全从交互界面的开发中解脱出来,可以专注于算法的实现,将大大提高算法实现和研究的工作效率。2.2平台api的开发平台API是整个系统的基础。一方面帮助插件的编写者使用平台功能及与平台通信;另一方面指纹算法研究平台的操作平台也完全建立在平台API之上。平台API被设计成纯C接口,核心平台开发工作者和插件开发工作者可以随时使用。平台API提供如下功能:日志功能、算法数据导出、算法数据定位、算法关键系数设定。2.2.1算法链路中的用户存储日志功能就是在平台运行或算法运行过程中通过平台API记录平台状态或算法状态。平台API定义了两种日志:系统日志和用户日志。操作平台产生的日志是系统日志,用户插件产生的日志是用户日志。同时由于在算法链路中往往存在很多算法插件,为了避免所有的算法插件产生的用户日志堆放放到一起,平台API定义了ILogTarget接口,算法链路中的每个算法插件关联惟一的一个ILogTarget,算法插件产生的全部用户日志将全部发送给相应的ILogTarget。操作平台将ILogTarget发送来的日志信息在日志窗口显示,也可以根据用户需要重定向到特定的文件中。日志功能对于排除平台故障有重要意义。当算法插件本身实现不完善时很可能导致平台故障。通过日志功能指纹算法识别平台可以向平台使用者清楚反馈算法插件的调用情况,从而可以很容易的定位有问题的算法插件排除平台故障。2.2.2出功能定义指纹算法研究辅助平台采用了过程录像的思想即将算法执行过程中重要的数据保存下来,然后再通过可视化的方式展现出来。平台API提供的算法结果导出功能就是辅助算法研究工作者进行数据保存的重要工具。平台API定义了3类抽象数据:标量数据、向量数据、向量流数据。所有数据均按内存状态导出没有数据类型的概念。标量数据即单一的数据单元,数据单元可以是结构体等复杂数据结构。向量数据即多个同类型的数据单元,显然标量数据是向量数据的特例。向量数据流数据即一系列相关的向量数据,通过向量数据流数据模型可以将一系列有关的向量数据组织在一起,形成信息更加丰富的中间结果数据。2.2.3实现算法链路的结果覆盖平台API通过结果名字定位算法插件导出的中间结果,但是由于算法链路本身的复杂性:①同一个算法链路中存在多个相同的算法插件,导致结果名字冲突;②对于批量数据算法插件需要运行多次,每次运行都将产生新的结果,如果处理不当会导致结果覆盖。平台API的算法数据定位功能提供了在存在名字冲突和多个结果实例情况下正确产生或访问中间结果的函数。算法链路的一次运行定义为算法链路的一个运行实例。平台API对算法链路的每个运行实例都分配了一个惟一标识,并将算法运行实例产生的中间结果同运行实例的标识绑定,这样将不同运行实例间的中间结果进行隔离,有效解决了多运行实例间结果覆盖问题。可以对同一算法链路中的算法插件的每一个中间结果进行类似的处理。这样的设计一方面在平台API内部可以有效地处理结果名字冲突和结果覆盖,另一方面也保证了平台的灵活性,在插件开发者看来,中间结果的产生和引用仅仅依赖于结果的名字而与具体的算法链路无关。2.2.4场中色值的文学拟法平台API提供的算法关键系数设定功能辅助算法研究工作者在平台上不需修改算法代码就可以自由设定算法中的待定系数。平台API定义算法系数不同的算法链路为不同的算法链路实例,在平台上每个算法链路实例独立运行,独立评价性能,因此,对于每一组算法关键系数的设定都可以获得完整的测试数据,从而明确算法系数对整个算法链路的影响及在不同的算法系数进行性能比较。2.3算法研究的一致性指纹算法研究辅助平台的操作平台是一个算法无关的操作台,为算法研究工作者进行不同的指纹识别算法研究提供一致的界面和一致的操作。这种一致性一方面大大缩短了算法研究工作者使用平台的学习周期,另一方面也为不同的算法进行比较打下了坚实的基础。操作平台主要由插件数据库模块、插件查询模块、插件缓存管理模块、算法工程管理模块、算法调度模块、操作台模块等6个模块组成。2.3.1平台组件存储/查询模块指纹识别算法研究辅助平台是一个开放的体系结构,各种各样的指纹识别算法插件均可在平台下使用,因此必须对所有的平台插件进行统一的存取管理,但平台插件的存储有众多选择:①存储在本地文件系统;②存储在本地数据库系统;③存在远程数据库系统。因此操作平台定义了插件数据库模块将操作平台上层模块同实际的存储方式解耦。同时,为了有效重用已有的算法插件操作平台定义了基于文本检索的插件查询模块。通过插件查询模块,算法研究工作者可以清楚知道算法研究平台已有的算法插件,从而在构建新的算法链路时,有意识的重用算法插件。算法重用是指纹算法研究平台的一个主要开发目标。2.3.2实际应用模块由于核心平台插件所使用的动态装载技术要求数据链路中的插件必须在本地文件系统进行装载,同时,如果每一个需要装载的插件都是在算法链路运行时才下载到本地文件系统将造成平台性能的巨大损失,因此,核心平台定义了插件缓存管理模块。插件缓存管理模块负责将算法链路运行时所需要的插件缓存到本地文件系统并进行管理。插件缓存管理模块对高层模块屏蔽了插件数据库的存在,简化了系统代码的编写。2.3.3生成算法组件信息算法工程是描述算法链路的配置文件。算法工程记录了算法链路中各个插件的详细信息。这些信息包括:①算法链路上的全部插件信息;②算法插件将导出的结果信息;③算法插件的关键系数候选值。算法工程管理模块负责创建和维护算法工程。平台下的所有的算法工程之间是完全无关的。算法工程是操作平台下运行的完整单位。2.3.4实现算法性能的流程算法调度模块负责动态装载算法链路中的平台插件和算法链路的调度执行,调度算法如图3所示。(1)CreateProejct(strProejctFile):算法工程对象在运行根据算法工程描述文件动态创建;(2)InitProject():出于C++语言特性的考虑将算法工程对象的创建和初始化分开执行。初始化过程将根据算法工程配置文件初始化算法工程环境并且装载全部算法链路所需的平台插件。(3)GetProjectInstanceCount():算法调度器向算法工程对象查询算法工程实例的个数,不同的算法关键系数设定将形成不同的算法工程实例。(4)AskInputData():为了运行算法链路,向平台操作工作者查询算法输入数据。这是个算法工程对象提供高层函数,通过平台插件数据装载器执行功能。(5)GetUserInput():平台插件数据装载器接口函数,负责同平台操作员进行交互获得算法链路运行数据。函数的返回值为用户输入的数据的个数,由于算法数据可能能多,因此数据装载器必须将数据临时保存起来。(6)RunProjectInstance(index):执行算法工程的一个实例,通过循环调用该函数可以获得全部算法工程实例的算法性能。(7)ConfigProjectInstance(index):将算法工程实例的算法关键系数信息写入全局结构,在用户算法插件运行时将访问这些信息。(8)GetInputData(index):算法工程对象向数据装载器索要一个算法运行时数据。函数返回值为指向IArithData的指针。(9)Run(IArithData*):运行指纹识别算法插件。(10)GathArithResult(IArithData*):收集算链路一次运行产生的结果。(11)EvaluateArith(index):针对批量数据统计第index算法工程实例的性能。2.3.5系统功能和程序平台操作台即算法研究工作者接触的指纹算法研究平台的界面。在操作台下算法研究工作者可以使用的系统功能有:注册新的平台插件、创建和编辑算法工程、算法工程导出和导入、控制算法中间结果导出和察看算法中间结果。2.4计算解决剥削编写平台插件是扩展平台应用的惟一途径。算法研究辅助平台定义了4类插件:数据装载器插件、算法插件、性能统计插件、算法观察插件。每一类插件都严格定义了接口标准,他们在平台下协同工作表达完整的指纹识别算法并辅助算法研究。2.4.1生成算法数据数据装载器是算法链路的起始模块,负责获取用户输入。数据装载器定义GetUserInput(),GetInputData(intindex)和FreeInputData(IArithData*)函数。GetUserInput仅仅是询问算法数据(IArithData)的信息,然后将这些信息转化成算法数据保存在IDataLoader内部,算法链路运行时通过GetInputData获取实际的算法数据。因为所有的算法数据均在IDataLoader内部产生,所以IDataLoader必须进行算法数据的清除(FreeInputData)工作。2.4.2插值连接方案的设计算法插件即指纹识别算法的执行载体,一个算法插件就是完成特定功能的算法模块,多个算法插件协同合作表达一套完整的指纹识别算法。2.4.3算法性能测试性能评价插件负责实现客观的算法评价标准,进行算法性能评价是算法平台的重要职责。在类IArithEvaluater中定义GatherArithResult(constIArithData*constpArithData)和EvaluaterArith(intindex)函数。为了进行算法性能测试,需要使用批量测试数据多次运行算法链路,平台使用算法性能功能评价器插件的接口函数GatherArithResult收集每一次的运行结果。GatherArithResult将收集到的算法结果在IArithEvaluater内部保存,当全部测试数据运行完毕后,通过接口函数EvaluaterArith进行最后的算法性能统计。2.4.4算法的执行过程算法察看插件是将算法链路执行过程产生的中间结果,以可视化的方式展现在算法研究工作者面前。通过算法察看器算法研究工作者可以有效地观察算法的执行过程,提高算法研究的工作效率。类IArithViewer中定义LoadResult()函数。对于算法察看器(IArithViewer)而言,所有的算法结果都是可以访问的,算法察看器通过接口函数LoadResult装载自己所需的算法中间结果。在算法察看器内部可以对这些算法中间结果进行融合、比较从而形成更丰富的算法研究数据。2.5a.基于数据的a.设计指纹算法研究平台采用算法链路的模型,以数据处理为中心,将算法和数据对象分开考虑,这种模型很适合在涉及大量不同算法、需要处理不同类型数据的领域应用。IArithData是辅助平台定义的数据模型接口,IArithData是算法数据的载体,数据链路中的平台插件的输入和输出均是IArithData,因此客观上要求IArithData必须具有存储任意数据类型的能力,但是考虑到IArithData仅仅服务于指纹算法研究辅助平台,因此简化了数据模型接口设计。类IArithData中定义AddDataValue(constchar*,type&value),GetDataValue(constchar*,type&value),SetDataValue(constchar*,typevalue),AddVector(constchar*,int,int,type*value),GetVectorAddr(constchar*,int,type*&value),FreeVector(constchar*),AddMatrix(constchar*,int,int,int,type*value),GetMatrixAddr(constchar*,int,int,type**&value)和FreeMatrix(constchar*,typevalue)函数。根据指纹算法研究的需要IArithData定义了3类数据处理函数:3指纹算例应用开发指纹识别算法研究平台的根本目标就是辅助算法研究工作者进行算法实现和研究,提高算法实现和研究的工作效率。该平台可以应用于指纹图像预处理、指纹特征提取、指纹匹配、算法改进等指纹识别过程的多个关键步骤。限于篇幅,本节仅以自动指纹识别系统中的典型算法为背景详细讨论该平台在指纹图像预处理中的应用情况。指纹算法研究平台通过创建指纹图像预处理算法链路和编写算法察看插件可以有效的应用于指纹图像预处理算法的研究工作。3.1被完全的隔离指纹图像预处理包括了指纹图像分割、图像增强、二值化、细化等众多的阶段,因此在平台下首先将每一个指纹图像预处理算法模块封装成一个独立的算法插件,然后使用算法链路模型来描述完整的指纹图像预处理算法。算法链路模型使得指纹图像预处理的各个阶段被完全的隔离开来。借助平台的插件体系结构,指纹图像预处理算法链路上的任何算法插件都可以任意替换,从而有效研究不同的算法实现对最终预处理结果的影响,甚至通过挂接后继算法插件形成完整的指纹识别链路,获得对整个指纹识别性能的影响。如图4所示,以进行指纹图像分割算法研究为例,不同的分割算法将导致将产生不同的算法链路,但是他们共享了其它的算法模块,不同的算法链路之间是完全独立的,它们的运行结果没有任何影响,因此在平台下可以同时观察不同的分割算法的作用结果及对整个预处理算法的影响。在平台下进行算法研究就是根据不同的需要创建合理的算法链路,在存在一定积累的条件下,针对不同算法搭建相应的研究环境是容易的,算法研究人员不需要处理任何的交互逻辑,可以完全投入到算法实现和研究中来。3.2指纹执行过程平台通过算法中间数据导出和算法结果观察插件提供了功能强大的算法研究工具,同时这些工具是可以无限扩充的,算法研究工作者即可以直接使用已有的算法观察器,也可以根据自己的需要定制算法观察器。如图5所示,把各个阶段的算法作为算法中间结果数据导出然后使用算法察看器观察得到的一系列图片。然而,通过这些图片不能使算法研究人员明确算法的执行过程,将算法的执行过程的重要数据都记录下来可以形成更加重要的算法执行过程信息,在研究指纹细化算法过程中,在得到了图6的结果图片后可以肯定算法的有效性,但是算法执行速度较慢,为了进一步发现算法的瓶颈,将细化过程通过平台API

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论