安徽商貿職業(yè)技術學院 秦曉安 王 睿
基于協同過濾的面向移動終端身份識別系統(tǒng)研究
安徽商貿職業(yè)技術學院 秦曉安 王 睿
由于人體指紋的不變性和唯一性,指紋識別成為最可靠的身份驗證方法,基于指紋識別技術的身份驗證系統(tǒng)可以替代傳統(tǒng)的基于密碼和證件的安全系統(tǒng)。本課題是基于協同過濾移動終端的Xscale平臺,在平臺系統(tǒng)下通過串口連接與指紋識別平臺實現身份證識別功能,并做相關的軟件硬件設計。
協同過濾;移動終端;Xscale平臺;身份識別
1.1 指紋識別簡介
指紋識別是二十世紀六十年代興起的。近年來指紋識別技術的應用以爆炸性的速度增長,在歐美等發(fā)達國家,指紋識別技術的應用非常普遍,國內的應用則剛剛興起,在考勤、身份防偽、銀行、金融證券、醫(yī)療、社會保險等諸多領域的應用前景非常廣闊。目前使用的指紋識別技術大多是基于計算機實現的,在嵌入式領域特別是需要可移動性和小型化的場合。這種技術的使用受到很大的限制,指紋平臺就是針對嵌入式應用而專門設計的。將指紋識別算法軟件與先進的嵌入式硬件緊密結合固化成一個整體,使其可靠性、安全性、以及使用的靈活性都得到加強。
1.2 指紋識別的原理
指紋特征點(Minutiae):
指紋的紋線到處都有開始點(終止點)及分枝點,我們稱之為特征點,而每個特征點都有大約七個特征,人十個手指最少產生4900個獨立可測量的特征。,每個指頭平均有一百個特征點,但是發(fā)現5~10個相同即可斷定這兩枚指紋是出于同一個指頭所遺留下的。借著特征點法來鑒定指紋,稱之為「同定」,目前此法廣泛的被世界各國所采用。
圖1 指紋識別區(qū)域
指紋識別過程:
指紋識別由兩個過程組成,即注冊過程和識別過程。原理框圖如下圖所示。
在登記過程中,用戶需要先采集指紋,然后計算機系統(tǒng)將自動進行特征提取,提取后的特征將作為模板保存在數據庫或其它指定的地方。
在識別或驗證階段,用戶首先也要采集指紋,然后DSP系統(tǒng)將自動進行特征提取,提取后的待驗特征將與數據庫中的模板進行比對,給出比對結果。在很多場合,用戶可能要輸入其它的一些輔助信息,以幫助系統(tǒng)進行匹配,如帳號、用戶名等。
此過程是一個通用的過程,對所有的生物特征識別技術都適用。
2.1 軟件部份
軟件實現功能如圖2所示:
圖2 指紋識別過程
圖3 軟件概要設計
軟件部份其功能主要是實現串口通信。
2.2 硬件部份
硬件實現功能如圖4所示:
圖4 硬件的概要設計
其主要功能是電平轉換,還有對模塊的接口擴展其門禁系統(tǒng)功能等。
指紋識別模塊是采購深圳市十指科技有限公司,型號為TF-MDM1。這指紋識別模塊主要是應用于第二次開發(fā)的指紋識別模塊,模塊內集有指紋的采集、指紋存儲、指紋比對等功能,模塊是使用TTL電平使用的,因為模塊不是集成在實驗箱平臺上,要使得工作就要進行電平轉換,通過串口達成傳輸。因調試的過程中只是搭了一個簡單的電平轉換電路,要使安全工作,所以為這模塊設計了擴展底板。
3.1 指紋模塊接口
圖5 指紋模塊接口
3.2 實驗箱擴展接口的對聯設計
指紋模塊的實驗箱的擴展接口相連如下圖;是通過MAX232電平轉換實現通信。
圖6 擴展接口的對聯設計
3.3 PCB設計
采用了雙層板設計,鋪銅層為地。在設計期間最因難是量尺寸。電路板采用5V供電,5V電源或USB接口都可取電。指紋模塊的門禁系統(tǒng)功能實驗設計了,能擴展實現PCB設計圖如圖7所示:
圖7 PCB設計圖
主要分成三個大類,分別是CZWDlg、CWComm、CZWtp;CZWDlg:用戶通過這個窗口類實現了與應用程序的交互,通過這個界面控制和使用指紋機。
CZWComm:應用程序可以通過CZWComm類的實體來實現對指紋機的串口控制。
CZWtp:應用程序可以通過指紋機通信協議類獲得指定的發(fā)送命令的數據包。
4.1 打開串口
Win32 中用于打開串口的API 函數為CreateFile,其原型為:
HANDLE CreateFile
(
LPCTSTR lpFileName, //將要打開的串口邏輯名,如COM1 或COM2
DWORD dwAccess, //指定串口訪問的類型,可以是讀取、寫入或兩者并列
DWORD dwShareMode, //指定共享屬性,由于串口不能共享,該參數必須置為0
LPSECURITY_ATTRIBUTES lpsa, //引用安全性屬性結構,缺省值為NULL
DWORD dwCreate, //創(chuàng)建標志,對串口操作該參數必須置為OPEN EXISTING
DWORD dwAttrsAndFlags, //屬性描述,用于指定該串口是否可進行異步操作,
//FILE_FLAG_OVERLAPPED:可使用異步的I/O
HANDLE hTemplateFile //指向模板文件的句柄,對串口而言該參數必須置為NULL
);
例如,以下程序是工程以異步讀寫方式打開串口COM5:
HANDLE m_hCom;
m_hCom = CreateFile(“COM5:”, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
4.2 配置串口
配置串口是通過改變設備控制塊DCB(Device Control Block) 的成員變量值來實現的,接收緩沖區(qū)和發(fā)送緩沖區(qū)的大小可通過SetupComm函數來設置。
以下程序將串口設置為:波特率為19200,數據位數為8位,停止位為1 位,無校驗,接收緩沖區(qū)和發(fā)送緩沖區(qū)大小均為1024個字節(jié)。
DCB dcb = {sizeof(DCB), };
//設置通訊屬性
dcb.fBinary = TRUE;
dcb.fParity = FALSE;
dcb.BaudRate = CBR_19200;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
if (! SetCommState(m_hCom, &dcb))
{
SendNoti(-1,_T("串口配置失敗.... "));
return 0;
}
if (!SetupComm(m_hCom, 1024, 1024))
{
SendNoti(-1,_T("設置串口緩沖失敗.... "));
return 0;
}
4.3 超時設置
超時設置是通過改變COMMTIMEOUTS結構體的成員變量值來實現的,COMMTIMEOUTS的原型為:
typedef struct _COMMTIMEOUTS
{
DWORD ReadIntervalTimeout; //定義兩個字符到達的最大時間間隔,單位:毫秒
DWORD ReadTotalTimeoutMultiplier;
DWORD ReadTotalTimeoutConstant;
DWORD WriteTotalTimeoutMultiplier;
DWORD WriteTotalTimeoutConstant;
} COMMTIMEOUTS, *LPCOMMTIMEOUTS;
設置超時的函數為SetCommTimeouts,其原型中接收COMMTIMEOUTS的指針為參數:
BOOL SetCommTimeouts
(
HANDLE hFile, // handle to communications device
LPCOMMTIMEOUTS lpCommTimeouts // pointer to comm time-out structure
);
以下是本程序將串口操作的超時的設定:
COMMTIMEOUTS stTimoutes = {100, 0, 2000, 0, 2000};
if (! SetCommTimeouts(m_hCom, &stTimoutes)) //設置超時
{
SendNoti(-1,_T("設置事件和超時時間失敗.... "));
return 0;
}
4.4 讀寫串口
(1)讀串口
對串口進行讀取所用的函數和對文件進行讀取所用的函數相同,讀函數原型如下:
BOOL ReadFile
(
HANDLE hFile, // handle of fi le to read
LPVOID lpBuffer, // pointer to buffer that receives data
DWORD nNumberOfBytesToRead, // number of bytes to read
LPDWORD lpNumberOfBytesRead, // pointer to number of bytes read
LPOVERLAPPED lpOverlapped // pointer to structure for overlapped I/O
);
(2)寫串口
對串口進行寫入所用的函數和對文件進行寫入所用的函數相同,寫函數原型如下:
BOOL WriteFile
(
HANDLE hFile, // handle to fi le to write to
LPCVOID lpBuffer, // pointer to data to write to fi le
DWORD nNumberOfBytesToWrite, // number of bytes to write
LPDWORD lpNumberOfBytesWritten, // pointer to number of bytes written
LPOVERLAPPED lpOverlapped // pointer to structure for overlapped I/O
);
4.5 關閉串口
利用API 函數實現串口通信時關閉串口非常簡單,只需使用CreateFile 函數返回的句柄作為參數調用CloseHandle 即可:
BOOL CloseHandle(
HANDLE hObject // handle to object to close
);
總體來說面向移動終端的身份識別系統(tǒng),難度不算太大,但也存在核心關鍵技術。相對來說,協議部份比較簡單。難處在于是EVC++軟件編程,雖然語言環(huán)境和VC++一樣,但是實際運用起來還是比較復雜,基類庫復雜繁多。硬件底板使用了新的布線方法,就是手工布線,工業(yè)上電路板布線都是是使用手工的,沒用自動布線,因為自動布線不合理也不美觀。
[1]劉青文.基于協同過濾的推薦算法研究[J].中國科學技術大學,2013-05-01.
[2]Greiner R.Structural Extension to Logistic Regression- discriminative Parameter Learning of Belief Net Classifiers.pdf. Machine Learning,2005.
[3]余泓.基于移動終端的移動互聯網服務質量及用戶行為分析研究[J].安徽大學,2014-04-01.
[4]孫瀚.基于指紋識別身份驗證的數據采集系統(tǒng)設計與實現[J].電子科技大學,2005-02-01.
Research on mobile terminal identity recognition system based on collaborative f i ltering
Qin Xiao-an,Wang Rui
(Anhui Business College of Vocational Technology,Anhui Wuhu 241002)
Due to the uniqueness and invariance of the fi ngerprint, fi ngerprint recognition has become the most reliable metho d of authentication, security system can replace the password and certi fi cate authentication system based on fi ngerprint identi fi cation technology. This topic is based on collaborative fi ltering mobile terminal Xscale platform, in the platform system through the serial port connection and fi ngerprint identi fi cation platform to realize the ID card recognition function, and make the relevant software and hardware design.
Collaborative fi ltering ;Mobile terminal; Xscale platform; identity
秦曉安(1982-),男,安徽明光人,安徽商貿職業(yè)技術學院,碩士,講師,主要從事數據庫、程序算法方面的研究。
安徽省高校自然科學研究重點項目,項目編號:KJ2017A590;安徽省高校自然科學研究一般項目,項目編號:KJSM201602;安徽商貿職業(yè)技術學院“三平臺兩基地”2017 年應用研究項目,項目編號:2017ZDX04。