相似性:不同个体之间的区别不大,所有的人脸的结构都相似,甚至人脸器官的结构外形都很相似。这样的特点对于利用人脸进行定位是有利的,但是对于利用人脸区分人类个体是不利的。
易变性:人脸的外形很不稳定,人可以通过脸部的变化产生很多表情,而在不同观察角度,人脸的视觉图像也相差很大,另外人脸识别还受光照条件、人脸的很多遮盖物、年龄等多方面因素的影响。
特征脸算法(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