热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

matlab实现人脸识别

前面在python学习中实现了人脸检测,下面我将在matlab中实现人脸识别。人脸识别技术中被广泛采用的区域特征分析算法,它融合了计算机图像处理技术与生物统计学原理于一体,利用计算机图像处理

前面在python学习中实现了人脸检测,下面我将在matlab中实现人脸识别。

人脸识别技术中被广泛采用的区域特征分析算法,它融合了计算机图像处理技术与生物统计学原理于一体,利用计算机图像处理技术从视频中提取人像特征点,利用生物统计学的原理进行分析建立数学模型,即人脸特征模板。利用已建成的人脸特征模板与被测者的人的面像进行特征分析,根据分析的结果来给出一个相似值。通过这个值即可确定是否为同一人。   基本算法:
1.基于人脸特征点的识别算法(Feature-based recognition algorithms);

2.基于整幅人脸图像的识别算法(Appearance-based recognition algorithms);

3.基于模板的识别算法(Template-based recognition algorithms); 

 4.利用神经网络进行识别的算法(Recognition algorithms using neural network); 

5.利用线性回归进行识别的算法;

 6.利用稀疏表示进行识别的算法;

人脸识别主要包括四个方面:人脸采集----图像预处理-------人脸特征提取--------匹配与识别。

对于任何人脸识别方法来说,最难的都是第四步。这里主要用最小距离法,寻找和待识别图片最为接近的训练图片。思路是:思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。

下面是操作过程:

一:在线获取100张128*128的灰度人脸图像。

vid = videoinput('winvideo',1);
for i=1:100
    pause(0.5);
    frame = getsnapshot(vid); 
    img=rgb2gray(ycbcr2rgb(frame));
    img=imresize(img,[128,128]);
    path=strcat(strcat('.\train\',num2str(i)),'.bmp');
    imwrite(img,path);
end
stop(vid);
delete(vid);
close all

二,训练(一)中得到的人脸图像

global cankao
global W
global img_pj
global wts
global path
global img_path


% 批量读取指定文件夹下的图片128*128
path = uigetdir;
img_path = dir(strcat(path,'\*.bmp'));
img_num = length(img_path);
imagedata = [];
if img_num >0
    for j = 1:img_num
        img_name = img_path(j).name;
        temp = imread(strcat(path, '/', img_name));
        temp = double(temp(:));
        imagedata = [imagedata, temp];
    end
end
wts = size(imagedata,2);


% 中心化 & 计算协方差矩阵
img_pj = mean(imagedata,2);
for i = 1:wts
    imagedata(:,i) = imagedata(:,i) - img_pj;
end
covMat = imagedata'*imagedata;
[COEFF, latent, explained] = pcacov(covMat);


% 选择构成95%能量的特征值
i = 1;
proportion = 0;
while(proportion <95)
    proportion = proportion + explained(i);
    i = i+1;
end
p = i - 1;


% 特征脸
W = imagedata*COEFF;    % N*M阶
W = W(:,1:p);           % N*p阶


% 训练样本在新座标基下的表达矩阵 p*M
cankao = W'*imagedata;
msgbox(['训练完成'])

三,读取图像并识别

global im
global cankao
global W
global imgpj
global wts
global path
global img_path
im = double(im(:));
objectOne= W'*(im - imgpj);
distance = 100000000;
for k = 1:wts
    temp = norm(objectone - cankao(:,k));
    if(distance>temp)
        aimOne= k;
        distance = temp;
        aimpath = strcat(path, '/', img_path(aimone).name);
        axes( handles.axes2 )
        imshow(aimpath)
    end
end





推荐阅读
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • 反向投影技术主要用于在大型输入图像中定位特定的小型模板图像。通过直方图对比,它能够识别出最匹配的区域或点,从而确定模板图像在输入图像中的位置。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
  • #点球小游戏fromrandomimportchoiceimporttimescore[0,0]direction[left,center,right]defkick() ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • CentOS系统安装与配置常见问题及解决方案
    本文详细介绍了在CentOS系统安装过程中遇到的常见问题及其解决方案,包括Vi编辑器的操作、图形界面的安装、网络连接故障排除等。通过本文,读者可以更好地理解和解决这些常见问题。 ... [详细]
  • 本文将详细探讨Linux pinctrl子系统的各个关键数据结构,帮助读者深入了解其内部机制。通过分析这些数据结构及其相互关系,我们将进一步理解pinctrl子系统的工作原理和设计思路。 ... [详细]
  • 解决Python中 'NoneType' 对象无属性 'find_all' 错误
    本文详细探讨了在Python编程中遇到的常见错误——'NoneType'对象没有属性'find_all',并深入分析其原因及解决方案。通过理解find_all函数的工作原理和常见用法,帮助读者避免类似问题。 ... [详细]
  • Python第三方库安装的多种途径及注意事项
    本文详细介绍了Python第三方库的几种常见安装方法,包括使用pip命令、集成开发环境(如Anaconda)以及手动文件安装,并提供了每种方法的具体操作步骤和适用场景。 ... [详细]
  • This pull request introduces the ability to provide comprehensive paragraph configurations directly within the Create Note and Create Paragraph REST endpoints, reducing the need for additional configuration calls. ... [详细]
author-avatar
蕊儿巧乐-滋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有