未来智讯 > 人脸语音识别论文 > 教育招生考试中指纹识别身份认证系统的设计和实现

教育招生考试中指纹识别身份认证系统的设计和实现

发布时间:2018-11-22 01:06:05 文章来源:未来智讯    
    教育招生考试中指纹识别身份认证系统的设计和实现作者:未知   摘要:针对现今各类教育考试中替考等作弊问题,提出将指纹识别技能应用到考试管理上,利用考生的指纹特征值来判别其真实身份,设计出基于指纹采集与校验的考试管理系统体系结构,并解决在研讨的过程中所遇到的关键问题,最终对整个系统进行了实验研讨,验证了该系统的可行性。
  关键词:指纹识别技能;考试管理
  中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2009)15-4004-06
  
  Fingerprint Identity Authentication System in Education Enroll Examination Design and Implementation
  XU Fei
  (Anhui Education Examinations Authority, Hefei 230022, China)
  Abstract: For all types of education today, such as cheating in examinations proxy issues fingerprint recognition technology will be applied to the examination of management, the use of fingerprint characteristics of candidates to determine the value of his true identity, the design of fingerprint-based test management and validation system architecture, and resolve in the course of the study the key issues encountered by the end of the whole system were studied to verify the feasibility of the system.
  Key words: fingerprint recognition technology; test management
  
  1 引言
  
  在现在各类教育考试中,随着高科技手段的发展,身份伪造的技能也愈加先进,替考也越来越成为考生作弊的一种常用手段。辨别考生身份的真实性,也成为了当前考试管理事务一大难点。目前,大多数地区对各类考试的考生的的管理还较落后,大多选取塑料卡片或纸片上印上考生姓名、照片等信息,由人工比对确定是否准予进入指定考场,其优点是直接成本低,但也具有容易伪造、复制等不可克服的缺点。本系统通过指纹识别技能,在考生报名时采集指纹特征存入数据库,在考生进入考场时校验考生的指纹特征,从而达到辨别考生身份的真实性。
  
  2 指纹识别技能介绍
  
  指纹识别技能是生物识别技能的一种,生物识别技能是通过人体的生物特征包括指纹、声音、脸孔、视网膜、掌纹、骨架等等来进行身份验证的一种解决方案。它是通过获取这些生物特征,并将之转换为数字信息,存储于计算机中,利用可靠的匹配算法来完成验证与识别个人身份的过程。
  指纹识别技能主要涉及四个功能:读取指纹图象、提取特征、保存数据和比对。在一起初,通过指纹读取设备读取到人体指纹的图象,取到指纹图象之后,要对原始图象进行初步的处理,使之更清晰。 接下来,指纹辨识软件建立指纹的数字表示――特征数据,一种单方向的转换,能够从指纹转换成特征数据但不能从特征数据转换成为指纹,而两枚不同的指纹不会产生相同的特征数据。软件从指纹上找到被称为“节点”的数据点,也便是那些指纹纹路的分叉、终止或打圈处的坐标位置,这些点同时具有七种以上的唯一性特征。因为常常手指上平均具有70个节点,所以这种方法会产生大约490个数据。有的算法把节点和方向信息组合产生了更多的数据,这些方向信息证明了各个节点之间的关系,也有的算法还处理整幅指纹图像。总之,这些数据,常常称为模板,保存为1K大小的记录。最终,通过计算机模糊对照的方法,把两个指纹的模板进行对照,计算出它们的相似程度,最后得到两个指纹的匹配结果。
  
  3 系统设计
  
  通过对需求的分析,本系统大致能够分为四个模块,系统管理子模块、采集子模块、校验子模块和统计打印子模块。系统的结果如图1所示。
  系统管理子模块主要包含了用户管理、权限管理、数据备份和数据恢复等功能。
  采集子模块主要包含了考生信息采集和考生指纹采集功能。考生信息采集方式为考生填涂报名信息卡,通过OMR设备采集至数据库。指纹采集主要在考生报名后通过指纹采集设备,根据考生的报名信息正确的将考生左、右手食指的指纹特征采集至数据库。指纹采集流程图如图2所示。
  校验子模块包含了考生信息查询和考生指纹校验功能。考生信息查询功能实现了能够对考生报名信息和指纹采集信息进行查询。考生指纹校验是在考生进入考场前,通过指纹采集设备,实现了和报名时采集的考生指纹特征进行比对校验。指纹校验流程图如图3所示。
  统计打印子模块包含了考生准考证打印和考生报名信息统计功能。
  
  4 系统实现
  
  通过对系统的软件需求、软件规模和要求实现的功能分析,考虑到系统构架要灵活实用,单机版、网络版完全兼容, 便于短时间密集采集数据, 要降低系统实施的复杂性和使用者的劳动强度。且由于经费加入的问题系统要有较低的硬件要求, 整个系统选取Client/Server( 客户/服务器) 事务模式, 以Mysql3.23.53 为后台数据库,Delphi7为前端开发工具。而前、后台连接的中间件为BDE 与Mysql 专用数据接口。
  4.1 关键问题和解决方案
  指纹识别和校验最主要的问题是拒真率和认假率,拒真率(False Reject Rate,简称FRR):其含义是对于正式使用者的排他率。认假率(False Accept Rate,简称FAR):其含义是对于非正式使用者的认证率。本系统选取某公司先进产品,其拒真率   result := true
  end else
  result := false
  end;
  用于初始化指纹识别仪,其次,根据选定的学校或考生号范围等条件从数据库选出需要进行指纹采集的考生基本信息。根据选定的顺序,考生依次进行指纹采集,考生将食指按住指纹采集仪,系统调用
  根据form上timer控件实施调用函数
  procedure Tformzwcj.Timer1Timer(Sender: TObject);
  var
  Image: Integer;
  begin
  if dqcjcs>cjcs Then--如果当前采集次数大于采集次数就退出
  Begin
  SetImage(0);
  TrackBar1.SelEnd := 0;
  Msg1('', clBtnFace);
  __CanExtract := true;
  TakePhoneButtonClick(sender);
  Exit;
  End;
  Image := YA202.CaptureImage;--初始化指纹图像
  if Image <> 0 then--判断手指是否按在指纹识别仪上
  begin
  if __CanExtract then
  begin
  SetImage(Image);
  if not Calibrate(Image) then
  begin
  TrackBar1.SelEnd := DiffToTrack(YA202.LastCaptureDiff);
  TrackBar1.Update;
  if TrackBar1.SelEnd >= TrackBar1.Position then
  begin
  __CanExtract := false;
  Timer1.Enabled := false;
  ProcessImage(__Image);
  Timer1.Enabled := true;
  Msg1('请将手指移开!', clGreen);
  end
  else
  Msg1('请将手指按紧指纹仪并保持!', 107*256+203)
  end
  end
  end
  else
  begin
  SetImage(0);
  TrackBar1.SelEnd := 0;
  Msg1('请将手指按在指纹仪上!', cl3DDkShadow);
  __CanExtract := true ;
  end;
  end;
  procedure Tformzwcj.ProcessImage(Image: Integer);
  var
  Template: Integer;
  ER,CX,CY: Integer;
  begin
  if _InProcessImage then
  Exit;
  _InProcessImage := true;
  Msg1('提取指纹数据中...');
  Template := YA202.ExtractTemplate(Image);--提取指纹采集仪采集的图像
  if Template <> 0 then
  begin
  Msg1('处理指纹数据中...');
  SetTemplates(Template);
  //__Templates[0] := Template;
  YA202.GetImageProperties (Image,ER,CX,CY);--取得指纹图像特征
  If (ERTCX) OR (abs(CY)>TCY) Then
  Begin
  Msg1('请调整按指纹的姿势!',clRed);
  Sleep(1000);
  _InProcessImage := false ;
  Exit;
  End;
  Ac_SaveTemplatesExecute(self);
  end
  else
  Msg1('系统错误!');
  _InProcessImage := false ;
  If (Editksh.CanFocus) And (cjcs=0) Then
  Begin
  Editksh.SelectAll ;
  EditKsh.SetFocus
  End;
  end;
  最终,采集的指纹信息存储到系统的数据库和图像文件中。
  procedure Tformzwcj.Ac_SaveTemplatesExecute(Sender: TObject);
  var
  ItemSize: Integer;
  ItemBuf: array of Byte;
  FS: TBlobStream;
  B: Boolean;
  begin
  B := Timer1.Enabled;
  Timer1.Enabled := false;
  --判断考生是否已经采集过指纹
  If (Qryxszw.AsString >'0') and (dqcjcs=1) Then
  If Application.MessageBox ('该考生已经有指纹信息,是否覆盖!',Pchar(Caption),MB_OKCanCel) <>IDOK ThenExit;
  Qryrk.Close;
  Qryrk.Sql.Clear ;
  --指纹特征入库
  Qryrk.Sql.Add ('replace into xx_ygzwxxb values('''+DBedit7.Text+''','+inttostr(dqcjcs)+',');
  Qryrk.Sql.Add (' null,0,null,''0'','''+yhdm+''',sysdate(),'''+getfingerpos+''',null,null) ');
  Try
  Qryrk.Execsql;
  Except
  Application.MessageBox ('数据库存储失败!',pchar(caption),MB_OK);
  Exit;
  End;
  Qryzw.Close;
  Qryzw.Sql.Clear;
  Qryzw.Sql.Add ('select * from xx_ygzwxxb where ygh='''+DBEdit7.Text+''' and zwxh='+inttostr(dqcjcs)+' ');
  Qryzw.Open;
  Qryzw.Edit;
  FS := nil;
  try
  FS := TBlobStream.Create(Qryzwzwxx as TblobField, BmWrite);
  ItemSize := YA202.GetTemplateSaveSize(__Templates[0]);
  SetLength(ItemBuf, ItemSize);
  if YA202.SaveTemplateToMemory(__Templates[0], ItemBuf[0], ItemSize) <> ItemSize then
  raise Exception.Create(Format('SaveTemplateToMemory: %d', [YA202.LastErrorCode]));
  FS.WriteBuffer(ItemBuf[0], ItemSize);
  Qryzwzwcd.AsInteger := ItemSize;
  qryzw.Post;
  FS.Free;
  Ac_SaveImageAsBMP.Execute ;
  Qryxs.Edit;
  Qryxszw.AsString:=inttostr(dqcjcs);
  Qryxs.post;
  dqcjcs:=dqcjcs+1;
  StatusBar1.Panels [0].Text :='指纹数据保存成功';
  If dqcjcs0)Then
  Begin
  aaa := TBlobStream.Create(Qryzwzwxx as TblobField, bmread);
  ItemSize :=Qryzwzwcd.AsInteger ;
  SetLength(ItemBuf, ItemSize);
  aaa.Read(ItemBuf[0], ItemSize);
  Templates[i-1] := ya202.LoadTemplateFromMemory(ItemBuf[0], ItemSize);
  if Templates[i-1] = 0 then
  raise Exception.Create(Format('LoadTemplateFromMemory: %d', [YA202.LastErrorCode]));
  ksh[i-1]:=Qryzwygh.ASString;
  aaa.Free;
  End;
  Qryzw.Next ;
  i:=i+1;
  end;
  SetTemplates(Templates);
  except
  on E: Exception do begin
  ShowMessage(E.Message);
  aaa.Free
  end
  end;
  Timer1.Enabled := B
  end;
  然后,考生在进考场之前,通过指纹识别仪采集指纹,将采集的指纹特征与数据库中的指纹特征进行比对,验证考生身份。
  procedure TFormverify.ProcessImage(Image: Integer);
  var
  Template: Integer;
  S: String;
  i, R, MC: Integer;
  PT: T_ProcessTime;
  ER,CX,CY: Integer;
  begin
  if _InProcessImage then
  Exit;
  _InProcessImage := true;
  
  Msg1('提取指纹数据中...');
  Template := YA202.ExtractTemplate(Image);
  if Template <> 0 then
  begin
  YA202.GetImageProperties (Image,ER,CX,CY);
  If (ERTCX) OR (abs(CY)>TCY) Then
  Begin
  YA202.DeleteTemplate(Template);
  Msg1('请调整按指纹的姿势!',clRed);
  Sleep(1000);
  _InProcessImage := false ;
  Exit;
  End;
  Msg1('处理指纹数据中...');
  PT := T_ProcessTime.Create;
  S := '';
  MC := 0;
  YA202.SetTestTemplate(Template);
  PT.Update;
  ppksh := nil;
  for i := Low(__Templates) to High(__Templates) do
  begin
   R := YA202.MatchSampleTemplate(__Templates[i]);
  if R > bdxsd {Y_RCMD_MATCH_THRESHOLD} then
  begin
  Inc(MC);
  setlength(ppksh,Length(ppksh)+1);
  ppksh[High(ppksh)]:=ksh[i];
  end;
  end;
  If MC>0 Then
  Begin
  Labelzt.Caption :='指纹已匹配,请确认考勤!';
  Formxzyg.ShowModal ;
  End
  Else Labelzt.Caption :='指纹匹配不准确,请重新按指纹!';
  YA202.DeleteTemplate(Template);
  Shape1.Brush.Color := clLime;
  Shape1.Update ;
  sleep(500);
  Shape1.Brush.Color := clBtnFace;
  Shape1.Update ;
  end
  else
  Application.MessageBox ('系统错误!',Pchar(Caption),Mb_OK);
  _InProcessImage := false ;
  xskq;
  end;
  
  5 系统实现效果
  
  本系统在某次考试中实现,采集的考生共2112人,每个考生均采集2枚指纹,其中男生581人,女生1531人。整个指纹采集事务历时五天,平均指纹采集速度20秒/人,其中采集时间最短的为5秒,采集时间最长的为80秒。本系统共校验了2090人,其中通过指纹校验的人数为2079人,有12人未通过校验,校验的通过率为99.5%。在未通过校验的考生中有2个考生在采集时未采集到指纹,有4个考生因为手指脱皮严重,有6人因为采集时指纹采集不清晰而导致校验不通过。此次指纹校验的平均速度为6秒/人,大局部考生4-5秒钟即完成了校验,少局部考生因为不同的原因需要更长的时间来通过校验。
  本系统根据指纹识别技能实现识别参加各类考试的考生身份,系统功能全面,操作方便,有效的遏制了考试中考生替考的现象,降低了现代考试考务管理难度,提高了事务效率,为考务现代化提供了一种科学有效的方法。
  
  参考文献:
  [1] 坎图.Delphi7从入门到精通[M].罗征,译.北京:电子工业出版社,2003.
  [2] 张海卿,张占军.Delphi7实用编程100例[M].北京:中国铁道出版社,2003.
  [3] 牛汉民.Delphi7开发基础教程[M].北京:科学出版社,2005.
  [4] Vasani V.MySQL 完全手册――完全手册丛书[M].徐小青,路晓村,译.北京:电子工业出版社,2004.
  [5] 杜波依斯.MysQL权威指南(原书第2版) [M].杨涛,译.北京:机械工业出版社,2004.

转载请注明来源。原文地址:https://www.7428.cn/page/2018/1122/45323/
 与本篇相关的热门内容: