一种基于头势识别技术的轮椅控制方法
技术领域
本发明涉及一种基于头势识别技术的轮椅控制方法,属于人工智能技术领域。
背景技术
为了提高残疾人的生活自理能力、推动社会文明的发展,在过去20几年中,电动轮椅技术进展迅速。但是,在这些电动轮椅中,使用者还是主要靠操纵杆或按钮来手动控制轮椅的运动,而对于一些严重残疾人士如四肢瘫痪者,这样的轮椅并不能满足要求。
近年来,随着计算机性价比不断提高,以及图像处理、模式识别、人工智能等相关领域的飞速发展,使得研制一种让使用者通过头势(即头部姿势)控制轮椅运动的智能系统成为可能。这里的智能,是指轮椅控制系统能够根据使用者的头部图像,经一系列分析计算得到使用者的头势,并通过头势去控制轮椅的运动,而不是通过操纵杆或者按钮进行手动控制。
头势检测与识别技术本身属于一种比较新的生物特征识别技术,2000年左右才开始有相关的英文文献发表。早期的研究一般是基于统计人脸识别技术,这种技术容易受到光线的干扰,在用于区分左侧脸和右侧脸时的效果较好,而用于区分上侧脸和下侧脸时效果较差。这样单纯根据人脸来判断头势会带来错误,若将这种技术用于控制轮椅时将会造成严重后果。
发明内容
本发明的目的是为了解决便于残疾人操纵轮椅的问题,提供一种新的轮椅控制技术,通过在人脸检测的基础上加入对鼻子位置的判断,并综合利用人脸姿势和鼻子位置判断头部姿势,然后根据头部姿势对轮椅进行控制。
本发明所采用的技术方案如下:
一种基于头势识别技术的轮椅控制方法,
第一步,在轮椅车体上安装图像采集设备、计算及控制单元、支架及电机。其中,所属图像采集设备通过支架一端固定在正对人脸的位置;支架另一端同车体连接;计算及控制单元分别同图像采集设备、电机相连接;电机安装在轮椅上,并同轮椅的行走机构相连接,用于根据控制单元产生的控制信号,驱动轮椅的运动;
第二步,当使用轮椅时,图像采集设备实时的采集轮椅使用者的头部图像并传输至计算及控制单元中。计算单元通过对图像进行处理、分析和计算,得到人脸和鼻子的位置信息,并据此判断使用者的头部姿势。具体过程如下:
对所获图像进行正面人脸检测,判断图像中是否为正面脸。如果是,则进一步检测鼻子的位置,并根据鼻子位置对正面人脸进行细分,确定是抬头、低头、平视、半左侧、半右侧五种头部姿势中的哪一种。如果不是正面脸,则对图像进行左侧人脸检测,确定是左侧、右侧、无头势三种情况中的哪一种。
为实现上述检测判断过程,要采用正面人脸分类器、左侧人脸分类器和鼻子分类器。这三个分类器分别用来检测正面人脸、左侧人脸和鼻子区域的位置。对三个分类器的训练方法,均采用Adaboost算法(具体可参见Paul Viola,MichaelJones.Robust real-time object detection.International Journal of Computer Vision,2004,57(2),pp.137-154)。训练过程中,正面人脸分类器和左侧人脸分类器的输入为整幅图像,输出则为脸部区域的位置信息,包括脸部区域左上角的坐标及该区域的长和宽;鼻子分类器的输入为仅包含正面人脸部分的图像,输出则为鼻子区域的位置信息,包括鼻子区域左上角的坐标及该区域的长和宽,其中区域左上角的坐标及该区域的长和宽统一表示在一个列表中。
关于人脸区域和鼻子区域位置的检测详细过程如下:
(1)把整幅图像输入至正面人脸分类器,如果正面人脸分类器的输出不为空,则说明图像中含有正面人脸区域,进行(2)操作。
如果正面人脸分类器的输出为空,则把该图像输入至左侧人脸分离器,检测图像中是否含有左侧人脸。如果左侧人脸分类器的输出不为空,则说明图像中含有左侧人脸,对应左侧头势。如果左侧人脸分类器的输出为空,则把该图像进行左右翻转,再次输入至左侧人脸分类器,若此时输出不为空则说明图像中含有右侧人脸,对应右侧头势;否则图像中不含人脸。
(2)当(1)检测到含有正面人脸,则截取正面人脸区域图像,把仅包含正面人脸区域的图像输入至鼻子分类器,鼻子分类器的输出是鼻子区域的位置信息列表,包括:鼻子区域左上角相对于正面人脸区域左上角的横坐标px和纵坐标py,以及鼻子区域的长度lenx和宽度leny(鼻子区域相对于正面人脸的位置,如图2所示),由此能够算出鼻子区域中心位置相对于正面人脸区域左上角的坐标为(px+lenx/2,py+leny/2)。令正面人脸区域的大小为长Fx、宽Fy,可得到鼻子相对于正面人脸区域的横向相对位置为POSX=(px+lenx/2)/Fx,纵向相对位置为POSY=(py+leny/2)/Fy。根据POSX和POSY的数值,可将正面人脸细分为抬头、低头、平视、半左侧、半右侧五种头部姿势。
由于受干扰影响,在正面人脸区域中可能会检测出多个鼻子区域,为解决这一问题,本发明提供一种确定最佳鼻子区域的方法。通过对人脸生物学特征的统计分析得出:鼻子的纵向相对位置POSY通常在0.6附近;另外鼻子区域的相对宽度LEN=lenx/Fx位于1/3到1/6之间。可采用打分制,根据鼻子的纵向相对位置和鼻子区域的相对宽度来确定最佳鼻子区域,具体如下:
(a)令每个候选鼻子的分值Score=100;
(b)计算各候选鼻子的纵向相对位置POSY=(py+leny/2)/Fy,以及相对宽度LEN=lenx/Fx;
(c)根据各候选鼻子的纵向相对位置数值修改分值,即,Score1=Score*(1-|0.6-POSY|/0.6)
(d)根据各候选鼻子的相对宽度数值再次修改分值,即
LEN<1/6时,Score2=Score1*[1-6*(1/6-LEN]
LEN∈[1/6,1/3]时,Score2=Score1,
LEN>1/3时,Score2=Score1*[1-1.5*(LEN-1/3)]
(e)比较各候选鼻子的Score2值,该值最大者定为最佳鼻子区域。
对于确定好的最佳鼻子区域,再根据其在人脸区域内的中心坐标以及其POSX和POSY数值,进一步将正面人脸细分为抬头、低头、平视、半左侧、半右侧五种头部姿势,具体判断方法为:
1)根据鼻子中心横坐标(px+lenx/2)的值是否等于Fx的一半,确定鼻子区域的中心是否位于人脸区域的垂直中线上(如图2所示)。
2)如果鼻子区域的中心位于人脸区域的垂直中线上,则根据鼻子相对人脸部的纵向相对位置POSY判断抬头、低头、平视三种头势,此时判断头势的方法是:如果POSY小于设定的阈值a1,0≤a1≤1,则为抬头头势,因为人在抬头时,图像中鼻子的位置偏上;如果POSY大于设定的阈值a2,0≤a2≤1,则为低头头势,因为人在低头时,图像中鼻子的位置偏下;如果a1≤POSY≤a2,则为平视头势;其中,a1小于a2。
3)如果鼻子区域的中心不在人脸区域的垂直中线上,则根据鼻子相对人脸部的横向相对位置POSX判断半左侧、半右侧两种头势,此时判断头势的方法是:如果POSX小于设定的阈值b,0≤b≤1,则为半左侧,否则为半右侧。
第三步,根据所获取的头部姿势,由计算及控制单元产生对应的控制命令。具体如下:
仰头、低头和平视三种头部姿势分别对应前进、后退和停止三种控制命令;半左侧、左侧、半右侧、右侧这四种头部姿势分别对应微左转、左转和微右转、右转四种控制命令;如果未检测出任何头势,则轮椅停止运动。
第四步,电机根据得到的控制命令,驱动轮椅运动。
优选的,本系统所使用的轮椅后背高度最好高于图像采集设备的采集区域。这样使用者在休息时可以把头靠在后背上,保持比较舒服的姿势。同时,图像采集的图像受背景变化的影响也相对较小,从而可以提高头势识别的精度。
有益效果
本发明提供的基于头势识别的轮椅控制技术,理念和技术新颖,附加成本低。通过以非接触式图像感知和检测方法为基础,综合考虑了图像中的人脸姿势和鼻子位置的分布情况,使得头势判断更加准确,更有利于对轮椅的控制,具有人机交互友好、便于高度残疾人士使用的优点。
附图说明
图1为本发明的工作流程图;
图2是鼻子区域相对于正面人脸的位置示意图。
具体实施方式
下面结合附图和实施例对本发明的具体实施方式做进一步详细说明。
一种基于头势识别技术的轮椅控制方法。
第一步,在已有轮椅的基础上,添加如下硬件:图像采集设备(本实施例中用普通的CCD摄像头),计算及控制单元(本实施例中用微型笔记本电脑)、支架以及电机。所述图像采集设备通过支架一端固定在正对人脸的位置;支架另一端同车体连接。图像采集设备用于拍摄使用者的头部图像;计算及控制单元用于保存图像、检测使用者脸部和鼻子的位置信息,从而得到使用者的头部姿势,并产生控制命令;电机根据控制命令驱动轮椅做相应的运动,如前进、后退、左转、右转、停止等。
工作流程如图1所示:
第二步,由CCD摄像头每隔50ms采集一幅轮椅使用者的头部图像并传输给微型笔记本电脑。在微型笔记本电脑内部,对当前接收到的一幅图像进行分析计算,具体如下:
首先,利用正面人脸分类器检测图像中是否含有正面人脸。其中,正面人脸分类器采用Adaboost算法训练,其输入为一幅图像,输出为一列表。如果图像中含有正面人脸,则列表中保存正面人脸的左上角位置和正面人脸区域信息,否则列表中信息为空。
如果正面人脸分类器的输出列表为空,就把原图像输入至左侧人脸分离器,左侧人脸分类器也采用Adaboost算法训练。如果左侧人脸分类器的输出不为空,则说明图像中含有左侧人脸,对应的是左侧头势。如果左侧人脸分类器的输出为空,则把原图像进行左右翻转,再次输入至左侧人脸分类器,若此时输出不为空,则说明图像中含有右侧人脸,对应的是右侧头势;否则图像中不含人脸,即轮椅没有使用者。
如果正面人脸分类器的输出不为空,则截取正面人脸区域图像,把仅包含正面人脸区域的图像输入至鼻子分类器,鼻子分类器也采用Adaboost算法训练。鼻子分类器的输出是鼻子区域的位置信息列表,包括:鼻子区域左上角相对于正面人脸区域左上角的横坐标px和纵坐标py,以及鼻子区域的长度lenx和宽度leny。鼻子区域相对于正面人脸的位置示意图如图2所示。
受干扰影响,在正面人脸区域中可能会检测出多个鼻子区域,为解决这一问题,利用如下统计分析方法:鼻子的纵向相对位置POSY通常在0.6附近;鼻子区域的相对宽度LEN=lenx/Fx通常位于1/3到1/6之间。通过采用打分制来确定最佳鼻子区域,具体方案如下:
(a)令每个候选鼻子的分值为Score=100;
(b)计算各候选鼻子的纵向相对位置POSY=(py+leny/2)/Fy,以及相对宽度LEN=lenx/Fx;
(c)根据各候选鼻子的纵向相对位置数值修改分值,即
Score1=Score*(1-|0.6-POSY|/0.6)
(d)根据各候选鼻子的相对宽度数值再次修改分值,即
LEN<1/6时,Score2=Score1*[1-6*(1/6-LEN]
LEN∈[1/6,1/3]时,Score2=Score1,
LEN>1/3时,Score2=Score1*[1-1.5*(LEN-1/3)]
(e)比较各候选鼻子的Score2值,该值最大者定为最佳鼻子区域。
令正面人脸区域的大小为长Fx、宽Fy,对于确定好的最佳鼻子区域,计算:
鼻子区域的相对宽度:LEN=lenx/Fx;
鼻子区域中心位置相对于正面人脸区域左上角的坐标:(px+lenx/2,py+leny/2);
鼻子相对于正面人脸区域的横向相对位置:POSX=(px+lenx/2)/Fx;
鼻子相对于正面人脸区域的纵向相对位置:POSY=(py+leny/2)/Fy;
对于确定好的最佳鼻子区域,再根据其在人脸区域内的中心坐标以及其POSX和POSY数值,进一步将正面人脸细分为抬头、低头、平视、半左侧、半右侧五种头部姿势,具体判断方法为:
1)根据鼻子中心横坐标(px+lenx/2)的值是否等于Fx的一半,确定鼻子区域的中心是否位于人脸区域的垂直中线上,如图2所示。
2)如果鼻子区域的中心位于人脸区域的垂直中线上,则根据鼻子相对人脸部的纵向相对位置POSY判断抬头、低头、平视三种头势,此时判断头势的方法是:如果POSY<0.55,则为抬头头势,因为人在抬头时,图像中鼻子的位置偏上;如果POSY>0.65,则为低头头势,因为人在低头时,图像中鼻子的位置偏下;如果0.55≤POSY≤0.65,则为平视头势。
3)如果鼻子区域的中心不在人脸区域的垂直中线上,则根据鼻子相对人脸部的横向相对位置POSX判断半左侧、半右侧两种头势,此时判断头势的方法是:如果POSX<0.5则为半左侧,否则为半右侧。
第三步,根据所获取的头部姿势,由计算及控制单元产生控制命令。其中仰头、低头和平视三种头部姿势分别对应前进、后退和停止三种控制命令,而半左侧、左侧、半右侧、右侧这四种头部姿势则对应微左转、左转和微右转、右转四种控制命令,如果未检测出任何头势,则发出停止轮椅命令。
第四步,电机根据控制命令,驱动轮椅运动。
所使用的轮椅后背高度应高于图像采集设备的采集区域。这样使用者在休息时可以把头靠在后背上,保持比较舒服的姿势。同时,图像采集的图像受背景变化的影响也相对较小,从而可以提高头势识别的精度。