基于matlab的彩色图像皮肤区域分割及人脸检测.docx
《基于matlab的彩色图像皮肤区域分割及人脸检测.docx》由会员分享,可在线阅读,更多相关《基于matlab的彩色图像皮肤区域分割及人脸检测.docx(14页珍藏版)》请在冰点文库上搜索。
![基于matlab的彩色图像皮肤区域分割及人脸检测.docx](https://file1.bingdoc.com/fileroot1/2023-6/27/df80b2ee-184d-40de-9e77-9969fbd774ce/df80b2ee-184d-40de-9e77-9969fbd774ce1.gif)
基于matlab的彩色图像皮肤区域分割及人脸检测
第一章引言
近年来,随着人工智能的快速发展,人脸识别技术逐渐成为模式识别与计算机视觉领域的一个研究热点,可用于身份认证、人员监视、图像数据库检索以及目标跟踪等场合。
人脸识别(FaceRecognition)是将输入的人脸图像与系统已知人脸库中的模型进行比较,以确定是否存在相匹配的人脸,而人脸检测(FaceDetection)是指在输入图像中确定所存在的人脸的位置与大小,所以快速有效的人脸检测则显得至关重要,是实现人脸识别的前提和基础。
人脸检测系统要求实现对输入的可能包含人脸的图像进行处理,并输出图像中是否存在人脸以及人脸的数目、位置、尺度、位姿等参数信息。
传统的人脸检测方法大多是在亮度空间内进行,利用灰度的变化做多尺度空间的全搜索,计算量非常大、效率极低,而在人脸区域中,肤色一定是占主导地位的像素色彩值,虽然肤色因人而异,但经过研究可以发现肤色在色彩空间中的一定范围内是呈聚类特性的,特别是在排除了光照亮度和在经过变换的色彩空间中,利用肤色这一特征可以排除掉在灰度图像中的非皮肤区域,这对人脸检测起到了积极的作用。
第二章算法理论与实现原理
2.1肤色分割理论
肤色特征主要由肤色模型进行描述,而肤色模型的选取与色度空间(chrominancespace)的选择密切相关。
人脸检测常用的色度空间主要RGB(红、绿、蓝三基色)、rgb(亮度归一化的三基色)、HSI(色调、饱和度、亮度)、YIQ(NTSC制的光亮度和色度模型)、YUV(PAL制的光亮度和色度模型)、YCbCr(CCIR601)编码方式的色度模型、CIEL(国际照明委员会提出的基于色度学的彩色模型)等。
另外,用肤色模型对肤色进行分割分为两个阶段:
模型建立与模型运用。
模型的建立主要是通过对大量肤色像素集进行统计分析,然后确定模型中的参数;对于模型的运用,主要是通过已建立的肤色模型来判别所输入的像素或区域是否为肤色,或者给出其与肤色的相似程度。
不论在什么样的色彩空间中,肤色模型大体上分为四种:
区域模型或IF-THEN模型、简单高斯模型、混合高斯模型和直方图模型。
2.2常见肤色模型比较
2.2.1区域模型
该模型又称IF-THEN模型、简单门限模型,它主要是利用了肤色在色彩空间的聚类性(即取值范围),将一块满足一定条件的区域标定为肤色区域。
采用这个模型来判别肤色需要分两步走:
首先通过统计的方法确定模型(即归属于肤色的具体范围);其次利用这个模型来判别新的像素或区域是否为肤色。
因此,对于一幅新的图像,如果某个像素或区域满足给定的条件就为肤色,否则就是非肤色。
从上面的判断过程来看,它是一种较简单的肤色模型。
该模型的困难之处在于如何确定阈值。
阈值选择不当可能会使肤色检测率下降,误检率上升。
此方法计算简单,使用方便,速度快,但是效果不是很好,只适用于特定条件下的肤色检测。
2.2.2简单高斯模型
这种方法是假设肤色分布服从单峰高斯分布。
它主要通过统计分析,预测高斯分布的参数,其中参数确定常用的方法有EM算法,Maximum-Likelihood或通过统计直接求得色彩空间中每个分量(一般利用的是该色彩空间中的色度分量)的均值与方差。
采用这种方法也分为两步:
首先选择方法确定模型的参数(即均值和方差);其次利用该模型来判别新的像素或区域是否为肤色。
简单高斯模型相对区域模型能更好的表示肤色分布,因此相对而言,它的肤色检测率也高出许多,并且模型的参数也易于计算,但是速度比区域模型慢。
2.2.3混合高斯模型
由于具有不同种族的肤色直方图并不完全满足单峰高斯分布,通过研究可以采用多峰的高斯分布来精确表示。
因此,提出了混合高斯模型,如公式2.1所示:
(2.1)
其中,
为肤色像素在色彩空间中的混合概率密度,
为分量的概率密度,
为分量的先验概率,i=1,2,...,m为混合密度的分量个数。
该模型表明肤色的每个像素密度都属于概率密度的混合体。
在这个模型中主要难点是对混合高斯模型的参数估计。
其参数的估计常采用Dempster等人提出的基于极大似然的算法。
利用该算法需要进行迭代,而迭代的收敛速度受参数的初值影响,同时与分量密度个数关系很大,分量越多,运算越复杂。
这种方法相对于前面两种模型来说,肤色的检测率要高得多,误检率也要小得多,但是模型的确定(即模型的参数估计)较难,速度较慢,不适合快速的肤色检测。
2.2.4直方图模型
通过对肤色直方图的统计,然后利用阈值来进行判别。
对于三维直方图,尽管效果很好,但是需要很多的训练样本而且训练时间很长,这里不详细讨论这种方法。
2.3常见色彩空间比较
2.3.1RGB空间
由于彩色图像是多光谱图像的一种特殊情况,对应于人类视觉的三基色即红、绿、蓝三个波段,是对人眼的光谱量化性质的近似。
因此利用R、G、B三基色这三个分量来表征颜色是很自然的一种格式。
而且多数的图像采集设备都是以CCD技术为核心,直接感知色彩的R、G、B三个分量,这也使得三基色模型成为图像成像、显示、打印等设备的基础,具有十分重要的作用。
RGB色彩空间用R、G、B三种基本颜色分量来表示数字图像像素的颜色值。
RGB色系坐标中三维空间的三个轴分别与红、绿、蓝三基色相对应,原点对应于黑色,离原点最远的顶点对应于白色,其他颜色落在三维空间中由红、绿、蓝三基色组成的彩色立方体中。
其他的色彩空间常以RGB色彩空间为基础,其分量可以描述为RGB三色的线性或非线性函数。
RGB色彩空间通过色彩的相加来产生其他颜色,通常称为加色合成法(AdditiveColorSynthesis)。
一般来说,RGB色彩空间由于R,G,B分量相关性强,不大容易直接建立肤色模型。
为了把肤色区域同非肤色区域分离,需要使用适合不同肤色和不同光照条件的可靠肤色模型。
而对于RGB色彩空间而言,R、G、B三个基色不仅代表颜色,还表示了亮度。
由于周围环境光照的改变引起亮度变化会使人脸检测更复杂,在这样的条件下,直接利用RGB空间聚类进行肤色分割是不可靠的。
虽然在RGB空间难于将肤色有效地聚成密集分布的一类,但人体肤色的特征色调在红色区内,这一特征表现在图像中,就是肤色的RGB值符合:
R>G>B
肤色的这一特征相当稳定,无论是人种的变化还是环境光照的变化,都不足以造成上式变为G>R或B>G肤色的聚类结果简单而稳定。
而且由于我的研究是面向人脸自动识别空间中的人脸检测环节,人脸检测空间的输入图像已经过光线补偿等预处理,从另一方面避免了光照的影响。
通过手工提取图像中大量肤色像素进行实验分析,发现结果与上式吻合。
RGB色彩空间的这种肤色模型虽然简单,但三个色彩分量没有很好地和人对色彩判断的因素相联系,冗余信息多,R,G,B相关性强,不便于处理。
而且对三个分量分别处理会带来颜色信息的丢失和错乱。
故一般处理方法是将RGB空间转换为其他的色彩空间,目的是降低分量之间的相关性,将亮度与反映色彩本质特性的色调信息分离。
2.3.2HSV空间
这是Munseu提出的色彩空间模型,经常为艺术家所使用,它是一种主观彩色模型,不采用将某种特定的颜色分解为三原色的方法,而是描述颜色的三种属性。
这三种属性分别是:
色调(Hue)、饱和度(Saturation)和亮度(Value),也有称为HIS。
其中,色调值表示基本的纯色,饱和度值表示颜色中掺入白光的比例,亮度值则表示颜色中掺入黑光的比例。
这种格式反映了人类观察色彩的方式,比较好地反映了人对颜色的感受,同时也有利于图像处理。
在对色彩信息的利用中,这种格式的优点在于它将亮度(V)与反映色彩本质特性的两个参数一一色调(H)和饱和度(S)分开。
我们提取一类物体(比如现在研究的人脸)在色彩方面的特性时,经常需要了解其在某一色彩空间的聚类特性,而这一聚类特性往往体现在色彩的本质特性上,而又经常受到光照明暗等条件的干扰影响。
光照明暗给物体颜色带来的直接影响就是亮度分量
(I),所以若能将亮度分量从色彩中提取出去,而只用反映色彩本质特性的色调、饱和度来进行聚类分析,会获得比较好的效果。
这也正是HSV格式在彩色图像处理和计算机视觉的研究中经常被使用的原因。
在HSV(也称HSI)色彩系统中建立肤色模型时,同样为避免肤色模型对亮度变化的敏感性,主要研究肤色在HS(色调、饱和度)平面的分布。
不过,从选取的大量肤色样本的统计来看,肤色的亮度V都不会小于40,在HSV色彩系统中,定义肤色为V>40,且H、S落在特定的区域。
2.3.3YCbCr色彩空间
YCbCr色彩系统是一种常见的重要的色彩系统,网络上比比皆是的JPEG图片采用的色彩系统正是该系统。
它由YUV色彩系统衍生而来,Cb=k1U,Cr=k2,其中k1、k2分别为压缩系数,压缩的目的是防止色差信号对亮度信号的干扰及超过亮度信号的电平,也就是说Cb和Cr则是将U和V做少量调整而得到的。
Y仍为亮度信息。
YCbCr色彩系统与RGB色彩系统的转换关系如下:
即:
2.3.4.YCbCr空间肤色模型
由于统计表明不同人种的肤色区别主要受亮度信息影响,而受色度信息的影响较小,所以直接考虑YCbCr空间的CbCr分量,映射为CbCr空间,在CbCr空间下,受亮度变化的影响少,且是两维独立分布。
通过实践,选取大量肤色样本进行统计,发现肤色在CbCr空间的分布呈现良好的聚类特性。
统计分布满足:
77
Cb
127(2.2)
并且满足:
133
Cr
173(2.3)
不同人种的皮肤虽然相差很大,但在色度上的差异远远小于亮度上的差异,其实不同人的肤色在色度上比较接近,但在亮度上的差异很大,在二维色度平面上,肤色的区域比较集中,可以用高斯分布描述。
根据肤色在色度空间的高斯分布,对根据肤色在色度空间的高斯分布,对于彩色图像中每个像素,将其从RGB色彩空间转换到YCbCr空间后,就可以计算该点属于皮肤区域的概率
,即根据该点离高斯分布中心的远近得到和肤色的相似度,将彩色图像转化为灰度图,其中每个像素的灰度对应该点与肤色的相似度,相似度的计算公式如下:
(2.4)
其中m为均值,m=E(x),C为协方差矩阵,
肤色分布的2D高斯模型G(m,V2)也可表示为
其中,
为
相应的平均值,
为协方差矩阵。
通过高斯肤色模型将彩色图像转换为相似度灰色图像后,选取合适的阈值,就可以分离肤色与非肤色区域。
这种肤色模型的特点是基于统计的肤色模型,它需要对每一个像素点进行相似度计算,因此速度也不是太快。
当然在实际用于肤色检测中,可以直接利用公式(2.4)中的
项进行判决,以提高检测速度。
结合以上分析由于人肤色的不同主要体现为亮度分量的不同,所以选择亮度分量和色度分量分离的YCbCr色彩空间进行肤色建模。
综上,可以从两个方面考察某种色度空间:
(1)在该色度空间中能否用给定的模型描述“肤色”区域的分布;
(2)色度空间中“肤色”与“非肤色”区域的重叠有多少。
实验结果表明:
在YCbCr色彩空间中肤色的聚类特性比较好。
而在肤色模型的选取上,考虑到算法复杂度和检测效果的因素,采用高斯肤色模型。
第三章系统设计
3.1建立肤色模型
为了利用肤色在色度空间的聚类性,选取YCbCr色彩空间进行肤色提取。
首先选取大量彩色图片进行手工处理只保留人体皮肤区域。
接下来将彩色图片颜色空间转换到YcbCr空间,然后对该区域的CbCr值进行统计处理。
处理的方法就是采用前面已经讲到过的高斯模型。
m=E(x),
,C为协方差矩阵,
。
通过这个肤色高斯分布可得到待检测彩色图像中任意一个像素点属于皮肤的概率。
对于某像素点s,从RGB空间转换到YCbCr色彩空间得到色度值(Cb,Cr)则该像素的肤色概率密度可由下式计算得到:
式中:
。
我选取了24幅不同肤色、年龄和性别的人的彩色图片,通过手工分割出脸部区域,然后进行统计,他们在YCbCr空间中的分布情况如图3-1所示,这一柱状图表明不同人的肤色在YcbCr空间中有良好的聚类特性。
图3-2是肤色高斯模型。
从两图中我们不难看出高斯模型能很好地表现肤色的分布。
图3-1YCbCr空间分布图3-2肤色高斯模型
通过计算,得到m和C的值如下:
m=[117.4316148.5599];(3-1)
(3-2)
3.2肤色分割步骤
Ø低通滤波
为了减少图像高频噪声的影响,先采用低通滤波器对图象进行处理。
采用的低通滤波器的冲击响应矩阵为:
(3-3)
在matlab中实现的语句为:
pf=1/9*ones(3);%定义滤波器类型
J=filter2(lpf,J);%对图像进行滤波,J为图像对应的矩阵
对图像进行滤波处理(J为图像对应的矩阵,f为滤波器类型)
fR=x(:
:
1);%提取R分量
fG=x(:
:
2);%提取G分量
fB=x(:
:
3);%提取B分量
filtered_fR=imfilter(fR,f);
filtered_fG=imfilter(fG,f);
filtered_fB=imfilter(fB,f);%分别对三分量进行滤波处理
x_filtered=cat(3,filtered_fR,filtered_fG,filtered_fB);
;
%重构图像
Ø色彩空间转换
对于一幅被检测的彩色图像(见图3-3),首先将它由RGB空间转换到YCbCr色彩空间,便于后面的统计。
图3-3原始图像进行滤波处理并转换到YcbCr空间图
Ø得到似然图
根据(Cb,Cr)值通过式(2.4)找到该值所对应的肤色似然度,并且得到整幅图像的最大肤色似然度。
每一点像素的肤色似然度除以最大肤色似然度所得到的值,作为该像素点的灰度值,从而得到肤色似然度图像,其中每一个像素点的灰度值表征了这个像素点属于皮肤的概率。
在matlab中实现的语句为:
[a,b,c]=size(I);
cb=double(I(:
:
2));
cr=double(I(:
:
3));
fori=1:
a
forj=1:
b
w=[cb(i,j),cr(i,j)];
m=[117.4316148.5599];
n=[260.130112.1430;12.1430150.4574];
p(i,j)=exp((-0.5)*(w-m)*inv(n)*(w-m)');
end
end
J=p/max(Q);
%每一点像素的肤色似然度除以最大肤色似然度所得到的值,作为该像素点的灰度值
Ø图象二值化处理
目的是将皮肤区域和其他区域更好地区分开来。
皮肤区域用“1”(白色)表示,其他区域用“0”(黑色)表示。
Ø阈值分割
阈值分割的目的是将皮肤与图片背景分开。
通常有固定阈值法、自适应阈值法等。
在这里我选用的是固定阈值法,主要是从运算速度上考虑的。
当然相比之下,自适应的阈值法一般不会漏检,检测效果肯定比固定值法好。
图3-4图片深度处理
☆形态学处理
该步骤的目的是改善分割效果。
形态学(Morphology)原是对于动植物调查时采取的某种形式的研究。
数学形态学(MathematicalMorphology)是分析几何形状和结构的数学方法,它建立在集合代数的基础上,是用集合论方法定量描述集合结构的学科。
1985年之后,数学形态学逐渐成为分析图像几何特征的工具。
数学形态学包括一组基本的形态学运算子:
腐蚀(Erosion),膨胀(Dilation)、开运算(Opening)、闭运算(Closing)等。
运用这些算子及其组合来进行图像形状和结构的分析及处理。
形态学的理论基础是集合论。
在图像处理中形态学的集合代表着黑白和灰度图像的形状,如黑白图像中的所以黑像素点组成了此图像的完全描述。
通常我们选择图像中感兴趣的目标图像区域像素集合来进行形态学变换。
通常,当有噪声的图像用闭值二值化时,所得到的边界往往是不平滑的,物体区域具有一些错判,背景区域上则散布着一些小的噪声。
使用形态学上的连续的开和闭运算可以显著的改善这种情况。
如图3-5所示,开闭运算后的图象可以去除图像上的一些细小的毛刺,达到去噪的目的。
填孔处理可以进一步去除毛刺,但是也将一些非皮肤区域保留为皮肤区域处理。
所以综合考虑后,只采用开闭运算改善效果。
se=strel('square',3);
s=imopen(s,se);
s=imclose(s,se);%利用开闭运算的方法消除噪声
s=imfill(s,'holes');%填孔处理
fe=imerode(s,ones(8,7));
fo=imopen(s,ones(8,7));
s=imreconstruct(fe,s);
axes(handles.axes5);%重构法
imshow(s);
set(handles.btnresult,'Enable','on');
第四章参考文献
[1]邵林昌.基于肤色分割的人脸检测[D],东南大学硕士论文,2006.
[2]陈茂源.基于MATLAB的彩色图像皮肤区域分割算法研究与实现,2007.
[3]李伟.基于肤色分割的人脸检测技术[D],电子科技大学硕士论文,2006.
[4]冈萨雷斯.数字图像处理(matlab版)[M],电子工业出版社,2006.
[5]李显宏.MATLAB7.X界面设计与编译技巧[D],电子工业出版社,2006.
[6]孙兆林.MATLAB6.x图像处理教程[D],清华大学,2007.
[7]林福宗.多媒体技术与应用(第三版)[M],清华大学出版社,2002.
第五章心得体会
时间过得很快,在这一周的时间里,收获很多,我所做的题目是有关图像处理的,说的专业点是属于计算机视觉的,再大点就是模式识别与智能系统。
我的目的就是通过这次课设让我能对今后自己可能从事的方向有一个更好的认识并打一个较好的基础。
从本次课设的结果看,我的目的达到了。
我所做的课题是基于matlab的彩色图像皮肤区域分割及人脸检测。
在此过程中遇到问题是不可避免的。
最开始遇到的问题是弄懂皮肤分割的原理。
通过老师的提示并在查阅了Yang的那篇著名论文后终于对人的肤色聚类性有了了解,原理问题也就基本弄清楚了。
接下来就是肤色建模的问题。
在查阅大量的文献后我选择了高斯模型。
因为这个模型我们在数学中都有接触,理解和实现起来都不是那么困难。
通过和同学们的相互交流,我得到了更大的锻炼,对matlab软件的操作也更加熟悉,相信这些都会为我以后的深造打下一个良好的基础。
..