當(dāng)今世界,隨著科技的不斷進(jìn)步,生物識(shí)別技術(shù)已經(jīng)成為了安全和身份驗(yàn)證領(lǐng)域的熱門(mén)話題之一。如:人臉識(shí)別,指紋識(shí)別,虹膜比對(duì),掌紋識(shí)別等。其中,掌紋識(shí)別技術(shù)作為一種生物特征識(shí)別方法,因其高度精準(zhǔn)和高度安全性而備受關(guān)注。在這一背景下,越來(lái)越多的應(yīng)用領(lǐng)域開(kāi)始采用掌紋識(shí)別技術(shù),包括金融、安全、物流和智能門(mén)禁等。本文將介紹如何在X86架構(gòu)的嵌入式系統(tǒng)上部署一個(gè)開(kāi)源的掌紋識(shí)別算法。
本文我們主要描述掌紋識(shí)別開(kāi)源庫(kù):EDCC-Palmprint-Recognition,并且運(yùn)行在風(fēng)火輪科技的youyeetoo X1開(kāi)發(fā)板(x86開(kāi)發(fā)板)。
youyeetoo X1是一款由深圳風(fēng)火輪科技推出的x86架構(gòu)單板電腦(SBC),可運(yùn)行全功能版的windows和Linux, 具備低成本,高性能的特點(diǎn)(11代Intel CPU N5105),它主要面向AIOT和自動(dòng)控制 市場(chǎng),尺寸只有手掌大(115 * 75mm),接口卻非常豐富,內(nèi)置了3路串口UART,2路HDMI,6路USB口、1路I2C、1路SPI、5路GPIO等 AIOT物聯(lián)網(wǎng)常用的接口,還能接7寸MIPI觸摸屏。
EDCC-Palmprint-Recognition開(kāi)源庫(kù)鏈接:https://github.com/Leosocy/EDCC-Palmprint-Recognition
掌紋識(shí)別概念
掌紋識(shí)別優(yōu)勢(shì)
「掌紋識(shí)別技術(shù)相對(duì)于其他生物特征識(shí)別方法具有獨(dú)特的優(yōu)勢(shì),使其成為廣泛采用的生物特征認(rèn)證方式。以下是一些與指紋、人臉、虹膜、DNA、簽名以及步態(tài)等其他生物特征識(shí)別技術(shù)相比的優(yōu)勢(shì):」
相對(duì)于指紋的優(yōu)勢(shì):
更大的識(shí)別面積:掌紋的識(shí)別面積比指紋更大,包含的信息更豐富,這可以提高準(zhǔn)確性。
更不易受損:掌紋相對(duì)穩(wěn)定,不容易受損或受外界因素的影響,具有長(zhǎng)期穩(wěn)定性。
較低的圖像分辨率要求:相對(duì)較低的圖像分辨率要求意味著采集設(shè)備的造價(jià)更低,相對(duì)經(jīng)濟(jì)。
相對(duì)于人臉的優(yōu)勢(shì):
不受外部因素的影響:掌紋不受眼鏡、表情、妝容等因素的影響,其穩(wěn)定性更高。
用戶(hù)友好:用戶(hù)接受度較高,因?yàn)檎萍y的采集方式通常更加友好,無(wú)需特殊的準(zhǔn)備或配合。
相對(duì)于虹膜和DNA的優(yōu)勢(shì):
較低的采集設(shè)備造價(jià):與虹膜掃描儀或DNA采集設(shè)備相比,掌紋的采集設(shè)備成本更低,更易于部署。
相對(duì)于簽名和步態(tài)等行為特征的優(yōu)勢(shì):
不受習(xí)慣的影響:掌紋識(shí)別不受個(gè)體行為習(xí)慣的影響,不會(huì)因人們的簽名或步態(tài)習(xí)慣而變化。
特征穩(wěn)定:掌紋特征不會(huì)隨著時(shí)間改變,從而提高了長(zhǎng)期識(shí)別的準(zhǔn)確性。
掌紋識(shí)別的基本方法:
數(shù)據(jù)庫(kù)創(chuàng)建通過(guò)采集注冊(cè)樣本,進(jìn)行預(yù)處理、特征提取工作,之后形成數(shù)據(jù)庫(kù)
特征庫(kù)檢索通過(guò)采集待測(cè)試的樣本,在預(yù)處理和提取特征之后與掌紋數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行匹配,得到該待測(cè)樣本的類(lèi)別。
掌紋特征提取方法:
「掌紋特征提取方法主要分為四大類(lèi),分別為基于結(jié)構(gòu)的方法、基于統(tǒng)計(jì)的方法、基于子空間的方法以及基于編碼的方法?!?/strong>
基于結(jié)構(gòu)的方法主要是利用掌紋中主線和褶皺的方向和位置信息實(shí)現(xiàn)掌紋識(shí)別的方法,此類(lèi)方法最為直觀。但是無(wú)論是哪一種邊緣檢測(cè)算子都無(wú)法提取出所有的紋線,所以此類(lèi)方法實(shí)用性很差,已經(jīng)被人們漸漸放棄。
基于統(tǒng)計(jì)的方法主要是利用統(tǒng)計(jì)特征,例如均值、方差等組成一組用來(lái)描述掌紋圖像的特征向量,可以根據(jù)是否分塊這一特性分為局部統(tǒng)計(jì)變量方法和全局統(tǒng)計(jì)量方法。基于局部統(tǒng)計(jì)量的方法通過(guò)將圖像分成若干小塊,分別統(tǒng)計(jì)每個(gè)小塊的統(tǒng)計(jì)信息,然后將這些統(tǒng)計(jì)信息組合表示為整個(gè)掌紋的統(tǒng)計(jì)特征向量,如采用傅里葉變換、小波變換等方式獲得掌紋圖像的每個(gè)分塊統(tǒng)計(jì)信息并進(jìn)行識(shí)別。
基于子空間的方法是將原始掌紋圖像看做普通的圖片模式,將圖片對(duì)應(yīng)的高維矩陣通過(guò)投影映射運(yùn)算轉(zhuǎn)化為低維向量或矩陣。根據(jù)投影變換的實(shí)現(xiàn)方式,分為線性子空間法和非線性子空間法。常用的子空間特征提取方法有主成分分析法 (PCA),F(xiàn)isherPalm 方法,BDPCA (Bi-directional PCA) 等。
基于編碼的方法是將掌紋圖像看作紋理圖像,根據(jù)某些規(guī)則對(duì)紋理圖像進(jìn)行編碼。Zhang 等提出了一種名為 PalmCode 的編碼方法,該方法首先采用 2DGabor 對(duì)圖像進(jìn)行濾波處理,然后根據(jù)濾波結(jié)果的實(shí)部和虛部的正負(fù)來(lái)進(jìn)行編碼。Kong 等提出使用六個(gè)方向的 Gabor 濾波器對(duì)掌紋圖像濾波,并對(duì)幅值最小的方向編碼,稱(chēng)為競(jìng)爭(zhēng)編碼 (Competitive code)。由于競(jìng)爭(zhēng)編碼考察了掌紋圖像的方向信息,對(duì)光照不敏感,因此識(shí)別精度很高。
EDCC算法
「EDCC算法:它是一個(gè)高效、準(zhǔn)確的掌紋識(shí)別算法?!?/strong>
掌紋充滿了線條和紋理特征,具備豐富的方向信息。因此,基于方向編碼被認(rèn)為是最有效的掌紋特征提取方法。而競(jìng)爭(zhēng)編碼是辨識(shí)度極高的編碼方法之一,它使用不同方向的濾波器與掌紋圖像進(jìn)行卷積,之后根據(jù)一定的編碼規(guī)則對(duì)掌紋圖像進(jìn)行編碼。
EDCC算法有以下關(guān)鍵點(diǎn):
通過(guò)圖像增強(qiáng)算子處理原始掌紋圖像,使得紋線更加突出,提取的方向更加準(zhǔn)確。
使用一組方向不同的 2DGabor 小波濾波器對(duì)圖像進(jìn)行濾波。
選擇濾波響應(yīng)值最大和次大的方向作為該點(diǎn)所在紋線的主要方向和次要方向,進(jìn)而進(jìn)行編碼。
EDCC部署
準(zhǔn)備工作
youyeetoo X1開(kāi)發(fā)板需要安裝ubuntu系統(tǒng),ubuntu安裝過(guò)程可以參考文章:<風(fēng)火輪X86主板youyeetoo X1:部署MQTT Broker>
OpenCV安裝
EDCC算法依賴(lài)OpenCV,支持版本為OpenCV 3.4或者OpenCV 4.5兩個(gè)版本。
安裝OpenCV依賴(lài)庫(kù):
rice@rice:~/edcc$sudoapt-getupdate rice@rice:~/edcc$sudoapt-getinstallbuild-essential rice@rice:~/edcc$sudoapt-getinstallcmakegitlibgtk2.0-devpkg-configlibavcodec-devlibavformat-devlibswscale-dev rice@rice:~/edcc$sudoapt-getinstallpython-devpython-numpylibtbb2libtbb-devlibjpeg-devlibpng-devlibtiff-devlibjasper-devlibdc1394-22-dev
下載安裝OpenCV,下載鏈接:https://github.com/opencv/opencv/archive/4.5.0.zip
編譯OpenCV
執(zhí)行cmake指令,生成makefile:
rice@rice:~/edcc$cdopencv-4.5.0/ rice@rice:~/edcc/opencv-4.5.0$mkdir-pbuild&&cdbuild rice@rice:~/edcc/opencv-4.5.0/build$cmake-DCMAKE_INSTALL_PREFIX=/usr/local-DCMAKE_BUILD_TYPE=Release-DOPENCV_GENERATE_PKGCONFIG=ON-DOPENCV_ENABLE_NONFREE=True..
指定make構(gòu)建工程:
rice@rice:~/edcc/opencv-4.5.0/build$sudomake-j6
安裝OpenCV
rice@rice:~/edcc/opencv-4.5.0/build$sudomakeinstall
環(huán)境配置
修改etc/bash.bashrc
rice@rice:~/edcc/opencv-4.5.0/build$sudogedit/etc/bash.bashrc
在文件末尾添加一下內(nèi)容并保存
rice@rice:~/edcc/opencv-4.5.0/build$PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig rice@rice:~/edcc/opencv-4.5.0/build$exportPKG_CONFIG_PATH
更新環(huán)境配置
sudoupdatedb source/etc/bash.bashrc
檢查OpenCV安裝情況
rice@rice:~/edcc/opencv-4.5.0/build$pkg-config--modversionopencv4#查看版本號(hào) rice@rice:~/edcc/opencv-4.5.0/build$pkg-config--libsopencv4#查看libs庫(kù)
環(huán)境搭建
下載源碼,EDCC算法的代碼托管在github上,鏈接:https://github.com/Leosocy/EDCC-Palmprint-Recognition.git,我們通過(guò)git克隆下來(lái):
rice@rice:~/edcc$gitclonehttps://github.com/Leosocy/EDCC-Palmprint-Recognition.git Cloninginto'EDCC-Palmprint-Recognition'... remote:Enumeratingobjects:1188,done. remote:Countingobjects:100%(44/44),done. remote:Compressingobjects:100%(39/39),done. remote:Total1188(delta6),reused23(delta4),pack-reused1144 Receivingobjects:100%(1188/1188),193.15KiB|78.00KiB/s,done. Resolvingdeltas:100%(556/556),done. rice@rice:~/edcc$
創(chuàng)建構(gòu)建目錄,好處:構(gòu)建過(guò)程的文件放在統(tǒng)一的目錄下:
rice@rice:~/edcc$cdEDCC-Palmprint-Recognition rice@rice:~/edcc/EDCC-Palmprint-Recognition$mkdir-pbuild&&cdbuild rice@rice:~/edcc/EDCC-Palmprint-Recognition/build$
構(gòu)建EDCC算法代碼
rice@rice:~/edcc/EDCC-Palmprint-Recognition/build$cmake.. rice@rice:~/edcc/EDCC-Palmprint-Recognition/build$sudomakeinstall
安裝EDCC python 的包
rice@rice:~/edcc/EDCC-Palmprint-Recognition$cdpypackage rice@rice:~/edcc/EDCC-Palmprint-Recognition/pypackage$sudopython3setup.pyinstall
以上步驟就把EDCC的算法環(huán)境搭建完成
EDCC算法驗(yàn)證
下載測(cè)試用的掌紋圖片,EDCC算法開(kāi)源庫(kù)提供下載腳本,用于我們驗(yàn)證功能。
rice@rice:~/edcc/EDCC-Palmprint-Recognition/$cdpalmprint_data rice@rice:~/edcc/EDCC-Palmprint-Recognition/palmprint_data$./download.sh
EDCC提供了三種實(shí)例:C代碼實(shí)例,C++代碼實(shí)例,python代碼實(shí)例。我們驗(yàn)證功能,采用EDCC的python代碼實(shí)例。
python代碼實(shí)例中比對(duì)的圖片是a_01.bmp和b_01.bmp
比對(duì)的兩張圖片如下:
執(zhí)行命令驗(yàn)證,兩張掌紋圖片的比對(duì)得分為:0.08799048751486326
rice@rice:~/edcc/EDCC-Palmprint-Recognition/$cd./examples/py_example rice@rice:~/edcc/EDCC-Palmprint-Recognition/examples/py_example$python3example.py
總結(jié)
EDCC這個(gè)開(kāi)源庫(kù)的開(kāi)源協(xié)議為:MIT,所以使用起來(lái)不用當(dāng)心。
EDCC的原理,其作者也提供了詳細(xì)的說(shuō)明:https://blog.leosocy.top/posts/4354/
在youyeetoo部署AI能力,無(wú)疑是一個(gè)不錯(cuò)的選擇。
審核編輯 黃宇
-
主板
+關(guān)注
關(guān)注
53文章
1875瀏覽量
70765 -
開(kāi)源
+關(guān)注
關(guān)注
3文章
3309瀏覽量
42471 -
X86
+關(guān)注
關(guān)注
5文章
294瀏覽量
43448 -
掌紋識(shí)別
+關(guān)注
關(guān)注
0文章
16瀏覽量
10896
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論