BieySDK40程序開發手冊_第1頁
BieySDK40程序開發手冊_第2頁
BieySDK40程序開發手冊_第3頁
BieySDK40程序開發手冊_第4頁
BieySDK40程序開發手冊_第5頁
已閱讀5頁,還剩42頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

BBiokeySDK4.0程序開發手冊BiokeySDKBiokeySDK開發手冊目 錄BIOKEY算法描述 1BIOKEYSDK架構 3軟件安裝 5光盤文件及名目 5軟件的安裝 64、ACTIVEX控件參考 9屬性 9ActiveasBoolean. 9EngineValidasBoolean 9EnrollIndexAsLong 9EnrollCountAsLong 10FPEngineVersionASString 10ImageHeightASinteger 10ImageWidthASinteger 10IsRegisterAsBoolean 10OneToOneThresholdAsBoolean 10RegTplFileNameAsString 11SensorCountAsLong. 11SensorIndexASLong 11SensorSNAsString 11TemplateLenAsLong .1ThresholdAsLong 12VerTplFileNameAsString 124.2方法 12SubBeginEnroll 12SubCancelEnroll 12FunctionDongleIsExistAsBoolean 12FunctionDongleSeed(Byvallp2AsLong,Byvalp1,p2,p3,p4AsInteger)AsBoolean 12FunctionDongleUserIDAsLong 13FunctionDongleMemRead(Byvalp1,p2AsInteger,buf)AsBoolean 13FunctionDongleMemWrite(Byvalp1,p2AsInteger,buf)AsBoolean 13FunctionGetTemplate 13FunctionGetFingerImage(ByvalAFingerImage)AsBoolean 13FunctionInitEngineAsLong 13FunctionVerFinger(byvalregTemplate,verTemplate,AdoLearningAsBoolean,byvalAregFeatureChangedAsBoolean)AsBoolean 14FunctionVerFingerFromFile(regTemplateFileAsString,verTemplateFileAsString,AdoLearningAsBoolean,byvalAregFeatureChangedAsBoolean)AsBoolean .FunctionVerRegFingerFile(RegTemplateFileAsString,verTemplate,AdoLearningAsBoolean,byvalAregFeatureChangedAsBoolean)AsBoolean 14SubPrintImageAt(HDCAsOLE_HANDLE,XAsLong,YAsLong,aWidthAsLong,aHeightAsLong) 15SubPrintImageEllipseAt(HDCAsOLE_HANDLE,XAsLong,YAsLong,aWidthAsLong,aHeightAsLong,bkColorAsOLE_COLOR)154.2.16SubSaveBitmap(FileNameAsString) 15SubSaveJPG(FileNameAsString) 15FunctionSaveTemplate(FileNameAsString,Template)AsBoolean15\l“_TOC_250034“functionEncodeTemplate(ASour,varADestAsString)AsBoolean 15\l“_TOC_250033“functionDecodeTemplate(constASourAsString,ADest)AsBoolean 16\l“_TOC_250032“function EncodeTemplate1(ASour)AsString 16function DecodeTemplate1(constASourAsString)AsVarian.t16\l“_TOC_250031“SubBeginCapture 16\l“_TOC_250030“SubEndEngine 16functionVerFingerFromStr(regTemplateStrAsString,verTemplateStrAsString,AdoLearningAsBoolean,byvalAregFeatureChangedAsBoolean)AsBoolean .\l“_TOC_250029“functionGetTemplateAsStringAsString .7\l“_TOC_250028“1:N控件接口方法: 17\l“_TOC_250027“FunctionAddRegTemplateToFPCacheDB(fpcHandleAsLong,FPIDAsLong,pRegTemplate)AsLong .FunctionAddRegTemplateFileToFPCacheDB(fpcHandleAsLong,FPIDAsLong,pRegTemplateFileAsString)AsLong \l“_TOC_250026“FunctionCreateFPCacheDBAsLong 18\l“_TOC_250025“SubFlushFPImages 18\l“_TOC_250024“SubFreeFPCacheDB(fpcHandleAsLong) 18\l“_TOC_250023“FunctionIdentificationFromFileInFPCacheDB(fpcHandleAsLong,pVerTemplateFileAsString, ByvalScoreAsLong,ByvalProcessedFPNumberAsLong)AsLong 18FunctionIdentificationInFPCacheDB(fpcHandleAsLong,pVerTemplate,ByvalScoreAsLong,ByvalProcessedFPNumberAsLong)AsLong 19FunctionIsOneToOneTemplate(ATemplate)AsBoolean............19FunctionModifyTemplate(byvalAtemplate,AOneToOneAsBoolean)AsBoolean 20FunctionRemoveRegTemplateFromFPCacheDB(fpcHandleAsLong,FPIDAsLong)AsLong 20\l“_TOC_250022“SubCancelCapture 20FunctionAddRegTemplateStrToFPCacheDB(fpcHandleAsLong,FPIDAsLong,ARegTemplateStrAsString)AsLong...........................0\l“_TOC_250021“FunctionIdentificationFromStrInFPCacheDB(fpcHandleAsLong,AVerTemplateStrAsString, ByvalScoreAsLong,ByvalProcessedFPNumberAsLong)AsLong 20\l“_TOC_250020“SubSetAutoIdentifyPara(AutoIdentifyAsBoolean,fpcHandleAsLong,ScoreAsLong) 21\l“_TOC_250019“外部圖象文件接口方法: 22FunctionAddBitmap(BitmapHandleAsOLE_HANDLE,ValidRectX1AsLong,ValidRectY1AsLong,ValidRectX2AsLong,ValidRectY2AsLong,DPIAsLong)AsBoolean. \l“_TOC_250018“FunctionAddImageFile(FileNameAsString,DPIAsLong)AsBoolean 22\l“_TOC_250017“4.3大事 22OnCapture(ActionResultASBoolean,ATemplate) 2.2\l“_TOC_250016“OnCaptureToFile(ActionResultASBoolean) 23\l“_TOC_250015“OnEnroll(ActionResultASBoolean,ATemplate) 23\l“_TOC_250014“OnEnrollToFile(ActionResultASBoolean) 24\l“_TOC_250013“4.4.0OnFeatureInfo(AQualityAsLong) 24\l“_TOC_250012“OnImageReceived(byvalAImageValidAsBoolean) 24\l“_TOC_250011“OnFingerTouching 244.4.0OnFingerLeaving 25\l“_TOC_250010“5、工作流程說明 26\l“_TOC_250009“6、常見問題說明 29\l“_TOC_250008“6.1 1:1和1:N的應用 29\l“_TOC_250007“數據庫中指紋模板寫入和讀出 29\l“_TOC_250006“軟件加密狗和授權許可文件 32\l“_TOC_250005“1:N高速緩沖空間的使用 32\l“_TOC_250004“使用平面指紋圖像 32\l“_TOC_250003“指紋識別閥值的設定 32\l“_TOC_250002“1:N識別中低質量指紋模板的處理方法 33\l“_TOC_250001“連接多個指紋儀 36\l“_TOC_250000“模板操作的文件/字符串/變體變量方法 36BiokeySDKBiokeySDK開發手冊10Biokey算法描述Biokey1:11:N指紋識別算法,面對軟件開Biokey進展指紋識別時(2023-6000枚指紋)PIN1-5秒(以下測試都在PentiumIII900MHz+128MB內存環境下進展)內輕松完成。Biokey算法具有以下特點:1、Biokey軟件開發包能夠快速集成到客戶系統中,通過開放圖像處理接口,可以支持任何掃描設備和指紋Sensor(圖像質量>=300DPI)。2、 Biokey算法通過自適應的、適合匹配的濾鏡和恰當的閥值,減弱噪音增加脊和谷的比照度甚至能夠從質量很差的指紋(臟、刀傷、疤、痕、枯燥、潮濕或撕破)中獵取適當的全局和局部特征點。3、Biokey算法比對時支持指紋平移(>=35%)360度旋360度旋轉時的快速比對〔平均速度3000枚秒(<=1手指的特征點)=15),也可以實現上述功能。4、 Biokey算法不需要指紋必需有全局特征點(核心點、三角點等),通過局部特征點就可以完成識別。5、 Biokey通過分類算法(指紋被分成五大類型:拱類、左環類、右環類、尖拱類、旋渦類“斗”),預先使用全局特征排序,從而大大的加速指紋匹配過程。6、 Biokey算法代碼相當簡潔數據空間僅需要350K內存因此可以簡潔的移植到嵌入式系統中。通過從四種Sensor(YLC,DFR200,U.ARE.U,Authentec)采集到2023枚指Biokey做測試(每種Sensor500枚)2023枚指4,000,000次比對,得到下面的測試比對結果:模板大小模板大小旋轉FARFRR登記時間平均比對速度圖像質量310or1152Byte0–360度<=0.001%<=2.0%0.5秒2500枚/秒>=300DPIBiokeySDK架構BiokeySDK4.0(SoftwareDevelopmentKit)ActiveX的方式存在,使用者可以使用各種開發語言〔例如VC++,C++Builder,Delphi,VB,VisualFoxpro,PB等〕來開發相對于指紋儀的應用程序。FilesIncludedOperatingSystemWindows98WinodwsMEWindows2023WindowsXPWindows2023WindowsVista

FilesSetup.exeLicense.rtfManual_SDK.doc\SDK\Sample\Sdk\Biokey.ocx

Description指紋儀驅動安裝程序開發許可協議程序開發手冊Sample開發例程BiokeyActiveXControlSDKArchitecture應用程序應用程序ApplicationProgramActiveX控件OCX驅動程序DeviceDriver其它指紋采集器OtherfingerprintReader指紋采集器URU4000BorZK平面圖像FingerprintImage軟件安裝光盤文件及名目翻開BiokeySDK光盤,名目和文件信息如以以下圖所示:Setup.exe:指紋采集器驅動和加密狗驅動的安裝程序;License.rtf:開發許可協議;SDK名目,名目和文件信息如以以下圖所示:Samples:多種開發語言的例程;Biokey.ocx:指紋識別算法核心控件庫文件。Manual_SDK.doc:SDK說明手冊;軟件的安裝BiokeySDK之前,請確定您的操作系統和計算機的配置符合軟件運行的要求。在進展安裝之前假設您的計算機接上了指紋采集器最好將它拔下來。假設您的計算機已經安裝過 URU2.0x驅動程序,請首先卸載。WindowsXP系統下具體的卸載步驟如下:a:運行把握面板中的‘添加/刪除’程序,卸載指紋采集設備的驅動程序;b:在開頭菜單中的‘運行’中運行注冊表,將HKEY_LOCAL_MACHINE\Software\DigitalPersona鍵值刪除;c:將Windows\system32名目下的DP*.dll全部刪除;d:將Programfiles\DigitalPersona名目整個刪除。1、將安裝光盤放入計算機的光驅之中,安裝軟件將自動運行。彈出窗口如以以下圖所示:點擊下一步按鈕,可以進入如下操作步驟:點下一步可以完成安裝指紋儀驅動。2、拷貝光盤SDK名目下面文件到用戶指定名目,建議拷貝到Windows系統名目(win98:c:\windows\system;win2023:c:\winnt\system;winXP/VISTA:c:\windows\system32)。Biokey.ocx 控件庫文件3、注冊控件Biokey.ocx:c:\windows\system32\regsvr32.exe c:\windows\system32\Biokey.ocx(winXP/VISTA)c:\winnt\system32\regsvr32.exe c:\ winnt\system32\Biokey.ocx(win2023)留意:安裝程序安裝的只是指紋采集器的驅動程序,其它開發所需的文件需要用戶手動拷貝至相應的名目下。4、ActiveX控件參考BiokeySDK4.01:11:N兩種功能,以下都承受VB語法說明,其中指紋模板Variant變量代表一維字節數組。屬性ActiveasBooleanReadonly當前SensorIndex設定的指紋采集器是否預備就緒。EngineValidasBooleanReadonly指紋識別系統是否正常工作。調用過函數initEngine后會返回有效結果EnrollIndexAsLongReadonly登記指紋時取樣的序號,即表示當前手指登記已經取到的有效次數。EnrollCountAsLong登記指紋時取樣的次數,取值范圍為1-4次FPEngineVersionASStringreadonly指紋識別系統版本號ImageHeightASintegerReadonly指紋圖像的高度ImageWidthASintegerReadonly指紋圖像的寬度IsRegisterAsBooleanReadonly是否正登記指紋OneToOneThresholdAsBoolean設定Biokey1:1比對的識別閥值分數(1-100)10,值越大,誤判率越低同時拒絕率變大RegTplFileNameAsString設置當大事OnEnrollToFile發生時,保存指紋登記模版的文件名稱。SensorCountAsLongReadonly當前連接到計算記得指紋采集器的個數,當EngineValid無效時,返回0SensorIndexASLong連接多個指紋采集器時,選擇指紋頭的序號,從0開頭;小于零時指紋采集器不工作。SensorSNAsString指紋采集器的硬件序列號TemplateLenAsLongReadonly指紋登記模版的字節長度。該屬性為兼容舊版本保存,該版本放棄使用,在程序設計時依據如下規Base64格式字符串方式操作指紋模版時不用考慮如下長度:1152字節,當UsingXTFTemplateTrue時,2288字節。ThresholdAsLong設定指紋識別系統比對識別閥值分數(1-100),默認為10,值越大,誤判率越低同時拒絕率變大VerTplFileNameAsString設置當大事OnCaptureToFile發生時,保存指紋驗證模版的文件名稱。方法SubBeginEnroll開頭登記指紋,登記完畢后發生OnEnroll大事。SubCancelEnroll取消當前的指紋登記狀態,即由BeginEnroll開頭的操作可由此函數中斷。FunctionDongleIsExistAsBoolean檢查加密狗是否存在*4.0版本中已取消此函數的功能,為了兼容,暫保存了此函數。FunctionDongleSeed(Byvallp2AsLong,Byvalp1,p2,p3,p4AsInteger)AsBooleanlp216位整數(p1,p2,p3,p4)返回值,加密狗可以通過內部算法計算一個種子碼,得到四個返回碼。種子碼算法是不公開的,可以通過檢查返回碼是否是期望的值來檢查加密狗是否存在。*4.0版本中已取消此函數的功能,為了兼容,暫保存了此函數FunctionDongleUserIDAsLongIDID不會重復一樣。保存在加密狗內部特定位置。*4.0版本中已取消此函數的功能,為了兼容,暫保存了此函數FunctionDongleMemRead(Byvalp1,p2AsInteger,buf)AsBoolean讀出加密狗內存區位置p1開頭的p2個字節到Variant變量buf(一維字節數組)240-23*4.0版本中已取消此函數的功能,為了兼容,暫保存了此函數FunctionDongleMemWrite(Byvalp1,p2AsInteger,buf)AsBooleanVariantbuf(一維字節數組)p1p2240-23*4.0版本中已取消此函數的功能,為了兼容,暫保存了此函數FunctionGetTemplate得到最近一次獲得的指紋模板。FunctionGetFingerImage(ByvalAFingerImage)AsBoolean得到最近一次獲得的指紋圖像(BMP格式)。FunctionInitEngineAsLongSensorCountSensorSNEngineValidImageHeight、ImageWidth等屬性需在該函數被調用后才能返回正確結果。返回值:初始化成功指紋識別驅動程序加載失敗沒有連接指紋識別儀屬性SensorIndex指定的指紋儀不存在〔留意:在調用之前設置屬性SensorIndex〕可以使用方法EndEngine釋放指紋設備系統FunctionVerFinger(byvalregTemplate,verTemplate,AdoLearningAsBoolean,byvalAregFeatureChangedAsBoolean)AsBoolean比對兩枚指紋的特征模版是否匹配regTemplate表示指紋登記特征模版,verTemplate表示現場采集的指紋驗證特征模版,AdoLearning表示是否進展指紋特征模版學習更。AregFeatureChanged表示登記模版regTemplate是否轉變,兩枚指紋匹配時返回True,不匹配時返回False說明:手指特征隨時間可能會發生確定程度的變化,通常不會影響指紋的比對,但通過進展指紋特征模版學習更,系統會綜合得到的模版,從而可以降低拒絕率。FunctionVerFingerFromFile(regTemplateFileAsString,verTemplateFileAsString,AdoLearningAsBoolean,byvalAregFeatureChangedAsBoolean)AsBoolean比對兩枚指紋的特征模版文件是否匹配。其中regTemplateFile表示指紋登記特征模版文件,verTemplateFile表示現場采集的指紋驗證特征模版文件,AdoLearningAregFeatureChanged表示登記模版文件regTemplateFileTrue,不匹配時FalseFunctionVerRegFingerFile(RegTemplateFileAsString,verTemplate,AdoLearningAsBoolean,byvalAregFeatureChangedAsBoolean)AsBoolean比對兩枚指紋的特征模版是否匹配。其中regTemplate表示由FileName指定文件中的以前登記指紋特征模版,verTemplate表示現場采集的指紋的特AdoLearningAregFeatureChangedregTemplateFile是否轉變。兩枚指紋TrueFalseSubPrintImageAt(HDCAsOLE_HANDLE,XAsLong,YAsLong,aWidthAsLong,aHeightAsLong)在由〔x,y〕指定的位置上依據〔aWidth,aHeight〕指定的大小顯示指紋圖像,HDC表示要顯示指紋的窗口的設備描述表句柄SubPrintImageEllipseAt(HDCAsOLE_HANDLE,XAsLong,YAsLong,aWidthAsLong,aHeightAsLong,bkColorAsOLE_COLOR)在由〔x,y〕指定的位置上依據〔aWidth,aHeight〕指定的大小顯示指紋圖像,HDC橢圓形包圍。SubSaveBitmap(FileNameAsString)保存最終一次采集到的指紋的圖像到FileName指定的位圖文件中。SubSaveJPG(FileNameAsString)保存最終一次采集到的指紋的圖像到FileName指定的Jpeg文件中。FunctionSaveTemplate(FileNameAsString,Template)AsBoolean保存Template指紋的特征模版到FileName指定的文件中。function EncodeTemplate(ASour,varADestAsString)AsBoolean將控件使用的Variant模板ASour轉換為BASE64格式的模板字符串ADest。function DecodeTemplate(constASourAsString,ADest)AsBoolean將BASE64格式的模板字符串ASour轉換為控件使用的Variant類型ADset模板。以上兩個方法主要用于模板的數據庫保存,Variant類型模板是以二進制PB,VBEncodeTemplate可以將VariantDecodeTemplate可以將字符串類型編碼轉換為VariantBASE64編碼為字符串后,模板長度將變長。function EncodeTemplate1(ASour)AsStringVariantASourBASE64格式的模板字符串。參考EncodeTemplatePB,VC中調用function DecodeTemplate1(constASourAsString)AsVariantBASE64ASourVariant類型模板。參考DecodeTemplatePB,VC中調用SubBeginCapture設置當前指紋設備開頭取像,可以使用方法CanncelCapture制止當前指紋設備取像。SubEndEngine釋放由方法InitEngineInitEngine重初始化指紋設備,在退出系統時,推舉不要調用。functionVerFingerFromStr(regTemplateStrAsString,verTemplateStrAsString,AdoLearningAsBoolean,byvalAregFeatureChangedAsBoolean)AsBoolean比對兩枚指紋的特征模版是否匹配。其中regTemplateStr表示指紋登記特征模版(BASE64格式的字符串),verTemplateStr表示現場采集的指紋驗證特征模版(BASE64格式的字符串),AdoLearning表示是否進展指紋特征模版AregFeatureChanged表示登記模版文件regTemplateFile是否轉變。TrueFalsefunctionGetTemplateAsStringAsString得到最近一次獲得的指紋驗證或者登記模板,可以在OnCapture,OnEnroll,OnCaptureToFile,OnEnrollToFile大事中調用,和GetTemplate方法功能類似,區分在于本方法返回為轉換為BASE64格式的模板字符串。1:N控件接口方法:FunctionAddRegTemplateToFPCacheDB(fpcHandleAsLong,FPIDAsLong,pRegTemplate)AsLong添加指紋登記模板pRegTemplate到指紋識別高速緩沖空間fpcHandle,FPID是要添加登記模板的標識。說明:fpcHandle 是創立高速緩沖空間的返回值,參見函數CreateFPCacheDB;fpcHandle=CreateFPCacheDB;FPID=IdentificationInFPCacheDB(…);當比對成功后返回FPID;Function AddRegTemplateFileToFPCacheDB(fpcHandleAs Long,FPIDAsLong,pRegTemplateFileAsString)AsLong添加由pRegTemplateFile指定文件中的以前指紋登記特征模版到指紋識別高速緩沖空間fpcHandle,FPID>=0。返回1表示成功,0表示失敗FunctionCreateFPCacheDBAsLong創立指紋識別高速緩沖空間,進展1:N識別時必需首先調用該函數得到指紋識別緩沖空間句柄。說明:由于Biokey1:1低速比對速度比較慢〔在PII23330ms〕,所以使AddRegTemplateToFPCache1:1指紋(質量較差的指紋)不能太多,否則影響比對速度。IsOneToOneTemplate1:1指紋可以同時創立多個緩沖區,用于分組比對等。SubFlushFPImages清空當前指紋設備中的緩沖圖像。SubFreeFPCacheDB(fpcHandleAsLong)釋放指紋識別高速緩沖空間,fpcHandle是調用該函數CreateFPCacheDB得到指紋識別緩沖空間句柄。FunctionIdentificationFromFileInFPCacheDB(fpcHandleAsLong,pVerTemplateFileAsString, ByvalScoreAsLong,ByvalProcessedFPNumberAsLong)AsLong將指紋驗證模板文件pVerTemplateFile和指紋識別高速緩沖空間fpcHandle中全部登記模板進展比對,ScoreProcessedFPNumber次比對中的最高分數,ProcessedFPNumber傳出比對的次數,當識別成功時返回值指紋標識,失敗返回-1。留意:在識別過程中假設比對分數大于等于屬性Threshold,則認為比對成功,不再和緩沖空間中剩余的指紋登記模板進展比對,函數返回匹配成功的指紋登記模板的指紋標識;當指紋驗證模板和指紋識別高速緩沖空間中全部指紋登記模板進展比對的分數都沒有超過設定的Threshold,但同時比對的最高分數大于等于Score,則認為比對也是匹配成功,函數返回比對最高分數的指紋登記模板的標識,8;Function IdentificationInFPCacheDB (fpcHandle As Long,pVerTemplate, ByvalScoreAsLong,ByvalProcessedFPNumberAsLong)AsLongpVerTemplatefpcHandle中全部登記模板進展比對,Score傳出ProcessedFPNumber次比對中的最高分數,ProcessedFPNumber傳出比對的次數,當識別成功時返回值指紋標識,失敗返回-1。留意:在識別過程中假設比對分數大于等于屬性Threshold,則認為比對成功,不再和緩沖空間中剩余的指紋登記模板進展比對,函數返回匹配成功的指紋登記模板的指紋標識;當指紋驗證模板和指紋識別高速緩沖空間中全部指紋登記模板進展比對的分數都沒有超過設定的Threshold,但同時比對的最高分數大于等于Score,則認為比對也是匹配成功,函數返回比對最高分數的指紋登記模板的標識,8;FunctionIsOneToOneTemplate(ATemplate)AsBoolean推斷當前指紋特征模版Atemplate是否為Biokey1低速比對特征模版。FunctionModifyTemplate(byvalAtemplate,AOneToOneAsBoolean)AsBoolean依據AOneToOne修改指紋特征模版AtemplateBiokey1:1低速比對特征模版或者高速比對特征模版。FunctionRemoveRegTemplateFromFPCacheDB(fpcHandleAsLong,FPIDAsLong)AsLong刪除指紋識別高速緩沖空間fpcHandleFPID的指紋登記1表示成功,0表示失敗SubCancelCapture制止當前指紋設備取像,可以使用方法BeginCapture使指紋設備開頭取像。Function AddRegTemplateStrToFPCacheDB(fpcHandleAs Long,FPIDAsLong,ARegTemplateStrAsString)AsLongBASE64ARegTemplateStr指紋登記特征模版到指紋識別高速緩沖空間fpcHandle,FPID>=01表示成功,0表示失敗FunctionIdentificationFromStrInFPCacheDB(fpcHandleAsLong,AVerTemplateStrAsString, ByvalScoreAsLong,ByvalProcessedFPNumberAsLong)AsLong將指紋驗證模板AverTemplateStr(BASE64格式的字符串)和指紋識別高fpcHandleScoreProcessedFPNumber次比對中的最高分數,ProcessedFPNumber傳出比對的次數,當識別成功時返回值指紋標識,失敗返回-1。留意:在識別過程中假設比對分數大于等于屬性Threshold,則認為比對成功,不再和緩沖空間中剩余的指紋登記模板進展比對,函數返回匹配成功的指紋登記模板的指紋標識;當指紋驗證模板和指紋識別高速緩沖空間中全部指紋登記模板進展比對的分數都沒有超過設定的Threshold,但同時比對的最高分數大于等于Score,則認為比對也是匹配成功,函數返回比對最高分數的指紋登記模板的標識,9;SubSetAutoIdentifyPara(AutoIdentifyAsBoolean,fpcHandleAsLong,ScoreAsLong)設置內部高速比對需要的比對方式AutoIdentify、高速緩沖句柄fpcHandle和最低閥值分數Score,Score可以參考方法IdentificationFromInFPCacheDBAutoIdentify=True時,按壓指紋激活OnCapture大事,提取到指紋比對模板后,控件內部直接調用優化的高速比對功能進展比對,比對結果可以通過OnCapture的參數ATemplate或者GetTemplateIdentificationINFPCahceDB函數進展比對。請參考OnCapture大事。外部圖象文件接口方法:FunctionAddBitmap(BitmapHandleAsOLE_HANDLE,ValidRectX1AsLong,ValidRectY1AsLong,ValidRectX2AsLong,ValidRectY2AsLong,DPIAsLong)AsBoolean使用由BitmapHandle指定的位圖進展登記或比對。ValidRectX1、ValidRectY1、ValidRectX2、ValidRectY2四個參數指定了圖像的有效區域,假設指定的圖像區域無效,將取圖像取全部區域,DPI指定了圖像的區分率大小。FunctionAddImageFile(FileNameAsString,DPIAsLong)AsBoolean使用由FileName指定的指紋圖像文件(支持BMP,JPG格式)進展登記或比對。DPI指定了圖像的區分率大小。以上兩個函數在使用前,假設是將圖象文件用于指紋登記,首先使用BeginEnroll,并設定EnrollCount,假設是用于比對,使用BeginCapture,然后使用AddImageFileAddBitmap,系統觸發OnEnrollOnCapture大事。以上外部圖象接口函數在Biokey4.0LiteVersion中不供給支持。大事OnCapture(ActionResultASBoolean,ATemplate)AutoIdentify=False時,取到用于比對的指紋驗證模板ATemplate,ActionResult=true表示成功取到指紋模版;False表示失敗。AutoIdentify= True時,返回指紋比對結果(一維數組),請參考下面定義:ATemplate[0] 代表ID值-1代表查找失敗ATemplate[1] 1:NIdentificationScore參數ATemplate[2] 1:N指紋比對數ATemplate[3] 1:1指紋比對數請參考SetAutoIdentifyPara方法。OnCaptureToFile(ActionResultASBoolean)取到用于比對的指紋驗證模板,模版保存到文件中,文件名稱為屬性VerTplFileName設置,ActionResult=true表示成功取到指紋模版;False表示失敗,VerTplFileName沒有設置或者為空,則不產生保存文件,但本大事照舊會觸發。OnEnroll(ActionResultASBoolean,ATemplate)用戶登記指紋完畢時調用該大事,ActionResult=true表示成功登記,pTemplate屬性可取得指紋特征模版;False表示失敗。OnEnrollToFile(ActionResultASBoolean)用戶登記指紋完畢時調用該大事,ActionResult=true表示成功登記,指紋特征模板保存到文件中RegTplFileNameFalseRegTplFileName4.4.0OnFeatureInfo(AQualityAsLong)取得指紋初始特征,Quality表示該指紋特征的質量,有如下可能值:0:好的指紋特征1:特征點不夠2:其它緣由導致不能取到指紋特征OnImageReceived(byvalAImageValidAsBoolean)設備取到指紋圖像或者通過AddImageFile和AddBitmap參與指紋圖像時調用該大事,AImageValid表示是否進展模板提取,設置為False后,系統在取到指紋圖像后返回,不進展模板提取。OnFingerTouching當手指按壓指紋取像設備時調用該大事。4.4.0OnFingerLeaving當手指移開指紋取像設備時調用該大事。5、工作流程說明IsRegBeginEnrollOnImageReceivedOnFeatureInfo否OnImageReceivedOnFeatureInfo否1-4次是OnEnrollOnEnrollToFileTemplateImage26ImageIsRegOnImageReceivedOnFeatureInfoOnImageReceivedOnFeatureInfoOnCaptureOnCaptureToFileTemplateImageTemplateImage27BiokeySDKBiokeySDK開發手冊28工作流程說明:BeginEnroll用BeginCapture處于指紋驗證狀態。控件的工作方式是基于大事驅動,觸發大事的挨次參考上面示意圖。指紋登記一般需要按同一手指1-4次,然后由識別系統綜合處理得到一EnrollCount次數后會觸發OnEnroll和OnEnrollToFile大事。OnCapture和OnCaptureToFile時可以調用VerFinger或者IdentificationInFPCacheDB1:11:N比對。需要留意每次按壓手指都會觸發OnFeatureInfo紋模板質量不合格,則本次取像無效,需要重按壓手指6、常見問題說明1:11:N的應用1:11:1驗證的開發工程,一般需要預先輸入當前驗證客戶的標識,然后得到他已經登記的一個或幾個模板與現場采集的模版進展驗證;而1:N函數主要用于不輸入客戶標識,直接通過客戶指紋從已經登記的指紋模板中找出自己。1:1主要目標是高的通過率和相對高的準確率;1:N主要目標是高的比對速度和相對高的準確率.。數據庫中指紋模板寫入和讀出SDK中指紋模板是以Vairant變量的方式保存和傳遞,其存儲的是一維SQL理方法:1、EncodeTemplate和DecodeTemplate方法可以在Variant變量和字符串變量之間相互進展BASE64編碼轉換,轉換為字符串后,模板長度會增加大1/3。2、在OnEnroll大事和OnCapture大事中直接調用GetTemplateAsString方法得到相應字符串形式的登記模板和比對模板。3、直接操作Variant變量,下面是操作例如:Delphi,CB:procedureTFPProcess.SaveFPData(AQuery:TADOQuery;AFingerID:Integer;AFPData:OleVariant);varpData:PChar;beginwithAQuerydobeginClose;SQL.Clear;SQL.Add(”SELECT*FROMzkFingerPrintWHEREFingerID=”+IntToStr(AFingerID));Open;ifIsEmptythenAppendelseEdit;FieldByName(”FingerID”).Value:=AFingerID;//保存指紋模板withTBlobStream(CreateBlobStream(FieldByName(”Template”),bmWrite))dobeginpData:=VarArrayLock(AFPData);tryWrite(pData^,VarArrayHighBound(AFPData,1)-VarArrayLowBound(AFPData,1)+1);finallyVarArrayUnlock(AFPData);end;Free;end;Post;Close;end;end;procedureTFPProcess.GetFPData(AQuery:TADOQuery;AFingerID:Integer;varAFPData:OleVariant);varpData:PChar;beginwithAQuerydobeginClose;SQL.Clear;SQL.Add(”SELECT*FROMzkFingerPrintWHEREFingerID=”+IntToStr(AFingerID));Open;//讀取數據ifnotIsEmptythenwithTBlobStream(CreateBlobStream(FieldByName(”Template”),bmRead))dobeginAFPData:=VarArrayCreate([0,Size+1],varByte);pData:=VarArrayLock(AFPData);tryRead(pData^,Size);finallyVarArrayUnlock(AFPData);end;Free;end;Close;end;end;其它語言請參考“://zksoftware/“zksoftware上技術爭論論壇。軟件加密狗和授權許可文件已取消1:N高速緩沖空間的使用在1:N比對時,需要比照對模板進展分類,同時為了得到最高速度,SDK實際上是內存空間,使用時需要首先用方法CreateFPCahceDB創立,然后用方法AddRegTemplateToFPCahceDB,RemoveRegTemplateFromFPCacheDB等FreeFPCacheDB釋放內存空間。可以同時創立多個高速緩沖空間以用于實現分組查詢等功能。使用平面指紋圖像在一些工程工程中,很多時候要求保存指紋圖像,或者從掃描儀直接掃描得到平面指紋圖像,因此SDK4.0StarndardVersion或SDK4.0ProjectVersioin供給方法AddImageFile等可以直接從平面指紋圖像得到指紋登記模板或比對模版的方法,但需要留意必需將圖像的區分率則正確傳入此方法,350DPI。留意,在一般版中SDK4.0LiteVersion不供給此方法。指紋識別閥值的設定屬性Threshold推舉值為10.0011.5-2%之間。屬性OneToOneThreshold8。Score81:N識別中低質量指紋模板的處理方法在1:N驗證時,在指紋登記時系統自動將指紋模板依據質量的好壞分類標識和保存在模板中,質量差的登記模板稱為Biokey1:1低速比對特征模版,質量好的登記模板稱為Biokey高速比對特征模版。在一般的應用環境中,大約有5%的登記指紋模板會被標識為低速比對特征模板,可以用方法IsOneToOneTemplate推斷是否是低速比對特征模版,用方法ModifyTemplate可以人為強行轉變質量的好壞分類標識。由于Biokey1:1低速比對速度比較慢〔在PII23330ms〕,所以使用方法AddRegTemplateToFPCache參與到高速緩沖空間中的低速比對特征模版不能太多,否則影響比對速度。1:NIdentificationInFPCacheDB進展指紋識別的流程如以以下圖:IdentificationFromFileInFPCacheDB (fpcHandle As Long, pVerTemplateFileAs ByvalScoreAsLong,ByvalProcessedFPNumberAsLong)AsLong比對模板比對模板模板分類依據分類查找高速緩沖中指紋比對指紋是比對分數>=Threshold否比對分數>=3是否保存到全部比對列表是是可疑指紋最高分>=Score否1:1低速比對TRUE比對結果FALSE否全部比對是1:1比對比對結果TRUEFALSE否全部比對是識別失敗返回結果識別成功連接多個指紋儀SensorIndex紋儀個數通過屬性SensorCount得到,假設需要區分各個指紋儀,使用屬性SensorSN,每個指紋儀的SensorSN是唯一的。模板操作的文件/字符串/變體變量方法為了在不同開發語言中,便利操作模板的登記,比對等,可以選擇文件方式、字符串和變體變量等三種方式進展。以下分別列出,請參考:模板VariantString之間的轉換EncodeTemplate,EncodeTemplate1:Variant->StringDecodeTemplate,DecodeTemplate1:String->Variant添加模板到高速緩沖區AddRegTemplateToFPCacheDB VariantAddRegTemplateStrToFPCacheDB StringAddRegTemplateFileToFPCacheDB File在高速緩沖識別指紋IdentificationFromInFPCacheDB VariantIdentificationFromStrInFPCacheDB StringIdentificationFromFileCacheDB File1:1比對模板VerFinger VariantVerFingerFromStr StringVerFingerFromFile File7、DEMO程序說明1:N控件的VB例子程序進展說明〔1:1控件使用根本相像。首先確認已經注冊1:N控件,加密狗插入到并行口或者授權文件已經拷貝到當前應用程序路徑下,已經安裝指紋儀驅動程序。運行VB的Demo顯示如下界面:窗口指紋控件名稱為ZKFPEngX1。初始化代碼如下:IfZKFPEngX1.InitEngine=0ThenMessageBox0,“初始化成功!“,“提示信息“,0StatusBar.Caption=“指紋儀連接“TextSensorCount.Text=ZKFPEngX1.SensorCount&““TextSensorIndex.Text=ZK

溫馨提示

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

評論

0/150

提交評論