本发明涉及指纹参数处理方法,尤其涉及一种基于android系统的开机自适应初始化指纹参数方法。
背景技术:
目前,随着指纹技术越来越普及,很多android系统设备都带有指纹外设,特别是手机,指纹基本成为标配,对指纹的测试越来越完善,与用户安全相关,要求指纹稳定性很高,但由于指纹批次不同及工艺工差等因素,会导致不同指纹在同一初始化参数dacp值下,图像的明暗程度是有一定的差异,所以固定用一个初始化参数dacp值适应所有指纹sensor在某些场景下是可能存在功能性的问题。
现有技术中,固定用一个初始化参数dacp值适应所有指纹sensor在某些场景下是可能存在功能性的问题,有以下几个原因造成:
首先,dacp是指图像明暗程度,对于干湿手指都会调整dacp的值,得到较好的图像;
其次,初始化参数dacp值会影响按压指纹触发中断的灵敏度,dacp值越小图像会越黑,当黑到一定程度会导致没有按压指纹sensor中心区域灰度值达到触发阈值自动来中断,当白到一定程度会导致按压指纹sensor中心区域灰度值未达到触发阈值不来中断,所以初始化参数dacp值设置是很重要;
此外,由于指纹批次不同及工艺工差(晶圆,封装,模组制作)等因素,会导致不同指纹在同一初始化参数dacp值下,图像的明暗程度是有一定的差异。
技术实现要素:
本发明要解决的技术问题在于,针对现有技术的不足,提供一种能够自适应初始化指纹参数dacp值,无需使用固定dacp值,进而提高在不同场景下的兼容性和功能性的基于android系统的开机自适应初始化指纹参数方法。
为解决上述技术问题,本发明采用如下技术方案。
一种基于android系统的开机自适应初始化指纹参数方法,其包括有如下步骤:步骤s1,计算噪声图像指标:步骤s1.0,计算图像均值及均方差,计算得出其直方图并作为全局直方图,使用去除2*2黑边的图像计算黑点black_num,计算去除黑边的图像直方图并作为局部直方图;步骤s1.1,计算全局直方图和局部直方图各最大值的像素点值index_max和index_max_all,全局直方图和局部直方图中像素点最小值index_min和index_left_all,以及全局直方图中像素点最大值index_right_all,并根据计算结果构建噪声直方图;步骤s2,通过预设的指纹ic对指纹sensor采集的数据进行识别,判断指纹sensor是否采集到指纹或者覆盖物,若是,则执行步骤s3,若否,则执行步骤s4;步骤s3,暂停调整指纹参数;步骤s4,调整指纹参数:步骤s4.0,根据噪声直方图确定噪声的下限值a和上限值b,并使index_max_all处于[a,b]区间,若index_max_all>b,则降低dacp值,若index_max_all<a则升高dacp值,每次调整dacp的值只改变1,调整过程中,噪声直方图随之左平移或右平移;步骤s4.1,将黑点数black_num小于12且大于5时的dacp认定为最佳值,或者调整dacp方向超过5次时的dacp认定为最佳值。
优选地,所述步骤s1.1中,计算得出index_min、index_left_all和index_right_all之后,对index_min、index_left_all和index_right_all作非极大值抑制。
优选地,所述步骤s1.1中,如果全局直方图和局部直方图中相隔大于0的值对应的像素点值相差>5,则作抑制处理保留靠近中间的像素点。
优选地,所述步骤s1.1中,抑制处理过程包括:对index_min和index_left_all去除左边所有的点,包括其对应的black_num,而index_right_all则去除右边所有的点。
优选地,所述步骤s2中,识别指纹按压或覆盖物的过程包括:步骤s20,当均绝对差>阈值55000时认定为有指纹按压或有覆盖物;步骤s21,每次调整图像明暗程度dacp的值是正负1,且dacp值变化1对应灰度均值的变化为10左右范围,当灰度均值的变化>20则表示有覆盖物;步骤s22,如果(index_max_all-index_left_all)-(index_right_all-index_max_all)<25,则认定为是有覆盖物。
优选地,实现该方法的系统架构包括:进程一:指纹服务守护进程btlfpserver,开机自启动,用于创建开机自适应指纹初始化参数线程thbootadjustdacpfunc,自动调整dacp参数;进程二:解析xml配置获取阈值、参数及开关;进程三:开机自适应指纹初始化参数dacp,调整成功后会将调整值写入文件中,下次调整之前会从文件中读取该调整值并作为dacp默认值,若该文件不存在,则以代码写死初始值作为默认值。
优选地,解析xml配置获取的阈值、参数及开关包括:调整过程使用的参数,包括调整超时时间bootautodacptimeoutcore,一级dacp正负方向最大翻转次数bootautodacpmaxturntime;调整过程使用的控制阈值,包括平均灰度最大变化值bootautodacpmaxpermean,一级均绝对差最大值bootautodacpmaxmeandiff;开机自适应指纹初始化参数开关bootautodacpkeyswitch。
本发明公开的基于android系统的开机自适应初始化指纹参数方法中,其基于android系统实现,系统每次开机都需要重新作调整dacp参数,调整过程中不能按压指纹或有其它覆盖物,否则不调整,待指纹或覆盖物离开指纹设备后接着调整,若60s内未调整ok则超时调整失败,使用默认值。相比现有技术而言,本发明可以解决因为ic或外界条件的差异出现一致性问题,而且调整速度较快,调整后的值会写入文件,下次调整时间会大大缩短,一般10s内可完成调整,实际应用中,本发明在每次开机都会调整,避免因某次调整有误或失败造成指纹失效问题,并且调整的时候加入有效的覆盖物判断机器,可以有效地避免调整有误,即使调整失败还可以用上次最佳dacp值,正常使用指纹,增强鲁棒性。同时,本发明的软件适配性较强,使用xml配置开关控制是否调整,不需修改代码,并且不影响指纹正常使用。基于上述原理,使得本发明能够自适应初始化指纹参数dacp值,无需使用固定dacp值,进而提高在不同场景下的兼容性和功能性。
附图说明
图1为本发明开机自适应初始化指纹参数方法的流程图;
图2为噪声直方图;
图3为实现本发明方法的系统架构图。
具体实施方式
下面结合附图和实施例对本发明作更加详细的描述。
本发明公开了一种基于android系统的开机自适应初始化指纹参数方法,请参见图1和图2,其包括有如下步骤:
步骤s1,计算噪声图像指标:
步骤s1.0,计算图像均值及均方差,计算得出其直方图并作为全局直方图,使用去除2*2黑边的图像计算黑点black_num,计算去除黑边的图像直方图并作为局部直方图;
步骤s1.1,计算全局直方图和局部直方图各最大值的像素点值index_max和index_max_all,全局直方图和局部直方图中像素点最小值index_min和index_left_all,以及全局直方图中像素点最大值index_right_all,并根据计算结果构建噪声直方图;
步骤s2,通过预设的指纹ic对指纹sensor采集的数据进行识别,判断指纹sensor是否采集到指纹或者覆盖物,若是,则执行步骤s3,若否,则执行步骤s4;
步骤s3,暂停调整指纹参数;
步骤s4,调整指纹参数:
步骤s4.0,根据噪声直方图确定噪声的下限值a和上限值b,并使index_max_all处于[a,b]区间,若index_max_all>b,则降低dacp值,若index_max_all<a则升高dacp值,每次调整dacp的值只改变1,调整过程中,噪声直方图随之左平移或右平移;
步骤s4.1,将黑点数black_num小于12且大于5时的dacp认定为最佳值,或者调整dacp方向超过5次时的dacp认定为最佳值。
上述方法中,其基于android系统实现,系统每次开机都需要重新作调整dacp参数,调整过程中不能按压指纹或有其它覆盖物,否则不调整,待指纹或覆盖物离开指纹设备后接着调整,若60s内未调整ok则超时调整失败,使用默认值。相比现有技术而言,本发明可以解决因为ic或外界条件的差异出现一致性问题,而且调整速度较快,调整后的值会写入文件,下次调整时间会大大缩短,一般10s内可完成调整,实际应用中,本发明在每次开机都会调整,避免因某次调整有误或失败造成指纹失效问题,并且调整的时候加入有效的覆盖物判断机器,可以有效地避免调整有误,即使调整失败还可以用上次最佳dacp值,正常使用指纹,增强鲁棒性。同时,本发明的软件适配性较强,使用xml配置开关控制是否调整,不需修改代码,并且不影响指纹正常使用。基于上述原理,使得本发明能够自适应初始化指纹参数dacp值,无需使用固定dacp值,进而提高在不同场景下的兼容性和功能性。
本实施例的所述步骤s1.1中,计算得出index_min、index_left_all和index_right_all之后,对index_min、index_left_all和index_right_all作非极大值抑制。在本实施例中,所述步骤s1.1中,如果全局直方图和局部直方图中相隔大于0的值对应的像素点值相差>5,则作抑制处理保留靠近中间的像素点。
进一步地,所述步骤s1.1中,抑制处理过程包括:对index_min和index_left_all去除左边所有的点,包括其对应的black_num,而index_right_all则去除右边所有的点。
作为一种优选方式,所述步骤s2中,识别指纹按压或覆盖物的过程包括:
步骤s20,当均绝对差>阈值55000时认定为有指纹按压或有覆盖物;
步骤s21,每次调整图像明暗程度dacp的值是正负1,且dacp值变化1对应灰度均值的变化为10左右范围,当灰度均值的变化>20则表示有覆盖物;
步骤s22,如果(index_max_all-index_left_all)-(index_right_all-index_max_all)<25,则认定为是有覆盖物。
本发明在实际应用中,开机自适应指纹初始化参数作为一个线程thbootadjustdacpfunc在android系统开机指纹守护进程服务btlfpserver启动时运行,thbootadjustdacpfunc线程调整后同步参数,指纹状态机才正常运行,接收上层下发命令执行相关操作,请参见图3,本发明实现该方法的系统架构包括:
进程一:指纹服务守护进程btlfpserver,开机自启动,用于创建开机自适应指纹初始化参数线程thbootadjustdacpfunc,自动调整dacp参数;
进程二:解析xml配置获取阈值、参数及开关;
进程三:开机自适应指纹初始化参数dacp,调整成功后会将调整值写入文件中,下次调整之前会从文件中读取该调整值并作为dacp默认值,若该文件不存在,则以代码写死初始值作为默认值。
进一步地,解析xml配置获取的阈值、参数及开关包括:
调整过程使用的参数,包括调整超时时间bootautodacptimeoutcore,一级dacp正负方向最大翻转次数bootautodacpmaxturntime;
调整过程使用的控制阈值,包括平均灰度最大变化值bootautodacpmaxpermean,一级均绝对差最大值bootautodacpmaxmeandiff;
开机自适应指纹初始化参数开关bootautodacpkeyswitch。
本发明公开的基于android系统的开机自适应初始化指纹参数方法,其将上述技术原理进行整合之后,可以参照如下实施例实现:
实施例一
本实施例可使用预设的指纹ic,其具有80*64的像素点,本实施例调整过程主要涉及三个方面:计算相应的指标,识别到按压指纹或有覆盖物时暂停调整。请参见图1,具体步骤包括:
一、计算相应的噪声图像指标:
1、计算图像均值及均方差(为了计算方便,使用均绝对差代替),并计算其直方图作为全局直方图,由于芯片封装等问题,成像时有2*2黑边对某些指标计算有噪声影响,所以计算黑点black_num(非白点255)时使用去除2*2黑边的图像,并计算其直方图作为局部直方图;
2、计算两个直方图各最大值的像素点值index_max和index_max_all,两个直方图中像素点最小值index_min和index_left_all,全局直方图中像素点最大值index_right_all,但index_min,index_left_all和index_right_all需要作非极大值抑制,如果直方图相隔大于0的值对应的像素点值相差>5,则作抑制保留靠中间那边,如index_min和index_left_all去除左边所有的点,包括其对应的black_num,而index_right_all则去除右边所有的点,请参见图2;
二、识别到按压指纹或有覆盖物方法:
1、经过大量实验验证,均绝对差>阈值55000可认为是按压指纹或有覆盖物,说明图像是有方差变化有明显图像信息,当然对于安全按压或边缘按压较少是识别不出;
2、每次调整图像明暗程度dacp的值是正负1,经过大量实验dacp值变化1对应灰度均值的变化是10左右,如果有覆盖物变化则>20,故每次调整dacp后前后灰度均值的变化>20则认为有覆盖物,但如果调整前就一直有覆盖物则无法辨别;
3、根据大量实验证明如果(index_max_all-index_left_all)-(index_right_all-index_max_all)<25,则认为是有覆盖物,因为没有覆盖物的时候index_max_all-index_left_all是远比index_right_all-index_max_all大的;
三、调整的两步流程:
1、调整的第一步是使index_max_all处于[130,210]区间,因为如果在这区间噪声可量化,对于是否有覆盖物判断指标会比较好,才可以执行第5条判断是否有覆盖物,如上噪声直方图两条竖虚线就是130及210,如果>210则降低dacp值,<130则升高dacp值,每次调整dacp的值只改变1,如噪声直方图会左平移或右平移,直到满足条件;
2、调整第二步如果黑点数black_num小于12大于5则认为此时dacp是最佳值,为了提高不同指纹的兼容性,可能存在达到不到最佳值情况,所以翻转(调整dacp方向)超过5次也认为是最佳值,噪声刚好饱合右溢出,此时不存在dacp值过小空采噪声图像过黑,导致没有按压指纹sensor中心区域灰度值达到触发阈值自动来中断,或dacp值过大噪声左溢出太多,导致按压指纹sensor中心区域灰度值未达到触发阈值不来中断问题,达到目的。
关于本实施例的系统架构,请参见图3,开机自适应指纹初始化参数作为一个线程thbootadjustdacpfunc在android系统开机指纹守护进程服务btlfpserver启动时运行,thbootadjustdacpfunc线程调整后同步参数,指纹状态机才正常运行,接收上层下发命令执行相关操作,总共由三部份构成:
一、指纹服务守护进程btlfpserver开机自启动,创建开机自适应指纹初始化参数线程thbootadjustdacpfunc,自动调整dacp参数;
二、解析xml配置获取阈值,参数及开关,主要有三部分:
1、调整过程使用的参数,如调整超时时间bootautodacptimeoutcore,dacp正负方向最大翻转次数bootautodacpmaxturntime等;
2、调整过程使用的控制阈值,如平均灰度最大变化值bootautodacpmaxpermean,均绝对差最大值bootautodacpmaxmeandiff等;
3、开机自适应指纹初始化参数开关bootautodacpkeyswitch;
三、开机自适应指纹初始化参数dacp调整成功后会调整值写入文件中,下次调整之前会从文件中读取该值作为dacp默认值,若该文件不存在则以代码写死初始值作为默认值。
综上所述,本发明可使得所有指纹sensor都有自适应的初始化参数dacp值,不再使用固定dacp值,解决了不同场景下兼容性带来的功能性问题,较好地满足了应用需求。
以上所述只是本发明较佳的实施例,并不用于限制本发明,凡在本发明的技术范围内所做的修改、等同替换或者改进等,均应包含在本发明所保护的范围内。