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

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

人脸识别中图像预处理的研究

1.课程设计目的

随着人工智能技术的兴起,以及人类视觉研究的进展,人们逐渐对人脸图像的机器识别投入很大的热情,并形成了一个人脸图像识别研究领域,这一领域除了它的重大理论价值外,也极具实用价值。

如同人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。人脸图像的自动识别系统较之指纹识别系统、DNA鉴定等更具方便性,开发研究的实际意义更大。然而人脸图像受很多因素的干扰,给识别带来很大难度。国外对于人脸图像识别的研究较早,现己有实用系统面世,只是对于成像条件要求较苛刻,应用范围也就较窄,国内也有许多科研机构从事这方而的研究,并己取得许多成果。

2. 方法综述

2.1特征脸法(PCA):

把单个图像看成一维向量,众多的一维向量形成了人脸图像特征空间,再将其变换到一个新的相对简单的特征空间,通过计算矩阵的特征值和特征向量,利用图像的代数特征信息,寻找“人脸”、“非人脸”两种模式在该特征空间中的分布规律。

2.2人工神经网络(ANN)法:

通过训练一个网络结构,把模式的统计特性隐含在神经网络的结构和参数之中。基于人工神经网络的方法对于复杂的、难以显式描述的模式,具有独特的优势。

2.3支撑向量机(SVM)法:

在统计学习理论基础上发展出的一种新的模式识别方法,它基于结构风险最小化的原理,较之于基于经验风险最小化的人工神经网络,一些难以逾越的问题,如:模型选择和过学习问题、非线性和维数灾难问题、局部极小点问题等都得到了很大程度上的解决。但是直接使用SVM方法进行人脸识别有两方面的困难:第一,训练时需要求解二次规划问题计算

复杂度高,内存需求量巨大;第二,在非人脸样本不受限制时,需要极大规模的训练集合,得到的支持向量会很多,使得分类器的计算量过高。

2.4基于积分图像特征的人脸检测方法:

是Viola 等新近提出的一种算法,它综合使用了积分图像描述方法、Adaboost 学习算法及训练方法、级联弱分类器。

3.实验结果与分析

3.1 人脸识别的整体过程

图3.1 人脸识别技术处理流程图

3.1.1人脸图像的获取

一般来说,图像的获取都是通过摄像头摄取,但摄取的图像可以是真人,也可以是人脸的图片或者为了相对简单,可以不考虑通过摄像头来摄取头像,而是直接给定要识别的图像。

3.1.2人脸定位

对人脸图像打上网格,对区域块图像做二值分析,通过像素比例来做处理,进而得到人脸区域。

在彩色图像中,颜色是人脸表面最为显著的特征之一,利用颜色检测人脸是很自然的想法。研究人员在考察了不同种族、不同个体的肤色后,认为人类的肤色能在颜色空间中聚成单独的一类,而影响肤色值变化的最主要因素是亮度变化。因此他们采用广泛使用的RGB 颜色空间,在滤去亮度值的图像中通过比较像素点的r、g值与肤色范围来推断该像素点及图像获取

人脸定位 图像预处理

人脸识别

其邻域是否属于人脸区域。除了RGB颜色空间,还有诸如HIS,LUV,GLHS等其它颜色空间被使用。寻找到肤色区域后,必须进行验证,排除类肤色区域。利用肤色像素的连通性分割出区域,使用椭圆拟合各个区域,根据椭圆长短轴的比率判断是否为人脸。如图3.2所示。

原图像网格标记图像

二值图像标记图像

图3.2人脸定位过程

3.1.3图像预处理

①滤波去噪:空域滤波按照空域滤波器的功能又可分为平滑滤波器和锐化滤波器。平滑滤波器可以用低通滤波实现,目的在于模糊图像或消除噪声;锐化滤波器是用高通滤波来实现,目的在于强调图像被模糊的细节。

②灰度变换:有多种方法可以实现图像的灰度变换,其中最常用的就是直方图变换的方法,即直方图的均衡化。这种方法是一种使输出图像直方图近似服从均匀分布的变换算法。

③边缘检测:数字图像的边缘检测是图像分割、目标区域识别、区域形状提取等图像分析领域十分重要的基础,也是图像识别中提取图像特征的一个重要属性。边缘检测算子可以检查每个像素的邻域并对灰度变化率进行量化,也包括对方向的确定,其中大多数是基于方向导数掩模求卷积的方法。常用的有Sobel算子,Prewitt算子,Roberts算子,Log算子等。

3.4.4人脸识别

把单个图像看成一维向量,众多的一维向量形成了人脸图像特征空间,再将其变换到一

个新的相对简单的特征空间,通过计算矩阵的特征值和特征向量,利用图像的代数特征信息,寻找“人脸”、“非人脸”两种模式在该特征空间中的分布规律。

传统主成成份分析方法的基本原理是:利用K-L变换抽取人脸的主要成分,构成特征脸空间,识别时将测试图像投影到此空间,得到一组投影系数,通过与各个人脸图像比较进行识别。

对于一幅M*N的人脸图像,将其每列相连构成一个大小为D=M*N维的列向量。D就是人脸图像的维数,即是图像空间的维数。

设n是训练样本的数目;X j表示第j幅人脸图像形成的人脸向量,则所需样本的协方差矩阵为:

其中U为训练样本的平均图像向量:

令A=[x1-u,x2-u,...x n-u],则有S r=AA T,其维数为D×D。根据K-L变换原理,需要求得的新坐标系由矩阵AA T的非零特征值所对应的特征向量组成。直接计算的计算量比较大,所以采用奇异值分解(SVD)定理,通过求解A T A的特征值和特征向量来获得AA T的特征值和特征向量。

依据SVD定理,令l i(i=1,2,…,r)为矩阵A T A的r个非零特征值,v i为A T A对应于l i的特征向量,则AA T的正交归一特征向量U i为:

则“特征脸”空间为:w=(U1,U2,...,U n)

将训练样本投影到“特征脸”空间,得到一组投影向量Ω=w T u,构成人脸识别的数据库。在识别时,先将每一幅待识别的人脸图像投影到“特征脸”空间,再利用最邻近分类器比较其与库中人脸的位置,从而识别出该图像是否是库中的人脸,如果是,是哪一幅人脸。

图 3.1.4测试图像与对比结果

3.2实验过程具体分析

3.2.1人脸检测

人脸检测的任务是判断静态图像中是否存在人脸。若存在人脸,给出其在图像中的坐标位置、人脸区域大小等信息。而人脸跟踪则需要进一步输出所检测到的人脸位置、大小等状态随时间的连续变化情况。

3.2.2特征提取

通过人脸特征点的检测与标定可以确定人脸图像中显著特征点的位置(如眼睛、眉毛、鼻子、嘴巴等器官),同时还可以得到这些器官及其面部轮廓的形状信息的描述。根据人脸特征点检测与标定的结果,通过某些运算得到人脸特征的描述。

3.2.3基于人脸图像比对的身份识别

通过将输入人脸图像与人脸数据库中的所有已知原型人脸图像计算相似度并对其排序来给出输入人脸的身份信息。这包括两类识别问题:一类是闭集人脸识别问题,即假定输入的人脸一定是人脸库中的某个个体;另一类是开集识别,即首先要对输入人脸是否在已知人脸库中做出判断,如果是,则给出其身份。

3.2.4基于人脸图像比对的身份验证

即人脸确认问题。系统在输入人脸图像的同时输入一个用户宣称的该人脸的身份信息,系统要对该输入人脸图像的身份与宣称的身份是否相符作出判断。

4.实验结果分析

人脸识别的优势在于其自然性和不被被测个体察觉的特点。人脸识别的困难主要是人脸作为生物特征的特点所带来的。

相似性:不同个体之间的区别不大,所有的人脸的结构都相似,甚至人脸器官的结构外形都很相似。这样的特点对于利用人脸进行定位是有利的,但是对于利用人脸区分人类个体是不利的。

易变性:人脸的外形很不稳定,人可以通过脸部的变化产生很多表情,而在不同观察角度,人脸的视觉图像也相差很大,另外人脸识别还受光照条件、人脸的很多遮盖物、年龄等多方面因素的影响。

特征脸算法(PCA)使得压缩前后的均方误差最小,且变换后的低维空间有很好的分辨能力,但是在种方法在处理人脸图像时,要将二维图像矩阵转换成一维的列向量,使图像的维数达到上万维,计算工作量非常大,特征提取速度慢。

为了克服传统PCA的不足,研究者们相继提出了二维PCA(2DPCA)方法、PCA+2DPCA 等一些方法。

这些方法的提出不仅有效地解决了图像处理的高维问题,而且大大提高了人脸的识别率。

5.心得体会

通过本学期对数字图象处理课程的学习,是我对数字图像处理领域有了一定的了解与体会,熟悉了图像处理的流程与方式方法,加深了我对数字领域的理解。通过matlab实验,是我对matlab应用有了更进一步的掌握与学习,为下一步学习打下了良好的基础。

参考文献

[1]阮秋琦.数字图像处理学[M]. 北京: 电子工业出版社, 2000.4

[2]贺兴华. MATLAB7.x图像处理[M]. 北京: 人民邮电出版社, 2006.11

[3]王耀南. 计算机图像处理与识别技术[M]. 北京: 高等教育出版社, 2001.6

[4]章毓晋. 图像工程[M]. 北京: 清华大学出版社, 2001.9

[5]胡学龙. 数字图像处理[M]. 北京: 电子工业出版社, 2006.9

[6]罗军辉. MATLAB7.0在图像处理中的应用[M]. 北京: 机械工业出版社, 2005.6

[7]刘文耀. 数字图像采集与处理[M]. 北京: 电子工业出版社, 2007.8

[8]缪绍纲. 数字图像处理——活用MATLAB [M].成都: 西南交通大学出版社, 2001.7

[9]罗良正.数字图像处理[M]. 南京: 东南大学出版社, 1999.8

附录代码:(运行exampae.m文件)

%Ch1

Img = imread('1.jpg');

if ndims(Img) == 3

I=rgb2gray(Img);

else

I = Img;

end

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

figure;

imshow(Img);

title('原图像');

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

imshow(BW);

title('二值图像');

[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

imshow(I); hold on;

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

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

title('标记图像');

%CreateDatabase

function T = CreateDatabase(TrainDatabasePath)

% Align a set of face images (the training set T1, T2, ... , TM ) %

% Description: This function reshapes all 2D images of the training database

% into 1D column vectors. Then, it puts these 1D column vectors in a row to

% construct 2D matrix 'T'.

%

%

% Argument: TrainDatabasePath - Path of the training database

%

% Returns: T - A 2D matrix, containing all 1D image vectors.

% Suppose all P images in

the training database

% have the same size of MxN. So the length of 1D

% column vectors is MN

and 'T' will be a MNxP 2D matrix.

%

% See also: STRCMP, STRCAT, RESHAPE

% Original version by Amir Hossein Omidvarnia, October 2007

% Email: aomidvar@ece.ut.ac.ir

%%%%%%%%%%%%%%%%%%%%%%%% File management

TrainFiles = dir(TrainDatabasePath);

Train_Number = 0;

for i = 1:size(TrainFiles,1)

if

not(strcmp(TrainFiles(i).name,'.')|strcmp(TrainFiles(i).name,'..'

)|strcmp(TrainFiles(i).name,'Thumbs.db'))

Train_Number = Train_Number + 1; % Number of all images

in the training database

end

end

%%%%%%%%%%%%%%%%%%%%%%%% Construction of 2D matrix from 1D image vectors

T = [];

for i = 1 : Train_Number

% I have chosen the name of each image in databases as a corresponding

% number. However, it is not mandatory!

str = int2str(i);

str = strcat('\',str,'.jpg');

str = strcat(TrainDatabasePath,str);

img = imread(str);

img = rgb2gray(img);

[irow icol] = size(img);

temp = reshape(img',irow*icol,1); % Reshaping 2D images into 1D image vectors

T = [T temp]; % 'T' grows after each turn end

%EigenfaceCore

function [m, A, Eigenfaces] = EigenfaceCore(T)

% Use Principle Component Analysis (PCA) to determine the most % discriminating features between images of faces.

%

% Description: This function gets a 2D matrix, containing all training image vectors

% and returns 3 outputs which are extracted from training database.

%

% Argument: T - A 2D matrix, containing all 1D image vectors.

% Suppose all P images

in the training database

% have the same size of MxN. So the length of 1D

% column vectors is M*N

and 'T' will be a MNxP 2D matrix.

%

% Returns: m - (M*Nx1) Mean of the training database

% Eigenfaces - (M*Nx(P-1)) Eigen vectors of the covariance matrix of the training database % A - (M*NxP) Matrix of centered image vectors

%

% See also: EIG

% Original version by Amir Hossein Omidvarnia, October 2007

% Email: aomidvar@ece.ut.ac.ir

%%%%%%%%%%%%%%%%%%%%%%%% Calculating the mean image

m = mean(T,2); % Computing the average face image m = (1/P)*sum(Tj's) (j = 1 : P)

Train_Number = size(T,2);

%%%%%%%%%%%%%%%%%%%%%%%% Calculating the deviation of each image

from mean image

A = [];

for i = 1 : Train_Number

temp = double(T(:,i)) - m; % Computing the difference image

for each image in the training set Ai = Ti - m

A = [A temp]; % Merging all centered images

end

%%%%%%%%%%%%%%%%%%%%%%%% Snapshot method of Eigenface methos

% We know from linear algebra theory that for a PxQ matrix, the maximum

% number of non-zero eigenvalues that the matrix can have is min(P-1,Q-1).

% Since the number of training images (P) is usually less than the number

% of pixels (M*N), the most non-zero eigenvalues that can be found are equal

% to P-1. So we can calculate eigenvalues of A'*A (a PxP matrix) instead of

% A*A' (a M*NxM*N matrix). It is clear that the dimensions of A*A' is much

% larger that A'*A. So the dimensionality will decrease.

L = A'*A; % L is the surrogate of covariance matrix C=A*A'.

[V D] = eig(L); % Diagonal elements of D are the eigenvalues for both L=A'*A and C=A*A'.

%%%%%%%%%%%%%%%%%%%%%%%% Sorting and eliminating eigenvalues

% All eigenvalues of matrix L are sorted and those who are less than a

% specified threshold, are eliminated. So the number of non-zero % eigenvectors may be less than (P-1).

L_eig_vec = [];

for i = 1 : size(V,2)

if( D(i,i)>1 )

L_eig_vec = [L_eig_vec V(:,i)];

end

end

%%%%%%%%%%%%%%%%%%%%%%%% Calculating the eigenvectors of covariance matrix 'C'

% Eigenvectors of covariance matrix C (or so-called "Eigenfaces")

% can be recovered from L's eiegnvectors.

Eigenfaces = A * L_eig_vec; % A: centered image vectors

%example

% A sample script, which shows the usage of functions, included

in

% PCA-based face recognition system (Eigenface method)

%

% See also: CREATEDATABASE, EIGENFACECORE, RECOGNITION

% Original version by Amir Hossein Omidvarnia, October 2007

% Email: aomidvar@ece.ut.ac.ir

clear all

clc

close all

% You can customize and fix initial directory paths

TrainDatabasePath = uigetdir('D:\Program

Files\MATLAB\R2006a\work', 'Select training database path' );

TestDatabasePath = uigetdir('D:\Program Files\MATLAB\R2006a\work', 'Select test database path');

prompt = {'Enter test image name (a number between 1 to 10):'};

dlg_title = 'Input of PCA-Based Face Recognition System';

num_lines= 1;

def = {'1'};

TestImage = inputdlg(prompt,dlg_title,num_lines,def);

TestImage = strcat(TestDatabasePath,'\',char(TestImage),'.jpg');

im = imread(TestImage);

T = CreateDatabase(TrainDatabasePath);

[m, A, Eigenfaces] = EigenfaceCore(T);

OutputName = Recognition(TestImage, m, A, Eigenfaces);

SelectedImage = strcat(TrainDatabasePath,'\',OutputName);

SelectedImage = imread(SelectedImage);

imshow(im)

title('Test Image');

figure,imshow(SelectedImage);

title('Equivalent Image');

str = strcat('Matched image is : ',OutputName);

disp(str)

%Recognition

function OutputName = Recognition(TestImage, m, A, Eigenfaces) % Recognizing step....

%

% Description: This function compares two faces by projecting the images into facespace and

% measuring the Euclidean distance between them.

%

% Argument: TestImage - Path of the input test image

%

% m - (M*Nx1) Mean of the training

% database, which is output of 'EigenfaceCore' function.

%

% Eigenfaces - (M*Nx(P-1)) Eigen vectors of the

% covariance matrix of the training

% database, which is output of 'EigenfaceCore' function.

%

% A - (M*NxP) Matrix of centered image

% vectors, which is output of 'EigenfaceCore' function.

%

% Returns: OutputName - Name of the recognized image in the training database.

%

% See also: RESHAPE, STRCAT

% Original version by Amir Hossein Omidvarnia, October 2007

% Email: aomidvar@ece.ut.ac.ir

%%%%%%%%%%%%%%%%%%%%%%%% Projecting centered image vectors into facespace

% All centered images are projected into facespace by multiplying

in

% Eigenface basis's. Projected vector of each face will be its corresponding

% feature vector.

ProjectedImages = [];

Train_Number = size(Eigenfaces,2);

for i = 1 : Train_Number

temp = Eigenfaces'*A(:,i); % Projection of centered images

into facespace

ProjectedImages = [ProjectedImages temp];

end

%%%%%%%%%%%%%%%%%%%%%%%% Extracting the PCA features from test image

InputImage = imread(TestImage);

temp = InputImage(:,:,1);

[irow icol] = size(temp);

InImage = reshape(temp',irow*icol,1);

Difference = double(InImage)-m; % Centered test image

ProjectedTestImage = Eigenfaces'*Difference; % Test image feature vector

%%%%%%%%%%%%%%%%%%%%%%%% Calculating Euclidean distances

% Euclidean distances between the projected test image and the projection

% of all centered training images are calculated. Test image is % supposed to have minimum distance with its corresponding image in the

% training database.

Euc_dist = [];

for i = 1 : Train_Number

q = ProjectedImages(:,i);

temp = ( norm( ProjectedTestImage - q ) )^2;

Euc_dist = [Euc_dist temp];

end

[Euc_dist_min , Recognized_index] = min(Euc_dist);

OutputName = strcat(int2str(Recognized_index),'.jpg');

基于ARM9的人脸识别系统 嵌入式报告 课程设计

嵌入式课程设计报告 学院信息电子技术 专业通信工程 班级 学号 姓名 指导教师 2017年07月01日

基于ARM9的人脸识别系统 一、引言 人脸识别背景和意义 人脸识别系统的研究始于20世纪60年代,80年代后随着计算机技术和光学成像技术的发展得到提高,而真正进入初级的应用阶段则在90年后期,并且以美国、德国和日本的技术实现为主;人脸识别系统成功的关键在于是否拥有尖端的核心算法,并使识别结果具有实用化的识别率和识别速度;“人脸识别系统”集成了人工智能、机器识别、机器学习、模型理论、专家系统、视频图像处理等多种专业技术,同时需结合中间值处理的理论与实现,是生物特征识别的最新应用,其核心技术的实现,展现了弱人工智能向强人工智能的转化语音识别、体形识别等,而指纹识别、虹膜识别等都不具有自然性,因为人类或者其他生物并不通过此类生物特征区别个体。 人脸识别具有这方面的特点,它完全利用可见光获取人脸图像信息,而不同于指纹识别或者虹膜识别,需要利用电子压力传感器采集指纹,或者利用红外线采集虹膜图像,这些特殊的采集方式很容易被人察觉,从而更有可能被伪装欺骗。 二、系统设计 1、硬件电路设计 (1)ARM9处理器 本系统所采用的硬件平台是天嵌公司的TQ2440开发板,该开发板的微处理器采用基于ARM920T内核的S3C2440芯片。 ARM9对比ARM7的优势:虽然ARM7和ARM9内核架构相同,但ARM7处理器采用3级流水线的冯·诺伊曼结构,而ARM9采用5级流水线的哈佛结构。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时有5个指令在执行。在常用的芯片生产工艺下,ARM7一般运行在100MHz左右,而ARM9则至少在200MHz 以上。指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,性能的提高在30%左右。ARM7一般没有MMU(内存管理单元),(ARM720T有MMU)。 (2)液晶显示屏 为显示摄像头当前采集图像的预览,系统采用三星的320x240像素的液晶屏,大小为206.68cm。该液晶显示屏的每个像素深度为2bit,采用RGB565色彩空间。 (3)摄像头 摄像头采用市场上常见的网眼2000摄像头,内部是含CMOS传感器的OV511+芯片。CMOS传感器采用感光元件作为影像捕获的基本手段,核心是1个感光二极

机器学习概述课程设计报告(MATLAB人脸识别)

机器学习概述课程设计报告题目:MATLAB人脸识别系统 姓名:** 学号:** 专业:** 时间:2015/8/7

目录 一、课程设计的目的............................................................................... 二、设计的内容与要求........................................................................... 三、详细设计........................................................................................... 四、课程设计的总结............................................................................... 五、参考文献...........................................................................................

一.课程设计的目的 人脸识别作为一项新兴的科学研究项目,有着广泛的应用前景,而且随着计算机技术的更新发展,它的科学研究价值也越发凸显。经过几十年的研发探讨,世界各大研究结构的研发人员的不断努力下,人脸识别技术一已取得丰硕的成果,可在一定限制条件下完成人脸的自动识别。这些成果的取得更促进了人们对人脸识别这一课题的深入研究。 在电子商务飞速发展的今天,人脸识别系统的范畴一不足以涵括人脸识别的应用范围,在数字图像处理、视频领域、基于内容的检索等方面有着重要的应用价值。。 二.设计的内容及要求 1、选择KNN,聚类或SVM方法中的一种或其他机器学习方法的一种进行课程设计 2、要求能完成具体的识别任务:如图像分割、语音识别、人脸识别 3、要求识别的对象中有自己生活元素,比如图像中包括学校的图片或语音时本人的语音等。三.详细设计 YCbCr空间——>灰度图像转换——>噪声消除——>图像填孔——>图像重构——>人脸区域确定——>边缘检测 (原图-涉及个人隐私,未呈现原图)

基于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{:});

模式识别课程设计

模式识别导论课程设计 学号: 班级: 姓名:

课程名称模式识别考试性质考查试卷类型 A 使用班级电信1101-1103 考试方法大作业人数100 题号一二三四五六七八九十总成绩成绩

(2)分类器设计方法概述及选择依据分析;(10分) (3)感知器算法原理及算法步骤;(20分) (4)感知器算法流程设计;(20分) (5)感知器算法程序;(10分) (6)程序仿真及结果分析;(20分) (7)结论;(5分) (8)参考文献。(5分) 四、请结合具体的应用背景,设计基于K-L变换的特征提取算法,并编写程序,分析结果,提交报告一份。 报告内容包括:(1)具体应用背景的介绍;(10分) (2)特征提取方法概述及选择依据分析;(10分) (3)基于K-L变换的特征提取算法原理及步骤;(20分) (4)基于K-L变换的特征提取算法流程设计;(20分) (5)基于K-L变换的特征提取算法程序;(10分) (6)程序仿真及结果分析;(20分) (7)结论;(5分) (8)参考文献。(5分)

1具体应用背景的介绍 随着社会经济的发展、人口的增多,人们对水资源的利用更加重视,不同的水资源质量程度不一,为了更好地适应人类的需求,需要对水资源根据污染物有机物、无机物、重金属含量进行适当的分类。在这里将运用模式识别的方法简单的对其分类为一类水与二类水。 2分类器设计方法概述及选择依据分析 感知器是一种神经网络模型,是20世纪50年代中期到60年代初人们对模拟人脑学习能力的一种分类学习机模型的称呼,当时有些人认为它是一种学习记的强有力模型,后来发现估计过高,由于无法实现非线性分类,到60年代中期,从事感知器研究的实验室纷纷下马,但在发展感知器是所获得的一些数学概念,如“赏罚分明”今天仍在模式识别中起着很大的作用。 将用感知器的方法在本次设计中对水资源进行分类 3感知器算法原理及算法步骤 两类线性可分的模式类 21,ωω,设 X W X d T )(=其中,[]T 121,,,,+=n n w w w w W ,[]T 211,,,,n x x x =X 应具有性质 (3-1) 对样本进行规范化处理,即ω2类样本全部乘以(-1),则有: 2)-(3 0)(T >=X W X d 感知器算法通过对已知类别的训练样本集的学习,寻找一个满足上式的权向量。 感知器算法步骤: (1)选择N 个分属于ω1和 ω2类的模式样本构成训练样本集{ X1 ,…, XN }构成增广向量形式,并进行规范化处理。任取权向量初始值W(1),开始迭代。迭代次数k=1。 (2)用全部训练样本进行一轮迭代,计算W T (k )X i 的值,并修正权向量。 分两种情况,更新权向量的值: ?? ?∈<∈>=2 1 T ,0,0)(ωωX X X W X 若若d

基于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)

模式识别课程设计

模式识别 课程设计 关于黄绿树叶的分类问题 成员:李家伟2015020907010 黄哲2015020907006 老师:程建 学生签字:

一、小组分工 黄哲:数据采集以及特征提取。 李家伟:算法编写设计,完成测试编写报告。 二、特征提取 选取黄、绿树叶各15片,用老师给出的识别算法进行特征提取 %Extract the feature of the leaf clear, close all I = imread('/Users/DrLee/Desktop/kmeans/1.jpg'); I = im2double(I); figure, imshow(I) n = input('Please input the number of the sample regions n:'); h = input('Please input the width of the sample region h:'); [Pos] = ginput(n); SamNum = size(Pos,1); Region = []; RegionFeatureCum = zeros((2*h+1)*(2*h+1)*3,1); RegionFeature = zeros((2*h+1)*(2*h+1)*3,1); for i = 1:SamNum P = round(Pos(i,:)); rectangle('Position', [P(1) P(2) 2*h+1 2*h+1]); hold on Region{i} = I(P(2)-h:P(2)+h,P(1)-h:P(1)+h,:); RegionFeatureCum = RegionFeatureCum + reshape(Region{i},[(2*h+1)*(2*h+1)*3,1]); end hold off RegionFeature = RegionFeatureCum / SamNum 1~15为绿色树叶特征,16~30为黄色树叶特征,取n=3;h=1,表示每片叶子取三个区域,每个区域的特征为3*3*3维的向量,然后变为27*1的列向量,表格如下。

人脸识别课程设计论文(完美版)

前言 在人类社会的发展进入到21世纪的今天,安全问题已经成为困扰人们日常生活的重要问题之一。社会的发展促进了人的流动性,进而也增加了社会的不稳定性,使得安全方面的需求成为21世纪引起广泛关注的问题。不论是享受各项服务如网上冲浪、还是居家、办公等都涉及到安全,以往这些行为基本上是通过符号密码来进行安全保护,但是随着服务数量的不断增加,密码越来越多以致无法全部记住,而且密码有时也会被他人所窃取,各种密码被破解的概率越来越高,因为通常由于记忆的原因,人们经常会选用自己或亲人的生日、家庭地址、电话号码等作为密码并长期使用,这些很容易被一些不法分子获取。可见在现代社会中,身份识别已经成为人们日常生活中经常遇到的一个基本问题。人们乎时时刻刻都需要鉴别别人的身份和证明自己的身份,以获得对特定资源的使用权或者制权,同时防止这些权限被他人随意的取得。传统的身份识别方法主要基于身份标识物(如证件、卡片)和身份标识知识(如用户名、密码)来识别身份,这在很长一段时期是非常可靠和方便的识别方法,得到了广泛的应用。但是,随着网络、通信、交通等技的飞速发展,人们活动的现实空间和虚拟空间不断扩大,需要身份认证的场合也变得无不在。人们需要携带的身份标识物品越来越多,身份标识知识也变得越来越复杂和冗长在这种情况下,传统身份识别方式的弊端日益彰显。身份标识物品容易被丢失和伪造,份标识知识容易被遗忘、窃取和破解,而身份标识的重要性又使得一旦失去了身份标识会给标识的所有者甚至整个社会带来重大的甚至难以弥补的损失。在美国,每年约有上百万的福利款被人以假冒的身份领取;每年发生的信用卡、ATM、移动电话和冒领支票等成的损失达数百亿美元[2]。面临着这样的状况,人们对身份识别的安全性、可靠性、准确和实用性提出了更高的要求,必须寻求身份识别的新途径。 于是,近年来人类生物特征越来越广泛地用于身份识别,而且生物特征可以更好的进行安全控制,世界各国政府都在大力推进生物识别技术的发展及应用。与原有的人类身分识别技术(如:个人密码、磁卡、智能卡等)相比,基于人类生物特征的识别技术具有安全可靠、特征唯一、不易伪造、不可窃取等优点。人类本身具有很多相对独特的特征,如DNA、指纹、虹膜、语音、人脸等。基于这些相对独特的人类特征,结合计算机技术,发展起众多的基于人类生物特征的人类身份识别技术,如DNA识别技术、指纹识别技术、虹膜识别技术、语音识别技术、人脸识别技术。 人脸识别和其他的生物识别比起来有以下几个优点:1、其他的生物特征识别方法都需要一些人为的行为配合,而人脸识别不需要。2、人脸识别可应用在远距离监控中。3、针一对现在的第一、二代身份证,每个身份证都有人脸的正面照片,也就是人脸库将是最完善的,包括人最多的,我们可以利用这个库来更直观、更方便的核查该人的身份。 4、相对于其他基于生物特征识别技术,人脸识别技术具有特征录入方一便,信息丰富,使用面广等优点,同时人脸识别系统更加直接友好。人脸识别技术作为生物识别技术的

人脸识别程序源代码

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所示。本程序能顺利检测出大部分人脸,但由于光照、遮挡和倾斜等原因,部分人脸不能正确检测,另外,也有一些非人脸部分由于具有人脸的某些特征,也被当成了人脸,这些都是本程序需要改进的部分。

《模式识别基础》课程标准

《模式识别基础》课程标准 (执笔人:刘雨审阅学院:电子科学与工程学院)课程编号:08113 英文名称:Pattern Recognition 预修课程:高等数学,线性代数,概率论与数理统计,程序设计 学时安排:40学时,其中讲授32学时,实践8学时。 学分:2 一、课程概述 (一)课程性质地位 模式识别课基础程是军事指挥类本科生信息工程专业的专业基础课,通信工程专业的选修课。在知识结构中处于承上启下的重要位置,对于巩固已学知识、开展专业课学习及未来工作具有重要意义。课程特点是理论与实践联系密切,是培养学生理论素养、实践技能和创新能力的重要环节。是以后工作中理解、使用信息战中涉及的众多信息处理技术的重要知识储备。 本课程主要介绍统计模式识别的基本理论和方法,包括聚类分析,判别域代数界面方程法,统计判决、训练学习与错误率估计,最近邻方法以及特征提取与选择。 模式识别是研究信息分类识别理论和方法的学科,综合性、交叉性强。从内涵讲,模式识别是一门数据处理、信息分析的学科,从应用讲,属于人工智能、机器学习范畴。理论上它涉及的数学知识较多,如代数学、矩阵论、函数论、概率统计、最优化方法、图论等,用到信号处理、控制论、计算机技术、生理物理学等知识。典型应用有文字、语音、图像、视频机器识别,雷达、红外、声纳、遥感目标识别,可用于军事、侦探、生物、天文、地质、经济、医学等众多领域。 (二)课程基本理念 以学生为主体,教师为主导,精讲多练,以用促学,学以致用。使学生理解模式识别的本质,掌握利用机器进行信息识别分类的基本原理和方法,在思、学、用、思、学、用的循环中,达到培养理论素养,锻炼实践技能,激发创新能力的目的。 (三)课程设计思路 围绕培养科技底蕴厚实、创新能力突出的高素质人才的目标,本课程的培养目标是:使学生掌握统计模式识别的基本原理和方法,了解其应用领域和发展动态,达到夯实理论基础、锻炼理论素养及实践技能、激发创新能力的目的。 模式识别是研究分类识别理论和方法的学科,综合性、交叉性强,涉及的数学知识多,应用广。针对其特点,教学设计的思路是:以模式可分性为核心,模式特征提取、学习、分类为主线,理论上分层次、抓重点,方法上重比较、突出应用适应性。除了讲授传统的、经典的重要内容之外,结合科研成果,介绍不断出现的新理论、新方法,新技术、新应用,开拓学生视野,激发学习兴趣,培养创新能力。 教学设计以章为单元,用实际科研例子为引导,围绕基本原理展开。选择两个以上基本方法,辅以实验,最后进行对比分析、归纳总结。使学生在课程学习中达到一个思、学、用、

人脸识别程序源代码

人脸识别程序源代码 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实现人脸识别 学院:信息工程学院 班级:计科软件普131 成员:

一、问题描述 在一个人脸库中,有15 个人,每人有11 幅图像。要求选定每一个人的若干幅图像组成样本库,由样本库得到特征库。再任取图像库的一张图片,识别它的身份。 对于一幅图像可以看作一个由像素值组成的矩阵,也可以扩展开,看成一个矢量。如一幅N*N象素的图像可以视为长度为N2的矢量,这样就认为这幅图像是位于N2维空间中的一个点,这种图像的矢量表示就是原始的图像空间,但是这个空间仅是可以表示或者检测图像的许多个空间中的一个。不管子空间的具体形式如何,这种方法用于图像识别的基本思想都是一样的,首先选择一个合适的子空间,图像将被投影到这个子空间上,然后利用对图像的这种投影间的某种度量来确定图像间的相似度,最常见的就是各种距离度量。因此,本次采用PCA算法确定一个子空间,最后使用最小距离法进行识别,并用matlab实现。

二、PCA 原理和人脸识别方法 1)K-L 变换 K-L 变换以原始数据的协方差矩阵的归一化正交特征矢量构成的正交矩阵作为变换矩阵,对原始数据进行正交变换,在变换域上实现数据压缩。它具有去相关性、能量集中等特性,属于均方误差测度下,失真最小的一种变换,是最能去除原始数据之间相关性的一种变换。PCA 则是选取协方差矩阵前k 个最大的特征值的特征向量构成K-L 变换矩阵。 2)主成分的数目的选取 保留多少个主成分取决于保留部分的累积方差在方差总和中所占百分比(即累计贡献率),它标志着前几个主成分概括信息之多寡。实践中,粗略规定一个百分比便可决定保留几个主成分;如果多留一个主成分,累积方差增加无几,便不再多留。 3)人脸空间建立 假设一幅人脸图像包含N 个像素点,它可以用一个N 维向量Γ表示。这样,训练样本库就可以用Γi(i=1,...,M)表示。协方差矩阵C 的正交特征向量就是组成人脸空间的基向量,即特征脸。将特征值由大到小排列:λ1≥λ2≥...≥λr,其对应的特征向量为μk。这样每一幅人脸图像都可以投影到由u1,u2,...,ur张成的子空间中。因此,每一幅人脸图像对应于子空间中的一点。同样,子空间的任意一点也对

人脸识别系统设计与仿真 基于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年代以来.随着人工智能技术的兴起.以及人类视觉研究的进展.人们逐渐对人脸图像的机器识别投入很大的热情,并形成了一个人脸图像识别研究领域,.这一领域除了它的重大理论价值外,也极具实用价值。 在进行人工智能的研究中,人们一直想做的事情就是让机器具有像人类一样的思考能力,以及识别事物、处理事物的能力,因此从解剖学、心理学、行为感知学等各个角度来探求人类的思维机制、以及感知事物、处理事物的机制,并努力将这些机制用于实践,如各种智能机器人的研制。人脸图像的机器识别研究就是在这种背景下兴起的,因为人们发现许多对于人类而言可以轻易做到的事情,而让机器来实现却很难,如人脸图像的识别,语音识别,自然语言理解等。如果能够开发出具有像人类一样的机器识别机制,就能够逐步地了解人类是如何存储信息,并进行处理的,从而最终了解人类的思维机制。 同时,进行人脸图像识别研究也具有很大的使用价依。如同人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。现在己

数字图像处理课程设计人脸检测与识别

数字图像处理课程设计

人脸检测与识别课程设计一、简介人脸检测与识别是当前模式识别领域的一个前沿课题,人脸识别技术就是利用计算机技 术,根据数据库的人脸图像,分析提取出有效的识别信息,用来 “辨认”身份的技术。人脸识别是模式识别研究的一个热点, 它 在身份鉴别、信用卡识别, 护照的核对及监控系统等方面有着广 泛的应用。人脸图像由于受光照、表情以及姿态等因素的影响, 使得同一个人的脸像矩阵差异也比较大。因此, 进行人脸识别时, 所选取的特征必须对上述因素具备一定的稳定性和不变性. 主 元分析(PCA)方法是一种有效的特征提取方法,将人脸图像表示成 一个列向量, 经过PCA 变换后, 不仅可以有效地降低其维数, 同 时又能保留所需要的识别信息, 这些信息对光照、表情以及姿态 具有一定的不敏感性. 在获得有效的特征向量后, 关键问题是设 计具有良好分类能力和鲁棒性的分类器. 支持向量机(SVM ) 模 式识别方法,兼顾训练误差和泛化能力, 在解决小样本、非线性及 高维模式识别问题中表现出许多特有的优势。 本此课程设计基于MATLAB,将检测与识别分开进行。其中检测 部分使用实验指导书上的肤色模型算法进行,不进行赘述。识别 部分采用PCA算法对检测出的人脸图像进行特征提取, 再利用最

邻近距离分类法对特征向量进行分类识别,将在后文具体表述。仿真结果验证了本算法是有效的。 二、人脸检测源码 1.img=imread('D:\std_test_images\face3.jpg'); figure; imshow(img); R=img(:,:,1); G=img(:,:,2); B=img(:,:,3); faceRgn1=(R>95)&(G>40)&(B>20)&max(img,[],3)-min(img,[],3)>15& abs(R-G)>15&R>B; figure; imshow(faceRgn1); r=double(R)./double(sum(img,3)); g=double(G)./double(sum(img,3)); Y=0.3*R+0.59*G+0.11*B; faceRgn2=(r>0.333)&(r<0.664)&(g>0.246)&(g<0.398)&(r>g)& g>=0.5-0.5*r; figure; imshow(faceRgn2); Q=faceRgn1.*faceRgn2;

机器学习概述课程设计报告MATLAB人脸识别

机器学习概述课程设计 报告M A T L A B人脸识别 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

机器学习概述课程设计报告题目:MATLAB人脸识别系统 姓名:** 学号:** 专业:** 时间:2015/8/7

目录 一、课程设计的目的.......................................... 二、设计的内容与要求........................................ 三、详细设计................................................ 四、课程设计的总结.......................................... 五、参考文献................................................

一. 课程设计的目的 人脸识别作为一项新兴的科学研究项目,有着广泛的应用前景,而且随着计算机技术的更新发展,它的科学研究价值也越发凸显。经过几十年的研发探讨,世界各大研究结构的研发人员的不断努力下,人脸识别技术一已取得丰硕的成果,可在一定限制条件下完成人脸的自动识别。这些成果的取得更促进了人们对人脸识别这一课题的深入研究。 在电子商务飞速发展的今天,人脸识别系统的范畴一不足以涵括人脸识别的应用范围,在数字图像处理、视频领域、基于内容的检索等方面有着重要的应用价值。。 二.设计的内容及要求 1、选择KNN,聚类或SVM方法中的一种或其他机器学习方法的一种 进行课程设计 2、要求能完成具体的识别任务:如图像分割、语音识别、人脸识 别 3、要求识别的对象中有自己生活元素,比如图像中包括学校的图片或语音时本人的语音等。 三.详细设计 YCbCr空间——>灰度图像转换——>噪声消除——>图像填孔——>图像重构——>人脸区域确定——>边缘检测

人脸识别源代码.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所示。本程序能顺利检测出大部分人脸,但由于光照、遮挡和倾斜等原因,部分人脸不能正确检测,另外,也有一些非人脸部分由于具有人脸的某些特征,也被当成了人脸,这些都是本程序需要改进的部分。

模式识别课程设计教学内容

模式识别课程设计

模式识别课程设计 聚类图像分割 一.图像分割概述 图像分割是一种重要的图像分析技术。在对图像的研究和应用中,人们往往仅对图像中的某些部分感兴趣。这些部分常称为目标或前景(其他部分称为背景)。它们一般对应图像中特定的、具有独特性质的区域。为了辨识和分析图像中的目标,需要将它们从图像中分离提取出来,在此基础上才有可能进一步对目标进行测量,对图像进行利用。图像分割就是把图像分成各具特性的区域并提取出感兴趣目标的技术和过程。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。近年来,研究人员不断改进原有的图像分割方法并把其它学科的一些新理论和新方法用于图像分割,提出了不少新的分割方法。 图象分割是图象处理、模式识别和人工智能等多个领域中一个十分重要且又十分困难的问题,是计算机视觉技术中首要的、重要的关键步骤。图象分割应用在许多方面,例如在汽车车型自动识别系统中,从CCD摄像头获取的图象中除了汽车之外还有许多其他的物体和背景,为了进一步提取汽车特征,辨识车型,图象分割是必须的。因此其应用从小到检查癌细胞、精密零件表面缺陷检测,大到处理卫星拍摄的地形地貌照片等。在所有这些应用领域中,最终结

果很大程度上依赖于图象分割的结果。因此为了对物体进行特征的提取和识别,首先需要把待处理的物体(目标)从背景中划分出来,即图象分割。但是,在一些复杂的问题中,例如金属材料内部结构特征的分割和识别,虽然图象分割方法已有上百种,但是现有的分割技术都不能得到令人满意的结果,原因在于计算机图象处理技术是对人类视觉的模拟,而人类的视觉系统是一种神奇的、高度自动化的生物图象处理系统。目前,人类对于视觉系统生物物理过程的认识还很肤浅,计算机图象处理系统要完全实现人类视觉系统,形成计算机视觉,还有一个很长的过程。因此从原理、应用和应用效果的评估上深入研究图象分割技术,对于提高计算机的视觉能力和理解人类的视觉系统都具有十分重要的意义。 二.常用的图像分割方法 1.基于阈值的分割方法 包括全局阈值、自适应阈值、最佳阈值等等。阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。阈值确定后,将阈值与像素点的灰度值比较和像素分割可对各像素并行地进行,分割的结果直接给出图像区域。全局阈值是指整幅图像使用同一个阈值做分割处理,适用于背景和前景有明显对比的图像。它是根据整幅图像确定的:T=T(f)。但是这种方法只考虑像素本身的灰度值,一般不考虑空间特征,因而对噪声很敏感。常用的全局阈值选取方法有利用图像灰度直方图的峰谷法、最小误差法、最大类间方差法、最大熵自动阈值法以及其它一些方法。

基于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的人脸识别程序-代码详解

#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;

相关文档
最新文档