王 伟,李 贺,姜小明
(1.重庆邮电大学 生物信息学院,重庆 400065;2.重庆邮电大学 自动化学院,重庆 400065;3.重庆邮电大学 重庆市医用电子与信息技术工程研究中心,重庆 400065)
针对毛孔[1]的检测,王贺等[2]提出HSV-Morph算法,利用HSV(Hue,Saturation,Value)颜色空间对采集的微距图像进行阈值分割处理,再利用形态学运算去除干扰完成对毛孔特征点大小的检测。但此算法在毛发油分等噪声影响下,分割结果精度不足且会有边缘误差。Jae-Ho等[3]提出Otsu-KAPUA算法,利用直方图线性拟合皮肤图像以分离色素沉着和毛孔区域。但此算法对毛发等干扰没有良好的鲁棒性。苏锦程等[4]基于毛孔色调特征,改进传统大津法计算最佳毛孔分割阈值,利用阈值进行分块分割。通过毛孔的尺寸、形状特征,对分割后的候选目标进行毛孔筛选。文献[5,6]针对全局面部皮肤,考虑到不同色素层上皮肤色素分布的差异,使用SURF(scale-invariant feature transform)和SIFT(speed up robust feature)算法检测不同色素层上的皮肤特征,计算欧几里德距离以描述不同层上相同检测点的位置相似性,将最佳比例设置为阈值以得到最好的毛孔特征。
通过参考相关文献,在毛发、皱纹、痤疮、光照不均尤其是在油分的影响下,对局部皮肤图像毛孔的判断都不精确,因此需要对面部皮肤毛孔算法进行改进,使毛孔的检测更为精准。
皮肤毛孔图像是一种偏微距图像,主要有以下特征:①分辨率高,色调一致,毛孔、毛发、皱纹以及油分等皮肤特征较为清晰;②由于油分、皱纹和光照不均匀等因素的影响,亮度不均匀;③当毛孔粗大时色调偏暗,呈现不规则圆形,毛孔细致时,与周围皮肤颜色相近;④毛发呈现细长状,与毛孔相连;⑤毛孔粗大常伴有皮肤油分偏大,图像亮区较多;⑥对于面部皮肤,常有红血丝、痤疮及丘疹等面部发红的症状表现。
在皮肤毛孔直方图方面,如图1(a)所示,毛孔区域与背景区域颜色相近,紧密结合,且在图1(b)中的灰度直方图呈现单峰状态特征,背景和颜色差别较小,较亮的区域与较暗的区域难以分离。
图1 局部面部图像及直方图
为了更好的对毛孔进行阈值分割,结合面部毛孔特点的各个显著差异,利用滤波器进行毛发、皱纹、油分等因素的削弱。
针对皮肤的肤色特征,国内外提出了很多如色RGB、CMY、HSV的颜色空间模型[7],RGB和CMY偏向于彩色模型,将亮度饱和度等信息一起存放,难以将其分离。而HSV空间将亮度、饱和度单独分离出来,适用于皮肤的色彩感知。毛孔和周围的皮肤环境颜色相近,加上油光等影响因素,很难单从颜色的角度将毛孔信息分离出来[8]。而毛孔区域具有高饱和度的特征,可以利用HSV中的S空间来分离毛孔信息与背景。
针对光照不均以及油分因素给毛孔检测带来的影响,采用同态滤波器修正图像。一幅图像可以表示为照射成分和反射成分的乘积,使用同态滤波可以更好地控制照射成分和反射成分,达到修正不均匀光照及油分过大的作用,并锐化毛孔边缘。
由于人脸皮肤红血丝分布较广,且常伴有痤疮、痘印及丘疹等症状,在分割时会隐藏很多毛孔细节,导致毛孔分割精确度不高。经研究发现,毛孔信息在皮肤的黑色素层,而红血丝、痤疮等分布在皮肤的血色素层上。皮肤的表皮层中蕴含着大量的黑色素,真皮层中蕴含着大量的血红蛋白。当入射光照在皮肤上,黑色素和血红蛋白的反射决定了皮肤呈现的颜色,而数字图像是由R、G、B三通道组成,3个通道的值反映了物体表面的光反射入镜头的程度。通过构建数字像素和色素的数学模型,独立成分分析(ICA)把皮肤分为红色素层和血色素层[9]筛选毛孔细节信息。
对于毛发噪声的削减,提取S空间下的高频和低频成分,经过低通滤波后保留了毛孔信息的低频成分,再通过高斯高通滤波和高频强调滤波计算毛孔信息的高频成分。此种方式可以有效削弱毛发对毛孔分割的影响。
综上分析,为了有效解决毛发、皱纹、皮肤油分、光照不均以及皮肤红血丝导致的分割精度差问题,设计出ICA-Homo滤波器组。ICA-Homo滤波器组是进行预处理的工作,如图2所示表示滤波器完整过程。输入图像I(x,y)在S空间同态滤波(homomorphic filter)后使用巴特沃斯低通滤波器(BLPF)进行低通滤波得到低频成分r(x,y)。同时对输入图像进行ICA处理分离出皮肤图像的黑色素层,把分离出来的黑色素层低通滤波处理得到低频成分l(x,y)。
图2 ICA-Homo滤波器组
低频成分l(x,y)经过高斯高通滤波(GHPF)的多次迭代,把迭代的结果进行高频强调(HFEF)得到高频成分h(x,y)。
针对皮肤毛孔的特征与文献算法的不足,本文提出一种针对面部局部皮肤图像的毛孔检测算法。
(1)预处理:针对局部面部皮肤图像设计了一个ICA-Homo滤波器组,由于在饱和度S空间下,毛孔区域与普通区域信息差异较大,该滤波器组首先在HSV空间下分离S空间,进行同态滤波,以消除光照不均带来的影响。为了保证毛孔细节不被红血丝和丘疹、痤疮等因素等影响,利用ICA分离出原皮肤图像的黑色素成分,进行低通滤波得到低频成分。同态滤波后的图像进行低通滤波和高通滤波,以提取毛孔信息的低频和高频成分,消除毛发、皱纹等其它因素的影响。
(2)阈值分割:对提取的低频成分和高频成分进行分割。针对熵值法容易出现背景误判、迭代法的初始阈值难以确定的问题,提出以最大熵值法和迭代法相结合的分割方式。
(3)逻辑运算:对阈值分割后的低频和高频信息进行逻辑运算,保证分割结果的全面性。
步骤1分离S空间。HSV将亮度、饱和度单独分离,适用于皮肤的色彩感知。其可以表示为一个圆锥体空间模型,饱和度S表示半径,取值范围是0-1,越接近1则表示越饱和;亮度V表示纵轴,取值为0-1,越接近1颜色越亮;色调H为角度。底面圆所在的平面对应着亮度为1,绕V轴的角度表示色调信息,红、绿、蓝三原色分别对应0度、120度和240度
(1)
(2)
利用毛孔的高饱和度特征,分离S空间的方式来分离毛孔和复杂的背景信息。采集到的面部图像I(x,y)为RGB类型,按式(1)、式(2)转化为HSV类型,并单独分离出S空间Is(x,y)。
步骤2同态滤波修正。为了减少光照不均以及油分因素给检测带来的影响,采用同态滤波器修正图像。皮肤图像可以表示为照射成分和反射成分的乘积,使用同态滤波可以更好地控制照射成分和反射成分[10]。对输入的Is(x,y)取自然对数后进行傅里叶变换(DFT)得到F(u,v)。把F(u,v)代入如式(3)所示的同态滤波函数Hh(u,v)
Hh(u,v) =(γH-γL)[1-e-w[D2(u,v)/D02]] +γL
(3)
式中:γL和γH是滤波器的过渡区间,常数w控制函数边坡的锐利度,D(u,v)是频率域中点(u,v)到频率矩形中心的距离。Hh(u,v)再经过DFT的逆变换和指数运算Exp输出同态滤波后的图像g(x,y)。
通过滤波器函数可以用不同的可控方式改变傅里叶变换的低频和高频,以便更好地控制照射反射成分,达到修正不均匀光照,锐化毛孔边缘的作用。如图3所示,对面部毛孔图像S空间分离后进行同态滤波的修正,从图3(b)可以看出毛孔边缘的细节得到强化,光照的不均匀也得到了改善。
图3 同态滤波修正后的图像对比
步骤3ICA分离黑色素层。由于毛孔信息会被皮肤中的红血丝、痤疮、痘印和丘疹等因素影响,导致不能精确识别毛孔信息。以皮肤层次结构和光学模型为基础,首先需要构建数字图像各通道和色素层之间的数学表达式。设皮肤色素浓度为c,色素颜色值为C;黑色素层和血红蛋白层的色素浓度分别表示为cm、ch;v为平均光程j和吸光系数(extinction coefficient)h的乘积,如式(4)所示
(4)
p(x,y)与皮肤形状相关,i为数字图像R、G、B三通道,将B、G两通道减去R通道的颜色值,公式简化为向量表达式(5)
(5)
其中
(6)
(7)
c=[cm,ch]T
(8)
(9)
从式(5)可以看出,光密度空间颜色通道差值可以由黑色素层和血红蛋白层表示,即式(8)中c向量,其中cm、ch相互独立,可以通过盲源分离(blind source separation,BSS)方式来解决。利用ICA解决盲源分离的问题[11],计算分离向量Q的值,得到黑色素浓度分布为Im(x,y)。
通过图4可以看出,图4(a)面部图像痤疮严重,红血丝分布较广影响检测毛孔的精度,而图4(b)分离出的黑色素层,痤疮和红血丝已被滤除,背景较为清晰,毛孔的细节部分得到强化。
图4 ICA分离黑色素层图像
步骤4低频高频滤波。同态滤波后进行对图像低频部分的提取,削减毛发和皱纹等因素对分割毛孔的影响。在频率域平滑图像可通过衰减高频来表示,为了更好平滑图像采用巴特沃斯低通滤波器(BLPF)。对于S空间下的Is(x,y)和黑色素层Im(x,y)输入传递函数式(10)
(10)
式中:n表示BLPF的阶数,不同的阶数有不同的截止频率,截止位于原点D0处。此种滤波器可以更好地在低频和高频之间平滑过渡。S空间和黑色素层输出分别为s(x,y)、l(x,y)。
经过低通滤波后保留了毛孔信息的低频成分,再通过高斯高通滤波和高频强调滤波计算毛孔信息的高频成分,强化毛孔的边缘细节。GHPF会衰减傅里叶变换低频成分而不会扰乱高频成分的信息。为了更好地使图像在阈值分割后完整提取毛孔的信息,使用多次迭代方式进行GHPF的运算,进行N次迭代后,毛孔的边界提取更为精确
(11)
利用高斯高通滤波器的结果,再进行高频强调滤波(HFEF)。如式(11)所示,在GHPF上加了常数K1,常数K1、K2会影响最终结果的高频比例(其中K1≥0为控制距原点的偏移量,K2≥0为控制高频的比例)最终输出S空间下低高频滤波的最后结果h(x,y)。
如图5所示,图5(a)组所示的3张原始面部毛孔图片,经过转化HSV并分离S空间后如图5(b)组所示,可以看出毛孔边缘得到强化,修正了不均匀光照,但依旧可以看到毛发等复杂的背景因素。最终的滤波结果图5(c)组中毛孔以外的毛发、皱纹、不均匀光照以及皮肤油分等背景因素得到有效的滤除,毛孔边缘也有了进一步的强化。
图5 ICA-Homo滤波器实现
对于皮肤图像阈值分割的方式有很多种,如大律法(Otsu)、分水岭算法、聚类算法,以及上文所提到的Otsu-KAPUA算法、HSV-Morph算法等。针对面部局部皮肤的各种特征,提出把熵值法和迭代法相结合的方式,进行毛孔图像的分割。
利用最大熵值法分割图像时,最佳阈值处于目标和背景两类之间,能够将两类场景进行较好的分离。但针对皮肤等背景复杂的图像,分割效果较差。毛孔与背景灰度差相差不大,熵值法容易出现背景误判,从而造成毛孔信息的过度选择,从而采用迭代法分割进行对熵值法的阈值的削减。
在本方法中,首先利用最大熵值法对整个图像求出基础的阈值Te;大律法求出背景与目标的比例作为迭代分割的初始比例,由此求出初始阈值T0;通过T0再次划分新的背景与目标区域,迭代产生新的阈值Td,在所求阈值小于基础阈值时,重复迭代过程,最终阈值为基础阈值与迭代阈值的均值。由此完成对最大阈值法的收敛,解决对毛孔信息过度选择的问题。具体过程如下描述:
步骤1在一个系统中,不同属性提供的能量不同,熵值也不同[12]。最大熵值法选择阈值使前景和后景的两个灰度级分布最大,用熵值来测量信息。设u1,u2…un表示观察到的灰度级的频率(n代表灰度级的数量),pi表示在直方图上特定灰度级发生的比率,如式(12)所示
(12)
假设前景区域为目标,背景全为噪声,目标包含的灰度范围为0,1…s,背景包含的像素点的灰度范围为s+1,…m,由此可以得出如式(13)、式(14)所示决策目标的信息熵HO以及背景的信息熵HB
(13)
(14)
其中
(15)
(16)
(17)
则所求图像熵的判别函数为HO+HB,最佳分割阈值满足条件如式(18)所示
Te= arg max(HO+HB)
(18)
步骤2为了更快速地进行迭代,利用大律法(Otsu)确定初始阈值[13]。以Otsu阈值分割后的二值图像为计算目标和背景的比例,设比例为1/N0,遍历整个灰度图像的像素点,寻找整个像素区域的最大值Gmax和最小值Gmin。则预分割阈值为式(19)所示
T0=(Gmax+Gmin)/N0
(19)
根据Otsu确定的预分割阈值,将图像再次分为目标Gu与背景区域Gd,如式(20)、式(21)求出两部分的平均灰度值,设G(i,j)为图像(i,j)的灰度值
(20)
(21)
其中,Q(i,j)为(i,j)的权重系数,初始阈值k=0。重新定义如式(22)阈值Tdk+1
Tdk+1=(Gu+Gd)/Ni
(22)
Ni= N0+ir
(23)
循环上述过程,当Tdk=Tdk+1时结束迭代。
步骤3为解决目标与灰度差不明显时的误判,通过迭代法收敛最大熵的阈值,每经过一次迭代,迭代阈值会逐渐变大,直至所得阈值大于Te时迭代停止。通过式(23)执行i次运算(其中r为常数)得到Td1,Td2…Tdm(Td1,Td2…Tdm≤Te),最终阈值为式(24)所示
(24)
采用ICA-Homo中S空间经同态滤波后高频成分h(x,y)测试改进的最大熵阈值分割算法如图6所示。
图6 最大熵分割改进前后对比
由图6(b)组可以看出,在未改进前的阈值分割中,背景得到误判,导致毛孔分割面积过大且很多被分割错误的毛孔,影响最终分割后毛孔的大小和数量。而改进后与改进前相比,分割较为精确,背景和目标能较好分离,毛孔细节保留完整。
在对ICA分离得到的低频成分l(x,y)和S空间下同态滤波后的高频成分h(x,y)分别进行阈值分割后得到低频和高频的二值图像S(l)、S(h),为了能完整提取到毛孔,对阈值处理后的图片进行逻辑或运算合并图像
S=S(l)|S(h)
(25)
式中:S是最终逻辑运算的二值结果,以图1(a)为例,经过本算法的毛孔结果对比如图7所示。
图7 毛孔分割算法结果
其中,图7(a)为油分偏多的皮肤原始图像,图7(b)中的圆圈是人工毛孔的标识结果,图7(c)是本算法阈值分割后的毛孔分割结果,图7(d)中深灰色部分为毛孔原图像和分割后图像叠加结果。经阈值分割前后的对比,分割后的毛孔和大小精度与原始图像基本吻合。为了有效量化检测的结果,本文定义有效检测率(EDR)、误检率(WDR)两个指标
(26)
(27)
把图7的结果代入上式求得毛孔有效检测率为95%,误检率为4%,验证了上述分析。
本文以6例不同人、不同皮肤特征的毛孔图像来进行分割结果的对照,并设计两个对照组。对照组1主要探讨皱纹、毛发以及光照不均对分割结果的影响;对照组2主要分析油分、痤疮等因素对分割结果的影响。对两个对照组分别采用Otsu算法,以及上文所提到的Otsu-KAPUA算法、HSV-Morph算法以及本文算法进行毛孔分割,获得最终对比结果。
图8是验证在毛发和皱纹的影响下,验证对毛孔的分割效果,图8A组属于毛发较多的毛孔情况;图8B组属于在毛发较多的情况下,皱纹较多且光照不均匀;图8C组为皱纹较多且深邃。下面是几种阈值分割后的对比情况。
图8 对照组1阈值分割结果
根据图8对照组1阈值分割结果所示,在毛发、皱纹和光照不均的影响下,Otsu算法分割毛孔较为粗糙,受皱纹等复杂背景影响程度较大;Otsu-KAPUA算法能够较完整的分割出毛孔,但受制于毛发的影响,对于皱纹的分割也存在问题,把大量皱纹等背景误判为毛孔;HSV-Morph算法能够的规避皱纹等因素,但对毛孔分割不精确,大量毛孔未被识别分割。而本文算法能够较好进行毛孔的识别与分割,图9量化表示毛孔分割结果。
图9 对照组1特征分析折线图
为了更好地分析分割结果,除了EDR和WDR之外,本文引入峰值信噪比(PSNR)和模糊系数(KBlur)作为对照参数[14]。PSNR是评价图像的客观标准之一,衡量图片处理后的品质,其值大小与处理后图片质量成正比。KBlur描述的则是图像信息量的大小,其值的大小与分割结果质量成反比。
如图9折线图所示,描述每组图片4种算法的分割结果在EDR、WDR、PSNR和KBlur的量化特征数据。折线图左边为主坐标轴,PSNR和KBlur的数据结果在主轴读取;折线图右边为副坐标轴,EDR和WDR的数据结果在副轴读取。如图9(a)所示,Otsu算法误检率过高,图像模糊系数也偏大,分割不明确。Otsu-KAPUA算法有效检测率高但误检率也偏高;HSV-Morph算法误检率大于有效检测率;本文算法在4个参数下都有较好的结果,峰值信噪比最高,模糊系数最低,有效检测率为95%,误检率为5%,具有较好的性能。图9(b)和图9(c)特征分析情况如同图9(a),3组图片在本文算法下对毛孔的分割,平均有效检测率约为95%,平均误检率为5%,算法在4组特征的测量下都取得了良好的效果,验证了本文算法在毛发、皱纹和光照不均的影响下对毛孔分割的有效性。
图10是验证在油分和红血丝、痤疮等复杂背景的影响下,验证对毛孔的分割效果,图10A组毛孔发红,皮肤粗糙且较为模糊;图10B组属于在强烈油分下毛孔细致毛发较少;图10C组是在强烈油分下毛孔粗糙,且红肿,伴有红血丝和痤疮。下面是几种阈值分割后的对比情况。
根据图10阈值分割结果对照组2所示,在毛孔发红,皮肤粗糙且清晰度不高的影响下,Otsu算法分割毛 孔较为粗糙,受皱纹、油分等复杂背景影响程度较大;Otsu-KAPUA算法能够较完整的分割出毛孔,但对油分噪声较为敏感,在强烈油分且伴有痤疮的毛孔信息下无法准确分割;HSV-Morph算法在强油分且毛孔细致时,大量毛孔未被分割,其它情况下,分割的信息有大量的噪声。而本文算法能够较好的毛孔的识别,表1~表3利用4种指标量化表示毛孔分割结果。
表1 图10A组数据特征分析
表2 图10B组数据特征分析
表3 图10C组数据特征分析
图10 对照组2阈值分割结果
由表1~表3可知,在油分较大的情况下,其它算法的有效检测率和峰值信噪比较低,误检率和模糊系数较大,不能较好完成毛孔分割。本算法在油分影响下毛孔粗大毛孔细致的检测中也能达到较高的检测率,在毛孔发红、粗糙且清晰度不高图10A组和强烈油分且伴有痤疮的图10C组,毛孔达到全部检测;在强油分、毛孔细致的皮肤图10B组中,毛孔的有效检测率也达到71.4%,验证了本文算法在油分、痤疮等复杂背景影响下对毛孔分割的有效性。
对两个对照组进行分析可得,Otsu算法在噪声干扰大且直方图不具有显著双峰特征的局部面部图像中处理的效果并不理想[15,16],分割结果较为凌乱,不能区分毛孔的具体轮廓;Otsu-KAPUA算法能够较为清晰识别毛孔的轮廓,但易受毛发、皱纹的影响,把毛发和背景信息误识别为毛孔;HSV-Morph算法能够较好分离皱纹下的毛孔,但误检率过高,识别精度不高;本文算法在能够在油分、毛发、皱纹、光照不均和伴有丘疹等环境下,较为精确检测毛孔信息,具有较强的抗干扰能力。
本文以手持USB数码显微镜采集的70例面部皮肤图像作为数据集进行本算法的毛孔分割的测试,人工对图像中毛孔的位置及数量进行标记分析。如图11毛孔数量识别折线图。
图11 毛孔数量识别
折线图所显示的分别是毛孔人工标记的真实值数量,本算法有效检测的毛孔数量以及算法的错误检测的毛孔数量,可见真实毛孔数量与有效检测数量相差不大,基本保持在重合状态,错检的毛孔数量总体不高。通过式(26)、式(27)计算得到EDR约为96%,WDR为4.8%,通过毛孔数量折线图和所测得的数据可以看出本文算法对毛孔检测准确度的提高相对有效。
为了判别毛孔大小精度,更有效的对毛孔大小进行分析,需测量分割后每张面部图片毛孔的平均直径大小以及人工标注毛孔平均直径大小。定义算法所测的每幅面部图像平均毛孔直径大小为dl,人工标注平均毛孔直径大小为da,误差范围为Ed
(28)
(29)
其中,设最终处理后的二值图像有M个待测毛孔,ND是每个毛孔块容纳的像素总数,pix是每个像素点代表的实际大小,N为图像总数。
如图12所示,折线图所显示的分别是本算法所测得算法直径以及标注直径,由图像可知算法直径和标注直径在所测试的70例面部图像数据集中幅度相同,重合度较高。利用计算得到EDR约为96%,WDR为4.8%,通过式(29)测得均方根误差Ed为0.0304,综合验证本文算法能够在油分、毛发、皱纹、光照不均和伴有丘疹、痤疮的复杂背景环境的影响下有效提高毛孔数量准确度和毛孔大小精度。
图12 毛孔大小识别
本文提出了一种针对皮肤图像的毛孔检测算法,构建了ICA-Homo滤波器组以及提出了改进最大熵的毛孔分割方法。在进行的对比实验中本文算法相较于其它算法,对于毛孔分割效果显著增强,有效消除皮肤毛发、光照不均、皱纹、皮肤油分及红血丝、痤疮等复杂背景因素的影响,使毛孔有效检测率达到96%,毛孔大小误差范围为0.0304,提高毛孔数量准确度和毛孔大小的精度,具有较强的鲁棒性。本文的主要算法主要针对于局部面部皮肤图像,对于全局人脸毛孔分割还存在一些分割不准确问题,在今后的研究中有待于进一步的改善。