指纹识别系统设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

指纹识别系统

设计名称:指纹识别系统程序设计

姓名:WYP

班级:软件08-1

指导老师:XXX

设计学时:6周

设计时间:2010年11月15日至2010年12月26日

目录

课程实习准备工作 (2)

程序实习项目及目的 (2)

一、项目 (2)

二、目的 (2)

程序设计内容 (2)

一、目标 (2)

二、功能 (3)

三、功能实现的基本思路 (3)

指纹识别系统的代码实现 (5)

结论 (12)

致谢 (13)

➢课程实习准备工作

1、确定课程设计题目,明确设计内容。

2、根据课程设计内容,查找有关编程资料。

3、根据设计内容的编程特点,准备实验环境和开发工具、文档书写工具。

➢程序实习项目及目的

一、项目

课题为:《指纹识别系统》

二、目的

当代社会,身份鉴别越来越重要,传统的身份鉴别方法(如身份证、信用卡、口令、密码等)可能会丢失、被盗或忘记。同时,传统的身份鉴别手段与用户并不惟一绑定,一旦他人获得,将拥有和失主同样的权力。而指纹特征是人所固有的生理特征,具有惟一性和终生不变性的特点。因此指纹认证在身份认证和身份识别中成为重要的手段。

➢程序设计内容

一、目标

本指纹识别系统主要是对用户指纹进行提取将采集的指纹模板

数据写入数据库,将实时采集的指纹图像作为指纹样板和数据库中的指纹模板逐一对,从而确认指纹样板身份。

二、功能

指纹识别系统是一个典型的模式识别系统,包括指纹图像获取、处理、特征提取和比对等模块。

指纹图像获取:通过专门的指纹采集仪可以采集活体指纹图像。目前,指纹采集仪主要有活体光学式、电容式和压感式。对于分辨率和采集面积等技术指标,公安行业已经形成了国际和国内标准,但其他还缺少统一标准。根据采集指纹面积大体可以分为滚动捺印指纹和平面捺印指纹,公安行业普遍采用滚动捺印指纹。另外,也可以通过扫描仪、数字相机等获取指纹图像。

指纹图像压缩:大容量的指纹数据库必须经过压缩后存储,以减少存储空间。

指纹图像处理:包括指纹区域检测、图像质量判断、方向图和频率估计、图像增强、指纹图像细化等。

本系统主要功能包括指纹采集、指纹识别、人员认证、人员登记。

三、功能实现的基本思路

(1)模块化设计

模块化是面向对象编程中的一个特征。把特定应用设计为一个模块,并从属性和方法两方面设计成为一个类模块。把类模块设置在不

同的名字空间就可以用这类相同的类对应不同的应用。即使添加一个同样的类也不会影响不同名字空间的其他同类成员。

(2)可扩充设计

面向对象编程从本质上支持可扩充性。在不影响或极少影响已有代码的情况下,添加加一种功能。它的好处是新加代码无需大量发动已有代码。

(3)封装设计

由于功能被封装在类中,且类是作为一个独立实体而存在的,因此只要提供该类库,用户就可在无需知道该方法类详细实现的细节情况下,调用该功能,以达到重用代码的目的。

➢指纹识别系统的代码实现

一、主要窗体的布局设计

二、主窗体功能的代码实现

void LiveMatch::OnButtonCreate() //创建指纹数据库

{

CFileDialog dlg(TRUE,"txt",".txt",OFN_HIDEREADONL Y | OFN_OVERWRITEPROMPT,"Text (*.txt)|*.TXT||");

if (dlg.DoModal() != IDOK) return;

DatabasePath = dlg.GetPathName();

FPA_CreateDatabase(DatabasePath, IndexList, &ListSize);

}

void LiveMatch::OnButtonSave() //保存指纹数据库

{

// TODO: Add your control notification handler code here

FPA_SaveDatabase(DatabasePath, IndexList, ListSize);

}

void LiveMatch::OnButtonLoad() //导入指纹数据库

{

CFileDialog dlg(TRUE,"txt",".txt",OFN_HIDEREADONL Y | OFN_OVERWRITEPROMPT,"Text (*.txt)|*.TXT||");

if (dlg.DoModal() != IDOK) return;

DatabasePath = dlg.GetPathName();

FPA_LoadDatabase(DatabasePath, IndexList, &ListSize);

CString msg;

msg.Format("Number of Record: %d", ListSize);

AfxMessageBox(msg);

}

void LiveMatch::OnButtonAdd() //保存指纹数据库

{

// TODO: Add your control notification handler code here

CString FolderName = DatabasePath;

int t = FolderName.ReverseFind('\\');

FolderName = FolderName.Left(t);

CString IDStr, FingerIndexStr;

GetDlgItemText(IDC_EDIT_ID, IDStr);

GetDlgItemText(IDC_EDIT_FINGERINDEX, FingerIndexStr);

int ID = atoi((LPCSTR)IDStr);

int FingerIndex = atoi((LPCSTR)FingerIndexStr);

int Size;

BYTE lpFeature[430];

FPA_AnalyzeFeature_File(LiveFilePath, lpFeature, &Size);

int ret = FPA_AddEntry(FolderName, ID, IndexList, &ListSize, FingerIndex, lpFeature);

if (ret == 0)

SetDlgItemText(IDC_STA TIC_ADDSTATUS, "添加成功");

else

SetDlgItemText(IDC_STA TIC_ADDSTATUS, "添加失败,请改变ID");

}

void LiveMatch::OnButtonIdentify() //开始识别

{

if (ListSize >= 0) bIdentify = true;

}

void LiveMatch::OnButtonNidentify() //停止识别

{

bIdentify = false;

}

void LiveMatch::OnTimer(UINT nIDEvent)

{

// TODO: Add your message handler code here and/or call default

相关文档
最新文档