0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在X86架构的嵌入式系统上部署掌纹识别算法

jf_NsPBt3VS 来源:风火轮技术团队 2023-11-10 16:53 次阅读

当今世界,随着科技的不断进步,生物识别技术已经成为了安全和身份验证领域的热门话题之一。如:人脸识别,指纹识别,虹膜比对,掌纹识别等。其中,掌纹识别技术作为一种生物特征识别方法,因其高度精准和高度安全性而备受关注。在这一背景下,越来越多的应用领域开始采用掌纹识别技术,包括金融、安全、物流和智能门禁等。本文将介绍如何在X86架构的嵌入式系统上部署一个开源的掌纹识别算法

本文我们主要描述掌纹识别开源库:EDCC-Palmprint-Recognition,并且运行在风火轮科技的youyeetoo X1开发板(x86开发板)

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物联网常用的接口,还能接7寸MIPI触摸屏。

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

EDCC-Palmprint-Recognition开源库链接:https://github.com/Leosocy/EDCC-Palmprint-Recognition

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

掌纹识别概念

掌纹识别优势

「掌纹识别技术相对于其他生物特征识别方法具有独特的优势,使其成为广泛采用的生物特征认证方式。以下是一些与指纹、人脸、虹膜、DNA、签名以及步态等其他生物特征识别技术相比的优势:」

相对于指纹的优势:

更大的识别面积:掌纹的识别面积比指纹更大,包含的信息更丰富,这可以提高准确性。

更不易受损:掌纹相对稳定,不容易受损或受外界因素的影响,具有长期稳定性。

较低的图像分辨率要求:相对较低的图像分辨率要求意味着采集设备的造价更低,相对经济。

相对于人脸的优势:

不受外部因素的影响:掌纹不受眼镜、表情、妆容等因素的影响,其稳定性更高。

用户友好:用户接受度较高,因为掌纹的采集方式通常更加友好,无需特殊的准备或配合。

相对于虹膜和DNA的优势:

较低的采集设备造价:与虹膜扫描仪或DNA采集设备相比,掌纹的采集设备成本更低,更易于部署。

相对于签名和步态等行为特征的优势:

不受习惯的影响:掌纹识别不受个体行为习惯的影响,不会因人们的签名或步态习惯而变化。

特征稳定:掌纹特征不会随着时间改变,从而提高了长期识别的准确性。

掌纹识别的基本方法:

数据库创建通过采集注册样本,进行预处理、特征提取工作,之后形成数据库

特征库检索通过采集待测试的样本,在预处理和提取特征之后与掌纹数据库中的数据进行匹配,得到该待测样本的类别。

掌纹特征提取方法:

「掌纹特征提取方法主要分为四大类,分别为基于结构的方法、基于统计的方法、基于子空间的方法以及基于编码的方法。」

基于结构的方法主要是利用掌纹中主线和褶皱的方向和位置信息实现掌纹识别的方法,此类方法最为直观。但是无论是哪一种边缘检测算子都无法提取出所有的纹线,所以此类方法实用性很差,已经被人们渐渐放弃。

基于统计的方法主要是利用统计特征,例如均值、方差等组成一组用来描述掌纹图像的特征向量,可以根据是否分块这一特性分为局部统计变量方法和全局统计量方法。基于局部统计量的方法通过将图像分成若干小块,分别统计每个小块的统计信息,然后将这些统计信息组合表示为整个掌纹的统计特征向量,如采用傅里叶变换、小波变换等方式获得掌纹图像的每个分块统计信息并进行识别。

基于子空间的方法是将原始掌纹图像看做普通的图片模式,将图片对应的高维矩阵通过投影映射运算转化为低维向量或矩阵。根据投影变换的实现方式,分为线性子空间法和非线性子空间法。常用的子空间特征提取方法有主成分分析法 (PCA),FisherPalm 方法,BDPCA (Bi-directional PCA) 等。

基于编码的方法是将掌纹图像看作纹理图像,根据某些规则对纹理图像进行编码。Zhang 等提出了一种名为 PalmCode 的编码方法,该方法首先采用 2DGabor 对图像进行滤波处理,然后根据滤波结果的实部和虚部的正负来进行编码。Kong 等提出使用六个方向的 Gabor 滤波器对掌纹图像滤波,并对幅值最小的方向编码,称为竞争编码 (Competitive code)。由于竞争编码考察了掌纹图像的方向信息,对光照不敏感,因此识别精度很高。

EDCC算法

「EDCC算法:它是一个高效、准确的掌纹识别算法。」

掌纹充满了线条和纹理特征,具备丰富的方向信息。因此,基于方向编码被认为是最有效的掌纹特征提取方法。而竞争编码是辨识度极高的编码方法之一,它使用不同方向的滤波器与掌纹图像进行卷积,之后根据一定的编码规则对掌纹图像进行编码。

EDCC算法有以下关键点:

通过图像增强算子处理原始掌纹图像,使得纹线更加突出,提取的方向更加准确。

使用一组方向不同的 2DGabor 小波滤波器对图像进行滤波。

选择滤波响应值最大和次大的方向作为该点所在纹线的主要方向和次要方向,进而进行编码。

EDCC部署

准备工作

youyeetoo X1开发板需要安装ubuntu系统,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

执行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

环境配置

修改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

更新环境配置

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

环境搭建

下载源码,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$

创建构建目录,好处:构建过程的文件放在统一的目录下:

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的算法环境搭建完成

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

执行命令验证,两张掌纹图片的比对得分为: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这个开源库的开源协议为:MIT,所以使用起来不用当心。

EDCC的原理,其作者也提供了详细的说明

在youyeetoo部署AI能力,无疑是一个不错的选择。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    40

    文章

    3436

    浏览量

    128229
  • 算法
    +关注

    关注

    23

    文章

    4458

    浏览量

    90761
  • Linux
    +关注

    关注

    87

    文章

    10992

    浏览量

    206744
  • 开发板
    +关注

    关注

    25

    文章

    4437

    浏览量

    94082
  • X86架构
    +关注

    关注

    8

    文章

    38

    浏览量

    23464

原文标题:风火轮X86主板youyeetoo X1:部署掌纹识别能力

文章出处:【微信号:风火轮技术团队,微信公众号:风火轮技术团队】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    [X86架构和ARM架构,在工业领域的优势争霸] X86与ARM谁更胜...

    [X86架构和ARM架构,在工业领域的优势争霸]X86与ARM谁更胜一筹? X86作为经典的CISC指令集,其
    发表于 08-01 10:45

    [X86架构和ARM架构,在工业领域的优势争霸]

    [X86架构和ARM架构,在工业领域的优势争霸]X86与ARM谁更胜一筹? X86作为经典的CISC指令集,其
    发表于 08-04 14:45

    X86硬件设计系列知识分享

    论坛有很多嵌入式的技术资料,却几乎没有X86硬件(PC,Server 等等)设计技术资料。本人从事X86硬件及系统设计多年,总结了系列X86
    发表于 10-17 12:18

    x86架构和arm架构的区别

    X86架构X86指令集,它属于CISC指令集。ARM架构是ARM指令集,属于RISC指令集。X86是冯若依曼结构,ARM是哈弗结构,这个不
    发表于 09-27 14:40

    ARM架构X86架构有什么区别?

    我们就ARM架构系统X86架构系统的特性进行一个系统分析,方便用户在选择
    发表于 03-20 06:34

    适用于x86架构的快速启动步骤是什么?

    x86架构通常会唤起人们对家用电脑或企业服务器的思索。这并不出人意料,因为x86处理器的功耗通常较大。最近,英特尔公司开始以嵌入式、低功耗和低成本市场为目标,并推出了基于
    发表于 03-20 06:38

    ARM架构系统X86架构系统的特性有什么不同?

    ARM的架构相较于x86有哪些特点?ARM架构系统X86架构
    发表于 06-16 09:05

    Powerpc架构X86架构的区别

    目录1、ARM1.1 ARM历史1.2 ARM内核系列2、MIPS应用范围发展历史3、PowerPC三巨头4、X86架构X86历史5、PowerPC架构相比于ARM的优势6、Power
    发表于 07-26 06:16

    x86架构的最大特色在哪

    x86系:x86架构的最大特色在于可以兼容Windows操作系统,现已成为了业界的一种标准。芯片巨头美国英特尔(Intel)一家独大。——(北大众志、兆芯、海光)兆芯:上海兆芯集成电路
    发表于 07-27 08:14

    相较于x86架构,华为鲲鹏处理器的优势有哪些

    从大型机到 x86 架构,计算的下一个拐点在哪?相较于x86架构,华为鲲鹏处理器的优势有哪些?
    发表于 10-25 06:39

    arm架构x86架构有什么区别

    什么叫arm架构x86架构是由哪些部分组成的?arm架构x86架构有什么区别?
    发表于 10-25 08:25

    arm架构x86架构有什么区别是什么?

    Cortex系列处理器是从从ARM哪个架构开始的?arm架构x86架构有什么区别是什么?如何计算地址线和数据线?
    发表于 10-28 08:36

    嵌入式X86和ARM各自都有哪些优缺点呢

      嵌入式X86和ARM优缺点对比  X86架构是使用复杂指令集CISC,X86 CISC是一种为了便于编程和提高记忆体访问效率的芯片设计体
    发表于 12-14 09:21

    在linux上运行x86架构的一个C/C++程序

    时会遇到诸多问题,本篇教程为入门篇!我们在linux上运行x86架构的一个C/C++程序首先我们需要安装C/C++的编译器gcc和gcc-c++,由于本人懒得再找一个Ubuntu做实验,就使用本人...
    发表于 12-21 06:22

    风火轮X86主板youyeetoo X1:部署掌纹识别能力

    安全性而备受关注。在这一背景下,越来越多的应用领域开始采用掌纹识别技术,包括金融、安全、物流和智能门禁等。本文将介绍如何在X86架构
    的头像 发表于 11-10 08:36 429次阅读
    风火轮<b class='flag-5'>X86</b>主板youyeetoo X1:<b class='flag-5'>部署</b><b class='flag-5'>掌纹</b><b class='flag-5'>识别</b>能力