数字图像处理课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
)
山东建筑大学
课程设计说明书
¥
题目:图像人脸区域隐私保护系统设计课程:数字图像处理课程设计
院(部):信息与电气工程学院
专业:通信工程
班级:
学生姓名:
学号:
指导教师:
~
完成日期: 2013年12月
目录
,
摘要 (3)
1 本课程设计的目的 (4)
2 本课程设计的基本要求 (5)
3 本次系统的基本原理 (6)
系统的简介
如何识别人脸 (6)
4 具体设计内容 (7)
软件流程 (7)
-
图像数据的读取与处理 (9)
人脸颜色建模膨胀与腐蚀 (11)
人脸区域定位 (12)
人脸识别及处理 (13)
总结与致谢 (17)
参考文献 (18)
附录:系统设计程序 (19)
(
.
摘要
生物特征识别技术在近几十年中飞速发展。
作为人的一种内在属性,并且具有很强的自身稳定性及个体差异性,生物特征成为了自动身份验证的最理想依据。
人脸识别由于具有直接,友好,方便的特点,使用者易于为用户所接受,从而得到了广泛的研究与应用。
除此之外,我们还能够对人脸识别的结果作进一步的分析,得到有关人的性别,表情,年龄等诸多额外的丰富信息,扩展了人脸识别的应用前景。
人脸是准确鉴定一个人的身份,推断出一个人的种族、地域,地位等信息的重要依据。
科学界从图像处理、计算机视觉等多个学科对人脸进行研究。
人脸识别在满足人工智能应用和保护信息安全方面都有重要的意义,是当今信息化时代必须解决的问题。
本设计用MATLAB对图像的读取,在识别前,先对图像进行处理,再通过肤色获得可能的脸部区域,最后根据人脸固有眼睛的对称性来确定是否就是人脸,同时采用高斯平滑来消除图像的噪声,再进行二值化,二值化主要采用局域取阈值方法,接下来就进行定位、提取特征值和识别等操作。
经过测试,图像预处理模块对图像的处理达到了较好的效果,提高了定位和识别的正确率。
为保护当事人或行人的隐私权,需要将图像中当事人的人脸区域作模糊,实现图像中人脸区域隐私保护。
关键词:人脸识别;图像处理;图像模糊
#
…
1 设计目的
作为人的一种内在属性,并且具有很强的自身稳定性及个体差异性,生物特征成为了自动身份验证的最理想依据。
人脸识别由于具有直接,友好,方便的特点,使用者易于为用户所接受,从而得到了广泛的研究与应用。
除此之外,我们还能够对人脸识别的结果作进一步的分析,得到有关人的性别,表情,年龄等诸多额外的丰富信息,扩展了人脸识别的应用前景。
对于人脸识别(Face Recognition),分析人脸图像,从中提取有效的识别信息,用来辨别身份的一门技术。
即,对己知人脸进行标准化处理后,通过某种方法和数据库中的人脸标本进行匹配,寻找库中对应人脸及该人脸的相关信息。
人脸识别技术应用背景十分广泛,可用于公安系统刑侦破案的罪犯身份识别、身份证及驾驶执照等证件验证、银行及海关的监控、自动门卫系统、视频会议、机器人的智能化研究以及医学等方面。
对于人身辨别方法主要是通过人身标识物品和人身标识知识两种方式来实现的。
常见的人身标示物品有钥匙、证件等各种标识,人身标示知识有用户名、密码等。
众周知,像钥匙、证件标识等人身标识物品很容易丢失或被伪造,而标识知识容易遗忘或记错,更为严重的是传统身份识别系统往往无法区分标识物品真正的拥有者和取得标识物品的冒充者,一旦他人获得标识物品,也可以拥有相同的权力,电视采访、街景地图等应用中,为保护当事人或行人的隐私权,需要将图像中当事人的人脸区域作模糊或马赛克处理。
(
2 设计要求
1.根据已知设计要求分析人脸区域隐私保护系统设计功能,确定人脸区域隐私保护系统设计的方法,
2.画出流程图,编写实现程序,并进行调试,完成系统软件设计。
3.基本教学要求:每人一台计算机,计算机安装matlab、visio等软件。
"
,
—
3 人脸识别系统的基本原理
系统概述
人脸识别包括人脸检测、人脸图像预处理、人脸特征提取和人脸识别等过程。
人脸检测是指在输入图
像中确定人脸的位置与大小。
人脸检测的质量影响人脸识别的其他过程以及整个人脸识别的效果,在人脸识别过程中显得尤为重要。
近年来,电子商务等网络资源的利用使得可视电话、视频会议、多媒体教学等快捷便利的交流方式成为时尚,如何实时实现复杂背景下对人脸检测和识别已成为人脸识别研究的热点[1]。
目前,已有神经网络算法、基于Hough变换或可适应的Hough变换逼近、小波变换、镶嵌图方法、颜色纹理规则等多种人脸检测方法[2~6]。
这些方法是针对静态图像的基于人脸特征的统计与结构分析方法,虽具有一般性,但分析计算量大,对噪声敏感,性能不稳定,难以实时检测。
如何识别人脸
、
1、基于几何特征的人脸正面图像识别方法
通过人脸面部拓扑结构几何关系的先验知识,利用基于结构的方法在知识的层次上提取人脸面部主要
器官特征,将人脸用一组几何特征矢量来表示,识别归结为特征矢量之间的匹配,基于欧氏距离的判决是最常用的识别方法。
2、基于统计的人脸正面自动识别方法
基于统计的人脸正面自动识别方法包括特征脸方法和隐马尔科夫模型方法。
统计的识别方法将人脸用代数特征矢量来表示。
代数特征是由Hong等首先提出的,由图像本身的灰度分布决定,它描述了图像的内存信息,它是通过对图像灰度进行各种代数变换和矩阵分解提出的。
将人脸看作一个二维的灰度变化的模板,从整体上捕捉和描述人脸的特征,所运用的主要是一些标准的数据统计技巧,运算比较复杂
4 具体设计内容
《
软件流程
人脸识别系统的方法,软件流程如图所示
接下来将按照上面的流程图,对系统进行介绍,在介绍系统的同时对一些常用图像,图形处理的基本方法做介绍,这包括了图像,图形学上的一些基本的概念和处理手段,也根据图像需要进行简单的处理。
对人脸的定位处理流程图如下
图像数据的读取与处理
这非线性分段色彩变换得到的肤色模型属于色彩空间中的聚类模型,这一类
,
肤色模型的建立首先要选取一种合适的色彩空间。
注意要YCbCr色彩空间具有如下一些优点:
(a)YCrCb色彩格式具有与人类视赏感知过程相似的构成原理。
(b)YCrCb色彩格式被广泛的应用在电视显示的领域中,也是许多视频压缩
编码,如MPEG、JPEG等标准中普遍采用的颜色表示格式。
(c)YCrCb色彩格式具有与HIS等其他一些色彩格式相类似的将色彩中的亮
度分量分离出来的优点。
(d)相比HIS等其他一些色彩格式,YCrCb色彩格式的计算过程和空间坐标
*
表示形式比较简单。
(e)实验结果表明在YCrCb色彩空间中肤色的聚类特性比较好。
可以通过摄像头来获取,也可以通过图像库来获取。
在图像获取以后,将图像显示出来,同时记录下图像在内存的地址,以便在图像处理中使用。
RGB=imread(''); %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图
人脸颜色建模膨胀与腐蚀
long lOffsetJudge;
for(int i_l;i<height-I;i++)
for(intj=l;j<width—l;j++)
{
lOffset=this一>PixelOffset(i,j,wBytesPerLine);
,,如果当前点为白色,接着循环
?
if(+(1pData+lOffseO一255、
{
+(1pTemp+IOffset++)=255;
+(1pTemp+lOffset++)=255;
+(1pTemp+lOffset++)=255;
continue;
}
,/否则考察上下左右四个点
~
else
{
IOffsetJudge=this->PixelOffset(i一1,j,wBytesPerLine)
,/如果上面的点为白色
if(+(1pData+10ffsetJudge)一255)
f //设置为白色,并继续循环
代码:
*
I=RGB;
W=size(YCbCr,1); %y对应矩阵宽大小
H=size(YCbCr,2); %y对应矩阵高大小
k=180)*pi;
m=sin(k);n=cos(k); %正余弦噪声
%%%1
cx=;cy=;ecx=;
ecy=;a=;b=; %(cb=( 100,140),cr=(70,160)这是阈值,这个阈值应该是人脸肤色的范围
|
for i=1:W
for j=1:H
if Y(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;
else I(i,j,:)=0;
end
elseif Y(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/*a)^2+(y-ecy)^2/*b)^2)<=1
I(i,j,:)=255; %肤色部分变为白色
`
else I(i,j,:)=0; %其余转成黑色
end
end
end
end
figure,imshow(I);title('肤色区分后的图像'); %进行将肤色识别
后的黑白图像如图3所示:
…
图3肤色区分后的图像
处理
se1=strel('square',35); %这个函数可以创建边长35的方形元素
f0=imclose(I,se1); %利用上面创建的方形元素,弥补imshow(I)
中人脸中以及其他部分残留的小块黑色figure,imshow(f0);
title('修补漏洞后的人脸'); %显示修补漏洞后的人脸
如图4所示:
}
图4 修补漏洞后的人脸图
人脸区域的定位
人脸定位是完成对需定位的人脸运动区域进行肤色检测。
在肤色分割阶段,采用YCrCb色度空间,能较好地获取肤色区域,排除一些类似人脸肤色的非人脸区域,并使用投影法正确标记人脸。
人脸定位过程包括5个步骤。
1)相似度计算方法,把三维RGB降为二维,在二维平面上,肤色的区域相
对集中,根据肤色在色度空间的高斯(Gauss)分布,将彩色图像中
的某个像素从RGB色彩空间变换到YCbCr空间,可以计算出该像素
点属于肤色区域的概率,即根据该像素点离高斯分布中心的远近程
度得到一个与肤色的相似度相似度计
算
2) 选择适当的阈值,对图像中的待检测区域进行二值化处理。
3) 对二值图像作形态学处理,利用圆形结构元素作膨胀变换,抹掉细节,使图像平滑。
4) 用直方图方式对二值图像进行垂直投影和水平投影,如图2b和图2c所示。
图像中人脸区域的获取,根据肤色来获取,通过肤色非线形分段色彩变换来实现。
对图像进行图像灰度化、高斯平滑处理、对比度增强、二值化等一系列的图像处理之后,可以根据人的两个眼睛具有对称、眼睛下面有鼻子、再往下有嘴巴的特点,来确定划分的区域是否就是人脸区域
%
BW = im2bw(f0, graythresh(f0));
figure, imshow(RGB);
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');
如图5所示:
图5 网格标记图像图第二步
%
[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
f1(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, ;
[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))< %%%如果满足面积块大,而且宽/高< mx = p;
、
j = k;
end
end
figure,imshow(RGB); hold on;
rectangle('Position', Bd(j, :), ...
'EdgeColor', 'r', 'LineWidth', 3);
title('标记图像', 'FontWeight', 'Bold');
如图6所示:
《
图6人脸识别标记图
4.对原图像进行脸部模糊处理
h1=ones(40,40)/1600;
I2=imfilter(RGB ,h1); %对原图像进行全部模糊%figure,imshow(I2);
a=Bd(j,:);%脸部标记的矩形框的四个坐标
|
for i=a(2):a(2)+a(4);
for j=a(1):a(1)+a(3);
RGB(i,j,:)=I2(i,j,:);%部分模糊的替换
end
end
figure,imshow(RGB);title('模糊后的人脸图像'); %显示模糊后的人脸如图7所示:
/
图7 人脸模糊隐私保护图
|
总结与致谢
这一次做的图像人脸区域隐私保护系统设计。
原理看似简单,但过程让我深深感受到再简单的图像处理,理论与实际也会有一定的差入。
在参考书设计原理的基础上经过了个人的改进,让功能更完善,特别是程序的调试,花的时间最多,也是最难的一个地方。
通过本次设计,培养了创新意识和综合素质,更好地掌握了数字图像处理设计,提高个人基本能力、实验及设计能力和独立工作能力,基本知识更加牢固人脸检测及识别算法研究近年来受到很大关注,同时也得到了很大的进展。
但是考虑到视频处理的复杂程度,大多数检测或识别率高的算法往往都要在计算上付出很大的代价而失去了使用价值。
而本文提出的一种基于差分和肤色的人脸检测算法,在计算量上大大减少,同时抑制背景噪声。
随着硬件技术的进步,采用摄像机的图像系统的成本已经不高,使得这种算法有大量应用的条件,实验表明该算法具有可行性。
,在编程调试、查资料,在设计的过程和设计说明书的撰写过程中,老师给予了我热心的帮助和大力的支持,给我提了诸多的宝贵意见,拓宽了我的思路。
在此我向老师们表示衷心的感谢!
参考文献
[1] 王科俊,姚向辉.人脸图像检测与识别方法综述[J].自动化技术与应用.2004,
23(12).
[2] 邢藏菊,曲延锋,王守觉.静态灰度图像中的人脸快速检测[J].计算机辅助设计与
图形学学报.V01.14,No.May,2002.
[3] 周杰,卢春雨,张长水,等.人脸自动识别方法综述[J].电子学报,2004
(4):102-106.
[4] 简(Jain .) [美],韩博,徐枫著.数字图像处理基础[M].北京:清华大学出版
社,2006.
<
[5] 冈萨雷斯.数字图像处理(MATLAB)中文版[M].北京:电子工业出版社,2007.
[6] Castleman, K. R.[美]著,朱志刚等译.数字图像处理[M].北京:电子工业出版
社,2002.
[7] 朱虹.数字图像处理基础[M].北京:科学出版社,2005.
[8] 刘志敏,扬杰,施鹏飞.数学形态学的图像分割算法[D].计算机工程与科
学,1998,20 (4):21.
[9] 章毓晋.图像分割.北京:科学出版社,2001.
[10] 王树伟,杨鸲.Matlab 辅助图像处理[M].电子工业出版社,2003.
附录:系统设计程序
RGB=imread(''); %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色彩空间的图像
I=RGB;
W=size(YCbCr,1); %y对应矩阵宽大小
,
H=size(YCbCr,2); %y对应矩阵高大小
k=180)*pi;
m=sin(k);n=cos(k); %正余弦噪声
%%%1
cx=;cy=;ecx=;
ecy=;a=;b=; %(cb=( 100,140),cr=(70,160)这是阈值,这个阈值应该是人脸肤色的范围for i=1:W
for j=1:H
"
if Y(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;
else I(i,j,:)=0;
-
end
elseif Y(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/*a)^2+(y-ecy)^2/*b)^2)<=1
I(i,j,:)=255; %肤色部分变为白色
else I(i,j,:)=0; %其余转成黑色
end
'
end
end
end
figure,imshow(I);title('肤色区分后的图像'); %进行将肤色识别后的黑白图像%%%111111
%%%%%%%%% 找到人脸区域并设为白色%%%% (r=35)
se1=strel('square',35);%这个函数可以创建边长35的方形元素
%
f0=imclose(I,se1);%利用上面创建的方形元素,弥补imshow(I)中人脸中以及其他部分残留的小块黑色
figure,imshow(f0);title('修补漏洞后的人脸'); %显示修补漏洞后的人脸
%%%44444
BW = im2bw(f0, graythresh(f0)); % 二值化
figure, imshow(RGB);
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');
[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
f1(x1:x2, y1:y2) = 0;
end
end
y1 = y1+c; % 列跳跃
y2 = y2+c; % 列跳跃
end
x1 = x1+r; % 行跳跃
x2 = x2+r; % 行跳跃
[L, num] = bwlabel(BW, 8); % 区域标记
stats = regionprops(L, 'BoundingBox'); % 得到包围矩形框Bd = cat(1, ;
[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))<
%%%如果满足面积块大,而且宽/高<
mx = p;
j = k;
end
end
figure,imshow(RGB); hold on;
rectangle('Position', Bd(j, :), ...
'EdgeColor', 'r', 'LineWidth', 3);
title('标记图像', 'FontWeight', 'Bold');
%%%44444 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%下面为图像局部模糊
h1=ones(40,40)/1600;
I2=imfilter(RGB ,h1); %对原图像进行全部模糊
%figure,imshow(I2);
a=Bd(j,:);%脸部标记的矩形框的四个坐标
for i=a(2):a(2)+a(4);
for j=a(1):a(1)+a(3);
% for i=60:233; %60:233
% for j=257:400; %257:400
RGB(i,j,:)=I2(i,j,:);%部分模糊的替换
end
figure,imshow(RGB);title('模糊后的人脸图像'); %显示模糊后的人脸。