• 大小: 1.08MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-30
  • 语言: C/C++
  • 标签: 指纹识别  代码  

资源简介

VC++ 指纹识别系统的源代码,一个学士学位的毕业设计。 内容简介: 由于指纹所具有的唯一性和不变性,以及指纹识别技术具有很高的可行性和实用性,指纹识别成为目前最流行、最可靠的个人身份认证技术之一。 本论文对指纹图像基于小波变换的各种处理进行了分析、总结。图像处理包括基于小波变换的指纹图像滤波处理和基于小波的指纹图像增强处理。同时介绍指纹图像的预处理:目的是去除指纹图像中的噪音,将其转化为一幅清晰的点线图,便于提取正确的指纹特征。它分四步进行,即灰度滤波、二值化、二值去噪、细化。 本文针对基于点模式匹配的指纹匹配算法速度较慢的现状,设计了一种新的指纹匹配方法,即利用纹线匹配技术来寻找基准点对的指纹匹配算法.实验证明,该算法匹配速度很快,误识率低,准确性高,并具有图象旋转平移不变性.对面积适中的指纹图象,匹配结果可以满足在线应用的需要.该算法有望发展成为一种实用、有效的指纹匹配技术.

资源截图

代码片段和文件信息

// cdib.cpp
// new version for WIN32
#include “stdafx.h“
#include “cdib.h“

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

IMPLEMENT_SERIAL(CDib Cobject 0);

CDib::CDib()
{
m_hFile = NULL;
m_hBitmap = NULL;
m_hPalette = NULL;
m_nBmihAlloc = m_nImageAlloc = noAlloc;
Empty();
}

CDib::CDib(CSize size int nBitCount)
{
m_hFile = NULL;
m_hBitmap = NULL;
m_hPalette = NULL;
m_nBmihAlloc = m_nImageAlloc = noAlloc;
Empty();
ComputePaletteSize(nBitCount);
m_lpBMIH = (LPBITMAPINFOHEADER) new 
char[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries];
m_nBmihAlloc = crtAlloc;
m_lpBMIH->biSize = sizeof(BITMAPINFOHEADER);
m_lpBMIH->biWidth = size.cx;
m_lpBMIH->biHeight = size.cy;
m_lpBMIH->biPlanes = 1;
m_lpBMIH->biBitCount = nBitCount;
m_lpBMIH->biCompression = BI_RGB;
m_lpBMIH->biSizeImage = 0;
m_lpBMIH->biXPelsPerMeter = 0;
m_lpBMIH->biYPelsPerMeter = 0;
m_lpBMIH->biClrUsed = m_nColorTableEntries;
m_lpBMIH->biClrImportant = m_nColorTableEntries;
ComputeMetrics();
memset(m_lpvColorTable 0 sizeof(RGBQUAD) * m_nColorTableEntries);
m_lpImage = NULL;  // no data yet
}

CDib::~CDib()
{
Empty();
}

CSize CDib::GetDimensions()
{
if(m_lpBMIH == NULL) return CSize(0 0);
return CSize((int) m_lpBMIH->biWidth (int) m_lpBMIH->biHeight);
}

BOOL CDib::AttachMapFile(const char* strPathname BOOL bShare) // for reading
{
// if we open the same file twice Windows treats it as 2 separate files
// doesn‘t work with rare BMP files where # palette entries > biClrUsed
HANDLE hFile = ::CreateFile(strPathname GENERIC_WRITE | GENERIC_READ
bShare ? FILE_SHARE_READ : 0
NULL OPEN_EXISTING FILE_ATTRIBUTE_NORMAL NULL);
ASSERT(hFile != INVALID_HANDLE_VALUE);
DWORD dwFileSize = ::GetFileSize(hFile NULL);
HANDLE hMap = ::CreateFileMapping(hFile NULL PAGE_READWRITE 0 0 NULL);
DWORD dwErr = ::GetLastError();

if(hMap == NULL)
{
AfxMessageBox(“Empty bitmap file“);
return FALSE;
}

LPVOID lpvFile = ::MapViewOfFile(hMap FILE_MAP_WRITE 0 0 0); // map whole file
ASSERT(lpvFile != NULL);

if(((LPBITMAPFILEHEADER) lpvFile)->bfType != 0x4d42)
{
AfxMessageBox(“Invalid bitmap file“);
DetachMapFile();
return FALSE;
}

AttachMemory((LPBYTE) lpvFile + sizeof(BITMAPFILEHEADER));
m_lpvFile = lpvFile;
m_hFile = hFile;
m_hMap = hMap;
return TRUE;
}

BOOL CDib::CopyToMapFile(const char* strPathname)
{
// copies DIB to a new file releases prior pointers
// if you previously used CreateSection the HBITMAP will be NULL (and unusable)
BITMAPFILEHEADER bmfh;
bmfh.bfType = 0x4d42;  // ‘BM‘
bmfh.bfSize = m_dwSizeImage + sizeof(BITMAPINFOHEADER) +
sizeof(RGBQUAD) * m_nColorTableEntries + sizeof(BITMAPFILEHEADER);
// meaning of bfSize open to interpretation
bmfh.bfReserved1 = bmfh.bfReserved2 = 0;
bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-11-09 09:38  VCsrc\
     目录           0  2011-11-17 17:14  VCsrc\指纹识别系统\
     文件       45056  2006-06-18 15:40  VCsrc\指纹识别系统\摘      要.doc
     目录           0  2011-11-09 09:38  VCsrc\指纹识别系统\调试结果程序\
     目录           0  2011-11-09 09:38  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\
     文件           0  2005-04-20 21:24  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\.dsw
     文件       16334  2000-12-11 07:12  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\cdib.cpp
     文件        1906  1997-03-25 00:39  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\cdib.h
     文件        3159  2000-12-27 22:25  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\cDlgMorphClose.cpp
     文件        1675  2000-12-27 22:25  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\cDlgMorphClose.h
     文件        3200  2000-12-21 22:41  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\cDlgMorphDilation.cpp
     文件        1708  2000-12-21 22:39  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\cDlgMorphDilation.h
     文件        3187  2000-12-21 21:46  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\cDlgMorphErosion.cpp
     文件        1697  2001-02-14 03:20  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\cDlgMorphErosion.h
     文件        3142  2000-12-22 01:14  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\cDlgMorphOpen.cpp
     文件        1664  2000-12-22 00:47  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\cDlgMorphOpen.h
     文件       47796  2006-06-19 09:54  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1.aps
     文件       16519  2006-06-15 21:24  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1.clw
     文件        4307  2000-12-11 20:35  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1.cpp
     文件        8572  2001-03-25 23:50  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1.dsp
     文件         535  2001-01-15 17:33  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1.dsw
     文件        1345  2005-04-20 16:27  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1.h
     文件     2040832  2006-06-19 09:56  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1.ncb
     文件       58880  2006-06-19 09:56  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1.opt
     文件         244  2006-06-19 09:54  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1.plg
     文件       36977  2006-05-24 11:44  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1.rc
     文件       41641  2001-02-14 03:14  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1.rc.bak
     文件        7742  2001-01-16 22:54  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1Doc.cpp
     文件        2065  2001-02-14 18:22  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1Doc.h
     文件       95792  2001-02-23 03:08  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1View.cpp
     文件        4079  2001-02-22 23:11  VCsrc\指纹识别系统\调试结果程序\vc++指纹图象处理1\ch1_1View.h
............此处省略147个文件信息

评论

共有 条评论