数字图像处理课程设计Word下载.docx
《数字图像处理课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《数字图像处理课程设计Word下载.docx(24页珍藏版)》请在冰点文库上搜索。
4、对人脸进行模糊或者马赛克处理.
3人脸识别系统概述
3.1当前现状
自动人脸识别技术的研究开始于20世纪60年代末期。
20世纪90年代后期以来,一些商业性的人脸识别系统逐渐进入市场。
近几年,人脸识别作为计算机安全技术在全球范围内迅速发展起来,特别是美国遭遇恐怖袭击后,这一技术引起广泛关注。
人脸识别技术具有广泛的应用前景,在国家安全、军事安全和公共安全领域,智能门禁、智能视频监控、公安布控、海关身份验证、司机驾照验证等是典型的应用;
在民事和经济领域,各类银行卡、金融卡、信用卡、储蓄卡的持卡人的身份验证、社会保险人的身份验证等具有重要的应用价值;
在家庭娱乐等领域,人脸识别也具有一些有趣有益的应用,比如能够识别主人身份的智能玩具、家政机器人、具有真实面像的虚拟游戏玩家等等.
人脸识别作为一种人体生物特征识别技术,它涉及人工智能、模式识别、计算机视觉、图像处理和分析、图像编码、计算机图形学等众多学科领域,依据视觉通道的输入信息,在人脸检测和跟踪得到输入人脸图像
模式的基础上,定位人面的主要生理特征区域(眼睛、鼻子、下巴等)并给出其形状特征,实现输入人脸模式的识别,达到确定使用者身份的目的。
3。
2系统概述
人脸识别包括人脸检测、人脸图像预处理、人脸特征提取和人脸识别等过程。
人脸检测是指在输入图
像中确定人脸的位置与大小.人脸检测的质量影响人脸识别的其他过程以及整个人脸识别的效果,在人脸识别过程中显得尤为重要。
近年来,电子商务等网络资源的利用使得可视电话、视频会议、多媒体教学等快捷便利的交流方式成为时尚,如何实时实现复杂背景下对人脸检测和识别已成为人脸识别研究的热点[1]。
目前,已有神经网络算法、基于Hough变换或可适应的Hough变换逼近、小波变换、镶嵌图方法、颜色纹理
规则等多种人脸检测方法[2~
6]。
这些方法是针对静态图像的基于人脸特征的统计与结构分析方法,虽具有一般性,但分析计算量大,对噪声敏感,性能不稳定,难以实时检测。
3.3人脸识别的常用方法
1、基于几何特征的人脸正面图像识别方法
通过人脸面部拓扑结构几何关系的先验知识,利用基于结构的方法在知识的层次上提取人脸面部主要
器官特征,将人脸用一组几何特征矢量来表示,识别归结为特征矢量之间的匹配,基于欧氏距离的判决是最常用的识别方法。
2、基于统计的人脸正面自动识别方法
基于统计的人脸正面自动识别方法包括特征脸方法和隐马尔科夫模型方法。
统计的识别方法将人脸用代数特征矢量来表示。
代数特征是由Hong等首先提出的,由图像本身的灰度分布决定,它描述了图像的内存信息,它是通过对图像灰度进行各种代数变换和矩阵分解提出的.
将人脸看作一个二维的灰度变化的模板,从整体上捕捉和描述人脸的特征,所运用的主要是一些标准的数据统计技巧,运算比较复杂
4设计内容
4.1系统方案设计
图1系统总设计方框图
4.2软件模块设计
4.2.1图像输入设计
可以通过摄像头来获取,也可以通过图像库来获取。
在图像获取以后,将图像显示出来,同时记录下图像在内存的地址,以便在图像处理中使用。
RGB=imread(’face06。
jpg’);
%face02,04,06
YCbCr=rgb2ycbcr(RGB);
%将RGB色彩值变换为YcbCr色彩空间(将RGB真彩色图像转化为YcbCr色彩空间中相等的图像)
Y=YCbCr(:
:
,1);
%这三行分别是Ycbcr空间的y,cb,cr对应矩阵
Cb=YCbCr(:
,:
,2);
Cr=YCbCr(:
3);
imshow(RGB);
title(’原始图像RGB'
);
%原始图像
figure,imshow(YCbCr);
title(’YcbCr色彩空间的图像'
);
%进行将RGB色彩值变换为YcbCr色彩空间的图像
如图2所示:
原始图像
YCbCr图
图2原图像与YCbCr图
4。
2。
2图像肤色区分设计
人脸定位是完成对需定位的人脸运动区域进行肤色检测.在肤色分割阶段,采用YCrCb色度空间,能较好地获取肤色区域,排除一些类似人脸肤色的非人脸区域,并使用投影法正确标记人脸。
人脸定位过程包括5个步骤。
1)
相似度计算,方法是定义)/(BGRRr++=和)/(BGRBb++=,把三维RGB降为二维,在二维平面上,肤色的区域相对集中,根据肤色在色度空间的高斯(Gauss)分布,将彩色图像中的某个像素从RGB色彩空间变换到YCbCr空间,可以计算出该像素点属于肤色区域的概率,即根据该像素点离高斯分布中心的远近程度得到一个与肤色的相似度(图2a是待检测区域的相似度),相似度计算公式为:
)]()(5.0exp[),(1mxCmxbrPT−−−=−
(5)
式中
M为均值;
C为方差。
2)
选择适当的阈值,对图像中的待检测区域进行二值化处理。
3)
对二值图像作形态学处理,利用圆形结构元素作膨胀变换,抹掉细节,使图像平滑。
4)
用直方图方式对二值图像进行垂直投影和水平投影,如图2b和图2c所示。
图像中人脸区域的获取,根据肤色来获取,通过肤色非线形分段色彩变换来实现。
对图像进行图像灰度化、高斯平滑处理、对比度增强、二值化等一系列的图像处理之后,可以根据人的两个眼睛具有对称、眼睛下面有鼻子、再往下有嘴巴的特点,来确定划分的区域是否就是人脸区域
代码:
I=RGB;
W=size(YCbCr,1);
%y对应矩阵宽大小
H=size(YCbCr,2);
%y对应矩阵高大小
k=(2。
53/180)*pi;
m=sin(k);
n=cos(k);
%正余弦噪声
%%%111111*********111111111111
cx=109。
38;
cy=152.02;
ecx=1.60;
ecy=2。
41;
a=25。
39;
b=14。
03;
%(cb=(100,140),cr=(70,160)这是阈值,这个阈值应该是人脸肤色的范围
fori=1:
W
forj=1:
H
ifY(i,j)〈110
I(i,j,:
)=0;
elseif(Y(i,j)〈=200&
&Y(i,j)>
=110)
x=(double(Cb(i,j))-cx)*n+(double(Cr(i,j))—cy)*m;
y=(double(Cr(i,j))-cy)*n—(double(Cb(i,j))-cx)*m;
if((x—ecx)^2/a^2+(y—ecy)^2/b^2)<
=1
I(i,j,:
)=255;
elseI(i,j,:
)=0;
end
elseifY(i,j)>
200
x=(double(Cb(i,j))—cx)*n+(double(Cr(i,j))-cy)*m;
y=(double(Cr(i,j))-cy)*n—(double(Cb(i,j))-cx)*m;
if((x-ecx)^2/(1.1*a)^2+(y-ecy)^2/(1。
1*b)^2)〈=1
I(i,j,:
%肤色部分变为白色
elseI(i,j,:
%其余转成黑色
end
figure,imshow(I);
title(’肤色区分后的图像’);
%进行将肤色识别后的黑白图像
如图3所示:
图3肤色区分后的图像
4.2。
3对肤色图进行修补处理设计
se1=strel(’square’,35);
%这个函数可以创建边长35的方形元素
f0=imclose(I,se1);
%利用上面创建的方形元素,弥补imshow(I)中人脸中以及其他部分残留的小块黑色
figure,imshow(f0);
title(’修补漏洞后的人脸'
%显示修补漏洞后的人脸
如图4所示:
图4修补漏洞后的人脸图
4网格标记图像设计
对人脸图像打上网格,对区域块图像做二值分析,通过像素比例来做处理,进而得到人脸区域。
在彩色图像中,颜色是人脸表面最为显著的特征之一,利用颜色检测人脸是很自然的想法.研究人员在考察了不同种族、不同个体的肤色后,认为人类的肤色能在颜色空间中聚成单独的一类,而影响肤色值变化的最主要因素是亮度变化。
因此他们采用广泛使用的RGB颜色空间,在滤去亮度值的图像中通过比较像素点的r、g值与肤色范围来推断该像素点及其邻域是否属于人脸区域.除了RGB颜色空间,还有诸如HIS,LUV,GLHS等其它颜色空间被使用。
寻找到肤色区域后,必须进行验证,排除类肤色区域。
利用肤色像素的连通性分割出区域,使用椭圆拟合各个区域,根据椭圆长短轴的比率判断是否为人脸。
BW=im2bw(f0,graythresh(f0));
%二值化
figure,imshow(RGB);
title(’网格标记图像'
,'
FontWeight'
'
Bold'
holdon;
[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’);
如图5所示:
图5网格标记图像图
2.5人脸识别标记
[n1,n2]=size(BW);
r=floor(n1/10);
%分成10块,行
c=floor(n2/10);
%分成10块,列
x1=1;
x2=r;
%对应行初始化
s=r*c;
%块面积
fori=1:
10
y1=1;
y2=c;
%对应列初始化
forj=1:
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;
%黑色像素所占的比例数
ifpr<
=100
f1(x1:
x2,y1:
y2)=0;
end
y1=y1+c;
%列跳跃
y2=y2+c;
x1=x1+r;
%行跳跃
x2=x2+r;
%行跳跃
[L,num]=bwlabel(BW,8);
%区域标记
stats=regionprops(L,'
BoundingBox’);
%得到包围矩形框
Bd=cat(1,stats.BoundingBox);
[s1,s2]=size(Bd);
mx=0;
fork=1:
s1
p=Bd(k,3)*Bd(k,4);
%宽*高
ifp〉mx&
&(Bd(k,3)/Bd(k,4))〈1.8%%%如果满足面积块大,而且宽/高<
1。
8
mx=p;
j=k;
figure,imshow(RGB);
holdon;
rectangle(’Position'
Bd(j,:
),。
.
EdgeColor’,’r'
’LineWidth’,3);
title('
标记图像’,'
,’Bold'
如图6所示:
图6人脸识别标记图
4.2.6对原图像进行脸部模糊处理
h1=ones(40,40)/1600;
I2=imfilter(RGB,h1);
%对原图像进行全部模糊
%figure,imshow(I2);
a=Bd(j,:
%脸部标记的矩形框的四个坐标
fori=a
(2)—0.5:
a
(2)—0。
5+a(4);
forj=a
(1)-0。
5:
a
(1)-0.5+a(3);
RGB(i,j,:
)=I2(i,j,:
%部分模糊的替换
end
figure,imshow(RGB);
模糊后的人脸图像'
%显示模糊后的人脸
如图7所示:
图7人脸模糊隐私保护图
总结与致谢
通过本次设计,培养了创新意识和综合素质,更好地掌握了数字图像处理设计,提高个人基本能力、实验及设计能力和独立工作能力,基本知识更加牢固,会编程调试、会查资料在设计的过程和设计说明书的撰写过程中,老师给予了我热心的帮助和大力的支持,给我提了诸多的宝贵意见,拓宽了我的思路.
人脸检测及识别算法研究近年来受到很大关注,同时也得到了很大的进展。
但是考虑到视频处理的复杂程度,大多数检测或识别率高的算法往往都要在计算上付出很大的代价而失去了使用价值。
而本文提出的一种基于差分和肤色的人脸检测算法,在计算量上大大减少,同时抑制背景噪声。
随着硬件技术的进步,采用摄像机的图像系统的成本已经不高,使得这种算法有大量应用的条件,实验表明该算法具有可行性。
这一次做的图像人脸区域隐私保护系统设计.原理看似简单,但过程让我深深感受到再简单的图像处理,理论与实际也会有一定的差入。
在参考书设计原理的基础上经过了个人的改进,让功能更完善,特别是程序的调试,花的时间最多,也是最难的一个地方。
在此我向张运楚、杨红娟、张君捧老师致以崇高的敬意和衷心的感谢!
参考文献
[1]王科俊,姚向辉.人脸图像检测与识别方法综述[J].自动化技术与应用.2004,23(12).
[2]邢藏菊,曲延锋,王守觉.静态灰度图像中的人脸快速检测[J].计算机辅助设计与图形学学报.V01.14,No.May,2002.
[3]周杰,卢春雨,张长水,等.人脸自动识别方法综述[J].电子学报,2004(4):
102—106。
[4]简(JainA。
K.)[美],韩博,徐枫著.数字图像处理基础[M].北京:
清华大学出版社,2006。
[5]冈萨雷斯.数字图像处理(MATLAB)中文版[M].北京:
电子工业出版社,2007。
[6]Castleman,K.R。
[美]著,朱志刚等译.数字图像处理[M].北京:
电子工业出版社,2002.
[7]朱虹.数字图像处理基础[M].北京:
科学出版社,2005.
[8]刘志敏,扬杰,施鹏飞.数学形态学的图像分割算法[D].计算机工程与科学,1998,20(4):
21.
[9]章毓晋.图像分割.北京:
科学出版社,2001.
[10]王树伟,杨鸲.Matlab6。
5辅助图像处理[M].电子工业出版社,2003。
附录:
系统设计程序
RGB=imread('
face06。
%face02,04,06
Y=YCbCr(:
1);
Cb=YCbCr(:
,:
Cr=YCbCr(:
,3);
imshow(RGB);
title(’原始图像RGB’);
%原始图像
figure,imshow(YCbCr);
YcbCr色彩空间的图像’);
%进行将RGB色彩值变换为YcbCr色彩空间的图像
W=size(YCbCr,1);
H=size(YCbCr,2);
%y对应矩阵高大小
53/180)*pi;
m=sin(k);
%正余弦噪声
%%%111111*********111111111111
cx=109.38;
cy=152.02;
ecx=1.60;
41;
39;
b=14.03;
%(cb=(100,140),cr=(70,160)这是阈值,这个阈值应该是人脸肤色的范围
fori=1:
ifY(i,j)〈110
elseif(Y(i,j)〈=200&&Y(i,j)>
x=(double(Cb(i,j))—cx)*n+(double(Cr(i,j))-cy)*m;
y=(double(Cr(i,j))-cy)*n—(double(Cb(i,j))—cx)*m;
if((x—ecx)^2/a^2+(y—ecy)^2/b^2)〈=1
I(i,j,:
elseI(i,j,:
elseifY(i,j)〉200
x=(double(Cb(i,j))-cx)*n+(double(Cr(i,j))-cy)*m;
y=(double(Cr(i,j))-cy)*n—(double(Cb(i,j))-cx)*m;
if((x—ecx)^2/(1.1*a)^2+(y-ecy)^2/(1。
1*b)^2)<
I(i,j,:
elseI(i,j,:
%其余转成黑色
肤色区分后的图像’);
%%%111111*********1111
%%%%%%%%%找到人脸区域并设为白色%%%%(r=35)
se1=strel('
square'
,35);
%这个函数可以创建边长35的方形元素
%利用上面创建的方形元素,弥补imshow(I)中人脸中以及其他部分残留的小块黑色
title(’修补漏洞后的人脸’);
%%%44444444444444444444444444444
BW=im2bw(f0,graythresh(f0));
figure,imshow(RGB);
FontWeight’,’Bold'
holdon;
[xt,yt]=meshgrid(round(linspace(1,size(I,1),10)),。
round(linspace(1,size(I,2),10)));
mesh(yt,xt,zeros(size(xt)),’FaceColor’,。
LineWidth’,3,..。
,’r’);
[n1,n2]=size(BW);
%分成10块,行
c=floor(n2/10);
%分成10块,列
%对应行初始化
y1=1;
y2=c;
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;
y2)=0;
y1=y1+c;
y2=y2+c;
%列跳跃
x1=x1+r;
x2=x2+r;
[L,num]=bwlabel(BW,8);
stats=regionprops(L,’BoundingBox'
Bd=cat(1,stats。
BoundingBox);
[s1,s2]=size(Bd);
mx=0;
p=Bd(k,3)*Bd(k,4);
%宽*高
ifp〉mx&&
(Bd(k,3)/Bd(k,4))<
1.8
%%%如果满足面积