一种基于质心定位和距离变换的手语图像分割方法
技术领域
本发明涉及一种图像分割方法,尤其是涉及一种基于质心定位和距离变换的手语图像分割方法。
背景技术
手势分割是手势识别过程中的关键步骤,保证其良好的分割效果是实现手语准确识别的重要条件。如何将手势从复杂背景中准确地分割出来始终是一个难点,这主要是因为手势环境容易受光照等因素的影响。目前常见的手势分割技术有基于轮廓信息的分割、基于肤色信息的分割、基于运动信息的分割等。
基于轮廓信息的分割是从图像中提取出目标物体光滑连续的轮廓。基于颜色分割是以指定区域是否具有皮肤颜色作为分割的依据,通过构建肤色模型来排除非肤色目标的干扰,从而获得手势的轮廓信息。基于运动信息的分割指在图像序列中分割出运动中的手型,有光流法、帧间差分法、背景建模法等。
手势分割的方法多种多样,但是在实际分割过程中,单一的方法难以同时完成速度、精度和适应度的要求,在实际应用中通常结合应用场景综合各算法优势采用多方法联合分割。当前手势分割的主要挑战如下:1)手势是一种非刚性物体,其轮廓、大小具有多样性,如何获得手势的轮廓信息具有一定的困难性;2)手势图像中的类肤色区域会对手势分割的结果造成影响;3)手臂部分的冗余信息难以去除。针对以上问题,本发明提出了一种能够在复杂背景下对手势区域的分割方法,即基于质心定位和距离变换的长手臂去除方法。
发明内容
为了解决背景技术中存在的技术问题,针对手势背景中存在的肤色区域(手-臂、脖子、手臂等)及类肤色区域,本发明的目的在于一种基于质心定位和距离变换的手语图像分割方法。
本发明解决其技术问题所采用的技术方案步骤如下:
该方法的步骤如下:
1)先对读取到的手语图像进行转换到YCbCr色彩空间后进行肤色聚类;
所述的手语图像是指人通过比划手势时从正面拍摄获得的图像,为RGB图像,其中比划手势在图像左侧,即人手比较手势的手为右手。
具体实施在日常光照条件下用计算摄像头进行拍摄,对拍摄图片的背景无要求,拍摄的图片中包含手语者的脖子以下及腰部以上区域。
YCbCr色彩空间是一种能将亮度信号和色度信号单独分离开的颜色空间。由于人眼对图像的亮度更加敏感,因此对色度分量进行采样后,肉眼将察觉不到图像质量的变化。当光照强度发生变化时,RGB颜色空间的三个分量会同时发生变化,而YCbCr空间中Cr分量与Cb分量受光强影响不强且依赖性不大,因此肤色在YCbCr空间更适合聚类,能够更好地提取肤色的分布区域。
2)采用中值滤波对分割后的手语图像进行平滑处理,去除图像周围的毛刺或者小白点,然后对滤波后的手语图像进行最大阈值二值化,最后采用图像区域填充算法处理确保图像中手语区域的完整性;
最大阈值二值化后,像素点分为目标像素(值为1)和背景像素(值为0)的两类。
中值滤波主要是滤除目标区域中不相关的干扰,提高图像本身的质量。
3)对于肤色聚类之后的手语图像中存在类肤色区域,它们的存在严重影响手语的特征提取,为此必须进行剔除。针对这种技术问题本发明针对采用面积算子和质心定位进行处理获得手-臂区域,去除手语聚类之后手语图像中存在的脖子及不相关的手臂区域;
4)由于手语者的手势部分会带有手臂部分的冗余信息,为了去除这些信息,本发明针对采用基于距离变换的方法对手语图像进行手-臂区域分离,从而实现手部区域与手臂区域的准确分割。
所述的步骤1)中,具体为:
1.1)从RGB色彩空间到YCbCr色彩空间的转换是通过线性转换来实现的,转换公式如下:
其中,Y、Cb、Cr分别表示明亮度、蓝色色度、红色色度;
1.2)然后将手语图像进行聚类,聚类具体可采用阈值分割法,实现手语区域与背景区域的正确划分,达到了图像分割的目的。
所述的步骤3)中,采用面积算子和质心定位进行手-臂区域的确定及分离,具体步骤如下:
3.1)手语图像中存在三个肤色区域及其他类肤色区域,三个肤色区域分别为单独手臂区域、脖子区域、手-臂区域。在步骤2)聚类处理之后手语图像中存在多个肤色区域,本发明保留面积最大的三个肤色区域,最大的三个区域分别为单独手臂区域、脖子区域、手-臂区域,最大的三个面积分别为maxArea、secArea、thiArea,将这三个肤色区域保留,其他区域用黑色填充;
3.2)相比脖子区域和单独手臂区域,手-臂区域在手语图像的左侧,采用以下公式计算三个肤色区域的质心位置,计算质心前先使用OpenCV软件工具中的moments模块计算或图像的零阶矩(m00)和一阶矩(m10、m01),质心坐标的计算公式如下:
3.3)计算获得三个肤色区域的质心位置后,取保留的三个肤色区域中质心坐标最小的肤色区域作为手-臂区域。
所述步骤4)具体为:
图像中的冗余信息会对手势表达的正确含义产生影响,且手臂长短会造成的特征差异性,本发明针对这一现象,提出基于距离变换对手语图像进行细分割,该方法用于定位手部区域与手臂区域的切割线,能够去除冗余信息,很好地解决手臂长短会造成的特征差异性的图像处理问题。
对手语图像先进行第一次距离变换,之后获取像素值最大的点Pc,作为掌心点,计算掌心点Pc与边界点之间的距离最大值maxDistance,然后判断:
当距离最大值maxDistance≤59,则进行步骤4.1);当距离最大值maxDistance>59时,则进行步骤4.2);
具体步骤如下:
4.1)当距离最大值maxDistance≤59,对再分割之后的图片进行距离变换,获得距离变换映射图,获取距离变换映射图中的像素值最大点Pc;
4.1.1)根据第一次距离变换的结果进行一次分割,以掌心点Pc为圆心作半径R1的掌心内切圆;
4.1.2)分割后再进行第二次距离变换,获得第一距离变换映射图;
再建立以掌心点Pc为圆心作半径R2的掌心外割圆,R2=factor1*R,factor1表示第一系数因子,取掌心外割圆上的点在第一距离变换映射图中像素值最大的点作为线段点P2max;
在掌心点Pc与线段点P2max两点之间作线段PcP2max,求出过点线段点P2max与线段PcP2max垂直的直线L2,直线L2上距离变换的边界点记为Pa、Pb,点Pa和点Pb连接构成第一切割线段PaPb;
4.1.3)以掌心点Pc为种子点进行四连通形式的形态学重建,从种子点Pc出发以手语图像的轮廓图为模板将手语图像的轮廓图中以第一切割线段PaPb为界将手连通域分为两部分,将包含有种子点Pc的部分中所有像素点均设置为白色;
所述的手语图像的轮廓图具体采用以下方式处理获得:通过opencv中的cvFindContours()函数工具查找再分割之后的手语图像的轮廓图,然后用opencv中的cvDrawContours()函数工具绘制手语图像的轮廓图,获得了手连通域。
4.1.4)用重建之后的手语图像减去手语图像的轮廓图,得到最终的手语图像分割结果。
4.2)当距离最大值maxDistance>59,根据距离变换进行两次分割。对再分割之后的图片进行距离变换,获得距离变换映射图。
4.2.1)根据第一次距离变换的结果进行一次分割,取距离变换之后最大像素值所处的点作为手肘心点Pd,以手肘心点Pd为圆心作半径R3的手肘内切圆;
4.2.2)分割后再进行第二次距离变换,获得第二距离变换映射图;再建立以手肘心点Pd为圆心作半径R4的手肘外割圆,R4=factor1*R3,factor1表示第一系数因子,取手肘外割圆上的点在第二距离变换映射图中像素值最大的点作为线段点P4max;
在手肘心点Pd与线段点P4max两点之间作线段PdP4max,求出过点线段点P4max与线段PdP4max垂直的直线L3,直线L3上距离变换的边界点记为Pe、Pf,点Pe和点Pf连接构成第二切割线段PePf;
4.2.3)以手肘心点Pd为种子点进行四连通形式的形态学重建,从种子点Pc出发以手语图像的轮廓图为模板将手语图像的轮廓图中以第一切割线段PaPb为界将手连通域分为两部分,将包含有种子点Pc的部分中所有像素点均设置为白色;
4.2.4)用步骤4.2.3)重建之后的手语图像减去手语图像的轮廓图,得到中间重建图像,用步骤4.2.1)分割之后获得的图像减去中间重建图像,得到手势图像,用手势图像减去手语图像的轮廓图,得到初步手语分割图像,结果图如图11(b)所示;
4.2.5)分割后再进行第二次距离变换,获得第一距离变换映射图;
取距离变换之后最大像素值所处的点作为掌心点Pc,再建立以掌心点Pc为圆心作半径R2的掌心外割圆,R2=factor1*R,factor1表示第一系数因子,取掌心外割圆上的点在第一距离变换映射图中像素值最大的点作为线段点P2max;
在掌心点Pc与线段点P2max两点之间作线段PcP2max,求出过点线段点P2max与线段PcP2max垂直的直线L2,直线L2上距离变换的边界点记为Pa、Pb,点Pa和点Pb连接构成第一切割线段PaPb;
4.2.6)以掌心点Pc为种子点进行四连通形式的形态学重建,从种子点Pc出发以手语图像的轮廓图为模板将手语图像的轮廓图中以第一切割线段PaPb为界将手连通域分为两部分,将包含有种子点Pc的部分中所有像素点均设置为白色;
4.2.7)用重建之后的手语图像减去手语图像的轮廓图,得到最终的手语图像分割结果。
由于手语图像中手语者的手势部分会带有手臂部分的冗余信息,为了去除这些信息,本发明提出了基于距离变换的图像处理方法进行手-臂区域分离,该图像处理方法能够实现手部区域与手臂区域的准确分离。
所述的步骤4)中,采用距离变换对手语图像进行再分割,实现手部区域的准确分割,主要是通过标识空间点(目标点与背景点)距离的过程,最终将二值图像转换为灰度图像。
所述的步骤4)中,距离变换以欧式距离变换,欧式距离变换的具体步骤如下:
S1将图像中的目标像素点分类,分为内部点、外部点和孤立点:
以中心像素的四邻域为例,如果中心像素为目标像素(值为1)且四邻域都为目标像素(值为1),则该中心像素为内部点;如果该中心像素为目标像素,四邻域为背景像素(值为0),则该中心像素为孤立点;除了内部点和孤立点之外的目标区域点为边界点;
S2计算图像中所有的内部点和非内部点,非内部点由外部点和孤立点组成,点集分别组建为内部点集S1和外部点集S2;
S3对于内部点集S1中的每一个内部点,使用以下公式计算其和外部点集S2中各个点之间的最小距离,所有最小距离构成距离集合S3:
其中,p(x1,y1),q(x2,y2)分别为内部点集S1和外部点集S2中的一点;
S4取距离集合S3中的最大最小值Max,Min,对于每一个内部点,采用以下公式转换灰度值G,计算如下公式:
G(x,y)=255*|S3(x,y)-Min|/|Max-Min|
其中,S3(x,y)表示内部点集S1中的点(x,y)和外部点集S2中各个点之间的最短距离;
S5对于孤立点和边界点的灰度值保持不变。
本发明利用YCbCr颜色空间的肤色聚类方法对手语图像进行初分割,去除背景中的类肤色区域;利用面积算子和质心定位对手语图像进行再分割,实现手-臂区域的定位;利用距离变换对手语图像进行细分割,实现手部区域的准确分割。本发明提出的方法解决了对手臂区域的分割问题,适用于大弯臂、长臂两种情况的分割。
本发明具有的有益效果是:
(1)本发明采用基于面积算子及质心定位的手臂区域确定方法,去除非手部的类肤色及肤色区域(如脖子、手臂等),确定手-臂区域的具体位置。
(2)提出基于距离变换的手臂分割方法,该方法能够实现大弯臂、长直臂的准确分割。
本发明提出的方法解决了对手臂区域的分割问题,适用于大弯臂、长臂两种情况的分割,图像分割方法具有较好的鲁棒性,能适应两种手臂情形,也能适应手势旋转和手势大小改变。
附图说明
图1为本发明方法的流程图。
图2为本发明方法所用到的部分数据集。
图3为本发明实施例的原始手语图像和肤色聚类结果图。
图4为本发明实施例的中值滤波结果图。
图5为本发明实施例的面积算子和质心定位进行手-臂区域确定结果图。
图6为本发明实施例的距离变换前后的手势图像。
图7为本发明实施例的大直臂中切割线段定位图。
图8为本发明实施例的大直臂分割结果图。
图9为本发明实施例的大弯臂中的第一距离变换映射图。
图10为本发明实施例的大弯臂中第一次切割线段定位图。
图11为本发明实施例的大弯臂中第一次重建结果图。
图12为本发明实施例的大弯臂中第二次重建的原始图获取。
图13为本发明实施例的大弯臂中第二次切割线段定位图。
图14为本发明实施例的大弯臂分割结果图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
本发明方法的数据集如图2所示,由于本发明的识别对象是自定义的26类静态字母手势,主要研究两种手臂情形(大弯臂、大直臂),所以本发明自建了静态手势图片库,包括不同角度和不同大小的情形,在日常光照条件下用计算摄像头进行拍摄,将图像保存成.jpg格式,最后的图片大小为1920×1080。
如图1所示,本发明方法先通过MFC中的picture控件按照规定的大小读入手语图像,利用YCbCr颜色空间的肤色聚类方法去除背景中的类肤色区域,然后利用面积算子和质心定位实现手-臂区域的定位,最后利用距离变换对手语图像进行细分割,实现手部区域的准确分割,本发明方法的实施例如下:
1)本发明采用MFC中的picture控件读入手语图像,读入的图像按照公式(5)进行缩放。
其中,w,h分别表示原手语图像的高和宽,nw,nh分别表示缩放后手语图像的高和宽。
本发明利用手语图像库中的130张手语图像进行YCbCr颜色空间中Cb与Cr随亮度变化的实验验证,当Y值在70-190之间时,Cr在138-163之间且Cb在77-125之间聚类效果较好;当Y值低于70时图像很暗,当Y值大于190是图像较亮,这两种情况进行肤色聚类时需要设置原像素值为0。图像聚类之后的效果图如图3(b)所示,聚类之后的图像记为fuse。
2)通过图像去噪,可以滤除无关信息,增强目标信息,增大图像的信噪比,提高图像质量。经实验验证,对图像进行肤色聚类之后再进行滤波操作具有很好的去噪效果,图像通过中值滤波的手语图像能够去除噪声且图像没有受到破坏。对图像fuse进行中值滤波的结果图如图4(b)所示,中值滤波之后的图像记为filter。
3)由手语图像库可以看出本发明采集的复杂背景下的手语图像中包含有脖子,手臂等肤色区域,因此肤色聚类后的手语图像中存在除手势部分的其他肤色区域也是必然的。其存在严重影响到手语的特征提取,为此必须进行剔除。针对这种现象本发明采用面积算子和质心定位进行手-臂区域的确定,去除除手势区域以外的肤色区域,保证手-臂区域与背景准确的分离开,对图像filter的再分割结果图如图5所示,图5(a)为二值化后的手语图像,图5(b)为再分割后的手语图像。
3.1)计算各区域的面积,保留面积最大的三个区域,最大的三个面积分别记为maxArea、secArea、thiArea,将这三个区域保留,其他区域用黑色填充;
3.2)计算三个区域的质心坐标,比较三个区域质心坐标的x大小,保留质心坐标中的x最小的区域,并绘制其轮廓图,其他区域用黑色填充。
4)对再分割后的手语图像先进行第一次距离变换,之后获取像素值最大的点计算像素值最大的点与边界点之间的距离最大值maxDistance,然后判断:当距离最大值maxDistance≤59,则判断手语图像为直臂情况,进行一次基于距离变换的细分割,具体进行步骤4.1);当距离最大值maxDistance>59时,则判断手语图像为大弯臂情况,进行两次基于距离变换的细分割,具体进行步骤4.2);
具体步骤如下:
4.1)第一次距离变换的结果图如图6所示,6(a)为再分割后的手语图像,6(b)为距离变换之后的手语图像,即为距离变换映射图。根据距离变换映射图求得求得掌心内切圆,建立掌心外割圆,然后求得第一切割线段,从而实现手语图像的准确分割。
4.1.1)当距离最大值maxDistance<=59时,根据第一次距离变换的结果进行一次分割,具体实施的分割均采用基于形态学重建的分割方法进行处理;将最大像素值所在的点记为掌心点Pc,以掌心点Pc为圆心作半径R1的掌心内切圆(R1为距离变换映射图中的最大像素值,由opencv中的函数cvMinMaxLoc()获得);掌心点及掌心内切圆的定位图如7所示,图7(a)为再分割之后的手语图像,图7(b)为掌心点及掌心内切圆的定位图。从图7(b)可以看出,掌心内切圆外部包含有手指区、手臂区和手掌区剩余部分组成。
4.1.2)再建立以掌心点Pc为圆心作半径R2的掌心外割圆,R2=factor1*R1,factor1表示第一系数因子,手掌区剩余部分在外割圆内部,手指区和手臂区均在外割圆外部,记掌心外割圆与手指区和手臂区的交点集合为第一点集,在第一点集中离手部边界距离最远的点应落在手臂区域,即取掌心外割圆上的点在第一距离变换映射图中像素值最大的点作为线段点P2max,该点一般位于手臂中线处;
在掌心点Pc与线段点P2max两点之间作线段PcP2max,求出过点线段点P2max与线段PcP2max垂直的直线L2,直线L2上距离变换的边界点记为Pa、Pb,点Pa和点Pb连接构成第一切割线段PaPb,第一切割线段定位如图7(c)所示;
对于第一系数因子factor1,如果手部区域二阶矩椭圆长轴/短轴>2,则
factor1=1.75否则factor1=1.65。
4.1.3)第一切割线段PaPb上点的连接形式是八连通形式的连接,因此用第一切割线段PaPb切割后,手掌手指区与手臂区的断开是四连通形式的断开。以掌心点Pc为种子点进行四连通形式的形态学重建,从种子点Pc出发以手语图像的轮廓图为模板将手语图像的轮廓图中以第一切割线段PaPb为界将手连通域分为两部分,将包含有种子点Pc的部分中所有像素点均设置为白色(填充色/边界色);
形态学重建之后的效果图如图8所示,图8(a)静态手势原图像,图8(b)为重建之后的手势图像。
具体实施的手语图像的轮廓图具体采用以下方式处理获得:通过opencv中的cvFindContours()查找再分割之后的手语图像的轮廓图,然后通过opencv中的cvDrawContours()绘制手语图像的轮廓图,获得了手连通域。
4.1.4)用重建之后的手语图像减去手语图像的轮廓图,得到最终的手语图像分割结果,如图8(c)所示。
4.2)第一次距离变换的结果图如图9所示,9(a)为再分割后的手语图像,9(b)为距离变换之后的手语图像,即为第一距离变换映射图。根据第一距离变换映射图求得求得肘心内切圆,建立肘心外割圆,然后求得第二切割线段,从而实现基于距离变换的第一次分割,再对分割后的图像进行第二次距离变换,实现基于距离变换的第二次分割。
4.2.1)当距离最大值maxDistance>59时,根据第一次距离变换的结果进行一次分割,取距离变换之后最大像素值所处的点作为手肘心点Pd,以手肘心点Pd为圆心作半径R3的手肘内切圆(R3为第一距离变换映射图中的最大像素值,由opencv中的函数cvMinMaxLoc()获得);手肘心点Pd及手肘内切圆的定位图如图10所示,图10(a)为再分割之后的手语图像,图10(b)为手肘心及手肘内切圆的定位图,从图10(b)可以看出,手肘内切圆外部由手部区、手臂区和手肘剩余部分组成。
4.2.2)再建立以手肘心点Pd为圆心作半径R4的手肘外割圆,R4=factor1*R3,factor1表示第一系数因子,手肘区剩余部分在外割圆内部,手部区和手臂区均在外割圆外部。记手肘外割圆与手指区和手臂区的交点集合为第二点集,在第二点集中离手肘边界距离最远的点应落在手臂区域,即取手肘外割圆上的点在第二距离变换映射图中像素值最大的点作为线段点P4max,该点一般位于手臂中线处;
在手肘心点Pd与线段点P4max两点之间作线段PdP4max,求出过点线段点P4max与线段PdP4max垂直的直线L3,直线L3上距离变换的边界点记为Pe、Pf,点Pe和点Pf连接构成第二切割线段PePf,第二切割线段定位如图10(c)所示;
对于第一系数因子factor1,如果手部区域二阶矩椭圆长轴/短轴>2,则
factor1=1.75否则factor1=1.65。
4.2.3)第二切割线段PePf上点的连接形式是八连通形式的连接,因此用第二切割线段PePf切割后,手肘手臂区与掌区的断开是四连通形式的断开。以手肘心点Pd为种子点进行四连通形式的形态学重建,从种子点Pd出发以手语图像的轮廓图为模板将手语图像的轮廓图中以第二切割线段PePf为界将手连通域分为两部分,将包含有种子点Pd的部分中所有像素点均设置为白色(填充色/边界色);
形态学重建之后的效果图如图11所示,图11(a)为分割之后的手语图像,图11(b)为重建之后的手势图像。
4.2.4)用步骤4.2.3)重建之后的手语图像减去手语图像的轮廓图,得到中间重建图像,如图11(c)所示,用步骤4.2.1)分割之后获得的图像减去中间重建图像,得到手势图像,结果图如12(a)所示,用手势图像减去手语图像的轮廓图,得到初步手语分割图像,结果图如图12(b)所示;
4.2.5)分割后再进行第二次距离变换,获得第二距离变换映射图;第二次距离变换结果如图13所示,图13(a)为分割之后的手语图像,图13(b)为分割后再进行第二次距离变换之后的手语图像,即为第二距离变换映射图。
取距离变换之后最大像素值所处的点作为掌心点Pg,以掌心点Pg为圆心作半径R5的掌心内切圆(R5为第二距离变换映射图中的最大像素值,由opencv中的函数cvMinMaxLoc()获得),再建立以掌心点Pg为圆心作半径R6的掌心外割圆,R6=factor1*R5,factor1表示第一系数因子,手掌区剩余部分在外割圆内部,手指区和手臂区均在外割圆外部,记掌心外割圆与手指区和手臂区的交点集合为第三点集,在第三点集中离手部边界距离最远的点应落在手臂区域,即取掌心外割圆上的点在第二距离变换映射图中像素值最大的点作为线段点P3max,该点一般位于手臂中线处;
在掌心点Pg与线段点P3max两点之间作线段PgP3max,求出过点线段点P3max与线段PgP3max垂直的直线L4,直线L4上距离变换的边界点记为Ph、Pi,点Ph和点Pi连接构成第三切割线段PhPi,第三切割线段定位如图13(c)所示;
对于第一系数因子factor1,如果手部区域二阶矩椭圆长轴/短轴>2,则factor1=1.75否则factor1=1.65。
4.2.6)第一切割线段PhPi上点的连接形式是八连通形式的连接,因此用第三切割线段PhPi切割后,手掌手指区与手臂区的断开是四连通形式的断开。以掌心点Pg为种子点进行四连通形式的形态学重建,从种子点Pg出发以手语图像的轮廓图为模板将手语图像的轮廓图中以第三切割线段PhPi为界将手连通域分为两部分,将包含有种子点Pg的部分中所有像素点均设置为白色(填充色/边界色);
形态学重建之后的效果图如图14所示,图14(a)为重建之后的手势图像。
4.2.7)用重建之后的手语图像减去手语图像的轮廓图,得到最终的手语图像分割结果,如图14(b)所示。
由上述可知,本实例可实现大弯臂、大直臂两种情况的手势准确分割,保证了手部区域的完整性。
上述具体实施方式用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明做出的任何修改和改变,都落入本发明的保护范围。