文档库 最新最全的文档下载
当前位置:文档库 › 人脸初识别代码

人脸初识别代码

人脸初识别代码
人脸初识别代码

% 载入图像

Img = imread('face.jpg');

if ndims(Img) == 3

I=rgb2gray(Img);

else

I = Img;

end

BW = im2bw(I, graythresh(I)); % 二值化

figure;

subplot(2, 2, 1); imshow(Img);

title('原图像', 'FontWeight', 'Bold');

subplot(2, 2, 2); imshow(Img);

title('网格标记图像', 'FontWeight', 'Bold');

hold on;

[xt, yt] = meshgrid(round(linspace(1, size(I,

round(linspace(1, size(I, 2), 10)));

mesh(yt, xt, zeros(size(xt)), 'FaceColor', ...

'None', 'LineWidth', 3, ...

'EdgeColor', 'r');

subplot(2, 2, 3); imshow(BW);

title('二值图像', 'FontWeight', 'Bold');

[n1, n2] = size(BW);

r = floor(n1/10); % 分成10块,行

c = floor(n2/10); % 分成10块,列

x1 = 1; x2 = r; % 对应行初始化

s = r*c; % 块面积

for i = 1:10

y1 = 1; y2 = c; % 对应列初始化

for j = 1:10

if (y2<=c || y2>=9*c) || (x1==1 || x2==r*10

% 如果是在四周区域

loc = find(BW(x1:x2, y1:y2)==0);

[p, q] = size(loc);

pr = p/s*100; % 黑色像素所占的比例数

if pr <= 100

BW(x1:x2, y1:y2) = 0;

end

end

y1 = y1+c; % 列跳跃

y2 = y2+c; % 列跳跃

end

x1 = x1+r; % 行跳跃

x2 = x2+r; % 行跳跃

end

[L, num] = bwlabel(BW, 8); % 区域标记

stats = regionprops(L, 'BoundingBox'); % 得到包围矩形框Bd = cat(1, stats.BoundingBox);

[s1, s2] = size(Bd);

mx = 0;

for k = 1:s1

p = Bd(k, 3)*Bd(k, 4); % 宽*高

if p>mx && (Bd(k, 3)/Bd(k, 4))<1.8

% 如果满足面积块大,而且宽/高<1.8

mx = p;

j = k;

end

end

subplot(2, 2, 4);imshow(I); hold on;

rectangle('Position', Bd(j, :), ...

'EdgeColor', 'r', 'LineWidth', 3);

title('标记图像', 'FontWeight', 'Bold');

基于matlab的人脸识别源代码

function varargout = FR_Processed_histogram(varargin) %这种算法是基于直方图处理的方法 %The histogram of image is calculated and then bin formation is done on the %basis of mean of successive graylevels frequencies. The training is done on odd images of 40 subjects (200 images out of 400 images) %The results of the implemented algorithm is 99.75 (recognition fails on image number 4 of subject 17) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @FR_Processed_histogram_OpeningFcn.,.. 'gui_OutputFcn', @FR_Processed_histogram_OutputFcn.,.. 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

基于VC++的人脸识别系统的设计与实现含源程序

目录 摘要............................................................. III 第1章绪论 (1) 1.1引言 (1) 1.2国内外研究现状与人脸识别的发展阶段 (2) 1.3人脸识别的研究内容 (3) 1.4相关学科 (4) 1.5小结 (5) 第2章人脸检测技术研究 (6) 2.1人脸检测问题分类 (6) 2.2人脸模式特征提取法[11] (8) 2.2.1肤色特征 (8) 2.2.2 灰度特征[12] (8) 2.3人脸检测方法分类 (9) 2.3.1 基于知识的方法 (10) 2.3.2 基于统计模型的人脸检测方法 (11) 2.3.3 基于模板的方法[19] (15) 2.4小结 (16) 第3章基于隐马尔可夫模型HMM的人脸识别 (17) 3.1相关背景概念 (17) 3.2隐马尔可夫模型HMM构成元素[16] (18) 3.3隐马尔可夫模型HMM原理 (19) 3.4隐马尔可夫模型基本算法[1] (20) 3.4.1 前向-后向算法 (20) 3.4.2 维特比算法 (24) 3.4.3 Baum-Welch 算法[1] (25)

3.5隐马尔可夫模型在人脸识别中应用 (28) 3.5.1 人脸图像HMM模型状态的确定 (28) 3.5.2 观察值序列 (29) 3.5.3 基于离散余弦变换(DCT)的特征提取方法 (30) 3.5.4 HMM建模训练和人脸识别工作流程 (32) 3.6改进的隐马尔可夫模型在人脸识别中的应用 (35) 3.6.1 观察向量的提取[15] (35) 3.6.2 人脸参数训练[15] (35) 3.6.3 人脸的识别 (36) 3.7小结 (37) 第4章人脸识别系统设计与试验 (38) 4.1人脸识别系统涉及的软件和硬件 (38) 4.1.1 软件部分 (38) 4.1.2 硬件部分 (42) 4.2人脸识别系统 (43) 4.2.1 用户界面介绍 (43) 4.2.2 主要模块介绍 (43) 4.2.3 程序实现界面 (47) 4.2.4 相关人脸数据库 (48) 4.3人脸识别试验 (51) 4.3.1 用Yale人脸库进行人脸识别试验 (51) 4.3.2 用ORL人脸库进行人脸识别试验 (54) 4.3.3 用自建的人脸库进行人脸识别试验 (56) 结论 (60) 致谢 (61) 参考文献 (62) 附录 (64)

人脸识别程序源代码

1.利用OpenCV进行人脸检测 人脸检测程序主要完成3部分功能,即加载分类器、加载待检测图象以及检测并标示。本程序使用OpenCV中提供的“haarcascade_frontalface_alt.xml”文件存储的目标检测分类,用cvLoad函数载入后,进行强制类型转换。OpenCV中提供的用于检测图像中目标的函数是cvHaarDetectObjects,该函数使用指针对某目标物体(如人脸)训练的级联分类器在图象中找到包含目标物体的矩形区域,并将这些区域作为一序列的矩形框返回。分类器在使用后需要被显式释放,所用的函数为cvReleaseHaarClassifierCascade。这些函数原型请参看有关OpenCV手册。 2.程序实现 1)新建一个Visual C++ MFC项目,取名为“FaceDetection”,选择应用程序类型为“单文档”。将菜单中多余的项去掉,并添加一项“人脸检测”,其ID为“ID_FaceDetected”,并生成该菜单项的消息映射函数。 2)在“FaceDetectionView.h”头文件中添加以下灰底色部分程序代码:

3)在“FaceDetectionView.cpp”文件中添加以下灰底色部分程序代码:

需要注意的是,本程序运行时应将分类器文件置于程序目录下,如果运行的是生成的E XE文件,则应将分类器文件与该EXE文件放在同一个目录下。 三、程序运行结果 运行该程序,选择人脸检测菜单项,弹出文件打开对话框,选择要检测的图像文件,程序就会将检测到的人脸用圆圈标示出来,如图3所示。本程序能顺利检测出大部分人脸,但由于光照、遮挡和倾斜等原因,部分人脸不能正确检测,另外,也有一些非人脸部分由于具有人脸的某些特征,也被当成了人脸,这些都是本程序需要改进的部分。

人脸识别程序源代码

人脸识别程序源代码 Revised final draft November 26, 2020

1.利用OpenCV进行人脸检测 人脸检测程序主要完成3部分功能,即加载分类器、加载待检测图象以及检测并标示。本程序使用OpenCV中提供的“haarcascade_frontalface_alt.xml”文件存储的目标检测分类,用cv Load函数载入后,进行强制类型转换。OpenCV中提供的用于检测图像中目标的函数是cvHaarDet ectObjects,该函数使用指针对某目标物体(如人脸)训练的级联分类器在图象中找到包含目标物体的矩形区域,并将这些区域作为一序列的矩形框返回。分类器在使用后需要被显式释放,所用的函数为cvReleaseHaarClassifierCascade。这些函数原型请参看有关OpenCV手册。 2.程序实现 1)新建一个VisualC++MFC项目,取名为“FaceDetection”,选择应用程序类型为“单文档”。将菜单中多余的项去掉,并添加一项“人脸检测”,其ID为“ID_FaceDetected”,并生成该菜单项的消息映射函数。 2)在“FaceDetectionView.h”头文件中添加以下灰底色部分程序代码: 3)在“FaceDetectionView.cpp”文件中添加以下灰底色部分程序代码:

需要注意的是,本程序运行时应将分类器文件置于程序目录下,如果运行的是生成的EXE文件,则应将分类器文件与该EXE文件放在同一个目录下。 三、程序运行结果 运行该程序,选择人脸检测菜单项,弹出文件打开对话框,选择要检测的图像文件,程序就会将检测到的人脸用圆圈标示出来,如图3所示。本程序能顺利检测出大部分人脸,但由于光照、遮挡和倾斜等原因,部分人脸不能正确检测,另外,也有一些非人脸部分由于具有人脸的某些特征,也被当成了人脸,这些都是本程序需要改进的部分。

人脸识别系统设计与仿真 基于matlab的(含matlab源程序)版权不归自己 交流使用

人脸识别系统设计与仿真基于matlab的(含matlab源程序) 交流使用参考后自行那个删除后果自负 目录 第一章绪论 (2) 1.1 研究背景 (2) 1.2 人脸图像识别的应用前景 (3) 1.3 本文研究的问题 (4) 1.4 识别系统构成 (5) 1.5 论文的内容及组织 (7) 第二章图像处理的Matlab实现 (8) 2.1 Matlab简介 (8) 2.2 数字图像处理及过程 (8) 2.2.1图像处理的基本操作 (8) 2.2.2图像类型的转换 (9) 2.2.3图像增强 (9) 2.2.4边缘检测 (10) 2.3图像处理功能的Matlab实现实例 (11) 2.4 本章小结 (15) 第三章人脸图像识别计算机系统 (16) 3.1 引言 (16) 3.2系统基本机构 (17)

3.3 人脸检测定位算法 (18) 3.4 人脸图像的预处理 (25) 3.4.1 仿真系统中实现的人脸图像预处理方法 (26) 第四章基于直方图的人脸识别实现 (29) 4.1识别理论 (29) 4.2 人脸识别的matlab实现 (29) 4.3 本章小结 (30) 第五章总结 (31) 致谢 (32) 参考文献 (33) 附录 (35)

第一章绪论 本章提出了本文的研究背景及应用前景。首先阐述了人脸图像识别意义;然后介绍了人脸图像识别研究中存在的问题;接着介绍了自动人脸识别系统的一般框架构成;最后简要地介绍了本文的主要工作和章节结构。 1.1 研究背景 自70年代以来.随着人工智能技术的兴起.以及人类视觉研究的进展.人们逐渐对人脸图像的机器识别投入很大的热情,并形成了一个人脸图像识别研究领域,.这一领域除了它的重大理论价值外,也极具实用价值。 在进行人工智能的研究中,人们一直想做的事情就是让机器具有像人类一样的思考能力,以及识别事物、处理事物的能力,因此从解剖学、心理学、行为感知学等各个角度来探求人类的思维机制、以及感知事物、处理事物的机制,并努力将这些机制用于实践,如各种智能机器人的研制。人脸图像的机器识别研究就是在这种背景下兴起的,因为人们发现许多对于人类而言可以轻易做到的事情,而让机器来实现却很难,如人脸图像的识别,语音识别,自然语言理解等。如果能够开发出具有像人类一样的机器识别机制,就能够逐步地了解人类是如何存储信息,并进行处理的,从而最终了解人类的思维机制。 同时,进行人脸图像识别研究也具有很大的使用价依。如同人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。现在己

人脸识别源代码.doc

人脸识别源代码 ※人脸检测(文章+程序)---技术文档及代码非常全『人脸检测(文章+程序).rar(1.27 MB) 』 ※完整的Matlab下人脸检测及识别系统源代码『Face-Recognition-Detection.rar (393.19 KB) 』 注:这个人脸检测和识别系统开发于Matlab 7.0.1下,非常值得学习。 ※Matlab实现的基于颜色分隔的人脸人眼检测与定位及识别算法源代码 『Face-Eye-Detection.part1.rar (1.91 MB) Face-Eye-Detection.part2.rar (152.54 KB) 』 注:这是一个matlab程序,用来检测并定位人脸及人眼。采用的算法是肤色的颜色分隔。附件中的文件包括 eyematch.m, eyematch2.m, face.m, findeye.m,skin.m, k001.JPG等等。 ※完整的包括及动作识别的C++人脸检测源代码『FaceDetection.rar (875.84 KB) 』 本文的目的是提供一个我开发的SSE优化的,C++库,用于人脸检测,你可以马上把它用于你的视频监控系统中。涉及的技术有:小波分析,尺度缩减模型(PCA,LDA,ICA),人工神经网络(ANN),支持向量机(SVM),SSE编程,图像处理,直方图均衡,图像滤波,C++编程,还有一下其它的人脸检测的背景知识。 ※基于Gabor特征提取和人工智能的人脸检测系统源代码『fdp5final.rar(185.56 KB) 』 使用步骤: 1. 拷贝所有文件到MATLAB工作目录下(确认已经安装了图像处理工具箱和人工智能工具箱) 2. 找到"main.m"文件 3. 命令行中运行它

人脸识别程序源代码修订稿

人脸识别程序源代码 WEIHUA system office room 【WEIHUA 16H-WEIHUA WEIHUA8Q8-

1.利用OpenCV进行人脸检测 人脸检测程序主要完成3部分功能,即加载分类器、加载待检测图象以及检测并标示。本程序使用OpenCV中提供的“”文件存储的目标检测分类,用cv Load函数载入后,进行强制类型转换。OpenCV中提供的用于检测图像中目标的函数是cvHaarDetectObjects,该函数使用指针对某目标物体(如人脸)训练的级联分类器在图象中找到包含目标物体的矩形区域,并将这些区域作为一序列的矩形框返回。分类器在使用后需要被显式释放,所用的函数为cvReleas eHaarClassifierCascade。这些函数原型请参看有关OpenCV手册。 2.程序实现 1)新建一个Visual C++ MFC项目,取名为“FaceDetection”,选择应用程序类型为“单文档”。将菜单中多余的项去掉,并添加一项“人脸检测”,其ID为“I D_FaceDetected”,并生成该菜单项的消息映射函数。 2)在“”头文件中添加以下灰底色部分程序代码:

} cvShowImage( "人脸检测", img ); cvReleaseImage( &gray ); cvReleaseImage( &small_img ); } 需要注意的是,本程序运行时应将分类器文件置于程序目录下,如果运行的是生成的EXE文件,则应将分类器文件与该EXE文件放在同一个目录下。 三、程序运行结果 运行该程序,选择人脸检测菜单项,弹出文件打开对话框,选择要检测的图像文件,程序就会将检测到的人脸用圆圈标示出来,如图3所示。本程序能顺利检测出大部分人脸,但由于光照、遮挡和倾斜等原因,部分人脸不能正确检测,另外,也有一些非人脸部分由于具有人脸的某些特征,也被当成了人脸,这些都是本程序需要改进的部分。

(完整word版)基于MATLAB的人脸识别

图像识别 题目:基于MATLAB的人脸识别 院系:计算机科学与应用系 班级: 姓名: 学号: 日期:

目录 引言 (1) 1 人脸识别技术 (2) 1.1人脸识别的研究内容 (2) 1.1.1人脸检测(Face Detection) (2)

1.1.2人脸表征(Face Representation) (2) 1.2几种典型的人脸识别方法 (3) 1.2.1基于几何特征的人脸识别方法 (3) 1.2.2基于K-L变换的特征脸方法 (4) 1.2.3神经网络方法 (4) 1.2.4基于小波包的识别方法 (5) 1.2.5支持向量机的识别方法 (5) 2 人脸特征提取与识别 (5) 2.1利用PCA进行特征提取的经典算法——Eigenface算法 (6) 2.2 PCA人脸识别流程 (6) 2.3特征向量选取 (8) 2.4距离函数的选择 (9) 2.5 基于PCA的人脸识别 (9) MATLAB人脸识别程序 (10) 3 MATLAB软件程序编写 (10) 3.1.创建图片数据库 (10) 3.2 主程序 (11) 3.3最终程序结果 (12) 4 心得与体会 (12) 参考文献 (13)

引言 随着社会的发展及技术的进步,社会各方面对快速高效的自动身份验证的需求可以说无处不在,并与日俱增。例如,某人是否是我国的居民,是否有权进入某安全系统,是否有权进行特定的交易等。尤其是自2001年美国“9.1l”恐怖袭击发生以来,如何在车站、机场等公共场所利用高科技手段,迅速而准确地发现并确认可疑分子成了目前世界各国在反恐斗争中普遍关注的问题。为此,各国都投入大量人力、物力研究发展各类识别技术,使得生物特征识别技术得到了极大的发展。生物特征识别技术主要包括:人脸识别、虹膜识别、指纹识别、步态识别、语音识别、笔迹识别、掌纹识别以及多生物特征融合识别等。人类通过视觉识别文字,感知外界信息。在客观世界中,有75%的信息量都来自视觉,因此让计算机或机器人具有视觉,是人工智能的重要环节。由于生物特征是人的内在属性,具有很强的稳定性和个体差异性,因此是身份验证最理想的依据。与虹膜、指纹、基因、掌纹等其他人体生物特征识别系统相比,人脸识别系统更加直接、方便、友好,易于为用户所接受,并且通过人脸的表情、姿态分析,还能获得其它识别系统难以得到的一些信息。 人脸识别技术在国家重要机关及社会安防领域具有广泛用途。例如:公安系统的罪犯识别、信用卡验证、医学、档案管理、视频会议、人机交互系统等身份识别和各类卡持有人的身份验证。同其他人体生物特征(如:指纹、掌纹、虹膜、语音等)识别技术相比,人脸识别技术的隐性最好,人脸识别系统更直接、友好,是当今国际反恐和安防最重视的科技手段和攻关标志之一。虽然人类能毫不费力地识别出人脸及表情,但对人脸的机器自动识别确实一个难度极大的课题,它涉及到模式识别、图像处理及生理、心理学等诸多方面的知识。人脸识别技术的研究虽然己经取得了一定的可喜成果,但在实际应用中仍存在着许多严峻的问题。人脸的非刚体性、姿态、表情、发型以及化妆的多样性都给正确识别带来了困难,要让计算机像人一样方便地识别出大量的人脸,尚需不同科学研究领域的科学家共同不懈的努力。

人脸识别MATLAB代码

1.色彩空间转换 function [r,g]=rgb_RGB(Ori_Face) R=Ori_Face(:,:,1); G=Ori_Face(:,:,2); B=Ori_Face(:,:,3); R1=im2double(R); % 将uint8型转换成double型G1=im2double(G); B1=im2double(B); RGB=R1+G1+B1; row=size(Ori_Face,1); % 行像素 column=size(Ori_Face,2); % 列像素 for i=1:row for j=1:column rr(i,j)=R1(i,j)/RGB(i,j); gg(i,j)=G1(i,j)/RGB(i,j); end end rrr=mean(rr); r=mean(rrr); ggg=mean(gg); g=mean(ggg); 2.均值和协方差 t1=imread('D:\matlab\皮肤库\1.jpg');[r1,g1]=rgb_RGB(t1); t2=imread('D:\matlab\皮肤库\2.jpg');[r2,g2]=rgb_RGB(t2); t3=imread('D:\matlab\皮肤库\3.jpg');[r3,g3]=rgb_RGB(t3); t4=imread('D:\matlab\皮肤库\4.jpg');[r4,g4]=rgb_RGB(t4); t5=imread('D:\matlab\皮肤库\5.jpg');[r5,g5]=rgb_RGB(t5); t6=imread('D:\matlab\皮肤库\6.jpg');[r6,g6]=rgb_RGB(t6); t7=imread('D:\matlab\皮肤库\7.jpg');[r7,g7]=rgb_RGB(t7); t8=imread('D:\matlab\皮肤库\8.jpg');[r8,g8]=rgb_RGB(t8);

基于opencv的人脸识别程序-代码详解

#include "cv.h" #include "highgui.h" #include #ifdef _EiC #define WIN32 #endif static CvMemStorage* storage = 0; static CvHaarClassifierCascade* cascade = 0; void detect_and_draw( IplImage* image ); const char* cascade_name = "haarcascade_frontalface_alt.xml";//人脸检测分类器 int main( int argc, char** argv ) { CvCapture* capture = 0; IplImage *frame, *frame_copy = 0; int optlen = strlen("--cascade="); const char* input_name; if( argc > 1 && strncmp( argv[1], "--cascade=", optlen ) == 0 ) { cascade_name = argv[1] + optlen; input_name = argc > 2 ? argv[2] : 0; } else { cascade_name = "E:\毕业设计\智能机器人动态人脸识别系统\陈建州程序.xml";//分类器路径 input_name = argc > 1 ? argv[1] : 0; } cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 ); if( !cascade )//如果没有找到分类器,输出以下 { fprintf( stderr, "ERROR: Could not load classifier cascade\n" ); fprintf( stderr, "Usage: facedetect --cascade=\"\" [filename|camera_index]\n" ); return -1;

基于MATLAB的人脸识别

基于MATLAB的人脸识别

————————————————————————————————作者: ————————————————————————————————日期:

图像识别 题目:基于MATLAB的人脸识别 院系:计算机科学与应用系 班级: 姓名: 学号: 日期:

设计题目基于MATLAB的人脸识别设 计技术参数 测试数据库图片10张训练数据库图片20张图片大小1024×768 特征向量提取阈值 1 设计要求综合运用本课程的理论知识,并利用MATLAB作为工具实现对人脸图片的预处理,运用PCA算法进行人脸特征提取,进而进行人脸匹配识别。 工作量 两周的课程设计时间,完成一份课程设计报告书,包括设计的任务书、基本原理、设计思路与设计的基本思想、设计体会以及相关的程序代码; 熟练掌握Matlab的使用。 工作计划第1-2天按要求查阅相关资料文献,确定人脸识别的总体设计思路; 第3-4天分析设计题目,理解人脸识别的原理同时寻求相关的实现算法;第5-8天编写程序代码,创建图片数据库,运用PCA算法进行特征提取并编写特征脸,上机进行调试; 第9-12天编写人脸识别程序,实现总体功能; 第13-14天整理思路,书写课程设计报告书。 参考资料1 黄文梅,熊佳林,杨勇编著.信号分析与处理——MATALB语言及应用.国防科技大学出版社,2000 2 钱同惠编著.数字信号处理.北京:机械工业出版社,2004 3 姚天任,江太辉编著.数字信号处理.第2版.武汉:武汉理工大学出版社,2000 4 谢平,林洪彬,王娜.信号处理原理及应用.机械工业出版社,2004 5刘敏,魏玲.Matlab.通信仿真与应用.国防工业出版社,2005 6 楼顺天.基于Matlab7.x 的系统分析与设计.西安电子科技大学,2002 7孙洪.数字信号处理.电子工业出版社,2001 目录 引言?错误!未定义书签。 1 人脸识别技术?错误!未定义书签。 1.1人脸识别的研究内容?错误!未定义书签。 1.1.1人脸检测(Face Detection)........... 错误!未定义书签。

[作业]OPENCV人脸识别

摘要 人脸检测主要是基于计算机识别的一项数字化技术,用以准确获取人的脸部大小和位置信息,在进行人脸检测时,突出主要的脸部特征,淡化次要的环境、衣着等因素。对于某些情况下,人脸检测也可以计算出人脸,如眼睛,鼻子和嘴等精确的微妙特征。由于在安全检测系统,医学,档案管理,视频会议和人机交互等领域人脸检测系统都有光明的应用前景,因此人脸检测逐渐成为了两个跨学科领域研究的热门话题:人工智能和当前模式识别。本文基于OpenCV视觉库具体的设计并开发了对数字图像中的人脸检测的程序,所采用的人脸检测的原理主要是分类器训练模式(Adaboost算法)提取Haar特征的方法。它在整个软件极其重要的作用,图像中人脸的准确定位和识别都受图像处理好坏的直接影响。本次所设计的软件在图像处理部分所采用的方法是基于Adaboost算法进行Haar特征的提取,在此之上加以通过积分图方法来获取完整的级联分类器结构,进行人脸检测时,OpenCV级联分类器通过Adaboost人脸检测算法进行训练,此后采用不同情况下的实验样本完成精确定位以及检测试验。经过代码的设计和调试,在最后的测试中针对数字图像进行的人脸检测和定位达到了较好的效果,提高了定位和识别的正确率。 关键词:人脸检测,AdaBoost,分类器,OpenCV

Abstract Face detection is mainly based on computer recognition of a digital technology,face size and location information to accurately obtain the person,during face detection, highlight the main facial features,dilute the secondary environment,clothing,and other factors.For some cases,face detection can also calculate a person's face,such as eyes, nose and mouth,and other subtle features accurate.Because in the field of human security detection systems,medical records management,video conferencing,and human-computer interaction face detection system has bright prospects,and therefore face detection is becoming a two interdisciplinary research fields hot topic:artificial intelligence and The current pattern recognition.This article is based.penCV vision library designed and developed specifically for digital image face detection process,the principles used face detection methods are mainly classifier training mode(Adaboost algorithm)to extract Haar features.It is in the vital role of the software,the image of the human face accurately locate and identify all that is good or bad a direct impact on the image processing.This software is designed image processing method used in part based Haar Adaboost algorithm to extract features,on top of this to be to get the full cascade classifier structure by integrating the diagram method for face detection,OpenCV cascade classifier is trained by Adaboost face detection algorithm,then the use of the experimental sample under different circumstances for accurate positioning and testing.Through design and debugging code,face detection and location in the final test for digital images to achieve better results and improve the accuracy of positioning and recognition. Keywords:face detection;AdaBoost;classifier;openCV

人脸识别matlab程序

人脸识别 % FaceRec.m % PCA 人脸识别修订版,识别率88% % calc xmean,sigma and its eigen decomposition allsamples=[];%所有训练图像 for i=1:40 for j=1:5 a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.jpg')); % imshow(a); b=a(1:112*92); % b 是行矢量1×N,其中N=10304,提取顺序是先列后行,即从上 到下,从左到右 b=double(b); allsamples=[allsamples; b]; % allsamples 是一个M * N 矩阵,allsamples 中每一行数 据代表一张图片,其中M=200 end end samplemean=mean(allsamples); % 平均图片,1 × N for i=1:200 xmean(i,:)=allsamples(i,:)-samplemean; % xmean 是一个M ×N 矩阵,xmean 每一行保存的数据是“每个图片数据-平均图片” end; % 获取特征值及特征向量 sigma=xmean*xmean'; % M * M 阶矩阵 [v d]=eig(sigma); d1=diag(d); % 按特征值大小以降序排列 dsort = flipud(d1); vsort = fliplr(v); %以下选择90%的能量 dsum = sum(dsort); dsum_extract = 0; p = 0; while( dsum_extract/dsum < 0.9) p = p + 1; dsum_extract = sum(dsort(1:p)); end

基于matlab的简单人脸识别程序代码

基于matlab的简单人脸识别实例 简介 人脸识别特指利用分析比较人脸视觉特征信息进行身份鉴别的计算机技术。人脸识别是一项热门的计算机技术研究领域,在生活中许多领域都有着重要应用。 内容 这里通过对人脸图像打上网格,对区域块图像做二值分析,通过像素比例来做处理。进而得到人脸区域。 代码 % Bylyqmath % DLUT School of Mathematical Sciences % BLOG:https://www.wendangku.net/doc/c716999120.html,/lyqmath clc; clear all; close all; % 载入图像 Img = imread('face.jpg'); if ndims(Img) == 3 I=rgb2gray(Img); else I = Img; end BW = im2bw(I, graythresh(I)); % 二值化 figure; subplot(2, 2, 1); imshow(Img); title('原图像', 'FontWeight', 'Bold'); subplot(2, 2, 2); imshow(Img); title('网格标记图像', 'FontWeight', 'Bold'); hold on; [xt, yt] = meshgrid(round(linspace(1, size(I, 1), 10)), ... round(linspace(1, size(I, 2), 10))); mesh(yt, xt, zeros(size(xt)), 'FaceColor', ... 'None', 'LineWidth', 3, ... 'EdgeColor', 'r'); subplot(2, 2, 3); imshow(BW); title('二值图像', 'FontWeight', 'Bold'); [n1, n2] = size(BW); r = floor(n1/10); % 分成10块,行 c = floor(n2/10); % 分成10块,列 x1 = 1; x2 = r; % 对应行初始化 s = r*c; % 块面积 for i = 1:10

人脸识别课程设计附带代码

人脸识别中图像预处理的研究 1.课程设计目的 随着人工智能技术的兴起,以及人类视觉研究的进展,人们逐渐对人脸图像的机器识别投入很大的热情,并形成了一个人脸图像识别研究领域,这一领域除了它的重大理论价值外,也极具实用价值。 如同人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。人脸图像的自动识别系统较之指纹识别系统、DNA鉴定等更具方便性,开发研究的实际意义更大。然而人脸图像受很多因素的干扰,给识别带来很大难度。国外对于人脸图像识别的研究较早,现己有实用系统面世,只是对于成像条件要求较苛刻,应用范围也就较窄,国内也有许多科研机构从事这方而的研究,并己取得许多成果。 2. 方法综述 特征脸法(PCA): 把单个图像看成一维向量,众多的一维向量形成了人脸图像特征空间,再将其变换到一个新的相对简单的特征空间,通过计算矩阵的特征值和特征向量,利用图像的代数特征信息,寻找“人脸”、“非人脸”两种模式在该特征空间中的分布规律。 人工神经网络(ANN)法: 通过训练一个网络结构,把模式的统计特性隐含在神经网络的结构和参数之中。基于人工神经网络的方法对于复杂的、难以显式描述的模式,具有独特的优势。 支撑向量机(SVM)法: 在统计学习理论基础上发展出的一种新的模式识别方法,它基于结构风险最小化的原理,较之于基于经验风险最小化的人工神经网络,一些难以逾越的问题,如:模型选择和过

学习问题、非线性和维数灾难问题、局部极小点问题等都得到了很大程度上的解决。但是直接使用SVM方法进行人脸识别有两方面的困难:第一,训练时需要求解二次规划问题计算复杂度高,内存需求量巨大;第二,在非人脸样本不受限制时,需要极大规模的训练集合,得到的支持向量会很多,使得分类器的计算量过高。 基于积分图像特征的人脸检测方法: 是Viola等新近提出的一种算法,它综合使用了积分图像描述方法、Adaboost学习算法及训练方法、级联弱分类器。 3.实验结果与分析 图人脸识别技术处理流程图 人脸图像的获取 一般来说,图像的获取都是通过摄像头摄取,但摄取的图像可以是真人,也可以是人脸的图片或者为了相对简单,可以不考虑通过摄像头来摄取头像,而是直接给定要识别的图像。 人脸定位 对人脸图像打上网格,对区域块图像做二值分析,通过像素比例来做处理,进而得到人脸区域。 在彩色图像中,颜色是人脸表面最为显著的特征之一,利用颜色检测人脸是很自然的想

人脸识别C++程序代码 - 副本

// AppDesignDlg.cpp : implementation file // #include "stdafx.h" #include "AppDesign.h" #include "AppDesignDlg.h" #include #include #include "Select.h" #include "CvvImage.h" #define MAX_POINT 200 #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About using namespace std; CvCapture * m_Video; // opencv库的指针,从视频获取图像 int nFrmNum=0; //定义第nFrmNum帧,初始化为0,自动增值,nFrmNum是帧控件的关联变量,帧控件的ID为IDC_FRAMNUM ////定义几个重要的全局变量 int nTrainFaces =0; // 训练图像的数目,即人脸库中有n张人脸 int nEigens =0; // 自己取的主要特征值数目(在提取特征脸的时候用到的参数) IplImage** faceImgArr =0; // 指向训练人脸和测试人脸的指针(在学习和识别阶段指向不同) CvMat* personNumTruthMat=0; // 人脸图像的ID号 IplImage* pAvgTrainImg =0; // 训练人脸数据的平均值 IplImage** eigenVectArr =0; // 投影矩阵,也即主特征向量 CvMat* eigenValMat =0; // 特征值 CvMat* projectedTrainFaceMat=0; // 训练图像的投影 CvMat* trainPersonNumMat=0;

pca人脸识别识别率源代码

allsamples=[]; % allsample用于存储读取的人脸图像矩阵 m=0; for i=1:40 for j=1:5 a=imread(strcat ('e:\ORL\s', num2str(i),'\', num2str(j),'.pgm')); b=a(1:112*92); b=double(b); allsamples=[allsamples; b]; m=m+1; subplot(10,20,m); imshow(a); if(j==1) title(['训练图库',num2str(i)]) end end end samplemean=mean(allsamples); % 平均图片,1 ×N for i=1:200 xmean(i,:)=allsamples(i,:)-samplemean; end; % 获取特征值及特征向量 sigma=xmean*xmean'; % M * M 阶矩阵 [v d]=eig(sigma); d1=diag(d); % 按特征值大小以降序排列 dsort = flipud(d1); vsort = fliplr(v); %以下选择90%的能量 dsum = sum(dsort); dsum_extract = 0; p = 0; while( dsum_extract/dsum < 0.9) p = p + 1; dsum_extract = sum(dsort(1:p)); end i=1; % (训练阶段)计算特征脸形成的坐标系 base = xmean' * vsort(:,1:p) * diag(dsort(1:p).^(-1/2)); % base 是N×p 阶矩阵,除以dsort(i)^(1/2)是对人脸图像的标准化(使其方差为1)% 详见《基于PCA 的人脸识别算法研究》p31 % xmean' * vsort(:,i)是小矩阵的特征向量向大矩阵特征向量转换的过程 %while (i<=p && dsort(i)>0) % base(:,i) = dsort(i)^(-1/2) * xmean' * vsort(:,i); % 详见《基于PCA 的人脸识别算法研究》p31 % i = i + 1; % xmean' * vsort(:,i)是小矩阵的特征向量向大矩阵特

基于MATLAB的人脸识别源程序

基于MATLA酌人脸识别源程序1?色彩空间转换function [r,g]=rgb_RGB(Ori_Face) R=0ri_Face(:,:,1); G=0ri_Face(:,:,2); B=Ori_Face(:,:,3); R1=im2double(R); % 将uint8 型转换成double型 G1=im2double(G); B1=im2double(B); RGB=R1+G1+B1; row=size(Ori_Face, 1); %行像素 column=size(Ori_Face,2); %列像素for i=1:row for j=1:column rr(i,j)=R1(i,j)/RGB(i,j); gg(i,j)=G1(i,j)/RGB(i,j); end

end rrr=mean(rr); r=mean(rrr); ggg=mean(gg); g=mean(ggg); 2?均值和协方差

皮肤库\2?jpg');[r2,g2]=rgb_RGB(t2); 皮肤库\3?jpg');[r3,g3]=rgb_RGB(t3); 皮肤库\4?jpg');[r4,g4]=rgb_RGB(t4); 皮肤库\5?jpg');[r5,g5]=rgb_RGB(t5); 皮肤库\6?jpg');[r6,g6]=rgb_RGB(t6); 皮肤库\7?jpg');[r7,g7]=rgb_RGB(t7); 皮肤库\8?jpg');[r8,g8]=rgb_RGB(t8); 皮肤库\9?jpg');[r9,g9]=rgb_RGB(t9); 皮肤库\10?jpg');[r10,g10]=rgb_RGB(t10); 皮肤库\11?jpg');[r11,g11]=rgb_RGB(t11); 皮肤库\12?jpg');[r12,g12]=rgb_RGB(t12); 皮肤库\13?jpg');[r13,g13]=rgb_RGB(t13); 皮肤库\14?jpg');[r14,g14]=rgb_RGB(t14); 皮肤库\15?jpg');[r15,g15]=rgb_RGB(t15); 皮肤库\16?jpg');[r16,g16]=rgb_RGB(t16); 皮肤库\17?jpg');[r17,g17]=rgb_RGB(t17); 皮肤库\18?jpg');[r18,g18]=rgb_RGB(t18); 皮肤库\19?jpg');[r19,g19]=rgb_RGB(t19); 皮肤库\20?jpg');[r20,g20]=rgb_RGB(t20); 皮肤库\21?jpg');[r21,g21]=rgb_RGB(t21);

相关文档
相关文档 最新文档