thinkpad指纹识别设置问题

iOS 指纹识别常见问题汇总 - 简书
iOS 指纹识别常见问题汇总
最近公司的 app 要使用指纹支付了;总体来说还是蛮顺利的;但是中间有遇到一些坑;下面就对坑进行汇总;
一.基本知识
点开这个LocalAuthentication.framework,发现里面主要有这么几个东西
LocalAuthentication.framework
- LAContext.h
- LAError.h
- LAPublicDefines.h
- LocalAuthentication.h
LocalAuthentication.h
这个没什么可讲的吧,代码就两行,一行导入LAContext.h,一行导入LAError.h,这个LocalAuthentication类是暴露出来方便开发者调用的类。
LAPublicDefines.h
先从简单的开始讲吧,首先是LAPublicDefines.h,从名字上来看是公共宏定义类,里面包含了许多定义好的宏,这些宏会在LAContext.h得到使用。
LAPublicDefines.h
LocalAuthentication
Copyright (c) 2014 Apple. All rights reserved.
#ifndef LocalAuthentication_LAPublicDefines_h
#define LocalAuthentication_LAPublicDefines_h
// Policies
#define kLAPolicyDeviceOwnerAuthenticationWithBiometrics
#define kLAPolicyDeviceOwnerAuthentication
// Options
#define kLAOptionUserFallback
#define kLAOptionAuthenticationReason
// Credential types
#define kLACredentialTypePasscode
#define kLACredentialTypePassphrase
#define kLACredentialCTKPIN
// Error codes
#define kLAErrorAuthenticationFailed
#define kLAErrorUserCancel
#define kLAErrorUserFallback
#define kLAErrorSystemCancel
#define kLAErrorPasscodeNotSet
#define kLAErrorTouchIDNotAvailable
#define kLAErrorTouchIDNotEnrolled
#define kLAErrorTouchIDLockout
#define kLAErrorAppCancel
#define kLAErrorInvalidContext
// Error domain
#define kLAErrorDomain
"com.apple.LocalAuthentication"
这个类其实也不用赘述,就是一个枚举,里面写的是错误的类型,其实就是把上面的kLAError宏写进这个枚举了,具体代码注释写的很清晰,大概翻译了一下
typedef NS_ENUM(NSInteger, LAError)
LAErrorAuthenticationFailed,
// 验证信息出错,就是说你指纹不对
LAErrorUserCancel
// 用户取消了验证
LAErrorUserFallback
// 用户点击了手动输入密码的按钮,所以被取消了
LAErrorSystemCancel
// 被系统取消,就是说你现在进入别的应用了,不在刚刚那个页面,所以没法验证
LAErrorPasscodeNotSet
// 用户没有设置TouchID
LAErrorTouchIDNotAvailable
// 用户设备不支持TouchID
LAErrorTouchIDNotEnrolled
// 用户没有设置手指指纹
LAErrorTouchIDLockout
// 用户错误次数太多,现在被锁住了
LAErrorAppCancel
// 在验证中被其他app中断
LAErrorInvalidContext
// 请求验证出错
} NS_ENUM_AVAILABLE(10_10, 8_0);
LAContext.h
重头戏来了,想在自己的项目中使用TouchID,就要用到LAContext这个类里面的方法首先映入眼帘的是一个NS_ENUM枚举LAPolicy。
typedef NS_ENUM(NSInteger, LAPolicy)
LAPolicyDeviceOwnerAuthenticationWithBiometrics NS_ENUM_AVAILABLE(NA, 8_0) __WATCHOS_AVAILABLE(3.0) __TVOS_AVAILABLE(10.0) = kLAPolicyDeviceOwnerAuthenticationWithBiometrics,
LAPolicyDeviceOwnerAuthentication NS_ENUM_AVAILABLE(10_11, 9_0) = kLAPolicyDeviceOwnerAuthentication
} NS_ENUM_AVAILABLE(10_10, 8_0) __WATCHOS_AVAILABLE(3.0) __TVOS_AVAILABLE(10.0);
第一个枚举LAPolicyDeviceOwnerAuthenticationWithBiometrics就是说,用的是手指指纹去验证的;NS_ENUM_AVAILABLE(NA, 8_0)iOS8 可用第二个枚举LAPolicyDeviceOwnerAuthentication少了WithBiometrics则是使用TouchID或者密码验证,默认是错误两次指纹或者锁定后,弹出输入密码界面;NS_ENUM_AVAILABLE(10_11, 9_0)iOS 9可用
首先暴露出来的几个方法,注意这里都是实例方法,所以需要创建一个实例对象去才能调用,使用LAContext *context = [LAContext alloc] init];创建一个LAContext对象。
canEvaluatePolicy:error:方法用来检查当前设备是否可用touchID,返回一个BOOL值evaluatePolicy:localizedReason:reply:调用验证方法,注意这里的三个参数:第一个参数policy是要使用上面那个LAPolicy的枚举第二个参数localizedReason是NSString类型的验证理由第三个参数reply则是一个回调Block,block内有一个BOOL类型的success判断是否成功验证,还有一个用于判断错误信息的NSError类型的errorinvalidate方法用来废止这个context
第一次touchID 样式
错误后 touchID 样式
- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error __attribute__((swift_error(none)));
- (void)evaluatePolicy:(LAPolicy)policy
localizedReason:(NSString *)localizedReason
reply:(void(^)(BOOL success, NSError * __nullable error))
枚举LACredentialType,LAAccessControlOperation,这个东西和下面的几个方法我查了很久也没弄明白用在哪,苹果官方文档也看的不太懂,枚举中只有一个LACredentialTypeApplicationPassword。不过通过这个NS_ENUM_AVAILABLE(10_11, 9_0)还有方法后面的NS_AVAILABLE(10_11, 9_0)知道这个枚举和这两个方法只能在OS X 10.11和iOS 9.0以上版本使用,所以可能是比较新的东西,后面苹果还会对他扩充吧。下面是方法的说明:
// 目前额外加密就一种就是应用密码
// 输入进去将会是 UTF-8 的字符串
typedef NS_ENUM(NSInteger, LACredentialType)
LACredentialTypeApplicationPassword = 0,
} NS_ENUM_AVAILABLE(10_11, 9_0);
// 以下方法据我理解应该是:可以在验证Touch ID之后额外加密?
// 设置解锁额外加密凭证
- (BOOL)setCredential:(nullable NSData *)credential
type:(LACredentialType)type NS_AVAILABLE(10_11, 9_0);
// 判断加密凭证是否设置成功
- (BOOL)isCredentialSet:(LACredentialType)type NS_AVAILABLE(10_11, 9_0);
// 通过Touch ID来验证加密凭证是否通过
- (void)evaluateAccessControl:(SecAccessControlRef)accessControl
operation:(LAAccessControlOperation)operation
localizedReason:(NSString *)localizedReason
reply:(void(^)(BOOL success, NSError * __nullable error))reply
NS_AVAILABLE(10_11, 9_0);
typedef NS_ENUM(NSInteger, LAAccessControlOperation)
// 创建额外加密
LAAccessControlOperationCreateItem,
// 使用额外加密
LAAccessControlOperationUseItem,
// 创建额外加密key
LAAccessControlOperationCreateKey,
// 使用额外加密key签名
LAAccessControlOperationUseKeySign
} NS_ENUM_AVAILABLE(10_11, 9_0);
属性的话,这里有5个
@property (nonatomic, nullable, copy) NSString *localizedFallbackT
@property (nonatomic, nullable, copy) NSString *localizedCancelTitle NS_AVAILABLE(10_12, 10_0);
@property (nonatomic, nullable) NSNumber *maxBiometryFailures NS_DEPRECATED_IOS(8_3, 9_0) __WATCHOS_UNAVAILABLE __TVOS_UNAVAILABLE;
@property (nonatomic, nullable, readonly) NSData *evaluatedPolicyDomainState NS_AVAILABLE(10_11, 9_0) __WATCHOS_UNAVAILABLE __TVOS_UNAVAILABLE;
@property (nonatomic) NSTimeInterval touchIDAuthenticationAllowableReuseDuration NS_AVAILABLE(NA, 9_0) __WATCHOS_UNAVAILABLE __TVOS_UNAVAILABLE;
localizedFallbackTitle可以设置验证TouchID时弹出Alert的输入密码按钮的标题localizedCancelTitle可以设置验证TouchID时弹出Alert的取消按钮的标题(iOS10才有)maxBiometryFailures 最大指纹尝试错误次数。 这个属性我们可以看到他后面写了NS_DEPRECATED_IOS(8_3, 9_0),说明这个属性在iOS 8.3被引入,在iOS 9.0被废弃,所以如果系统版本高于9.0是无法使用的。evalueatedPolicyDomainState这个跟可以检测你的指纹数据库的变化,增加或者删除指纹这个属性会做出相应的反应touchIDAuthenticationAllowableReuseDuration这个属性应该是类似于支付宝的指纹开启应用,如果你打开他解锁之后,按Home键返回桌面,再次进入支付宝是不需要录入指纹的。因为这个属性可以设置一个时间间隔,在时间间隔内是不需要再次录入。默认是0秒,最长可以设置5分钟。
二.常见问题
1. 指纹识别的版本问题
iOS 9 之前是没有LAErrorTouchIDLockout锁定这个选项的,默认错误5次后;第6次验证是自动弹出输入密码界面;
iOS 9 之后锁定指纹识别之后,如果需要立即弹出输入密码界面需要使用LAPolicyDeviceOwnerAuthentication这个属性重新发起验证
如果输入了锁屏密码,指纹解密锁定会默认解除
iOS 8 错误5次锁定后,第6次验证需要密码
支付宝微信对于锁定的不同处理
2. 指纹识别的LAPolicy
第一个枚举LAPolicyDeviceOwnerAuthenticationWithBiometrics就是说,用的是手指指纹去验证的;NS_ENUM_AVAILABLE(NA, 8_0)iOS8 可用
第二个枚举LAPolicyDeviceOwnerAuthentication少了WithBiometrics则是使用TouchID或者密码验证,默认是错误两次指纹或者锁定后,弹出输入密码界面;NS_ENUM_AVAILABLE(10_11, 9_0)iOS 9可用
3. 指纹识别LAContext的方法
canEvaluatePolicy:error:方法用来检查当前设备是否可用touchID,返回一个BOOL值;不会弹验证指纹密码框
evaluatePolicy:localizedReason:reply:调用验证方法,会弹验证指纹密码框
4. feedback按钮显示
默认第一次识别只有取消按钮
错误一次之后,会显示 feedBack 按钮
如果不想显示 feedback 按钮;可以设置 feedBackTitle = @""
设置 feedbackTitle 为@""
设置 feedbackTitle 为@"验证登录密码"
5. CancelTitle按钮显示
该属性, iOS 10 才可以进行设置,iOS 以前是不可以进行设置的
6. 指纹识别慢的问题
我的 iphone 7 Plus指纹识别启动过程需要2s 左右的时间;如果发现启动比较慢,这个是正常现象
支付宝和微信为了消除用户的紧张情绪,在开启指纹识别的时候都有放 HUD
指纹识别完成后,需要返回主线程进行相应的 操作;否者你会发现有时候识别完4-5秒才有反应
微信支付 HUD显示案例
demo的 HUD显示案例
[SVProgressHUD show];
LAContext *context = [[LAContext alloc]init];//使用 new 不会给一些属性初始化赋值
context.localizedFallbackTitle = @"输入密码";//@""可以不让 feedBack 按钮显示
//LAPolicyDeviceOwnerAuthenticationWithBiometrics
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"请验证已有指纹" reply:^(BOOL success, NSError * _Nullable error) {
[SVProgressHUD dismiss];
//SVProgressHUD dismiss 需要 0.15才会消失;所以dismiss 后进行下一步操作;但是0.3是适当延长时间;留点余量
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3* NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
if (success)
NSLog(@"指纹识别成功");
// 指纹识别成功,回主线程更新UI
dispatch_async(dispatch_get_main_queue(), ^{
//成功操作
if (error) {
//指纹识别失败,回主线程更新UI
dispatch_async(dispatch_get_main_queue(), ^{
//失败操作
LAError errorCode = error.
switch (errorCode) {
case LAErrorAuthenticationFailed:
NSLog(@"授权失败"); // -1 连续三次指纹识别错误
case LAErrorUserCancel: // Authentication was canceled by user (e.g. tapped Cancel button)
NSLog(@"用户取消验证Touch ID"); // -2 在TouchID对话框中点击了取消按钮
case LAErrorUserFallback: // Authentication was canceled, because the user tapped the fallback button (Enter Password)
NSLog(@"用户选择输入密码,切换主线程处理"); // -3 在TouchID对话框中点击了输入密码按钮
case LAErrorSystemCancel: // Authentication was canceled by system (e.g. another application went to foreground)
NSLog(@"取消授权,如其他应用切入"); // -4 TouchID对话框被系统取消,例如按下Home或者电源键
case LAErrorPasscodeNotSet: // Authentication could not start, because passcode is not set on the device.
NSLog(@"设备系统未设置密码"); // -5
case LAErrorTouchIDNotAvailable: // Authentication could not start, because Touch ID is not available on the device
NSLog(@"设备未设置Touch ID"); // -6
case LAErrorTouchIDNotEnrolled: // Authentication could not start, because Touch ID has no enrolled fingers
NSLog(@"用户未录入指纹"); // -7
case LAErrorTouchIDLockout: //Authentication was not successful, because there were too many failed Touch ID attempts and Touch ID is now locked. Passcode is required to unlock Touch ID, e.g. evaluating LAPolicyDeviceOwnerAuthenticationWithBiometrics will ask for passcode as a prerequisite 用户连续多次进行Touch ID验证失败,Touch ID被锁,需要用户输入密码解锁,先Touch ID验证密码
NSLog(@"Touch ID被锁,需要用户输入密码解锁"); // -8 连续五次指纹识别错误,TouchID功能被锁定,下一次需要输入系统密码
case LAErrorAppCancel: // Authentication was canceled by application (e.g. invalidate was called while authentication was in progress) 如突然来了电话,电话应用进入前台,APP被挂起啦");
NSLog(@"用户不能控制情况下APP被挂起"); // -9
case LAErrorInvalidContext: // LAContext passed to this call has been previously invalidated.
NSLog(@"LAContext传递给这个调用之前已经失效"); // -10
7.弹窗显示级别问题
指纹识别的弹窗的级别非常之高,高到离谱,经过验证应用程序内部没有比指纹识别的window的级别更高的UIWindowLevel,也就说了他是系统级的弹窗。需要注意的是,如果指纹弹窗显示和消失应用程序会调用:
- (void)applicationWillResignActive:(UIApplication *)
- (void)applicationDidBecomeActive:(UIApplication *)
所以应用程序内部无法获取。不知道越狱之后的手机能否获取到,如果能获取到,那就不可描述了,所以推荐各位看官没什么刚需不要越狱。
8.检测指纹库中指纹是否发生改变
This property returns a value only when the canEvaluatePolicy(:error:) method succeeds for a biometric policy or the evaluatePolicy(:localizedReason:reply:) method is called and a successful Touch ID authentication is performed. Otherwise, nil is returned.The returned data is an opaque structure. It can be used to compare with other values returned by this property to determine whether the database of authorized fingerprints has been updated. However, the nature of the change cannot be determined from this data.
当你增加或者删除指纹时候,你在使用使用canEvaluatePolicy(_:error:)或者evaluatePolicy(_:localizedReason:reply:)方法验证;成功后evaluatedPolicyDomainState属性会返回一个 NSData 对象;否则返回
但是返回的evaluatedPolicyDomainState属性并不能说明发生了什么样子的改变;只是告诉你发生了改变
根据上面的信息,我们就可以每次使用指纹的时候检测指纹数据库是否发生改变并作出相应的操作;下面是做的一个相应示例
evaluatedPolicyDomainState使用示例
9.支持机型判断
从设备和系统判断是否是支持TouchID,有点取巧.h 文件
NSString+QDTouchID.h
Created by 陈博文 on 16/10/25.
Copyright (C) 2016年 UCSMY. All rights reserved.
#import &Foundation/Foundation.h&
@interface NSString (QDTouchID)
+ (BOOL)judueIPhonePlatformSupportTouchID;
NSString+QDTouchID.m
Created by 陈博文 on 16/10/25.
Copyright (C) 2016年 UCSMY. All rights reserved.
#import "NSString+QDTouchID.h"
#include &sys/sysctl.h&
#define IOS8_OR_LATER
( [[[UIDevice currentDevice] systemVersion] compare:@"8.0"] != NSOrderedAscending )
#define IS_Phone UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone
@implementation NSString (QDTouchID)
//是否是iOS8.0以上的系统
//是否是5s以上的设备支持
+ (NSString *)platform
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];
free(machine);
// 判断是否支持TouchID,只判断手机端,ipad端我们不支持
+ (BOOL)judueIPhonePlatformSupportTouchID
if ([platform isEqualToString:@"iPhone1,1"])
return @"iPhone1G GSM";
if ([platform isEqualToString:@"iPhone1,2"])
return @"iPhone3G GSM";
if ([platform isEqualToString:@"iPhone2,1"])
return @"iPhone3GS GSM";
if ([platform isEqualToString:@"iPhone3,1"])
return @"iPhone4 GSM";
if ([platform isEqualToString:@"iPhone3,3"])
return @"iPhone4 CDMA";
if ([platform isEqualToString:@"iPhone4,1"])
return @"iPhone4S";
if ([platform isEqualToString:@"iPhone5,1"])
return @"iPhone5";
if ([platform isEqualToString:@"iPhone5,2"])
return @"iPhone5";
if ([platform isEqualToString:@"iPhone5,3"])
return @"iPhone 5c (A)";
if ([platform isEqualToString:@"iPhone5,4"])
return @"iPhone 5c (A/A)";
if ([platform isEqualToString:@"iPhone6,1"])
return @"iPhone 5s (A)";
if ([platform isEqualToString:@"iPhone6,2"])
return @"iPhone 5s (A/A)";
if(IS_Phone)
if([self platform].length & 6 )
NSString * numberPlatformStr = [[self platform] substringWithRange:NSMakeRange(6, 1)];
NSInteger numberPlatform = [numberPlatformStr integerValue];
// 是否是5s以上的设备
if(numberPlatform & 5)
return YES;
return NO;
return NO;
// 我们不支持iPad 设备
return NO;
如果有问题或者建议欢迎留言,大家一起学习探讨.
自己学东西容易忘,也不会总结.总是一路捡起东西,走了几步捡到东西又把旧的东西扔掉,写这个让自己...应用技巧栏目
热门系统教程
系统下载排行
建议使用以上版本或、浏览器访问本站,获得更好的用户体验。股票/基金&
指纹识别面临的问题及其市场定位探讨
  目前在国内,指纹识别由于其发展时间长,且发展速度比较快,并且经过多年的市场推广和应用,在门禁、考勤、保险箱、身份认证等方面都有比较成熟的产品,同时由于其成本较其他识别技术低,更易推广和被用户接受。  英格索兰安防技术经理黎剑表示:“指纹识别技术发展到现在技术已经比较成熟,其成本也在降低,体积也越来越小,但是在指纹破损严重或者脏的情况下难识别,另外还存在被采集、复制等方面的问题。”针对指纹被复制问题,很多生物识别人士认为指纹的复制只是针对某种指纹采集方式所产生的问题,如果是超声波采集等高采集方式指纹的复制问题将会迎刃而解,但是相对的指纹采集成本也会成倍地提高。  指纹识别目前主要面临的是普识率的问题。在日常生活中,有一部分人的指纹是无法采集的,这里既有先天遗传的问题,也有诸如后天长时间的劳作或者疾病等原因造成的。“通过我们的调查,这样的比例大概在千分之一到千分之三之间,比预期的比例要大。” 佛山华运科技总经理毛巨勇表示,“这就意味着,在一个需要采集基数很大的应用场所中,不可以采集的指纹数量会非常多,这种因素限制了指纹识别在面向公众的大型系统中的应用。”同时,指纹识别作为接触式的识别方式,不太适合医院等场所应用。  因此,指纹识别更多地应用在中小企业的门禁、考勤以及对安防要求较低的身份认证和箱柜锁、电脑手机认证等民用市场,并且随着人们日益对个人生命财产安全与隐私的重视,获得广泛的应用。目前云计算开始进入产品推广阶段,如何保证云计算的数据安全成为人们关注的要点。握奇安全支付与可信计算产品线郭海兵表示,握奇通过将指纹产品Biokey和自身技术结合,实现了终端使用局域网预分配的IP 地址接入,服务器部署时不改动局域网拓扑结构及配置信息,远程及移动终端维持IP 地址预设应用等要求,为各行业专网和等环境的远程及移动安全接入提供安全认证的应用。  指纹识别技术与更多的产品领域结合,在中高端民用住宅市场获得重视。弗曼电子有限公司中国区销售总监丁雄刚表示,目前高档小区和楼盘对自身的安全的重视日益看重,融合进指纹识别的对讲产品在人数较少的别墅区、高档楼盘等场所的应用正在不断受到关注。
01/18 14:3201/12 05:3601/06 18:4401/06 11:0001/06 00:1801/03 09:5012/31 09:2512/28 11:30
科技精品推荐
每日要闻推荐
精彩焦点图鉴
  【免责声明】本文仅代表作者本人观点,与和讯网无关。和讯网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。工具类服务
编辑部专用服务
作者专用服务
指纹识别中几个实用问题的研究
近年来,随着全球经济和信息技术的不断发展,安全问题日益突出,越来越多的领域需要可靠的身份识别。生物特征识别技术为此提供了一种解决方案,而指纹识别技术是其中的最佳选择之一。指纹识别技术越来越被广泛地应用到各个方面,譬如出入境中的快速通关系统、银行的ATM机和家用电子门锁等。目前,各种指纹识别技术,包括指纹获取、分类、增强和匹配等都已经取得了很大的进展。但是在指纹识别领域,仍然存在一些值得深入研究的问题。  
本文的内容是在现有指纹识别算法的基础上,研究应用对指纹算法的几个重要需求,提高指纹识别系统的实用性:1)针对低质量、不完整指纹,实现准确快速的指纹识别;2)大规模数据库上的指纹索引;3)针对应用系统中多采集仪共存的情况,研究具有互用性的指纹匹配算法。本文将主要研究特征提取、指纹匹配和索引,对于涉及到的指纹识别中的其他问题,如方向场计算、指纹增强、特征后处理等,则倾向于采用或改进现有的经典方法。本文主要的工作和贡献有:  
①针对在低质量、采集而积较小的指纹,提出一种结合了包括细节点、附属脊线上的双向采样信息、周围方向场分布等局部特征的指纹细节点描述方法,在配准处理中,进一步融合全局方向场和局部细节点特征来选择最优的配准参数。首先,由于局部细节点特征具有旋转平移不变性,结合细节点的坐标方向信息,可计算每对特征间的相似度及对应变换参数(平移和旋转),确定候选的配准参数,同时采用傅立叶2D模型逼近指纹全局方向场,计算比对指纹间块方向场的相似度,并对每个配准参数进行检验(剔除可能的伪配准参数),最后在指纹匹配分数计算时,融合局部特征和全局特征的相似度,试用多种可能的融合策略,并根据实验结果,选取加权求和的融合方法。实验结果证明该方法对低质量指纹和小面积指纹的处理具有较好的鲁棒性。  
②针对大规模指纹数据库上的指纹识别问题,提出了基于分层局部细节点特征的索引算法,分析多种细节点局部特征(细节点指向、局部方向一致性、局部曲率、脊线采样)的比对效率和区分性,在局部细节点匹配时选择多层、从上到下的相似度判别方法,在最快的时间内剔除不对应的点匹配,估算出局部相似度分数,对每个输入细节点可能对应的细节点候选进行排序。基于此引出基于细节点的指纹索引方法,不需要细节点配对步骤,直接计算指纹匹配的可能性。以此为索引变量,实现大规模指纹库上的索引,并进一步将算法和传统的依据全局特征进行指纹索引的方法进行融合。该算法可以提高形变指纹库上的索引准确性。我们还将此方法用于常规的指纹匹配中,在基于细节点结构的算法中(拓扑结构,三角结构等),可以减少细节点的搜索范围,增强细节点的可区分性,提高指纹匹配的性能。  
③针对多采集仪间指纹交叉匹配中全局缩放参数最优化和交叉匹配中的非线性形变进行研究。指纹预处理后,采用一个从粗到细的方法来估计模板指纹和输入指纹间的缩放参数。首先,基于指纹模型化的脊线距离图粗略估计全局的尺寸缩放初值。然后通过最大化两个对比的细节点特征间的相似度得到较精确的局部缩放尺寸。最后全局尺寸缩放值估算为匹配上的细节点对间的局部尺寸缩放值直方图的峰值。然后提出一种阶层式配准方法来计算指纹变换模型参数。我们的目标是找到一个最优的2D模型来描述不同采集模式引入的非线性形变。我们采用包含缩放、位移、旋转4个参数的线性刚性模型作为初始的指纹变换模型。然后在迭代过程中将其升级为包含6个参数的仿射变换模型,再升级为包含12个参数的二阶变换模型。采用改进后的迭代最近准则(ICP)建立两个比对细节点集间的对应关系。在来自于四个不同采集仪的FINGERPASS指纹数据库上的试验结果证明该算法能够有效的处理交叉匹配间的非线性形变,提高匹配性能。  
总的说来,本文在针对指纹识别算法的实用中的一些问题作了有益的探索。
学科专业:
授予学位:
学位授予单位:
导师姓名:
学位年度:
本文读者也读过
相关检索词
万方数据知识服务平台--国家科技支撑计划资助项目(编号:2006BAH03B01)(C)北京万方数据股份有限公司
万方数据电子出版社

我要回帖

更多关于 指纹密码锁 的文章

 

随机推荐