发明内容
本发明的目的在于提供一种基于深度与灰度图像融合的头姿估计感兴趣点检测方法,将基于深度图像检测到的特征点与基于灰度图像检测到的特征点相结合,最终形成一些定位准确、鲁棒性强的特征点,有效解决现有算法中存在的特征点检测结果不准确、鲁棒性差等造成因误差累计头姿估计准确率低的问题。
为了实现上述目的,本发明采用以下技术方案:基于人脸深度图像各点与邻域点之间的深度差异性,利用所定义的深度Harr特征模板对所获取的人脸深度图像进行特征提取,然后利用Adaboost算法训练级联分类器,筛选出鼻尖、鼻鞍、左右耳垂等特征点;基于人脸灰度图像中眼睛与周围相邻区域灰度值的差异,对其提取Haar-like特征,然后利用Adaboost算法训练级联分类器,筛选出特征点眼睛。最后将人脸深度图像与灰度图像对齐,即可完成对人脸左右眼睛、鼻尖、鼻鞍、左右耳垂等特征点的检测。
一种基于深度与灰度图像融合的头姿估计感兴趣点检测方法,包括以下步骤:
步骤1,提取深度图像特征点。
步骤1.1,输入人脸深度图像。
步骤1.2,手工标定鼻尖、鼻鞍以及耳垂等特征点的训练样本。
步骤1.3,计算已标定样本的深度Harr-like特征。
步骤1.4,训练Adaboost分类器。
步骤2,提取灰度图像特征点。
步骤2.1,输入人脸灰度图像。
步骤2.2,标定瞳孔中心。
步骤2.3,计算已标定样本的Harr-like特征。
步骤2.4,训练Adaboost分类器。
步骤3,集成深度图像与灰度图像所提取的特征点。
步骤3.1,利用训练好的2个Adaboost分类器分别对输入的人脸深度图像和灰度图像进行特征点检测。
步骤3.2,对齐深度图像与灰度图像,确定左右眼睛、鼻尖、鼻鞍、左右耳垂等感兴趣点。
与现有技术相比,本发明具有以下明显优势:
本发明利用头部感兴趣点所具有的深度数据分布特性,提出一种在深度图像中对计算所得的Haar-like特征值进行修正的计算模式,实现特征点的检测,充分继承了深度与灰度图像的不同特征点检测的优势,即深度图像不受光照变化以及复杂背景的影响,而灰度图像便于瞳孔检测,最大程度地、快速地检测到深度图像中表面变化大的特征点以及灰度图像中灰度分布特征显著的瞳孔区域,尤其是提取的特征具有一定的空间旋转不变性,在大角度旋转情形下也能逼近人脸特征点真值,提高了最终的特征点检测精度,缩短了检测时间。
具体实施方式
以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明所用到的硬件设备包括Kinect for Windows(微软体感摄像头)1台、PC机1台,其中Kinect for Windows用来采集人脸深度数据以及彩色图像,PC机用来处理数据并完成感兴趣点的检测。
本发明所述方法的流程图如图1所示,具体包括以下步骤:
步骤1,提取深度图像的特征点。
步骤1.1,输入人脸深度图像。
所述深度图像为单通道图像,是从深度摄像机采集的面部深度数据转变而来,具体过程如附图3所示。对于一张人脸深度数据,首先计算这些深度数据的最大值、最小值以及均值,然后将它们归一化并放大到0~255,最大深度公式、最小深度公式以及平均深度公式及深度数据归一化公式如下:
maxDepthValue=Max(depth(pixel(i))) (1)
minDepthValue=Min(depth(pixel(i))) (2)
其中,i=1,2,3,...,n,n为所有有效像素的数量;depth(pixel(i))为深度数据中第i个像素处的深度值,pixelDepth为深度数据转化为可视深度图像后的对应的灰度值。
这样便将全部深度数据转化为三个深度值和一幅深度图像。
对于场景中的待检测对象,首先使用深度阈值分割法将人体从场景中分割出来,然后将头部从人体图像中分割出来,比如,微软的KinectSDK包中骨架模型检测出人体头部基本位置,进而利用人体结构的相关先验知识将头部所在的矩形区域分割出来。由于得到的头部原始数据为一些以毫米为单位的深度值,为了便于对这些数据进行特征点标定,利用公式(4)将这些数据进行变换,将原始深度数据转化为一个单通道的图像。显然,距离摄像机平面最近的那些点灰度值最高,用纯白色表示。
步骤1.2,手工标定鼻尖、鼻鞍以及耳垂等特征点的训练样本。
对于步骤1.1得到的深度图像,标定出鼻尖、鼻鞍以及左右耳垂这些特征点,然后以每个特征点为中心进行图像切割,得到固定大小的特征点正例样本,样本大小一般取24*24,这样一来,特征点就都会位于训练样本的几何中心。为了能够使训练出的头部特征点检测器对不同人、不同距离以及不同角度下均具有稳定性,就要选择不同人、不同距离以及不同角度下的头部特征点进行标定,最终大量的标定样本构成正训练样本;同时,为了使训练出的头部特征点检测器具有高的识别能力,需要选择大量的非待检测特征点样本作为负训练样本。当然,负训练样本中并不是都不包含感兴趣特征点,只是在负样本中这些特征点将不位于样本几何中心。一些深度图像正训练样本以及负训练样本如附图3所示:图3(1)~(4)分别为标定好的右耳垂、左耳垂、鼻尖、下巴正例训练样本,而图3(5)~(8)分别为对应的反例训练样本。
步骤1.3,计算已标定样本的深度Harr-like特征。
使用图2(1)~(6)所示的6种模板类型分别对已标定的深度图像进行特征提取,获取每类图像中的所有特征。特征值计算公式为:
其中,value为特征值,n表示模板中黑色矩形框的个数,θ表示模板区域源图像沿x轴的旋转角度,
表示模板区域源图像沿y轴的旋转角度。对于灰度图像,θ和
均取0;对于深度图像,不同类型的模板,θ和
的值也不同,分别等于模板沿横轴和纵轴两端区域像素和之差的绝对值与两端之间表示的实际距离之比的反正切值。
(1)计算模板区域深度图像的局部旋转角度。
以摄像机平面水平方向为x轴、竖直方向为y轴以及垂直于屏幕的方向为z轴建立坐标系。在所建坐标系下计算不同模板的局部旋转角度。
对于图2(1)所示模板,沿x轴的旋转角度θ=0,计算沿y轴的旋转角度
公式如下:
式中,Wtemplate为模板代表的实际宽度,单位为毫米。
对于图2(2)所示模板,沿y轴的旋转角度
计算沿x轴的旋转角度θ,公式如下:
式中,Htemplate为模板代表的实际宽度,单位为毫米。
对于图2(3)所示模板,沿x轴的旋转角度θ=0,计算沿y轴的旋转角度
公式如下:
对于图2(4)所示模板,沿y轴的旋转角度
计算沿x轴的旋转角度θ,公式如下:
对于图2(5)所示模板,计算沿y轴的旋转角度
和沿x轴的旋转角度θ,公式如下:
对于图2(6)所示模板,计算沿y轴的旋转角度
和沿x轴的旋转角度θ,公式如下:
(2)计算模板区域深度图像的特征值。
将步骤(1)得到的局部旋转角度带入特征值计算公式即可求出深度图像中给定模板区域的特征值。对于图2(1)~(6)所示模板,n的取值分别为:1,1,2,2,8,8。
步骤1.4,训练Adaboost分类器。
对于步骤1.3中得到的特征,训练一系列弱分类器,然后按照权重级联为一个强分类器。
步骤2,提取灰度图像特征点。
步骤2.1,输入人脸灰度图像。
所述的灰度图像为单通道图像,这里的灰度图像可以由彩色图像转变而来,也可以直接选择彩色图像的任一通道,其中每个像素点取值范围为0-255。
步骤2.2,标定瞳孔中心。
对于步骤2.1得到的灰度图像,标定出瞳孔的中心位置,然后按照与步骤1.2相同的方法进行正负训练样本的制作。图4(1)、(2)分别为标定好的左、右瞳孔正例训练样本,而图4(3)、(4)为反例训练样本。
步骤2.3,计算已标定图像样本Harr-like特征。
利用图2(1)~(6)所示的6种模板类型对步骤2.2的正负样本进行Haar-like特征提取。
步骤2.4,训练Adaboost分类器。方法与步骤1.4相同。
步骤3,集成深度图像与灰度图像所提取的特征点。
步骤3.1,利用训练好的2个Adaboost分类器分别对输入的人脸深度图像和灰度图像进行特征点检测。
输入2张同一时刻采集的深度图像和灰度图像,分别提取特征并利用Adaboost进行分类,然后利用K-近邻聚类算法进行聚类,聚类中心即为检测到的头姿估计兴趣点。
步骤3.2,对齐深度图像与灰度图像,确定左右眼睛、鼻尖、鼻鞍、左右耳垂等感兴趣点。
由于步骤3.1中检测出的兴趣点分别在2幅图像上面,因此特征点坐标不一致,无法进行直接用于头姿估计等问题,所以需要将2幅图像进行对齐处理,进而同一坐标系以方便特征点之间的关系计算。
至此,本发明的具体实施过程就描述完毕。