首页 / 专利库 / 显示技术 / 混合现实 / 用于立体视觉和跟踪的系统、方法和装置

用于立体视觉跟踪的系统、方法和装置

阅读:593发布:2020-05-13

专利汇可以提供用于立体视觉跟踪的系统、方法和装置专利检索,专利查询,专利分析的服务。并且一种用于利用多个耦合的相机和可选的 传感器 实现 立体视觉 和 跟踪 的系统、方法和装置。,下面是用于立体视觉跟踪的系统、方法和装置专利的具体信息内容。

1.一种用于获得立体视觉数据的立体视觉获取装置,所述立体视觉获取装置包括:
立体RGB相机;
深度传感器;以及
RGB-D融合模
其中:
所述立体RGB相机和所述深度传感器均被配置成提供对应于多个像素的像素数据,所述RGB-D融合模块被配置为组合来自所述立体RGB相机的RGB像素数据和来自所述深度传感器的深度信息像素数据,以形成立体视觉像素数据(SVPD),以及
所述RGB-D融合模块是在FPGA现场可编程阵列)中实现的。
2.根据权利要求1所述的装置,还包括去赛克模块,所述去马赛克模块被配置为执行包括以下操作的方法:
对于在B-G(R-G)位置的R(B)或在R-G(B-G)位置的R(B),对与围绕红色位置和蓝色位置的多个绿色像素相关联的RGB像素数据进行平均,以及
对于在B(R)位置的R(B),从所述RGB像素数据中减少绿色像素值的数量,以适合预定像素阵列(例如,5×5窗口)。
3.根据权利要求2所述的装置,其中:
所述立体RGB相机包括第一相机和第二相机,
所述第一相机和所述第二相机均与所述FPGA上的时钟相关联,并且
所述FPGA包括双时钟采样器,所述双时钟采样器用于使所述第一相机和右相机的时钟同步。
4.根据权利要求3所述的装置,还包括:
直方图模块,所述直方图模块包括亮度计算器,所述亮度计算器用于确定至少所述RGB像素数据的亮度平;以及
分类器,所述分类器用于根据所述亮度水平对所述RGB像素数据进行分类,其中,所述亮度水平作为反馈被传送到所述立体RGB相机。
5.根据权利要求4所述的装置,还包括白平衡模块,所述白平衡模块被配置为将平滑的GW(灰度世界)算法应用于所述RGB像素数据。
6.根据上述权利要求中的任一项所述的装置,还包括:
处理器;以及
生物传感器,所述生物传感器被配置为提供生物数据,
其中:
所述生物传感器是从包括以下项的组中选择的:EEG传感器、心率传感器、饱和度传感器、EKG传感器、或EMG传感器、及其组合,
所述处理器被配置成处理所述生物数据以形成多个子特征,
所述子特征由所述FPGA组合,以形成特征。
7.根据上述权利要求中的任一项所述的装置,其中,所述FPGA被实现为包括片上系统(SoC)的现场可编程门阵列(FPGA),所述片上系统包括作为SOM(系统级模块)的操作系统
8.根据权利要求7所述的装置,还包括CPU SOM,所述CPU SOM用于执行来自所述FPGA的溢出操作。
9.根据上述权利要求中的任一项所述的装置,还包括:
处理器;以及
多个跟踪设备,所述多个跟踪设备用于跟踪对象的运动,
其中:
所述处理器被配置成处理来自所述跟踪设备的数据以形成多个子特征,并且所述子特征由所述FPGA组合,以形成用于跟踪所述对象的运动的特征。
10.根据权利要求9所述的装置,其中,所述跟踪设备包括多个可穿戴传感器。
11.根据权利要求9或10所述的装置,还包括:
处理器;以及
与对象进行通信的多模态交互设备,所述多模态交互设备包括所述多个跟踪设备和至少一个触觉反馈设备,
其中:
所述处理器被配置成处理来自所述跟踪设备的数据以形成多个跟踪子特征,并且所述子特征由所述FPGA组合,用于形成用于跟踪所述对象的运动的特征,并且用于通过所述至少一个触觉反馈设备提供反馈。
12.根据上述权利要求中的任一项所述的装置,还包括:
处理器,所述处理器被配置为响应于接收到从指令代码集中选择的相对应的指令,执行定义的一组操作;以及
存储器
其中:
所述定义的一组操作包括:
第一组代码,所述第一组代码用于操作所述RGB-D融合模块以使RGB像素数据和深度像素数据同步,并用于创建视差图;以及
第二组代码,所述第二组代码用于根据所述视差图和所述深度像素数据创建点
13.根据权利要求12所述的装置,其中,所述点云包括彩色点云。
14.根据权利要求1-11中的任一项所述的装置,还包括:
存储器;以及
处理器,所述处理器被配置为响应于接收到从指令代码集中选择的相对应的指令而执行定义的一组操作,以用于执行在权利要求1-11中的任一项中所陈述的任何功能。
15.根据权利要求14所述的装置,其中,所述处理器被配置为根据一组代码来操作,所述一组代码选自用于根据W-均值过程对CFA(滤色器阵列)图像进行去噪处理的指令集。
16.根据权利要求14或15所述的装置,其中,所述计算设备包括第二组代码,所述第二组代码选自用于操作坏像素去除过程的指令集。
17.一种包括上述权利要求中的任一项所述的装置的系统,所述系统还包括用于显示立体视觉数据的显示器。
18.根据权利要求17所述的系统,还包括:
附着到用户的身体的物体;以及
惯性传感器,
其中
所述物体包括有源标志器,
来自所述物体的输入被处理以形成多个子特征,并且
所述子特征由所述FPGA组合以形成特征。
19.根据上述权利要求中的任一项所述的系统,还包括用于运行用户应用的处理器,其中,所述RGB-D融合模块还被配置为向所述用户应用输出彩色点云。
20.根据权利要求19所述的系统,其中:
所述处理器被配置成将SVPD传输到所述显示器,而不将所述SVPD传递到所述用户应用,并且
所述用户应用另外被配置成给所述显示器提供附加信息,由所述FPGA将所述附加信息和所述SVPD进行组合以输出到所述显示器。
21.根据权利要求19或20所述的系统,其中,所述生物传感器被配置成经由射频(RF)输出数据,并且其中:
所述系统还包括用于接收来自所述生物传感器的数据的RF接收器,并且
来自所述FPGA的所述特征被传送到所述用户应用。
22.根据权利要求17-21中任一项所述的系统,还包括触觉或触感反馈设备中的至少一种设备,所述设备被配置为根据所述用户应用提供的信息相应地提供触觉或触感反馈中的至少一种反馈。
23.一种立体视觉获取系统,包括:
第一多模态交互平台,所述第一多模态交互平台是可配置为与一个或更多个附加的第二多模态交互平台进行通信的;
深度相机
立体RGB相机;以及
RGB-D融合芯片;
其中:
所述立体RGB相机和所述深度相机均被配置成提供对应于多个像素的像素数据,所述RGB-D融合芯片包括处理器,所述处理器可操作来执行多个指令,以使所述芯片融合所述RGB像素数据和深度像素数据,从而形成立体视觉像素数据。
24.根据权利要求23所述的系统,其中,所述深度相机被配置为根据TOF(飞行时间)来提供深度像素数据。
25.根据权利要求23或24所述的系统,其中,所述立体相机被配置成从至少一个第一传感器和至少一个第二传感器提供SVPD。
26.根据权利要求23-25中的任一项所述的系统,其中,所述RGB-D融合芯片被配置为对SVPD和深度像素数据中的至少一者进行预处理,以便形成具有与其相关联的RGB像素数据的3D点云。
27.根据权利要求26所述的系统,其中,所述融合芯片还被配置成形成所述3D点云,以用于通过至少所述第一多模型交互平台跟踪身体的至少一部分。
28.根据权利要求23-27中的任一项所述的系统,还包括显示器和可穿戴触觉设备中的至少一者,其中,至少所述第一多模态交互平台被配置为向所述显示器和所述触觉设备中的至少一者输出数据。
29.根据权利要求23-28中的任一项所述的系统,还包括一个或更多个交互式物体或工具,所述一个或更多个交互式物体或工具被配置为执行以下中的至少一项:给出反馈、接收反馈、和接收来自所述多模态交互平台中的至少一个的指令。
30.根据权利要求23-29中的任一项所述的系统,还包括一个或更多个传感器,所述一个或更多个传感器被配置为与所述多模态交互平台中的至少一个进行通信。
31.根据权利要求30所述的系统,其中,所述一个或更多个传感器包括以下中的至少一个:
立体视觉AR(增强现实)部件,其被配置为根据用户的跟踪数据以及从所述第一多模态交互平台和第二附加多模态交互平台接收的数据中的至少一项来显示AR环境;
物体跟踪传感器;
面部检测传感器,所述面部检测传感器被配置为检测人脸或人脸的情绪;和无标志器跟踪传感器,其中,物体是在所述物体上没有放置附加的特定标志器的情况下被跟踪的。
32.一种多模型交互平台系统,包括:
多模态交互平台;
多个可穿戴传感器,所述多个可穿戴传感器均包括有源标志器,所述有源标志器被配置为提供用于被检测的有源信号
惯性传感器,所述惯性传感器被配置为提供包括定位和方位信息的惯性信号;
心率传感器和氧饱和度传感器中的至少一个,或其组合;
EEG传感器;以及
至少一个可穿戴触觉设备,所述至少一个可穿戴触觉设备包括触感反馈设备和反馈设备中的一个或更多个。
33.一种用于处理图像信息的方法,包括:
从立体相机接收SVPD;
对输入像素数据执行RGB预处理,以产生预处理后的RGB图像像素数据;
在所述立体相机关于自动增益和自动曝光算法中的至少一者的操作中使用所述RGB预处理后的图像像素数据;
校正所述SVPD,以控制由所述相机的透镜引起的伪像;以及
校准所述SVPD,以防止所述立体相机的透镜导致的所述立体像素输入数据的畸变。
34.根据权利要求33所述的方法,还包括对所述预处理后的RGB图像像素数据进行着色,并基于所着色的预处理后的RGB图像像素数据创建视差图。
35.根据权利要求33或34所述的方法,其中,校准包括将所述RGB像素图像数据与深度像素数据进行匹配。
36.根据权利要求33-35中的任一项所述的方法,其中,所述视差图是通过以下方式来创建的:
从所述立体像素输入数据、所述预处理后的RGB图像像素数据、和来自深度传感器的深度像素数据中的至少一项获得深度像素数据,并检查立体图像之间的差异。
37.根据权利要求36所述的方法,其中,所述视差图加上来自所述深度传感器的校准后的深度图形式的深度像素数据被组合用于所述点云计算。
38.一种用于对一个或更多个图像进行深度处理的图像深度处理方法,所述方法包括:
从TOF(飞行时间)相机接收图像的TOF图像数据;
根据所述TOF数据针对每个像素创建深度图或亮度水平中的至少一者;
将所述亮度水平馈送到低置信度像素去除过程中,所述低置信度像素去除过程包括:
比较每个像素报告的距离;
将所述每个像素的所述距离与所述每个像素提供的亮度关联起来,
当任何像素提供的亮度超出预定的可接受范围而使得不能精确地确定距离时去除所述任何像素;
处理深度信息以去除所述图像的运动模糊,其中,运动模糊是通过在图像的深度中去除在运动对象的边缘处的伪像而被去除的;以及
将时间或空间过滤器中的至少一者应用于所述图像数据。
39.一种立体图像处理方法,包括:
从第一RGB相机接收至少一幅图像的第一数据流,并且从第二RGB相机接收至少一幅图像的第二数据流;
同步器发送所述第一数据流和所述第二数据流;以及
使用所述帧同步器使来自所述第一数据流的第一图像帧和来自所述第二数据流的第二图像帧同步,使得所述第一图像和帧与所述第二图像帧之间的时间偏移基本上被消除。
40.根据权利要求39所述的方法,其中:
在向所述帧同步器发送所述第一数据流和所述第二数据流之前,对所述第一数据流和所述第二数据流进行采样,使得所述第一数据流和所述第二数据流中的每一个都与单个时钟同步;并且
检测哪个数据流领先于另外一个数据流,并引导领先的数据流至先进先出(FIFO),使得来自所述领先的流的数据被所述帧同步器保留,直到另外一个数据流到达所述帧同步器为止。
41.根据权利要求40所述的方法,还包括将所述第一数据流和所述第二数据流的帧数据序列化为字节序列。
42.根据权利要求39-41中的任一项所述的方法,还包括检测不可用的像素。
43.根据权利要求39-42中的任一项所述的方法,还包括根据所述第一数据流和所述第二数据流中的每一个构建一组颜色数据。
44.根据权利要求43所述的方法,还包括对所述第一数据流和所述第二数据流中的每一个进行颜色校正。
45.根据权利要求39-44中任一项所述的方法,还包括:
将所述第一数据流和所述第二数据流对应到CFA(滤色器阵列)彩色图像数据;
对所述CFA图像数据应用去噪过程,所述过程包括:
对四(4)种CFA颜色进行分组,以便为所述图像数据的每个像素制作4色像素;
将每个4色像素与相邻的4色像素进行比较;
根据每个近邻像素与中心4色像素的差异,赋予所述每个近邻像素权重;以及对于每种颜色,计算加权平均值以生成输出的4色像素。
46.根据权利要求45所述的方法,其中,所述去噪过程还包括根据曼哈顿距离执行距离计算,所述曼哈顿距离是在每个颜色组近邻和中心颜色组之间计算的。
47.根据权利要求45或46所述的方法,还包括在所述去噪过程之前应用坏像素去除算法。
48.一种根据上述权利要求中的任一项所述的装置,所述装置用于获得SVPD并跟踪用户,所述装置还包括:
体模型;以及
一个或更多个处理器,所述一个或更多个处理器具有在所述一个或更多个处理器上运行的计算机指令,所述计算机指令被配置成使得所述处理器:
根据概率拟合算法将来自所述深度传感器的数据点拟合到所述身体模型,所述概率拟合算法是按照根据人体解剖结构定义的至少一个约束来约束的,
将多个数据点识别为超级点,并为每个所述超级点分配额外的权重;其中:
用解剖结构的关节来识别多个所述数据点,
所述超级点是根据附着到身体的一个或更多个物体来定义的,
所述立体RGB相机和所述深度传感器中的每一者都被配置成提供作为多个像素的数据,
所述RGB-D融合模块被配置为将来自所述立体RGB相机的RGB数据和来自所述深度传感器的深度信息组合成SVPD,并且
所述深度传感器提供数据,以根据身体与所述深度传感器的距离来确定身体在空间中的三维位置。
49.根据权利要求48所述的装置,其中,附着到所述身体的所述一个或更多个物体包括被配置为提供可检测的信号的至少一个有源标志器和无源物体中的一个或更多个。
50.根据权利要求48或49所述的装置,其中,用人体的关节识别的所述数据点是根据作为估计值的先前确定的定位来识别的。
51.根据权利要求48-50中的任一项所述的装置,其中
所述身体模型包括模板,
所述模板包括根据作为顶点的关节层次结构的骨架和蒙皮的标准模型,以及根据所述模板对所述关节层次结构中的至少一个关节的定位进行首次确定。
52.一种包括上述权利要求中的任一项的所述装置的系统,所述系统可选地包括上述权利要求中的任一项所述的系统,所述系统还包括用于显示SVPD的显示器。
53.根据权利要求52所述的系统,还包括:
附着到用户的一个或更多个对象;以及
惯性传感器,
其中:
所述一个或更多个物体包括有源标志器,
所述计算机指令被配置成使所述处理器根据来自所述一个或更多个物体的输入形成多个子特征,并将所述子特征组合成特征。
54.根据上述权利要求中的任一项所述的系统,还包括触觉反馈设备和触感反馈设备中的至少一种反馈设备,所述至少一种反馈设备被配置为根据所述用户应用提供的信息来提供触觉和触感反馈中的至少一种反馈。
55.根据上述权利要求中的任一项所述的系统,其中,计算机指令包括使得所述处理器作为跟踪引擎执行的指令。
56.根据权利要求55所述的系统,其中,所述跟踪引擎被配置为跟踪对用户的身体的定位和对用户的一个或更多个身体部位的定位中的至少一个,所述一个或更多个身体部位包括但不限于手臂、腿、手、足、和头中的一个或更多个。
57.根据权利要求55或56所述的系统,其中,所述跟踪引擎被配置成将表示所述用户做出的物理动作的信号分解成表示一系列姿势的数据。
58.根据权利要求57所述的系统,其中,所述跟踪引擎被配置成经由分类器功能将表示物理动作的信号分解成表示一系列手势的数据。
59.根据上述权利要求中的任一项所述的系统,还包括多个模板,其中,所述计算机指令还被配置成使得所述处理器初始化所述多个模板中的模板。
60.根据权利要求59所述的系统,其中,所述模板的特征在于仅被配置为多个参数、仅被配置为多个特征、或两者兼有的人体的模型。
61.根据权利要求60所述的系统,其中,所述多个参数和/或特征包括骨架、以及一个或更多个关节。
62.根据权利要求60或61所述的系统,其中,所述计算机指令另外被配置成使得所述处理器利用所述多个参数和/或特征来帮助跟踪用户的运动。
63.根据上述权利要求中的任一项所述的系统,其中,所述计算机指令被配置成将所述传感器数据映射到GMM(高斯混合模型)上。
64.根据权利要求63所述的系统,其中,所述身体模型包括稀疏皮肤表示。
65.根据权利要求60-64中的任一项所述的系统,其中,所述计算机指令另外被配置成使得所述处理器抑制相对应的高斯。
66.根据权利要求65所述的系统,其中,数据被映射到GMM。
67.根据权利要求66所述的系统,其中,所述数据通过分类器被映射到所述GMM。
68.根据权利要求65-67中的任一项所述的系统,其中:
所述跟踪引擎包括模板引擎,所述模板引擎被配置为从模板数据库读取模板,并且所述计算机指令另外被配置成:
使得所述处理器作为GMM映射器来操作,并将所述模板发送到所述GMM映射器。
69.根据权利要求65-68中的任一项所述的系统,其中,所述计算机指令另外被配置成使得所述处理器作为点云分解器来操作,并且所述GMM映射器被配置成从所述点云分解器接收点云信息。

说明书全文

用于立体视觉跟踪的系统、方法和装置

[0001] 公开领域
[0002] 本公开涉及用于立体视觉和跟踪的系统、方法和装置,并且特别地,涉及包括多个图像传感器(例如,相机)以及(在一些实施例中)还包括对用户的至少部分进行跟踪的附加传感器的用于立体视觉的系统、方法和装置。
[0003] 公开背景
[0004] 立体相机提供立体视图,并且是众所周知的。例如,国际专利公开号WO2014154839被理解为描述了一种用于使用与跟踪对象(例如,人)的运动的深度传感器相结合的两个RGB相机来捕获立体数据的相机系统。系统的计算是由单独的计算机来执行的,这可能导致迟延。其他示例包括:
[0005] -Orbbec 3D(又被称为深圳Orbbec有限公司;https://orbbec3d.com/)的Persee产品将相机功能与ARM处理器组合在单个装置中。该装置包括单个RGB相机、深度传感器、红外接收端口和激光投影仪,以提供立体相机信息;
[0006] -国际专利公开号WO2016192437描述了一种系统,其中红外传感器数据与RGB数据组合以创建3D图像;以及
[0007] -Stereolabs公司的Zed产品(https://www.stereolabs.com/zed/specs/)提供了具有跟踪能的3D相机。
[0008] 公开内容的简要概述
[0009] 本公开的实施例涉及用于包括跟踪的立体视觉的系统、方法和装置,并且特别地,涉及包括多个图像传感器(例如,相机)以及(在一些实施例中)附加传感器的用于立体视觉的系统、方法和装置。
[0010] 根据至少一些实施例,提供了一种用于获得立体视觉数据的立体视觉获取装置,该立体视觉获取装置包括:立体RGB相机;深度传感器;以及RGB-D融合模,其中:所述立体RGB相机和所述深度传感器均被配置为提供对应于多个像素的像素数据,所述RGB-D融合模块被配置为组合来自所述立体RGB相机的RGB像素数据和来自所述深度传感器的深度信息像素数据,以形成立体视觉像素数据(SVPD),并且所述RGB-D融合模块是在FPGA现场可编程阵列中)实现的。
[0011] 可选地,该装置还包括去赛克(de-mosaicing)模块,去马赛克模块被配置为执行一种包括以下操作的方法:对于在B-G(R-G)位置(site)的R(B)或在R-G(B-G)位置的R(B),对与围绕红和蓝位置的多个绿色像素相关联的RGB像素数据进行平均,以及对于在B(R)位置的R(B),从该RGB像素数据中减少绿像素值的数量,以适合预定像素阵列(例如,5×5窗口)。
[0012] 可选地,所述立体RGB相机包括第一相机和第二相机,所述第一相机和所述第二相机均与所述FPGA上的时钟相关联,并且所述FPGA包括用于使所述第一相机和右相机的所述时钟同步的双时钟采样器。
[0013] 可选地,该装置还包括直方图模块,该直方图模块包括亮度计算器,所述亮度计算器用于确定至少所述RGB像素数据的亮度平;以及分类器,所述分类器用于根据所述亮度水平对所述RGB像素数据进行分类,其中,所述亮度水平作为反馈被传送到所述立体RGB相机。
[0014] 可选地,该装置还包括白平衡模块,该白平衡模块被配置为将平滑的GW(灰色世界)算法应用于所述RGB像素数据。
[0015] 可选地,该装置还包括处理器;以及被配置为提供生物数据的生物传感器,其中:所述生物传感器是从包括以下项的组中选择的:EEG传感器、心率传感器、饱和度传感器、EKG传感器、或EMG传感器、及其组合,所述处理器被配置为处理生物数据以形成多个子特征,由FPGA组合所述子特征以形成特征。
[0016] 可选地,所述FPGA被实现为包括片上系统(SoC)的现场可编程门阵列(FPGA),该片上系统包括作为SOM(系统级模块)的操作系统
[0017] 可选地,该装置还包括用于执行来自所述FPGA的溢出操作的CPU SOM。
[0018] 可选地,该装置还包括处理器;以及多个跟踪设备,所述多个跟踪设备用于跟踪对象的运动,其中:处理器被配置为处理来自跟踪设备的数据以形成多个子特征,并且所述子特征由所述FPGA组合以形成跟踪对象的运动的特征。
[0019] 可选地,跟踪设备包括多个可穿戴传感器。
[0020] 可选地,该装置还包括处理器;以及与对象通信的多模态交互设备,所述多模态交互设备包括所述多个跟踪设备和至少一个触觉(haptic)反馈设备,其中:处理器被配置为处理来自跟踪设备的数据以形成多个跟踪子特征,并且所述子特征由所述FPGA组合以形成跟踪对象的运动的特征并通过所述至少一个触觉反馈设备提供反馈。
[0021] 可选地,该装置还包括处理器以及存储器,该处理器被配置为响应于接收到从指令代码集中选择的相对应的指令,执行定义的一组操作;其中:所述定义的一组操作包括:第一组代码,该第一组代码用于操作所述RGB-D融合模块以使RGB像素数据和深度像素数据同步并用于创建视差图;以及第二组代码,该第二组代码用于根据所述视差图和所述深度像素数据创建点
[0022] 可选地,所述点云包括彩色点云。
[0023] 可选地,该装置还包括存储器;以及处理器,该处理器被配置为响应于接收到从指令代码集中选择的相对应的指令,执行定义的一组操作,以用于执行本文所述的任何功能。
[0024] 可选地,所述处理器被配置成根据从指令集中选择的一组代码来操作,以用于根据W-均值过程对CFA(滤色器阵列)图像进行去噪处理。
[0025] 可选地,所述计算设备包括从指令集中选择的第二组代码,以用于操作坏像素去除过程。
[0026] 根据至少一些实施例,提供了一种包括本文所述的装置的系统,该系统还包括用于显示立体视觉数据的显示器。
[0027] 可选地,该系统还包括附着到用户的身体的物体;以及惯性传感器,其中,所述物体包括有源标志器,来自所述物体的输入被处理以形成多个子特征,并且由FPGA组合所述子特征以形成特征。
[0028] 可选地,该系统还包括用于运行用户应用的处理器,其中,所述RGB-D融合模块还被配置为向所述用户应用输出彩色点云。
[0029] 可选地,所述处理器被配置成将SVPD传输到所述显示器,而不将SVPD传递到所述用户应用,并且所述用户应用另外被配置成给所述显示器提供附加信息,由所述FPGA组合该附加信息和所述SVPD以用于输出到所述显示器。
[0030] 可选地,所述生物传感器被配置成经由射频(RF)输出数据,并且其中:该系统还包括用于从所述生物传感器接收数据的RF接收器,并且来自所述FPGA的所述特征被传送到所述用户应用。
[0031] 可选地,该系统还包括触觉或触感(tactile)反馈设备中的至少一种设备,该设备被配置为根据所述用户应用提供的信息相应地提供触觉或触感反馈中的至少一种反馈。
[0032] 根据至少一些实施例,提供了一种立体视觉获取系统,该立体视觉获取系统包括:第一多模态交互平台,其可配置为与一个或更多个附加的第二多模态交互平台进行通信;
深度相机;立体RGB相机;和RGB-D融合芯片;其中:所述立体RGB相机和所述深度相机均被配置为提供对应于多个像素的像素数据,RGB-D融合芯片包括处理器,该处理器可操作来执行多个指令,以使芯片融合所述RGB像素数据和深度像素数据,从而形成立体视觉像素数据。
[0033] 可选地,深度相机被配置为根据TOF(飞行时间)来提供深度像素数据。
[0034] 可选地,立体相机被配置成从至少一个第一传感器和至少一个第二传感器提供SVPD。
[0035] 可选地,RGB-D融合芯片被配置为对SVPD和深度像素数据中的至少一项进行预处理,以便形成具有与其相关联的RGB像素数据的3D点云。
[0036] 可选地,融合芯片还被配置成形成3D点云,以用于通过至少第一多模型交互平台来跟踪身体的至少一部分。
[0037] 可选地,该系统还包括显示器和可穿戴触觉设备中的至少一个,其中,至少第一多模态交互平台被配置为向显示器和触觉设备中的至少一者输出数据。
[0038] 可选地,该系统还包括一个或更多个交互式物体或工具,该一个或更多个交互式物体或工具被配置为执行以下中的至少一项:给出反馈、接收反馈、和从多模态交互平台中的至少一个接收指令。
[0039] 可选地,该系统还包括一个或更多个传感器,该一个或更多个传感器被配置为与多模态交互平台中的至少一个进行通信。
[0040] 可选地,一个或更多个传感器包括以下至少一个:立体视觉AR(增强现实)部件,其被配置为根据对用户的跟踪数据和从第一多模态交互平台、和第二附加多模态交互平台接收的数据中的至少一者来显示AR环境;对象跟踪传感器;面部检测传感器,其被配置为检测人脸或人脸的情绪;以及无标志器跟踪传感器,其中对象是在对象上没有放置附加的特定标志器的情况下被跟踪的。
[0041] 根据至少一些实施例,提供了一种多模型交互平台系统,该多模型交互系统包括:多模态交互平台;多个可穿戴传感器,所述多个可穿戴传感器均包括有源标志器,该有源标志器被配置为提供用于被检测的有源信号;惯性传感器,其被配置为提供包括定位和方向信息的惯性信号;心率和氧饱和度传感器中的至少一个,或其组合;EEG传感器;以及至少一个可穿戴触觉设备,其包括触感反馈设备和力反馈设备中的一个或更多个。
[0042] 根据至少一些实施例,提供了一种用于处理图像信息的方法,该方法包括:从立体相机接收SVPD;对输入像素数据执行RGB预处理,以产生预处理后的RGB图像像素数据;在立体相机的关于自动增益和自动曝光算法中的至少一种算法的操作中使用RGB预处理后的图像像素数据;矫正(rectifying)SVPD,以便控制由相机的透镜(lens)引起的伪像;以及校准(calibrating)SVPD,以防止立体相机的透镜导致的立体像素输入数据的畸变。
[0043] 可选地,该方法还包括对预处理后的RGB图像像素数据进行着色,并基于着色的预处理后的RGB图像像素数据创建视差图。
[0044] 可选地,校准包括将RGB像素图像数据与深度像素数据进行匹配。
[0045] 可选地,通过以下步骤创建视差图:从立体像素输入数据、预处理后的RGB图像像素数据、和来自深度传感器的深度像素数据中的至少一者获得深度像素数据,并检查立体图像之间的差异。
[0046] 可选地,所述视差图加上来自深度传感器的校准后的深度图形式的深度像素数据被组合用于点云计算。
[0047] 根据至少一些实施例,提供了一种用于对一个或更多个图像进行深度处理的图像深度处理方法,该方法包括:从TOF相机接收图像的TOF(飞行时间)图像数据;创建关于TOF数据中的每个像素的深度图或亮度水平中的至少一个;将亮度水平馈送到低置信度像素去除过程中,包括:比较每个像素报告的距离;将所述每个像素的所述距离与所述每个像素提供的亮度相关联,当任何像素提供的亮度超出预定的可接受范围而使得距离不能被精确地确定时去除该像素;处理深度信息以去除图像的运动模糊,其中,运动模糊是通过在图像深度中去除运动对象的边缘处的伪像(artifacts)而被去除的;以及将时间或空间过滤器中的至少一者应用于图像数据。
[0048] 根据至少一些实施例,提供了一种立体图像处理方法,该方法包括:从第一RGB相机接收至少一幅图像的第一数据流,并且从第二RGB相机接收至少一幅图像的第二数据流;向同步器发送第一数据流和第二数据流;以及使用帧同步器使来自第一数据流的第一图像帧和来自第二数据流的第二图像帧同步,使得在第一图像和帧与第二图像帧之间的时间偏移基本上被消除。
[0049] 可选地,在将第一数据流和第二数据流发送到帧同步器之前,对第一数据流和第二数据流进行采样,使得第一数据流和第二数据流均与单个时钟同步;以及检测哪一个数据流领先于另一个数据流,并且引导领先的数据流至先进先出(FIFO),使得来自领先的流的数据被帧同步器保留,直到另一个数据流到达帧同步器为止。
[0050] 可选地,该方法还包括将第一数据流和第二数据流的帧数据序列化为字节序列。
[0051] 可选地,该方法还包括检测不可用的像素。
[0052] 可选地,该方法还包括根据第一数据流和第二数据流中的每一个数据流构建一组颜色数据。
[0053] 可选地,该方法还包括对第一数据流和第二数据流中的每一个数据流进行颜色校正。
[0054] 可选地,该方法还包括将第一数据流和第二数据流对应到CFA(滤色器阵列)彩色图像数据中;对CFA图像数据应用去噪过程,该过程包括:对四(4)种CFA颜色进行分组,以便为图像数据的每个像素制作4色像素;将每个4色像素与相邻的4色像素进行比较;根据每个相邻像素与中心4色像素的差异,赋予每个相邻像素权重;以及对于每种颜色,计算加权平均值以生成输出的4色像素。
[0055] 可选地,所述去噪过程还包括根据曼哈顿距离执行距离计算,曼哈顿距离是在每个颜色组近邻和中心颜色组之间计算的。
[0056] 可选地,该方法还包括在所述去噪过程之前应用坏像素去除算法。
[0057] 可选地,本文所述的装置能够获得SVPD并跟踪用户,其中,该装置还包括:身体模型;以及一个或更多个处理器,所述一个或更多个处理器具有在所述一个或更多个处理器上运行的计算机指令,所述计算机指令被配置成使得处理器来:根据概率拟合算法将来自深度传感器的数据点拟合到身体模型,按照根据人体解剖结构定义的至少一个约束来约束所述概率拟合算法,将多个数据点识别为超级点,并为每个所述超级点分配额外的权重;其中:用解剖结构的关节识别多个所述数据点,根据附着到身体的一个或更多个物体来定义所述超级点,所述立体RGB相机和所述深度传感器中的每一者被配置为提供作为多个像素的数据,所述RGB-D融合模块被配置为将来自所述立体RGB相机的RGB数据和来自所述深度传感器的深度信息组合成SVPD,并且深度传感器提供数据以根据身体与深度传感器的距离来确定身体在空间中的三维位置。
[0058] 可选地,附着到身体的所述一个或更多个物体包括被配置为提供可检测的信号的至少一个有源标志器和无源物体中的一个或更多个。
[0059] 可选地,用人体的关节识别的所述数据点是根据作为估计值的先前确定的定位来识别的。
[0060] 可选地,身体模型包括模板,所述模板包括根据作为顶点的关节的层次结构的骨架和蒙皮的标准模型,并且对所述关节的层次结构中的关节中的至少一个关节的定位的首次确定是根据所述模板进行的。
[0061] 根据至少一些实施例,提供了一种包括本文所述的装置的系统,该系统可选地包括如本文所述的系统的特征,还包括用于显示SVPD的显示器。
[0062] 可选地,该系统还包括附着到用户的一个或更多个物体;以及惯性传感器,其中,所述一个或更多个物体包括有源标志器,所述计算机指令被配置成使得处理器根据来自所述一个或更多个物体的输入形成多个子特征,并将所述子特征组合成特征。
[0063] 可选地,该系统还包括触觉反馈设备和触感反馈设备中的至少一种设备,该至少一种设备被配置为根据由所述用户应用提供的信息来提供触觉和触感反馈中的至少一种反馈。
[0064] 可选地,计算机指令包括使处理器作为跟踪引擎来执行的指令。
[0065] 可选地,跟踪引擎被配置为跟踪用户的身体的定位和用户的一个或更多个身体部位的定位中的至少一者,所述一个或更多个身体部位包括但不限于手臂、腿、手、足、和头中的一个或更多个。
[0066] 可选地,跟踪引擎被配置成将表示用户做出的物理动作的信号分解成表示一系列姿势的数据。
[0067] 可选地,跟踪引擎被配置成经由分类器功能将表示物理动作的信号分解成表示一系列姿势的数据。
[0068] 可选地,该系统还包括多个模板,其中,计算机指令还被配置成使得处理器初始化多个模板中的模板。可选地,所述模板的特征在于仅作为多个参数、仅作为多个特征、或两者兼有进行配置的人体的模型。
[0069] 可选地,多个参数和/或特征包括骨架以及一个或更多个关节。
[0070] 可选地,计算机指令另外被配置成使得处理器利用多个参数和/或特征来帮助跟踪用户的运动。
[0071] 可选地,计算机指令被配置成将传感器数据映射到GMM(高斯混合模型)上。
[0072] 可选地,身体模型包括稀疏皮肤表示。
[0073] 可选地,计算机指令另外被配置成使得处理器抑制相对应的高斯。
[0074] 可选地,数据被映射到GMM。
[0075] 可选地,由分类器将所述数据映射到所述GMM。
[0076] 可选地,跟踪引擎包括模板引擎,该模板引擎被配置为从模板数据库读取模板,并且计算机指令另外被配置为:使处理器作为GMM映射器来操作,并且将模板发送到GMM映射器。
[0077] 可选地,计算机指令另外被配置成使得处理器作为点云分解器来操作,并且GMM映射器被配置成从点云分解器接收点云信息。
[0078] 除非特别声明,本文使用的所有技术和科学术语具有与本公开所属领域的普通技术人员通常理解的相同意思。本文提供的材料、系统、装置、方法、和示例仅是示例性的,并不是为了限制。
[0079] 本公开的实现方式包括手动地、自动地、或其组合执行或完成任务、步骤、和功能。具体地,步骤可以通过硬件或通过操作系统上的软件固件的、和/或其组合来实现。例如,对于硬件,本公开的至少一些实施例的步骤可以被实现为芯片或电路(例如,ASIC)。对于软件,本公开的至少一些实施例的步骤可以被实现为由计算机(例如,处理器)使用操作系统执行的多个软件指令。因此,在任何情况下,本公开的至少一些实施例的方法的选定步骤可以由用于执行多个指令的处理器执行。
[0080] 被配置为执行(或导致被执行)某些公开的实施例的某些功能的软件(例如,应用程序、计算机指令、代码)也可以被称为用于执行该功能的“模块”,并且也可以被称为用于执行该功能的“处理器”。因此,根据一些实施例,处理器可以是硬件部件,或者根据一些实施例,处理器可以是是软件部件。
[0081] 此外,为此目的,在一些实施例中:处理器也可以被称为模块;在一些实施例中,处理器可以包括一个或更多个模块。在一些实施例中,模块可以包括计算机指令—其可以是一组指令、应用程序、软件—其可在计算设备(例如处理器)上操作,以使计算设备实施和/或完成一个或更多个特定功能。此外,与一些实施例一起使用的短语“抽象层”或“抽象接口”可以指计算机指令(可以是一组指令、应用程序、软件),其可在计算设备(如所指出的,例如处理器)上操作,以使计算设备实施(conduct)和/或完成(achieve)一个或更多个特定功能。抽象层也可以是实施和/或实现一个或更多个特定功能的电路(例如,见上述ANSIC)。因此,对于一些实施例和对应于这些实施例的权利要求,可以以多种方式(例如,抽象层、计算设备、处理器、模块、软件、应用程序、计算机指令等)来描述/主张所指出的特征/功能。
[0082] 某些实施例是关于“计算机”、“计算机网络”和/或“在计算机网络上运行的计算机”进行描述的。注意,任何以处理器(其可以被称为“数据处理器”;“预处理器”也可以称为“处理器”)和执行一个或更多个指令的能力为特征的设备可以被描述为计算机、计算设备和处理器(例如,见上文),包括但不限于个人计算机(PC)、服务器、蜂窝电话、IP电话、智能电话、PDA(个人数字助理)、瘦客户端(thin client)、移动通信设备、智能手表头戴式显示器或能够进行外部通信的其他可穿戴设备、虚拟或基于云的处理器、寻呼机、和/或类似设备。彼此通信的两个或更多个这类设备可以是“计算机网络”。
[0083] 附图简述
[0084] 本文仅以示例的方式参考附图描述了本公开的实施例。现在详细地具体参考附图,要强调的是,所示的细节是通过示例的方式且是出于对本文公开的发明的优选实施例的说明性讨论的目的,并为了提供被认为是对本文公开的发明的各种实施例的原理和概念方面的最有用和最容易理解的描述而呈现。
[0085] 图1示出了根据本公开的至少一些实施例的系统的非限制性示例;
[0086] 图2A、图2B和图2C示出了图1的系统的附加细节和实施例;
[0087] 图3示出了根据本公开的至少一些实施例的用于预处理的方法的非限制性示例;
[0088] 图4A和图4B示出了根据本公开的至少一些实施例的用于深度预处理的方法的非限制性示例;
[0089] 图5A-5D示出了根据本公开的至少一些实施例的用于FPGA(现场可编程门阵列)的数据处理流程的非限制性示例;
[0090] 图6A-6E示出了根据本公开的至少一些实施例的用于相机的硬件系统的非限制性示例;
[0091] 图7示出了根据本公开的至少一些实施例的用于立体处理的方法的非限制性示例;
[0092] 图8示出了根据本公开的至少一些实施例的MCU配置的非限制性示例;
[0093] 图9示出了根据本公开的至少一些实施例的相机的非限制性示例;
[0094] 图10示出了根据本公开的至少一些实施例的关于双时钟采样器功能的配置的非限制性示例;
[0095] 图11A和图11B示出了根据本公开的至少一些实施例的缓冲器配置的非限制性示例;
[0096] 图12示出了内部缓冲单元布置的非限制性示例:a)全局结构,b)用于缺陷像素检测的掩模,c)用于去马赛克任务的掩模;以及图12D,其示出了示例性状态机;
[0097] 图13A-131H示出了根据本公开的至少一些实施例的用于去马赛克的方法的非限制性示例;
[0098] 图14示出了根据本公开的至少一些实施例的用于白平衡校正的方法的非限制性示例;
[0099] 图15示出了根据本公开的至少一些实施例的用于执行直方图调整的方法的非限制性示例;
[0100] 图16示出了根据本公开的至少一些实施例的用于立体矫正(rectification)的说明性、示例性、非限制性过程;
[0101] 图17A示出了根据本公开的至少一些实施例的用于立体矫正的说明性、示例性、非限制性系统;
[0102] 图17B示出了根据本公开的至少一些实施例的与图17A的系统一起使用的说明性、示例性、非限制性映射器模块;
[0103] 图17C示出了根据本公开的至少一些实施例的与图17A的系统一起使用的说明性、示例性、非限制性存储器管理;
[0104] 图17D示出了图像的非限制性示例;
[0105] 图17E示出了该图像的存储器填充方案;
[0106] 图17F示出了根据本公开的至少一些实施例的与图17A的系统一起使用的非限制性、示例性有限状态机;
[0107] 图18A示出了根据本公开的至少一些实施例的说明性、示例性、非限制性视差图方法;
[0108] 图18B示出了根据本公开的至少一些实施例的用于计算视差图方法的成本的说明性、示例性、非限制性方法;
[0109] 图19A示出了关于“W-均值”算法的图像表示的示例;
[0110] 图19B示出了参数对“W-均值”权重的影响;
[0111] 图19C示出了出租车几何(taxicab geometry)与欧几里德(Euclidean)距离的对比:在出租车几何中,红色、黄色、和蓝色路径都具有最短长度|6|+|6|=12。在欧几里得几何中,绿线有长度,且是唯一的最短路径;
[0112] 图19D示出了非限制性示例中的W-均值算法;
[0113] 图20示出了在应用debayer之后,现有技术和“W-均值”算法的结果。图像尺寸(150×80)(缩放)。算法参数是:NLM(h=6,f=3,r=10),Vinh(p=8),PSWFA(n=5),W_means(h=16,σ=4),W_means_1stOrd(h=32,σ=2),W_means_thr(σ=12),W_means_thr_optdiv(σ=12);
[0114] 图21A示出了要被添加到图像流水线中的过滤器的所需端口,而图21B示出了像素流接口计时图(chronogram);
[0115] 图22A示出了Bailey和Jimmy方法的示意图,而图22B示出了其示例性实现方式;
[0116] 图23示出了示例性坏像素去除方法的FPGA实现图,其中每个黄色单元是VHDL部件;
[0117] 图24示出了用于坏像素去除的示例性、说明性非限制性数据流;
[0118] 图25示出了“W-均值”单元FPGA实现方式的示例性、说明性非限制性图;
[0119] 图26示出了用于“W-均值”算法的示例性、说明性非限制性生成内核部件图,其中红色注记是颜色组;
[0120] 图27示出了用于“W-均值”算法的示例性、说明性非限制性距离计算部件图,其中“ccg(i)”是具有颜色号i的中心颜色组,“cg(x)(i)”是具有颜色号i的近邻号x,以及“d(x)”是近邻号x的结果距离。i∈[1,4],x∈[1,8];
[0121] 图28示出了用于“W-均值”算法的示例性、说明性非限制性过滤器核心“thr_optdiv”部件图,其中“ccg(i)”是具有颜色号i的中心颜色组,“cg(x)(i)”是具有颜色号i的近邻号x,以及“fcg(i)”是具有颜色号i的中心颜色组。i∈[1,4],x∈[1,8];
[0122] 图29A示出了用于“W-均值”算法的示例性、说明性非限制性格式输出部件图,而图29B示出了用于在CFA(滤色器阵列)图像中的“W-均值”算法的示例性、说明性有效输出颜色组。在该示例中,CFA颜色为“GBRG”(第一图像行先绿色后蓝色,而第二行图像先红色后绿色);
[0123] 图30示出了用于坏像素去除和去噪的示例性、说明性非限制性数据流;
[0124] 图31A和图31B示出了坏像素和“W-均值”算法在相机模块上的最终测试结果。图像尺寸(150×150)(缩放);
[0125] 图32示出了根据至少一些实施例的用于颜色校正的非限制性示例性方法;
[0126] 图33A-33D示出了根据至少一些实施例的非限制性示例性FPGA配置;
[0127] 图34示出了根据本公开的至少一些实施例的用于跟踪用户的方法的非限制性示例,该方法可选地利用图1或图2的系统来执行;
[0128] 图35示出了根据本公开的至少一些实施例的跟踪引擎的非限制性示例,该跟踪引擎可选地与图1或图2的系统、或者图34的方法一起使用;
[0129] 图36示出了根据本公开的至少一些实施例的模板和模板引擎;
[0130] 图37示出了根据本公开的至少一些实施例的用于创建和使用模板的方法的非限制性示例。
[0131] 图38A至图38E示出了根据本公开的至少一些实施例的用于映射数据以跟踪用户的方法的非限制性示例;
[0132] 图39示出了根据本公开的至少一些实施例的用于应用形变模型的方法的非限制性示例;
[0133] 图40示出了根据本公开的至少一些实施例的用于姿态恢复的方法的非限制性示例。
[0134] 图41示出了根据本公开的至少一些实施例的用于背景物体的分开的方法的非限制性示例;
[0135] 图42示出了根据本公开的至少一些实施例的用于关节检测的方法的非限制性示例;
[0136] 图43和图44示出了根据本公开的至少一些实施例的用于将VR应用于医学治疗的两种非限制性示例方法;
[0137] 图45示出了根据至少一些实施例的用于应用VR来提高用户执行ADL(日常生活活动)的能力的非限制性示例方法;以及
[0138] 图46示出了根据至少一些实施例的用于应用AR来提高用户执行ADL(日常生活活动)的能力的非限制性示例方法。
[0139] 至少一些实施例的详细描述
[0140] 图1示出了根据本公开的至少一些实施例的系统的非限制性示例。如图所示,系统100以多模态交互平台102为特征,该多模态交互平台102可以如图所示被链接到一个或更多个附加的多模态交互平台104。多模态交互平台102又可以与深度传感器(例如,相机)
106、立体传感器(例如,相机)108、和RGB-D融合芯片110进行通信。深度相机106被配置为例如,根据相对于每个像素的TOF(飞行时间)提供深度传感器数据,深度传感器数据可以是像素数据。立体相机108被配置为从左(第一)和右(第二)相机传感器(未示出)提供立体相机数据(像素数据)。参考图3更详细地描述了RGB-D融合芯片110的功能,但是RGB-D融合芯片
110的功能优选地包括对立体相机数据和深度数据进行预处理,以形成具有与其相关联的RGB数据的3D点云。点云的形成使得它能够用于例如通过多模态交互平台102跟踪身体或其一部分(或用于其他类型的处理)。多模态交互平台102然后可以向视觉显示器(未示出)或可穿戴触觉设备114输出数据,例如用于提供触觉反馈。可以提供一个或更多个交互式物体或工具116来给出或接收反馈或来自多模态交互平台102的指令,或者两者兼有。
[0141] 多个附加功能可以通过本文描述的部件单独地或与一个或更多个附加传感器组合地来被提供,这些附加功能通过多模态交互平台102的输出来被提供。例如,立体视觉AR(增强现实)部件118可以被提供以根据对对象的跟踪数据和从多模态交互平台102接收的其他信息来显示AR环境。这种物体跟踪可以通过物体跟踪输出端120来实现。可以通过这样的输出端122提供对人脸的检测,可选地含有对情绪的检测。也可以提供无标志器跟踪124,其中物体是在该物体上没有放置附加的特定标志器的情况下被跟踪的。其他应用也是可能的。
[0142] 图2A示出了图1的系统的细节,该系统被示出为系统200。在该图中,多模态交互平台102被示为连接到多个不同的可穿戴传感器112,可穿戴传感器112包括但不限于:有源标志器202,例如,有源标志器202可以提供用于被检测的有源信号,诸如(例如)将被立体相机检测到的光信号;惯性传感器204,其用于提供包括定位和方位信息的惯性信号;心率/氧饱和度传感器206;EEG电极208;和/或一个或更多个附加传感器210。下面将更详细地描述一些可穿戴传感器112结合多模态交互平台102的操作。
[0143] 多模态交互平台102还被示为连接到多个不同的可穿戴触觉设备114,该多个不同的可穿戴触觉设备114包括触感反馈设备212和力反馈设备214中的一个或更多个。例如但不限于,这种可穿戴触觉设备114可以包括手套,该手套在手套的指尖上具有小电机以提供触感反馈,或者这种电机被连接到有源标志器。不希望局限于单个益处或局限于封闭的列表,在硬件平台上连接这样的传感器/反馈设备能够实现更好的数据同步,例如利用由相同的硬件时钟信号提供的定时,这对于分析是有用的。
[0144] 图2B示出了根据本公开的至少一些实施例的系统的非限制性示例。如图所示,系统220的特征在于相机222、深度传感器224和可选的音频传感器226。可选地,还包括附加传感器240。可选地,相机222和深度传感器224被组合在单个产品中(例如, 的产品,和/或如美国专利第8,379,101号中所述)。图1B示出了相机222和深度传感
器224的示例性实现方式。可选地,相机222和深度传感器224可以用Mindmaze SA的LYRA相机来实现。根据一些实施例,集成的产品(即,相机222和深度传感器224)使得相机222的方位能够相对于标准参照系来确定。可选地,三个或所有四个传感器(例如,多个传感器)被组合在单个产品中。
[0145] 在一些实施例中,传感器数据涉及传感器可感知的用户的物理动作(未示出)。例如,相机222可以收集用户的一个或更多个运动的视频数据,而深度传感器224可以提供数据以根据用户与深度传感器224的距离(或者更具体地,表示用户在空间中的三维体积的多个距离)来确定用户在空间中的三维位置。深度传感器224可以提供关于用户的定位的TOF(飞行时间)数据,当与来自相机222的视频数据结合时,TOF数据允许用户在环境中的三维地图(map)被确定。如下面更详细描述的,这种地图使得用户的物理动作能够被准确地确定,例如,关于用户做出的姿势。音频传感器226优选地收集关于用户发出的任何声音(sound)的音频数据,该任何声音可选地包括但不限于语音(speech)。附加传感器240可以收集关于用户的生物信号和/或可以收集附加信息以辅助深度传感器224。
[0146] 传感器数据由设备抽象层228收集,设备抽象层228优选地将传感器信号转换成传感器不可知的数据。设备抽象层228优选地操纵必要的预处理,使得如果不同的传感器被替换,则只需要对设备抽象层228进行改变;系统220的其余部分可以继续运行而没有变化(或者,在一些实施例中,至少没有实质性的变化)。设备抽象层228优选地还清理信号,例如,根据需要去除或至少降低噪声,并且设备抽象层228还可以用于标准化信号。设备抽象层228可以由计算设备250来操作,并且任何方法步骤可以由计算设备来执行(注意—即使未示出,本文公开的模块和接口都被假设为包含计算设备或者是通过计算设备来操作)。
[0147] 来自传感器的预处理的信号数据然后可以被传递到数据分析层230,数据分析层230优选地对传感器数据执行数据分析,以供应用层236消耗(根据一些实施例,“应用”意指与用户的任何类型的交互)。优选地,这种分析包括由跟踪引擎232执行的跟踪分析,跟踪引擎232可以跟踪用户的身体的定位,并且还可以跟踪用户的一个或更多个身体部位的定位,所述一个或更多个身体部位包括但不限于手臂、腿、手、足、头等中的一个或更多个。跟踪引擎232可以将用户做出的物理动作分解成一系列姿势。在这种情况下,“姿势”可以包括用户的多个身体部位所采取的动作,例如在摆动手臂的同时迈出一步,在向前弯曲的同时举起手臂,移动双臂,等等。这种分解和姿势识别也可以例如借助于基于由跟踪引擎232提供的关于跟踪各个身体部位的信息训练的分类器分开完成。跟踪引擎232可以根据用户每个肢体的存在或不存在来调整。例如,如果用户是失去一条腿的被截肢者,可以校准跟踪引擎
232以将这种损失考虑在内。这种校准可以自动进行,或者可以在与特定用户的会话开始时作为用户指导的校准过程的一部分进行。
[0148] 注意,尽管术语“分类器”贯穿全文使用,但是该术语还旨在包括“回归器(regressor)”。对于机器学习,这两个术语之间的区别在于,对于分类器,输出或目标变量采用类标签(也就是说,是分类的)。对于回归器,输出变量假设为连续变量(见例如http://scottge.net/2015/06/14/ml101-regression-vs-classification-vs-clustering-problems/)。
[0149] 对用户的身体和/或身体部位的跟踪,可选地被分解成一系列姿势,然后可以被提供给应用层236,应用层236将用户的动作解释为一种类型的反应和/或分析这些动作以确定一个或更多个动作参数。例如,但不限于,用户举起手臂所做出的物理动作是一种对于应用层236可以解释为举起虚拟对象的姿势。可选择地或附加地,这种物理动作可以由应用层236进行分析,以确定用户的运动范围或执行该动作的能力。
[0150] 为了帮助该跟踪过程,可选地,一个或更多个标志器238可以被放置在用户的身体上。标志器238可选地以能够被一个或更多个传感器(例如被相机222、深度传感器224、音频传感器226或附加传感器240)检测到的特性为特征。标志器238可以被相机222检测到,例如,作为光学标志器。虽然这种光学标志器可以是无源的或有源的,但是优选地,标志器238是例如以任何类型的发光标志器(诸如,例如LED灯)为特征的发光标志器的有源光学标志器。更优选地,每个标志器238或者可选择地每对标志器238可以包括指定颜色的LED灯,然后其将被放置在用户的身体的指定位置上。被放置在指定位置处的不同颜色的LED灯通过相机222向系统传送大量信息;如下面更详细描述的,这些信息可用于使跟踪过程高效和准确。附加地,或者可选地,一个或更多个惯性传感器可以作为一种类型的标志器238被添加到用户的手上,其可以以蓝牙或其他无线通信来被启用,使得信息将被发送到设备抽象层228。惯性传感器还可以与光学部件一起被集成在至少与手相关的标志器238中,或者甚至集成用于更多个这种标志器238。然后,可选地,信息可以被集成到跟踪过程中,例如,以提供对于特定身体部位的方位和位置的估计,例如作为先验限制。
[0151] 在一些实施例中,数据分析层230包括系统校准模块234。如下面更详细描述的,系统校准模块234被配置为相对于用户的定位来校准系统,以便系统有效地跟踪用户。系统校准模块234可以相对于应用层236的操作要求来执行对传感器的校准(但是,在一些实施例中—其可以包括该实施例—设备抽象层228被配置为执行传感器特定校准)。可选地,传感器可以被封装在执行其自身的传感器特定校准的设备(例如 Kinect)中。
[0152] 图2C示出了根据本公开的至少一些实施例的系统的非限制性示例。如图所示,系统252包括图2B的系统的部件,并且另外特征在于第二相机222B和第二深度传感器224B。作为系统252的使用的非限制性示例,它可以用于提供关于用户的运动的附加信息。例如,相机222B和深度传感器224B可以被附着到用户,例如但不限于用户穿戴的头盔。相机222A和深度传感器224A将被放置在用户外部,例如距用户很短的距离处。这种配置将使得用户的手和用户的身体能够被分开地跟踪。
[0153] 对于该实现方式,优选地选择相机222A和相机222B中的一个以及深度传感器224A和深度传感器224B中的一个来作为主设备,而另外一个是从设备。例如,优选地,相机222B和深度传感器224B将是主设备,使得控制将根据用户的运动来被提供。可选地,相机222B和深度传感器224B中仅一者被提供;如果这样,那么优选地至少提供深度传感器224B。
[0154] 另一个非限制性实现方式将使用系统252来扩展操作的范围。相机222A、222B和深度传感器224A、224B中的每一个都在视场和分辨率之间进行权衡:视场越大,度分辨率越低,反之亦然。例如,为了将操作的范围扩展到10米,必须提供被放在沿着该范围的各个点处的多个相机222和多个深度传感器224。因此,数据因此将具有必要的分辨率和视场。
[0155] 图3示出了根据本公开的至少一些实施例的用于预处理的方法的非限制性示例。如图所示,预处理开始于302处被提供为立体数据304的来自立体相机的输入。立体数据304经历RGB预处理306,其继而反馈至进行立体相机302的例如关于自动增益和自动曝光算法的操作,这将在下面更详细地描述。在308中,执行图像矫正,以控制由相机的透镜引起的伪像。在一些实施例中,无论是在制造时还是在使用时,都可以执行校准过程来防止透镜导致的图像数据的畸变。
[0156] 可选地,相机校准过程执行如下。为了执行所有这些步骤,需要相机的内部(intrinsic)参数和外部(extrinsic)参数以了解它们是如何彼此定位的,了解它们的畸变、它们的焦距等等。这些参数通常是从校准步骤中获得的。该校准步骤可选地包括用相机拍摄若干张棋盘图案的图片,且然后通过在图像内找到(已知尺寸的)图案来计算参数。
[0157] 从内部校准过程,每个相机的内部参数被提取,并且可以包括以下内容:
[0158] -焦距:以像素为单位,(fx,fy);
[0159] -主点(principal point):以像素为单位,(cx,cy);
[0160] -偏斜系数(skew coefficient):定义水平和垂直像素轴之间的角度αc;
[0161] -畸变系数:径向(k1,k2,k3,k4,k5,k6)和切向(p1,p2)畸变系数。
[0162] 然后,从外部校准过程,一个相机相对于另外一个相机的定位可以通过具有3×3旋转矩阵r和3×1平移矢量t来提取。
[0163] 在310中,经过预处理后的立体RGB图像然后可以被处理用于着色和用于创建视差图,这样然后可以被馈送到彩色点云形成过程312。312中的过程可以例如如在Colin Axel于2013年发表的论文“Fusion of Terrestrial LiDAR Point Clouds with Color Imagery”(可从http://www.cis.rit.edu/DocumentLibrary/admin/uploads/CIS000202.PDF获得)中所述地被执行。然而,可选地,对传感器定位和方位的确定可以被省略,因为立体相机和深度传感器都可以被校准,且在处理开始之前它们的定位和方位是已知的。此外,来自RGB相机的像素可以与来自深度传感器的像素进行匹配,提供额外的校准层。然后,在314中,彩色点云可以被输出为具有RGB数据的3D点云。
[0164] 返回到310,通过从立体RGB图像获得深度信息且然后检查立体图像之间的差异,在312创建视差图。为了更加稳健(robust)的数据集,在318中,视差图加上来自深度传感器的校准后的深度图形式的深度信息(如下面更详细描述的)被组合用于点云计算。
[0165] 来自深度传感器的深度信息可以如下被获得。在320中,从TOF(飞行时间)相机326获得深度和亮度数据。然后,深度和亮度数据可以沿着两条路径来处理,第一条路径用于TOF控制322,其继而反馈给TOF相机326,以根据亮度数据控制亮度和曝光时间。然后,通过应用工厂校准,用于TOF校准324的第二路径可以被用于校正TOF图像,第二条路径又将校正后的TOF深度数据反馈到深度图328中。相对于深度传感器本身的功能,可能需要校准TOF函数来确保深度传感器数据是正确的。这种校准提高了深度图328的准确度。如上所述,深度图328然后可以被馈送到318中,以提高创建彩色点云的准确度。
[0166] 图4A和图4B示出了根据本公开的至少一些实施例的用于深度预处理的方法的非限制性示例,其更详细地示出了图3的深度处理方法。相应地,如图4A中所示,深度预处理过程400开始于在402中从TOF相机获得图像(例如,像素)数据,图像数据可用于在406中创建深度图,但还可用于在414中确定关于每个像素的亮度水平。亮度水平然后可以被馈送到低置信度像素去除过程408中。该过程比较图像中像素报告的距离,并将该报告的距离与由该像素提供的亮度关联起来。可以根据可能例如受到使用或消费数据的应用影响的可接受的噪声水平预先决定关于过程408的设置。可接受的噪声水平越低,可用的数据量就越少。如果亮度在预定的可接受范围之外,则距离不能被精确地确定。优选地,如果这种情况发生,则像素被去除。
[0167] 将在下面更详细地描述允许自动曝光和自动增益调整的直方图过程416。
[0168] 在408中去除低置信度像素之后,深度处理可以继续在410中进行运动模糊去除,这可以在深度中去除移动物体的边缘处的伪像(即,去除所涉及的像素)。在412中可以执行时间和空间过滤器的应用,用于从深度去除噪声(空间)并随时间平均数据以去除噪声(时间)。空间过滤器通过减少像素的邻域之间的变化幅度(variance)来衰减噪声,从而产生更平滑的表面,但潜在地是以降低对比度为代价的。这种空间过滤器可以被实现为例如高斯过滤器,其使用高斯加权函数G(p-p′)来平均以像素p为中心的正方形邻域w内的像素p’。
[0169] 返回回到直方图过程416,如前所述,从直方图过程416获得的信息还可以被传递到曝光和亮度控制过程418,曝光和亮度控制过程418用于调整TOF相机402的功能。图4B示出了根据本公开的至少一些实施例的用于检测缺陷像素的示例性说明性非限制性方法,该方法可以例如与图4A的方法一起使用,例如,如前所述用于去除低置信度像素。过程450可以分为三个步骤:插值、缺陷筛选、候选筛选(例如)。
[0170] 当每个输入像素(452)到达在FPGA(现场可编程门阵列)的缓冲器中获得的移动窗口的中心时,其被检查以确定其先前是否(在存储器中)被存储为有缺陷的(454)。如果先前未被存储,则模块继续执行候选筛选过程(456),将在测试下的像素的值与周围近邻的平均值进行比较。如果超过某个阈值TH_NEIGH,被检查的像素则被怀疑为是有缺陷的,因此其数据(值、定位、近邻平均值)被存储用于进一步分析。
[0171] 存储的像素被检查以确定其先前是否被标记为有缺陷(458),先前被标记为有缺陷则通向插值(460)。如果先前没有被标记为有缺陷,则像素通过比较其实际值和先前值来经历缺陷筛选(462)。当与阈值TH_DIFF相比(以消除噪声影响),这些值之间的较大差异对应于像素有规律地变化,使得像素不再被怀疑为是有缺陷的。对于像素继续被怀疑为是有缺陷的每一时间段,时间常数递增。另一个阈值TH_FRAME被定义并用于比较时间常数的值。一旦像素值(不包括噪声)在一定数量的帧中保持不变,使得时间常数的值等于TH_FRAME的第二阈值,则该像素被确定为是有缺陷的。现在插值步骤变得有效,使得有缺陷的像素在其滑向第一个mask_2存储器单元之前被校正。可以通过用所研究像素的周围像素的平均值取代所研究像素的值来执行插值。可以在具有与掩模中心相同的滤色的像素中计算平均值。
这种过程的一个示例以下面的伪代码形式来演示:
[0172]
[0173]
[0174] 图5A-5D示出了根据本公开的至少一些实施例的用于FPGA的数据处理流程的非限制性示例。图5A示出了整体流程500,整体流程500包括从一个或更多个传感器504进行输入,以及向一个或更多个输出设备530输出。来自传感器504的输入可以通过FPGA过程502处理,并且然后被发送给用户应用506。用户应用506然后可以将输出返回到输出设备530。
[0175] 图5B描述了一些示例性输入传感器504的详细流程。因此,例如,如图所示,示例性输入传感器504包括立体相机508、ToF相机510、惯性传感器512和声音输入设备514中的一个或更多个。声音输入设备514的非限制性示例可以包括例如麦克。来自输入传感器504的输入可以由数据同步和缓冲器516接收,数据同步和缓冲器516如下面更详细描述的那样操作,以根据多个时钟同步各种数据流(包括但不限于在立体相机508的输入之间的以及在立体相机508和ToF相机510之间的数据流)。如下面更详细描述的,数据同步和缓冲器516还可以缓冲数据。就缓冲功能而言,数据同步和缓冲器516的缓冲器部分被配置成提供移动窗口。这允许在串行发送数据时对帧的一部分执行数据处理。
[0176] 可选地,一个或更多个输入传感器504是异步传感器。作为非限制性的示例,相机的异步传感器实现方式不以固定的帧速率发送数据。而是,这种传感器仅在检测到变化时发送数据,从而仅发送变化数据。
[0177] 然后,数据可以传递到RGB-D融合芯片过程518,参考图3描述了RGB-D融合芯片过程518的操作以及其针对深度和RGB处理对数据进行预处理。数据还可以传递给针对除立体相机508和ToF相机510之外的传感器的传感器特定预处理和控制520,以准备传感器数据供进一步使用(例如,关于数据的校准)。
[0178] 接下来,数据可以传递到特征特定内核520层,特征特定内核从RGB-D融合芯片过程518以及传感器特定预处理和控制520接收数据。特征特定内核520可以根据OPENCL标准来操作,OPENCL标准支持FPGA和操作用户应用506的计算设备(未示出)的CPU之间的通信。特征特定内核520还可以直接从数据同步和缓冲器516接收数据,例如,以控制传感器采集,并向数据同步和缓冲器516提供反馈,从而反馈给传感器504。
[0179] 根据一些实施例,特征特定内核520采用与要计算的感兴趣的特定特征相关的数据(例如先前描述的3D和RGB数据的点云),并计算与特征相关的子特征。这些特征的非限制性示例还可以包括如本文所述的过程的部分,例如去马赛克过程、颜色校正、白平衡等。每个特征特定内核520可以具有相关联的缓冲器(未示出),其优选地被设计为提供移动窗口。这允许在串行发送数据时对帧的一部分执行数据处理。
[0180] 接下来,子特征可以被传递到多个融合内核522,以将子特征融合到实际特征(例如先前描述的3D和RGB数据的点云)中。将在下面更详细地描述特定的特征特定内核520和融合内核522过程。融合内核522还可以向特征特定内核报告特定的特征特定内核520缺失信息,特征特定内核通过数据同步和缓冲器516向传感器504报告任何缺失信息。这些特征526然后可以被传递给用户应用506,用户应用506可以例如通过根据操作需要启用特定的融合内核522来请求特定的特征526。
[0181] 根据一些实施例,由特征特定内核520和融合内核522进行计算的优势之一是两者都是在FPGA(现场可编程阵列)中实现的,且因而可以非常快速地进行计算。特征特定内核522和融合内核524都可以由FPGA中的可被特别创建或调整以非常有效地对这些特定计算进行操作的专用元件来计算。尽管特征526可能需要密集的计算,但是将这种计算从操作用户应用506的计算设备(未示出)转移到FPGA过程502,显著提高了执行这种计算的速度和效率。
[0182] 可选地,特征特定内核520层和/或融合核522层可以被一个或更多个神经网络增强或替换。这种神经网络可以对传感器数据和/或对来自特征特定内核520层的特征数据进行训练。
[0183] 图5C示出了过程500在涉及附加的外部传感器504和输出设备530时的操作。来自附加的外部传感器504的输入可以被传输到数据同步和缓冲器516,并且然后被传输到原始(raw)数据处理器540,例如,以用于显示器或其他输出设备530,数据处理器540需要原始数据管道,同时可选地进行小的修改,以避免将所有数据发送到由较慢的计算设备操作的用户应用506(从而避免延迟)。原始处理器540还可以可选地从立体相机508(未示出)接收数据作为原始馈送。来自原始数据处理器540的传感器输入数据被发送到用户输出控制器542,以输出给用户。
[0184] 来自用户应用506的输出也可以被发送到用户输出控制器542,且然后被发送到输出设备530。输出设备530的非限制性示例包括触感反馈设备532、显示器534、声音输出设备536和可选的其他输出设备538。例如作为头戴式设备的一部分,显示器534可以向用户显示视觉信息,例如用于VR(虚拟现实)和AR(增强现实)应用。类似地,作为VR或AR应用的一部分,其他输出设备530可以向用户提供反馈,例如由触感反馈设备532提供的触感反馈。
[0185] 图5D示出了特征在于附加立体相机508B和附加ToF相机510B的过程550的操作。立体相机508B和ToF相机510B可以如前所述被安装在用户的头上。对于该实现方式,立体相机508B和ToF相机510B将是主设备,而立体相机508A和ToF相机510A将是从设备。所有设备将把它们的数据发送到数据同步和缓冲器516;然后该过程将如前所述继续进行。再次可选地,仅存在立体相机508B和ToF相机510B中的一个,在这种情况下,优选地存在ToF相机
510B。
[0186] 图6A-6E示出了根据本公开的至少一些实施例的用于相机的示例性、说明性、非限制性硬件系统。图6A示出了整个硬件系统600,其特征在于多个层602、604、606和608。层602以多个输入为特征。层604以FPGA硬件为特征,FPGA硬件可以可选地如参考图5所述的运行。层606涉及CPU硬件和相关辅助装置(accessories)。层608涉及主计算机。图6B更详细地示出了层602,层602包括诸如立体相机609的各种输入,立体相机609特征在于左相机610和右相机612,在该非限制性示例中,左相机610和右相机612的特征在于720个像素和60fps(每秒传输帧数)。左相机610和右相机612中的每一个都可以根据诸如MIPI(移动产业处理器接口)或并行通信的标准与FPGA(在下一层中示出)进行通信。
[0187] 深度传感器614被示为ToF相机,在该非限制性示例中,其被实现为以60fps操作的QVGA(四分之一视频图形阵列)相机,根据并行通信与FPGA进行通信。如图所示,音频输入可以从立体麦克风616获得。惯性传感器618可用于获得定位和方位数据。射频(RF)接收器620可用于收集来自其他外部传感器的数据,其他外部传感器可以是例如被用户穿戴的,如前所述的诸如生物传感器622和AM(有源标志器)传感器624。
[0188] 图6C示出了层604,层604包括可如参考图5所述操作的FPGA 626。FPGA 626可被实现为FPGA SoC SOM,FPGA SoC SOM是一种特征在于整个片上系统(SoC)的现场可编程门阵列(FPGA),该整个片上系统包括操作系统(因此它是“片上计算机”或SOM——系统级模块)。FPGA 626包括颜色预处理单元628,颜色预处理单元628接收来自立体相机609的数据,并如前所述,例如参考图3对数据进行预处理。深度预处理单元630从深度传感器614接收深度数据,并且如前所述,例如参考图3和图4对数据进行预处理。
[0189] 传感器配置646可选地从立体相机609和深度传感器614接收配置信息,例如,用于执行前面描述的图3的同步和校准。类似地,传感器配置646可选地从层602的剩余传感器接收配置信息(再次用于执行数据的同步和校准)以及还有传感器的状态和设置。同步是由数据同步模块648来控制的,数据同步模块648指示所有传感器何时捕获并传输数据,并且还为所获取的数据提供时间戳。路由模块632可以从立体麦克风616接收输入,以转换数据用于输出到USB 640或数据收发器644。
[0190] 惯性传感器618可以根据I2C(集成电路总线)协议与FPGA 626通信,因此FPGA 626包括I2C端口634。类似地,RF接收器620可以根据UART(通用异步收发传输器)协议与FPGA 626通信,因此FPGA 626特征在于UART端口636。对于输出,FPGA 626可以包括MIPI端口638、USB端口640、以太网端口642和数据收发器644中的一个和/或另一个。
[0191] 现在转向图6D,示出了层606的元件,所述元件可以包括CPU 650、以太网交换机652、和USB收发器654中的一个和/或另一个。如果FPGA 626暂时不能处理进一步的计算,或者不能执行其他功能,例如用于帮助用户应用更有效操作的功能(将由层608的主计算机运行),则CPU 650可以以其他方式处理由FPGA 626处理的计算。CPU 650可以被实现为SOM。到CPU 650的输入可选地包括CSI端口656(用于与FPGA 626的MIPI端口638通信);USB端口658(用于与FPGA 626的USB端口640通信);用于传输来自麦克风的声音的I2S 660;和用于向CPU处理器提供RF接收器数据的UART/SPI主端口662。
[0192] 同样如图6D中所示,蓝牙输出端666可用于与主计算机676的蓝牙端口678通信(如图6E的层608中所示)。类似地,WiFi输出端668可用于与主计算机机676的WiFi端口680通信。USB端口670可用于通过外部辅助装置的端口672与外部辅助装置通信。HDMI 674还可用于显示连接。以太网交换机652可以被配置成处理来自FPGA 626的以太网端口642、CPU 650的以太网端口664、以及主计算机676的以太网端口682中的任何一者或更多者的通信(如图6E的层608中所示)。在这些情况下,这种通信可以是双向的。类似地,USB收发器654处理来自FPGA 626的数据收发器644的通信,以及来自主计算机676的USB端口684的通信(如图6E的层608中所示)。在这两种情况下,这种通信可以是双向的。图6E示出了层608,其功能在前面已经被描述过。
[0193] 图7示出了根据本公开的至少一些实施例的用于立体处理的方法的非限制性示例,其功能可以被包含在图6的FPGA中。如图所示,过程700可以从如前所述的来自左RGB相机702和右RGB相机704的RGB数据的输入开始。这种输入可以被发送到帧同步器706,帧同步器706同步两个相机之间的帧以消除时移。这项任务可以以两个阶段执行。在第一阶段中,以与同一时钟使输入流同步的方式对它们进行采样。在第二阶段中,状态机检测哪个流相对于另外一个流领先,从而引导该流至先进先出(FIFO)。以这种方式,首先到达帧同步器706的流被延迟,直到另外一个数据流也到达帧同步器706为止。以下提供了其他细节。
[0194] 帧序列化器708将帧数据序列化为字节序列,并将序列化后的数据传递给立体检测模块710,立体检测模块710执行先前描述的“坏的”或不可用的像素检测。然后,该数据经历去马赛克过程716,去马赛克过程716将在下面更详细地描述,并且包括从先前获得的不完整的颜色样本构建完整的颜色数据集。此后,数据然后可以传递到CCM(颜色校正矩阵)过程718,这将在下面更详细地描述,CCM过程718校正颜色数据中的缺陷。此后,可以在白平衡过程722中针对白平衡来调整数据,这也将在下面更详细地描述,并且此后,可以进行帧反序列化过程724以恢复数据的帧结构。
[0195] 来自CCM过程718的数据然后可以被传递到直方图过程720,直方图过程720实现自动曝光和/或自动增益调整(见下文)。直方图数据可以被发送到MCU 710,MCU 710对直方图过程720执行任何必要的调整。MCU 710还向左RGB相机702和右RGB相机704发送反馈,以根据直方图数据调整它们的功能。
[0196] 如图7中所示,I2C 712可以被配置成控制相机的寄存器。I2C是本领域众所周知的多主机、多从机、分组交换、单端、串行计算机总线。
[0197] 图8示出了根据本公开的至少一些实施例的MCU(微控制器,即处理器)配置的非限制性示例。可选地,类似的配置可以用于CPU结构(附加地或可选择地)。如图所示,MCU 710(例如可以用图7的过程实现)以总线800为特征,总线800连接到主单元802和被示出为从单元804a至804e的多个从单元804,从单元804a至804e处理定制参数以与定制核心通信。定制核心可以例如用于RGB预处理,以配置和控制RGB预处理的各种部件和功能(如前所述)。MCU 710还可以被配置成控制如前面参考图5所述的每个内核。
[0198] 主单元802可以通过使用例如Lattice SemiconductorsTM产品来实现,在这种情况下,GPIO(通用输入输出)核心被实现用于从单元804。总线800可以根据Wishbone协议来实现,Wishbone协议是由OpenCores组织维护的开源互连架构(https://opencores.org/opencores,wishbone)。
[0199] 可配置参数可以通过硬件实现的处理器(例如作为主单元802的LatticeMico32TM,其基于32位哈佛RISC架构和开放总线WISHBONE)被发送到定制核心。对于MCU 710内的通信,这种通信总是发生在主接口和从接口之间。在一些实施例中,只有主单元802可以开始通信。主单元802通过总线800与从单元804握手,在这之后可以进行通信。
[0200] 图9示出了根据本公开的至少一些实施例的相机的示例的说明性方面,包括相机读出示意图900、帧有效区域902、水平消隐904、垂直消隐906和水平/垂直消隐908。
[0201] 图10示出了根据本公开的至少一些实施例的双时钟采样器功能的配置的非限制性示例。这些功能是期望的,因为需要同步(例如本文所述在右相机和左相机之间的)不同的时钟。为了执行时钟同步,提供了双时钟模块1000,在双时钟模块1000中,第一层寄存器(Xreg1(1002)和Yreg1(1008))使用其自己的时钟信号(clk_Rt)对来自右相机(未示出)的数据进行采样,而第二层寄存器(Xreg2(1004)和Yreg2(1010))使用左时钟(clk_Lt)对来自左相机(未示出)的数据进行采样。左时钟可以被用作双时钟模块1000的整体模块时钟。信号sel(1006)可选择地激活一对寄存器Xreg1-Yreg2或Yreg1-Xreg2。以这种方式,数据在被第二层采样之前有时间在第一层达到稳定状态。最后,当数据从多路复用器输出时,数据可以与第一左相机时钟同步,多路复用器的选择器被连接到来自1006的sel信号。
[0202] 图11A和图11B示出了根据本公开的至少一些实施例的非限制性缓冲器配置,其例如可以被用于满足如本文所述的FPGA和/或可选地各种模块的缓冲器要求。图11A示出了示例性缓冲器配置1100,该示例性缓冲器配置1100的特征在于以圆圈突出显示的生成int2_2_2(1102)、int2_2_3(1104)和int2_2_4(1106)信号的多路复用器(mux),这些信号是移动窗口单元的复制。当移动窗口的中心位于帧的边缘上时,帧中可能会缺外角(outside corner)信息。对于这个原因,可以选择复制最后两个环(ring)作为避免数据丢失的策略。
复制包括多次向移动窗口的一个以上的单元提供相同的信息,这可以通过使用如图11A中所示的多路复用器来实现。这种缓冲系统例如被用于去马赛克和检测模块。
[0203] 图11B示出了缓冲器模块1150内部结构的一部分——缓冲器模块的内部结构的第一行。掩模用寄存器1152实现,而该行的其余部分使用EBR 1154。
[0204] 移动窗口可以包括数据寄存器1152,数据寄存器1152允许移动掩模使得可同时访问所有单元。每行的剩余部分可以用EBR 1154来实现,EBR 1154充当FIFO寄存器。每个EBR 1154优选地包括18Kbit RAM。根据可用的存储器配置,该缓冲器能够处理最大宽度为2053个像素的帧(在配置1024×18中,每行采用2个EBR 1154)。为了保持原始同步,进入缓冲器中的FV和LV信号必须在输出端适当地被延迟。在一些实施例中,通过pix_in输入端第一个进入的像素在大约2个帧行之后从pix_TEST出来(见图12)。通过使用EBR 1154和控制状态机来实现FV和LV时移。控制状态机可以例如如图11A中所示来实现;并且可以被配置成控制连接到EBR 1154的读/写地址输入端的计数器。
[0205] 图12A-C示出了内部缓冲器单元排列的非限制性示例。图12A示出了全局结构1200,其中先前描述的EBR被实现为嵌入式块RAM 1202。通用掩模1204被示为在基于LUT4的单元中实现,基于LUT4的单元包括掩模单元(灰色)和不可从外部访问的单元(蓝色)。掩模单元的具体细节根据掩模的功能而变化。例如,图12B示出了关于有缺陷的像素检测的非限制性掩模1220,如前所述地执行对有缺陷的像素的检测。图12C示出了用于去马赛克任务的非限制性掩模1222,如前所述并如下所述地执行去马赛克任务。
[0206] 图12D示出了根据一些实施例的输出同步信号的示例性状态机。状态机1250和1252的图示出了同步信号的波形和控制器的逻辑状态。状态机1250涉及处理同步信号延迟的状态机的状态,而状态机1252涉及在时移EBR输出端的FV和LV信号。每个状态机都开始于W_H_FV,等待FV被生效(asserted)。一旦发生这种情况,状态就改变为“W_H_FVLV”,以等待FV和LV二者被生效。当FV和LV处于高电平状态时,计数器开始跟踪需要多少个时钟来延迟2个帧行的信号。这可以通过在W_DelFVCount2和W_DelFVCount2bis之间交替地跳转(使计数器增加)来实现。当输出两个整行(包括了水平消隐)时,计数器停止。时钟的数量可以被存储在寄存器MAXADDSYNC中。为了在新的帧开始时考虑可能的分辨率变化,状态机总是复位计数器以更新MAXADDSYNC。
[0207] 图13A-13H示出了根据本公开的至少一些实施例的与用于执行去马赛克任务的方法相关的非限制性示例,涉及从先前获得的不完整的颜色样本构建完整的颜色数据集。该模块使用移动窗口来执行其任务,并且配备有缓冲器模块,以协调被用来识别要应用于被测像素的公式的信号。具体而言,带来的情况是:
[0208] ·R像素:将计算G值和B值;
[0209] ·在包含R像素的行上的G像素:将计算R值和B值;
[0210] ·在包含B像素的行上的G像素:将计算R值和B值;
[0211] ·B像素:将计算G值和R值;
[0212] 去马赛克模块的操作(如下所述),但下面简要地给出了一组公式。图13A和图13B示出了在其上执行算法的掩模,掩模包括:在图13A中,在R(B)位置的G值或在R(B)位置的B(R)值;以及在图13B中,在G位置的R(B)。在图13A的R(B)位置的B(R)值:
[0213]
[0214] 在图13A的R(B)位置的G值:
[0215]
[0216] 在图13B的G位置的RG(BG)行中的R(B):
[0217]
[0218] 图13C更详细地示出了示例性实现方式中的去马赛克算法,以确定缺失的绿色值。这种实现方式通过将乘法和除法减少到只有移位操作来简化乘法和除法。去马赛克过程
1300从对像素分类1302开始。对于在R(红)和B(蓝)位置的G(绿)值(分类a),在1304中使用矩阵A。所有矩阵如图13D所示。被示出为矩阵B1和B2的卷积矩阵用于分类B(对于在B-G(R-G)位置的R(B)(矩阵B1)和对于在R-G(B-G)位置的R(B)(矩阵B2)),以在1306中取围绕红色和蓝色位置的绿色像素的平均值,并在1308中应用卷积矩阵B1和B2。对像素执行的方法如图13E所示。
[0219] 剩下的分类是分类C,其中在1310减少绿色像素值的数量以适合5x5窗口,并且在1312将矩阵C作为卷积矩阵应用。这种分类适用于在B(R)位置的R(B)这些剩余情况。对像素执行的方法如图13F所示。
[0220] 图13G示出了根据一些实施例的用于处理截断的在去马赛克过程中使用的方程的分子处获得的求和的检查阶段。当采用的(12位)像素是最大像素宽度时,值的范围可以从0上升到4095。为了避免在部分计算步骤中过早截断,可以仔细调整每一项的大小,使其包含有符号(signed)求和。然而,在某些条件下,在最终结果中可能会出现上溢或下溢,因此可能需要截断机制。
[0221] 过程1354的特征在于在最后计算阶段的截断机制:矢量1356,其包含对上述用于去马赛克的等式中的一项的分子执行的运算所产生的求和,其被右移。可以在正好在最终颜色值开始之前的最左边的位1358上执行控制。首先,确定该位是否都等于零,以确保结果在正确的范围内。由于2的补码惯例是用于负数表示,如果第一位为1,则最终值将设置为0(因为负颜色值没有意义)。另一方面,如果第一位为空(null),但在最终结果区域之前的其他位不全为零,则导致结果溢出。在这种情况下,最终结果将被截断为4095(如果使用12位格式)。最终颜色值被示出在1360中,而抑制位示被出在1362中。
[0222] 图13H示出了根据本公开的至少一些实施例的如上所述的用于RGB处理的DSP配置的非限制性示例。相应地,配置1370的特征在于DSP模块red-blue_sum 1372和4_sum 1374,red-blue_sum 1372和4_sum 1374是分别接受8项和4项的优化加法器。微小移动8位(1378a)允许获得在R和B像素位置的平均值。另一方面,通过green_mult-sum 1376获得G位置的平均值,green_mult-sum 1376对两个加法器的结果求和并将求和的结果乘以aav;移位(1378b)结束计算。根据所研究像素的颜色,sel信号1380表现出高或低逻辑状态,以选择与之比较的正确平均值。G位置的平均值比R/B位置的平均值需要更多的处理阶段周期。因此,为了同时获得两个结果,使用由1380控制的寄存器序列来延迟后一个平均值。
[0223] 图14示出了根据本公开的至少一些实施例的用于白平衡校正的方法的非限制性,示出了在白平衡模块中系数更新的状态机时序图。为此,白平衡算法,例如GW(灰色世界)算法,假设在正常的颜色平衡良好的照片中,所有颜色的平均值是中性灰色。因此,可以通过观察平均颜色并将其与灰色进行比较来估计光源的颜色投射(有关详细的解释和实现方式,请参见https://web.stanford.edu/~sujason/ColorBalancing/grayworld.html)。然而,虽然与其相关联的计算简单性是有吸引力的,但是本发明人发现GW算法没有提供足够稳健的结果,特别是在某些情况下证明结果是不稳定的。代替的是,选择了一种平滑的GW算法来实现白平衡模块。
[0224] 平滑的GW算法根据以下等式来实现的:
[0225]
[0226]
[0227]
[0228] 其中 以及
[0229] 每通道帧平均值可通过使用自累积配置中的DSP加法器(如图所示)获得,该加法器仅在同步信号(FV_whb和LV_whb)都处于高逻辑状态时才被激活,从而仅相加有效的像素值。获得的总和然后可以除以组成一帧的像素总数。系数nav和aav是通过在Scilab中运行名为nAvMinErr()的函数来选择的,该函数需要表示一个像素的位数和所用相机的分辨率。在校正后的通道上计算平均值,以便对由系数假设的最后值的效果有一个反馈。每个系数被初始化为1,以便直接估计真实的图像情形。状态机可以被实现为在垂直消隐时间间隔(在逻辑“0”处的FV_whb)期间调整乘法系数,在图14中描绘了其相关的时序图。
[0230] 系数的调整需要很少的时钟周期,按照该系数的调整,R和B通道相乘,并且在帧的末尾,正好在FV_whb进入逻辑“0”之后执行系数的调整。此处有两种状态相互跟随:AV_CALC导致平均值计算的最终确定,UPDATE允许更新两个系数。平均值B和R与G的比较可以并行完成。在剩余时间内,状态机保持在W_L_FV或W_H_FV状态,以便捕捉帧的结尾和开头。
[0231] 可以将R和B通道的相乘转换为定点约定(乘以2nres,nres为小数位数)来执行,然后通过去掉小数(右移)来选择整数部分。最小可能的步长增量可能是0.001,优选地达到并包括0.01)。使用nres=10,可获得的最接近的分辨率为0.000977。为了确保良好的范围,整数部分被固定为两位(3是可以表示的最大整数部分)。此外,由于调整既可能是增加也可能是减少,因此需要附加的位用于2的补码表示。因此ampl_step输入是10位宽。
[0232] 图15示出了根据本公开的至少一些实施例的用于执行直方图调整的方法的非限制性示例。这些功能被示为在MCU 710上执行,而直方图功能可以例如关于直方图720被提供的。如图所示,该过程可以由控件1500控制。如前所述,亮度可以由亮度计算模块1502计算。
[0233] 由于直方图被配置为显示这类亮度的一组范围,分类模块1504根据亮度的不同范围对每个像素进行分类。因此直方图应用包括根据每个像素的相关亮度范围对其进行分类。分类后的像素然后可以被存储在存储器1506中,可以从存储器1506中检索出用于其他过程的数据。为了允许FPGA(未示出)和MCU 710访问亮度数据,可以使用伪双端口RAM来更新亮度数据(未示出)。
[0234] 图16示出了根据本公开的至少一些实施例的用于立体矫正的说明性、示例性、非限制性过程。该方法可选地被实现为逆映射算法,逆映射算法针对矫正后的图像中的每个像素坐标计算在原始的、未矫正的和畸变图像中的相对应的像素坐标。假定r和c是矫正后的图像中的像素坐标。
[0235] 如图所示,方法1600开始于阶段1602,通过用内部参数(焦距和主点)和外部参数(旋转矩阵和平移矢量)计算的新的相机矩阵,来计算校正后的图像在对准的相机参考系上的投影。
[0236] 假定Pose是通过计算由内部相机参数构成的矩阵和由两个相机之间的旋转和平移矩阵构成的矩阵而得到的矩阵。所以投影是:
[0237]
[0238] 从这一点开始,r和c像素坐标在新的坐标系上的投影的像素坐标变为:
[0239]
[0240] 阶段1604包括用相机透镜的畸变参数来校正(correct)相机透镜的畸变。
[0241] 利用q2=r新2+c新2,用以下方式考虑径向畸变:
[0242]
[0243] 用以下方式考虑切向畸变:
[0244]
[0245] 最后,未畸变的像素坐标是径向和切向畸变计算的总和:
[0246]
[0247] 阶段1606包括使用KK相机矩阵将未畸变的像素坐标投影到真实的相机参考系上。该矩阵被定义如下:
[0248]
[0249] 所以最终的像素坐标是:
[0250]
[0251] 图17A示出了根据本公开的至少一些实施例的用于立体矫正的说明性、示例性、非限制性系统。系统1700的特征在于映射器1702、存储器管理单元1704、双线性插值器1706和有限状态机1708。
[0252] 映射器1702负责执行矫正算法并生成矫正后的像素坐标。在图17B中更详细地描述了映射器1702的操作。
[0253] 在一些实施例中,存储器管理单元1704的目的是首先存储输入的原始像素,且其次,输出对应于由映射器1702给出的矫正后的像素坐标的像素。在图17C中更详细地描述了存储器管理单元1704的操作。
[0254] 双线性插值器1706可用于计算4个像素的双线性插值。矫正后的像素坐标旨在于4个像素,因为它们是非整数。一种检索矫正后的像素的值的策略可以是在这4个像素中选择一个像素,但是为了尽可能精确,更好的策略是根据校正后的像素在这4个像素中的相对定位来计算这4个像素值的双线性插值。以下等式描述了该操作:
[0255]
[0256] 因此,该块(block)采用由矫正后的坐标指向的4个四像素值以及这些矫正后的坐标的小数部分作为输入,并将矫正后的像素外的像素值作为它们的双线性插值输出。
[0257] 有限状态机1708可用于根据例如施加的1280*720p@60fps协议(行有效信号和帧有效信号定义该协议)来控制块。例如,在序列开始时,状态机处于WAITING状态,并等待新的帧到达,即等待帧有效和行有效信号的上升。当这种情况发生时,状态机进入MMU_FILLING状态。在这种状态下,可以启用写控制器,并且可以使用输入像素以输入行有效信号的速率来填充第一缓冲器。当该缓冲器满了时,可以向状态机发出控制信号以进入COMPUTING状态,从而启用映射器,用于计算矫正后的像素坐标。当计算出第一矫正后的像素坐标时,状态机进入RECTIFYING状态,并启用Coord2memAddr_converter来开始读取过程。可能有两(2)个附加状态,LV_DELAYING和FV_DELAYING,它们可用于确保输出的帧与输入帧遵循相同的协议。
[0258] 图17B示出了根据本公开的至少一些实施例的与图17A的系统一起使用的说明性、示例性、非限制性映射器模块,并且图17F示出了根据本公开的至少一些实施例的与图17A的系统一起使用的非限制性、示例性有限状态机。
[0259] 关于图17B,映射器1702可能具有四个块:坐标生成器1720、投影1(被示为1722)、未畸变模块1724和投影2(被示为1726)。第一块,坐标生成器1720,对应于像素时钟速率(即,其可以被认为是计数器)从(1,1)(图像的左上角)到(720,1280)(图像的右下角)的行顺序生成所有可能的像素坐标。然后,这些坐标将是对应于图16的矫正算法的3个步骤的剩余3个块的输入。因此,该块可用于输出矫正后的像素坐标,并且根据矫正算法所需的所有演算,矫正后的像素坐标是非整数。因此,且为了便于双线性插值器的工作和Coord2memAddr_converter的工作,映射器将矫正后的像素坐标的整数部分(r_p_i和c_p_i)和小数部分(r_p_f和c_p_f)分离。
[0260] 图17C示出了根据本公开的至少一些实施例的与图17A的系统一起使用的说明性、示例性、非限制性存储器管理。如图所示,存储器管理单元1704可以执行两个过程(和至少一个),包括以像素时钟速率存储图像的输入像素,并且能够使这些存储的像素在任何时候对双线性插值器可用。因此,这两个过程可以被视为写入过程和读去过程。
[0261] 为了避免数据损坏(corruption),缓冲过程可以使用“乒乓”方案,以便当数据被写入一个缓冲器时,且数据可以被读入到另外一个缓冲器中。每次写入过程到达缓冲器的末尾时,都会发生缓冲器的改变。利用这种方案,只要接收到图像的第一像素(由FV和LV信号指示),该体系结构就开始填充一个缓冲器,并在开始矫正第一像素坐标之前等待该缓冲器被填满,并允许读取过程在该缓冲器中读取。因此,在体系结构启动时可能会增加小的延迟,但是后面可能能够以所请求的帧速率输出像素。
[0262] 由于矫正后的像素坐标是非整数,并且由于同时需要来自未矫正的图像的四个像素来内插一个矫正后的像素的强度(intensity),所以可以在每个缓冲器中使用四个双端口存储器,使得当被请求时可以输出处于相同时钟周期的四个像素。为了确保使以非整数像素坐标为目标的4个相邻像素置于不同的双端口存储器中,像素可以简单地按照行顺序周期性地被存储在4个存储器中。
[0263] 图17D和图17E示出了该如何操作的说明性示例。图17D示出了图像的非限制性示例。图17E示出了该图像的存储器填充方案。
[0264] 如果映射器请求的像素坐标对(couple)是图像上的绿色点(作为非限制性示例,在图17D和图17E中示出),则需要被内插的四个像素是像素p8、p9、p26和p27。这可以在同一时钟周期完成,因为它们都是在不同的存储器中:p8在m3中,p9在m0中,p26在m1中以及p27在m2中。在一些实施例中,这种填充存储器的过程是基于是6的倍数而不是4的倍数的图像的宽度来起作用的。由于1280是4的倍数,填充过程可以被用来“伪造”1290的图像宽度。这样,相邻像素可以总是位于不同的存储器中,并且对于读取过程,过程仍然是简单的。
[0265] 写入过程可以由写入控制器管理,写入控制器可以生成四个存储器的写入地址,并且周期性地激活它们的写使能信号,同时跳过需要与填充过程相配合(fit)的地址。然后,多路分解器可被用于将写使能信号重定向到右缓冲器(当前正处于写入过程中的缓冲器)。
[0266] 读取过程由Coord2memAddr_converter管理,Coord2memAddr_converter可用于将来自映射器的像素坐标对转换到用于双线性插值器(BI)的读存储器地址中——计算矫正后的像素值所需的四个像素值。周期性地存储像素有助于BI,因为根据像素坐标对,BI只需要计算线性地址,以及然后将其除以4(例如)。该演算描述如下:
[0267]
[0268]
[0269]
[0270]
[0271] 基于图17D和图17E,计算将如下进行:
[0272]
[0273] 如图所示,m3中的p8位于线性地址1,m0中的p9位于线性地址2,并且p26和p27分别位于m1和m2中的线性地址6。在这种体系结构中,使用填充过程,ImageWidth由填充后的图像的宽度(在本例中为1290)代替,使得写入控制器在写入过程期间跳过的存储器地址可能永远不会被到达(achieve)。
[0274] 而且,为了知道哪个存储器对应于哪个线性地址,可以对列号(column number)(c_p_i)计算模4运算。该信息还可以使路由器(Router)块受益,路由器块将来自m0、m1、m2和m3的输入像素值与它们在图像中的位置进行匹配(这对双线性插值可能很重要)。
[0275] 用上述等式计算的线性地址可以包括绝对地址(根据一些实施例)。实际上,在一些实施例中,这些过程工作的缓冲器大小与整个图像相同。然而,由于缓冲器大小可能包括若干行,所以Coord2memAddr_converter需要识别当前存储在缓冲器开头的行,以便线性绝对地址可以被处理成相对地址。这种信息可以由写入控制器通过first_row信号提供。因此,在一些实施例中,该过程应该通过例如用该信号减去分子来考虑到这一点。
[0276] 图18A示出了根据本公开的至少一些实施例的说明性、示例性、非限制性视差图方法。一旦立体图像被矫正,匹配就成为一维问题,并且可以计算视差图。相应地,以下是用于产生视差图的非限制性示例性过程。
[0277] 步骤1:匹配成本计算。在这一步骤中,通过产生成本来测量左图像和右图像中像素的相似性。下面描述各种非限制性、示例性算法。
[0278] 绝对差(AD)
[0279] AD(x,y,d)=|L(x,y)—R(x,d,y)|
[0280] 该算法可用于计算在同一行上的左图像中的像素和右图像中的像素的绝对差,以及在列索引中的偏移(对应于视差)。由于其简单性,它具有低复杂度,但是不能针对高度纹理化的图像产生平滑的视差图。
[0281] 平方差(SD)
[0282] SD(x,y,d)=(L(x,y)-R(x-d,y))2
[0283] 该算法根据其定义并根据其结果在速度和准确度方面与绝对差非常相似。它还可以用来计算左图像中的像素和右图像中的像素的强度差,并且然后将其提升到2的幂。AD和SD产生几乎相同的视差图。
[0284] 绝对差之和(SAD)
[0285]
[0286] 该算法在一个步骤中收集(如上)分类的步骤1和步骤2中的数据。实际上,该算法与AD相同,它在围绕感兴趣的像素周围的正方形窗口上操作。因此,它具有比AD更长的计算时间,但是它由于基于窗口的方法(起到过滤器的作用)而平滑了所产生的视差图,并且它通过更好地找到一些被遮挡的视差而降低了所产生的视差图的错误率。
[0287] 平方差之和(SSD)
[0288]
[0289] SSD对于SD就像SAD对于AD一样。同样地,SAD和SSD非常相似并且产生几乎相同的视差图。
[0290] 归一化互相关(NCC)
[0291]
[0292] 如果基于图像中像素的强度计算视差的算法被用于来自不具有相同增益和/或偏置的相机的图像,则产生的视差图可能是不正确的。因此,为了补偿增益和/或偏置的差异,可以应用归一化互相关算法。它对来自左图像和右图像的像素的强度进行归一化,从而不再考虑增益和/或偏置的差异。相应地,如果相机不具有相同的增益/偏置,则可能需要该算法,但是它会模糊不连续的区域,并且还需要相当多的计算资源来获得高准确度视差图。
[0293] Census变换(CT)
[0294] CT(x,y,d)=Hamming(CensusL(x,y),CensusR(x-d,y))
[0295] 其中:
[0296] Census(x,y)=bitstring(i,j)∈ω(I(i,j)≥I(x,y))
[0297] 该算法基于Census变换,并基于以感兴趣的像素为中心的正方形窗口计算位串,且其中该位串的每一位都是窗口内像素的强度和感兴趣的像素的强度之间的比较结果。执行并考虑在左图像中计算的Census变换和在右图像中计算的Census变换之间的汉明距离(Hamming distance),但是可能是有代价的。该算法对视差不连续是强健的,并能在物体边界处显示非常高的匹配质量。然而,在一些实施例中,它可能在具有重复结构的区域中产生不正确的匹配。
[0298] Mini-Census变换(miniCT)
[0299] 该算法与Census变换相同,但是该算法操作于不同的窗口。在Mini-Census变换中,位串不是在正方形窗口上计算的,而是在以感兴趣的像素为中心的十字(cross)上计算的。产生的位串为6位长(感兴趣的像素上方的2位,目标像素下方的2位,像素向左偏移1的1位,以及像素向右偏移1的1位)。该算法的应用的示例的十字被示出在图18B中,图18B示出了根据本公开的至少一些实施例的用于计算视差图方法的成本的说明性、示例性、非限制性方法。
[0300] 步骤2:成本聚合
[0301] 从步骤1,生成了3-D成本图。实际上,对于图像中的每个像素,成本是针对每个视差(两幅图像之间的偏移)计算的。但是这些成本可以被认为是原始的(除了一些算法),因为它们是用局部信息计算的。为了使匹配不确定性最小化,步骤2根据若干可能的方案聚合原始成本。
[0302] 此外,此处将只描述局部方法,因为全局方法经常跳过这一步骤。局部方法是基于窗口的方法,且每个像素的视差仅取决于在预定义窗口内周围像素的强度值。因此,由于该方法仅考虑局部信息,所以它具有低的计算复杂度和短的运行时间,因而实现该方法的体系结构可以是实时的(有时使用额外的硬件)。最后,局部方法使用该过程的所有4个步骤。
[0303] 相反,全局方法是生成优化全局能量函数的视差图的方法。这个全局能量函数主要包含两项。一项惩罚视差变化,而另外一项测量像素相似性。全局方法比局部方法具有高的计算复杂度和更长的运行时间。顺便说一句,基于软件的全局方法几乎不可能在实时体系结构中实现,因此将需要额外的硬件来解决这一限制。与局部方法的另一个区别是全局方法通常跳过4-步过程中的步骤2。
[0304] 返回到成本聚合,这些方法通过在支撑区域上对匹配成本求和来聚合匹配成本,支撑区域通常是以当前感兴趣的像素为中心的正方形窗口。最简单的聚合方法是在正方形支撑窗口中应用低通过滤器。该窗口可以是固定尺寸的(FW),但是当该窗口的尺寸变得太大并且参数必须适合特定的输入数据集时,错误率会增加。或者就尺寸而言,或者就权重而言该窗口还可以是自适应的(AW):自适应支撑权重(ASW),或者可以有多个窗口(MW)。MW技术在物体边界处表现出弱点,而AW技术减少了由边界问题引起的错误。AW可在深度不连续附近和同质区域中获得高质量的结果。ASW技术首先基于每个像素在四个方向上与其连续近邻的强度相似性,为每个像素计算自适应十字。然后,通过合并其垂直近邻的十字的水平臂来创建自适应支撑权重窗口,原始成本将是对该自适应支撑权重窗口求和。
[0305] 据说这种技术将导致生成的视差图的高质量结果,但是可能比例如固定尺寸(FW)技术耗时。
[0306] 步骤3:视差选择
[0307] 既然成本已经被聚合并且匹配不确定性已经被解决,那么现在是时候从这个3-D聚合成本图转向2-D视差图了。换句话说,是时候为每个像素在被用于构建3-D成本图的所有视差中找到正确的视差。
[0308] 由于该步骤存在局部和全局方法,因此将对这两种方法进行简要描述。
[0309] 对于局部方法,最常用的视差选择方法是赢家通吃(Winner Takes All)(WTA)策略,使得每个像素的视差d(x,y)对应于对所有允许的视差(D)在步骤2(或者如果步骤2被跳过,则为步骤1)之后获得的聚合成本的范围内的最小聚合成本:
[0310]
[0311] 其中D=[min_disp,max_disp]是在步骤1和2中使用的移位范围。
[0312] 该方法适用于步骤1中描述的算法,但归一化互相关(NCC)除外,在归一化互相关中,赢家通吃方法包括选择对应于最大聚合成本的视差。
[0313] 对于全局方法,可以使用全局能量函数:
[0314] E(d)=E数据(d)+β.E平滑(d)
[0315] 其中,E数据(d(x,y))是像素(x,y)的匹配成本,β是加权因子以及E平滑(d(x,y))惩罚视差变化。
[0316] 作为全局方法执行这种视差选择的一些算法有:
[0317] -信念传播(belief propagation)(BP)
[0318] -图割法(graph cut)(GC)
[0319] -动态规划(dynamic programming)(DP)
[0320] 如前所述,该步骤还可以保留局部方法。
[0321] 步骤4:视差细化
[0322] 在这个步骤中,目标是减少通过前面步骤生成的噪声,并细化最终的视差图。这样做的已知技术中包括:
[0323] -高斯卷积:减少视差图中的噪声,并且还可能减少细微细节的数量。根据高斯分布的权重,使用相邻像素中的一个像素来估计视差
[0324] -中值过滤器:去除微小且孤立的视差不匹配。低计算复杂度
[0325] -各向异性扩散:与高斯卷积不同,应用平滑而不跨越任何边缘
[0326] 这些技术在概念上非常相似。根据一些实施例,提高所产生的视差图的质量的另一种方式是通过进行一致性检查。在一些实施例中,可以从同一立体图像对中计算出2个视差图。一个是通过在右图像中寻找左图像的匹配像素,而另一个是通过在左图像中寻找右图像的匹配像素。至少由于遮挡,同一立体图像对的这两个视差图将不是相同的。但是利用这两个视差图,可以执行从左到右的一致性检查(LRC)来检测异常值,且然后存在若干策略来尝试改善它们。
[0327] 这种从左到右的一致性检查包括:如果左视差图中的视差对应于右视差图中的视差,则检查左视差图中的所有像素。例如,假定k是在像素(x,y)处左视差图中的视差:DL(x,y)=k。这意味着当针对左图像计算视差图时,左原始图像中的像素(x,y)最佳对应于右原始图像中的像素(x-k,y)。另一方面,当针对右图像计算视差图时,可以预期右原始图像中的像素(x-k,y)最佳对应于左原始图像中的像素(x,y)。这可以表达为:DR(x-k,y)=k。因此,如果DL(x,y)=k和DR(x-k,y)=k,那么左视差图中在像素(x,y)处的视差可以被认为是正确的。否则,左视差图中在像素(x,y)处的视差被视为异常值。
[0328] 这种LRC允许检测遮挡问题或简单的不匹配,并强调若干解决这些问题/不匹配的策略。例如,如果不可信视差被认为是正确的并且如果相邻像素与原始图像中对应于该不可信视差的像素具有相似的强度,则可以用近邻视差插值该不可信视差。异常值还可以通过使用另一种技术的信息(例如使用来自飞行时间传感器的数据)确定场景的深度来处理。
[0329] 已经测试过这些算法和方法中的各种。在某些实例中,已经发现对于步骤3,包括在简单性方面,赢家通吃方法提供了最优结果。对于步骤1,发现的两种最优算法是AD算法和SAD算法。在一些实施例中,增强了AD算法。在步骤1中,匹配成本计算不是只计算左图像中的一个像素和右图像中的一个像素的绝对差,而是计算两个连续像素的绝对差。然后,认识到产生最小成本的视差将在步骤3中被选择为好的视差,对由2个绝对差计算产生的2个成本的值进行检查,并且如果它们都小于特定阈值,那么保留成本(这2个成本的总和)会减少。否则,如果它们中的一个或它们中的两个大于该阈值,最终成本会增加。
[0330] 这种变化改进了步骤3的功能,并提高了所产生的视差图的质量,同时与SAD算法相比保持了低的计算成本。
[0331] 图19-20涉及一种用于CFA(滤色器阵列)图像的去噪算法,本文称其为“加权平均值”的“W-均值”。图19D示出了这种算法的非限制性示例。算法将4种CFA颜色组合成一个所谓的“4-色像素”。将输入图像中的这些4-色像素中的每一个与其近邻进行比较。根据每个近邻与中心像素的差异,将权重赋予每个近邻。然后,对于每种颜色,分别计算加权平均值以生成输出4-色像素。
[0332] 首先,考虑以下具有尺寸(w×h)和(2×2)彩色图案尺寸(这些颜色示出了拜(Bayer)图案“绿色1-蓝色-红色-绿色2(GBRG)”的示例)的CFA图像X:
[0333]
[0334] 其中Xi,j是像素强度值。
[0335] 相同的图像可以被表示为 的四色图像U
[0336]
[0337] 其中Ui,j=[x2i,2j,x2i+1,2j,x2i,2j+1,x2i+1,2j+1]
[0338] 图19A示出了这种可选的表示的简单示例。
[0339] 尺寸为m×n(格式与U相同)的滤波后的图像V由以下等式给出。
[0340]
[0341]
[0342]
[0343]
[0344] 其中B(i,j,f)是U图像中的以Ui,j为中心的大小为(2f+1)×(2f+1)的正方形邻域,σ和h是常量参数。权重w∈[0,1]取决于颜色距离d(有4种颜色,所以这是4-维距离)。这允许对相似的像素应用更大的权重。
[0345] 当σ参数的值等于噪声的标准偏差时,σ参数可以作为阈值用于忽略噪声对距离的影响。小于2σ的距离使其权重被设置为1,而更大的距离以指数速率减小。h参数控制这个指数函数的强度,从而控制不相似像素的权重。参数相对于距离对权重的影响可以在图19B中看到。
[0346] 与NLM(非局部均值)算法的主要区别(见Antoni Buades、Bartomeu Coll和Jean-Michel Morel在Image Processing On Line 1(2011)第208-212页DOI:10.5201/ipol.2011.bcm_nlm中的“Non-Local Means Denoising”)是距离d的计算(上面的最后一个等式),NLM算法使得“W-均值”算法迭代次数少得多。这种算法不是计算所有Uk,l和Ui,j近邻的距离,而是只关心Uk,l和Ui,j颜色。有4种颜色的优点是比只有3种颜色更精确。
[0347] 然后可以执行各种调整,以减少执行用于降噪的W-均值算法所需的计算资源。上面三个等式中的第三个等式中的欧几里德距离,其中平方因子需要每个递归步骤的乘数(对于每个近邻的每种颜色)和每个近邻的平方根,执行以下优化。欧几里德距离可以由曼哈顿(出租车)距离代替。与欧几里德距离相比,它是通过去除平方根并计算绝对值而不是平方来计算的,这大大改善了资源消耗。这些距离的简单2D可视化可以在图19C中看到。
[0348] 欧几里德距离给出了两个像素之间差异的最佳估计。但是,与其他差异相比,这种算法只需要具有可比较的差值。曼哈顿距离还量化了两个像素之间的差异,因此它也可以用于该应用。
[0349] 通过这种优化,上述三个等式中的最后一个等式变成了下面的等式:
[0350]
[0351] 上述三个等式中的第二个等式中的参数h的除可以可选地通过将h值限制为2的幂来处理。这样,只需要多路复用器和/或移位器。然而,优选的是除以常数(从1到8),即使这需要更多的逻辑元件。上述三个等式中的第二个等式中的指数可以可选地用基于阈值的二进制权重来处理。可选地,二进制权重可以通常被用于优化上述公式。
[0352] 图20展示了W-均值方法的有效性,W-均值方法还比现有技术中已知的方法消耗更少的资源。为了进一步优化,可选地设置参数,使得去噪随着模拟放大器活跃度(activity)的增加而增加。模拟放大器随着光量的减少而增加其放大倍数。在弱光条件下,噪声会显著增加。因此,随着放大倍数的增加而增加去噪可以抵消这个问题,而不会在图像中添加模糊。
[0353] 图21-31涉及根据一些实施例的示例性可选的实现系统和流程,其与先前描述的系统相互协作。该系统和流程可以允许根据上述W-均值方法进行校正,以及如下所述的坏像素校正。
[0354] 校正将在原始CFA图像上就在debayer过程之前被实现。输入像素流包含以下标准信号:
[0355] -像素时钟1位:用于跟随信号的时钟。
[0356] -像素数据12位:像素强度值。
[0357] -帧有效1位:用于同步帧的起始和末尾。
[0358] -行有效1位:指像素数据是有效的,否则其为消隐数据。该信号对整行连续取值“1”。
[0359] 过程单元至少可以具有图21A中所示的接口。图21B中的计时图示出了数据传输的示例。
[0360] 用于有缺陷的像素检测和校正的方法是对由Bailey和Jimmy提出的算法(单壳版本;D.Bailey和J.S.Jimmy,“FPGA based multi-shell filter for hot pixel removal within colour filter array demosaicing”在:2016International Conference on Image and Vision Computing New Zealand(IVCNZ),2016年11月,第1-6页,DOI:10.1109/IVCNZ.2016.7804450)的修改,该方法是低资源消耗的并且在测试期间产生了良好的结果。它是专门针对CFA图像进行的空间过滤器。在图22A中示出了该方法的示意图。
[0361] 算法可以用下面的等式来描述,其被应用于图像中的所有像素。提出的实现图如图22B中所示。在等式中:
[0362] yi,j=med(min(SCFA),xi,j,max(SCFA),
[0363] 其中yi,j是输出像素,其取决于输入像素xi,j和由图22A中黑点表示的相同颜色SCFA的近邻。
[0364] 过滤器可以去除不属于有缺陷的像素聚类(两个或更多个有缺陷的近邻)中的有缺陷的像素。传感器数据表指定不存在有缺陷的像素的聚类。无法处理的边界中的像素(顶部两行和底部两行,以及每侧两列)从输入被复制到输出。
[0365] 图23示出了示例性、说明性FPGA实现方式的示意图,其特征在于对已公布的方法的各种修改。与由作者提出的实现图相比,添加了倒数第二个寄存器来解决时序问题。添加了一个多路复用器,当输入像素属于图像边界时,将该输入像素复制到输出端。
[0366] “创建行流”部件允许将单个行流转换成称为rs1、rs3、和rs5的三个颜色-近邻行流。由于CFA图像,过滤器必须处理两行中的一行。为此,“2x行缓冲器”存储2行而不是1行。然后,如图22A中所示,四-寄存器部件可以用来提取内核。其他部件包括排序最小/最大组合单元,以执行上述等式中所示的过程。
[0367] 控制信号:像素数据大约被延迟两行,因此控制信号(帧有效和行有效)也必须具有该延迟。为此,又创建了两个部件:帧有效延迟,其简单地对于每次帧有效输入转变运行计数器(当计数器达到所需的延迟值时,该输出被反转),以及也基于计数器的行有效生成器。当计数器启动时,设置有效信号。然后,当它达到图像宽度时,清除有效信号。
[0368] 基于行和列计数器,可以在输入图像的第二行上启用行有效生成器,并在结束后禁用两行。当输出像素对应于输出图像中的边界时,启用复制信号。居于图像边界的像素有:第一行和第二行;第一列和第二列;倒数第二列和最后一列;以及倒数第二行和最后一行。
[0369] 图24示出了如本文所述的相机系统中坏像素去除方法的示例性实现方式。由于立体相机流水线,该方法可以被实例化两次,每个像素流实例化一次。然而,存储器优选地以避免使用两倍的存储器容量的方式进行分配。
[0370] 现在转向W-均值方法的体系结构,如图25所示,设计是可重复使用的。实际上,如果将来资源优化水平不产生足够的去噪准确度,那么算法的一些部分可以很容易地被改变成资源更密集的版本。控制信号是按照前面的实现方式生成的。它们基于行和列计数器。
[0371] 图25中所示的四个部件包括生成内核模块、计算距离模块、过滤器核心模块和格式输出模块。
[0372] 生成内核——该部件允许提取要被处理的图像内核。图26示出了示例性图。“创建行流”部件与先前坏像素方法的实现方式遵循相同的原理。内核包含3×3颜色组区,3×3颜色组区对应于6×6像素区。
[0373] 距离计算——距离是按照前面等式中描述的曼哈顿距离计算的。图27示出了示例性硬件实现方式。曼哈顿距离是在每个颜色组近邻和中心颜色组之间计算的。
[0374] 过滤器核心“thr_optdv”——过滤器的主要部件的非限制性示例图如图28所示。该实现方式的特征在于许多部件。计算权重(阈值版本),其中二进制权重被计算。位相加和比较,其允许权重相加,并针对除法优化准备控制信号。它对权重矢量中的位求和,并将该和与所有可能的2的幂值进行比较(1除外)。
[0375] 除法优化:该过程应用除法优化,如果权重之和等于2的幂,则权重不变。否则,在2的幂之后溢出的所有权重都被强制为0。
[0376] 应用权重:应用权重是由多路复用器简单地进行的。如果权重等于1,则输出相关联的像素值,否则输出0。然后对所有的多路复用器输出求和。除法——此处是进行2的幂除法,其中每个除数单位只是接线(wiring)。
[0377] 格式输出——去噪的颜色组流需要被格式化为像素流。该部件允许算法选择有效颜色组以作为像素流输出。图29B示出了有效和无效颜色组的示例。当颜色组的左上角颜色与图像的第一颜色(第一行,第一列)相同时,该颜色组有效。
[0378] 图29A示出了该过程的示例性、说明性、非限制性图。控制信号是由列和行计数器生成的。行和列选择只是这些计数器的最低有效位(LSB)。因为颜色组属于两行,所以需要使用行缓冲器来延迟颜色组的第二行。copy_pix信号是从输入图像复制的像素值。它被用于复制图像边界。
[0379] 图30示出了在如本文所述的相机系统中,在保持坏像素去除算法的同时,可以在立体像素流中添加“W-均值”算法的示例性实现方式。视觉结果与先前的测试类似,如图31A(前)和图31B(后)所示。
[0380] 当在Cyclone V FPGA上测试时,系统仅消耗5%的组合逻辑和7%的存储器。测试的FPGA是Altera Cyclone V SOC(5CSTFD6D5F31I7N)FPGA)。可选地,可以组合或交织(interwoven)debayer方法和“W-均值”算法,以减少资源使用。对于每4个时钟周期,“W-均值”实现方式只需要1个来输出4个去噪后的像素(仅当颜色组有效时)。这意味着在3个时钟周期期间,算法不需要对图像滤波。为了改善资源消耗,可以在同一计算流水线中使用两个流,而不是对每个像素流使用单独的单元。
[0381] 图32示出了根据至少一些实施例的用于颜色校正的非限制性示例性方法。过滤器(通过滤器CFA(滤色器阵列)可以如上所述进行应用)的选择性并不狭窄;而且,每个R G B谱响应的尾部通常相互重叠。这些问题会导致输出帧中出现错误的颜色。系数矩阵乘以每个颜色通道倾向于减轻这种影响。每个系数都是通过校准相机过程获得的,校准相机过程可以被执行一次,而得到的矩阵被称为颜色校正矩阵(CCM)。
[0382] CMOS图像传感器有时是以量子效率响应为特征。因此,这种传感器本质上是单色的。为了获得彩色图像,将CFA应用于传感器输出。根据过滤器的量子效率,每个像素存储单一的颜色信息点。用于实现CFA的材料的特定选择通常不忠实于自然颜色。该问题典型地是由于不完美的频率范围选择性以及交叉颜色效应造成的。特别是,每条曲线没有严格的高斯形状(低选择性),而且每条曲线的尾部相互重叠(交叉颜色效应)。为了校正颜色外观,去马赛克后的图像的每个通道必须乘以特定系数:
[0383]
[0384] 其中Xcam是来自相机的R、G、B数据,而Xcorr是R、G、B通道校正后的值。项rj、gj、bj(j假设为值1、2、3)组成颜色校正矩阵。
[0385] 现在转到图32,执行用于颜色校正的方法3200(根据一些实施例)。在阶段3202中,通过处理描绘颜色检查板的帧来执行相机校准以检索颜色校正矩阵系数。可以手动选择属于颜色检查器的帧的区域。对于每个区域,执行中值来评估R、G、B相机通道的响应。表征颜色检查板的参考颜色信息的示例可以例如在用于图像再现的经典颜色检查器|x-rite中找到。
[0386] 在阶段3204中获得对系数的第一估计,例如通过计算满足Tsung-Huang Chen和Shao-Yi Chien(Cost effective color filter array de-mosaicking with chrominance variance weighted interpolation。在IEEE International Symposium on Circuits and Systems,2007年,ISCAS 2007,第1277-1280页)中的系统的最小范数最小二乘解;其中Xref项是检查板中的R、G和B参考颜色值,而Xcam项是由相机发送的R、G和B相机颜色值。将这些系数应用于图像导致每个通道的响应更好地符合图像的理想特性。然而,测试输出图像具有大的饱和区域(数据未示出)的特征。
[0387]
[0388] 这是由于缺少对亮度分量的补偿,根据ITU-R建议BT.709,亮度分量被定义为:
[0389]
[0390] 当执行直接校正时,产生的亮度高于原始帧中的亮度。为了保持不变的亮度分量,在阶段3206中执行以下计算:
[0391] 将x视为原始帧的像素,y视为直接校正后的帧的像素,而y*视为亮度校正后的帧的像素。这些像素通过下面的两个等式相互关联,其中A和C是3×3矩阵。
[0392] y=Ax
[0393] y*=Cx
[0394] 这些矩阵通过以下关系关联:
[0395] A=αC
[0396] 然后
[0397] y=αy*
[0398]
[0399] 其中lum()是定义用于计算输入像素的亮度分量的函数。因为我们在寻找α,使得原始帧和最终帧的亮度分量相等,lum(y*)=lum(x),那么α是:
[0400]
[0401] 然后在阶段3208建立颜色校正矩阵。在阶段3210中,将帧乘以所获得的C颜色校正矩阵,从而获得自然的颜色帧图像。而且,图像传感器响应与用原始亮度调整的理想响应更加相似。
[0402] 图33A-33D示出了根据至少一些实施例的非限制性示例性FPGA配置。图33A示出了一个FPGA 3300系统,而图33B更详细地示出了FPGA系统3300的顶部,并且图33C和图33D分别更详细地示出了FPGA系统3300底部的左侧和右侧。在下面的讨论中参考图33A-33D全部。
[0403] FPGA系统3300的特征在于FPGA 3302,FPGA 3302接收来自右传感器3304和左传感器3306的输入。来自每个传感器3304和3306的数据被馈送到预处理阶段3308,预处理阶段3308如图所示对来自每个传感器的数据分别进行预处理。对于每个传感器,预处理阶段
3308开始于如前所述地执行的去噪和坏像素检测3310。接下来,执行先前描述的debayer过程3312。
[0404] debayer过程3312的结果然后被馈送到先前描述的颜色校正矩阵(CCM)过程3314。来自CCM过程3314的数据被用于确定直方图3318。直方图然后馈送到先前描述的白平衡校正过程3316。在这之后,如前所述,针对立体校正执行校正过程3320。
[0405] 在图33B-33D中示出了具有三个分支的FPGA系统3300。在顶部和底部分支之间有两个链接,标记为“到A”和“到B”。在左底部和右底部分支之间示出有两个链接,标记为“到B”和“到C”。
[0406] 转向第一分支,“到A”(在图33B中)和“A”(在图33C中),传感器3304和3306与触发器3322有双向流动,用于控制和同步来自传感器3304和3306的输入,使得帧之间的定时同步。另外,传感器3304和3306与I2C(集成电路总线)3324有双向流动。I2C 3324包括I2C控制器3326和存储器映射3328。在这个示例中,I2C控制器3326是主微控制器(特征还可以在于从微控制器和其他从部件;未示出)。存储器映射3328是各种从部件中的存储器寄存器的映射,该各种从部件允许一个或更多个控制器写入从设备的寄存器。存储器映射3328是用于控制FPGA系统3300的变量的值的寄存器。
[0407] I2C控制器3326还与深度控制器3330通信,用于同步深度传感器数据的定时。可选地,所有传感器(包括但不限于传感器3304和3306以及传感器3346)数据通过I2C控制器3326进行传递。
[0408] 在第二分支中,“到B”(在图33B或图33C中)或“B”(在图33D中),预处理阶段3308将预处理后的RGB传感器数据传输到GPIF(通用可编程接口)IF(接口)模块3336上的两个FIFO缓冲器3334A和3334B。GPIF IF模块3336实现用于与USB3芯片3350通信的32位总线接口。FIFO缓冲器3334A和3334B如前所述地操作。来自深度控制器3330的深度数据被馈送到深度FIFO缓冲器3338。GPIF IF模块3336还具有控制器3340和GPIF IF 3342。GPIF IF 3342是总线的接口。
[0409] GPIF IF 3342还接收来自附加传感器FIFO缓冲器3344的附加传感器数据,传感器FIFO缓冲器3344又可选地接收来自多个传感器3346的传感器数据,多个传感器3346的两个示例是为了说明的目的示出而不具有任何限制的意图。所示的非限制性示例包括MCU惯性传感器3346A和MCU协调器3346B。该数据可选地通过控制器3348来馈送,控制器3348可以是例如SPI(串行外围总线)控制器。
[0410] 处理后的信息然后例如从GPIF IF 3342被输出到USB芯片3350。
[0411] GPIF IF 3342的动作可以通过SOC(片上系统)3360(可选地使用外部存储器3362)执行的计算辅助。使用外部存储器3362的SOC 3360能够通过更快地执行计算来提高GPIF IF 3342的速度性能。SOC 3360充当具有DMA(直接存储器存取)模块3361的嵌入式处理器。例如,SOC 3360可以通过传感器FIFO 3334A、FIFO 3334B和FIFO 3338来执行与立体数据(包括深度和RGB数据)相关的计算。
[0412] 现在转向第三分支,在图33C中标记为“到C”以及在图33D中标记为“C”,如图所示,触发器3322可以控制传感器3346的动作,以例如触发它们启动数据收集。可选择地或附加地,触发器3322可以将各种传感器3346与时间戳同步。如前所述,I2C 3324从各种传感器(包括传感器3346以及传感器3304和3306)接收数据。
[0413] 图34-46描述了用于跟踪用户的方法的各种非限制性示例。这些方法可以例如但不限于通过如图5或图6所示的FPGA、和/或图6的CPU来执行。作为非限制性示例,这些方法可以是可以被提供给图5的用户应用并且可由图5的融合内核来计算的特征的示例。
[0414] 这些方法可用于通过将从深度传感器和/或其他传感器和/或如本文所述的“标志器”接收的数据点拟合到身体模型来跟踪身体的至少一部分。例如,在一些实施例中,某些这样的数据点被识别为“超级点”,并且与其他点相比其被分配了较大的权重。这些超级点可以从附着到身体的物体获得,物体包括但不限于提供可检测到的信号的有源标志器、或者无源物体,包括但不限于(例如用于VR(虚拟现实)的)头盔或面罩、或者智能手表。这些物体例如参照图2B进行了描述。这种超级点也可以从与模型匹配的特殊数据点获得,例如与在模型中对应于关节的顶点匹配的数据点。
[0415] 图34示出了根据本公开的至少一些实施例的可选地使用图1或图2的系统来执行用于跟踪用户的示例性、说明性非限制性方法。
[0416] 如图所示,在3402处,系统例如通过加电(即切通)来启动活动。系统可以如图1中所描述的方式来实现,但是也可以可选地以其他方式来实现。在3404处,系统执行系统校准,系统校准可以包括确定许可和/或隐私特征。系统校准还可以可选地包括对传感器的一个或更多个功能的校准。
[0417] 在3406处,确定初始用户定位,(在一些实施例中)该初始用户定位是用户相对于传感器(可选地至少相对于相机和深度传感器)的位置和方位。例如,用户可能被要求或被安置成使得用户在相机和深度传感器的前面。可选地,用户可能被要求做特定的姿态,例如,诸如“T”姿态,其中用户伸直手臂面向相机站立。术语“姿态”涉及用户的身体的定位和方位。
[0418] 在3408处,模板被初始化。如下面更详细描述的,模板以人体的模型为特征,其仅配置为多个参数和特征(例如骨架、关节等),该多个参数和特征用于帮助跟踪用户的运动。在3410处,传感器数据被接收,诸如,例如深度传感器数据和/或相机数据中的一者或更多者。在3412和3414处,例如关于用户的运动,传感器数据被分析以跟踪用户。可选地,传感器数据可以被映射到身体模型上,例如,身体模型的特征在于关节的铰接式结构
(articulated structure)和由顶点的网格限定的皮肤,以混合权重(blending weight)将顶点软分配给模型的关节。以这种方式,皮肤可以随着身体姿态而相应地变形,以模拟逼真的人的形状。
[0419] 可选地,如本文所述,通过映射到GMM(高斯混合模型)上来分析传感器数据。如下面更详细描述的,可选地,可以使用分类器。因为用户的姿态不可能在帧之间显著改变,所以可选地,当被迭代地执行时,在3412、3414处的过程只能关于有限次数的迭代来执行。例如,本发明人惊奇地发现,可以使用少至3-10次迭代来映射数据。如果使用GMM,皮肤的每个顶点定义了各向同性高斯,其在3D空间中的平均位置是顶点所附着的关节的旋转参数的函数(旋转左手腕不会影响在右手皮肤上的顶点的定位)。
[0420] 身体模型优选地以稀疏皮肤表示为特征。具有稀疏皮肤表示便于处理遮挡(occlusion)。自遮挡(self-occlusion)或身体部位的遮挡都是由于混乱(clutter)或因为用户离开相机帧造成的。一种方向是,以给定帧动态地启用或禁用被认为是被遮挡的高斯,使得被禁用的高斯不会影响优化。
[0421] 在不同方向上,通过抑制相对应的高斯来建模被截肢者用户也很简单。这可以在校准过程期间在线完成,或者让治疗师手动地配置身体模型。在3412处,如果使用GMM,传感器数据作为点云被映射到GMM。GMM和映射可选地按照关于Mao Ye和Ruigang Yang于2016年的IEEE Transactions on Pattern Analysis&Machine Intelligence第38卷第08发行期发表的“Real-time Simultaneous Pose and Shape Estimation for Articulated Objects Using a Single Depth Camera”所述来实现。在该文中,描述了一个能量函数,其根据映射过程被最小化。
[0422] 可选地,仅使用深度传感器数据,但是可选择地,同时使用深度传感器和相机数据。例如,计算可以如下进行。给定一组N个点x∈X,期望用M个分量(vm)来拟合GMM。
[0423]
[0424] 在3414处,如下面更详细描述的,一个或更多个约束被施加在GMM上。例如,可选地,模型被约束成使得用户的身体部位根据其可以呈现的可能的角度被约束。在3416处,映射的数据可选地与视频数据集成。
[0425] 图35示出了根据本发明的至少一些实施例的示例性、说明性非限制性跟踪引擎,其可选地用于图1或图2的系统、或图34的方法。对于跟踪引擎的这个实施例,数据被假设映射到GMM,但是如本文所述,可选地使用分类器来代替。如图所示,跟踪引擎以模板引擎3500为特征,模板引擎3500从模板数据库3502读取模板,并且然后将模板馈送到GMM映射器3508。GMM映射器3508还从点云分解器3504接收点云信息,点云分解器3504在3506接收深度传感器数据作为输入。可选地,彩色相机数据也可以被提供给点云分解器3504。例如,立体RGB可用于帮助将点分配给身体部位和/或改善深度传感器数据。对于将深度传感器数据配置到点云的问题的解决方案在本领域中是众所周知的,并且可以可选地根据任何合适的方法来执行。Zhao等人在“Alignment of Continuous Video onto 3D Point Clouds”中提供了一种合适的方法的一个非限制性示例,其可在https://pdfs.semanticscholar.org/
124c/0ee6a3730a9266dae59d94a90124760f1a5c.pdf处获得。
[0426] 为了提高处理的速度,深度传感器数据可以如下配置。为了做到这一点,对于每一帧构建场景的KD树,使得当计算从顶点到云的对应关系时,仅使用K最近邻(K nearest neighbor)并对于其余的假设为零后验(zero-posterior)。作为结果,该算法运行快了几个数量级。对应关系的选通(gating)允许距离和后向矩阵的稀疏化,极大地提高了计算速度。
[0427] 与利用GPU(图形处理器)达到了实时性能的Mao Ye和Ruigang Yang于2016年的IEEE Transactions on Pattern Analysis&Machine Intelligence第38卷第08发行期发表的“Real-time Simultaneous Pose and Shape Estimation for Articulated Objects Using a Single Depth Camera”相比,根据一些实施例,当前描述的算法利用CPU(中央处理器)就能达到实时性能(在i7处理器中的100+fps),这是一个显著的计算优势。
[0428] GMM映射器3508的特征在于GMM数据映射模块3510、映射约束模块3512和模板形变模块3514。GMM数据映射模块3510从点云分解器3504接收点云数据,并根据来自模板引擎3500的输入模板进行调整,将该数据映射到GMM上。接下来,通过映射约束模块3512,将来自映射约束模块3512的一个或更多个约束(例如关于用户的身体部位可以呈现的角度范围)施加于GMM上的被映射数据。可选地,根据来自模板形变模块3514的信息通过使模板变形来增强这种信息;可选择地,由GMM数据映射模块3510和映射约束模块3512来动态地应用这种形变。在这种情况下,模板形变模块3514或者不存在,或者可选择地可被用于应用一个或更多个启发法(heuristics),例如如下面更详细描述的根据姿态恢复。
[0429] 图36更详细地示出了根据本公开的至少一些实施例的模板和模板引擎。根据一些实施例,模板引擎3500的特征在于初始用户定位模块3614的调整模板,初始用户定位模块3614从初始用户定位输入端3612接收关于用户的初始定位的信息。例如,如果模板构建是站立的用户,但是用户躺下或坐着,则优选地根据用户的实际定位来调整模板。即使用户的定位与模板的预期定位相同,例如以T姿态站立,也可以根据实际用户(诸如用户的实际尺寸)来调整模板。
[0430] 模板数据库3502可以在每个模板中包含各种不同类型的信息。例如,每个模板优选地包括骨架3600、关节层次3602和关节检测3604。骨架3600限定了可从点云数据确定的用户的虚拟骨架。每个骨架3600包括关节层次3602,关节层次3602(如已知的)是具有其虚拟部位的虚拟骨架的表示。关节层次3602使得能够定位用户的身体的每个关节,并且能够根据其他关节的位置来确定其位置。如下面更详细描述的,关节检测3604可以涉及用于从点云中检测用户的作为特殊点或点组的关节的信息。
[0431] 每个模板还可以以表面顶点3606、表面网格连通性3608、蒙皮权重3610和约束3616为特征。表面顶点3606涉及在用户的外部身体上的顶点(与虚拟骨架对用户的身体结构的内部表示相反),而表面网格连通性3608根据网格限定用户的外部身体表面。蒙皮权重
3610确定关于如何执行蒙皮的权重,例如在确定用户的适当的外表面方面。
[0432] 约束3616可被用于确定哪些身体位置是不被允许的,例如根据不同的身体部位定位的可能的角度范围来确定。例如,但不限于,约束可以包括自相交、角度和姿态先验中的一个或更多个。这些约束可以被不同地加权。优选加权而不是将约束设置为绝对条(absolute bar),因为发明人惊奇地发现,如果搜索空间太受限制,GMM模型不会有效地进行操作。因此,加权允许在不过度限制搜索空间的情况下捕获约束这一重要性。约束可以被应用于前面描述的能量函数。
[0433] 自相交约束是可选的并且可能不被应用,因为根据它们应用的方式角度约束可以有效地考虑到自相交。如果被应用,自相交约束可以如下计算:
[0434]
[0435] hst(θ)=(rs+rt)2-||vr(θ)-vt(θ)||2  (3)
[0436]
[0437]
[0438] 其中rs,rt代表相交高斯的半径。集合P定义了应该被禁止相交的高斯对的集合。
[0439] 在一些实施例中,角度约束对于模型的正确操作很重要,并且权重很大。约束当前被应用于每个角度,但也可以可选地被联合应用于所有角度。角度约束涉及各个身体部位被允许达到的角度的范围。
[0440] 对于给定的关节,角度约束优选地根据旋转模型来确定,以便例如可选地确定1个、2个或3个自由度。例如,肘部可以被确定为具有1个自由度,而肩部可以被确定为具有3个自由度。对于每个自由度,确定最小和最大角度。作为范围的另一示例,附录提供了有关角度的符号,使得limit_rotation_x涉及第一个自由度的最小和最大角度,limit_rotation_y涉及第二个自由度的最小和最大角度,以及limit_rotation_z涉及第三个自由度的最小和最大角度。如果极限旋转(1imit rotation)的值被设置为零,那么关节就没有自由度,并且这些角度也根本不会改变。如果没有设置特定的极限旋转,那么关节或骨实现整个身体的旋转。
[0441] 角度约束可选地由取最大值/取平均值运算符来被施加的。该运算符是非线性且涉及基于梯度的优化。这种角度约束可以作为旋转限制来被施加,其是使用非线性项来进行应用的。在以下这篇文章的公式11、12中描述了这些项的非限制性示例:Taylor等人于2016年发表的“Efficient and Preci se Interactive Hand Tracking Through Joint,Continuous Optimization of Pose and Correspondences”,其可从http://
www.samehkhamis.com/taylor-sigg raph2016.pdf处获得。计算角度约束的非限制性方法的一个示例如下:
[0442]
[0443] 其中,v(a,x,b)=max(0,a-x)+max(x-b,0)。由于期望的是针对Δθ进行优化,因此,应使用以下等式:
[0444]
[0445] 应用次梯度,并且假设Δθ非常小:
[0446]
[0447] 可选地应用姿态先验约束以避免由深度传感器噪声引起的问题,比如不能正确地检测深色头发或深色衣服。姿态先验约束的一个示例是保持盆骨或多或少笔直。如果用户坐在桌子旁或躺下,下半身或多或少会被家具隐藏,且从而,盆骨可能试图拟合通常位于家具的区域中的外露点(outlier point),而且盆骨朝向家具旋转,这是不正确的。另一个姿态先验约束是保持头部或多或少笔直。这被应用于解决如果头发点由于深度传感器问题而未显示时发生的头部的有噪声旋转(noisy rotation)。这些姿态先验约束可以被先验地应用和/或被动态地添加到能量函数。
[0448] 在一些实施例中,姿态先验和角度限制约束二者都用能量函数中的分量的加权和来实现。角度限制能量分量优选地相对于姿态先验具有更大的权重。来自惯性传感器的数据也可以被用于一个或更多个约束。例如,但不限于,惯性传感器的方位可以作为骨(优选地手)的方位的先验来应用。可选择地,方位数据可以在优化时被使用,不是作为先验,而是作为附加的特定项。
[0449] 如本文所述,惯性数据可以作为“超级点”被引入,附加地或可选地用于上述用途。即使没有方位数据,作为超级点使用提高了绝对位置数据的准确性。然而,方位数据有助于确定手的定位方位。
[0450] 可以为不同的用户定位(例如坐着、站着、躺下等等)创建不同的模板。可选地,还可以根据性别或其他人口统计信息,和/或根据身体尺寸(诸如对于身高、腰围等的各种范围),创建不同的模板。
[0451] 模板引擎3500可以根据用户的初始定位(诸如,坐、站立、躺下等)以及关于其他用户的特性进行更新,这将使得能够选择和/或调整特定模板(例如人口统计信息)。模板引擎3500然后可以根据该信息从模板数据库3502中选择特定模板。用于初始用户定位模块3614的调整模板然后根据初始检测到的用户定位来调整模板,这也可以涉及根据第一组输入数据为该特定用户初始化模板。
[0452] 图37示出了根据本公开的至少一些实施例的用于创建和使用模板的方法的非限制性示例。如图所示,在3702处,在固定位置扫描示例用户的整个身体(或者可选地扫描其一部分),以形成标准身体。在3704处,例如,根据作为非限制性示例的Blender软件(由Blender基金会创建),在3D建模软件中对用户的身体进行建模。创建表示人体的网格。网格的每个顶点,即皮肤的每个顶点,都被并入。某些顶点可以被分配到“关节”和/或“骨”。例如,左前臂的顶点将与左肘部相关联,使得当左肘部旋转时,左前臂的顶点也旋转。根据一些实施例,模型在顶点的可能位置上施加一种类型的约束,以及根据关节位置重新定位皮肤顶点。在3706中,根据特定的3D建模软件的操作,建模的身体对应于模板参数。参考图36描述了(根据一些实施例的)根据所包括的项的模板参数。
[0453] 在3708处,模板参数可以被导出到文件,其非限制性示例的一部分在附录中给出。附录中的示例示出了处于T姿态的标准男性身体的一部分。特征通常是不言自明的,但是为了完整起见,此处描述了几个示例。全局比例参数指示关于身体的“整体尺寸”的全局缩放。
接下来,骨列表被提供,以及它们各自的名称、它们的初始位置(作为“头部”和“尾部”参数提供)。旋转可以是如前所述的。每根骨都可以是另一根骨的父级,例如,使得“骶骨”是诸如“l.股骨”或股骨的父级。蒙皮_权重提供混合权重,或提供关于蒙皮分配的权重;每个数据点表示模型中的顶点,其中影响该顶点的一根或更多根骨加上针对该影响的权重。
[0454] 在3710处,获得在给定位置的对象的传感器数据,如本文所述,该数据优选地手动地被传送到模板引擎。在3712处,例如关于骨长度,如本文所述,对象的至少一个测量值被确定。这种信息可以从点云确定。可选地,如下面参考图38所述,使用不同类型的点云数据。例如,但不限于,光学标志器可以提供“超级点”数据,因为根据在标志器中被特征化的LED灯的不同颜色可以知道它们的位置。超级点数据的其他非限制性示例包括与VR头盔(headset)、智能手表或一些其他设备(appliance)相关联的点。
[0455] 这种“超级点”数据也可以可选地利用关节检测来执行,如下面(诸如,例如关于图42)更详细描述的,或者可选地,如Jung等人于2015年6月在CVPR会议上发表的“Random Tree Walk toward Instantaneous 3D Hu man Pose Estimation”(可从“https://www.researchgate.net/publication/275771971_Random_Tree_Walk_toward_
Instantaneous_3D_Human_Pose_Estimation”处获得)中所述和/或根据Shotton等人于
2011年在“Efficient Human Pose Estimation from Single Depth Images”(可从https://people.eecs.berkeley.ed u/~rbg/papers/姿态-from-depth-pami.pdf处获得)中提供的描述来执行。
[0456] 可选地,点云数据可以单独使用,或者与一种或更多种类型的“超级点”数据结合使用。从对象获得的测量值被用于初始化跟踪计算,以根据用户的特定参数调整模板。
[0457] 在3714处,根据用户的特定参数,例如但不限于,根据用户定位、人口统计数据、尺寸数据、用户的身体内的特定测量值(例如骨长度等)中的一个或更多个,缩放或以其他方式调整模板。优选地,缩放用户的尺寸,而不是缩放约束角度。为了调整用于缩放的模板,优选地,可以针对缩放骨的参数空间而不是关节约束来调整成本函数。
[0458] 图38A至38E涉及根据本发明的至少一些实施例的用于映射数据以跟踪用户的不同的示例性、说明性非限制性方法。图38A示出了一种示例性方法,这样的示例性方法使用点云数据来映射到GMM模型,而不加权任何特定点和/或不具有关于这些点的先验知识。在3802A处,来自深度传感器的传感器数据被分解以形成点云数据。在3804A处,模板顶点被调整,其还包括估计用户的初始姿态。调整可以包括根据用户定位和比例以及可选地根据其他参数调整模板。如果该过程正在一系列视频帧上执行并且已经在至少一帧上执行过,则可选地,这样的估计可以考虑用户的先前姿态,因为用户的姿态不可能在帧之间显著改变。
对模板顶点的调整优选地还包括前面描述的约束,然后可以后续应用这些约束来增加获得正确的最小值的概率。
[0459] 在3806A处,可以确定成本函数梯度。成本函数梯度可以按照关于Mao Ye和Ruigang Yang于2016年在IEEE Transactions on Pattern Analysis&Machine Intelligence第38卷第08发行期发表的“Real-time Simultaneous Pose and Shape Estimation for Articulated Objects Using a Single Depth Camera”所述来计算。在该文章中,描述了一个能量函数,该能量函数根据映射过程被最小化。关于成本函数梯度,需要计算点云中的每个点到每个顶点的距离。
[0460] 在3808A处,如前所述,可以对能量函数应用一个或更多个约束,但是该过程可以在3806A并行地执行。在3810A处,根据提供迭代解的EM算法,针对概率密度求解参数空间中的新位置,以确定最可能的位置。在3812A处,形变模型可以根据由EM算法得到的迭代解来进行应用,例如,如参考图39所述。在3814A处,可以重复步骤3806A、3808A、3810A和3812A,直到问题得到解决。
[0461] 图38B示出了这种仅使用光学标志器点数据来映射到GMM模型的示例性方法。在3802B处,仅从点云数据中检测光学标志器数据。光学标志器点数据是超级点的示例,其中它们在身体上的位置可以被精确地检测出和跟踪,因为LED灯的指定颜色与指定位置相关联。除了仅使用光学标志器点数据之外,该方法如参考图38A所述地进行,并且图38B的步骤
3804B-3814B对应于图38A的步骤3804A-3814A,不同之处在于,可选地,不需要计算从每个点到每个顶点的距离,这在一些实施例中是由于以非常高的似然度识别关于身体上的指定位置的每个标志器的可能性,从而知道哪个标志器与身体上的哪个位置相关。
[0462] 图38C示出了这种仅使用关节检测点数据来映射到GMM模型的示例性方法。在3802C处,从点云数据中仅检测到关节数据。关节点数据是超级点的示例,其中它们在身体上的位置可以被精确地检测出和跟踪,因为如本文所述可以使用特殊的关节检测方法。例如,如本文所述,关节检测方法可以根据分类器来执行。关节检测算法可以允许检测到难以用光学标志器标记的关节(例如,颌或颈部)。除了仅使用光学标志器点数据之外,该方法如参考图38B所述地进行。
[0463] 图38D示出了使用具有较高的权重的超级点的组合以及结合点云数据的剩余部分来映射到GMM模型的这样一种示例性方法。在3802D处,如参考图38A的3802A所述,传感器数据被分解成点云。在3804D处,一个或更多个超级点被检测到并被给予较高的权重。超级点可以根据前面描述的光学标志器和/或根据关节检测来进行检测。超级点的定位可能是不可靠的,但是与各个顶点的对应关系具有很高的可能性是已知的(即使与超级点的定位相关的数据有噪声)。步骤3806D、3808D、3810D、3812D、3814D和3816D可以如参考图38A的步骤3804A、3806A、3808A、3810A、3812A和3814A所述的那样来被执行,不同之处在于对于所执行的各种计算超级点被赋予比常规点云数据更高的权重。
[0464] 图38E示出了使用分类器的示例性方法。如参考图38A所述,可选地执行3802E。在3804E处,经训练的分类器被应用于点云。经训练的分类器优选地以一些类型的身体部位分类模型为特征,例如在Shotton等人2011年的“Efficient Human Pose Estimation from Single Depth Images”(可从https://people.eecs.berkeley.edu/~rbg/papers/pose-from-depth-pami.pdf获得)中所述。所描述的方法操作如下。身体部位分类(BPC)首先预测每个像素处的身体部位标记,并且然后使用这些推断的标记来定位身体关节。身体部位的数量和位置被选择以提供最多的信息来用于确定关节,而同时数据要求不会使经训练的分类器超负。经训练的分类器可以根据任何已知的方法来构建和训练,诸如,例如分类的随机树方法。关节的位置然后可以被馈送到前面描述的Mao Ye和Ruigang Yang于2016年在IEEE Transactions on Pattern Analysis&Machine Intelligence第38卷第08发行期发表的“Real-time Simultaneous Pose and Shape Estimation for Articulated Objects Using a Single Depth Camera”的生成模型中。这种分类将通过显著增加正确分配给特定顶点的概率来从常规点云数据中创建多个超级点。因此,可选地,过程的剩余部分将仅使用超级点继续进行,或者可选地,超级点以比其他点更高的权重来实现。过程然后如图38B所示继续,其中分类的点充当超级点,使得图38E的步骤3806E、3808E、3810E、3812E、3814E和
3816E对应于图38B的步骤3804B-3814B。
[0465] 图39示出了根据本公开的至少一些实施例的用于应用形变模型的方法的非限制性示例。在3902处,根据模板初始化关节的定位。在3904处,单独检测每个关节的定位。在3906处,根据关节定位使表面顶点变形。在3908处,根据蒙皮权重调整表面顶点,以平滑在多根骨和多个关节上的皮肤。如前所述,蒙皮权重是混合权重,以确定每根骨或每个关节的确定对皮肤表面矢量的输入多少。Mao Ye和Ruigang Yang于2016年在IEEE Transactions on Pattern Analysis&Machine Intelligence第38卷第08发行期发表的“Real-time Simultaneous Pose and Shape Estimation for Articulated Objects Using a Single Depth Camera”中描述了一个示例性实现方式。在3910,从最后知道的定位更新形变模型。
[0466] 关于本文所述的数据建模,具体情况涉及对肩关节的建模。球关节是改进现有的3-DOF(3个自由度)关节(肩)的建模的一种方式,由于旋转的表示,3-DOF关节(肩)建模受到若干问题的困扰。对于每个DOF,肩关节可以通过顺序地应用三次旋转来建模。现存的问题主要与万向节相关,并且这种参数空间不太适合优化。
[0467] 一个可选的实现方式使用扭转(twist)来联合编码角度、轴、和轴位置。如,例如在Pons-Moll和Rosenhahn于2009年在WACV发表的“Ball Joints for Marker-less Human Motion Capture”(可从https://ps.is.tuebingen.mpg.de/uploads_file/attachment/attachment/140/PonsW ACV2010.pdf获得)中所述,为了使轴矢量自由,有必要对轴位置进行解耦。这样做的一种示例性方式是从相对于球关节旋转的点中减去轴位置,并假设在扭转中轴处于(0,0,0)。
[0468] 这种调整可以被应用于任何合适的方法来建模肩关节。例如,它可以被用于如下调整Mao Ye和Ruigang Yang于2016年在IEEE Transactions on Pattern Analysis&Machine Intelligence第38卷第08发行期发表的“Real-time Simultaneous Pose and Shape Estimation for Articulated Objects Using a Single Depth Camera”的形变模型。在该文章中,基本形变模型通过以下被给出:
[0469]
[0470] 在上面的方程中,vm是前面描述的模型的顶点。
[0471] 与关节角度有关。
[0472] 与全局变换有关。
[0473] 为了适应对肩的改进建模,插入前面描述的球关节信息,并去掉具有单位长度的ω的约束,从而可能将旋转轴和角度联合表示为ω的范数:
[0474]
[0475] 因此,可能在表示1D和2D关节的自由度的索引k和表示整个球关节的索引l之间做出区分。优化参数从三个标量角度Δθ被变换为表示角度和轴方向的3维矢量Δω′θ。矢量ql指的是关节l的轴的位置。注意,扭转已准备好,那么要恢复原始的需要撤消坐标转换:
[0476] Δωlθl=((Tl)-1Δω′lθl)TTl。
[0477] 图40示出了根据本公开的至少一些实施例的用于姿态恢复的方法的非限制性示例。在4002处,操作独立的姿态恢复线程,该独立的姿态恢复线程与跟踪用户并执行上述姿态计算的主线程分离。为了避免使可用的计算资源超负,优选间歇地操作姿态恢复过程,而不是连续地操作。在4004处,对于每n帧,从点云数据计算恢复姿态,以确定该姿态的能量水平。数量n可以是任意多个帧,例如2至10帧,但是优选为3至5帧。使用前一帧的姿态作为种子点来应用初始化,但是重新运行以根据GMM拟合数据。然后,在4006利用恢复姿态重新运行算法。在4008处,将当前计算出的用户的姿态与恢复姿态进行比较;当且仅当在计算点云方面恢复姿态具有较低能量时,则当前计算出的姿态被恢复姿态替换。例如,恢复姿态可以是用户的休息姿态。
[0478] 图41示出了根据本公开的至少一些实施例的用于背景物体的分割的方法的非限制性示例。此处,背景物体可以是无生命物体(其不应该与用户混淆),例如桌子、椅子、床或其他家具。在4102处,如前所述,从传感器数据生成点云,接着是4104,在4104处选择分割模型。例如,对于某些类型的背景物体,例如桌子,分割模型可以是简单的模型,例如平面模型。
[0479] 在4106处,根据所选择的分割模型,将RANSAC(随机样本一致性)算法应用于点云数据。该算法是基于概率的和迭代性的,并且被用于从点云数据中检测(并去除)异常值,以便将该数据拟合到分割模型。Martyna Poreba和 Goulette于2012年9月在波兰的Symposium de PTFiT(Polish Society for Photogrammetry and Remote Sensing)2012年第24卷第301-310页上发表的“RANSAC algorithm and elements of graph theory for automatic plane detection in 3D point clouds”中描述了根据平面模型将RANSAC模型应用于分割的非限制性示例。
[0480] 在4108处,最可能属于所选分割模型的点组被定位,并且可选地,在4110处,如果本文描述的方法已经被执行了不止一次,则对先前被检测为属于模型的点向上投票(up-voted)。因为被分割的物体是一个背景、无生命物体,所以在跟踪过程期间其定位不可能改变。因此,一旦一个点被确定属于背景物体,它很可能继续正确地与该物体相关联。在4112处,去除已经被确定属于模型的点,因为这样的点可能干扰用户的正确跟踪。
[0481] 图42描述了根据本公开的至少一些实施例的用于关节检测的方法的非限制性示例。如图所示,在4202处接收点云作为输入;点云可以可选地如前所述地被生成。在4204处,为每个关节确定估计的位置。优选地,每个关节被确定为点云中的点,使得估计的位置与将对应于该关节的点的位置相关。为了清楚起见,关节位置被确定为骨架模型中的顶点,使得每个关节被映射为骨架模型中的离散点(顶点)。对于第一帧,可能使用来自(如下面更详细描述的)通过训练树(training the trees)确定的训练数据的或来自模板数据的平均定位。对于后续帧,可能使用来自前一帧的定位作为估计值。在4206处,对靠近对应于关节的点的估计的位置的多个点进行采样。例如,这些点可以在距该点具有特定半径的球体内采样,例如,诸如0.5米。其他距离也是可能的,包括例如在0.005米至2米范围内的任何距离。可选地,对于每个关节半径可以是不同的。
[0482] 就采样点的数学表示而言,被认为是ci,j的每个候选者都具有以多种不同的方式生成的定位pi,j∈R3。对于给定的关节j,候选3D定位可以例如如下生成。给定骨架的可能3D姿态的训练数据,估计每个关节的定位的多元3D正态分布。定位可以通过简单地从该分布中采样一个点来生成。这可选地且优选地根据来自先前帧的数据进行细化。
[0483] 对于后续过程,假设关节由整数j∈J索引,J表示所有关节的集合。还假设预先将两棵训练的树训练为分类器或回归器,这将在下面参考2412进行更详细的描述。这两棵树包括可以估计距离|x-y|的树Tdist,j以及可以直接估计相对于关节的偏移量y-x的树Toffset,j。这些树的训练寻求最小化最小二乘目标函数。这些树可以如参考Jung等人于2015年6月在C VPR会议上发表的“Random Tree Walk toward Instantaneous 3D Human Pose Estimation”(可从https://www.researchgate.net/publication/275771971_Random_Tree_Walk_toward_Instantaneous_3D_Human_Pose_Estimation获得)描述来进行训练。
[0484] 在树Tdist,j的每个叶节点处都有一组距离。一旦遍历了距离树,就到达一个叶节点,在该叶节点处,取该叶节点处的中值距离(median distance)作为估计的距离。对于树Toffset,j,在每个叶节点处计算聚类。一旦到达该树的叶节点,就取随机选择的聚类的平均定位,选择聚类的概率与聚类中样本的数量成比例。在4208处,确定从每个采样点到估计的位置的距离。优选地,通过使用如下树来计算上述距离。针对要被估计定位的每个关节存在若干候选定位。
[0485] 假设有Nj个关节j∈J,其中J={1,...,Nj}。对于每一个关节,都会生成由C={1,...,Nc}索引的Nc个候选者。具有i∈C的每个候选者ci,j=(pi,j,di,j)由在相机坐标系中关节的建议定位的定位pj,i∈R3和距离di,j∈R(以米为单位)组成,距离di,j是定位pi,j离实际的、未知的关节定位有多远的估计值。距离di,j=0将意味着候选者是真实未知的3D定位的一个非常好的估计值。换句话说,它是对pi,j如何精确地逼近该真实未知的位置的一种估计度量。
[0486] 让r∈R为从一组随机数R中随机生成的数字。让f∈F表示一组帧F中的输入深度3 3
帧,其由具有与每个像素相关联的深度值的像素组成。让Sdirdist,j:R×F×R→R 表示以下过程:给定定位x∈R3,使用在该定位处的树Tdir,j来计算方向q,并且使用在该定位处的树Tdir,j来计算距离d,获得一个新定位y=x+dq。换句话说,在给定某个定位x的情况下,可以通过首先计算朝向新定位的方向,然后按估计的距离缩放该方向,且最后将其添加到当前定位来估计关节定位y。因此,如果有定位x,那么对于给定的帧f和随机数r,按照y=Sdirdist,j(x,f,r)就可以获得估计的定位y。随机数r被用于随机地选择在树Tdir,j的叶节点处的聚类。
[0487] 也可以定义Soffset,j:R3×F×R→R3以表示以下过程:给定定位x,使用树Toffset,j估计偏移p∈R3,且然后按照y=x+p计算估计的关节定位y∈R3。对于每个候选定位pi,j∈R3,通过评估在该候选定位处的树Tdist,j来估计到真实定位的距离di,j。
[0488] 然后在4210处,优选地执行用于确定关节的真实位置和用于选择候选点的优化问题。可以关于在每对关节之间的相对长度约束和/或根据在角度上的约束来执行优化。步骤4210可以如下根据利用在每对关节之间的相对长度约束的动态优化来执行。骨架模型确定可能的长度范围的信息。然后,动态优化算法可以根据在每对关节之间可能的相对长度,来求解表示每对关节中关节的候选点的位置,之后该算法确定全局解。不需要考虑所有可能的分配,而只需要考虑每对相连的关节的分配。为了执行该计算,使用了用于建模人体骨架结构的模板。这些模板可选地可以是前面描述的模板,或者可选择地可从http://h-anim.org/Specifications/H-Anim1.1/append ices.html#appendixa处获得。使用了下面描述的目标函数,其从模板获取边(edge)(在每对关节之间的距离)和信息,并返回在模板中两个关节之间的距离。
[0489] 具体而言,目标函数可以定义如下。假设关节是树形结构图的顶点,树形结构图由一组边 连接。此外,考虑由t∈T且T={1,...,Nt}索引的Nt模板并引入函数D:E×T→R,函数D提供在骨架模板中边的长度(以米为单位)。优化问题的解是矢量I∈J Nc,矢量I是与每个关节相关联的候选者的索引,其中ij表示与关节j相关联的候选索引:I=(i1,i2,...,iNj)。
[0490]
[0491] 要被优化的参数是所有关节的骨架模板索引t和候选分配的矢量I。目标函数的左和是优化问题的数据项:对于候选者ij和关节j,该估计的距离是dij,j。目标函数的右和是优化问题的正则(regularization)项:给定模板t,对于树形结构骨架的每条边(m,n),其中m和n指的是关节,模板距离D((m,n),t)被候选者的两个定位pim,m和pin,n违背了多少。可以列举上述优化问题的所有解,并且可能的解的数量是
[0492] α参数是试探性地确定的,并且其已经被发现具有有用的值,特别是在0.4和1之间。对于有噪声的数据,α值较高,而对于干净的数据,α值较低。对于干净的数据,α项至少是0.001。如上所注释的,为了以高效的计算方式解决优化问题,由于骨架的树形结构,可以使用动态优化方法来在合理的时间量内计算全局最优。Felzenszwalb、Pedro F.和Ramin Zabih.在IEEE transactions on pattern analysis and machine intelligence的第33卷第4期(2011年)第721-740页的“Dynamic programming and graph algorithms in computer vision”中描述了可以应用于该问题的合适的动态优化方法的一个非限制性示例。(可在http://www.cs.cornell.edu/~rd z/Papers/FZ-survey.pdf处获得)。
[0493] 在4212处,可选地,使用至少一个经训练的分类器树来评估每个候选点用作表示关节的位置的适当性。优选地,训练树以确定从点到关节的方向,以及还用于估计从给定的3D定位到特定关节位置的距离。对于每个候选定位,树可以被用于确定候选者在解释关节的实际位置方面有多优秀。在一些实施例中,可以如前所述使用两组不同的树。因为方向单独不能确定候选者离特定位置有多接近,所以在一些实施例中,还使用距离树。可选地,可以训练树使得给定一个特定数据点,该点与特定关节有多接近。参考本文使用的表示法,通过将Sdirdist,j或Soffset,j应用于该定位或者优选地应用两者来进一步细化分配,以便获得更接近于真实关节定位的定位。
[0494] 可选地,在4214处,候选点可以作为特征被用于第二过程以进行细化,从而更好地定位关节。可选地,可以重复算法的步骤4206-4212,但是(根据一些实施例)将这些候选点作为初始估计。该过程可以可选地重复不止一次,可选地具有附加的、不同的特征。
[0495] 另外,可选地,用于训练前面描述的树的初始训练过程可以从Jung等人于2015年6月在CVPR会议上发表的“Random Tree Walk toward Instantaneous 3D Human Pose Estimation”(可从http://www.research gate.net/publication/275771971_Random_Tree_Walk_towards_instant_3D_Hu man_Pose_Estimation获得)中描述的方法得到改进。在该文章中,用于划分训练样本所使用的特征如方程6中所示被确定:
[0496]
[0497] 其中F是当前帧, 是我们评估特征的3d定位,dF(x)是在x处的图像深度以及和 是两个偏移。
[0498] 例如,假设当前定位具有分量x1、x2和x3,即x=(x1,x2,x3),可以如下添加新特征从而将当前点的深度与某个随机邻近点处的深度进行比较:
[0499]
[0500] 其中 是随机偏移。
[0501] 进一步的细化可以可选地以训练一组新的树为特征,该一组新的树也包括先前的估计值。这将包括特征:
[0502]
[0503] 其中|u|=1的u∈R3是随机选择的单位矢量,j是联合索引,x∈R3是评估特征的定位以及符号“·”表示两个矢量的点积。换句话说,该特征利用给定点x∈R3和该点的先前估计值p*j计算偏移,以获得考虑了先前知识的特征。除了(或代替)在前面描述的文章中提供的特征之外,这可以使用关于不同的关节j和随机单位矢量u的这种新特征来像以前一样被用于训练树。
[0504] 对于给定的帧,使用经过训练的树来检测第一定位p*j。然后重新运行算法,但是使用经过训练的第二组树,除了图像数据之外,第二组树还使用检测值p*j用于第二特征。该细化的定位可被用作新的输入特征,并且然后对于每个关节获得一个甚至更好的细化p*j3。根据期望可以重复该过程许多次。如果执行该过程n次,那么对于每个关节j将会有位置p*jn。
[0505] 在不希望受到单一假设的限制情况下,相对于从Jung等人于2015年6月在CVPR会议上发表的“Random Tree Walk toward Instantaneous 3D Human Pose Estimation”(可从http://www.research gate.net/publication/275771971_Random_Tree_Walk_towards_instant_3D_Human_Pose_Estimation获得)和/或根据Shotton等人于2011年发表的“Efficient Human Pose Estim ation from Single Depth Images”中提供的描述内容,图42的方法具有许多优点。Jung等人的文章中描述的方法有许多缺点,包括关于核心随机行走算法,其倾向于与实际期望的拟合模型显著偏离。Shotton等人的文章中描述的方法要求每个像素对特定位置进行投票,首先确定与对象相对的背景,且然后确定对象内的每个关节的位置,因为这些点被确定为偏离关节;这种方法在计算上非常昂贵。
[0506] 可选地,本文公开的方法实施例中的至少一些实施例可以与SLAM(同时定位和映射)相结合,如在例如以PCT申请号为PCT/US18/14508于2018年1月19日提交的“SYSTEMS,METHODS,DEVICE AND APPARATUSES FOR PERFORMING SIMULTANEOUS LOCALIZATION AND MAPPING”中所述,该申请与本申请共同被拥有并且与本申请具有至少一个共有的发明人,该申请的全部公开内容通过引用并入本文,如同在本文完全阐述一样。
[0507] 例如但不限于,其中所述的SLAM系统被提供用于可穿戴设备,所述穿戴设备包括但不限于可选地包括显示屏的头戴式可穿戴设备。这种系统、方法和装置可以被配置成例如通过用计算设备执行的计算来在动态构建的图内精确地(并且在一些实施例中,快速地)定位可穿戴设备。这种计算设备的非限制性示例是智能蜂窝电话或其他移动计算设备。为此,根据至少一些实施例,SLAM系统、方法和装置可以支持VR(虚拟现实)应用、AR(增强现实)应用,等等。
[0508] 此外,可选地,本文所述的方法和系统实施例中的至少一些实施例可以与面罩相结合,例如在以美国专利申请第15875306号于2018年1月19日提交的“SYSTEM,METHOD,DEVICES AND APPARATUSES FOR DETECTING FACIAL EXPRESSION IN A VIRTUAL REALITY SYSTEM”、以美国专利申请第15875382号于2018年1月19日提交的“SYSTEM,METHOD AND APPARATUS FORDETECTING FACIAL EXPRESSION IN AN AUGMENTED REALITY SYSTEM”、和/或以美国专利申请第15875227号于2018年1月19日提交的“SYSTEMS,METHODS,DEVICES AND APPARATUSES FOR DETECTING FACIAL EXPRESSION”中的任一个中所述;其中的每一个申请都与本申请共同被拥有并且与本申请具有至少一个共有的发明人,并且其中的每一个申请都通过引用并入本文,如同在本文被完整阐述一样。
[0509] 例如但不限于,这种面罩可以作为促进一种根据肌电图(EMG)信号进行面部表情检测的快速、有效的机制的装置、方法、和系统来被提供。在一些实现方式中,这样的装置、方法和系统可以根据可以在移动设备(包括但不限于平板电脑、智能手机,等等)上操作而没有显著的延迟的EMG信号检测面部表情。
[0510] 相应地,这种面罩可被用于例如VR(虚拟现实)或AR(增强现实)应用,其中用户的脸可被头盔或其他装备部分地或完全遮挡,以促进VR现实或AR现实体验。面罩然后可以被用于检测用户的情绪状态。
[0511] 图43-46涉及可以组合各种先前描述的方法并且可以用任何上述的系统来实现的组合方法。
[0512] 图43和图44示出了根据本公开的至少一些实施例的用于将VR(例如通过VR应用)应用于医学治疗的方法的非限制性示例,其特征还在于跟踪用户的身体和用于在周围环境中定位用户的SLAM。图43示出了用于将VR应用于医学治疗的方法的示例——例如,帮助被截肢者克服幻肢综合征。在4302处,该方法包括通过(例如)扫描可以确定用户(例如被截肢者)的身体或其一部分(例如躯干和/或特定肢体)的形态。可以执行这种扫描,以便为用户创建在VR环境中观看的更逼真的化身,使得用户在VR环境中当“向下看”时能够看到逼真地看起来“属于”用户自己的身体的身体部位。
[0513] 在4304处,可选地,扫描用户熟悉的环境,其中可以执行这种扫描以在VR环境中为用户创建更逼真的环境版本。然后,用户可以环顾VR环境并看到在外观上对应于用户熟悉的真实物体的虚拟物体。
[0514] 用户例如通过穿戴上可穿戴设备(如本文所述)进入VR环境(在4306处)和/或以其他方式启动VR应用。对于该非限制性方法,可选地,可以提供跟踪传感器来跟踪用户的一个或更多个物理动作,例如用户的身体的一个或更多个部位的一个或更多个运动。如前所述,这种跟踪传感器的非限制性示例是Microsoft的Kinect,或者Leap Motion传感器,但是优选地如本文描述的任何跟踪实现方式。同样如本文所述,本文所述的任何跟踪实现方式都可以针对缺失肢体的不存在的情况进行调整或校准,以便提供对用户的身体进行精确跟踪。
[0515] 在4308处,用户“观看”幻肢——即被截肢了的肢体——如同其仍然附着在用户的身体上一样。例如,如果被截肢了的肢体是用户的左臂,那么用户随后在VR环境中看到他/她的左臂如同有功能的肢体仍然附着在他/她的身体上。可选地,为了使被截肢的肢体能够被活性使用,用户的功能性右臂可被用于创建“镜像”左臂。在该示例中,当用户移动他/她的右臂时,镜像的左臂看起来移动了并且可以被视为在VR环境中移动。如果先前扫描了用户熟悉的环境,那么VR环境可以被呈现为该熟悉的环境,这可以为用户带来强大的治疗效果,例如,如下面关于减少幻肢疼痛的描述。在2510处,可选地并且优选地,将观看幻肢的能力结合到在VR环境中执行的一个或更多个治疗活动中。
[0516] 在执行这些活动时,可以监测用户的面部表情,例如,以确定用户是表现出疲劳还是痛苦(4312)。可选地,治疗师可以远程监测用户的活动和面部表情,准备好通过VR环境进行干预以帮助用户,例如通过与用户通信(或者成为VR环境中的化身)。
[0517] 在4314,跟踪用户的身体,从而随着时间推移可以确定用户的一个或更多个身体部位的位置。这种跟踪可被用于例如增加用户的化身身体和幻肢的逼真视图,以及更逼真地呈现用户的化身与环境的交互。可选地,还包括SLAM,同样是为了在环境中更逼真地定位用户。SLAM和跟踪的组合可以例如被用于更有效地评估用户的运动,例如用于确定用户的运动范围和/或运动质量等。
[0518] 本领域技术人员将理解,上述方法可用于减少幻肢疼痛(被截肢者感觉到与缺失肢体相关的强烈疼痛)。这种疼痛已经用镜像疗法成功地进行了治疗,在镜像疗法中,被截肢者在镜子中观看未被截肢的肢体(例如,参见由Kim和Kim于2012年10月在Korean J Pain 25(4):272–274发表的文章“Mirror Therapy for Phantom Limb Pain”)。本文描述的VR环境可以为用户提供更逼真且更强大的方式来观看和操作未被截肢的肢体,并从而减少幻肢疼痛。
[0519] 图44示出了根据本公开的至少一些实施例的用于将VR应用于医学治疗的另一非限制性示例方法,其可以向遭受中风(例如脑损伤)的受试者提供治疗环境。在该非限制性示例中,受试者被鼓励玩“Simon says”的游戏,以便治疗半侧空间忽视。在“Simon says”的游戏中,一个玩家(在该示例中该玩家可能是VR化身)执行动作,其他的玩家要复制该动作——但仅在“Simon”玩家说“Simon says(执行动作)”时。当然,对于该非限制性示例,可以放弃这个要求,该非限制性示例仅根据用户观看动作和复制动作来进行描述。4402-4406可以类似于图43的4302-4306。
[0520] 在4408处,用户观看Simon化身,Simon化身可选地是另一个玩家(例如治疗师)或者可选择地是由VR系统生成的非玩家角色(NPC)。优选地,用户将Simon化身感知为站在他或她的面前,并且面向用户。用户可选地具有他或她的自己的用户化身,用户化身根据用户的头部和身体的定位表示用户的身体的对用户通常可见的那些部位。在该非限制性示例中,该化身被称为用户的化身。
[0521] 在2610,Simon化身可以发起动作,用户要用用户自己的身体来模仿该动作。动作包括至少一个身体部位的运动,并且可选地还包括面部表情。在2612处,用户复制——或者至少尝试去复制——Simon化身的动作。用户可以看到Simon化身以及根据用户的头部和身体的定位被预期可见的用户化身的那些部位。可选地,对于2610和2612,用户的化身还可以被放置在用户前面,例如Simon化身旁边。然后,用户可以看到Simon化身(用户将需要复制Simon化身的视觉动作),以及用户的身体实际上如何利用用户的化身来执行这些动作。可以如本文所述地跟踪用户的运动,以便增加用户的化身的呈现以及由该化身显示的相对应的运动的真实感。如前所述,SLAM还可以单独被使用或与跟踪结合使用,以增加环境和用户在该环境中的动作的真实感,还可选地增加关于化身的运动的真实感。
[0522] 在2614处,如果用户未能准确地/正确地复制Simon化身的动作,则该化身优选地重复该动作。这个过程可以持续预定的一段周期,或者直到用户实现至少一个治疗目标为止。在2616处,可以可选地对用户执行这种动作的能力进行评分,这种评分可以包括对身体动作和面部表情的单独评分。这种评分可以在如本文所述执行的跟踪的帮助下增加或被执行,以便更准确地评估用户的动作。还可以结合SLAM,以进一步提高评估的准确度。在2618处,即使动作不包括特定的面部表情,也可以监测用户在执行动作时的面部表情,以便评估用户在执行这些动作时的情绪。
[0523] 图45示出了根据至少一些实施例的用于应用VR来提高用户执行ADL(日常生活活动)的能力的非限制性示例方法。4502-4506可以类似于图43的4302-4306。
[0524] 在4508中,如前所述,可选地校准用户的动作范围,以便确定对于特定动作或一组动作(例如对于特定姿势或一组姿势)用户的运动范围。例如,但不限于,如果用户不能达到正常的动作范围,那么可以根据用户能够达到的动作的范围来调整系统。在4510中,作为要在VR环境中执行的活动的非限制性示例,例如作为治疗活动,用户在VR环境中触及虚拟物体。
[0525] 在4512中,例如在能够触及并抓住虚拟物体方面,或者在能够在VR环境中执行治疗任务方面,评估用户的能力。可选地,在4514中,用户被要求复制动作(例如由系统或“Simon”化身展示的动作)。这种动作可被用于进一步确定用户的能力。在如本文所述执行的跟踪的帮助下可以执行这种评估行为,以便更准确地评估用户的动作。还可以结合SLAM,以进一步提高评估的准确度。
[0526] 然后,在4516中,系统可以确定需要改进哪些动作,例如以便改进日常生活活动。例如,但不限于,用户可能需要改进抓握动作,以便能够作为ADL的一部分来操纵物体。然后,在4518中,可以建议一个或更多个额外的治疗活动。可以重复该过程,对于用户执行ADL动作的能力以及在其任何改进方面,对他/她进行评估。
[0527] 图46示出了根据至少一些实施例的用于应用AR来提高用户执行ADL(日常生活活动)的能力的非限制性示例方法。步骤4602-4606可以类似于图25的4302-4306。
[0528] 在4608中,如前所述,可选地校准用户的动作范围,以便确定用户关于特定动作或一组动作(例如对于特定姿势或一组姿势)的运动范围。例如,但不限于,如果用户不能达到正常的动作范围,那么可以根据用户能够达到的动作的范围来调整系统。在4610中,作为要在AR环境中执行的活动的非限制性示例,例如作为治疗活动,用户在AR环境中触及实际物体或虚拟物体。然而,可选地,用户对虚拟物体至少触及一次且对实际物体至少触及一次,以便确定用户在与实际物体交互方面的能力。此外,通过这两种方式,可以在真实和虚拟环境中评估用户的能力。可选地,在一些实施例中,AR环境被用于诊断和测试,而VR环境被用于训练和其他治疗活动。
[0529] 在4612中,例如在能够触及并抓住虚拟和/或真实物体方面,或者在能够在AR环境中执行治疗任务方面,评估用户的能力。可选地,在4614中,用户被要求复制动作(例如由系统或“Simon”化身展示的动作)。这种动作可被用于进一步确定用户的能力。在如本文所述执行的跟踪的帮助下可以执行这种评估行为,以便更准确地评估用户的动作。还可以结合SLAM,以进一步提高评估的准确度。跟踪和/或SLAM还可以被用于评估用户在VR和AR环境之间的动作,例如,以确定在VR环境中的评估是否被准确地执行。
[0530] 然后,在4616中,系统可以确定需要改进哪些动作,例如以便改进日常生活活动。例如,但不限于,用户可能需要改进抓握动作,以便能够作为ADL的一部分操纵物体。然后,在4618中,可以建议一个或更多个额外的治疗活动。可以重复该过程,对于用户执行ADL动作的能力以及在其任何改进方面,对他/她进行评估。
[0531] 附录(骨架的部分描述)
[0532] #均以世界坐标表示
[0533]
[0534]
[0535]
[0536] 虽然各种发明实施例已经在本文中被描述和示出,但是本领域的普通技术人员将容易设想多种其他的用于执行功能和/或获得在本文中描述的结果和/或一个或更多个优点的手段、结构、步骤、和/或功能,并且这样的变型和/或修改中的每个都被视为在本文描述的发明实施例的范围内。更一般地,本领域的技术人员将容易理解,本文描述的所有参数、尺寸、材料、结构、功能、步骤、过程、和配置都表示是示例性的,并且实际的参数、尺寸、材料、结构、功能、步骤、过程、和配置将取决于具体应用或本发明教导内容所用于的应用。本领域的技术人员将认识到或者能够仅使用例行实验来断定本文描述的具体发明实施例的许多等同物。因此,应当理解,本文公开的实施例仅作为示例给出,并且这些实施例(以及由本公开明确地、隐含地或固有地支持的任何实施例)可以以不同于具体描述的和要求保护的方式来被实践。本公开的一些实施例针对本文描述的每个单独的特征、系统、功能、物品、材料、说明书、步骤、套件、和/或方法,并且如果这些特征、系统、功能、物品、材料、套件、步骤、和/或方法不是相互不一致的,则两个或更多个这样的特征、系统、功能、物品、材料、套件、步骤、和/或方法的任意组合被包括在本公开的发明范围内。另外,本公开的一些实施例相对于现有技术是创造性的,具体地说,缺少在这样的现有技术中公开的一个和/或另一个特征/功能(即,对这些实施例的权利要求可能包括区别于这样的现有技术的否定限制)。
[0537] 此外,各种发明概念可以体现为一个或更多个步骤/方法,其示例已经被提供。作为方法的一部分所执行的动作可以以任何合适的方式排序。相应地,可以构建这样的实施例,其中动作以不同于示出的顺序来执行,这可以包括同时执行一些动作,即使这些动作在示出的实施例中显示为顺序动作。
[0538] 在本申请中提出的对包括但不限于专利、专利申请、文章、网页、书籍等的出版物或其他文件的任何和所有引用,通过引用以其整体并入本文。
[0539] 本文定义和使用的所有定义应理解为是关于字典定义、通过引用并入的文件中的定义、和/或所定义术语的普通含义进行约束的。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈