发明内容
鉴于上述问题,本发明提供一种克服上述问题或者至少部分解决上述问题的虚拟鼠标操作装置、系统及方法。
本发明提供一种虚拟鼠标操作装置,包括显示控制单元与显示单元,该装置包括:
视图识别单元,用于对摄像头采集的用户手部的图像数据进行手部识别,以确定手部中心点在图像中的位置。
水平面二维坐标建立单元,用于根据该视图识别单元识别出的手部中心点位置在图像中的位置与摄像头的像素解析度,将手部中心点像素位置转换为XZ坐标面的二维坐标值。
垂直面二维坐标建立单元,用于根据该视图识别单元识别出的手部中心点位置在图像中的位置与摄像头的像素解析度,将手部中心点像素位置转换为YZ坐标面的二维坐标值。
三维坐标计算单元,用于根据该水平面二维坐标建立单元和垂直面二维坐标建立单元分别确定的手部中心点像素位置在XZ坐标面和YZ坐标面的二维坐标值计算手部中心点在XYZ三维坐标系中的坐标值。
动作判断单元,用于根据该三维坐标计算单元计算的手部中心点的三维坐标值判断用户手部中心点对应的鼠标位置以及判断用户的虚拟鼠标点击操作。以及
图形绘制单元,用于根据该动作判断单元的判断结果绘制出模拟鼠标出现在对应的XZ面的位置以及做出特定响应形成的操作图像,并调用该显示控制单元控制该显示单元显示该操作图像。
本发明还提供一种虚拟鼠标操作系统,包括如上任意一项所述的虚拟鼠标操作装置以及与该装置通信连接的两个摄像设备。
本发明还提供一种虚拟鼠标操作方法,该方法包括:
用户将手部悬空平放于图像捕捉区域中,对摄像头采集的用户手部的图像数据进行手部识别,以确定手部中心点在图像中的位置。
根据识别出的手部中心点位置在图像中的位置与摄像头的像素解析度,将手部中心点像素位置分别转换为XZ坐标面与YZ坐标面的二维坐标值。
根据手部中心点像素位置在XZ坐标面和YZ坐标面的二维坐标值计算手部中心点在XYZ三维坐标系中的坐标值。
根据该计算的手部中心点的三维坐标值判断用户手部中心点对应的鼠标位置以及判断用户的虚拟鼠标点击操作。
根据该判断结果绘制出模拟鼠标出现在对应的XZ面的位置以及做出特定响应形成的操作图像。以及
显示该绘制的操作图像供用户观看。
本发明提供的一种虚拟鼠标操作装置、系统及方法,由摄像头抓取图像并识别手部中心点的位置以及手部姿势,由得到的手部中心点坐标直接映射为对虚拟鼠标的操作动作,并在显示器上显示出来反馈给用户,通过智能眼镜和智能手环,或者智能便携移动设备上的摄像设备快速搭建虚拟鼠标输入环境,不再需要实体设备,方便用户随时随地通过虚拟鼠标进行人机交互操作。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
请参阅图1,为本发明实施方式中的虚拟鼠标操作系统的硬件架构示意图,该系统100包括虚拟鼠标操作装置10、两个摄像设备20以及显示设备21,用于对用户手势的检测实现触控输入。
请同时参阅图2,为本发明实施方式中的虚拟鼠标操作装置的功能模块示意图。该装置10包括环境亮度传感单元101、视图识别单元102、水平面二维坐标建立单元105、垂直面二维坐标建立单元106、三维坐标计算单元107、动作判断单元108、图形绘制单元109、显示控制单元110、显示单元111以及鼠标重映射单元112。该装置10可以应用诸如照相机、手机、平板电脑等电子设备中,该摄像设备20通过网络与该装置10进行通信连接,该网络的传输介质可以是蓝牙、zigbee、WIFI等无线传输介质。
每个摄像设备20均包括第一摄像头201以及第二摄像头202,分别作为纵向摄像设备和横向摄像设备。其中,作为纵向摄像设备的第一摄像头201可以为智能眼镜等可以处于用户手部上方的移动便携式电子设备,作为横向摄像设备的第二摄像头202可以为智能手环等可以放置于用户前方的移动便携式电子设备。进一步地,每个摄像设备20的第一摄像头201和第二摄像头202分别为普通摄像头和红外摄像头。其中,普通摄像头可以在光线条件较好的情况下,对用户操作动作进行图像采集并送往装置10分析。红外摄像头可以在光线条件较差的情况下,对用户操作动作进行图像采集并送往装置10分析。该视图识别单元102包括纵向视图识别子单元103以及横向视图识别子单元104,分别对应作为纵向摄像设备和横向摄像设备的第一摄像头201以及第二摄像头202设置,用于对其采集的图像进行识别处理。
在初始状态时,两对摄像头(一对普通摄像头和一对红外摄像头)配合使用,摄像方向设置为互相垂直,可以同时捕捉手部垂直方向和水平方向的动作行为。通常,智能眼镜中两个摄像头(一个普通摄像头和一个红外摄像头)朝下摆放,智能手环或者智能手机上的两个摄像头(一个普通摄像头和一个红外摄像头)水平摆放。并且,由两对摄像头的可拍摄的矩形区域共同形成图像捕捉区域。
该环境亮度传感单元101感应环境的亮度值,并把环境亮度值传送到该视图识别单元102中。该视图识别单元102根据预先设置的亮度门限值判断使用普通摄像头还是红外摄像头。例如,亮度感应范围为1~100,门限值为50,则环境亮度值超过50时确定使用普通摄像头,当环境亮度值低于50时使用红外摄像头图像。
根据环境亮度值确定使用的摄像头类型后,开始初始定位操作,具体如下。该装置10在进行初始定位操作时,用户将双手中需要操作的单手悬空平放于两组选定的摄像头可以拍摄到的位置,即,图像捕捉区域,并保持一定时间的静止,以完成用户手部位置初始化流程,便于装置10识别和定位出手部中心点的初始位置,以便后续的操作。该装置10识别和定位手部中心点位置的原理将在下文进行详细描述。
在进行交互式操作时,用户将单手悬空平放于图像捕捉区域中,该纵向视图识别子单元103根据该环境亮度传感单元101侦测到的环境亮度值判断使用普通摄像头还是红外摄像头,并当确定使用的摄像头后对处于单手上方作为纵向摄像设备的普通摄像头或者红外摄像头采集的图像数据进行手部识别,以确定手部中心点在图像中的位置。该横向视图识别子单元104根据该环境亮度传感单元101侦测到的环境亮度值判断使用普通摄像头还是红外摄像头,并当确定使用的摄像头后对处于单手前方作为横向摄像设备的普通摄像头或者红外摄像头采集的图像数据进行手部识别,以确定手部中心点在图像中的位置。
其中,该纵向视图识别子单元103确定的手部中心点在图像中的位置为在XZ坐标面的手部中心点像素在图像中的位置,例如,该纵向识别子单元103识别出手部中心点像素位于XZ面图像的a行b列。该横向视图识别子单元104确定的手部中心点在图像中的位置为在YZ坐标面的手部中心点像素在图像中的位置。
进一步地,通过普通摄像头判断手部中心点的方法包括单色背景法和颜色手套法。其中,单色背景法具体为:双手操作的环境背景需要颜色相对简单和单一,这样可以直接通过人体肤色的颜色区间范围直接把手部影像提取出来,然后根据提取出的手部图像区域中最高点与最低点的平均值得到中心点的行数,通过最左点与最右点的平均值得到中心点的列数。颜色手套辅助法具体为:用户佩戴专用的纯红色手套,由于普通摄像头都是RGB(红绿蓝三基色)采样,可以直接提取出纯红色区域位置,也可以使用绿色或者蓝色作为手套手部中心点颜色,根据提取出的手部图像区域中最高点与最低点的平均值得到中心点的行数,通过最左点与最右点的平均值得到中心点的列数。
通过红外摄像头判断单手中心点的方法包括温度滤除法和颜色手套辅助法。其中,温度滤除法具体地为:双手操作可以直接通过人体表面温度相对环境温度较高的特点直接把温度较高的手部影像提取出来,然后根据提取出的手部图像区域中最高点与最低点的平均值得到中心点的行数,通过最左点与最右点的平均值得到中心点的列数。颜色手套辅助法具体为:用户佩戴专用手套,手套的表面有加热效果,这样可以直接提取出图像中的热点区域,然后根据提取出的手部图像区域中最高点与最低点的平均值得到中心点的行数,通过最左点与最右点的平均值得到中心点的列数。
该水平面二维坐标建立单元105根据该纵向视图识别子单元103识别出的手部中心点位置在图像中的位置与摄像头的像素解析度,将手部中心点像素位置转换为XZ坐标面的二维坐标值。该垂直面二维坐标建立单元106根据该横向视图识别子单元104识别出的手部中心点位置在图像中的位置与摄像头的像素解析度,将手部中心点像素位置转换为YZ坐标面的二维坐标值。
请参阅图3,其中,将手部中心点像素位置转换为XZ坐标面的二维坐标值的转换原理具体地为:将图像左下角像素点设置为二维坐标系的起始点0,根据图像解析度和转换为二维坐标后的坐标值范围计算出坐标值范围相对每个图像的行数和列数的比例。例如,XZ坐标面图像解析度宽高为2000*1000,二维XZ平面坐标系的坐标值范围为X轴为1到150、Z轴为1到100,则Z轴坐标值范围相对图像的行数比例为100/1000,X轴坐标值范围相对图像的列数比例150/2000。将手部中心点的像素位置乘以计算得到的坐标范围相对图像行、列数的比例,从而得到转换为二维坐标后的端点二维坐标值。例如,某个手部中心点的像素位置为300行200列,则该手部中心点的Z轴坐标为300*100/1000=30,该手部中心点的X轴坐标为200*150/2000=15。将手部中心点像素位置转换为YZ坐标面的二维坐标值的转换原理同上,在此不加赘述。
该三维坐标计算单元107根据该水平面二维坐标建立单元105和垂直面二维坐标建立单元106分别确定的手部中心点像素位置在XZ坐标面和YZ坐标面的二维坐标值计算手部中心点在XYZ三维坐标系中的坐标值。
其中,计算手部中心点在XYZ三维坐标系中的坐标值的工作原理具体为:由于XZ坐标面和YZ坐标面有共同的Z轴,所以将XZ坐标面中每个坐标端点的Z值与YZ坐标面中每个坐标端点的Z值都提取出来进行比较,Z轴坐标值一致或者最接近的坐标端点会被认为是同一个端点,然后将被判断为同一端点的XZ坐标面的坐标值与YZ坐标面的坐标值合并为一个坐标端点,以作为XYZ三维坐标系的坐标值。因为Z值有可能不一样,所以新产生的三维坐标的Z值为XZ坐标面的坐标Z值加上YZ坐标面的坐标Z值然后除以2的运算结果,三维坐标系中的X、Y坐标值分别等于XZ坐标面和YZ坐标面的X坐标值与Y坐标值。
该鼠标重映射单元112根据手部中心点在XZ平面的坐标与鼠标灵敏度配置信息,重新把鼠标的XZ坐标进行映射,以实现鼠标灵敏度的调整。
其中,该鼠标重映射单元112进行鼠标灵敏度的调整,具体为:预先设置一重映射系数,并在装置10开始工作前被写入。当装置10开始工作后,该鼠标重映射单元112将手部中心点的XZ面的X轴坐标值和Z轴坐标值乘以该重映射系数以得到重映射之后的坐标值。例如,手部中心点的XZ面坐标为x=30,z=50,当希望灵敏度加强时,则设置重映射系数大于1,例如设置重映射系数为1.5,因此重映射后的坐标为x=30*1.5=45,z=50*1.5=75。当希望灵敏度减小时,则设置重映射系数小于1,例如设置重映射系数为0.5,因此重映射后的坐标为x=30*0.5=15,z=50*0.5=25。如果不希望做灵敏度调整,则设置重映射系数为1。
该动作判断单元108根据该三维坐标计算单元107计算的手部中心点的三维坐标值判断用户手部中心点对应的鼠标位置以及是否进行了鼠标点击操作。
在本实施方式中,在手部位置初始化阶段时,该动作判断单元108根据手部中心点的三维坐标值中垂直方向的最低端点(也就是Y轴的最小坐标值)作为点击判定平面Y轴值,把手部中心点的三维坐标值映射到鼠标可控制区域上,然后根据手部中心点的位置以及是否出现点击动作确定用户的操作信息。
由于是手部位置初始化阶段,该动作判断单元108利用Y值设定点击判定面的初始值,所以手部坐标的Y值都大于或等于点击判定面的判定值。并且,当用户移动手部进行正常工作模式下的操作时,每次该动作判断单元108接收到手部中心点的三维坐标后,不再重新设置该点击判定平面Y轴值,而是直接根据该点击判定平面Y轴值来判断是否虚拟触控屏出现有效点击动作。
其中,将手部中心点的三维坐标值映射到鼠标可控制区域上,具体为:设置鼠标可控制区域为XZ平面上的坐标值范围,经过重映射的手部中心点在XZ面的坐标可以直接映射为该鼠标可控制区域中的鼠标位置坐标。
根据手部中心点的三维坐标值判断点击动作,具体为:当选定了点击判定平面Y轴值后,只要手部中心点三维坐标中的Y值低于该点击判定平面Y轴值,则判定该端点穿越的了该点击判定平面,即该单手出现点击行为,然后结合手部中心点在哪个区域判断用户最终是对哪个位置进行了点击操作。
该图形绘制单元109根据该动作判断单元108的判断结果,即,手部中心点在哪个区域上的哪个位置进行了点击操作,绘制出模拟鼠标图标出现在对应XZ面的位置,然后根据出现点击行为的位置区域做出特定响应,例如高亮,或者进入某一选中的应用程序。
该显示控制单元110把由该图形绘制单元109绘制的图像转换为显示设备21可以显示的时序,调用该显示单元111将操作虚拟鼠标的图像显示到显示设备21上供用户观看,用户根据反馈可以得知当前的手部中心点对应的虚拟鼠标在控制区域中的位置。
请参阅图4,为本发明实施方式中的虚拟鼠标操作方法的流程示意图,该方法包括:
步骤S30,该环境亮度传感单元101感应环境的亮度值,该视图识别单元102根据预先设置的亮度门限值以及该环境亮度传感单元101感应到的环境亮度值判断使用普通摄像头还是红外摄像头。
在初始状态时,两对摄像头(一对普通摄像头和一对红外摄像头)配合使用,摄像方向设置为互相垂直,可以同时捕捉手部垂直方向和水平方向的动作行为。通常,智能眼镜中两个摄像头(一个普通摄像头和一个红外摄像头)朝下摆放,智能手环或者智能手机上的两个摄像头(一个普通摄像头和一个红外摄像头)水平摆放。并且,由两对摄像头的可拍摄的矩形区域共同形成图像捕捉区域。
步骤S31,用户将双手中需要操作的单手悬空平放于图像捕捉区域中并保持一定时间的静止,由装置10识别和定位出单手的初始位置,完成用户单手位置初始化。
该装置10识别和定位单手位置的原理将在下文进行详细描述。
步骤S32,用户将双手中需要操作的单手悬空平放于图像捕捉区域中,该纵向视图识别子单元103根据处于单手上方作为纵向摄像设备的普通摄像头或者是红外摄像头采集的图像数据进行手部识别,以确定手部中心点在图像中的位置。该横向视图识别子单元104根据处于单手前方作为横向摄像设备中的普通摄像头或者红外摄像头采集的图像数据进行手部识别,以确定手部中心点在图像中的位置。
具体地,该纵向视图识别子单元103确定的手部中心点在图像中的位置为在XZ坐标面的手部中心点像素在图像中的位置,例如,该纵向识别子单元103识别出手部中心点像素位于XZ面图像的a行b列。该横向视图识别子单元104确定的手部中心点在图像中的位置为在YZ坐标面的手部中心点像素在图像中的位置。
进一步地,通过普通摄像头判断手部中心点的方法包括单色背景法和颜色手套法。其中,单色背景法具体为:双手操作的环境背景需要颜色相对简单和单一,这样可以直接通过人体肤色的颜色区间范围直接把手部影像提取出来,然后根据提取出的手部图像区域中最高点与最低点的平均值得到中心点的行数,通过最左点与最右点的平均值得到中心点的列数。颜色手套辅助法具体为:用户佩戴专用的纯红色手套,由于普通摄像头都是RGB(红绿蓝三基色)采样,可以直接提取出纯红色区域位置,也可以使用绿色或者蓝色作为手套手部中心点颜色,根据提取出的手部图像区域中最高点与最低点的平均值得到中心点的行数,通过最左点与最右点的平均值得到中心点的列数。
通过红外摄像头判断单手中心点的方法包括温度滤除法和颜色手套辅助法。其中,温度滤除法具体地为:双手操作可以直接通过人体表面温度相对环境温度较高的特点直接把温度较高的手部影像提取出来,然后根据提取出的手部图像区域中最高点与最低点的平均值得到中心点的行数,通过最左点与最右点的平均值得到中心点的列数。颜色手套辅助法具体为:用户佩戴专用手套,手套的表面有加热效果,这样可以直接提取出图像中的热点区域,然后根据提取出的手部图像区域中最高点与最低点的平均值得到中心点的行数,通过最左点与最右点的平均值得到中心点的列数。
步骤S33,该水平面二维坐标建立单元105根据该纵向视图识别子单元103识别出的手部中心点位置在图像中的位置与摄像头的像素解析度,将手部中心点像素位置转换为XZ坐标面的二维坐标值。该垂直面二维坐标建立单元106根据该横向视图识别子单元104识别出的手部中心点位置在图像中的位置与摄像头的像素解析度,将手部中心点像素位置转换为YZ坐标面的二维坐标值。
请参阅图4,将手部中心点像素位置转换为XZ坐标面的二维坐标值的转换原理具体地为:将图像左下角像素点设置为二维坐标系的起始点0,根据图像解析度和转换为二维坐标后的坐标值范围计算出坐标值范围相对每个图像的行数和列数的比例。例如,XZ坐标面图像解析度宽高为2000*1000,二维XZ平面坐标系的坐标值范围为X轴为1到150、Z轴为1到100,则Z轴坐标值范围相对图像的行数比例为100/1000,X轴坐标值范围相对图像的列数比例150/2000。将手部中心点的像素位置乘以计算得到的坐标范围相对图像行、列数的比例,从而得到转换为二维坐标后的端点二维坐标值。例如,某个手部中心点的像素位置为300行200列,则该手部中心点的Z轴坐标为300*100/1000=30,该手部中心点的X轴坐标为200*150/2000=15。将手部中心点像素位置转换为YZ坐标面的二维坐标值的转换原理同上,在此不加赘述。
步骤S34,该三维坐标计算单元107根据该水平面二维坐标建立单元105和垂直面二维坐标建立单元106分别确定的手部中心点像素位置在XZ坐标面和YZ坐标面的二维坐标值计算手部中心点在XYZ三维坐标系中的坐标值。
其中,计算手部中心点在XYZ三维坐标系中的坐标值的方法具体为:由于XZ坐标面和YZ坐标面有共同的Z轴,所以将XZ坐标面中每个坐标端点的Z值与YZ坐标面中每个坐标端点的Z值都提取出来进行比较,Z轴坐标值一致或者最接近的坐标端点会被认为是同一个端点,然后将被判断为同一端点的XZ坐标面的坐标值与YZ坐标面的坐标值合并为一个坐标端点,以作为XYZ三维坐标系的坐标值。因为Z值有可能不一样,所以新产生的三维坐标的Z值为XZ坐标面的坐标Z值加上YZ坐标面的坐标Z值然后除以2的运算结果,三维坐标系中的X、Y坐标值分别等于XZ坐标面和YZ坐标面的X坐标值与Y坐标值。
步骤S35,该鼠标重映射单元112根据手部中心点在XZ平面的坐标与鼠标灵敏度配置信息,重新把鼠标的XZ坐标进行映射,以实现鼠标灵敏度的调整。
其中,该鼠标重映射单元112进行鼠标灵敏度的调整,具体为:预先设置一重映射系数,并在装置10开始工作前被写入。当装置10开始工作后,该鼠标重映射单元112将手部中心点的XZ面的X轴坐标值和Z轴坐标值乘以该重映射系数以得到重映射之后的坐标值。例如,手部中心点的XZ面坐标为x=30,z=50,当希望灵敏度加强时,则设置重映射系数大于1,例如设置重映射系数为1.5,因此重映射后的坐标为x=30*1.5=45,z=50*1.5=75。当希望灵敏度减小时,则设置重映射系数小于1,例如设置重映射系数为0.5,因此重映射后的坐标为x=30*0.5=15,z=50*0.5=25。如果不希望做灵敏度调整,则设置重映射系数为1。
步骤S36,该动作判断单元108根据该三维坐标计算单元107计算的手部中心点的三维坐标值判断用户手部中心点对应的鼠标位置以及是否进行了鼠标点击操作。
在本实施方式中,在手部位置初始化阶段时,该动作判断单元108根据手部中心点的三维坐标值中垂直方向的最低端点(也就是Y轴的最小坐标值)作为点击判定平面Y轴值,把手部中心点的三维坐标值映射到鼠标可控制区域上,然后根据手部中心点的位置以及是否出现点击动作确定用户的操作信息。
由于是手部位置初始化阶段,该动作判断单元108利用Y值设定点击判定面的初始值,所以手部坐标的Y值都大于或等于点击判定面的判定值。并且,当用户移动手部进行正常工作模式下的操作时,每次该动作判断单元108接收到手部中心点的三维坐标后,不再重新设置该点击判定平面Y轴值,而是直接根据该点击判定平面Y轴值来判断是否虚拟触控屏出现有效点击动作。
其中,将手部中心点的三维坐标值映射到鼠标可控制区域上,具体为:设置鼠标可控制区域为XZ平面上的坐标值范围,经过重映射的手部中心点在XZ面的坐标可以直接映射为该鼠标可控制区域中的鼠标位置坐标。
根据手部中心点的三维坐标值判断点击动作,具体为:当选定了点击判定平面Y轴值后,只要手部中心点三维坐标中的Y值低于该点击判定平面Y轴值,则判定该端点穿越的了该点击判定平面,即该单手出现点击行为,然后结合手部中心点在哪个区域判断用户最终是对哪个位置进行了点击操作。
步骤S37,该图形绘制单元109根据该动作判断单元108的判断结果,即,手部中心点在哪个区域上的哪个位置进行了点击操作,绘制出模拟鼠标图标出现在对应XZ面的位置,然后根据出现点击行为的位置区域做出特定响应,例如高亮,或者进入某一选中的应用程序。
步骤S38,该显示控制单元110把由该图形绘制单元109绘制的图像转换为显示设备21可以显示的时序,调用该显示单元111将操作虚拟鼠标的图像显示到显示设备21上供用户观看,用户根据反馈可以得知当前的手部中心点对应的虚拟鼠标在控制区域中的位置。
本发明提供的一种虚拟鼠标操作装置、系统及方法,由摄像头抓取图像并识别手部中心点的位置以及手部姿势,由得到的手部中心点坐标直接映射为对虚拟鼠标的操作动作,并在显示器上显示出来反馈给用户,通过智能眼镜和智能手环,或者智能便携移动设备上的摄像设备快速搭建虚拟鼠标输入环境,不再需要实体设备,方便用户随时随地通过虚拟鼠标进行人机交互操作。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。