一种基于图像处理的手部轮廓提取方法
2022-09-07王思霖
王思霖
(信阳农林学院信息工程学院 河南 信阳 464000)
0 引言
随着机器学习领域的发展,硬件处理能力的迅速提高,基于人工智能的人体特征识别技术快速进步,包括人脸识别、手势识别、身体姿态识别等。近年来,手势识别已成为图像识别领域的一个重要研究分支,其技术也逐渐被应用于多种场景中的人体交互系统[1]。例如利用手势控制智能家居、汽车智能辅助驾驶中利用手势操作汽车的各种功能、视频直播中通过手势添加动画特效等。目前的手势识别技术多数是基于机器学习算法实现的,将包含手部图像的图像数据直接作为数据源来对模型进行训练[2],训练完成后,通过将手势图像作为模型的输入来预测图像中手势的类别,从而达到识别手势的目的。但因为包含手部的图像数据常具有较大的数据量,以图像数据直接作为模型输入会导致例如模型训练时间长、对硬件性能具有高依赖性等问题的产生。为了解决这个问题,本文提出了一种基于图像处理的,在图像中提取手部轮廓的方法,该方法能够大幅度缩减图像数据量。使用只包含手部轮廓像素的图像数据代替原始图像数据作为模型的数据输入,可以达到缩短模型训练时长,降低其对硬件性能依赖的目的。
1 设计思路
本方法的设计思路如图1所示。在读取包含手部的图像后,因为图像的默认色彩空间为RGB,为了方便下一步的肤色检测,需要转化成HSV色彩空间。转换之后的图像需要对其中的像素进行扫描,将满足HSV肤色检测约束条件的像素保留,其余不满足条件的像素丢弃。将肤色检测过滤后的图像转换为二值图像(只有黑白两色),利用轮廓提取算法找出图像中的轮廓边缘。虽然图像中的像素已经过肤色检测的过滤,但难免会有符合肤色检测约束条件的非肤色像素,因此可能会出现除了手部轮廓外的其他轮廓也被提取到的情况。但通常来说图像中的手部轮廓从尺寸上来说是最长的,因此可以通过比较找到包含像素个数最多的轮廓作为手部轮廓。
2 技术原理
2.1 色彩空间
色彩空间(颜色模型)是用来描述颜色的一种数学模型,利用该模型可以通过数值的方式来准确地描述自然界中的颜色,常用的色彩空间有RGB色彩空间、HSV色彩空间和YCbCr色彩空间等。同一种颜色可以通过不同的色彩空间去描述,并且可以基于公式在不同的色彩空间中进行数值转换。
2.1.1 RGB色彩空间
RGB色彩空间被广泛应用于电子系统中且通常作为数码图片的默认存储和表示方式,任何色彩都可以通过混合红、绿、蓝这三种基本色来获得[3],具体得到什么颜色取决于三种基本色混合的比例。相反,任何一种颜色也都可以分解表示为红、绿、蓝三种颜色分量,各分量的取值范围为0至255。通过RGB色彩空间,数码图片中的每一个像素点的颜色都可以通过红、绿、蓝三种颜色分量来进行准确表示,见图2。
2.1.2 HSV色彩空间
HSV色彩空间是RGB色彩空间在圆柱坐标系中的表示方法,相对于RGB色彩空间,它在颜色体验上更符合人类的直觉。HSV由色相(H)、饱和度(S)和明度(V)三种分量组成[4],其中色相(H)是色彩的基本属性,饱和度(S)是指色彩的纯度,值越高表示色彩越纯,值越低色彩逐渐变灰,明度(V)表示亮度,见图3。
2.1.3 YCbCr色彩空间
YCbCr色彩间常用于图像处理。YCbCr色彩空间中的颜色由Y、Cb、Cr三种分量进行表示,其中Y代表亮度,Cb代表蓝色分量,Cr代表红色分量,见图4。
2.1.4 RGB色彩空间与HSV色彩空间的转换公式
RGB色彩空间可以通过以下公式转换为HSV色彩空间:
2.2 肤色检测
肤色检测是一种在数字图像中识别肤色像素和非肤色像素的技术,在人脸识别、手势识别等计算机视觉领域有广泛应用[5]。肤色检测的原理是基于像素的颜色分类器,通过图形分割、前景提取、色彩判断等方式过滤出图像中的皮肤像素区域。本方法采用了基于HSV色彩空间的肤色检测方法,通过约束条件来过滤出图像中的肤色像素。现有研究成果表明,人体肤色在HSV色彩空间中的约束条件为:
条件1:3<H<23
条件2:28<S<256
条件3:50<V<256
该检测方法会对色彩空间为HSV的图像中的像素逐个扫描并判断其是否符合上述约束条件,符合条件则判定为肤色像素并保留该像素,不符合条件则会被过滤掉。当所有像素都被扫描完成时,图像中会只剩下肤色像素。
2.3 图像二值化
因为本方法采用的轮廓提取算法需要二值化图像作为输入,因此需要将肤色检测过滤后的图像进行二值化处理。图像二值化就是将图像上的像素点的灰度值设置为0(黑色)或255(白色),也就是将灰度图像转换为黑白图像的过程。如果像素的灰度值大于阈值,则将其转换为白色[6]。如果像素的灰度值小于阈值,则将其转换为黑色。在图像处理中,二值图像有重要的作用,二值化可以明显地降低图像的数据量,并且能突出目标的轮廓。
2.4 轮廓提取
轮廓提取采用了边界跟踪算法,该算法用于数字化二值图像的拓扑结构分析,能够获取二值图像的边界的包围关系。该算法适用于二值图像的轮廓提取,因此在提取图像手部轮廓前需要将图像进行二值化处理[7-8]。该算法流程为:
(1)对输入的二值化图像进行扫描,从上到下,从左到右,寻找满足边界条件的点,如果该点同时满足外边界起始点和孔边界起始点的条件,则将该点看作外边界跟踪起始点。
(2)找到边界跟踪起始点后,执行边界跟踪,找到完整边界。
边界点的定义存在两种情况。第一种情况,在四连通的情况下,如图5中(一)所示,一个1像素点在它的八个邻域内存在一个0像素点,则称该1像素点为边界点。第二种情况,在八连通的情况下,如下图5中(二)所示,一个1像素点在它的四邻域内存在一个0像素点,则称该1像素点为边界点[9]。其中0像素点指的是灰度值为0的像素点,1像素点指的是灰度值为1的像素点。
3 实验及结果分析
3.1 实验环境
硬件环境:
中央处理器为3500X 3.60 GHz,内存为16 G。
软件环境:
编程语言为Python3.9.5,图像处理库OpenCV4.5.5。
3.2 实验步骤
(1)输入包含手部的原始图像。
(2)将图像的色彩空间从RGB转为HSV。
(3)通过HSV肤色检测约束条件过滤图像中的像素。
(4)将肤色检测过滤后的图像进行二值化处理。
(5)在二值图像中寻找手部轮廓(包含像素点个数最多的轮廓)。
3.3 实验结果
下图为实验过程中各个步骤的图像。
第一步,如图6中(一)所示,包含手部图片的原始图像默认的色彩空间是RGB,所以在输入后需要将色彩空间被转化为HSV,如图6中(二)所示。
第二步,HSV色彩空间的图像通过肤色检测过滤后只保留了手部区域的像素,如图6中(三)所示。
第三步,只包含手部区域像素的图像被转化为二值图像,如图6中(四)所示。
最后,利用边界跟踪算法找到手部轮廓,如图6中(五)所示。
表1展示了原始图像与提取轮廓后的图像的数据量大小对比,从数据可以看出,提取轮廓后的图像量仅有原始图像的1.2%,这表明在保留手部轮廓信息的条件下将图像数据量降低了98.8%,数据量减少效果明显。
表1 图像数据量对比
4 结语
本文提出了一种基于图像处理和边界跟踪算法的手部轮廓提取方法,在包含手部的原始图像输入后,经过转换色彩空间、肤色检测过滤、二值化处理等图像处理步骤对原始图像进行处理。处理后的图像使用边界跟踪算法找出其中的手部轮廓,最终得到只保留手部轮廓的图像。手部轮廓信息可以直接作为判断手势类别的依据,因此只保留手部轮廓的图像可以代替原始图像作为机器学习模型的数据输入[10]。后经实验验证,只保留手部轮廓的图像在数据量上相对原始图像有大幅度的缩减,因此使用只保留手部轮廓的图像作为模型的数据输入可以有效地降低模型的训练时间和对硬件性能的要求。