0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在X86架構的嵌入式系統(tǒng)上部署掌紋識別算法

jf_NsPBt3VS ? 來源:風火輪技術團隊 ? 2023-11-10 16:53 ? 次閱讀

當今世界,隨著科技的不斷進步,生物識別技術已經成為了安全和身份驗證領域的熱門話題之一。如:人臉識別,指紋識別,虹膜比對,掌紋識別等。其中,掌紋識別技術作為一種生物特征識別方法,因其高度精準和高度安全性而備受關注。在這一背景下,越來越多的應用領域開始采用掌紋識別技術,包括金融、安全、物流和智能門禁等。本文將介紹如何在X86架構的嵌入式系統(tǒng)上部署一個開源的掌紋識別算法。

本文我們主要描述掌紋識別開源庫:EDCC-Palmprint-Recognition,并且運行在風火輪科技的youyeetoo X1開發(fā)板(x86開發(fā)板)。

youyeetoo X1 是一款由深圳風火輪科技推出的x86架構單板電腦(SBC),可運行全功能版的windows和Linux, 具備低成本,高性能的特點(11代Intel CPU N5105),它主要面向AIOT和自動控制 市場,尺寸只有手掌大(115 * 75mm),接口卻非常豐富,內置了3路串口UART,2路HDMI,6路USB口、1路I2C、1路SPI、5路GPIO等 AIOT物聯(lián)網常用的接口,還能接7寸MIPI觸摸屏。

9f1e227a-7eeb-11ee-939d-92fbcf53809c.png

EDCC-Palmprint-Recognition開源庫鏈接:https://github.com/Leosocy/EDCC-Palmprint-Recognition

9f2e4f74-7eeb-11ee-939d-92fbcf53809c.png

掌紋識別概念

掌紋識別優(yōu)勢

「掌紋識別技術相對于其他生物特征識別方法具有獨特的優(yōu)勢,使其成為廣泛采用的生物特征認證方式。以下是一些與指紋、人臉、虹膜、DNA、簽名以及步態(tài)等其他生物特征識別技術相比的優(yōu)勢:」

相對于指紋的優(yōu)勢:

更大的識別面積:掌紋的識別面積比指紋更大,包含的信息更豐富,這可以提高準確性。

更不易受損:掌紋相對穩(wěn)定,不容易受損或受外界因素的影響,具有長期穩(wěn)定性。

較低的圖像分辨率要求:相對較低的圖像分辨率要求意味著采集設備的造價更低,相對經濟。

相對于人臉的優(yōu)勢:

不受外部因素的影響:掌紋不受眼鏡、表情、妝容等因素的影響,其穩(wěn)定性更高。

用戶友好:用戶接受度較高,因為掌紋的采集方式通常更加友好,無需特殊的準備或配合。

相對于虹膜和DNA的優(yōu)勢:

較低的采集設備造價:與虹膜掃描儀或DNA采集設備相比,掌紋的采集設備成本更低,更易于部署。

相對于簽名和步態(tài)等行為特征的優(yōu)勢:

不受習慣的影響:掌紋識別不受個體行為習慣的影響,不會因人們的簽名或步態(tài)習慣而變化。

特征穩(wěn)定:掌紋特征不會隨著時間改變,從而提高了長期識別的準確性。

掌紋識別的基本方法:

數(shù)據(jù)庫創(chuàng)建通過采集注冊樣本,進行預處理、特征提取工作,之后形成數(shù)據(jù)庫

特征庫檢索通過采集待測試的樣本,在預處理和提取特征之后與掌紋數(shù)據(jù)庫中的數(shù)據(jù)進行匹配,得到該待測樣本的類別。

掌紋特征提取方法:

「掌紋特征提取方法主要分為四大類,分別為基于結構的方法、基于統(tǒng)計的方法、基于子空間的方法以及基于編碼的方法?!?/strong>

基于結構的方法主要是利用掌紋中主線和褶皺的方向和位置信息實現(xiàn)掌紋識別的方法,此類方法最為直觀。但是無論是哪一種邊緣檢測算子都無法提取出所有的紋線,所以此類方法實用性很差,已經被人們漸漸放棄。

基于統(tǒng)計的方法主要是利用統(tǒng)計特征,例如均值、方差等組成一組用來描述掌紋圖像的特征向量,可以根據(jù)是否分塊這一特性分為局部統(tǒng)計變量方法和全局統(tǒng)計量方法。基于局部統(tǒng)計量的方法通過將圖像分成若干小塊,分別統(tǒng)計每個小塊的統(tǒng)計信息,然后將這些統(tǒng)計信息組合表示為整個掌紋的統(tǒng)計特征向量,如采用傅里葉變換、小波變換等方式獲得掌紋圖像的每個分塊統(tǒng)計信息并進行識別。

基于子空間的方法是將原始掌紋圖像看做普通的圖片模式,將圖片對應的高維矩陣通過投影映射運算轉化為低維向量或矩陣。根據(jù)投影變換的實現(xiàn)方式,分為線性子空間法和非線性子空間法。常用的子空間特征提取方法有主成分分析法 (PCA),F(xiàn)isherPalm 方法,BDPCA (Bi-directional PCA) 等。

基于編碼的方法是將掌紋圖像看作紋理圖像,根據(jù)某些規(guī)則對紋理圖像進行編碼。Zhang 等提出了一種名為 PalmCode 的編碼方法,該方法首先采用 2DGabor 對圖像進行濾波處理,然后根據(jù)濾波結果的實部和虛部的正負來進行編碼。Kong 等提出使用六個方向的 Gabor 濾波器對掌紋圖像濾波,并對幅值最小的方向編碼,稱為競爭編碼 (Competitive code)。由于競爭編碼考察了掌紋圖像的方向信息,對光照不敏感,因此識別精度很高。

EDCC算法

「EDCC算法:它是一個高效、準確的掌紋識別算法?!?/strong>

掌紋充滿了線條和紋理特征,具備豐富的方向信息。因此,基于方向編碼被認為是最有效的掌紋特征提取方法。而競爭編碼是辨識度極高的編碼方法之一,它使用不同方向的濾波器與掌紋圖像進行卷積,之后根據(jù)一定的編碼規(guī)則對掌紋圖像進行編碼。

EDCC算法有以下關鍵點:

通過圖像增強算子處理原始掌紋圖像,使得紋線更加突出,提取的方向更加準確。

使用一組方向不同的 2DGabor 小波濾波器對圖像進行濾波。

選擇濾波響應值最大和次大的方向作為該點所在紋線的主要方向和次要方向,進而進行編碼。

EDCC部署

準備工作

youyeetoo X1開發(fā)板需要安裝ubuntu系統(tǒng),ubuntu安裝過程可以參考文章:<風火輪X86主板youyeetoo X1:部署MQTT Broker>

OpenCV安裝

EDCC算法依賴OpenCV,支持版本為OpenCV 3.4或者OpenCV 4.5兩個版本。

安裝OpenCV依賴庫:

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

編譯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..

9f7949ac-7eeb-11ee-939d-92fbcf53809c.png

指定make構建工程:

rice@rice:~/edcc/opencv-4.5.0/build$sudomake-j6

9f84fe00-7eeb-11ee-939d-92fbcf53809c.png

安裝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

在文件末尾添加一下內容并保存

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#查看版本號
rice@rice:~/edcc/opencv-4.5.0/build$pkg-config--libsopencv4#查看libs庫
9f90a638-7eeb-11ee-939d-92fbcf53809c.jpg

環(huán)境搭建

下載源碼,EDCC算法的代碼托管在github上,鏈接:https://github.com/Leosocy/EDCC-Palmprint-Recognition.git,我們通過git克隆下來:

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)建構建目錄,好處:構建過程的文件放在統(tǒng)一的目錄下:

rice@rice:~/edcc$cdEDCC-Palmprint-Recognition
rice@rice:~/edcc/EDCC-Palmprint-Recognition$mkdir-pbuild&&cdbuild
rice@rice:~/edcc/EDCC-Palmprint-Recognition/build$

構建EDCC算法代碼

rice@rice:~/edcc/EDCC-Palmprint-Recognition/build$cmake..
rice@rice:~/edcc/EDCC-Palmprint-Recognition/build$sudomakeinstall

9f9b8a30-7eeb-11ee-939d-92fbcf53809c.png

安裝EDCC python 的包

rice@rice:~/edcc/EDCC-Palmprint-Recognition$cdpypackage
rice@rice:~/edcc/EDCC-Palmprint-Recognition/pypackage$sudopython3setup.pyinstall

9fcc5ea8-7eeb-11ee-939d-92fbcf53809c.png

以上步驟就把EDCC的算法環(huán)境搭建完成

EDCC算法驗證

下載測試用的掌紋圖片,EDCC算法開源庫提供下載腳本,用于我們驗證功能。

rice@rice:~/edcc/EDCC-Palmprint-Recognition/$cdpalmprint_data
rice@rice:~/edcc/EDCC-Palmprint-Recognition/palmprint_data$./download.sh

9ffe1e66-7eeb-11ee-939d-92fbcf53809c.png

EDCC提供了三種實例:C代碼實例,C++代碼實例,python代碼實例。我們驗證功能,采用EDCC的python代碼實例。

python代碼實例中比對的圖片是a_01.bmp和b_01.bmp

a01bd6fe-7eeb-11ee-939d-92fbcf53809c.png

比對的兩張圖片如下:

a03a5520-7eeb-11ee-939d-92fbcf53809c.jpg

執(zhí)行命令驗證,兩張掌紋圖片的比對得分為:0.08799048751486326

rice@rice:~/edcc/EDCC-Palmprint-Recognition/$cd./examples/py_example
rice@rice:~/edcc/EDCC-Palmprint-Recognition/examples/py_example$python3example.py
a03f20be-7eeb-11ee-939d-92fbcf53809c.jpg

總結

EDCC這個開源庫的開源協(xié)議為:MIT,所以使用起來不用當心。

EDCC的原理,其作者也提供了詳細的說明

在youyeetoo部署AI能力,無疑是一個不錯的選擇。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式系統(tǒng)

    關注

    41

    文章

    3551

    瀏覽量

    129104
  • 算法
    +關注

    關注

    23

    文章

    4587

    瀏覽量

    92500
  • Linux
    +關注

    關注

    87

    文章

    11207

    瀏覽量

    208712
  • 開發(fā)板
    +關注

    關注

    25

    文章

    4895

    瀏覽量

    97058
  • X86架構
    +關注

    關注

    8

    文章

    45

    瀏覽量

    23620

原文標題:風火輪X86主板youyeetoo X1:部署掌紋識別能力

文章出處:【微信號:風火輪技術團隊,微信公眾號:風火輪技術團隊】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    x86架構和arm架構的區(qū)別

    X86架構X86指令集,它屬于CISC指令集。ARM架構是ARM指令集,屬于RISC指令集。X86是馮若依曼結構,ARM是哈弗結構,這個不
    發(fā)表于 09-27 14:40

    適用于x86架構的快速啟動步驟是什么?

    x86架構通常會喚起人們對家用電腦或企業(yè)服務器的思索。這并不出人意料,因為x86處理器的功耗通常較大。最近,英特爾公司開始以嵌入式、低功耗和低成本市場為目標,并推出了基于
    發(fā)表于 03-20 06:38

    ARM架構系統(tǒng)X86架構系統(tǒng)的特性有什么不同?

    ARM的架構相較于x86有哪些特點?ARM架構系統(tǒng)X86架構
    發(fā)表于 06-16 09:05

    Powerpc架構X86架構的區(qū)別

    目錄1、ARM1.1 ARM歷史1.2 ARM內核系列2、MIPS應用范圍發(fā)展歷史3、PowerPC三巨頭4、X86架構X86歷史5、PowerPC架構相比于ARM的優(yōu)勢6、Power
    發(fā)表于 07-26 06:16

    x86架構的最大特色在哪

    x86系:x86架構的最大特色在于可以兼容Windows操作系統(tǒng),現(xiàn)已成為了業(yè)界的一種標準。芯片巨頭美國英特爾(Intel)一家獨大?!ū贝蟊娭?、兆芯、海光)兆芯:上海兆芯集成電路
    發(fā)表于 07-27 08:14

    arm架構x86架構有什么區(qū)別

    什么叫arm架構?x86架構是由哪些部分組成的?arm架構x86架構有什么區(qū)別?
    發(fā)表于 10-25 08:25

    如何選擇x86嵌入式主板器件

    X86架構的CPU有分為消費類和嵌入式類的,而CPU的三大廠家INTEL,AMD。
    發(fā)表于 05-11 08:01 ?2628次閱讀

    X86架構和ARM架構

      ARM架構是一個32位元精簡指令集中央處理器架構,x86架構指的是特定微處理器執(zhí)行的一些計算機語言指令集。X86
    發(fā)表于 11-30 12:48
    <b class='flag-5'>X86</b><b class='flag-5'>架構</b>和ARM<b class='flag-5'>架構</b>

    x86架構嵌入式系統(tǒng)Windows Embeded 8預覽版發(fā)布

    去年11月,微軟公布了“智能系統(tǒng)”產品路線圖,作為其中一部分,微軟今天面向x86架構公開了嵌入式系統(tǒng)Windows Embedded Sta
    發(fā)表于 03-07 09:54 ?2016次閱讀

    一文看懂arm架構x86架構有什么區(qū)別

    本文主要介紹的是arm架構x86架構的區(qū)別,首先介紹了ARM架構圖,其次介紹了x86架構圖,最
    的頭像 發(fā)表于 05-16 14:19 ?31.1w次閱讀
    一文看懂arm<b class='flag-5'>架構</b>和<b class='flag-5'>x86</b><b class='flag-5'>架構</b>有什么區(qū)別

    嵌入式應用程序:遷移到Intel x86架構

    嵌入式應用 - 遷移到Intel的x86架構
    的頭像 發(fā)表于 11-07 06:49 ?3751次閱讀

    ARM架構X86架構二者之間的區(qū)別是什么

    許多嵌入式系統(tǒng)設計。由于節(jié)能的特點,ARM處理器非常適用于移動通訊領域,符合其主要設計目標為低耗電的特性。 x86架構 X86
    發(fā)表于 01-06 10:49 ?6988次閱讀

    X86架構與Arm架構的區(qū)別

    X86架構和ARM架構是主流的兩種CPU架構,X86架構的CPU是PC服務器行業(yè)的老大,ARM
    的頭像 發(fā)表于 06-16 12:50 ?2.3w次閱讀
    <b class='flag-5'>X86</b><b class='flag-5'>架構</b>與Arm<b class='flag-5'>架構</b>的區(qū)別

    風火輪X86主板youyeetoo X1:部署掌紋識別能力

    安全性而備受關注。在這一背景下,越來越多的應用領域開始采用掌紋識別技術,包括金融、安全、物流和智能門禁等。本文將介紹如何在X86架構
    的頭像 發(fā)表于 11-10 08:36 ?855次閱讀
    風火輪<b class='flag-5'>X86</b>主板youyeetoo <b class='flag-5'>X</b>1:<b class='flag-5'>部署</b><b class='flag-5'>掌紋</b><b class='flag-5'>識別</b>能力

    arm架構x86架構區(qū)別 linux是x86還是arm

    、ARM架構x86架構的概述 1.1 ARM架構 ARM(Advanced RISC Machines)架構是一種精簡指令集計算機(RIS
    的頭像 發(fā)表于 01-30 13:46 ?1.6w次閱讀