本發(fā)明屬于基于芯片及國(guó)密算法的指紋金融IC卡研發(fā)及產(chǎn)業(yè)化,具體涉及一種基于IC卡的指紋識(shí)別算法。
背景技術(shù):
指紋專家指出指紋細(xì)節(jié)點(diǎn)具有唯一性,不同指紋中細(xì)節(jié)點(diǎn)的數(shù)量、細(xì)節(jié)點(diǎn)的方向以及細(xì)節(jié)點(diǎn)之間的相對(duì)位置互不相同,因此指紋匹配通?;谥讣y細(xì)節(jié)點(diǎn)匹配來實(shí)現(xiàn)。在整個(gè)指紋識(shí)別系統(tǒng)中,指紋匹配是指紋識(shí)別的最后一個(gè)環(huán)節(jié),也是極為關(guān)鍵的一個(gè)環(huán)節(jié)。
指紋匹配算法主要求解如下的問題:給定二維平面中的兩個(gè)指紋特征點(diǎn)集P與Q,其中的點(diǎn)包含有位置信息與方向信息,P和Q二者之間存在平移、旋轉(zhuǎn)與尺度變化。匹配算法的目標(biāo)就是得到特征點(diǎn)集P和Q之間的最大匹配對(duì)的值M。其中特征點(diǎn)集P和Q可分別表示為:
P={Fip|i=1,…,M};
Q={Fjq|j=1,…,N},
其中P包含M個(gè)細(xì)節(jié)點(diǎn),Q包含N個(gè)細(xì)節(jié)點(diǎn),M和N的值通常在20到50之間。每個(gè)細(xì)節(jié)點(diǎn)可以用以下特征向量表示:Fk=(xk,yk,ak,Tk),其中(xk,yk)為細(xì)節(jié)點(diǎn)平面坐標(biāo),ak為細(xì)節(jié)點(diǎn)處紋線切線方向角(范圍0-360),TK為細(xì)節(jié)點(diǎn)類型,包括端點(diǎn)和分叉點(diǎn)了兩種類型。
當(dāng)前指紋匹配算法已經(jīng)在DSP處理器(數(shù)字信號(hào)處理器)上實(shí)現(xiàn),基本實(shí)現(xiàn)方案為:對(duì)點(diǎn)集P和Q中的任意一對(duì)對(duì)應(yīng)點(diǎn)P[i]和Q[j],計(jì)算變換參數(shù)(dx,dy,da),其中dx=(P[i].x-Q[j].x),dy=(P[i].y-Q[j].y),da=(P[i].a-Q[j].a),根據(jù)該參數(shù)對(duì)點(diǎn)集P內(nèi)的細(xì)節(jié)點(diǎn)信息進(jìn)行重新變換得到新的點(diǎn)集PS,變換方式為:對(duì)任意k,PS[k].x=(PS[k].x-dx),PS[k].y=(PS[k].y-dy),PS[k].a=(PS[k].a-da)將點(diǎn)集PS和點(diǎn)集Q內(nèi)的所有細(xì)節(jié)點(diǎn)信息進(jìn)行一一比較,若細(xì)節(jié)點(diǎn)信息偏差值(該偏差值由這兩點(diǎn)的相對(duì)距離和方向角偏差加權(quán)得到)小于預(yù)先設(shè)置的閾值,則認(rèn)為對(duì)應(yīng)點(diǎn)對(duì)匹配,統(tǒng)計(jì)全部的匹配點(diǎn)對(duì)數(shù)目,該算法的計(jì)算復(fù)雜度為M*N*M*N;現(xiàn)有匹配算法復(fù)雜,在IC卡芯片上執(zhí)行時(shí),由于計(jì)算復(fù)雜度偏高,受限于IC卡IC芯片的性能和資源,目前沒有實(shí)用的可在IC芯片上運(yùn)行的指紋識(shí)別算法能滿足實(shí)際使用要求。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于IC卡的指紋識(shí)別算法,本發(fā)明對(duì)算法流程進(jìn)行優(yōu)化,克服現(xiàn)有算法執(zhí)行效率偏低的缺點(diǎn)。
為達(dá)到上述目的,本發(fā)明采用如下技術(shù)方案:
一種基于IC卡的指紋識(shí)別算法,具體包以下步驟:
1)、首先,在匹配之前,對(duì)二維平面中的兩個(gè)指紋特征點(diǎn)集的所有細(xì)節(jié)點(diǎn)按方向角大小排序;
2)、對(duì)二維平面中的每一個(gè)細(xì)節(jié)點(diǎn)提取其臨近特征點(diǎn)信息作為附加信息,采用滑窗法進(jìn)行逐點(diǎn)比較。
進(jìn)一步的,具體的,步驟2)中:具體的對(duì)點(diǎn)集P和Q內(nèi)的所有細(xì)節(jié)點(diǎn)按方向角大小排序,對(duì)P和Q內(nèi)的每一個(gè)細(xì)節(jié)點(diǎn)提取其臨近特征點(diǎn)信息作為附加信息,每個(gè)細(xì)節(jié)點(diǎn)的特征向量擴(kuò)展為Fk=(xk,yk,ak,Tk,Nk),其中Nk為臨近點(diǎn)編號(hào),(xk,yk)為細(xì)節(jié)點(diǎn)平面坐標(biāo),ak為細(xì)節(jié)點(diǎn)處紋線切線方向角,TK為細(xì)節(jié)點(diǎn)類型,點(diǎn)集P和Q變換為點(diǎn)集P1和Q1。
進(jìn)一步的,細(xì)節(jié)點(diǎn)處紋線切線方向角范圍為0-360°。
進(jìn)一步的,細(xì)節(jié)點(diǎn)包括端點(diǎn)和分叉點(diǎn)。
進(jìn)一步的,具體的,首先對(duì)點(diǎn)集P進(jìn)行初始化計(jì)數(shù)變量i,j;對(duì)于點(diǎn)P[i],計(jì)算點(diǎn)集P內(nèi)所有點(diǎn)與點(diǎn)P[i]的相對(duì)距離,取其最小值,并將與其距離最近的點(diǎn)的編號(hào)賦值給P[i].N;按此流程遍歷點(diǎn)集P和Q內(nèi)所有點(diǎn)。
進(jìn)一步的,具體的,其中特征點(diǎn)集P和Q可分別表示為:
P={Fip|i=1,…,M};
Q={Fjq|j=1,…,N}。
進(jìn)一步的,具體的,對(duì)點(diǎn)集P1和Q1中的任意一對(duì)點(diǎn)對(duì),比較其臨近特征點(diǎn)信息,若不匹配,檢查下一對(duì)對(duì)應(yīng)點(diǎn),若匹配,則對(duì)P1內(nèi)的細(xì)節(jié)點(diǎn)進(jìn)行坐標(biāo)變換得到點(diǎn)集P1S。
進(jìn)一步的,初始化計(jì)數(shù)變量i,j;對(duì)于點(diǎn)對(duì)P1[i]和Q1[j],比較臨近點(diǎn)特征信息若匹配,以P1[i]和Q1[j]為參考點(diǎn)對(duì)點(diǎn)集P1進(jìn)行變換得點(diǎn)集P1S,按此流程遍歷點(diǎn)集P和點(diǎn)集Q內(nèi)的所有點(diǎn)對(duì)。
進(jìn)一步的,對(duì)點(diǎn)集P1S中的任意一點(diǎn)P1S[i],選取點(diǎn)集Q1中與P1S[i]方向角偏差范圍小于15°的所有點(diǎn)與其進(jìn)行比較遍歷P1S中的所有點(diǎn)。
進(jìn)一步的,初始化計(jì)數(shù)變量i、j和matchNum;對(duì)于點(diǎn)P1S[i],獲取點(diǎn)集Q1內(nèi)與點(diǎn)P1S[i]方向角差別小于15的子點(diǎn)集,記錄該子點(diǎn)集的最小編號(hào)為L(zhǎng)owWindow,最大編號(hào)為HighWindow,將該子點(diǎn)集內(nèi)的所有點(diǎn)與點(diǎn)P1S[i]進(jìn)行比較,若匹配,則matchNum加一;按此流程遍歷點(diǎn)集P1S內(nèi)的所有點(diǎn)。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益的技術(shù)效果:
本發(fā)明一種基于IC卡的指紋識(shí)別算法,首先,在匹配之前,對(duì)二維平面中的兩個(gè)指紋特征點(diǎn)集的所有細(xì)節(jié)點(diǎn)按方向角大小排序,然后對(duì)二維平面中的每一個(gè)細(xì)節(jié)點(diǎn)提取其臨近特征點(diǎn)信息作為附加信息,采用滑窗法進(jìn)行逐點(diǎn)比較,本發(fā)明采用先對(duì)二維平面中的每一個(gè)細(xì)節(jié)點(diǎn)進(jìn)行排序,然后在逐點(diǎn)對(duì)比,減少了對(duì)比次數(shù),并且更加精確了對(duì)比結(jié)果,從而在滿足識(shí)別精度要求的同時(shí)兼顧資源和效率,通過此方法進(jìn)一步簡(jiǎn)化了在IC卡芯片上執(zhí)行時(shí)的計(jì)算復(fù)雜度。
具體實(shí)施方式
本發(fā)明一種基于IC卡的指紋識(shí)別算法,具體包括以下步驟:
1)、首先,在匹配之前,對(duì)二維平面中的兩個(gè)指紋特征點(diǎn)集的所有細(xì)節(jié)點(diǎn)按方向角大小排序;
2)、對(duì)二維平面中的每一個(gè)細(xì)節(jié)點(diǎn)提取其臨近特征點(diǎn)信息作為附加信息,采用滑窗法進(jìn)行逐點(diǎn)比較。
具體的,步驟2)中,二維平面中的兩個(gè)指紋特征點(diǎn)集為P和Q,對(duì)點(diǎn)集P和Q內(nèi)的所有細(xì)節(jié)點(diǎn)按方向角大小排序,對(duì)P和Q內(nèi)的每一個(gè)細(xì)節(jié)點(diǎn)提取其臨近特征點(diǎn)信息作為附加信息,其中,每個(gè)細(xì)節(jié)點(diǎn)的特征向量擴(kuò)展為Fk=(xk,yk,ak,Tk,Nk),其中Nk為臨近點(diǎn)編號(hào),(xk,yk)為細(xì)節(jié)點(diǎn)平面坐標(biāo),ak為細(xì)節(jié)點(diǎn)處紋線切線方向角(范圍0-360°),TK為細(xì)節(jié)點(diǎn)類型,包括端點(diǎn)和分叉點(diǎn)了兩種類型;點(diǎn)集P和Q變換為點(diǎn)集P1和Q1;具體的,以點(diǎn)集P為例進(jìn)行描述:初始化計(jì)數(shù)變量i,j;對(duì)于點(diǎn)P[i],計(jì)算點(diǎn)集P內(nèi)所有點(diǎn)與點(diǎn)P[i]的相對(duì)距離,取其最小值,并將與其距離最近的點(diǎn)的編號(hào)賦值給P[i].N;按此流程遍歷點(diǎn)集P和Q內(nèi)所有點(diǎn);
其中特征點(diǎn)集P和Q可分別表示為:
P={Fip|i=1,…,M};
Q={Fjq|j=1,…,N},
具體的,步驟2)中,對(duì)點(diǎn)集P1和Q1中的任意一對(duì)點(diǎn)對(duì),比較其臨近特征點(diǎn)信息,若不匹配,檢查下一對(duì)對(duì)應(yīng)點(diǎn),若匹配,則對(duì)P1內(nèi)的細(xì)節(jié)點(diǎn)進(jìn)行坐標(biāo)變換得到點(diǎn)集P1S,初始化計(jì)數(shù)變量i,j;對(duì)于點(diǎn)對(duì)P1[i]和Q1[j],比較臨近點(diǎn)特征信息若匹配,以P1[i]和Q1[j]為參考點(diǎn)對(duì)點(diǎn)集P1進(jìn)行變換得點(diǎn)集P1S,按此流程遍歷點(diǎn)集P和點(diǎn)集Q內(nèi)的所有點(diǎn)對(duì);
對(duì)點(diǎn)集P1S中的任意一點(diǎn)P1S[i],選取點(diǎn)集Q1中與P1S[i]方向角偏差范圍小于15°(窗口大小)的所有點(diǎn)與其進(jìn)行比較遍歷P1S中的所有點(diǎn),初始化計(jì)數(shù)變量i、j和matchNum(命中次數(shù));對(duì)于點(diǎn)P1S[i],獲取點(diǎn)集Q1內(nèi)與點(diǎn)P1S[i]方向角差別小于15的子點(diǎn)集,記錄該子點(diǎn)集的最小編號(hào)為L(zhǎng)owWindow,最大編號(hào)為HighWindow,將該子點(diǎn)集內(nèi)的所有點(diǎn)與點(diǎn)P1S[i]進(jìn)行比較,若匹配,則matchNum加一;按此流程遍歷點(diǎn)集P1S內(nèi)的所有點(diǎn)。
然后采用復(fù)雜度計(jì)算方法計(jì)算復(fù)雜度的期望值為:
M*M+N*N+M*(M-1)+N*(N-1)+(M*N*C1)*M*N*C2/360公式1
其中M,N分別指兩個(gè)指紋特征點(diǎn)集的最大細(xì)節(jié)點(diǎn)數(shù),C1為任意兩個(gè)點(diǎn)集中臨近點(diǎn)信息匹配的點(diǎn)對(duì)在全部點(diǎn)對(duì)中所占的比例,經(jīng)過實(shí)驗(yàn)統(tǒng)計(jì)C1的值小于20%,C2為步驟3中設(shè)置的窗口大小;
上述公式1中第1、2項(xiàng)為對(duì)點(diǎn)集P、Q分別進(jìn)行排序的計(jì)算復(fù)雜度,第3、4項(xiàng)為對(duì)P、Q分別提取臨近點(diǎn)信息的計(jì)算復(fù)雜度,第5項(xiàng)為P1和Q1進(jìn)行逐點(diǎn)匹配的計(jì)算復(fù)雜度??梢钥吹剑舅惴ㄔ趦H增加一項(xiàng)附加信息的情況下大幅提高了算法執(zhí)行效率。