STM32的條狀指紋采集與拼接系統(tǒng)
2 系統(tǒng)軟件設(shè)計(jì)
2.1 軟件總體設(shè)計(jì)
系統(tǒng)上電后,進(jìn)行初始化,并進(jìn)入低功耗等待階段。在低功耗階段,采用低速檢測(cè)手指,即間隔一段較長(zhǎng)時(shí)間發(fā)送一次手指檢測(cè)指令,如果檢測(cè)到有手指,則提高指紋采集的頻率,進(jìn)入指紋采集及拼接流程,否則繼續(xù)等待一段時(shí)間后再次檢測(cè)。軟件總體流程如圖2所示。本文引用地址:http://www.ex-cimer.com/article/159650.htm
為提高指紋采集和拼接的效率,將指紋的幀采集和拼接作為兩個(gè)線程進(jìn)行并行處理。由于指紋的采集采用SPI的DMA方式進(jìn)行,因此MCU可以以較少的時(shí)間來介入查詢采集是否結(jié)束,大部分時(shí)間用在復(fù)雜度較高的拼接部分。指紋采集的第一幀因?yàn)檫€沒有得到可以拼接的數(shù)據(jù),而拼接的最后一幀不需要再進(jìn)行指紋序列的采集,因此這兩個(gè)部分的操作是相對(duì)獨(dú)立的。而其他時(shí)刻,指紋的第N幀采集和第N-1幀的拼接是并行進(jìn)行的。由于采用DMA方式進(jìn)行數(shù)據(jù)傳送,采集和拼接并行處理,需要兩個(gè)指紋幀Buffer來存儲(chǔ)采集到的指紋幀數(shù)據(jù),其中一個(gè)供采集使用,另外一個(gè)供拼接使用,在進(jìn)行完一次采集和拼接的并行操作后,對(duì)兩個(gè)Buffer進(jìn)行交換使用。
指紋采集的結(jié)束有兩種條件,一種為手指離開傳感器(即不再檢測(cè)到指紋),另一種為達(dá)到設(shè)定的最大指紋有效高度(這里設(shè)為288像素,可包含較大指紋有效面積)。當(dāng)達(dá)到上述條件的任何一個(gè)時(shí),可判斷指紋采集結(jié)束。指紋采集和拼接完成后,對(duì)拼接完成后的指紋圖像進(jìn)行有效性判斷,如果為有效指紋圖像,則進(jìn)行輸出,否則放棄并給出出錯(cuò)提醒。
2.2 指紋拼接
由于環(huán)境的差異,采集到的指紋序列可能引入一定的噪聲。為了消除噪聲帶來的差異,需要對(duì)指紋序列進(jìn)行2D高斯濾波,模板為:
濾波后的指紋序列,根據(jù)灰度紋理信息進(jìn)行匹配搜索,由于采集環(huán)境的差異,需進(jìn)行一定處理以適應(yīng)灰度值差異。這里采用MAD準(zhǔn)則對(duì)第N幀和第N-1幀進(jìn)行匹配,具體如下:
式中H和W分別為灰度匹配區(qū)的像素高度和寬度,PN(i,j)為第N幀指紋在(i,j)處的灰度值,PN-1(i+u,j+v)為第N-1幀指紋經(jīng)過(u,v)位移后在(i,j)處的灰度值,pmeanN和pmeanN-1為第N幀和第N-1幀的圖像灰度平均值。為了節(jié)約存儲(chǔ)空間,第N-1幀指紋序列從目標(biāo)指紋圖像緩存中提取。指紋拼接流程如圖3所示。
評(píng)論