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

简介: 基于Gabor-小波滤波深度图表面法线的特征提取算法【通过正常Gabor-小波的直方图进行2D或3D特征提取】研究(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代码实现

相关文章
|
2月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于MSER和HOG特征提取的SVM交通标志检测和识别算法matlab仿真
### 算法简介 1. **算法运行效果图预览**:展示算法效果,完整程序运行后无水印。 2. **算法运行软件版本**:Matlab 2017b。 3. **部分核心程序**:完整版代码包含中文注释及操作步骤视频。 4. **算法理论概述**: - **MSER**:用于检测显著区域,提取图像中稳定区域,适用于光照变化下的交通标志检测。 - **HOG特征提取**:通过计算图像小区域的梯度直方图捕捉局部纹理信息,用于物体检测。 - **SVM**:寻找最大化间隔的超平面以分类样本。 整个算法流程图见下图。
|
23天前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
24天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
56 1
|
1月前
|
存储 缓存 算法
通过优化算法和代码结构来提升易语言程序的执行效率
通过优化算法和代码结构来提升易语言程序的执行效率
|
1月前
|
算法
分享一些提高二叉树遍历算法效率的代码示例
这只是简单的示例代码,实际应用中可能还需要根据具体需求进行更多的优化和处理。你可以根据自己的需求对代码进行修改和扩展。
|
1月前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
45 3
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
2月前
|
存储 缓存 算法
如何通过优化算法和代码结构来提升易语言程序的执行效率?
如何通过优化算法和代码结构来提升易语言程序的执行效率?
|
2月前
|
搜索推荐
插入排序算法的讲解和代码
【10月更文挑战第12天】插入排序是一种基础的排序算法,理解和掌握它对于学习其他排序算法以及数据结构都具有重要意义。你可以通过实际操作和分析,进一步深入了解插入排序的特点和应用场景,以便在实际编程中更好地运用它。
|
2月前
|
缓存 分布式计算 监控
优化算法和代码需要注意什么
【10月更文挑战第20天】优化算法和代码需要注意什么
24 0