公安出入境管理用指纹采集设备接口规范
附件1:公安出入境管理用指纹采集设备接口规范
1 范围
本规范规定了出入境管理中建档和核验用指纹采集设备指纹图像采集和指纹比对接口规范。
本规范适用于出入境管理中建档和核验用的指纹采集设备。
2 引用标准
下列标准所包含的条文,通过在本规范中引用而构成为本规范的条文。在规范出版时,所示版本均为有效。
GB 2312 信息交换用汉字编码字符集 基本集
GB 18030 信息技术 中文编码字符集
GA/T 625-2010 活体指纹图像采集技术规范
GA/T 626.1-2010 活体指纹图像应用程序接口规范 第1部分: 采集设备
GA/T 774.1-2008 指纹特征规范 第1部分 指纹方向
GA 776-2008 指纹自动识别系统产品编码规则
3 术语
纠偏 image deviation rectify
通过旋转、移动等图像处理方式,使得采集到的指纹图像有效区域位于图像几何中心,并且指纹方向保持垂直向上。
4 图像采集接口
4.1初始化采集设备
函数原型: int __stdcall LIVESCAN_Init()
说明: 遵循GA/T 626.1—2010中3.1规定。
4.2释放采集设备
函数原型: int __stdcall LIVESCAN_Close()
说明: 遵循GA/T 626.1—2010中3.2规定。
4.3获得采集设备通道数量
函数原型: int __stdcall LIVESCAN_ GetChannelCount()
说明: 遵循GA/T 626.1—2010中3.3规定。
4.4设置采集设备当前的亮度
函数原型: int __stdcall LIVESCAN_SetBright(int nChannel, int nBright)
说明: 遵循GA/T 626.1—2010中3.4规定。
4.5设置采集设备当前的对比度
函数原型: int __stdcall LIVESCAN_SetContrast(int nChannel, int
nContrast)
说明: 遵循GA/T 626.1—2010中3.5规定。
4.6获得采集设备当前的亮度
函数原型: int __stdcall LIVESCAN_GetBright(int nChannel, int
*pnBright)
说明: 遵循GA/T 626.1—2010中3.6规定。
4.7获得采集设备当前的对比度
函数原型: int __stdcall LIVESCAN_GetContrast(int nChannel, int
*pnContrast)
说明: 遵循GA/T 626.1—2010中3.7规定。
4.8调用采集设备的属性设置对话框
函数原型: int __stdcall LIVESCAN_Setup()
说明: 遵循GA/T 626.1—2010中3.11规定。
4.9采集设备是否支持设置对话框
函数原型: int __stdcall LIVESCAN_ IsSupportSetup();
说明: 遵循GA/T 626.1—2010中3.16规定。
4.10实时视频预览
函数原型: int __stdcall LIVESCAN_ SetVideoWindow (HWND hWnd)
参数: HWND hWnd句柄类型,为用于显示实时视频的控件句柄。
返回值: 调用成功,返回1。
<0 返回错误代码。
说明: 该函数调用后,须自动、持续在参数所确定控件中显 示指纹设备采集的指纹实时视频图像,实时视频图像须充满整个窗口。在调用4.2释放采集设备时停止显示并释放所占用的全部资源。
4.11准备采集一帧图像
函数原型: int __stdcall LIVESCAN_BeginCaptutre(int nChannel);
说明: 遵循GA/T 626.1—2010中3.12规定。
4.12采集一帧图像
函数原型: int __stdcall LIVESCAN_GetFPRawData(int nChannel, unsigned char *pRawData);
说明: 遵循GA/T 626.1—2010中3.13规定。内存块大小为单指指纹采集图像大小。
4.13采集一幅BMP格式图像数据
函数原型: int __stdcall LIVESCAN_GetFPBmpData(int nChannel, unsigned char *pBmpData);
参数: int nChannel 通道号。输入参数。
unsigned char* pBmpData 指向存放采集BMP格式的指纹图像数据的内存块,调用者分配,大小应该为: 400字节×400字节+1078字节。输出参数。
返回值: 调用成功,返回大于0的整数。
<0 返回错误代码。
说明: 返回的图像数据为包括文件头在内的8位灰度BMP格式的图像,采集的图像宽和高为400像素×400像素,图像无压缩、无缩放,数据存储顺序为从左到右,从下到上。
如果采集接口不具备纠偏功能,采集成功返回1。
如果采集接口具备纠偏功能,指纹图像采集成功后纠偏失败,返回2,此时输出的图像数据为没有纠偏前的数据。
如果采集接口具备纠偏功能,指纹图像采集成功并且纠偏成功,返回3,输出的图像数据为纠偏后的数据。
4.14结束采集一帧图像
函数原型: int __stdcall LIVESCAN_EndCapture(int nChannel)
说明: 遵循GA/T 626.1—2010中3.14规定。
4.15取得接口的版本
函数原型: int __stdcall LIVESCAN_ GetVersion();
说明: 遵循GA/T 626.1—2010中3.20规定。
4.16获得接口的说明
函数原型: int __stdcall LIVESCAN_GetDesc(char pszDesc[1024]);
说明: 遵循GA/T 626.1—2010中3.21规定。
4.17取得采集接口错误信息
函数原型: int __stdcall LIVESCAN_GetErrorInfo(int nErrorNo,
char pszErrorInfo[256])
说明: 遵循GA/T 626.1—2010中3.22规定。
4.18图像采集接口错误代码
图像采集接口错误代码见表1。
其中错误代码从-1~-100为系统保留错误代码,用户可以自行定义的错误代码范围为-101~-200。 其他错误号码保留。
表1 图像采集接口错误代码
错误代码 |
说 明 |
-1 |
参数错误。给定函数的参数有错误。 |
-2 |
内存分配失败。没有分配到足够的内存。 |
-3 |
功能未实现。调用函数的功能没有实现。 |
-4 |
设备不存在。初始化的时候,检测到设备不存在。 |
-5 |
设备未初始化。 |
-6 |
非法的错误号。 |
-7 |
没有授权。 |
-8~-100 |
系统保留。 |
-101~-200 |
用户自定义。 |
5 指纹比对接口
5.1获得比对算法版本
函数原型: long __stdcall LIVESCAN_Get_Version(char
*pcVersionInfo)
参数: char *pcVersionInfo 厂家及算法版本标识,其长度由外部调用者分配,长度为6字节。输出参数。
返回值: 调用成功返回1。
<0 返回错误代码。
5.2提取特征模板
函数原型: long __stdcall LIVESCAN__FeatureExtractMem(
unsigned char * pcImageData, long lDataLen,
unsigned char *pcTemplateData)
参数: unsigned char * pcImageData 给定待提取特征的(包括文件头在内的BMP格式的)指纹图像数据。输入参数。
long lDataLen 待提取特征的指纹图像数据长度,上限为640×640+1078字节。输入参数。
unsigned char * pcTemplateData 指向存放指纹特征模板的内存数据块,其大小为1024字节,由调用者分配。输出参数。
返回值: 若特征模板提取成功(同时应生成特征模板数据),该返回值代表算法对输入图像的品质评价系数,取值为1~100 的整数,该系数值愈小表示图像质量愈差,该系数值愈大则表示图像质量愈好;若输入像图像的质量不满足算法提取特征的返回0。
说明: 从指纹图像数据中抽取特征模板,若发生其他不可预测错误,如给定的数据格式不可识别等情况,该函数返回-1,识别算法负责捕获异常。
5.3特征模板比对
函数原型: long __stdcall LIVESCAN__FeatureMatchMem (unsigned char * pcTemplateDataA, unsigned char *pcTemplateDataB,
float *pfSim)
参数: unsigned char * pcTemplateDataA 给定参与比对的第1个特征模板数据,其长度为1024字节。输入参数。
unsigned char * pcTemplateDataB 给定参与比对的第2个特征模板数据,其长度为1024字节。输入参数。
float *pfSim 参与比对的两个特征模板数据匹配的相似度,大小为0.00~4.00,按第5位4舍5入方式取小数点后4位。输出参数。
返回值: 若成功完成比对返回1,如果发生其他不可预测错误,如给定的特征模板数据格式不可识别等情况,该函数返回-1。两个文件比对的相似度通过pfSim 参数返回,相似度为0.00~4.00 的浮点数,相似度越大,表示两个模板匹配程度越高。
说明: 比较两个输入的特征模板文件,返回相似度。
6 示例
6.1指纹采集示例
正常的情况下,采用下面的流程来使用采集设备(本流程不包括错误判定的步骤)。
unsigned char pData[400*400+1078]; //指纹图像数据
unsigned char pTplDataA[1024]; //特征模板A
int nChannelCount;
int nRtn;
FILE *fp;
LIVESCAN_Init();
nChannelCount = LIVESCAN_GetChannelCount();
if ( nChannelCount>1 ) {
//让用户选择使用那个通道;
}
LIVESCAN_ SetVideoWindow(hWnd) //实时视频预览
// 假设使用通道0采集指纹
for(;;)
{
LIVESCAN_BeginCapture(0);
//采集一幅尺寸为400*400的bmp格式的指纹图像数据
LIVESCAN_GetFPBmpData(0, pData);
//特征提取
LIVESCAN__FeatureExtractMem(pData, 400*400+1078, pTplDataA);
//存储提取到的指纹特征模板
fp = fopen(“c:\\fingerprint.tpl”,”wb”);
fwrite(pTplDataA,1,1024,fp);
fclose(fp);
LIVESCAN_EndCapture(0) ;
}
LIVESCAN_Close(); // 关闭采集设备。
采集的流程图见图1。
(7)指纹模板编码及封装
通过指纹仪获得的指纹模板数据(2枚模板的二进制数据流)按《电子出入境证件信息结构标准》进行数据格式封装。对经过封装的指纹模板数据按A LOGICAL DATA STRUCTURE FOR CONTACTLESS INTEGRATED CIRCUIT DATA STORAGE TECHNOLOGE( Section III) of Specification for Electronically Enabled Passports with Biometric Identification Capability (volume 2) of 《Machine Readable Travel Documents》(ICAO DOC9303) 进行TLV封装。对指纹模板数据生成以TPL结尾的文件。
(8)指纹采集过程实时监控
所有申请人指纹采集过程通过外接摄像头全程监控。支持所有能与电脑连接的WDM(win32 Driver model)模式的摄像头。
电脑启动时可自动连接摄像头,摄像头异常断开连接时应自动检测发现,并可恢复使用状态。
对申请人指纹采集过程监控时,所获得摄像头视频数据,须在主程序相应位置实时显示,支持实时预览。
3、采集指纹卡按捺指纹
a) 支持所有TWAIN接口普通扫描仪对指纹卡采集。按捺后的指纹卡(十指指纹卡)通过扫描仪扫描(600DPI)存为BMP图像。也应支持从指定的目录读取已扫描的指纹卡图像(BMP格式)。
b) 采集程序读取指纹卡扫描图片,对有按捺指纹的位置,自动提取指纹图片,并根据图像在指纹卡所处的位置自动赋予相应的指位。
c) 如指纹不能建模,应可由操作人员对提取图像位置进行微调或对图像进行旋转,调整后重新尝试建模。
d) 按照指纹采集顺序,并最终确认2枚指头作为存储的指纹。
4、申请人手写签名采集
a) 支持所有TWAIN接口普通扫描仪对手写签名采集。也应支持从指定的目录读取已扫描的申请人手写签名图像(BMP格式)。
b) 申请人手写签名签在出入境证件申请表上的特定区域,通过扫描仪扫描(400-600DPI)申请表指定区域,获得申请人的手写签名BMP格式图像。
c) 对手写签名BMP图像文件进行自动裁剪,仅保留签名区域的最小范围,并去除签名区域的噪声点。
d) 对保留的签名区域图像进行二值化处理,二值化后仍要尽可能保留原手写签名特征。
e) 二值化处理完成后采用DEFLATE压缩算法压缩,要求实现方式为调用zlib.lib(V1.2.5版)的compress函数进行压缩。最终存储为本地文件,文件后缀名为.ZIP。
5、采集制证人像(可选)
a) 可通过控制数码照相机拍摄制证相片或扫描仪扫描申请人的制证相片(扫描分辨率为300DPI以上),或通过指定目录读取已采集的制证相片,相片格式为JPG(相片的背景为白色、浅灰色、浅蓝色,其中:浅灰色的RGB参考值不小于220、220、220,浅蓝色的HSB参考值210、21%、79%)。
b) 要求支持所有TWAIN接口的普通扫描仪。当扫描仪异常断开连接时应自动检测发现,并可恢复使用状态。
c) 程序要对采集的制证人像进行归一化处理,处理要求如下:图像品质系数不低于 85,相片的像素须354*472,图像文件大小范围为20K字节~80K字节之间。
d) 归一化之后的相片应调用“相片质量检测程序”进行质量检查(相片质量检测程序的调用接口附后),不合格相片应提示或重新拍照、扫描。
6、采集现场人像(可选)
a) 支持连接所有WDM(win32 Driver model)模式的摄像头。电脑启动时可自动连接摄像头,摄像头异常断开连接时应自动检测发现和恢复使用状态,在主屏显示实时的动态人像。
b) 摄像头拍摄操作应可通过鼠标或快捷热键操作,可控制摄像头焦距,可根据受理点光线情况进行光补偿。
c) 采集的现场人像规格要求:文件图像格式为JPEG,人像二眼瞳孔距离大于 30像素,图像文件大小范围为5K字节~10K字节之间。
7、生成文件
(1)文件命名规则
系统采集的数据需在指定目录生成文件,以下8类文件均必须生成,如现场人像、制证人像等未采集也应对应生成空文件,生成文件的命名规则如下:
条形码(15位)+“-”+指纹图像采集结果(2位)+指纹模板采集结果(2位)+“-”+指位码1(1位)+ 指位码2(1位)+“-”+厂家算法版本(6位)+“-”+指纹仪厂商ID号(2位)+“-”+图像质量分值(3位) +“-”+比对算法质量分值(3位)+“-”+芯片写入标记(2位,其值取为“01”) +“.” +文件后缀名。
例如数据文件名:
310010050100001-1111-72-FRI001-01-080-070-01.WSQ
310010050100001-1111-72-FRI001-01-080-070-01.JPG
310010050100001-1111-72-FRI001-01-080-070-01.TPL
310010050100001-1111-72-FRI001-01-080-070-01.JPZ
310010050100001-1111-72-FRI001-01-080-070-01.ZIP
310010050100001-1111-72-FRI001-01-080-070-01.ERR
310010050100001-1111-72-FRI001-01-080-070-01.MD5
索引文件名
310010050100001-1111-72-FRI001-01-080-070.INX
命名规则中各部分意义如下所述:
条形码:申请人受理编号,长度为15位;
指纹图像采集结果:第1位表示第1枚指纹图像采集结果, 第2位表示第2枚指纹图像采集结果。每一位取值为0或1,0表示无指纹图像,1表示有指纹图像。
指纹模板采集结果:第1位表示第1枚指纹模板采集结果, 第2位表示第2枚指经纹模板采集结果。每一位取值为0或1,0表示无指纹模板,1表示有指纹模板。
指位码1:采集到的第一枚指纹图像指位码,长度为1位。其值为0、1、2、3、4、5、6、7、8、9、A。如果指纹图像采集结果第1位值为0,则指位码1的值为0。
指位码2:采集到的第二枚指纹图像指位码,长度为1位。其值为0、1、2、3、4、5、6、7、8、9、A。如果指纹图像采集结果第2位值为0,则指位码2的值为0。
厂家算法版本:前三个字节为厂商标志,后三个字节为指纹算法代码,指纹采集仪动态库按照《出入境管理电子旅行证件指纹采集设备接口规定》须以“厂家算法版本”命名,采集系统从指纹采集仪动态库的名字获得“厂家算法版本”内容。
指纹仪厂商ID:指纹采集设备厂商ID编号,长度为2位。指纹采集仪按《出入境管理电子旅行证件指纹采集设备接口规定》返回指纹仪厂商ID,代码表如下:
指纹厂商 |
厂商代码 |
长春鸿达光电子与生物统计识别技术有限公司 |
04 |
浙江师大计海新技术有限公司 |
10 |
北京北大高科指纹技术有限公司 |
13 |
北京海鑫科金高科技股份有限公司 |
17 |
深圳华视电子读写设备有限公司 |
17 |
北京东方金指科技有限公司 |
19 |
北京欣网科科技有限公司 |
22 |
图像质量分值:程序按“采集指纹图像及质量检测”要求对第一枚指纹图像的质量打分,图像质量分用3位阿拉伯数字表示,其范围在0—100之间,值越大表示图像质量越好,如果没有指纹图像,其值为0。如果图像质量分小于100,采取前补“0”的方法补足3位。
比对算法分值:指纹采集仪按《出入境管理电子旅行证件指纹采集设备接口规定》应返回对指纹图像的质量判断分值,比对算法分用3位阿拉伯数字表示,其范围在0—100之间,值越大表示图像质量越好,如果第一枚指纹图像不存在或比对算法无法对第一枚指纹图像提取特征模板,其值为0。如果比对算法分小于100,采取前补“0”的方法补足3位。
芯片写入标志:“01”表示采集的指纹模板数据目前还无需写入芯片。
文件后缀名: WSQ:加密后的指纹图像信息文件;TPL:指纹模板信息文件;ERR:异常信息文件;JPG:现场人脸图像文件;MD5:现场人脸图像、指纹模板、异常信息文件MD5加密文件;INX:是数据文件的索引文件;JPZ:制证人像图像文件;ZIP:经裁减处理的二值化手写签名图像压缩文件。
异常文件:文件内容为异常结果文字描述。
(2)生成各类文件要求
a) ERR文件。当无法采集到2枚模板数据时属于采集异常,必须生成ERR文件,文件中记载的应是“采集异常信息”中的中文描述内容。若不存在采集异常则生成空的ERR文件。
b) WSQ文件。对采集的指纹图像经“指纹图像编码及封装”后,并使用指纹受理编码作为密钥进行一次DES加密。如果两幅指纹图像都不存在,则生成内容为空的DES加密数据。
c) MD5文件。对指纹WSQ文件和指纹模板数据TPL文件进行MD5摘要,生成MD5文件,指纹WSQ文件指进行“指纹图像编码及封装”后未作DES加密前的文件。
对指纹图像和模板做MD5摘要,MD5摘要为32字节。MD5摘要顺序为第一幅指纹图像WSQ数据(10k) + 第二幅指纹图像WSQ数据(10k) + 第一幅指纹图像对应的模板(1K)+ 第二幅指纹图像对应的模板(1K)按照上述顺序做摘要。若对应的项不存在(此时对应的数据长度为0),下一项递补完成MD5摘要。如果无图像和模板,生成内容为空的MD5数据。
8、用户管理
生物特征采集处理可执行程序应具备一定的用户管理能力,进入系统应进行用户登录,用户管理须具备“新建用户、修改用户、删除用户、用户授权”等信息系统用户管理功能。用户类别应分为:系统管理员、指纹采集员、管理民警。用户信息包括:警号、名字、用户密码、用户类别。
9、系统自动更新
系统应具备自动更新功能。应在公安网上建立更新服务器,发布新的版本或程序更新时,在服务器上发布,各终端在配置好服务器地址后,自动检测到新程序后实现终端程序自动更新。
(二) 指纹核验应用接口
申请人在进行生物特征信息采集后,可进行证件受理,证件受理时需对受理的指纹信息进行核验,需开发指纹核验应用接口供出入境管理信息系统调用,接口应封装为带界面的DLL或OCX程序。
1、指纹核验接口函数设计要求
接口函数名称为EpassportFingerCheckVerify,函数原型、参数、返回结果如下所示:
int __stdcall EpassportFingerCheckVerify (
char czCurFingerImgResult[3],
char czCurFingerTplResult[3],
char czCurFingerPos1[2],
char czCurFingerPos2[2],
unsigned char czCurFingerImgData[20605],
int nCurFingerImgDataLen,
unsigned char czKeySeed[32],
int nKeySeedLen,
unsigned char czCurFingerTplData[2155],
int nCurFingerTplDataLen,
unsigned char czMd5[32],
int nType,
char czExceptInfo[128],
int nMaxVerifyCount,
float fMatchGate ,
float *fSim1,
float *fSim2);
【输入参数】
char czCurFingerImgResult[3] 指纹图像采集结果
char czCurFingerTplResult[3] 指纹模板采集结果
char czCurFingerPos1[2] 第1枚指纹图像指位码
char czCurFingerPos2[2] 第2枚指纹图像指位码
unsigned char czCurFingerImgData[20605] 指纹图像信息数据
int nCurFingerImgDataLen 指纹图像信息数据长度
unsigned char czCurKeySeed[32] 指纹图像密钥数据
int nCurKeySeedLen 指纹图像密钥数据长度
unsigned char czCurFingerTplData[2155] 指纹模板信息数据
int nCurFingerTplDataLen 指纹模板信息数据长度
unsigned char czMd5[32] 指纹图像和指纹模板的MD5摘要信息
int nType 核验时使用的数据类型,0-模板;1-图像
char czExceptInfo[128] 指纹异常信息,如果无异常信息值为NULL
int nMaxVerifyCount 同一手指核验不通过时最多核验次数(整数)
float fMatchGate 比对门限,指纹仪算法推荐值。
【输出参数】
float *fSim1 第1枚比对相似度值,如果输入的模板不存在,返回-1.0;如果核验时无法提取模板,则返回-2.0;系统强制退出,则返回-3.0。
float *fSim2 第2枚比对相似度值,如果输入的模板不存在,返回-1.0;如果核验时无法提取模板,则返回-2.0;系统强制退出,则返回-3.0。
【返回值】
指纹核验接口函数返回值表
返回值 |
描述意义 |
1 |
核验成功 (采集时无图像无模板,核验时手指信息属实) |
2 |
核验成功 (采集时1幅图像无模板,核验时对应手指无法提取指纹模板,手指信息属实) |
3 |
核验成功 (采集时1幅图像1个模板,核验时对应手指能够提取模板,并可正确匹配,并且手指信息属实) |
4 |
核验成功 (采集时2幅图像无模板,核验时对应手指也无法提取模板) |
5 |
核验成功 (采集时2幅图像1个模板,核验时对应的第1枚手指能够提取模板,并可正确匹配,对应的第2枚手指无法提取模板) |
6 |
核验成功 (采集时2幅图像2个模板,核验时对应手指都可以提取模板,并且可以分别正确匹配) |
11 |
核验失败,需要重新采集。(采集时第1枚指纹无模板,但核验时第1枚指纹能够生成模板) |
12 |
核验失败,需要重新采集。(采集时第2枚指纹无模板,但核验时第2枚指纹能够生成模板) |
21 |
核验失败 (核验时手指信息与采集时不一致) |
22 |
核验失败 (采集时第1枚指纹有图像有模板,但核验时对应手指不能生成模板,或者生成的模板不能匹配) |
23 |
核验失败 (采集时第2枚指纹有图像有模板,但核验时对应手指不能生成模板,或者生成的模板不能匹配) |
31 |
未完成核验,系统强制退出 |
101 |
输入参数中,指纹图像采集结果不正确。正确的参数应为“00”,“10”或“11” |
102 |
输入参数中,指纹模板采集结果不正确。正确的参数应为“00”,“10”或“11” |
103 |
输入参数中,指纹图像采集结果与模板采集结果不匹配。正确的匹配关系是:图像采集结果参数为“00”时,模板采集结果参数应为“00”;图像采集结果参数为“10”时,模板采集结果参数可能为“00”或“10”;图像采集结果参数为“11”时,模板采集结果参数可能为“00”,“10”或“11”。 |
104 |
输入参数中,指位码不正确。指位码合法的范围是“0~9”,或“A” |
105 |
输入参数中,指纹模板长度不正确。可能的长度为:0,1119,或2155。 |
106 |
无法正确解析输入参数中的指纹模板数据 |
107 |
输入参数中指纹模板数目与模板数据解析后获得的指纹模板数目不符 |
108 |
输入参数中的指位码与模板数据解析后获得的指位码不符 |
109 |
输入参数中,指纹图像数据长度不正确。可能的长度为:0,10351,或20605。 |
110 |
无法正确解析输入参数中的指纹图像数据 |
111 |
输入参数中指纹图像数目与图像数据解析后获得的图像数目不符 |
112 |
输入参数中的指位码与图像数据解析后获得的指位码不符 |
113 |
MD5摘要校验不成功 |
114 |
输入参数中,比对相似度的门限值不正确。正确值应介于0与1之间 |
115 |
输入参数中,最大核验次数不正确。正确的值应为大于0的整数。 |
200 |
指纹识别算法未能加载 |
201 |
指纹采集设备未找到 |
202 |
指纹采集设备初始化失败 |
203 |
系统运行过程中指纹采集设备未找到 |
204 |
指纹采集设备其他错误 |
2、指纹核验过程
(1)支持连接通过《出入境管理电子旅行证件指纹采集设备接口规定》认证测试的警用指纹采集仪或民用指纹采集仪,指纹采集仪异常断开连接时应自动检测发现,并可恢复使用状态。并显示实时的动态指纹图像。
(2)按照《出入境管理电子旅行证件指纹采集设备接口规定》的接口要求,通过“提取特征模板”接口(long __stdcall LIVESCAN_FeatureExtractMem (unsigned char *pcImageData, long lDataLen,unsigned char *pcTemplateData))和“特征模板比对”接口(long __stdcall LIVESCAN_FeatureMatchMem)进行指纹特征比对。
(3)指纹核验程序根据出入境系统传入的指位信息,应有语音提示申请人按捺相应手指,通过指纹采集仪获得指纹图像,并通过指纹仪所带算法生成指纹模板。
(4)根据出入境系统传入的生物特征采集处理系统采集的指纹图像,需根据密钥进行DES解密,再与指纹模板信息一并进行MD5信息的校验,校验成功方可开始核验。
(5)解密之后的指纹图像与核验采集仪获得的图像进行比对。如预采集的2枚指纹均有模板,则需要2枚指纹分别比对值均高于阀值,为核对一致;如预采集仅有一枚指纹有模板,则仅需该枚指纹核对一致;如预采集2枚指纹均无模板,则仅需核对指纹采集情况是否与预采集时是否一致。核对一致,认为指纹核对通过。
3、历史指纹核验
在指纹核验通过后,如申请人之前申领过电子证件并采集过指纹信息,可调用历史指纹核验接口。历史指纹核试验接口封装于“指纹核验应用接口”程序包内。
(1)历史指纹核验接口设计要求
接口函数名为:EpassportMatchLatestFinger
接口函数名称为EpassportMatchLatestFinger,原型、参数、返回结果如下:
int __stdcall EpassportMatchLatestFinger (
unsigned char czLatestFingerImgData[20605],
int nLatestFingerImgDataLen,
unsigned char czLatestKeySeed[32],
int nLatestKeySeedLen,
int nMatchLatestFingerPos,
float fMatchGate,
float *fSim)
【输入参数】
unsigned char czLatestFingerImgData[20605] 历史指纹图像信息数据
int nLatestFingerImgDataLen 历史图像信息数据长度
unsigned char czLatestKeySeed[32] 历史指纹密钥数据
int nLatestKeySeedLen 历史指纹密钥长度
int nMatchLatestFingerPos 需要比对的指位
float fMatchGate 历史指纹比对门限
【输出参数】
float *fSim 历史指纹比对相似度值。若无法正常比对,则返回-1.0.
【返回值】
历史指纹比对函数返回值表
返回值 |
描述意义 |
1 |
历史指纹比对通过 (历史指纹与当次指纹相似度值不小于上位系统设定的门限) |
2 |
历史指纹比对不通过 (历史指纹与当次指纹相似度值小于上位系统设定的门限) |
3 |
历史图像长度不正确。可能的长度为:0,10351,或20605;其他值不正确。 |
4 |
历史图像无法正确解析 |
5 |
输入参数中无指定指位的历史图像 |
6 |
指定指位的历史图像无法生成模板 |
7 |
当次采集的指纹中,无指定指位的指纹图像 |
8 |
当次采集的指纹中,指定指位的指纹图像无法生成模板 |
9 |
调用函数EpassportFingerCheckVerify前,调用了历史指纹比对函数 |
10 |
当次核验未通过时,调用了该函数 |
(2)历史指纹核验过程
对出入境系统传入的历史指纹图像,需根据密钥进行DES解密,并判断历史指纹信息与本次申请存储的指纹图像是否有相同指位的图像信息,且同指位的图像可生成模板,以上条件均满足,可进行历史指纹核验。本次申请存储的指纹图像与历史指纹图像通过指纹仪自带算法进行比对。如有2枚预采集图像均符合上述条件,只需对第一枚进行历史指纹核验即可。预采集的指纹图像与历史指纹图像比对值高于阀值,为核对一致;认为历史指纹核验通过。
历史指纹核验在后台进行,不得增加申请人按捺指纹的次数。
(三)手写签名图像处理应用接口
1、手写签名图像处理过程
如手写签名图像采集功能非通过生物特征采集处理系统完成,需开发手写签名图像处理应用接口,用于出入境管理信息系统调用处理该图像。
手写签名图像处理应用接口功能为以内存方式传入已采集的手写签名BMP图像,对手写签名BMP图像文件进行自动裁剪,仅保留签名区域的最小范围,并去除签名区域的噪声点。再进行二值化处理,二值化后仍要尽可能保留原手写签名特征。并采用DEFLATE压缩算法,实现方式为调用zlib.lib(1.2.5版)的compress函数进行压缩。返回压缩后的内存块。
2、手写签名图像处理接口设计要求
接口函数命名为:SegmentSignature_Mem。
接口函数SegmentSignature_Mem,原型、参数、返回结果如下:
int __stdcall SegmentSignature_Mem(unsigned char* srcbuf,
long srcbufsize,
unsigned char* dstbuf,
long dstbufsize
long* outputbufsize);
【输入参数】
unsigned char* srcbuf 原始的含有签名的图像数据,BMP格式(完整文件内容,需包含文件头)
long srcbufsize 原始图像数据的长度
unsigned char* dstbuf 保存签名图像的缓存。需调用者分配和释放缓存,分配的缓存空间应足够大(建议不小于输入缓存)。
Long dstbufsize 签名图像缓存的大小
long* dstbufsize 输出签名图像的长度
【返回值】
返回值 |
描述意义 |
1 |
有签名,且已成功提取 |
0 |
无签名 |
-1 |
输入图像格式不正确 |
-2 |
输出缓存空间分配不足 |
-3 |
输入图像的水平或垂直分辨率低于400DPI |
-4 |
图像中签名部分高度小于0.5cm或者宽度小于1cm |
-5 |
输入参数原始签名图像数据指针,或者输出处理后签名图像数据指针为空 |
-6 |
内存分配失败 |
-7 |
压缩失败 |
(四)指纹一对一比对应用接口
1、指纹一对一比对过程
指纹一对一比对应用接口,用于出入境管理信息系统采集指纹和受理岗位合一,不需要进行指纹核验,只需要进行历史指纹比对时调用此接口。
根据出入境系统传入的历史指纹图像,需根据密钥进行DES解密,并判断历史指纹信息与预采集的指纹图像是否有相同指位的图像信息,且同指位的预采集图像须可以生成模板,以上条件均满足,可以开始进行历史指纹核验。预采集指纹图像与历史指纹图像通过指纹仪自带算法进行比对。如有2枚预采集图像均符合上述条件,只需对第一枚进行历史指纹核验即可。预采集的指纹图像与历史指纹图像比对值高于阀值,为核对一致;认为历史指纹核验通过。
历史指纹核验在后台进行,不得增加申请人按捺指纹的次数。
2、指纹一对一比对接口设计
接口函数命名为:MatchLatestFinger。
接口函数MatchLatestFinger,原型、参数、返回结果如下:
int __stdcall MatchLatestFinger(
unsigned char czLatestFingerImgData[20605],
int nLatestFingerImgDataLen,
unsigned char cLatestzKeySeed[32],
int nLatestKeySeedLen,
unsigned char czCurFingerTplData[2155],
int nCurFingerTplDataLen,
int nMatchFingerPos,
float fMatchGate
float* fSim)
【输入参数】
unsigned char czLatestFingerImgData [20605] 历史指纹图像信息数据
int nLatestFingerImgDataLen 历史指纹图像信息数据长度
unsigned char cLatestzKeySeed [32] 历史指纹图像密钥数据
int nLatestKeySeedLen 历史指纹图像密钥数据长度
unsigned char czCurFingerTplData [2155] 当前采集的指纹模板信息数据
int nCurFingerTplDataLen 当前指纹模板信息数据长度
int nMatchFingerPos 需要比对的指位数据 (1~10有效),1~9对应采集时的指位”1”~”9”,10对应指位”A”
float fMatchGate 比对分数门限
【输出参数】
float *fSim, 比对相似度值,如果无法比对则返回-1.0
【返回值】
返回值 |
描述意义 |
1 |
历史指纹比对通过 (历史指纹与当次指纹相似度值不小于上位系统设定的门限) |
2 |
历史指纹比对不通过 (历史指纹与当次指纹相似度值小于上位系统设定的门限) |
3 |
历史图像长度不正确。可能的长度为:0,10351,或20605;其他值不正确。 |
4 |
历史图像无法正确解析 |
5 |
输入参数中无指定指位的历史图像 |
6 |
指定指位的历史图像无法生成模板 |
7 |
当次采集的指纹模板数据长度不正确。可能的长度为0,1119,2155 |
8 |
当次采集的指纹模板无法正确解析 |
9 |
当次采集的指纹中,无指定指位的指纹模板 |
四、相关附件
(一)出入境管理数字人像质量检测软件接口说明
(二)出入境证件指纹捺印表式样