指紋算法研究平臺的設計與實現(xiàn)_第1頁
指紋算法研究平臺的設計與實現(xiàn)_第2頁
指紋算法研究平臺的設計與實現(xiàn)_第3頁
指紋算法研究平臺的設計與實現(xiàn)_第4頁
指紋算法研究平臺的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

指紋算法研究平臺的設計與實現(xiàn)

0指紋算法研究平臺識別生物特征是當前生物特征識別領域最常用的技術之一。目前很多國內外學者對指紋識別技術作了大量研究,不同原理的指紋識別算法不斷涌現(xiàn)。算法研究工作者都需要將自己的算法實現(xiàn)并進行性能測試計。因此,絕大多數(shù)算法研究工作者都需要搭建針對自己所研究算法的研究平臺。通常,這些平臺是同具體的算法緊密集成在一起的,不具有通用性。這不僅造成資源的浪費而且也使算法研究工作者難以將精力完全投入到算法研究上,影響了算法研究的進度。圖1說明了在指紋圖像識別算法研究工作中,算法研究、平臺、應用有著緊密的關系。從這樣的相互關系中,不難看出平臺對于指紋識別算法研究的重要意義。目前,還很難見到關于通用指紋算法研究平臺設計與開發(fā)方面的成果。北京數(shù)字指通軟件技術有限公司開發(fā)了一種指紋圖像處理系統(tǒng)FingerpassPlatform,該系統(tǒng)采用美國國家標準指紋數(shù)據(jù)庫NIST作為測試數(shù)據(jù)集,采用FVC2000、FVC2002的性能評價體系,可以加載多個識別算法,并可以隨時擴充,在一定程度上具備進行指紋識別算法輔助研究的功能。本文針對當前指紋識別算法研究平臺中存在的問題,借鑒了FingerpassPlatform系統(tǒng)的功能定義,討論了通用指紋算法研究輔助平臺的研究與開發(fā)。通過該平臺不僅可以更好的從局部上去理解單個算法的性能指標、不同算法的性能差異,而且還有助于在整體上去理解和把握不同算法之間的影響。本文介紹了指紋算法研究平臺的設計和開發(fā)所涉及的MVC設計模式、工作流思想和基于插件的軟件設計等理論基礎;給出了平臺的整體設計、操作平臺詳細設計、平臺API、平臺插件接口詳細設計和平臺數(shù)據(jù)模型接口;舉例說明了本文所設計與開發(fā)的指紋識別算法平臺在指紋圖像預處理中的應用;最后對本文所做的工作進行了總結。1指紋算法設計的理論基礎指紋算法研究輔助平臺定義了開放式的體系結構,在設計上借鑒了一些當前較為流行的體系結構和程序設計思想,本節(jié)重點介紹指紋算法研究平臺設計與開發(fā)的理論基礎。1.1控制部分功能業(yè)務程序MVC設計模式的主要思想是用面向對象的設計方法將用戶界面與程序本身隔離。由應用功能層、人機界面層、控制器3部分構成。應用功能層是不依賴用戶界面的,這樣就隔離了用戶界面的變更對業(yè)務程序的影響。用戶界面負責收集用戶的輸入,顯示用戶需要的數(shù)據(jù);控制器負責將用戶的請求調用到實際的業(yè)務程序,也將業(yè)務程序處理的結果回送給用戶界面;業(yè)務程序具體處理業(yè)務操作。同時業(yè)務模塊可能主動發(fā)送消息到用戶界面,通知界面顯示數(shù)據(jù)。1.2概念的發(fā)展:從提出一個概念時提出的概念工作流是針對工作中具有固定程序的常規(guī)活動而提出的一個概念。通過將工作活動分解成定義良好的任務、角色、規(guī)則和過程來完成執(zhí)行和監(jiān)控,達到提高生產(chǎn)組織水平和工作效率的目的。1.3改變文件的格式插件是一種程序設計技術,是一種基于部件技術的軟件體系結構。在插件式結構的應用中,程序并不是單一的執(zhí)行文件,而是由主程序和若干外部小模塊組成,這些小模塊是按一定的規(guī)則編寫,能夠在運行時動態(tài)加入到系統(tǒng)中。2指紋算法平臺的設計和實現(xiàn)指紋識別算法研究輔助平臺在設計上借鑒了MVC設計模式、工作流管理系統(tǒng)、插件軟件設計思想等先進的軟件體系結構,具有較好的可擴充性。2.1指紋算法研究平臺通過對已有平臺的研究我們發(fā)現(xiàn)作為一個算法研究平臺只需提供算法性能統(tǒng)計和算法運行過程觀察兩類功能就可以很好的達到算法研究的目的。不同的指紋算法在性能統(tǒng)計指標和算法中間結果的表現(xiàn)形式必然存在較大差異,針對這個問題我們的指紋算法研究平臺定義了一個開放式的體系結構,將指紋識別算法模塊、算法性能統(tǒng)計模塊和算法運行過程觀察模塊均設計成平臺插件,通過開發(fā)插件,算法研究工作者可以在平臺下對各種不同的指紋算法進行研究。平臺系統(tǒng)結構如圖2所示。指紋算法研究平臺采用算法鏈路模型對算法執(zhí)行過程進行了抽象:數(shù)據(jù)裝載插件是算法運行的起始點,負責獲取算法運行所需的數(shù)據(jù);一系列指紋算法插件構成指紋算法的主體,指紋算法執(zhí)行過程就是按照一定的順序依次執(zhí)行每個算法插件;性能評價插件負責對指紋算法一次運行的結果進行收集,并對多次運行的結果進行性能評價;算法觀察插件對算法運行過程中產(chǎn)生的中間結果或性能評價插件產(chǎn)生的結果進行可視化的顯示。算法插件通過平臺API與指紋識別算法研究平臺通信。指紋識別算法研究平臺的體系結構是先進的開放式體系結構,具有非常好的可擴充性,不同的算法和性能評價標準可以很容易的集成到平臺之上,同時在邏輯上算法插件開發(fā)工作者完全從交互界面的開發(fā)中解脫出來,可以專注于算法的實現(xiàn),將大大提高算法實現(xiàn)和研究的工作效率。2.2平臺api的開發(fā)平臺API是整個系統(tǒng)的基礎。一方面幫助插件的編寫者使用平臺功能及與平臺通信;另一方面指紋算法研究平臺的操作平臺也完全建立在平臺API之上。平臺API被設計成純C接口,核心平臺開發(fā)工作者和插件開發(fā)工作者可以隨時使用。平臺API提供如下功能:日志功能、算法數(shù)據(jù)導出、算法數(shù)據(jù)定位、算法關鍵系數(shù)設定。2.2.1算法鏈路中的用戶存儲日志功能就是在平臺運行或算法運行過程中通過平臺API記錄平臺狀態(tài)或算法狀態(tài)。平臺API定義了兩種日志:系統(tǒng)日志和用戶日志。操作平臺產(chǎn)生的日志是系統(tǒng)日志,用戶插件產(chǎn)生的日志是用戶日志。同時由于在算法鏈路中往往存在很多算法插件,為了避免所有的算法插件產(chǎn)生的用戶日志堆放放到一起,平臺API定義了ILogTarget接口,算法鏈路中的每個算法插件關聯(lián)惟一的一個ILogTarget,算法插件產(chǎn)生的全部用戶日志將全部發(fā)送給相應的ILogTarget。操作平臺將ILogTarget發(fā)送來的日志信息在日志窗口顯示,也可以根據(jù)用戶需要重定向到特定的文件中。日志功能對于排除平臺故障有重要意義。當算法插件本身實現(xiàn)不完善時很可能導致平臺故障。通過日志功能指紋算法識別平臺可以向平臺使用者清楚反饋算法插件的調用情況,從而可以很容易的定位有問題的算法插件排除平臺故障。2.2.2出功能定義指紋算法研究輔助平臺采用了過程錄像的思想即將算法執(zhí)行過程中重要的數(shù)據(jù)保存下來,然后再通過可視化的方式展現(xiàn)出來。平臺API提供的算法結果導出功能就是輔助算法研究工作者進行數(shù)據(jù)保存的重要工具。平臺API定義了3類抽象數(shù)據(jù):標量數(shù)據(jù)、向量數(shù)據(jù)、向量流數(shù)據(jù)。所有數(shù)據(jù)均按內存狀態(tài)導出沒有數(shù)據(jù)類型的概念。標量數(shù)據(jù)即單一的數(shù)據(jù)單元,數(shù)據(jù)單元可以是結構體等復雜數(shù)據(jù)結構。向量數(shù)據(jù)即多個同類型的數(shù)據(jù)單元,顯然標量數(shù)據(jù)是向量數(shù)據(jù)的特例。向量數(shù)據(jù)流數(shù)據(jù)即一系列相關的向量數(shù)據(jù),通過向量數(shù)據(jù)流數(shù)據(jù)模型可以將一系列有關的向量數(shù)據(jù)組織在一起,形成信息更加豐富的中間結果數(shù)據(jù)。2.2.3實現(xiàn)算法鏈路的結果覆蓋平臺API通過結果名字定位算法插件導出的中間結果,但是由于算法鏈路本身的復雜性:①同一個算法鏈路中存在多個相同的算法插件,導致結果名字沖突;②對于批量數(shù)據(jù)算法插件需要運行多次,每次運行都將產(chǎn)生新的結果,如果處理不當會導致結果覆蓋。平臺API的算法數(shù)據(jù)定位功能提供了在存在名字沖突和多個結果實例情況下正確產(chǎn)生或訪問中間結果的函數(shù)。算法鏈路的一次運行定義為算法鏈路的一個運行實例。平臺API對算法鏈路的每個運行實例都分配了一個惟一標識,并將算法運行實例產(chǎn)生的中間結果同運行實例的標識綁定,這樣將不同運行實例間的中間結果進行隔離,有效解決了多運行實例間結果覆蓋問題??梢詫ν凰惴ㄦ溌分械乃惴ú寮拿恳粋€中間結果進行類似的處理。這樣的設計一方面在平臺API內部可以有效地處理結果名字沖突和結果覆蓋,另一方面也保證了平臺的靈活性,在插件開發(fā)者看來,中間結果的產(chǎn)生和引用僅僅依賴于結果的名字而與具體的算法鏈路無關。2.2.4場中色值的文學擬法平臺API提供的算法關鍵系數(shù)設定功能輔助算法研究工作者在平臺上不需修改算法代碼就可以自由設定算法中的待定系數(shù)。平臺API定義算法系數(shù)不同的算法鏈路為不同的算法鏈路實例,在平臺上每個算法鏈路實例獨立運行,獨立評價性能,因此,對于每一組算法關鍵系數(shù)的設定都可以獲得完整的測試數(shù)據(jù),從而明確算法系數(shù)對整個算法鏈路的影響及在不同的算法系數(shù)進行性能比較。2.3算法研究的一致性指紋算法研究輔助平臺的操作平臺是一個算法無關的操作臺,為算法研究工作者進行不同的指紋識別算法研究提供一致的界面和一致的操作。這種一致性一方面大大縮短了算法研究工作者使用平臺的學習周期,另一方面也為不同的算法進行比較打下了堅實的基礎。操作平臺主要由插件數(shù)據(jù)庫模塊、插件查詢模塊、插件緩存管理模塊、算法工程管理模塊、算法調度模塊、操作臺模塊等6個模塊組成。2.3.1平臺組件存儲/查詢模塊指紋識別算法研究輔助平臺是一個開放的體系結構,各種各樣的指紋識別算法插件均可在平臺下使用,因此必須對所有的平臺插件進行統(tǒng)一的存取管理,但平臺插件的存儲有眾多選擇:①存儲在本地文件系統(tǒng);②存儲在本地數(shù)據(jù)庫系統(tǒng);③存在遠程數(shù)據(jù)庫系統(tǒng)。因此操作平臺定義了插件數(shù)據(jù)庫模塊將操作平臺上層模塊同實際的存儲方式解耦。同時,為了有效重用已有的算法插件操作平臺定義了基于文本檢索的插件查詢模塊。通過插件查詢模塊,算法研究工作者可以清楚知道算法研究平臺已有的算法插件,從而在構建新的算法鏈路時,有意識的重用算法插件。算法重用是指紋算法研究平臺的一個主要開發(fā)目標。2.3.2實際應用模塊由于核心平臺插件所使用的動態(tài)裝載技術要求數(shù)據(jù)鏈路中的插件必須在本地文件系統(tǒng)進行裝載,同時,如果每一個需要裝載的插件都是在算法鏈路運行時才下載到本地文件系統(tǒng)將造成平臺性能的巨大損失,因此,核心平臺定義了插件緩存管理模塊。插件緩存管理模塊負責將算法鏈路運行時所需要的插件緩存到本地文件系統(tǒng)并進行管理。插件緩存管理模塊對高層模塊屏蔽了插件數(shù)據(jù)庫的存在,簡化了系統(tǒng)代碼的編寫。2.3.3生成算法組件信息算法工程是描述算法鏈路的配置文件。算法工程記錄了算法鏈路中各個插件的詳細信息。這些信息包括:①算法鏈路上的全部插件信息;②算法插件將導出的結果信息;③算法插件的關鍵系數(shù)候選值。算法工程管理模塊負責創(chuàng)建和維護算法工程。平臺下的所有的算法工程之間是完全無關的。算法工程是操作平臺下運行的完整單位。2.3.4實現(xiàn)算法性能的流程算法調度模塊負責動態(tài)裝載算法鏈路中的平臺插件和算法鏈路的調度執(zhí)行,調度算法如圖3所示。(1)CreateProejct(strProejctFile):算法工程對象在運行根據(jù)算法工程描述文件動態(tài)創(chuàng)建;(2)InitProject():出于C++語言特性的考慮將算法工程對象的創(chuàng)建和初始化分開執(zhí)行。初始化過程將根據(jù)算法工程配置文件初始化算法工程環(huán)境并且裝載全部算法鏈路所需的平臺插件。(3)GetProjectInstanceCount():算法調度器向算法工程對象查詢算法工程實例的個數(shù),不同的算法關鍵系數(shù)設定將形成不同的算法工程實例。(4)AskInputData():為了運行算法鏈路,向平臺操作工作者查詢算法輸入數(shù)據(jù)。這是個算法工程對象提供高層函數(shù),通過平臺插件數(shù)據(jù)裝載器執(zhí)行功能。(5)GetUserInput():平臺插件數(shù)據(jù)裝載器接口函數(shù),負責同平臺操作員進行交互獲得算法鏈路運行數(shù)據(jù)。函數(shù)的返回值為用戶輸入的數(shù)據(jù)的個數(shù),由于算法數(shù)據(jù)可能能多,因此數(shù)據(jù)裝載器必須將數(shù)據(jù)臨時保存起來。(6)RunProjectInstance(index):執(zhí)行算法工程的一個實例,通過循環(huán)調用該函數(shù)可以獲得全部算法工程實例的算法性能。(7)ConfigProjectInstance(index):將算法工程實例的算法關鍵系數(shù)信息寫入全局結構,在用戶算法插件運行時將訪問這些信息。(8)GetInputData(index):算法工程對象向數(shù)據(jù)裝載器索要一個算法運行時數(shù)據(jù)。函數(shù)返回值為指向IArithData的指針。(9)Run(IArithData*):運行指紋識別算法插件。(10)GathArithResult(IArithData*):收集算鏈路一次運行產(chǎn)生的結果。(11)EvaluateArith(index):針對批量數(shù)據(jù)統(tǒng)計第index算法工程實例的性能。2.3.5系統(tǒng)功能和程序平臺操作臺即算法研究工作者接觸的指紋算法研究平臺的界面。在操作臺下算法研究工作者可以使用的系統(tǒng)功能有:注冊新的平臺插件、創(chuàng)建和編輯算法工程、算法工程導出和導入、控制算法中間結果導出和察看算法中間結果。2.4計算解決剝削編寫平臺插件是擴展平臺應用的惟一途徑。算法研究輔助平臺定義了4類插件:數(shù)據(jù)裝載器插件、算法插件、性能統(tǒng)計插件、算法觀察插件。每一類插件都嚴格定義了接口標準,他們在平臺下協(xié)同工作表達完整的指紋識別算法并輔助算法研究。2.4.1生成算法數(shù)據(jù)數(shù)據(jù)裝載器是算法鏈路的起始模塊,負責獲取用戶輸入。數(shù)據(jù)裝載器定義GetUserInput(),GetInputData(intindex)和FreeInputData(IArithData*)函數(shù)。GetUserInput僅僅是詢問算法數(shù)據(jù)(IArithData)的信息,然后將這些信息轉化成算法數(shù)據(jù)保存在IDataLoader內部,算法鏈路運行時通過GetInputData獲取實際的算法數(shù)據(jù)。因為所有的算法數(shù)據(jù)均在IDataLoader內部產(chǎn)生,所以IDataLoader必須進行算法數(shù)據(jù)的清除(FreeInputData)工作。2.4.2插值連接方案的設計算法插件即指紋識別算法的執(zhí)行載體,一個算法插件就是完成特定功能的算法模塊,多個算法插件協(xié)同合作表達一套完整的指紋識別算法。2.4.3算法性能測試性能評價插件負責實現(xiàn)客觀的算法評價標準,進行算法性能評價是算法平臺的重要職責。在類IArithEvaluater中定義GatherArithResult(constIArithData*constpArithData)和EvaluaterArith(intindex)函數(shù)。為了進行算法性能測試,需要使用批量測試數(shù)據(jù)多次運行算法鏈路,平臺使用算法性能功能評價器插件的接口函數(shù)GatherArithResult收集每一次的運行結果。GatherArithResult將收集到的算法結果在IArithEvaluater內部保存,當全部測試數(shù)據(jù)運行完畢后,通過接口函數(shù)EvaluaterArith進行最后的算法性能統(tǒng)計。2.4.4算法的執(zhí)行過程算法察看插件是將算法鏈路執(zhí)行過程產(chǎn)生的中間結果,以可視化的方式展現(xiàn)在算法研究工作者面前。通過算法察看器算法研究工作者可以有效地觀察算法的執(zhí)行過程,提高算法研究的工作效率。類IArithViewer中定義LoadResult()函數(shù)。對于算法察看器(IArithViewer)而言,所有的算法結果都是可以訪問的,算法察看器通過接口函數(shù)LoadResult裝載自己所需的算法中間結果。在算法察看器內部可以對這些算法中間結果進行融合、比較從而形成更豐富的算法研究數(shù)據(jù)。2.5a.基于數(shù)據(jù)的a.設計指紋算法研究平臺采用算法鏈路的模型,以數(shù)據(jù)處理為中心,將算法和數(shù)據(jù)對象分開考慮,這種模型很適合在涉及大量不同算法、需要處理不同類型數(shù)據(jù)的領域應用。IArithData是輔助平臺定義的數(shù)據(jù)模型接口,IArithData是算法數(shù)據(jù)的載體,數(shù)據(jù)鏈路中的平臺插件的輸入和輸出均是IArithData,因此客觀上要求IArithData必須具有存儲任意數(shù)據(jù)類型的能力,但是考慮到IArithData僅僅服務于指紋算法研究輔助平臺,因此簡化了數(shù)據(jù)模型接口設計。類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)函數(shù)。根據(jù)指紋算法研究的需要IArithData定義了3類數(shù)據(jù)處理函數(shù):3指紋算例應用開發(fā)指紋識別算法研究平臺的根本目標就是輔助算法研究工作者進行算法實現(xiàn)和研究,提高算法實現(xiàn)和研究的工作效率。該平臺可以應用于指紋圖像預處理、指紋特征提取、指紋匹配、算法改進等指紋識別過程的多個關鍵步驟。限于篇幅,本節(jié)僅以自動指紋識別系統(tǒng)中的典型算法為背景詳細討論該平臺在指紋圖像預處理中的應用情況。指紋算法研究平臺通過創(chuàng)建指紋圖像預處理算法鏈路和編寫算法察看插件可以有效的應用于指紋圖像預處理算法的研究工作。3.1被完全的隔離指紋圖像預處理包括了指紋圖像分割、圖像增強、二值化、細化等眾多的階段,因此在平臺下首先將每一個指紋圖像預處理算法模塊封裝成一個獨立的算法插件,然后使用算法鏈路模型來描述完整的指紋圖像預處理算法。算法鏈路模型使得指紋圖像預處理的各個階段被完全的隔離開來。借助平臺的插件體系結構,指紋圖像預處理算法鏈路上的任何算法插件都可以任意替換,從而有效研究不同的算法實現(xiàn)對最終預處理結果的影響,甚至通過掛接后繼算法插件形成完整的指紋識別鏈路,獲得對整個指紋識別性能的影響。如圖4所示,以進行指紋圖像分割算法研究為例,不同的分割算法將導致將產(chǎn)生不同的算法鏈路,但是他們共享了其它的算法模塊,不同的算法鏈路之間是完全獨立的,它們的運行結果沒有任何影響,因此在平臺下可以同時觀察不同的分割算法的作用結果及對整個預處理算法的影響。在平臺下進行算法研究就是根據(jù)不同的需要創(chuàng)建合理的算法鏈路,在存在一定積累的條件下,針對不同算法搭建相應的研究環(huán)境是容易的,算法研究人員不需要處理任何的交互邏輯,可以完全投入到算法實現(xiàn)和研究中來。3.2指紋執(zhí)行過程平臺通過算法中間數(shù)據(jù)導出和算法結果觀察插件提供了功能強大的算法研究工具,同時這些工具是可以無限擴充的,算法研究工作者即可以直接使用已有的算法觀察器,也可以根據(jù)自己的需要定制算法觀察器。如圖5所示,把各個階段的算法作為算法中間結果數(shù)據(jù)導出然后使用算法察看器觀察得到的一系列圖片。然而,通過這些圖片不能使算法研究人員明確算法的執(zhí)行過程,將算法的執(zhí)行過程的重要數(shù)據(jù)都記錄下來可以形成更加重要的算法執(zhí)行過程信息,在研究指紋細化算法過程中,在得到了圖6的結果圖片后可以肯定算法的有效性,但是算法執(zhí)行速度較慢,為了進一步發(fā)現(xiàn)算法的瓶頸,將細化過程通過平臺API

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論