注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

斗天堂

douzsh还活着

 
 
 

日志

 
 

基于matlab的彩色图像皮肤区域分割算法与实现  

2007-09-11 17:03:26|  分类: 图像识别 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
基于matlab的彩色图像皮肤区域分割算法与实现

摘要

在 目前的人脸图像信息处理领域中,包含有人脸识别、人脸跟踪、姿态估计、表情识别等多个研究方向,然而,所有这些研究方向都涉及到一个人脸标识和定位的问 题,即必须知道人脸在图像中的位置以及尺寸——人脸检测。因此,对于一个完整的、自动的人脸信息分析系统来说,人脸检测算法是必不可少的。本文主要是对基 于matlab平台的彩色图像皮肤区域分割算法及人脸检测系统的设计做了介绍。

文章首先阐述了该项研究的意义,接下来阐述了算法原理及系统具体实现过程,最后对研究进行了总结。

关键词matlab  彩色图像 皮肤分割 人脸检测

Abstract

Images containing faces are essential to intelligent vision-based human computer interaction, and research efforts in face processing include face recognition, face trackingpose estimationand expression recognition. Howeverall of these researching directions involve in oneproblem--face detection and location. In other words, before this face processing, we must know faces locations and scales. Consequently, to build an automated face processing system which analyzes the information contained in face images, robust and efficient face detection algorithms are required. The algorithms of skin segmentation in colorful images are mainly discussed in this paper.

In this paper, firstly we discussed the meaning or the research; next we give the principle of this algorithm and its processing procedure. Finally the conclusion is presented.

Keywords: matlab, colorful images, skin segmentation, face detection

 

第一章 绪论

1.1引言

作 为一种底层信息,人体的肤色在人脸检测、手势分析、目标跟踪和图像检索中有着广泛的应用。在检测静止目标的场合中,肤色的应用提供有价值的候选区域(比 如,在人脸的检测中,图像中的肤色区域可有助于加速人脸的检测过程);在检测运动目标的应用中,肤色信息与目标运动信息的结合可提高对目标跟踪和属性分析 的精确度;在图像的检索中,根据检索的需求和检索系统的要求,利用肤色可有效对图像进行分类和图像特征分析。本文将就基于matlab的彩色图像皮肤区域分割算法进行研究。

1.2研究背景与意义

人脸检测主要是指在输入图像中确定人脸(如果存在)的位置、大小等信息。人脸检测系统的输入是可能包含人脸的图像,也可能是不包含人脸的图像,输出是关于图像中是否存在人脸以及人脸的数目、位置、尺度、位姿等信息的参数化描述。人脸检测问题如果追踪求源的话,它来源于人脸识别(face recognition)。而人脸识别的研究可以追溯到20世纪60--70年代,经过几十年的曲折发展己日趋成熟 。人脸检测是自动人脸识别系统中的一个重要环节,但是早期的人脸识别研究主要针对具有较强约束条件的人脸图像(如无背景的图像), 往往假设人脸位置己知或很容易获得,因此人脸检测问题并未受到重视。近几年随着电子商务等应用的发展,人脸识别成为最有潜力的生物身份验证手段,这种应用 背景要求自动人脸识别系统能够对一般环境图像具有一定的适应能力,由此所面临的一系列问题使得人脸检测开始作为一个独立的课题受到研究并得到重视。今天, 人脸检测的应用背景已经远远超出了人脸识别系统的范畴,在基于内容的检索、数字视频处理、视觉监测等方面有着重要的应用价值,“应用”对智者最具有诱人的 魅力,使智者对她如痴如醉。

人 们在研究非人类事物时,往往习惯于与人的某种器官或功能进行比较,科幻电影和动画片在这方面发挥得淋漓尽致。同样,计算机视觉是研究使计算机具有类似人类 视觉部分功能的一门学科,我们在研究计算机视觉领域的问题时也经常会类比人类视觉是如何感知外部世界中的事物的。显而易见,色彩信息是人类视觉在进行感知 活动时的一种重要信息来源 。 结合人脸检测的具体问题,人的视觉在对人脸这一事物的感知过程中,色彩信息也即肤色信息的利用是起到了很大的作用。这也使我们自然而然的想到,在计算机视 觉中,也即让计算机检测人脸的过程中,如果能有效的利用肤色信息,必将对这一热点问题的解决起到很大的推动作用。随着计算机速度的提高,对彩色信息的处理 己经不会比单纯处理灰度信息产生明显增多的系统负荷,对计算机色彩理论的深入研究也使彩色图像处理逐渐成为数字图像处理的核心内容,这都使得我们在计算机 检测人脸的过程中有效利用肤色信息成为可能。也使我们深信肤色信息的应用,必将推动人脸检测这一既具有广阔的应用前景又具有重要的学术价值的课题得到进一 步研究,并成为一个更为独立和活跃的研究领域。

第二章 算法原理及介绍

2.1肤色分割的可行性:

肤 色本质上是由生物特性决定的皮肤物理属性的一种外在表现,从这个意义上来说,肤色具有其本身特有的属性。肤色是人脸表面最为显著的特征之一,对于彩色图 像,肤色是图像中相对集中、稳定的区域。肤色信息可以将人脸和背景区域很好的区分开来。研究表明,尽管不同种族、年龄、性别的人脸肤色看上去不同,但这种 不同主要集中在亮度上,在除去亮度的色度空间中,不同人脸肤色分布具有聚类性 。基于这样的原理采用肤色分割图像是可行的。

2.2色度空间肤色模型的选取

2.2.1概述

肤色特征主要由肤色模型描述。使用何种形式的肤色模型与色度空间(chrominance space)选择密切相关。可以从两个方面考察某种色度空间:(1)在该色度空间中能否用给定的模型描述“肤色”区域的分布;(2)色度空间中“肤色”与“非肤色”区域的重叠有多少 。人脸检测常用的色度空间主要RGB(红、绿、蓝三基色)、rgb(亮度归一化的三基色)、HSI(色调、饱和度、亮度) 、YIQ(NTSC制的光亮度和色度模型) 、YUV(PAL制的光亮度和色度模型)、YCbCr(CCIR601)编码方式的色度模型、 CIEL(国际照明委员会提出的基于色度学的彩色模型)等。

用肤色模型对肤色进行分割主要分为两个阶段:模型的建立与模型的运用。模型的建立主要是通过对大量肤色像素集进行统计分析,然后确定模型中的参数;对于模型的运用,主要是通过已建立的肤色模型来判别所输入的像素或区域是否为肤色,或者给出其与肤色的相似程度。后一阶段与两类分类器的设计相类似。

不论在什么样的色彩空间中,肤色模型大体上分为四种:区域模型或IF-THEN模型、简单高斯模型、混合高斯模型和直方图模型。
(1)区域模型

该模型又称IF -THEN模型、简单门限模型,它主要是利用了肤色在色彩空间的聚类性(即取值范围),将一块满足一定条件的区域标定为肤色区域。采用这个模型来判别肤色 需要分两步走:首先通过统计的方法确定模型(即归属于肤色的具体范围);其次利用这个模型来判别新的像素或区域是否为肤色。因此,对于一幅新的图像,如果 某个像素或区域满足给定的条件就为肤色,否则就是非肤色。从上面的判断过程来看,它是一种较简单的肤色模型。该模型的困难之处在于如何确定阈值。阈值选择 不当可能会使肤色检测率下降,误检率上升。此方法计算简单,使用方便,速度快,但是效果不是很好,只适用于特定条件下的肤色检测。

2)简单高斯模型

这种方法是假设肤色分布服从单峰高斯分布。它主要通过统计分析,预测高斯分布的参数,其中参数确定常用的方法有EM算法,Maximum-Likelihood或通过统计直接求得色彩空间中每个分量(一 般利用的是该色彩空间中的色度分量)的均值与方差。采用这种方法也分为两步:首先选择方法确定模型的参数(即均值和方差);其次利用该模型来判别新的像素 或区域是否为肤色。简单高斯模型相对区域模型能更好的表示肤色分布,因此相对而言,它的肤色检测率也高出许多,并且模型的参数也易于计算,但是速度比区域 模型慢。

3)混合高斯模型

由于具有不同种族的肤色直方图并不完全满足单峰高斯分布,通过研究可以采用多峰的高斯分布来精确表示。因此,提出了混合高斯模型,如公式2.1所示:

 

   基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117436/b_193F5BD53BC995D9D9A64A38D4F5AFAC.jpg" border="0">  2.1

其中, P(x)为肤色像素在色彩空间中的混合概率密度,p(x|Wi)为分量的概率密度,p(Wi)为分量的先验概率,i=1, 2,...m为混合密度的分量个数。该模型表明肤色的每个像素密度都属于概率密度的混合体。在这个模型中主要难点是对混合高斯模型的参数估计。其参数的估计常采用Dempster等人提出的基于极大似然的算法。利用该算法需要进行迭代,而迭代的收敛速度受参数的初值影响,同时与分量密度个数关系很大,分量越多,运算越复杂。这种方法相对于前面两种模型来说,肤色的检测率要高得多,误检率也要小得多,但是模型的确定(即模型的参数估计)较难,速度相对来说也比较长,不适合快速的肤色检测。

4)直方图模型

通过对肤色直方图的统计,然后利用阈值来进行判别。对于三维直方图,尽管效果很好,但是需要很多的训练样本而且训练时间很长。由于样本原因和时效性差,这里不详细讨论这种方法。

2.2.2常见色彩空间及其肤色模型
2.2.2.1 RGB 色彩空间

由于彩色图像是多光谱图像的一种特殊情况,对应于人类视觉的三基色即红、绿、蓝三个波段,是对人眼的光谱量化性质的近似。因此利用R、G、B三基色这三个分量来表征颜色是很自然的一种格式。而且多数的图像采集设备都是以CCD技术为核心,直接感知色彩的R、G、B三个分量,这也使得三基色模型成为图像成像、显示、打印等设备的基础,具有十分重要的作用。

RGB色彩空间用RGB三种基本颜色分量来表示数字图像像素的颜色值。RGB 色系坐标中三维空间的三个轴分别与红、绿、蓝三基色相对应,原点对应于黑色,离原点最远的顶点对应于白色,其他颜色落在三维空间中由红、绿、蓝三基色组成 的彩色立方体中。其他的色彩空间常以RGB色彩空间为基础,其分量可以描述为RGB三色的线性或非线性函数。RGB色彩空间通过色彩的相加来产生其他颜 色,通常称为加色合成法(Additive Color Synthesis)

2.2.2.2 RGB 空间肤色模型

一般来说,RGB 色彩空间由于R, G, B分量相关性强,不大容易直接建立肤色模型。为了把肤色区域同非肤色区域分离,需要使用适合不同肤色和不同光照条件的可靠肤色模型。而对于RGB色彩空间 而言,R、G、B三个基色不仅代表颜色,还表示了亮度。由于周围环境光照的改变引起亮度变化会使人脸检测更复杂,在这样的条件下,直接利用RGB空间聚类 进行肤色分割是不可靠的。虽然在RGB空间难于将肤色有效地聚成密集分布的一类,但人体肤色的特征色调在红色区内,这一特征表现在图像中,就是肤色的 RGB值符合:

R >G > B

肤色的这一特征相当稳定,无论是人种的变化还是环境光照的变化,都不足以造成上式变为G>R或B>G肤色的聚类结果简单而稳定。而且由于我的研究是面向人脸自动识别空间中的人脸检测环节,人脸检测空间的输入图像已经过光线补偿等预处理,从另一方面避免了光照的影响。通过手工提取图像中大量肤色像素进行实验分析,发现结果与上式吻合。

RGB 色彩空间的这种肤色模型虽然简单,但三个色彩分量没有很好地和人对色彩判断的因素相联系,冗余信息多,R, G, B相关性强,不便于处理。而且对三个分量分别处理会带来颜色信息的丢失和错乱。故一般处理方法是将RGB空间转换为其他的色彩空间,目的是降低分量之间的 相关性,将亮度与反映色彩本质特性的色调信息分离。

2.2.3 HSV 格式色彩空间及肤色模型

2.2.3.1 HSV 色彩空间

这是Munseu提出的色彩空间模型,经常为艺术家所使用,它是一种主观彩色模型,不采用将某种特定的颜色分解为三原色的方法,而是描述颜色的三种属性。这三种属性分别是: 色调( Hue) 、饱和度(Saturation) 和亮度(Value) ,也有称为HIS。其中,色调值表示基本的纯色,饱和度值表示颜色中掺入白光的比例,亮度值则表示颜色中掺入黑光的比例。这种格式反映了人类观察色彩的方式,比较好地反映了人对颜色的感受,同时也有利于图像处理。在对色彩信息的利用中,这种格式的优点在于它将亮度(V)与反映色彩本质特性的两个参数一一色调(H)和饱和度(S)分开。我们提取一类物体(比如现在研究的人脸)在色彩方面的特性时,经常需要了解其在某一色彩空间的聚类特性,而这一聚类特性往往体现在色彩的本质特性上,而又经常受到光照明暗等条件的干扰影响。光照明暗给物体颜色带来的直接影响就是亮度分量(I),所以若能将亮度分量从色彩中提取出去,而只用反映色彩本质特性的色调、饱和度来进行聚类分析,会获得比较好的效果。这也正是HSV格式在彩色图像处理和计算机视觉的研究中经常被使用的原因。

2.2.3.2 HSV 空间肤色模型

HSV(也称HSI)色彩系统中建立肤色模型时,同样为避免肤色模型对亮度变化的敏感性,主要研究肤色在HS(色调、饱和度)平面的分布。不过,从选取的大量肤色样本的统计来看,肤色的亮度V都不会小于40 ,在HSV色彩系统中,定义肤色为V>40,且HS落在特定的区域。

2.2.4 YCbCr 色彩空间及肤色模型

2.2.4.1 YCbCr 色彩空间

    YCbCr 色彩系统是一种常见的重要的色彩系统,网络上比比皆是的JPEG图片采用的色彩系统正是该系统。它由YUV色彩系统衍生而来, Cb=k1U,Cr=k2,其中k1 、k2分别为压缩系数,压缩的目的是防止色差信号对亮度信号的干扰及超过亮度信号的电平,也就是说Cb和Cr则是将U和V做少量调整而得到的。Y仍为亮度 信息(电视机中称其为亮度信号)。YCbCr色彩系统与RGB色彩系统的转换关系如下:

Y=0.299*R+0.587*G+0.114*B

Cr=(R-Y)*0.713+128

Cb=(B-Y)*0.564+128

即:

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117437/b_31B02F876E13A0F557832A4E4798A0E8.jpg" border="0">

2.2.4.2 YCbCr 空间肤色模型

1.CbCr空间肤色区域模型

    由 于统计表明不同人种的肤色区别主要受亮度信息影响,而受色度信息的影响较小,所以直接考虑YCbCr空间的CbCr分量,映射为CbCr空间,在CbCr 空间下,受亮度变化的影响少,且是两维独立分布。通过实践,选取大量肤色样本进行统计,发现肤色在CbCr空间的分布呈现良好的聚类特性,统计分布满足:

77Cb≤127 (2.2)

并且满足

133≤Cr≤173 (2.3)

2.高斯肤色模型

不同人种的皮肤虽然相差很大,但在色度上的差异远远小于亮度上的差异,其实不同人的肤色在色度上比较接近,但在亮度上的差异很大,在二维色度平面上,肤色的区域比较集中,可以用高斯分布描述。

根据肤色在色度空间的高斯分布,对根据肤色在色度空间的高斯分布,对于彩色图像中每个像素,将其从RGB色彩空间转换到YCbCr空间后,就可以计算该点属于皮肤区域的概率,即根据该点离高斯分布中心的远近得到和肤色的相似度,将彩色图像转化为灰度图,其中每个像素的灰度对应该点与肤色的相似度,相似度的计算公式如下:

 

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117438/b_379B4CB1045E3C59FD0812CF2F497D05.jpg" border="0">

通过高斯肤色模型将彩色图像转换为相似度灰色图像后,选取合适的阈值,就可以分离肤色与非肤色区域。这种肤色模型的特点是基于统计的肤色模型,它需要对每一个像素点进行相似度计算,因此速度也不是太快。当然在实际用于肤色检测中,可以直接利用公式(2.4)中的基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117438/b_017F89FC9279FD4AFAC8DCF49EC11A40.jpg" border="0">项进行判决,以提高检测速度。

结合以上分析由于人肤色的不同主要体现为亮度分量的不同,所以选择亮度分量和色度分量分离的YCbCr 色彩空间进行肤色建模。

YcbCr色彩空间具有如下优点:

l        具有与人类视觉感知过程相类似的构成原理。

l        CbCr色彩空间格式被广泛地应用在电视显示等领域中,也是许多视频压缩编码,如MPEG,  JPEG等标准中普遍采用的颜色表示格式。

l        YCbCr色彩空间格式具有与HSI等其他一些色彩空间格式相类似的将色彩中的亮度分量分离出来的优点。

l        YCbCr色彩空间格式的计算过程和空间坐标表示形式相比于HSI等其他一些色彩空间格式比较简单。

l        实验结果表明 :在YCbCr色彩空间中肤色的聚类特性比较好。

在肤色模型的选取上,考虑到算法复杂度和检测效果的因素,采用高斯肤色模型。

第三章 系统设计与实现

3.1肤色模型建立

为了利用肤色在色度空间的聚类性,选取YCbCr色彩空间进行肤色提取。首先选取大量彩色图片进行手工处理只保留人体皮肤区域。接下来将彩色图片颜色空间转换到YcbCr空间,然后对该区域的CbCr值进行统计处理。处理的方法就是采用前面已经讲到过的高斯模型。基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117438/b_AB35589D9AA6C2E46C0CE43A64A322DC.jpg" border="0">

通过这个肤色高斯分布可得到待检测彩色图像中任意一个像素点属于皮肤的概率。对于某像素点s,RGB空间转换到YCbCr色彩空间得到色度值(Cb,Cr)则该像素的肤色概率密度可由下式计算得到:

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117439/b_31A2A09BE2818A04DF4242D110396F3F.jpg" border="0">

我选取了17幅不同肤色、年龄和性别的人的彩色图片,通过手工分割,然后进行统计,他们在YcbCr空间中的分布情况如3-1所示,这一柱状图表明不同人的肤色在YcbCr空间中有良好的聚类特性。图3-2是肤色高斯模型。从两图中我们不难看出高斯模型能很好地表现肤色的分布。

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_00CB76B9AA3BB229C7C552F930880130.jpg" border="0">

    3-1 肤色在YcbCr空间中的分布

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_D76BF501C045F6AC3309CA654D982DF5.jpg" border="0">

                      3-2 肤色高斯模型

通过计算,我得到mC的值如下:

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117439/b_200D2E3E739759F0C8E1214F2E6912F8.jpg" border="0">

3.2肤色分割步骤

?        图片空间低通滤波

为了减少图像高频噪声的影响,先采用低通滤波器对图象进行处理。采用的低通滤波器的冲击响应矩阵为:

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117439/b_55ED270D56A33AC73124522A20EEBD25.jpg" border="0">

matlab中实现的语句为:

lpf=1/9*ones(3);  %定义滤波器类型

J=filter2(lpf,J); %对图像进行滤波,J为图像对应的矩阵

?        图片色彩空间的转换

对于一幅被检测的彩色图像(见图3-3),首先将它由RGB 空间转换到YCbCr色彩空间,便于后面的统计。

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_A2C1DD4B2A806CB2590738C64B66995B.jpg" border="0">

3-3 原始图象及其转换到YcbCr空间图

?        得到似然图

根据(Cb,Cr)值通过式(2.4)找到该值所对应的肤色似然度并且得到整幅图像的最大肤色似然度。每一点像素的肤色似然度除以最大肤色似然度所得到的值,作为该像素点的灰度值,从而得到肤色似然度图像其中每一个像素点的灰度值表征了这个像素点属于皮肤的概率。

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_A4BA0671924EAC7A348AD334A3A54DAE.jpg" border="0">
  

3-4 得到的似然图

 

?        阈值分割

阈值分割的目的是将皮肤与图片背景分开。通常有固定阈值法 、自适应阈值法 等。在这里我选用的是固定阈值法,主要是从运算速度上考虑的。当然相比之下,自适应的阈值法一般不会漏检,检测效果肯定比固定值法好。

?        图象二值化处理

目的是将皮肤区域和其他区域更好地区分开来。皮肤区域用“1”(白色)表示,其他区域用“0”(黑色)表示。

?        形态学处理

该步骤的目的是改善分割效果 。 形态学(Morphology)原是对于动植物调查时采取的某种形式的研究。数学形态学(Mathematical Morphology)是分析几何形状和结构的数学方法,它建立在集合代数的基础上,是用集合论方法定量描述集合结构的学科。1985年之后,数学形态学 逐渐成为分析图像几何特征的工具。

数学形态学包括一组基本的形态学运算子 : 腐蚀(Erosion),膨胀(Dilation)、开运算(Opening)、闭运算(Closing)等。运用这些算子及其组合来进行图像形状和结构 的分析及处理。形态学的理论基础是集合论。在图像处理中形态学的集合代表着黑白和灰度图像的形状,如黑白图像中的所以黑像素点组成了此图像的完全描述。通 常我们选择图像中感兴趣的目标图像区域像素集合来进行形态学变换。

通常,当有噪声的图像用闭值二值化时,所得到的边界往往是不平滑的,物体区域具有一些错判,背景区域上则散布着一些小的噪声。使用形态学上的连续的开和闭运算可以显著的改善这种情况。如图3-5所示,开闭运算后的图象可以去除图像上的一些细小的毛刺,达到去噪的目的。填孔处理可以进一步去除毛刺,但是也将一些非皮肤区域保留为皮肤区域处理。所以综合考虑后,只采用开闭运算改善效果。

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_6449BAE29439F1686A3F48E4BFDD6E11.jpg" border="0">

 

3-5原始二值图及形态学处理后的二值图

3.3 人脸检测

3.4系统GUI设计

由于在做产学研时学过matlabGUI设计,因此这一环节对我来说并不困难。做GUI的关键在于能正确地为GUI对象写回调函数,界面的设计是很自由的,与每个人的美学观念有关,而回调函数则是与系统功能相关的。

3.4.1 GUI主要控件及功能介绍

我设计出的GUI如图3-5所示,为了方便用户使用,在按钮处理上,我采用了顺序激活的方式,也就是图像处理的过程是顺序进行的,在前面的步骤没有执行时,后序步骤的按钮是非激活、不可用的。GUI主要控件功能如下:

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_9E83D480EE1F22187F017BDB7190D1B7.jpg" border="0">


 

3-5 系统GUI

(1)按钮:

?        Load:从本地计算机的任意位置读入图片文件并显示原始图像,支持所有常见的图像文件格式。

?        Filter:对读入的图片进行低通滤波处理,消除图像的高频噪声并显示滤波后的图像。

?        YCbCr:图像彩色空间的转换,由RGB彩色空间转换到YCbCr彩色空间并显示转换后的图像。

?        Similarity:得到原始图像经过高斯模型处理后产生的似然图并进行显示。

?        BW2:在似然图的基础上对图像进行形态学和二值化处理,并显示处理后的图像。

?        ShowResult:显示经过皮肤分割处理后的图像。

?        FaceDetect:对原始图象进行人脸检测,输出的图像在有人脸的部分加了一个矩形框。

?        Clear:在处理完一张图片后,可以通过该按钮清除当前工作区域。

?        Exit:退出应用程序。

2)菜单:

?        File: 该菜单下有两个子菜单。

open:功能与Load按钮相同,即从本地计算机的任意位置读入图像文件并显示。

Exit:退出应用程序。

?        View菜单:该菜单下有四个子菜单

    histgramrgb:显示原始RGB图像的RGB分量的直方图。

    histgramycbcr:显示原始图像转换成YCbCr图像后 YCbCr分量直方图。

    colmod:显示建立肤色模型时肤色在YcbCr空间中的分布图。

    skinmod:显示肤色高斯模型图。

?        Help:该菜单下有两个子菜单

Local:本地帮助文件,单击后显示软件的使用说明书。

web:matlab帮助文件。

?        About:关于软件作者的介绍。

3.4.2 设计GUI要注意的一些问题

在自己设计GUI的过程中我自己遇到了一些问题,同时在帮助其他同学调试程序的过程中也发现了他人在设计中出现的一些问题,现在在这里总结如下:

1)对于菜单和按钮在属性设置时最好修改它们的标识(tag)。因为如果不这样的话,在为这些GUI对象写回调函数时往往容易出现配对错误,也就是把这个按钮的回调函数写给了另外一个按钮。还有一点就是如果不加修改在查找某一对象的回掉函数头时很不方便。 

2)按钮的可用(不可用)状态一定要明确定义好。我一开始设计的GUI在编译运行后所有的按钮都是可用的,这样一来用户如果没有看使用说明书的话很可能没有按照我的顺序执行的设想去使用软件,而我又没有给出错误提示。后来通过设置按钮的状态,我成功解决了这一问题。

3)代码重用问题。我们学过C++语言,那是一种面向对象的语言,由于引入了类的继承和派生的概念,所以代码的重用问题得到了很好的问题。Matlab编程所用的M语言不具备这种功能,其在代码重用上有很多需要注意的地方。在系统实现过程中,凡是需要代码重用的地方一般都要声明全局变量,在有些地方代码重用甚至不能实现,如果这样我们也不能为了提高编程效率而牺牲了程序的健壮性。

第四章 系统功能与调试

4.1系统功能描述

4.1.1从本地计算机任意位置读入图像文件

单击GUILoad按钮后,弹出如图4-1所示的提示框,提示用户选择要处理的图像,通过查找在本地计算机中选择图像。图4-1所示的为选择测试图片文件夹中的某幅图片。如果用户在这一步没有选择图片,则会弹出如图4-2所示的警告对话框,提醒用户输入图像。

         基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_A37E5D09A32BA1F2FE1583B25450DCE9.jpg" border="0">

4-1 读入图像



基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_BB2464A0982D5332828D707FE14B414D.jpg" border="0">

    

4-2 在没有读入图像时弹出的警告框

4.1.2显示原始彩色图像RGB分量直方图

在没有读入图像之前,菜单View下的子菜单histgramrgb是非激活(灰色)的,在读入图像之后就可以单击该菜单观察原始彩色图像RGB各分量直方图,操作和结果分别如图4-3和图4-4所示。

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_5FAE3A8AADDBCF444E5AFC3EF3951B46.jpg" border="0">


4-4 显示原始彩色图像RGB直方图操作

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_02749FF323F6E4964622AD754307251E.jpg" border="0">

4-4 上图所示操作观察到的结果

4.1.3对图像进行滤波处理

如图4-3所示,在读入图像后,单击Filter按钮,在按钮右边的坐标轴上显示的是经过滤波处理过的图像。在学习数字图像处理这门课时我们学习的都是基于灰度图的处理。对于彩色图像的处理,一开始我还采用了灰度图的处理方式, 结果编译不通过,后来经过查找资料,才知道RGB图像是三维的,不能像处理灰度图那样处理。彩色图像进行空间滤波有两种方式 ,一种是对先提取出图像的RGB分量分别采用灰度图的处理方式进行处理,然后进行图像的重构。另外一种方式简单些,就是采用matlab自带的一个函数处理。两种方式在matlab中实现的代码分别为:(x为图像对应的矩阵,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);

?       方式二:

x_filtered= imfilter(x,f);

4.1.4图像彩色空间的转换

4-7中按钮YCbCr右边所示的图像即是原始RGB空间彩色转换到YCbCr空间后的结果。

4.1.5显示YCbCr图像YCbCr分量直方图

在图像没有进行彩色空间转换之前,菜单View下的子菜单histgramycbcr是非激活(灰色)的,在进行彩色空间转换之后就可以单击该菜单观察YCbCr彩色图像YCbCr各分量直方图,操作和结果分别如图4-5和图4-6所示。

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_2BE1A9DA7597507DA13C96E9FDDF2CF8.jpg" border="0">

4-5 显示YCbCr图像直方图操作

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_21555F776E1872D88D41476D4C555581.jpg" border="0">

4-6 上图所示操作的结果

 

4.1.6得到似然图

单击Similarity按钮,按钮右边的坐标轴中将显示原始图像的似然图。

4.1.7得到并显示二值图

单击BW2按钮,右边的坐标轴中将显示二值图像。

4.1.8显示皮肤区域分割图

在二值图的基础上进行,二值图处理的目的就是将非皮肤区域全部变为灰度值为0的黑色区域。这样,将二值图与原始图象结合比较就可以得到皮肤分割图:二值图中黑色部分构成皮肤分割图中的背景区域,原始图像与二值图中值为1的对应区域为构成皮肤分割图中的皮肤区域。显示的图像见图4-7ShowResult按钮右边坐标轴。

4.1.9进行人脸检测

在原始彩色图像的人脸部分加框。

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_82DF404B2AF7AD7F9AAA2B3C6A943299.jpg" border="0">

4-7 程序完整执行效果图

4.2遇到的困难与解决

4.2.1GUI按钮执行顺序的问题

一开始我就是按照按钮顺序执行的思想设计GUI的, 但用户时并不知道设计者的思想。所以很容易造成错误的操作,而这些我又没有在程序设计中给出警告提示。开始时我自己并没有意识到这个问题,直到我把我的系 统给老师看时,老师指出了我系统的毛病。后来想了下,解决这个问题的最好方式是设置按钮的状态,如果按钮处于非激活态则对于用户是不可用的,这样用户就不 可能进行错误的操作了。具体的做法是没执行完一步,则执行下一步的按钮就激活,后续步骤的按钮仍然不可用,直到执行完最后一步。

4.2.1小图像无法覆盖大图像的问题

在 这里我再次提下代码重用的问题。一开始,在从似然图到二值图像之一步,我是把在似然图那一步做过的工作在二值图那一步又做了一遍,所以系统执行的速度自然 不是很理想。于是我想到了代码重用。也就是说上一步执行后产生的结果在下一步直接利用,在这里问题产生了。我这样做后,系统速度是提高了很多,但是会出现 小图像无法覆盖大图像的情况。具体说来就是:系统在处理了一张尺寸较大的图片后,如果接着处理一张尺寸较小的图像的话(图4-8),那么在二值图和似然图那一步就会出现同时显示两张图片的情况,底下是上次处理过的大尺寸图片,上面(只占显示区域的一小部分)显示的是本次处理的小尺寸图片(图4-9所示)。问题出现的原因显而易见,那就是上次处理完的图片占用的内存空间并没有在结束对它的处理后释放掉。我查看了自己的代码并经过认真的检查发现应该是在代码重用时定义的全局变量时出了问题。好多变量我都在不同的程序段重复定义,显然这是不行的,因为M语言并没有提供C++语言那样的机制。于是我在变量定义上做了改进,好多这一步用不到的属于上一步的变量我都删除了,经过测试,出现的问题终于圆满解决。

基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_5CB55EB8B678520ED6873C8B862944F9.jpg" border="0">

4-8 (左)当前处理图像(右)上次处理图像


基于matlab的彩色图像皮肤区域分割算法与实现 - 窦则胜 - 斗天堂0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="查看更多精彩图片" src="http://photo6.hexun.com/p/2007/0802/117435/b_E0770F284194314F72C32FDFB611762C.jpg" border="0">

4-9 似然图中出现的小图像无法覆盖大图像情形

第五章 总结

5.1实习总结

时 间总是过得很快,为期两周的专业综合实习结束了。在这两周里,应该来说收获还是很多的,因为我确实也是投入了很多的精力。我所做的题目是有关图像处理的, 说的专业点是属于计算机视觉的,再大点就是模式识别与智能系统。这是我今后想从事的研究方向,所以在选题上我是经过自己的思考的。我的目的就是通过这次实 习让我能对今后自己可能从事的研究的方向有一个更好的认识并打一个较好的基础。从实习的结果看,我的目的达到了。

我所做的课题是基于matlab的彩色图像皮肤区域分割及人脸检测。在实习过程中遇到问题是不可避免的。最开始遇到的问题是弄懂皮肤分割的原理。通过老师的提示并在查阅了Yang的那篇著名论文后终于对人的肤色聚类性有了了解,原理问题也就基本弄清楚了。接下来就是肤色建模的问题。在查阅大量的文献后我选择了高斯模型。因为这个模型我们在数学中都有接触,理解和实现起来都不是那么困难。在解决好上述问题后,主要就是编程和设计GUI的问题了。由于自己对编程很有兴趣并且有一定的基础,所以这些都不是太大的问题。GUI设计在产学研时学过、做过,所以也进行得很顺利。后期主要是完成GUI的美化和程序的优化。

整个实习过程中除了自己完成课题外,我还积极帮助同学,帮他们查错误,通过这些,我得到了更大的锻炼,对matlab软件的操作也更加熟悉,相信这些都会为我以后的深造打下一个良好的基础。

态度决定一切,实习也不例外。能不能学到自己想要掌握的东西,很大程度上取决于个人的态度问题。从一开始我就是以一种认真的态度对待这次实习,因此我学到了我想学的东西。这是我在本次实习过程中的体会。

最后我要感谢实习指导老师杨敏老师在实习期间对我的指导和帮助,同时也要对我们的沈老师表示感谢。她严谨治学,负责认真的态度让我很感动。

5.2实习建议

对于教学实习,我觉得是非常有必要的,通过这种方式可以让我们更好地找到自己的兴趣点,对以后的就业和深造都是有好处的。但是我觉得在实习的安排上还有一些可以改进的地方。现说明如下:

(1)    在实习之前可以提前一段时间公布题目,让我们对所要做的东西有一个基本的认识并且可以提前准备。这次实习,很多人弄了几天都不知道自己要做的是什么,当然主要原因还是自己的主观态度问题,但对于一部分同学,没有充分的准备无疑也是一个很重要的因素。

(2)    我 觉得这样的实习可以与产学研等项目结合起来做,因为根据我的观察,由于在平时课程比较多,同学们投入到产学研上的时间并不多,如果我们能够把实习与产学研 的项目结合起来的话,一是在知识储备上我们有了一个提高,二是我们可以抽出成块的时间做,这样的效果一定会比以前那种模式好。

参考文献

[1]Jie Yang, Weier Lu, Alex Waibel.Skin-Color Modeling and Adaptation.CMU-CS-97-146, May 1997.

[2]Terrillon J C, Shirazi M N, Fukamachi H, et al. Comparative performance of different skin chrominance models and chrominance spaces for the automatic detection of human faces in color images. In: Proc.Conf. on Automatic Face and Gesture Recognition, Grenoble, France, 2000.

[3]邵林昌,基于肤色分割的人脸检测,东南大学硕士论文,2006.

[4]李伟,基于肤色分割的人脸检测技术,电子科技大学硕士论文,2006.

[5]冈萨雷斯.数字图像处理(matlab版)[M],电子工业出版社,2006.

 

[8]林福宗.多媒体技术与应用(第三版)[M],清华大学出版社,2002.


http://ctfysj.blog.hexun.com/11362993_d.html

  评论这张
 
阅读(3260)| 评论(4)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017