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

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

个人主页:Matlab科研工作室

个人信息:格物致知。

更多Matlab仿真内容点击

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

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

⛄ 内容介绍

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

⛄ 部分代码

%________________________________________________________________________%

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

% %

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

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

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

% %

% %

% 在 MATLAB R2016a 中开发 %

% %

% 作者和程序员:Farid AYECHE %

% %

% 电子邮件:[email protected] %

% [email protected] %

% [email protected] %

% %

% %

%   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');

⛄ 运行结果

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

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

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

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

⛄ 参考文献

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

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

⛄ Matlab代码关注

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

你可能感兴趣的:(图像处理,matlab,算法,开发语言)