【人脸识别】基于直方梯度图 HDGG 的人脸识别算法研究附matlab代码

简介: 【人脸识别】基于直方梯度图 HDGG 的人脸识别算法研究附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步进步,matlab项目目标合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信息:格物致知。

更多Matlab仿真内容点击👇

智能优化算法神经网络预测雷达通信无线传感器  

信号处理图像处理路径规划元胞机器人无人机电力系统

⛄ 内容介绍

脸识别成为广大学者普遍关注的研究,它,直观,非,非,安全,安全,快捷,快捷。的。人在中受到种的的,:复杂如影响影响影响影响结构结构结构结构,表情人结构,表情表情的的的的的千变万化千变万化千变万化千变万化千变万化千变万化以及以及以及以及以及以及以及人人人人脸采集采集等等等等课题。针对脸,角度等影响大现状现状,对的现状现状现状算法算法算法算法算法进行改进改进改进改进改进改进改进改进改进改进改进改进改进改进改进改进改进改进改进改进改进改进改进改进算法算法算法,该算法具有更好的识别效果。

⛄ 部分代码

%________________________________________________________________________%

% 人脸识别 (FR) 源代码版本 1.0 %

% %

提出两个新描述符的百分比:%

% 1. HDG(方向梯度直方图)和 %

% 2. HDGG(方向梯度广义直方图) % %

% %

% %

% 在 MATLAB R2016a 中开发 %

% %

% 作者和程序员:Farid AYECHE %

% %

% 电子邮件:ayeche_farid@yahoo.fr %

% farid.ayeche@univ-setif.dz %

% ayeche.farid@gmail.com %

% %

% %

%   Main paper: Ayeche, Farid & Adel, Alti. (2021). HDG and HDGG:   %

%                an extensible feature extraction descriptor for    %

%                effective face and facial expressions recognition. %

%                Pattern Analysis and Applications.                 %

%                 24. 10.1007/s10044-021-00972-2.                   %

%                                                                   %

%___________________________________________________________________%



clc

clear all

close all




% fix the data

data = 'PIE';  % choose the datast :  'ORL', 'Yale'  or  'PIE'

switch data

   case 'ORL' ;

       load('ORL_112x92.mat')

       m = 112;

       n = 92;

       nm_image_by_class = 10;        

   case 'Yale';

       load('Yale_64x64.mat')

       m = 64;

       n = 64;

       nm_image_by_class = 11;

   case 'PIE';

       load('PIE_32x32.mat')

       m = 32;

       n = 32;

       nm_image_by_class = 170;

end    


[nb_images, taille_image] = size(fea);


% Feauters Extraction

descriptor = 'HDG'; % Choose the descriptor :  'HDG', 'HDGG', 'HOG' or 'LBP'

feauters = [];

for i = 1 : nb_images

    Im       =  fea(i, :);

    Im       =  reshape(Im, m, n);

    % Using the descriptor

    switch descriptor        

        case 'HDG'

            H = HDG(Im);

        case 'HDGG'

            H = HDGG(Im);

        case 'HOG'

            H = HOG(Im);

        case 'LBP'

            H = LBP(Im, 1);

    end        

    % rassembler the feauters vectors

    feauters =  [feauters; H'];

    fprintf('\n Features Extraction :  %d / %d',i, nb_images);

end


% Machine Learning Preperation

fprintf('\n \n \n Machine Learning : Preperation.................');


classifier   = 'msvm'; % choose the classifier : 'knn', 'nb', 'dt', 'msvm', 'da', 'nn' or 'rf'


v            = fea;

ri           = round(nb_images*rand(1,1));

Test         = feauters(ri, :);                          

Training     = feauters([1:ri-1 ri+1:end], : );

label(ri, :) = [];

v(ri, :)     = [];



% Recognition with Machine Leraning

fprintf('\n Machine Learning : Training & Test phases.................');

switch classifier ;

   case 'knn';

       results = KNNClassifier( Training, Test, label);

   case 'nb';

       results = NBClassifier(  Training, Test, label);

   case 'dt';

       results = TREEClassifier(Training, Test, label);

   case 'msvm';

       results = MSVMClassifier(Training, Test, label);  

   case 'da';

       results = DAClassifier(  Training, Test, label);

   case 'nn';

       results = NNClassifier(  Training, Test, label);

   case 'rf';

       results = RFClassifier(  Training, Test, label);

end


     

% Display the results

fprintf('\n \n \n ************************** Results ************************');

fprintf('\n Dataset               : %s '   ,  data);

fprintf('\n Discriptor            : %s '   ,  descriptor);

fprintf('\n Machine Learning      : %s '   ,  results.CL_name);

fprintf('\n Time                  : %f (s)',  results.time);

fprintf('\n Classe                : %d '   ,  results.Classe);

switch descriptor        

        case 'HDG'

            fprintf('\n length vector Feature : 8 x 8 x 8 = 512');

        case 'HDGG'

            fprintf('\n length vector Feature : 8 x 8 x 9 = 576');

        case 'HOG'

            fprintf('\n length vector Feature : 8 x 8 x 8 = 576');

        case 'LBP'

            fprintf('\n length vector Feature : 8 x 8 x 256 = 16384');

    end    

fprintf('\n\n');

 

% Displya the face image

Classe  = results.Classe;

subplot(121);

imshow(reshape(fea(ri, :), m, n), []);title('Looking for ...','FontWeight','bold','Fontsize',16,'color','red');


subplot(122);

for i = 1 : Classe    

    imshow(reshape(fea((i - 1) * nm_image_by_class + 1, :),m,n), [])

    drawnow;

end

subplot(122);

imshow(reshape(v((Classe - 1) * nm_image_by_class + 1, :), m, n), []);title('Found!','FontWeight','bold','Fontsize',16,'color','red');




% Disply image face feautre

figure,

subplot(121)

imshow(reshape(fea(ri, :), m, n), []);title('Looking for!','FontWeight','bold','Fontsize',16,'color','red');


subplot(122)

bar(feauters(ri, :)); title('Feature Histogram','FontWeight','bold','Fontsize',16,'color','red');

⛄ 运行结果

⛄ 参考文献

[1]王国栋. 基于MATLAB的人脸识别算法的研究[D]. 内蒙古大学, 2014.

[2周天荟. 基于HOG特征的人脸识别方法的研究与实现[D]. 北京建筑大学, 2014.

⛄ Matlab代码关注

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料
相关文章
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的自适应学习算法研究与应用
在深度学习领域,传统的静态模型在处理动态环境和非平稳数据时面临挑战。本文探讨了自适应学习算法在深度学习中的重要性及其应用。通过分析自适应学习算法在模型参数、损失函数和数据分布上的应用,展示了其在提升模型鲁棒性和泛化能力方面的潜力。具体讨论了几种代表性的自适应学习方法,并探索了它们在现实世界中的应用案例,从而展示了其在处理复杂问题和动态数据中的效果。
12 0
|
2天前
|
机器学习/深度学习 数据采集 搜索推荐
机器学习在智能推荐系统中的个性化算法研究
机器学习在智能推荐系统中的个性化算法研究
|
1月前
|
算法 计算机视觉 异构计算
基于肤色模型的人脸识别FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于肤色检测算法的摘要:使用MATLAB 2022a和Vivado 2019.2进行测试和仿真,涉及图像预处理、RGB到YCbCr转换、肤色模型(基于阈值或概率)以及人脸检测。核心程序展示了如何读取图像数据并输入到FPGA处理,通过`tops`模块进行中值滤波、颜色空间转换及人脸检测,最终结果输出到"face.txt"。
|
1月前
|
机器学习/深度学习 算法 API
【Paddle】PCA线性代数基础 + 领域应用:人脸识别算法(1.1w字超详细:附公式、代码)
【Paddle】PCA线性代数基础 + 领域应用:人脸识别算法(1.1w字超详细:附公式、代码)
42 0
|
1月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
1月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
1天前
|
机器学习/深度学习 算法 数据可视化
m基于PSO-LSTM粒子群优化长短记忆网络的电力负荷数据预测算法matlab仿真
在MATLAB 2022a中,应用PSO优化的LSTM模型提升了电力负荷预测效果。优化前预测波动大,优化后预测更稳定。PSO借鉴群体智能,寻找LSTM超参数(如学习率、隐藏层大小)的最优组合,以最小化误差。LSTM通过门控机制处理序列数据。代码显示了模型训练、预测及误差可视化过程。经过优化,模型性能得到改善。
14 6
|
1天前
|
算法 调度
基于变异混合蛙跳算法的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图
**摘要:** 实现变异混合蛙跳算法的MATLAB2022a版车间调度优化程序,支持动态调整工件和机器数,输出甘特图。核心算法结合SFLA与变异策略,解决Job-Shop Scheduling Problem,最小化总完成时间。SFLA模拟蛙群行为,分组进行局部搜索和全局信息交换。变异策略增强全局探索,避免局部最优。程序初始化随机解,按规则更新,经多次迭代和信息交换后终止。
|
1天前
|
机器学习/深度学习 算法 计算机视觉
基于ADAS的车道线检测算法matlab仿真
**摘要:** 基于ADAS的车道线检测算法利用Hough变换和边缘检测在视频中识别车道线,判断车道弯曲情况,提供行驶方向信息,并高亮显示。在MATLAB2022a中实现,系统包括图像预处理(灰度化、滤波、边缘检测)、车道线特征提取(霍夫变换、曲线拟合)和车道线跟踪,确保在实时场景中的准确性和稳定性。预处理通过灰度转换减少光照影响,滤波去除噪声,Canny算法检测边缘。霍夫变换用于直线检测,曲线拟合适应弯道,跟踪则增强连续帧的车道线检测。

热门文章

最新文章