基于Gabor-小波滤波深度图表面法线的特征提取算法【通过正常Gabor-小波的直方图进行2D或3D特征提取】研究(Matlab代码实现)

 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

文献来源:

通过一种新的五步算法彻底研究了鼻腔区域表达强大的3D面部识别的潜力。首先,粗略检测鼻尖位置,将面部分割、对齐并裁剪鼻部区域。然后,一种非常准确和一致的鼻部地标算法检测鼻部区域的七个关键点。第三步,利用基于Gabor-小波滤波深度图表面法线的特征提取算法,在鼻部区域定位一组球形斑块和曲线,提供特征描述符。最后一步应用基于遗传算法的特征选择器来检测不同面部表情上最稳定的斑块和曲线。该算法在FRGC,博斯普鲁斯海峡和BU-3DFE数据集上提供了最高的基于鼻区域的识别排名。结果与许多使用整个面部域的最先进的3D面部识别算法相当,并且在许多情况下更好。所提出的方法不依赖于复杂的对齐或去噪步骤,当画廊中每个受试者仅使用一个样本时非常稳健,并且不需要地标算法的训练步骤。

原文摘要:

Abstract:

The potential of the nasal region for expression robust 3D face recognition is thoroughly investigated by a novel five-step algorithm. First, the nose tip location is coarsely detected and the face is segmented, aligned and the nasal region cropped. Then, a very accurate and consistent nasal landmarking algorithm detects seven keypoints on the nasal region. In the third step, a feature extraction algorithm based on the surface normals of Gabor-wavelet filtered depth maps is utilised and, then, a set of spherical patches and curves are localised over the nasal region to provide the feature descriptors. The last step applies a genetic algorithm-based feature selector to detect the most stable patches and curves over different facial expressions. The algorithm provides the highest reported nasal region-based recognition ranks on the FRGC, Bosphorus and BU-3DFE datasets. The results are comparable with, and in many cases better than, many state-of-the-art 3D face recognition algorithms, which use the whole facial domain. The proposed method does not rely on sophisticated alignment or denoising steps, is very robust when only one sample per subject is used in the gallery, and does not require a training step for the landmarking algorithm.

虽然之前关于表情不变3D人脸识别的许多研究都集中在表情建模和 检测表情不敏感的面部部位,评估 鼻腔区域用于解决此问题。尽管如此,鼻子仍有许多显着特征使其适合 用于表达稳健识别。由于其判别曲率和凸性[1],它很容易被检测到,很难隐藏而不引起怀疑[2],[3],相对稳定 各种面部表情([1],[4],[5],[6],[7],[8],[9]),很少受到头发和头发引起的意外遮挡的影响 围巾。尽管据报道,鼻子的2D图像具有太少的判别特征,无法用作 人类识别的可靠区域[10],其3D表面有很多 未被发现的潜力。本文进一步研究了用于人类身份认证的三维鼻区和 验证目的,并提出了一种新颖的算法,该算法提供非常高的判别强度,可与 最近的3D人脸识别算法,它使用整个面部域。

所提出的方法基于非常一致和准确的地标算法,克服了 鼻腔区域的强力分割。该算法首先找到鼻尖的大致位置,然后 微调其位置,同时准确确定鼻根的位置并检测对称性 脸的平面。接下来,找到三组地标的位置:鼻下,眼角和鼻翼 槽。这些地标用于通过将多分辨率 Gabor 小波应用于 深度贴图的表面法线。使用两种类型的特征描述符:球形斑块和鼻曲线。 然后使用启发式遗传算法(GA)执行特征选择,最后使用表达式鲁棒 特征描述符适用于著名且广泛使用的3D人脸识别大挑战赛(FRGC)[11],博斯普鲁斯海峡[12]和宾厄姆顿 大学3D面部表情(BU-3DFE)[13]数据集。

结果表明,该算法具有识别鼻腔区域的巨大潜力,从而识别不同部位的面部。 表达式,每个主题的库样本很少。最高一级识别率(R1RR) 实现的是:1) a R1RR 为 97.9 FRGC v2.4 和接收器操作员特征 (ROC) III 的误码率 (EER) 为 2.0% 分别进行实验;2) a R1RR 分别为 98.45% 和 98.5% FRGC的中性与中性样品以及中性样品与非中性样品;3) a R1当每个受试者一个画廊样本用于 FRGC 数据集时,RR 为 96.2% (482个画廊样本(受试者)与4,330个探针样本);4) a R1 RR 博斯普鲁斯海峡数据集的 95.35%,当 2 个受试者的 797,105 次扫描用作探针和 105 个样本集时 中性扫描(每个受试者一个)。

本文的主要贡献是一种新颖的基于表面法线的识别算法,该算法提供了一种彻底的 评估3D鼻部区域的识别潜力。取得的成果不仅比以前更好 3D鼻子识别算法也高于许多采用整个面部的识别算法。这 算法采用新颖、免训练、高度一致和准确的鼻区地标算法 并介绍了基于Gabor小波对表面法向量的响应的鲁棒特征空间。自 定位鼻子上的表达稳健区域 将启发式 GA 特征选择应用于两种不同的 几何特征描述符。由于Gabor小波的平滑效果,因此不需要 复杂的去噪算法。实际上,表面法线只需要简单的中值滤波,甚至 使用嘈杂的数据集,例如 FRGC Spring 2003 文件夹。所提议的方法的另一个优点是 基于快速主成分分析(PCA)的自依赖方法可用于面部姿势矫正。这 无需复杂的姿势校正算法或参考面来微调对齐。

所提出的方法大大扩展了我们之前的工作[4] 在深度图上进行了鼻部地标和识别。本文增加了 地标及其检测精度,并提出了新的特征提取和选择算法。这项工作是 灵感来自最近在 3D [14] 和区域法线向量 [15] 中使用面部法线向量的算法。将新算法与以前的算法进行比较 使用类似方法的方法,在鼻表面计算法线的应用,用于 识别以及验证方案。通过使用多分辨率Gabor小波的能力 处理更多噪声样本的算法得到增强,提供更高的R1 RR 比Li等人的方法[15],该方法排除了嘈杂的FRGC 2003年春季样品。这项工作还扩展了面部曲线的应用,由 Berretti等人([16]和[17]),对鼻球形斑块,产生R 1RR 增加>2%,并显示更高的类 球形贴片的可分离性比3D人脸识别曲线的可分离性。

📚2 运行结果

 

 

 

 

主函数代码:

clc
close all
clear all
warning off

%%%%%%%%%%%%% Loading the 2.5 depth map
load Sample_Nose.mat
input_data = rotated_nose;
figure, surf(input_data(:, :, 1), input_data(:, :, 2), input_data(:, :, 3), 'linestyle', 'none')
view(0, 90), camlight left, title('Input data')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%% Setting up the landmarks over the depth map
Using_uniform_landmarks = false;
if Using_uniform_landmarks
    my_x_res = 5;
    my_y_res = 6.5;
    my_landmarks = create_uniform_landmarks(input_data, my_x_res, my_y_res);
else
    vertical_div = 5;
    horiz_div = 5;
    my_landmarks = create_landmarks(input_data, L1, L2, E1, E2, N, TIP, SADDLE, vertical_div, horiz_div);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%% Plotting the landmarks
figure(1)
hold on,
plot3(my_landmarks(:, 1), my_landmarks(:, 2), my_landmarks(:, 3), 'r.')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%% Computing the Gabor-wavelets
max_ori = 4;
max_scale = 4;
all_layers = Gabor_wavelet_computer(input_data, max_ori, max_scale);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%% Plotting the Gabor-wavelet output
figure('Name', 'Maximal Gabor-wavelet outputs per orientation', 'NumberTitle','off');
subplot(2, 2, 1),
imagesc(all_layers(:, :, 1))
subplot(2, 2, 2),
imagesc(all_layers(:, :, 2))
subplot(2, 2, 3),
imagesc(all_layers(:, :, 3))
subplot(2, 2, 4),
imagesc(all_layers(:, :, 4))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%% Computing the normal vectors
all_normal_maps = Normal_vector_computer(input_data(:, :, 1), input_data(:, :, 2), all_layers);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%% Plotting the normal maps
figure('Name', 'Normal maps plot', 'NumberTitle','off')
for map_cnt = 1: length(all_normal_maps)
    curr_map = all_normal_maps{map_cnt};
    subplot(2, 2, map_cnt),
    imagesc(curr_map)
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%% Computing the feature space as the histogram of the spherical patches
R = 11;
hist_bins = [-1: 0.1: 1];
toDisplay = 1;
all_feat = feature_extraction_spheres(input_data(:, :, 1), input_data(:, :, 2), input_data(:, :, 3), my_landmarks, all_normal_maps, R, hist_bins, toDisplay);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%% Plotting the feature space
figure, plot(all_feat), ylim([0, 1.5]), title('Extracted feature vector')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]M. Emambakhsh and A. Evans, "Nasal Patches and Curves for Expression-Robust 3D Face Recognition," in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 39, no. 5, pp. 995-1007, 1 May 2017, doi: 10.1109/TPAMI.2016.2565473.

🌈4 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/22670.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis+Lua脚本防止超卖

超卖就是因为查询库存和扣减库存两个操作不是原子性操作,通过rua脚本执行这两个操作可以保证这两个操作原子性 判断库存量是不是大于等于1,如果大于等于1对库存减1,否则就不去减库存 StringBuilder sb new StringBuilder();sb.append("…

【JAVA进阶】Stream流

📃个人主页:个人主页 🔥系列专栏:JAVASE基础 目录 1.Stream流的概述 2.Stream流的获取 3.Stream流的常用方法 1.Stream流的概述 什么是Stream流? 在Java 8中,得益于Lambda所带来的函数式编程&#xff0…

使用go语言构建区块链 Part2.工作量证明

英文源地址 简介 在上一篇文章中, 我们构建了一个非常简单的数据结构, 这是区块链数据库的本质.并且我们可以通过它们之间的链式关系来添加区块: 每个区块都链接到前一个区块.哎, 我们的区块链实现有一个重大缺陷: 向链中添加区块既容易又便捷. 区块链和比特币的关键之一是增…

面对当下各种不确定性,如何面对,每天很忙碌,不慌

(点击即可收听) 疫情时期,都难,疫情之后,发现还更难 随着互联网的热度的下降,各大小公司纷纷勒紧裤腰带,受打击最大的无疑是底层打工人 每天一打开手机,会发现,一些大厂裁员信息霸榜头条,年龄也是一道坎 刚刚看到一个大v发的: 一个原先是跨国…

如何在 OpenSUSE 上安装 VirtualBox 7?

VirtualBox 是一款开源的虚拟化软件,允许用户在单个计算机上运行多个操作系统。本文将详细介绍如何在 OpenSUSE 上安装 VirtualBox 7。以下是安装过程的步骤: 步骤一:下载 VirtualBox 7 首先,我们需要下载 VirtualBox 7 的安装包…

真题详解(语法分析输入记号流)-软件设计(八十)

真题详解(求叶子结点数)-软件设计(七十九)https://blog.csdn.net/ke1ying/article/details/130787349?spm1001.2014.3001.5501 极限编程XP最佳实践: 测试先行、 按日甚至按小时为客户提供可运行的版本。 组件图的 插座 和插头…

Pytorch的CNN,RNNLSTM

CNN 拿二维卷积举例,我们先来看参数 卷积的基本原理,默认你已经知道了,然后我们来解释pytorch的各个参数,以及其背后的计算过程。 首先我们先来看卷积过后图片的形状的计算: 参数: kernel_size &#xff…

使用Linkage Mapper工进行物种分布建模的步骤详解(含实际案例分析)

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Linkage Mapper解密数字世界链接 文章目录 引言:一、介绍二、数据准备2.1 物种分布数据获取2.2 环境变量数据获取2.3 数据预处理

车道线检测

前言 目前,车道线检测技术已经相当成熟,主要应用在自动驾驶、智能交通等领域。下面列举一些当下最流行的车道线检测方法: 基于图像处理的车道线检测方法。该方法是通过图像处理技术从摄像头传回的图像中提取车道线信息的一种方法&#xff0c…

FreeRTOS(6)----软件定时器

一,软件定时器概述 软件定时器允许设置一段时间,当设定的时间到达之后就会执行指定的功能函数,被定时器调用的这个函数叫做定时器的回调函数。回调函数的两次执行间隔叫做定时器的定时周期。 二,回调函数的注意事项 回调函数是…

Django框架之模板过滤器

过滤器可以用来修改变量的显示样式。 使用方式 格式:{{变量|过滤器方法}}。可以连续使用,形式如:{{变量|过滤器方法1|过滤器方法2}}。 过滤器如下 Lower 转化为小写字母 格式:变量|lower Upper 转化为大写字母 格式&#xf…

chatgpt赋能python:Python的BeautifulSoup库和find_all()方法

Python的Beautiful Soup库和find_all()方法 在Web爬虫中,我们需要从网页中找到特定的HTML标记或属性,以便提取我们需要的数据。对于Python开发人员而言,Beautiful Soup是最流行的解析HTML和XML的库之一。该库可以让我们轻松地从HTML解析器中…

【Tcp通信服务器流程】

TCP通信流程 1、服务器端(被动接收连接的角色) (1)创建一个用于监听的套接字 - 监听:监听有客户端的连接 - 套接字:这个套接字其实就是一个文件描述符 (2)将这个监听文件描述符和…

26 KVM热迁移虚拟机

文章目录 26 KVM热迁移虚拟机26.1 总体介绍26.1.1 概述26.1.2 应用场景26.1.3 注意事项和约束限制 26.2 热迁移操作26.2.1 前提条件26.2.2 热迁移脏页率预测(可选)26.2.3 设置热迁移参数(可选)26.2.4 热迁移操作(共享存…

微服务之事务处理

Informal Essay By English Hi guys、happy labor day. Everyone should have a good time to relax during the Labor Day holiday. But don’t forget to improve yourself during the holiday period 参考书籍: “凤凰架构” “微服务架构设计模式” 引言 …

golang 服务中 context 超时处理的思考

文章目录 前言起因:日志告警引发的思考什么是contextcontext的作用context超时之后继续执行 or 中断 最后 前言 公司运行的服务代码中,随处可见各种各样的日志信息,其中大多数是用来记录各种异常的日志,一方面,当出现…

Linux终端环境下的浏览器Lynx和Carbonyl 的基本使用方法

一、Carbonyl 是基于Chromium开发的运行于终端下的现代版浏览器,比Lynx的功能更好,目前尚在滚动开发过程中,但也基本可以用了。 1. 2安装非常简单,下载Binaries,Docker,nmp install, 都可以。 注意&#…

FPGA远程更新/远程调试的一种简单方法

之前介绍过一种远程(无线)更新的方式,详见《起飞!通过无线WIFI下载调试FPGA》,这种方式缺点有两个:一是速度较慢;二是我们的设备中需要增加一个无线设备,增加成本的同时增加了暴露的…

SpringCloud(23):Sentinel对Spring Cloud Gateway的支持

代码地址:https://download.csdn.net/download/u013938578/87767363 从 1.6.0 版本开始,Sentinel 提供了 Spring Cloud Gateway 的适配模块,可以提供两种资源维度的限流: route 维度:即在 Spring 配置文件中配置的路…

setContentHuggingPriority和setContentCompressionResistancePriority的使用

需求&#xff1a; 两个label并排显示&#xff0c;文字内容由服务器返回&#xff0c;label宽度以文字内容自适应&#xff0c;label之间间距大于等于10. 需要考虑以下情况&#xff1a; 当两个label的宽度和 < 屏幕宽度时&#xff0c;各自设置约束&#xff0c;无需处理&#…