使用MATLAB控制笔记本电脑的摄像头,并进行实时人脸检测和识别

news/2024/11/14 19:48:58/

FPGA教程目录

MATLAB教程目录

-----------------------------------------------------------------------

目录

一、理论基础

二、核心程序

三、仿真测试结果


一、理论基础

        人脸识别过程主要由四个阶段组成:人脸检测、图像预处理、面部特征提取和特征识别。首先系统从视频或者相机中捕获图像,检测并分割出其中的人脸区域;接下来通过归一化、对齐、滤波等方法改善图像的质量,这里的质量主要由最终的人脸识别率决定;特征提取(降维)环节尤为重要,其初衷是减少数据量从而减轻计算负担,但良好的特征选取可以降低噪音和不相关数据在识别中的贡献度,从而提高识别精度;特征识别阶段需要根据提取的特征训练一个分类器,对于给定的测试样本,根据训练器对其进行分类。

      当定位好人脸的时候,我们进行识别,识别的主要原理如下:

      GRNN广义回归神经网络的理论基础是非线性核回归分析,非独立变量y相对于独立变量x的回归分析实际上是计算具有最大概率值的y。设随机变量x和y的联合概率密度函数为f (x ,y),已知x的观测值为X,则y相对于X的回归,即条件均值为:

对于未知的概率密度函数f (x, y),可由x和y的观测样本经非参数估计得:

       GRNN通常被用来进行函数逼近。它具有一个径向基隐含层和一个特殊的线性层。第一层和第二层的神经元数目都与输入的样本向量对的数目相等。GRNN结构如图2-3所示,整个网络包括四层神经元:输入层、模式层、求和层与输出层。 

 

      GRNN广义回归神经网络进行映射学习达到了很好的效果.这些流形的方法都建立在一个假设上:同一个人不同姿态的图像是高维空间中的一个低维流形.基于这个假设,不同人在姿态变化下可以获得较好的识别效果。

在matlab中,通过如下的驱动程序控制笔记本电脑的摄像头:

%Set up video object. Note: to change to a different camera (or camera setup) change the following line:
vid = videoinput('winvideo',1,'YUY2_640x480');
%Set the video object to always return rgb images:
set(vid, 'ReturnedColorSpace', 'rgb');
triggerconfig(vid,'manual');
start(vid)
%Initialize frame Frm and fps variable
Frm     = 0;
fps     = 0;
%Set the total runtime in seconds 
runtime = 100;
h       = figure(1);
tic;
timeTracker = toc;

通过程序vid = videoinput('winvideo',1,'YUY2_640x480');完成摄像头图像的采集。

二、核心程序

clc;
clear;
close all;
warning off;
addpath 'func\'
addpath 'facebase\'delete(imaqfind);
%Set up video object. Note: to change to a different camera (or camera setup) change the following line:
vid = videoinput('winvideo',1,'YUY2_640x480');
%Set the video object to always return rgb images:
set(vid, 'ReturnedColorSpace', 'rgb');
triggerconfig(vid,'manual');
start(vid)
%Initialize frame Frm and fps variable
Frm     = 0;
fps     = 0;
%Set the total runtime in seconds 
runtime = 100;
h       = figure(1);
tic;
timeTracker = toc;load grnns.mat
while toc < runtime tocFrm = Frm + 1;%获得摄像头图像I   = getsnapshot(vid);%人脸跟踪[segment,f,R0,R1] = func_face_track(I);%获得人脸区域figure(1);subplot(221);imshow(uint8(I));title('摄像头视频获取');subplot(222);imshow(f);subplot(223);imshow(R1);title('脸部定位');%人脸识别(测试前需要加入自己所要测试的人脸的相关库。比如你要测试你自己的脸,那么需要加入你的脸道库中)R0re    = imresize(R0,[220,160]);Ttest   = func_yuchuli(R0re);%读入数字wordsss = sim(net,Ttest');[V,I]   = max(wordsss);%显示识别结论Icheck  = imread(['facebase\',num2str(I-1),'.jpg']);subplot(224);imshow(Icheck);title('识别结论');pause(0.5);
end
stop(vid)
clc;
clear;
close all;
warning off;
addpath 'func\'
addpath 'facebase\'
I = imread('1.jpg');%%
%人脸跟踪
[segment,f,R0,R1] = func_face_track(I);
%获得人脸区域
figure
subplot(221);
imshow(I);
subplot(222);
imshow(f);
subplot(223);
imshow(R1);
title('脸部定位');%%
%人脸识别(测试前需要加入自己所要测试的人脸的相关库。比如你要测试你自己的脸,那么需要加入你的脸道库中)
%人脸库的离线训练
R0re    = imresize(R0,[220,160]);
Ttest   = func_yuchuli(R0re);%读入数字load grnns.mat
wordsss = sim(net,Ttest');
[V,I]   = max(wordsss);
%显示识别结论
Icheck  = imread(['facebase\',num2str(I-1),'.jpg']);subplot(224);
imshow(Icheck);
title('识别结论');

三、仿真测试结果

       由此可以看出,当选择出学习样本之后,GRNN网络的结构与权值都是完全确定的,因而训练GRNN网络要比训练BP网络和RBF网络便捷得多。

 A10-26


http://www.ppmy.cn/news/271068.html

相关文章

笔记本摄像头怎么打开?几个步骤轻松打开

大多数笔记本电脑都带有摄像头&#xff0c;XP/Win7系统的电脑&#xff0c;可以直接进入我的电脑来打开摄像头。随着电脑系统的升级&#xff0c;大多数人使用的都是Win10系统&#xff0c;那么Win10系统的笔记本摄像头怎么打开&#xff1f;方法很简单&#xff0c;主要看下面两个&…

缓存击穿、穿透、雪崩的区别和解决方法

1.缓存穿透 缓存穿透是指查询一个缓存中和数据库中都不存在的数据&#xff0c;导致每次查询这条数据都会透过缓存&#xff0c;直接查库&#xff0c;最后返回空。当用户使用这条不存在的数据疯狂发起查询请求的时候&#xff0c;对数据库造成的压力就非常大&#xff0c;甚至可能…

uView 2.X 的 picker 组件实现省市区县联动选择功能

uView 2.X 的 picker 组件实现省市区县联动选择功能 <template><view class"container"><view class"p-card"><view class"p-title"><text>收货地址信息</text></view><view class"" s…

iPhone自动接听和拒接来电设置方法「苹果教程」

在日常生活中&#xff0c;有时候会遇到不方便操作电话的场景&#xff0c;例如开车途中。如果不方便操作电话&#xff0c;可以启用iPhone的自动接听或者拒接电话功能。 一、自动拒接 首先打开设置并找到【勿扰模式】&#xff0c;在该页面下方找到【自动回复对象】&#xff0c;在…

jssip(呼叫,接听,重新协商等功能实现)

jssip(呼叫&#xff0c;接听&#xff0c;重新协商等功能实现) <template><div class"head"><a-button type"primary" click"call">call</a-button><a-button type"primary">answer</a-button>&l…

接听拨打电话没有声音而其他正常的解决办法

安卓手机接听拨打电话没有声音而其他运行正常&#xff0c;原因如下&#xff1a; 很多第三方软件开机加速会误把com.qualcomm.qti.telephonyservice这个软件自启给禁用了 我们把com.qualcomm.qti.telephonyservice这个软件自启打开&#xff0c;然后重启一下手机就行了&#xff0…

android 拨打电话、 监听来电、监听呼出电话的功能实现

demo1&#xff08;通用&#xff09;&#xff1a; 权限 <!-- 监听呼出电话 --> <uses-permission android:name"android.permission.PROCESS_OUTGOING_CALLS" /> <!-- 监听来电 --> <uses-permission android:name"android.per…

AutoAnswer使用指南(QQ、微信自动接听)

软件下载地址&#xff1a;https://pan.baidu.com/s/19fX1NRup7v0bhtq9WSON8A BUG反馈&#xff1a; QQ群&#xff1a;563152032 --------------------------------------------------------------- 如果安装的是 1.3.6738.R之前的版本&#xff0c;要先卸载旧的版本再安装新版…