CN116027902A - 手势交互系统、方法、vr/ar设备及存储介质 - Google Patents
手势交互系统、方法、vr/ar设备及存储介质 Download PDFInfo
- Publication number
- CN116027902A CN116027902A CN202310024649.6A CN202310024649A CN116027902A CN 116027902 A CN116027902 A CN 116027902A CN 202310024649 A CN202310024649 A CN 202310024649A CN 116027902 A CN116027902 A CN 116027902A
- Authority
- CN
- China
- Prior art keywords
- gesture
- gesture recognition
- byte
- recognition result
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Image Analysis (AREA)
Abstract
本申请公开了一种手势交互系统、方法、VR/AR设备及存储介质,属于人工智能领域。该系统包括多个图像传感器、多个DSP、MCU和上位机;其中,每个图像传感器分别与一个DSP电性相连;多个DSP均与MCU电性相连,上位机与MCU电性相连。该多个图像传感器用于分别对手势交互区域进行手部图像采集,并将采集到的图像数据发送给与其相连的DSP;DSP用于对接收到的图像数据进行手势识别,得到当前时刻的手势识别结果,并将手势识别结果发送给MCU;MCU用于对接收到的多个手势识别结果进行融合;最终,上位机根据融合后的手势识别结果,渲染下一时刻应呈现的交互内容。该系统能够有效缓解手势交互时存在的延迟和卡顿现象。
Description
技术领域
本申请涉及人工智能领域,特别涉及一种手势交互系统、方法、VR/AR设备及存储介质。
背景技术
手势交互是人类日常交流中最直观的一种基于视觉的信息交互手段。时下随着人工智能技术的快速发展,手势交互也已经渗透到人工智能领域。
在人工智能领域中,虚拟现实(Virtual Reality,VR)/增强现实(AugmentedReality,AR)设备中的上位机获取图像传感器采集的手部图像,进而利用手势识别算法获取手势类别以及手势交互点三维坐标;之后,根据获取的手势类别、手势交互点与虚拟空间中交互内容的空间位置关系,来判断用户的交互意图。
然而,一方面由于VR/AR设备中的上位机通常需要占用大量运算资源用于交互内容的渲染,另一方面由于图像传感器向上位机传输图像数据也存在一定延迟,所以目前的手势交互方式延迟较高,甚至可能出现卡顿现象,这会大大影响用户的交互体验效果。
发明内容
本申请实施例提供了一种手势交互系统、方法、VR/AR设备及存储介质,能够有效缓解手势交互时存在的延迟和卡顿现象,大大提高了用户的交互体验效果。所述技术方案如下:
一方面,提供了一种手势交互系统,所述手势交互系统包括:多个图像传感器、多个数字信号处理器(Digital Signal Processing,DSP)、微控制单元(MicrocontrollerUnit,MCU)和上位机;
其中,所述多个图像传感器中的每个图像传感器分别与一个DSP电性相连;所述多个DSP均与所述MCU电性相连,所述上位机与所述MCU电性相连;
所述多个图像传感器,用于分别对手势交互区域进行手部图像采集,并将采集到的图像数据发送给与其相连的DSP;
所述多个DSP,用于分别对接收到的图像数据进行手势识别,得到当前时刻的手势识别结果,并将所述手势识别结果发送给所述MCU;
所述MCU,用于对接收到的多个手势识别结果进行融合,得到融合后的手势识别结果;
所述上位机,用于根据所述融合后的手势识别结果,渲染下一时刻应呈现的交互内容。
可选地,所述图像数据包括灰度图和深度图;所述多个DSP,用于分别执行:将所述灰度图转换为二值图像;
对于所述二值图像中的任一个像素点,响应于所述像素点的像素值为最小值,将所述像素点的像素值存储为占用一个比特位的第一数值;
响应于所述像素点的像素值为最大值,将所述像素点的像素值存储为占用一个比特位的第二数值;
对采用新存储形式存储的二值图像依次执行形态学操作和轮廓检测,得到手部区域轮廓;
根据所述手部区域轮廓定位掌心,并根据掌心定位结果确定手势类别;
定位手势交互点二维坐标;根据所述深度图和所述手势交互点二维坐标,获取手势交互点三维坐标。
可选地,所述形态学操作为图像腐蚀操作,所述腐蚀操作的核为N*N矩阵;其中,N=2a+1,a的取值不小于1;
所述多个DSP,用于分别执行:
对于所述二值图像中第i行的第j个字节,获取所述二值图像中第i+m行的第j个字节,得到多个原始字节;其中,所述第j个字节由连续多个像素点的像素值组成;m为整数,m的取值为{a,...,2,1,0,-1,-2,...,-a};i和j均为正整数;
分别对所述多个原始字节执行n位的位移操作,得到多个位移后字节;
其中,n为整数,n的取值为{a,...,-2,-1,0,1,2,...,a};响应于n>0,表示右移n位;响应于n<0,表示左移-n位;响应于n=0,表示不进行位移;
对所述多个原始字节和所述多个位移后字节进行按位与操作,得到腐蚀图像中第i行第j个字节所代表的连续多个像素点的像素值。
可选地,所述多个DSP,用于分别执行:
响应于所述第j个字节为所述第i行的非首字节,通过按位或操作,分别为左移后形成的空位补前一字节的最高位;
响应于所述第j个字节为所述第i行的非尾字节,通过按位或操作,分别为右移后形成的空位补后一字节的最低位。
可选地,所述多个DSP,用于分别执行:
对于经过形态学操作后的图像中的第j行,将所述第j行中连续多个像素点的像素值组成待处理字节;其中,j为正整数;
对所述待处理字节执行左移一位的位移操作,得到第一中间字节;
对所述第一中间字节执行按位取反操作,得到第二中间字节;
将所述待处理字节和所述第二中间字节进行按位与操作,得到目标字节;
将所述目标字节中指定比特位对应的像素点,作为所述连续多个像素点中的边界起点;其中,所述指定比特位为首个取值为第二数值的比特位;
根据确定的边界起点,获取所述手部区域轮廓。
可选地,所述多个DSP,用于分别执行:
响应于所述待处理字节为所述第j行的非首字节,通过按位或操作,为左移后形成的空位补前一字节的最高位,得到所述第一中间字节;
响应于所述待处理字节为所述第j行的非尾字节,通过按位或操作,为右移后形成的空位补后一字节的最低位,得到所述第一中间字节。
可选地,所述多个DSP,用于分别执行:
根据所述手部区域轮廓,确定初始掌心位置;
根据所述初始掌心位置和所述手部区域轮廓上的目标位置,确定所述初始掌心位置到所述手部区域轮廓的距离求解表达式;其中,所述目标位置为所述手部区域轮廓上距离所述初始掌心位置最近的位置;
分别在水平方向和竖直方向上对所述距离求解表达式求取偏导数;
以梯度上升法作为指导,根据得到的求导结果确定所述初始掌心位置的坐标求解表达式;
重复执行上述确定距离求解表达式、求取偏导数和确定坐标求解表达式的步骤,直至得到的距离最大值连续多个周期保持一致;
响应于所述距离最大值大于手掌最小宽度,将所述距离最大值对应的掌心位置坐标,作为所述掌心定位结果。
可选地,所述多个DSP,用于分别执行:
获取所述手部区域轮廓的最小外接矩形;
根据所述最小外接矩形的宽度,确定所述手掌最小宽度;
按照从上至下的顺序遍历手部区域的每一行,确定每一行中最长连续前景点的长度、起点像素、终点像素和截止当前为止连续前景点的长度最大值;
响应于连续多行的长度最大值保持一致,根据所述长度最大值对应行的起点像素和终点像素,确定所述初始掌心位置。
可选地,所述手势识别结果包括手势类别和手势交互点三维坐标;所述MCU,用于执行:
确定每个手势识别结果对应的坐标系变换矩阵;
对于任一个手势识别结果,根据所述手势识别结果对应的坐标系变换矩阵,对所述手势识别结果包括的手势交互点三维坐标进行坐标系变换,得到变换后的手势交互点三维坐标;
获取所述多个图像传感器对应的初始权重;其中,所述初始权重用于反映基于所述多个图像传感器采集的图像数据进行手势识别的可信度;
根据获取到的初始权重和所述多个手势识别结果包括的手势类别,对划分的多个手势类别进行投票;
将得票数最高的手势类别确定为融合后的手势类别;
响应于所述融合后的手势类别为有效手势类别,在所述多个手势识别结果中筛选目标手势识别结果,并更新所述目标手势识别结果对应的初始权重;
根据所述目标手势识别结果的变换后的手势交互点三维坐标、更新后的权重,确定融合后的手势交互点三维坐标。
可选地,所述MCU,用于执行:
对于任一个手势识别结果,响应于所述手势识别结果包括的手势类别与所述融合后的手势类别一致,将所述手势识别结果确定为所述目标手势识别结果;
将所述目标手势识别结果对应的初始权重与目标得票数之间的比值,作为所述更新后的权重;
其中,所述目标得票数与所述融合后的手势类别对应。
可选地,所述MCU,还用于执行:
向所述多个图像传感器分别发送曝光控制信号,所述曝光控制信号用于控制所述多个图像传感器依次曝光。
另一方面,提供了一种手势交互方法,应用于上述的手势交互系统;所述方法包括:
基于多个图像传感器,分别对手势交互区域进行手部图像采集,得到多路图像数据;
分别对所述多路图像数据进行手势识别,得到用户在当前时刻的多个手势识别结果;
对所述多个手势识别结果进行融合,得到融合后的手势识别结果;
根据所述融合后的手势识别结果,渲染下一时刻应呈现的交互内容。
可选地,所述方法还包括:
向所述多个图像传感器分别发送曝光控制信号,所述曝光控制信号用于控制所述多个图像传感器依次曝光。
可选地,所述图像数据包括灰度图和深度图;所述对所述图像数据进行手势识别的过程,包括:
将所述灰度图转换为二值图像;
对于所述二值图像中的任一个像素点,响应于所述像素点的像素值为最小值,将所述像素点的像素值存储为占用一个比特位的第一数值;
响应于所述像素点的像素值为最大值,将所述像素点的像素值存储为占用一个比特位的第二数值;
对采用新存储形式存储的二值图像依次执行形态学操作和轮廓检测,得到手部区域轮廓;
根据所述手部区域轮廓定位掌心,并根据掌心定位结果确定手势类别;
定位手势交互点二维坐标;根据所述深度图和所述手势交互点二维坐标,获取手势交互点三维坐标。
可选地,所述形态学操作为图像腐蚀操作,所述腐蚀操作的核为N*N矩阵;其中,N=2a+1,a的取值不小于1;
所述对采用新存储形式存储的二值图像执行形态学操作,包括:
对于所述二值图像中第i行的第j个字节,获取所述二值图像中第i+m行的第j个字节,得到多个原始字节;其中,所述第j个字节由连续多个像素点的像素值组成;m为整数,m的取值为{a,...,2,1,0,-1,-2,...,-a};i和j均为正整数;
分别对所述多个原始字节执行n位的位移操作,得到多个位移后字节;
其中,n为整数,n的取值为{a,...,-2,-1,0,1,2,...,a};响应于n>0,表示右移n位;响应于n<0,表示左移-n位;响应于n=0,表示不进行位移;
对所述多个原始字节和所述多个位移后字节进行按位与操作,得到腐蚀图像中第i行第j个字节所代表的连续多个像素点的像素值。
可选地,所述方法还包括:
响应于所述第j个字节为所述第i行的非首字节,通过按位或操作,分别为左移后形成的空位补前一字节的最高位;
响应于所述第j个字节为所述第i行的非尾字节,通过按位或操作,分别为右移后形成的空位补后一字节的最低位。
可选地,所述对采用新存储形式存储的二值图像执行轮廓检测,包括:
对于经过形态学操作后的图像中的第j行,将所述第j行中连续多个像素点的像素值组成待处理字节;其中,j为正整数;
对所述待处理字节执行左移一位的位移操作,得到第一中间字节;
对所述第一中间字节执行按位取反操作,得到第二中间字节;
将所述待处理字节和所述第二中间字节进行按位与操作,得到目标字节;
将所述目标字节中指定比特位对应的像素点,作为所述连续多个像素点中的边界起点;其中,所述指定比特位为首个取值为第二数值的比特位;
根据确定的边界起点,获取所述手部区域轮廓。
可选地,所述方法还包括:
响应于所述待处理字节为所述第j行的非首字节,通过按位或操作,为左移后形成的空位补前一字节的最高位,得到所述第一中间字节;
响应于所述待处理字节为所述第j行的非尾字节,通过按位或操作,为右移后形成的空位补后一字节的最低位,得到所述第一中间字节。
可选地,所述根据所述手部区域轮廓定位掌心,包括:
根据所述手部区域轮廓,确定初始掌心位置;
根据所述初始掌心位置和所述手部区域轮廓上的目标位置,确定所述初始掌心位置到所述手部区域轮廓的距离求解表达式;其中,所述目标位置为所述手部区域轮廓上距离所述初始掌心位置最近的位置;
分别在水平方向和竖直方向上对所述距离求解表达式求取偏导数;
以梯度上升法作为指导,根据得到的求导结果确定所述初始掌心位置的坐标求解表达式;
重复执行上述确定距离求解表达式、求取偏导数和确定坐标求解表达式的步骤,直至得到的距离最大值连续多个周期保持一致;
响应于所述距离最大值大于手掌最小宽度,将所述距离最大值对应的掌心位置坐标,作为所述掌心定位结果。
可选地,所述根据所述手部区域轮廓,确定初始掌心位置,包括:
获取所述手部区域轮廓的最小外接矩形;
根据所述最小外接矩形的宽度,确定所述手掌最小宽度;
按照从上至下的顺序遍历手部区域的每一行,确定每一行中最长连续前景点的长度、起点像素、终点像素和截止当前为止连续前景点的长度最大值;
响应于连续多行的长度最大值保持一致,根据所述长度最大值对应行的起点像素和终点像素,确定所述初始掌心位置。
可选地,所述对所述多个手势识别结果进行融合,得到融合后的手势识别结果,包括:
确定每个手势识别结果对应的坐标系变换矩阵;
对于任一个手势识别结果,根据所述手势识别结果对应的坐标系变换矩阵,对所述手势识别结果包括的手势交互点三维坐标进行坐标系变换,得到变换后的手势交互点三维坐标;
获取所述多个图像传感器对应的初始权重;其中,所述初始权重用于反映基于所述多个图像传感器采集的图像数据进行手势识别的可信度;
根据获取到的初始权重和所述多个手势识别结果包括的手势类别,对划分的多个手势类别进行投票;
将得票数最高的手势类别确定为融合后的手势类别;
响应于所述融合后的手势类别为有效手势类别,在所述多个手势识别结果中筛选目标手势识别结果,并更新所述目标手势识别结果对应的初始权重;
根据所述目标手势识别结果的变换后的手势交互点三维坐标、更新后的权重,确定融合后的手势交互点三维坐标。
可选地,所述在所述多个手势识别结果中筛选目标手势识别结果,并更新所述目标手势识别结果对应的初始权重,包括:
对于任一个手势识别结果,响应于所述手势识别结果包括的手势类别与所述融合后的手势类别一致,将所述手势识别结果确定为所述目标手势识别结果;
将所述目标手势识别结果对应的初始权重与目标得票数之间的比值,作为所述更新后的权重;
其中,所述目标得票数与所述融合后的手势类别对应。
另一方面,提供了一种VR/AR设备,所述设备包括多个DSP、MCU和上位机;其中,所述多个DSP中每个DSP分别与一个图像传感器电性相连;所述多个DSP均与所述MCU电性相连,所述上位机与所述MCU电性相连;
所述多个DSP,用于在接收到与其相连的图像传感器发送的图像数据后,分别对接收到的图像数据进行手势识别,得到当前时刻的手势识别结果,并将所述手势识别结果发送给所述MCU;
其中,所述图像数据是相应的图像传感器通过对手势交互区域进行手部图像采集得到的;
所述MCU,用于对接收到的多个手势识别结果进行融合,得到融合后的手势识别结果;
所述上位机,用于根据融合后的手势识别结果,渲染下一时刻应呈现的交互内容。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由VR/AR设备加载并执行以实现上述手势交互方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机程序代码,该计算机程序代码存储在计算机可读存储介质中,VR/AR设备从计算机可读存储介质读取该计算机程序代码,执行该计算机程序代码,使得该VR/AR设备执行上述的手势交互方法。
本申请实施例提供了一种手势交互系统,该手势交互系统包括多个图像传感器、多个DSP、MCU和上位机;其中,每个图像传感器分别与一个DSP电性相连;多个DSP均与MCU电性相连,上位机与MCU电性相连。
详细来说,该多个图像传感器用于分别对手势交互区域进行手部图像采集,并将采集到的图像数据发送给与其相连的DSP;而DSP用于对接收到的图像数据进行手势识别,得到当前时刻的手势识别结果,并将手势识别结果发送给MCU;MCU用于对接收到的多个手势识别结果进行融合;最终,上位机根据融合后的手势识别结果,渲染下一时刻应呈现的交互内容。
由于手势识别过程在DSP这样的下位机中运行,仅传输少量数据(比如手势识别结果)至上位机,因此上位机的所有运算资源可全部用于内容渲染。所以,该种手势交互的硬件化方案不仅可节约上位机运算资源,而且可降低因数据传输带来的延迟;换言之,该系统能够有效缓解手势交互时存在的延迟和卡顿现象,大大提高了用户的交互体验效果。另外,通过手势识别融合有效提高了手势识别的精准性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种手势交互系统的结构示意图;
图2是本申请实施例提供的一种手势识别算法的流程图;
图3是本申请实施例提供的一种基于梯度上升法的快速掌心定位算法的流程图;
图4是本申请实施例提供的一种手势交互方法的流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”、“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。
这些术语只是用于将一个元素与另一个元素区别开。例如,在不脱离各种示例的范围的情况下,第一元素能够被称为第二元素,并且类似地,第二元素也能够被称为第一元素。第一元素和第二元素都可以是元素,并且在某些情况下,可以是单独且不同的元素。
其中,至少一个是指一个或一个以上,例如,至少一个元素可以是一个元素、两个元素、三个元素等任意大于等于一的整数个元素。而多个是指两个或者两个以上,例如,多个元素可以是两个元素、三个元素等任意大于等于二的整数个元素。
在本文中提及的“和/或”,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
如前所述,针对相关技术中用户在体验VR/AR产品时常常会感到手势交互存在延迟和卡顿的现象,如果手势识别算法可以进行硬件化加速使其在DSP等下位机中运行,仅传输少量数据(比如手势类别、手势交互点三维坐标)至上位机,则上位机的运算资源可以全部用于交互内容的渲染。其中,DSP相较于人工智能(Artificial Intelligence,AI)芯片或高性能的应用处理器(Application Processor,AP)芯片而言,价格低廉,所以并不会额外增加产品成本。
因此,本申请实施例提出了基于多个图像传感器(本文以TOF相机为例)的手势交互硬件化加速方案。该方案不仅可以节约上位机的运算资源,并且可以降低因数据传输带来的延迟,会大大提高用户的交互体验效果。
而目前虽然手势识别算法种类繁多,示例性地,以输入数据类型划分,可以分为基于RGB图像的手势识别算法、基于点云的手势识别算法以及基于灰度图像的手势识别算法等;以硬件设备划分,则可以分为基于双目相机的手势识别算法、基于TOF飞行时间(TimeOf Flight,TOF)相机的手势识别算法等;另外,也可以分为基于传统图像算法的手势识别算法和基于深度学习的手势识别算法等。而无论采用何种手势识别算法,在算法硬件化加速过程中都会面临以下问题:
(1)、DSP等下位机的硬件片上空间有限。通常一张分辨率为640*480的灰度图像的数据量即为300KB,彩色图像的数据量则为900KB,DSP等下位机无法一次性完成加载和运算。
(2)、DSP等下位机的硬件算力有限。基于深度学习的手势识别算法需要进行大量卷积操作(即乘法和加法运算),运算量极大,DSP等硬件设备无法支撑;对于基于传统图像算法的手势识别算法,若算法流程复杂度或运算量大,则可能存在延迟。示例性地,典型TOF相机的红外线(Infrared Radiation,IR)相位图的帧率为120fps(每秒传输帧数),即硬件化后的算法延迟需控制在8.3ms(毫秒)以内。
考虑到上述问题,针对VR/AR产品,本申请实施例提出了一种基于多个TOF相机的手势交互硬件化加速方案,实现了手势识别的硬件化加速。其中,该方案包括一种手势交互硬件方案、一种手势识别算法的硬件化加速方案、一种基于梯度上升法的快速掌心定位算法以及一种手势识别结果融合算法。
换言之,对于VR/AR设备,尤其是3D屏交互设备,本申请实施例首先提出了如图1所示的一种硬件连接方案。即,采用多个TOF相机来覆盖用户手势交互空间,以此获取用户手部区域的IR相位图和深度图;之后,利用移动产业处理器接口(Mobile IndustryProcessor Interface,MIPI)接口将上述图像数据高速传输给对应的DSP,在DSP中利用手势识别算法的硬件化加速方案来获取手势识别结果(包括手势类别、手势交互点三维坐标)传输给MCU;而MCU在接收到所有的手势识别结果后,通过手势识别结果融合算法进行手势识别结果融合,得到融合后的手势识别结果并通过串口传输给上位机。
其次,在算法硬件化方面,本申请实施例提出了一种针对二值图像的存储与表示方式,能够将图像的数据量降低为原有的1/8,并且基于此种存储与表示方式,优化并加速了基于灰度图(即IR相位图)的手势识别算法,其中,该手势识别算法中还包括一种基于梯度上升法的快速掌心定位算法。另外,本申请实施例还针对多个TOF相机对应的手势识别结果提出了一种手势识别结果融合算法,可以有效利用多个TOF相机的不同视角,增大手势交互区域、提高系统稳定性。示例性地,本申请实施例提出的基于多个TOF相机的手势交互硬件化加速方案可以将系统延迟从200ms压缩至12.5ms左右。其中系统延迟是指从相机曝光至上位机接收到手势识别结果的这段时间。
下面通过如下实施方式对本申请实施例提供的一种基于多个TOF相机的手势交互硬件化加速方案进行详细说明。
图1是本申请实施例提供的一种手势交互系统的结构示意图。
参见图1,该手势交互系统包括:多个图像传感器101、多个数字信号处理器DSP102、微控制单元MCU103和上位机104;其中,上述多个在后文中以X个指代,且以上述图像传感器为TOF相机为例进行说明。
在本申请实施例中,每个TOF相机101分别与一个DSP102电性相连;N个DSP102均与MCU103电性相连;另外,上位机104与MCU103电性相连。
可选地,本申请实施例根据VR/AR设备的手势交互范围以及TOF相机的相机参数,来确定TOF相机的个数与安装位置,以使所有TOF相机共同组成的有效工作区域可以覆盖VR/AR设备的手势交互区域。
TOF相机101,用于分别对手势交互区域进行手部图像采集,并将采集到的图像数据发送给与其相连的DSP。
DSP102,用于分别对接收到的图像数据进行手势识别,得到当前时刻的手势识别结果,并将手势识别结果发送给MCU103;换言之,每个TOF相机101均连接一个DSP102,DSP102通过MIPI接口从相应的TOF相机101获取图像数据(包括IR相位图与深度图)。手势识别算法的硬件化方案运行于DSP102中,即DSP102会根据获取到的图像数据判断用户当前时刻的手势类别和手势交互点三维坐标,得到手势识别结果。
MCU103,用于对接收到的多个手势识别结果进行融合,得到融合后的手势识别结果;换言之,所有的DSP102均与唯一的MCU103相连,MCU103负责获取DSP102上传的手势识别结果,进而通过手势识别结果融合算法对多个手势识别结果进行融合,得到唯一的手势识别结果。
可选地,MCU103还兼具控制TOF相机101曝光的功能,以使X个TOF相机101依次曝光,避免因曝光时间重叠造成各个TOF相机之间的相互干扰;换言之,MCU103还用于执行向X个TOF相机101分别发送曝光控制信号,该曝光控制信号用于控制X个TOF相机101依次曝光。
上位机104,用于根据融合后的手势识别结果,渲染下一时刻应呈现的交互内容。换言之,上位机104通过串口获取MCU103上传的融合后的手势识别结果,并根据该结果渲染出下一时刻的交互内容。
本申请实施例提供的手势交互系统,由于手势识别过程在DSP这样的下位机中运行,仅传输少量数据(比如手势识别结果)至上位机,因此上位机的所有运算资源可全部用于内容渲染。所以,该种手势交互的硬件化方案不仅可节约上位机运算资源,而且可降低因数据传输带来的延迟;换言之,该系统能够有效缓解手势交互时存在的延迟和卡顿现象,大大提高了用户的交互体验效果。另外,通过手势识别融合有效提高了手势识别的精准性。
以上介绍了本申请实施例提出的手势交互硬件方案,下面分别对本申请实施例提出的手势识别算法的硬件化加速方案、基于梯度上升法的快速掌心定位算法和手势识别结果融合算法进行介绍。
手势识别算法的硬件化加速方案
考虑到DSP的片上空间与算力限制,本申请实施例基于IR相位图,采用如图2所示的手势识别算法进行手势识别,进而获取到手势类别与手势交互点二维坐标,之后再通过深度图获取手势交互点二维坐标对应的三维坐标,得到手势交互点三维坐标。另外,为了解决片上空间不足以及算法加速等问题,本申请实施例提出了一种新的二值图像存储与表示形式,并针对此种存储与表示形式对手势识别算法中各具备批量运算特征的算法步骤(模块)进行了优化加速;另外,对于无法硬件化加速的掌心定位算法,本申请实施例提出了一种新的基于梯度上升法的快速掌心定位算法。
1、新的二值图像存储与表示形式
可选地,本申请实施例使用的DSP型号为rk1608,该种型号DSP的片上空间约为200KB,即输入数据和输出数据均在这200KB空间上。在本申请实施例中,针对灰度图,其包括的像素点的像素取值范围为0~255,至少需要一个字节(即8个bit)来表示,相应地,一张分辨率为640*480的IR相位图,其所占用的空间大小可以按照如下公式计算。
640*480*1Byte=307200B=300KB
即为300KB,因此该灰度图每次运算至少要分三批进行,每次将片外空间上的图像搬运100KB到片上,运算完毕后将输出的100KB数据从片上空间再搬运到片外。
针对此种情况,考虑到分批运算可能导致算法复杂度提升且数据搬运将带来额外延迟,因此在对灰度图完成二值化操作(即像素值仅可能为0或255)得到二值图像后,本申请实施例提出了一种新的二值图像存储与表示形式,即将原本由一个字节表示一个像素点的像素值压缩成由一个bit来表示一个像素点的像素值。示例性地,bit为0表示对应位置的像素值为0,bit为1表示对应位置的像素值为255,此种新的二值图像存储与表示形式可以将原本300KB大小的图像压缩至75KB,因此不再需要分批运算。
举例来说,假设原始图像中一段长度为8的连续像素点的像素值按从左到右的顺序为依次{0,0,240,29,12,89,74,198},以二值化阈值为30为例,则二值化后的像素值依次为{0,0,255,0,0,255,255,255},若以一个字节表示一个像素点的像素值,则像素值依次为{0x0,0x0,0xff,0x0,0x0,0xff,0xff,0xff},若以一个bit表示一个像素点的像素值,则像素值为0xe4(二进制为11100100)。需要说明的是,由于一个字节的低位bit在后,高位bit在前,因此一个字节表示的8个像素值是反序的。
可选地,本申请实施例使用的DSP型号为rk1608,该种型号DSP支持CEVA Vec-CTM语言扩展,其包含诸如加法、减法、比较等批量运算函数。其中,Vec-C中每个运算函数能够一次性处理256个bit,即能够处理采用新存储形式的256个像素。因此在同一张图像上运行相同的Vec-C函数,采用新存储形式可降低运行次数至原有的1/8。所以,该种新的图像存储与表示形式不仅能够避免由于片上空间不足带来的搬运问题,而且实现了对各具备批量运算特征的算法步骤(模块)进行了优化加速。
综上所述,在本申请实施例中,DSP102,用于分别执行以下步骤:
将获取到的灰度图转换为二值图像;对于该二值图像中的任一个像素点,响应于该像素点的像素值为最小值(0),将该像素点的像素值存储为占用一个比特位的第一数值(本文中指代0);响应于该像素点的像素值为最大值(255),将该像素点的像素值存储为占用一个比特位的第二数值(本文中指代1)。
对采用新存储形式存储的二值图像依次执行形态学操作和轮廓检测,得到手部区域轮廓;之后,根据手部区域轮廓定位掌心,并根据掌心定位结果确定手势类别;以及,定位手势交互点二维坐标;最终,根据深度图和手势交互点二维坐标,获取手势交互点三维坐标,得到手势识别结果。
2、手势识别算法
针对新的二值图像存储与表示形式,本申请实施例将图2所示的手势识别算法流程图中的形态学操作(比如腐蚀、膨胀)、轮廓检测(边界起点遍历)操作等具备批量运算特征的算法步骤(模块)转化为位运算,并通过Vec-C函数中的运算函数进行加速。
2-1、腐蚀、膨胀操作
通常情况下,图像的腐蚀和膨胀操作的数学原理为:在当前像素点的指定邻域内获取最小值、最大值来替代当前像素值。然而,对于上述新的图像存储与表达形式,本申请实施例将上述取最大值或最小值操作转换为对该指定邻域内像素值做按位与、按位或操作。
可选地,腐蚀操作以字节为单位,以腐蚀操作的核为N*N矩阵,其中N=2*a+1,a>=1,即a的取值不小于1为例,则腐蚀操作的过程如下:
分别取第i+m行的第j个字节为Ci+m;如果第i+m行超出原图像尺寸,则取Ci+m=0xff;其中,m的取值为整数,m={a,...,2,1,0,-1,-2,...,-a};对于Ci+m分别做n位的位移操作,得到其中,n>0,表示右移n位;n<0,表示左移-n位;n=0,表示不变;其中,n为整数,n={a,...,-2,-1,0,1,2,...,a};即,响应于n>0,表示右移n位;响应于n<0,表示左移-n位;响应于n=0,表示不进行位移;另外,对于位移过程中产生的空位需要使用上一个字节的最低位或下一个字节的最高位来填补;对于所有的共计N*N个字节做按位与操作,即可得到腐蚀操作后第i行第j个字节所代表的8个像素的像素值。其中,i和j均为正整数。
综上所述,针对腐蚀操作,多个DSP用于分别执行:
对于上述二值图像中第i行的第j个字节,获取该二值图像中第i+m行的第j个字节,得到多个原始字节;其中,第j个字节由连续多个像素点(比如8个)的像素值组成;分别对多个原始字节执行n位的位移操作,得到多个位移后字节;对多个原始字节和多个位移后字节进行按位与操作,得到腐蚀图像中第i行第j个字节所代表的连续多个像素点的像素值。另外,响应于第j个字节为第i行的非首字节,通过按位或操作,分别为左移后形成的空位补前一字节的最高位;或,响应于第j个字节为第i行的非尾字节,通过按位或操作,分别为右移后形成的空位补后一字节的最低位。
可选地,对于3行8列的图像数据,以3*3矩形模板作为腐蚀操作的核为例,则腐蚀过程如下:
分别取第二行、第二行的前一行(第一行)与第二行的下一行(第三行)的像素内容作为字节B、A、C,将字节A左移一位得到A-1,右移一位得到A1,一般情况下,位移操作默认补0,在本申请实施例中,利用按位或操作实现位移补1,即通过如下公式获得A-1′和A1′。
A-1′=A<<1
A1′=A>>1
A-1′=A-1|0x01
A1′=A1|0x80
通过同样操作可以得到B-1′、B1′、C-1′和C1′。
其中,字节A-1′、A1′、B-1′、B1′、C-1′和C1′与原始字节A、B、C的任一相同位置的bit,构成第二行对应位置的3*3邻域;对字节A-1′、A、A1′、B-1′、B、B1′、C-1′、C和C1′进行按位与操作,得到结果D,公式如下所示。
D=A-1′&A&A1′&B-1′&B&B1′&C-1′&C&C1′
其中,D为腐蚀后图像的第二行的像素值。
需要说明的是,对于第一行和第三行的腐蚀操作,因为不存在当前行的前一行或后一行,所以直接为前一行和后一行赋值0xff。
另外,如果图像的宽度大于8,则字节A、B、C在进行右移1位的位移操作时不能直接补1,还需补下一字节的最低位。将下一字节记为E为例,则公式如下所示。
A1′=A1|(E<<7)
另外,如果字节A、B、C不是所在行的首字节,则字节A、B、C在进行左移1位的位移操作时同样不能直接补1,还需补上一字节的最高位。将上一字节记为F为例,则公式如下所示。
A-1′=A-1|(F>>7)
可选地,膨胀操作同理,区别为位移补0,邻域内所有bit位做按位或操作。在本申请实施例中,膨胀操作以字节为单位,以膨胀操作的核为N*N矩阵,其中N=2*a+1,a>=1,即a的取值不小于1为例,则膨胀操作的过程如下:
分别取第i+m行的第j个字节为Ci+m;如果第i+m行超出原图像尺寸,则取Ci+m=0x00;其中,m的取值为整数,m={a,...,2,1,0,-1,-2,...,-a};对于Ci+m分别做n位的位移操作,得到其中,n>0,表示右移n位;n<0,表示左移-n位;n=0,表示不变;其中,n为整数,n={a,...,-2,-1,0,1,2,...,a};即,响应于n>0,表示右移n位;响应于n<0,表示左移-n位;响应于n=0,表示不进行位移;另外,对于位移过程中产生的空位需要使用上一个字节的最低位或下一个字节的最高位来填补;对于所有的共计N*N个字节做按位或操作,即可得到膨胀操作后第i行第j个字节所代表的8个像素的像素值。
2-2、轮廓检测
可选地,图2所示的轮廓检测与筛选本申请实施例采用Suzuki85边界跟踪算法实现,并且为简化算法流程选择只检测外轮廓(边界),其中,在做边界跟踪前还需要首先需确定边界起点。
在当前像素点Ai,j的像素值为255(按新的存储与表示形式为一个bit的1)的情况下,如果其左侧像素点Ai-1,j的像素值为0或像素点Ai,j位于图像第一列时,则确定Ai,j为当前行的边界起点。
其中,在做轮廓检测时,通常需从图像左上角开始向右下角逐行遍历像素点,直到找到第一个边界起点,由于此过程耗时较长且满足像素点批量化操作的特点,因此本申请实施例将其转化为位操作并利用Vec-C函数进行硬件化加速。详细来说,对于图像中任意一行像素,取连续8个像素点的像素值作为一个字节A,则将字节A进行左移1位的位移操作,得到字节A-1,其中,位移操作默认补0;之后,对字节A-1进行按位取反,即公式如下所示。
此时,字节B中第一个为1的bit位,即为当前字节代表的图像数据中的边界起点。
需要说明的是,与腐蚀操作类似,如果图像的宽度大于8,且当前字节不是当前行的首个字节,假设前一个字节为E,那么还需将字节E的最高位补到A-1的最低位上,则公式如下所示。
A-l′=A-1|(E>>7)
综上所述,针对轮廓检测操作,多个DSP用于分别执行:
对于经过形态学操作后的图像中的第j行,将第j行中连续多个像素点的像素值组成待处理字节(字节A);对待处理字节执行左移一位的位移操作,得到第一中间字节(字节A-1);对第一中间字节执行按位取反操作,得到第二中间字节(字节);将待处理字节和第二中间字节进行按位与操作,得到目标字节(字节B);将目标字节中指定比特位对应的像素点,作为连续多个像素点中的边界起点;其中,指定比特位为首个取值为第二数值(比如1)的比特位;根据确定的边界起点,获取手部区域轮廓。
另外,响应于待处理字节为第j行的非首字节,通过按位或操作,为左移后形成的空位补前一字节的最高位,得到第一中间字节;响应于待处理字节为第j行的非尾字节,通过按位或操作,为右移后形成的空位补后一字节的最低位,得到第一中间字节。
3、基于梯度上升法的快速掌心定位算法
其中,掌心定位结果是手势类别判定的重要依据之一,通常认为手部区域轮廓的最大内接圆的圆心即为掌心位置,相关技术一般遍历计算手掌区域内所有像素点到手掌轮廓的距离,距离轮廓最远的点即为轮廓最大内接圆的圆心。可选地,点到轮廓的距离一般定义为点到轮廓中任意连续两个点构成的直线的距离最小值;如果该点在轮廓外,则此距离值为负;如果该点在轮廓内,则此距离值为正;如果该点在轮廓上,则此距离值为0。由于上述算法需要遍历大量的像素点,其算法复杂度与轮廓面积成正比,并且计算点到轮廓距离时包含大量乘除法运算,因此会造成一定的延迟。
针对上述情况,参见图3,本申请实施例提出了一种基于梯度上升法的快速掌心定位算法,该算法的主要流程如下:
步骤a、首先获取手部区域轮廓的最小外接矩形,并获取该最小外接矩形的宽度width;可选地,本申请实施例以width/5.5作为手掌最小宽度min_r;
步骤b、按照从上至下的顺序遍历手部区域的每一行,记录每一行中最长的连续前景点(即像素值为255的像素点)的长度Li、起点Xstart、终点Xend与截止当前行为止的Li中的最大值Lmax。
如果连续多行(比如5行)Lmax都不再发生变化,则取Lmax对应行的Xstart和Xend的中点作为初始的掌心位置center,坐标记为(xc,yc)(此过程同样为像素批量化计算,加速过程同形态学操作和边界起点寻找,这里不再赘述)。
步骤c、以轮廓上距离center最近的点nearest_point的坐标为(xnearest,ynearest)为例,计算center到轮廓的距离distance,此时distance的绝对值可以表示为如下公式。
步骤d、针对distance,分别对x和y求取偏导数,得到:
如果distance≥0,则公式如下所示。
如果distance<0,则公式如下所示。
步骤e、根据梯度上升法可知,使distance增大的新center位于distance在center的梯度方向上,即:
如果distance≥0,则公式如下所示。
center=center+delta*(center-nearest_point)
如果distance<0,则公式如下所示。
center=center+delta*(nearest_point-center)
其中,delta>0,为优化迭代的步长。
步骤f、不断重复步骤c~e,记录最大的distance为max_dist,其对应的center记为final_center,直到连续多个(比如5个)周期max_dist不再发生变化;
步骤g、如果max_dist>min_r,则掌心定位成功,掌心坐标即为final_center;反之则定位失败,掌心坐标为(-1,1)。
综上所述,针对掌心定位,多个DSP用于分别执行:
根据手部区域轮廓,确定初始掌心位置;根据初始掌心位置和手部区域轮廓上的目标位置,确定初始掌心位置到手部区域轮廓的距离求解表达式;其中,目标位置为手部区域轮廓上距离初始掌心位置最近的位置;分别在水平方向和竖直方向上对距离求解表达式求取偏导数;以梯度上升法作为指导,根据得到的求导结果确定初始掌心位置的坐标求解表达式;重复执行上述确定距离求解表达式、求取偏导数和确定坐标求解表达式的步骤,直至得到的距离最大值连续多个周期保持一致;响应于该距离最大值大于手掌最小宽度,将该距离最大值对应的掌心位置坐标,作为掌心定位结果。
可选地,确定初始掌心位置的过程为:获取手部区域轮廓的最小外接矩形;根据该最小外接矩形的宽度,确定手掌最小宽度;按照从上至下的顺序遍历手部区域的每一行,确定每一行中最长连续前景点的长度、起点像素、终点像素和截止当前为止连续前景点的长度最大值;响应于连续多行的长度最大值保持一致,根据该长度最大值对应行的起点像素和终点像素,确定初始掌心位置。
手势识别结果融合算法
为覆盖VR/AR设备尤其是3D屏幕的手势交互范围通常需要多个TOF相机,因此在本专利中提出的硬件连接方案中MCU负责控制TOF相机的曝光顺序并且一种多TOF手势识别结果融合算法将运行在MCU上用于将多个手势识别结果进行融合,输出给上位机唯一的手势识别结果。
(1)、坐标变换
首先,需要标定各个TOF相机的坐标系到VR/AR设备的坐标系的变换矩阵Ti,然后将每个TOF相机对应的手势识别结果中包括的手势交互点三维坐标Pci,转换到VR/AR设备的坐标系下,得到Psi,公式如下所示。
Psi=Ti*Pci
其中,Psi、Pci均为齐次坐标。
综上所述,MCU用于执行:确定每个手势识别结果对应的坐标系变换矩阵;对于任一个手势识别结果,根据该手势识别结果对应的坐标系变换矩阵,对该手势识别结果包括的手势交互点三维坐标进行坐标系变换,得到变换后的手势交互点三维坐标。
(2)、手势类别投票
受图2所示的手势识别算法的能力所限,正面TOF相机拍摄的图像的手势识别准确率高于侧面TOF相机拍摄的图像;由于存在干扰物(比如从下向上拍摄仅能拍到用户伸出的手臂,而从上向下拍摄会拍到桌面、身体等),上方TOF相机拍摄的图像的手势识别准确率低于下方TOF相机拍摄的图像,并且TOF相机存在有效工作距离,因此不同安装位置的TOF相机对应的手势识别结果的可信度不同、不在对应TOF相机工作范围内的手势识别结果可信度为0。可选地,本文中TOF相机的工作距离约为0.15m~1m。
首先,模仿用户常见的手势交互动作并在手势交互范围移动,采集各个TOF相机工作范围内的多组(比如1000组)手势识别结果,统计其手势识别准确率,并将统计的手势识别准确率作为各个TOF相机对应的手势识别结果的初始可信度,即为权重wi。
接下来,获取同一时刻下X个TOF相机对应的手势识别结果Gi(包含手势类别Ci和手势交互点三维坐标Pi),如果TOF相机i的手势识别结果中的三维坐标的z不在TOF相机的工作范围内,则令wi=0。在本申请实施例中,采用权重对所有手势类别Cj进行投票,则手势类别Cj的得票数通过如下公式计算。
可选地,本申请实施例将手势类别Cj分为单指、拳头、五指以及其他;其中,其他表示当前相机识别失败或当前相机未拍摄到手部区域。
另外,上式中的n为TOF相机个数,Ai的取值为0或1,通过如下公式确定其取值。
之后,将手势类别Cj依照得票数从高至低排序,选取类别不为其他且得票数最高并大于0的手势类别为融合后的手势类别;若不存在,则融合后手势类别为其他。
(3)、获取融合后的手势识别结果
如果融合后的手势类别为其他,则融合后手势识别结果为其他和(-1,-1,-1)。
如果融合后的手势类别为有效手势类别(五指、单指、拳头),以融合后的手势类别为C,其得票数为W,则为手势类别为C的手势识别结果i重新赋予权重,新的权重为初始的权重wi在W中的占比,即新的权重通过如下公式计算。
wi=wi/W
则,最终的手势交互点三维坐标P是手势类别为C的手势识别结果中的手势交互点三维坐标的加权和,即通过如下公式确定最终的手势交互点三维坐标。
综上所述,针对手势融合过程,MCU用于执行:
获取多个TOF相机对应的初始权重;其中,初始权重用于反映基于多个TOF相机采集的图像数据进行手势识别的可信度;根据获取到的初始权重和多个手势识别结果包括的手势类别,对划分的多个手势类别进行投票;将得票数最高的手势类别确定为融合后的手势类别;响应于融合后的手势类别为有效手势类别,在多个手势识别结果中筛选目标手势识别结果,并更新目标手势识别结果对应的初始权重;最终,根据目标手势识别结果的变换后的手势交互点三维坐标、更新后的权重,确定融合后的手势交互点三维坐标。
可选地,本申请实施例按照如下方式确定手势类别的初始权重。即,MCU还用于执行:对于任一个手势识别结果,响应于该手势识别结果包括的手势类别与融合后的手势类别一致,将该手势识别结果确定为目标手势识别结果;将目标手势识别结果对应的初始权重与目标得票数之间的比值,作为更新后的权重;其中,目标得票数与融合后的手势类别对应。
本申请实施例提供的手势交互系统不但实现了硬件化加速,而且通过新的图像存储与表示形式降低了图像的数据量,另外,通过手势识别融合有效提高了手势识别的精准性。综上所述,本方案能够有效缓解手势交互时存在的延迟和卡顿现象,而且确保了手势交互的精准性,大大提高了用户的交互体验效果。
图4是本申请实施例提供的一种手势交互方法的流程图,应用于图1所示的手势交互系统。参见图4,本申请实施例提供的方法流程包括:
401、基于多个图像传感器,分别对手势交互区域进行手部图像采集,得到多路图像数据。
402、分别对多路图像数据进行手势识别,得到用户在当前时刻的多个手势识别结果。
403、对多个手势识别结果进行融合,得到融合后的手势识别结果。
404、根据融合后的手势识别结果,渲染下一时刻应呈现的交互内容。
本申请实施例提供的手势交互方法,由于手势识别过程在DSP这样的下位机中运行,仅传输少量数据(比如手势识别结果)至上位机,因此上位机的所有运算资源可全部用于内容渲染。所以,该种手势交互的硬件化方案不仅可节约上位机运算资源,而且可降低因数据传输带来的延迟;换言之,该系统能够有效缓解手势交互时存在的延迟和卡顿现象,大大提高了用户的交互体验效果。另外,通过手势识别融合有效提高了手势识别的精准性。
可选地,该方法还包括:
向所述多个图像传感器分别发送曝光控制信号,所述曝光控制信号用于控制所述多个图像传感器依次曝光。
可选地,所述图像数据包括灰度图和深度图;所述对所述图像数据进行手势识别的过程,包括:
将所述灰度图转换为二值图像;
对于所述二值图像中的任一个像素点,响应于所述像素点的像素值为最小值,将所述像素点的像素值存储为占用一个比特位的第一数值;
响应于所述像素点的像素值为最大值,将所述像素点的像素值存储为占用一个比特位的第二数值;
对采用新存储形式存储的二值图像依次执行形态学操作和轮廓检测,得到手部区域轮廓;
根据所述手部区域轮廓定位掌心,并根据掌心定位结果确定手势类别;
定位手势交互点二维坐标;根据所述深度图和所述手势交互点二维坐标,获取手势交互点三维坐标。
可选地,所述形态学操作为图像腐蚀操作,所述腐蚀操作的核为N*N矩阵;其中,N=2a+1,a的取值不小于1;
所述对采用新存储形式存储的二值图像执行形态学操作,包括:
对于所述二值图像中第i行的第j个字节,获取所述二值图像中第i+m行的第j个字节,得到多个原始字节;其中,所述第j个字节由连续多个像素点的像素值组成;m为整数,m的取值为{a,...,2,1,0,-1,-2,...,-a};i和j均为正整数;
分别对所述多个原始字节执行n位的位移操作,得到多个位移后字节;
其中,n为整数,n的取值为{a,...,-2,-1,0,1,2,...,a};响应于n>0,表示右移n位;响应于n<0,表示左移-n位;响应于n=0,表示不进行位移;
对所述多个原始字节和所述多个位移后字节进行按位与操作,得到腐蚀图像中第i行第j个字节所代表的连续多个像素点的像素值。
可选地,该方法还包括:
响应于所述第j个字节为所述第i行的非首字节,通过按位或操作,分别为左移后形成的空位补前一字节的最高位;
响应于所述第j个字节为所述第i行的非尾字节,通过按位或操作,分别为右移后形成的空位补后一字节的最低位。
可选地,所述对采用新存储形式存储的二值图像执行轮廓检测,包括:
对于经过形态学操作后的图像中的第j行,将所述第j行中连续多个像素点的像素值组成待处理字节;其中,j为正整数;
对所述待处理字节执行左移一位的位移操作,得到第一中间字节;
对所述第一中间字节执行按位取反操作,得到第二中间字节;
将所述待处理字节和所述第二中间字节进行按位与操作,得到目标字节;
将所述目标字节中指定比特位对应的像素点,作为所述连续多个像素点中的边界起点;其中,所述指定比特位为首个取值为第二数值的比特位;
根据确定的边界起点,获取所述手部区域轮廓。
可选地,该方法还包括:
响应于所述待处理字节为所述第j行的非首字节,通过按位或操作,为左移后形成的空位补前一字节的最高位,得到所述第一中间字节;
响应于所述待处理字节为所述第j行的非尾字节,通过按位或操作,为右移后形成的空位补后一字节的最低位,得到所述第一中间字节。
可选地,所述根据所述手部区域轮廓定位掌心,包括:
根据所述手部区域轮廓,确定初始掌心位置;
根据所述初始掌心位置和所述手部区域轮廓上的目标位置,确定所述初始掌心位置到所述手部区域轮廓的距离求解表达式;其中,所述目标位置为所述手部区域轮廓上距离所述初始掌心位置最近的位置;
分别在水平方向和竖直方向上对所述距离求解表达式求取偏导数;
以梯度上升法作为指导,根据得到的求导结果确定所述初始掌心位置的坐标求解表达式;
重复执行上述确定距离求解表达式、求取偏导数和确定坐标求解表达式的步骤,直至得到的距离最大值连续多个周期保持一致;
响应于所述距离最大值大于手掌最小宽度,将所述距离最大值对应的掌心位置坐标,作为所述掌心定位结果。
可选地,所述根据所述手部区域轮廓,确定初始掌心位置,包括:
获取所述手部区域轮廓的最小外接矩形;
根据所述最小外接矩形的宽度,确定所述手掌最小宽度;
按照从上至下的顺序遍历手部区域的每一行,确定每一行中最长连续前景点的长度、起点像素、终点像素和截止当前为止连续前景点的长度最大值;
响应于连续多行的长度最大值保持一致,根据所述长度最大值对应行的起点像素和终点像素,确定所述初始掌心位置。
可选地,所述对所述多个手势识别结果进行融合,得到融合后的手势识别结果,包括:
确定每个手势识别结果对应的坐标系变换矩阵;
对于任一个手势识别结果,根据所述手势识别结果对应的坐标系变换矩阵,对所述手势识别结果包括的手势交互点三维坐标进行坐标系变换,得到变换后的手势交互点三维坐标;
获取所述多个图像传感器对应的初始权重;其中,所述初始权重用于反映基于所述多个图像传感器采集的图像数据进行手势识别的可信度;
根据获取到的初始权重和所述多个手势识别结果包括的手势类别,对划分的多个手势类别进行投票;
将得票数最高的手势类别确定为融合后的手势类别;
响应于所述融合后的手势类别为有效手势类别,在所述多个手势识别结果中筛选目标手势识别结果,并更新所述目标手势识别结果对应的初始权重;
根据所述目标手势识别结果的变换后的手势交互点三维坐标、更新后的权重,确定融合后的手势交互点三维坐标。
可选地,所述在所述多个手势识别结果中筛选目标手势识别结果,并更新所述目标手势识别结果对应的初始权重,包括:
对于任一个手势识别结果,响应于所述手势识别结果包括的手势类别与所述融合后的手势类别一致,将所述手势识别结果确定为所述目标手势识别结果;
将所述目标手势识别结果对应的初始权重与目标得票数之间的比值,作为所述更新后的权重;
其中,所述目标得票数与所述融合后的手势类别对应。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由VR/AR设备中的处理器执行以完成上述实施例中的手势交互方法。例如,计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、光盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机程序代码,该计算机程序代码存储在计算机可读存储介质中,VR/AR设备的处理器从计算机可读存储介质读取该计算机程序代码,处理器执行该计算机程序代码,使得该VR/AR设备执行上述手势交互方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种手势交互系统,其特征在于,所述手势交互系统包括:多个图像传感器、多个数字信号处理器DSP、微控制单元MCU和上位机;
其中,所述多个图像传感器中的每个图像传感器分别与一个DSP电性相连;所述多个DSP均与所述MCU电性相连,所述上位机与所述MCU电性相连;
所述多个图像传感器,用于分别对手势交互区域进行手部图像采集,并将采集到的图像数据发送给与其相连的DSP;
所述多个DSP,用于分别对接收到的图像数据进行手势识别,得到当前时刻的手势识别结果,并将所述手势识别结果发送给所述MCU;
所述MCU,用于对接收到的多个手势识别结果进行融合,得到融合后的手势识别结果;
所述上位机,用于根据所述融合后的手势识别结果,渲染下一时刻应呈现的交互内容。
2.根据权利要求1所述的系统,其特征在于,所述图像数据包括灰度图和深度图;所述多个DSP,用于分别执行:
将所述灰度图转换为二值图像;
对于所述二值图像中的任一个像素点,响应于所述像素点的像素值为最小值,将所述像素点的像素值存储为占用一个比特位的第一数值;
响应于所述像素点的像素值为最大值,将所述像素点的像素值存储为占用一个比特位的第二数值;
对采用新存储形式存储的二值图像依次执行形态学操作和轮廓检测,得到手部区域轮廓;
根据所述手部区域轮廓定位掌心,并根据掌心定位结果确定手势类别;
定位手势交互点二维坐标;根据所述深度图和所述手势交互点二维坐标,获取手势交互点三维坐标。
3.根据权利要求2所述的系统,其特征在于,所述形态学操作为图像腐蚀操作,所述腐蚀操作的核为N*N矩阵;其中,N=2a+1,a的取值不小于1;
所述多个DSP,用于分别执行:
对于所述二值图像中第i行的第j个字节,获取所述二值图像中第i+m行的第j个字节,得到多个原始字节;其中,所述第j个字节由连续多个像素点的像素值组成;m为整数,m的取值为{a,...,2,1,0,-1,-2,...,-a};i和j均为正整数;
分别对所述多个原始字节执行n位的位移操作,得到多个位移后字节;
其中,n为整数,n的取值为{a,...,-2,-1,0,1,2,...,a};响应于n>0,表示右移n位;响应于n<0,表示左移-n位;响应于n=0,表示不进行位移;
对所述多个原始字节和所述多个位移后字节进行按位与操作,得到腐蚀图像中第i行第j个字节所代表的连续多个像素点的像素值。
4.根据权利要求3所述的系统,其特征在于,所述多个DSP,用于分别执行:
响应于所述第j个字节为所述第i行的非首字节,通过按位或操作,分别为左移后形成的空位补前一字节的最高位;
响应于所述第j个字节为所述第i行的非尾字节,通过按位或操作,分别为右移后形成的空位补后一字节的最低位。
5.根据权利要求2所述的系统,其特征在于,所述多个DSP,用于分别执行:
对于经过形态学操作后的图像中的第j行,将所述第j行中连续多个像素点的像素值组成待处理字节;其中,j为正整数;
对所述待处理字节执行左移一位的位移操作,得到第一中间字节;
对所述第一中间字节执行按位取反操作,得到第二中间字节;
将所述待处理字节和所述第二中间字节进行按位与操作,得到目标字节;
将所述目标字节中指定比特位对应的像素点,作为所述连续多个像素点中的边界起点;其中,所述指定比特位为首个取值为第二数值的比特位;
根据确定的边界起点,获取所述手部区域轮廓。
6.根据权利要求5所述的系统,其特征在于,所述多个DSP,用于分别执行:
响应于所述待处理字节为所述第j行的非首字节,通过按位或操作,为左移后形成的空位补前一字节的最高位,得到所述第一中间字节;
响应于所述待处理字节为所述第j行的非尾字节,通过按位或操作,为右移后形成的空位补后一字节的最低位,得到所述第一中间字节。
7.根据权利要求2所述的系统,其特征在于,所述多个DSP,用于分别执行:
根据所述手部区域轮廓,确定初始掌心位置;
根据所述初始掌心位置和所述手部区域轮廓上的目标位置,确定所述初始掌心位置到所述手部区域轮廓的距离求解表达式;其中,所述目标位置为所述手部区域轮廓上距离所述初始掌心位置最近的位置;
分别在水平方向和竖直方向上对所述距离求解表达式求取偏导数;
以梯度上升法作为指导,根据得到的求导结果确定所述初始掌心位置的坐标求解表达式;
重复执行上述确定距离求解表达式、求取偏导数和确定坐标求解表达式的步骤,直至得到的距离最大值连续多个周期保持一致;
响应于所述距离最大值大于手掌最小宽度,将所述距离最大值对应的掌心位置坐标,作为所述掌心定位结果。
8.根据权利要求7所述的系统,其特征在于,所述多个DSP,用于分别执行:
获取所述手部区域轮廓的最小外接矩形;
根据所述最小外接矩形的宽度,确定所述手掌最小宽度;
按照从上至下的顺序遍历手部区域的每一行,确定每一行中最长连续前景点的长度、起点像素、终点像素和截止当前为止连续前景点的长度最大值;
响应于连续多行的长度最大值保持一致,根据所述长度最大值对应行的起点像素和终点像素,确定所述初始掌心位置。
9.根据权利要求1或2所述的系统,其特征在于,所述手势识别结果包括手势类别和手势交互点三维坐标;所述MCU,用于执行:
确定每个手势识别结果对应的坐标系变换矩阵;
对于任一个手势识别结果,根据所述手势识别结果对应的坐标系变换矩阵,对所述手势识别结果包括的手势交互点三维坐标进行坐标系变换,得到变换后的手势交互点三维坐标;
获取所述多个图像传感器对应的初始权重;其中,所述初始权重用于反映基于所述多个图像传感器采集的图像数据进行手势识别的可信度;
根据获取到的初始权重和所述多个手势识别结果包括的手势类别,对划分的多个手势类别进行投票;
将得票数最高的手势类别确定为融合后的手势类别;
响应于所述融合后的手势类别为有效手势类别,在所述多个手势识别结果中筛选目标手势识别结果,并更新所述目标手势识别结果对应的初始权重;
根据所述目标手势识别结果的变换后的手势交互点三维坐标、更新后的权重,确定融合后的手势交互点三维坐标。
10.根据权利要求9所述的系统,其特征在于,所述MCU,用于执行:
对于任一个手势识别结果,响应于所述手势识别结果包括的手势类别与所述融合后的手势类别一致,将所述手势识别结果确定为所述目标手势识别结果;
将所述目标手势识别结果对应的初始权重与目标得票数之间的比值,作为所述更新后的权重;
其中,所述目标得票数与所述融合后的手势类别对应。
11.根据权利要求1所述的系统,其特征在于,所述MCU,还用于执行:
向所述多个图像传感器分别发送曝光控制信号,所述曝光控制信号用于控制所述多个图像传感器依次曝光。
12.一种手势交互方法,其特征在于,应用于权利要求1-11中任一项权利要求所述的手势交互系统;所述方法包括:
基于多个图像传感器,分别对手势交互区域进行手部图像采集,得到多路图像数据;
分别对所述多路图像数据进行手势识别,得到用户在当前时刻的多个手势识别结果;
对所述多个手势识别结果进行融合,得到融合后的手势识别结果;
根据所述融合后的手势识别结果,渲染下一时刻应呈现的交互内容。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
向所述多个图像传感器分别发送曝光控制信号,所述曝光控制信号用于控制所述多个图像传感器依次曝光。
14.一种VR/AR设备,其特征在于,所述设备包括多个数字信号处理器DSP、微控制单元MCU和上位机;
其中,所述多个DSP中每个DSP分别与一个图像传感器电性相连;
所述多个DSP均与所述MCU电性相连,所述上位机与所述MCU电性相连;
所述多个DSP,用于在接收到与其相连的图像传感器发送的图像数据后,分别对接收到的图像数据进行手势识别,得到当前时刻的手势识别结果,并将所述手势识别结果发送给所述MCU;
其中,所述图像数据是相应的图像传感器通过对手势交互区域进行手部图像采集得到的;
所述MCU,用于对接收到的多个手势识别结果进行融合,得到融合后的手势识别结果;
所述上位机,用于根据融合后的手势识别结果,渲染下一时刻应呈现的交互内容。
15.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由VR/AR设备加载并执行以实现如权利要求12或13所述的手势交互方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310024649.6A CN116027902A (zh) | 2023-01-09 | 2023-01-09 | 手势交互系统、方法、vr/ar设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310024649.6A CN116027902A (zh) | 2023-01-09 | 2023-01-09 | 手势交互系统、方法、vr/ar设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116027902A true CN116027902A (zh) | 2023-04-28 |
Family
ID=86073642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310024649.6A Pending CN116027902A (zh) | 2023-01-09 | 2023-01-09 | 手势交互系统、方法、vr/ar设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116027902A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117806466A (zh) * | 2024-03-02 | 2024-04-02 | 良基(厦门)自动化设备有限公司 | 一种手势控制全自动洗碗机的控制方式 |
-
2023
- 2023-01-09 CN CN202310024649.6A patent/CN116027902A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117806466A (zh) * | 2024-03-02 | 2024-04-02 | 良基(厦门)自动化设备有限公司 | 一种手势控制全自动洗碗机的控制方式 |
CN117806466B (zh) * | 2024-03-02 | 2024-05-28 | 良基(厦门)自动化设备有限公司 | 一种手势控制全自动洗碗机的控制方式 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110992271B (zh) | 图像处理方法、路径规划方法、装置、设备及存储介质 | |
CN112287860B (zh) | 物体识别模型的训练方法及装置、物体识别方法及系统 | |
CN111062263B (zh) | 手部姿态估计的方法、设备、计算机设备和存储介质 | |
CN110569817B (zh) | 基于视觉实现手势识别的系统和方法 | |
CN109902702A (zh) | 目标检测的方法和装置 | |
CN113449573A (zh) | 一种动态手势识别方法及设备 | |
CN113095106A (zh) | 一种人体姿态估计方法、装置 | |
WO2023146241A1 (en) | System and method for generating a three-dimensional photographic image | |
KR102655999B1 (ko) | 스테레오 카메라를 이용한 인스턴스 객체별 거리값 검출 장치 및 방법 | |
CN107272899B (zh) | 一种基于动态手势的vr交互方法、装置及电子设备 | |
CN109902631B (zh) | 一种基于图像金字塔的快速人脸检测方法 | |
US20220351405A1 (en) | Pose determination method and device and non-transitory storage medium | |
CN112287859A (zh) | 物体识别方法、装置和系统,计算机可读存储介质 | |
CN114641799A (zh) | 对象检测设备、方法和系统 | |
CN116612468A (zh) | 基于多模态融合与深度注意力机制的三维目标检测方法 | |
CN115328319B (zh) | 一种基于轻量型手势识别的智能控制方法及装置 | |
CN116027902A (zh) | 手势交互系统、方法、vr/ar设备及存储介质 | |
CN112395962A (zh) | 数据增广方法及装置、物体识别方法及系统 | |
CN114581535B (zh) | 图像中用户骨关键点标注方法、装置、存储介质及设备 | |
CN116152334A (zh) | 图像处理方法及相关设备 | |
CN115984093A (zh) | 基于红外图像的深度估计方法、电子设备以及存储介质 | |
CN112115786B (zh) | 基于注意力U-net的单目视觉里程计方法 | |
CN116758277A (zh) | 一种目标检测方法、装置及计算机设备 | |
KR20230083212A (ko) | 객체 자세 추정 장치 및 방법 | |
CN118116033B (zh) | 基于改进YOLOv5网络的手势识别方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |