基于双目视觉的头部姿态估计*
2021-07-15石守东徐淼华陈锦涛
方 劲, 石守东, 徐淼华, 陈锦涛
(宁波大学 信息科学与工程学院,浙江 宁波 315211)
0 引 言
当前我国青少年近视患病率呈高发态势,职业性肌肉骨骼疾患患者日益增多。有证据表明,近距离用眼是近视的首要危险因素,而职业性肌肉骨骼疾患则与长期保持不良坐姿密切相关。人眼及坐姿的研究离不开头部姿态估计,该研究在人机交互、行为识别、医疗健康、游戏娱乐等领域具有较高应用价值。
根据数据来源的不同,可将头部姿态的研究方法分为基于二维图像[1~3]、三维(3D)图像[4]以及深度图像[5,6]的姿态估计。二维图像有基于特征和外观的方法,前者用统计模型包括主动外观模型(active appearance model,AAM)、多视图AAM及三维变形模型追踪面部进行头部跟踪,后者对头部姿态进行离散化并对子集分类。文献[1]用人脸多个特征点的相对位置变化来检测头部姿态。文献[2]提出一种三角形表面补丁描述符(TSP)估计头部方向和位置。文献[3]通过双支路多级卷积神经网络处理二维图像,第一分支估计人体的二维置信图,第二分支计算各部位的关联度(PAF),得到多个面部点,识别效果好。基于二维图像的方法成本低、易推广,但对光照敏感,易受纹理特征等因素影响。三维图像方法对设备性能的要求高,算法更复杂。文献[4]使用ASM和ASEF算法定位并建立人脸3D模型来检测头部姿态。文献[5]基于模糊肤色分类器和颜色特征的人脸追踪,通过高并行GPU计算、分类器权重预计算等方法提高设备在高分辨率视频图像中稳定追踪面部的能力,并在3D图像中由对面部位置估计实现对头部运动的追踪。基于深度图像的研究是在二维图像上增加了对特征深度信息的描述。Kinect利用多传感器快速定位人体的20个关键点并追踪,还能实时计算空间深度信息。文献[5]使用Kinect获取人体关节点,并基于隐马尔可夫模型(HMM)对人姿态进行识别。文献[6]用Kinect由低分辨率3D数据通过误差的预期分布模型与局部加权回归方法组合来移除异常值并构建高分辨率面部模型。
普通双目相机利用数学方法计算出感兴趣特征的深度信息来描述姿态。近些年基于双目视觉的姿态估计[7]涌现出一些成果,形成了畸变校正、深度信息计算、立体匹配、质量评价等方法在内的理论体系。本文提出了一种由人眼在二维、三维空间相对位置的变化估计头部姿态的方法。
1 双目立体视觉的原理
1.1 理想的双目视觉系统
双目视觉的工作原理类似人眼,用两个同向放置的相机采集同一位置的两幅图像,由视差根据三角测量原理计算出该位置的深度信息。
如图1所示,由两相机的投影中心Ol,Or引出的主光线与左右像平面分别交于主点pl,pr,投影中心距离|OlOr|=T称为基线,两相机焦距fl=fr=f,目标点P在左右像平面上的水平方向对应坐标值为xl,xr,视差用式(1)定义,根据相似三角形有
图1 理想状态下的双目视觉系统
d=xl-xr
(1)
可得到目标深度距离Z的值。要得到理想的双目系统,需对双目相机在数学上进行畸变矫正等操作。
1.2 内参数矩阵
图像平面是个二维投影空间,实际用于运算的像素点用三维向量q=(u,v,w)表示,由像平面的点=(x,y,z)通过以下方式转换
(2)
式中M为相机的内参数矩阵;cx,cy为光轴偏移量;F为透镜的物理焦距长度;sx,sy为x,y方向上传感器单元尺寸;fx,fy为x,y轴方向的焦距。
1.3 畸变矫正
成像系统的畸变中影响显著的有两种,一是光线在穿过“球状”透镜边缘发生弯曲,且程度与距离中心的长度成正比,称为径向畸变;另外,制造工艺的不足造成透镜与图像平面不平行,称为切向畸变。畸变的存在降低了相机的测距精度。针对透镜畸变
(3)
1.4 立体校正
(4)
再将相机坐标系中的点Qc(xc,yc,zc)转换到图像坐标系点Q(x,y),有
(5)
畸变参数、内参数矩阵、旋转矩阵及平移向量等未知量可用张正友标定法[8]获得。
2 人眼定位
文献[9]利用积分图存储Haar特征,再使用Adaboost算法从冗余特征中找到目标特征训练出分类器,通过Cascade级联算法将单个分类器组合成强分类器来检测人眼等特征。该方法识别快,但准确率受光照和角度的干扰而降低。对这些问题提出以下解决方法。
2.1 光照补偿
人眼定位前用参考白光照补偿方法对图像预处理:
步骤1 用加权平均法将RGB图fi(x,y)转换为灰度图g(x,y),如果灰度图像的最大值为255且最小值为0,则不进行光照补偿,否则步骤2,i为R,G,B分量
g(x,y)=0.3fR+0.59fG+0.11fB
(6)
步骤2 统计所有灰度值的像素数并排序,取前5%的像素灰度值为参考白refW,执行式(7)更新像素值
(7)
2.2 人脸区域检测
当头部发生较大偏转时,Adaboost算法的漏检率很高。在不能检测到人脸的情况下,使用椭圆肤色模型进行补检。考虑到肤色在YCbCr色彩空间良好的聚类效果,将RGB图像转换为YCbCr模式,见式(8)
(8)
在CrCb二维空间中皮肤像素点呈椭圆分布,在此椭圆内的像素点都被视为在皮肤区域内,否则为非皮肤点。模型描述为
(9)
(10)
cx=109.38,cy=152.02,θ=2.53°,ecx=1.6,ecy=2.41,a=25.39,b=14.03。对二值图像进行膨胀腐蚀和形态学处理,保留最大连通区域为人脸,如图2所示。
图2 人脸检测过程
2.3 人眼区域定位
Haar特征的基本原理是用“块”中的黑色区域像素灰度值之和减去白色区域像素灰度值之和来描述特征[10],传统的基于Haar特征的级联分类器对不同人脸和姿态的变化较为敏感。在使用分类器时,有较大概率出现嘴巴等中心和周围灰度差值大的区域被误判为眼睛的情况。误检主要来自人脸下半部分,可由“三庭五眼”的比例特征重新划分检测区域,使用Adaboost算法对肤色模型得到的人脸区域1/2的上部分进行检测,将获得的N个区域视为人眼待定区域存储至数组eyeRect[N];若该数组为空则继续扫描直至非空。
(11)
(12)
在对极约束后的图像中按如下步骤进行立体匹配:
步骤1 将左图像定位到的区域设为搜索窗口,并在右图像中搜索,根据人眼区域大小动态调整卷积核尺寸;
步骤2 由对极约束规则可推知左图像特征坐标eyeRect[i](xc,yc)在右图像中的匹配在该像素坐标系下同一极线上xc的左侧。以右图像中点(xc,yc)位置为起点,沿着x轴负方向间隔2像素滑动窗口,由式(13)计算每一匹配区域像素灰度值差的绝对值之和(SAD);
步骤3 直至区域所有像素遍历完成,保存每一区域步骤2中的SAD值,由式(14)的规则取最小值即d1对应的区域为同一人眼区域,以数组下一值指向的区域为新窗口,循环步骤2,步骤3,直到遍历至最后一个值
(13)
d1=min{C1(u,v,d),d∈[dmin,dmax]}
(14)
3 头部姿态估计
描述头部姿态的方向参数有三个:Ptich,Yaw,Roll。对于动作种类,文献[1] 和文献[11]分为6种,本文根据三个方向参数将头部姿态细化为6类15种。在相机坐标系中,左、右眼在Z方向上的距离变化为Δzl,Δzr;在图像坐标系下,左、右眼在X,Y方向上的位置变化分别为Δxl,Δxr,Δyl,Δyr。对于6类基本方向,头部姿态按如下判定标准分类:
前倾Pf:Δzl&Δzr<-20 mm∧Δyl&Δyr>20 pixel;
后仰Pb:Δzl&Δzr>20 mm∧Δyl&Δyr<-20 pixel;
左转Yl:Δzr<-20 mm∧Δxr<-20 pixel;
右转Yr:Δzl<-20 mm∧Δxl>20 pixel;
左偏Rl:|Δzl|&|Δzr|<20 mm∧Δxl-Δxr>40 pixel;
右偏Rr:|Δzl|&|Δzr|<20 mm∧Δxr-Δxl>40 pixel;
前倾、后仰可与左右偏转组合,进行更详细的姿态划分,如前倾的同时又有左偏,如此再有8种姿态,加上正面朝前的1种,共15种。左右转时,由于拍摄角度固定,若头部转动过大,外向偏转的区域陷入阴影,不利于该侧人眼检测。故左转时由右眼、右转时由左眼的位置变化来判断。头部姿态用集合HA表示
HA={null,Pf,Pb,Yl,Yr,Rl,Rr,PfYl,PfYr,PbYl,PbYr,PfRl,PfRr,PbRl,PbRr}
(15)
4 实验设计与分析
4.1 算法流程
系统基于嵌入式ARM板设计,主处理器为全志科技的V3S芯片,有两颗CMOS传感器,双目摄像机共用一个设备ID,同时被硬件调制为绝对同时、同步输出分辨率为640×240的拼接图。图3为实验的流程图。
图3 人眼深度信息计算流程
4.2 相机标定
将包含10×8长宽大小均为22 mm的黑白棋盘格标定板置于双目相机前,多角度采集相机视野中的各个区域图像,如图4。标定结果如表1所示。
表1 相机标定结果
图4 双目相机采集标定板图像
如图5,经过校正后将图像边缘变形区域裁剪,并且将左右图像进行约束化处理,图像特征的关联性一定程度上有所加强。
图5 相机校正并对极约束后的效果
4.3 人眼区域分割
从CASIA—FaceV5人脸集中选取200张,自采集100张,共300张人脸图像组成样本。表2为本文方法和文献[12],Adaboost方法对人眼检测的效果对比。
表2 人眼检测算法效果对比
由于传统分类器的固有缺陷,本文方法虽然耗时更多,但在满足实时检测要求下保持了较高的人眼检测正确率,误检率也更低;文献[12]在人眼粗定位后,将积分和差分投影结合的方法排除眉毛干扰实现人眼定位,该方法只在光照良好、人脸正对相机时有较好识别,抗干扰能力差。与另外两种方法相比,本文方法能够有效减少光照和拍摄角度的影响。
4.4 人眼测距
获得立体匹配关系后,以式(1)、式(2)计算深度信息。固定相机并移动眼睛位置,以左眼测得的距离值为例,并和实际测量值做比较分析,结果如表3所示。
表3 人左眼实验数据和实际数据比较
受目前的硬件和算法限制,相机标定并不能完全消除畸变。在1 m范围内,本文平均误差为0.85 %,文献[13]为5 %,文献[14]为0.13 %,在5 m范围内,本文平均误差为1.6 %,文献[13]为3.19 %,文献[14]为2.65 %。本文方法测距的误差是可接受的、效果良好。
4.5 头部姿态估计验证
对20个志愿者各采集15种不同姿态的图像,样本考虑了年龄分布和性别差异,40岁以上占比30 %,20~30岁占比50 %,女性占比50 %。使用上文方法进行头部姿态估计的结果如图6。实验结果良好,识别正确率在90 %以上。可以看出,头部正面朝前的检测效果良好;而左右转时稍差。传统级联分类器的人眼识别效果受限于纹理特征,当头朝向偏离相机,即使多次检测也会有漏检的情况。另外,头部运动的偏转角度过大也会降低检测的正确率。
图6 头部姿态估计准确率
5 结束语
本文设计的方法具有硬件成本低、体积小等优点,利用相机标定方法降低了鱼眼镜头畸变的影响;提出基于人脸区域定位人眼的方法降低了传统人眼分类器的误识别率;利用对极约束快速定位到人眼位置并由视差计算出人眼的距离。实验证明,本文方法准确有效。