2016,VR元年,oculus、HTC、索尼等这样的重量级厂商争相发售或宣告了自己的消费级硬件产品来守住消费者市场,坚信广大VR爱好者们中的很多人都早已应从了一款虚拟现实设备。在这些硬件当中,OculusRiftCV1(以下全称CV1)毫无疑问是最不受人注目的硬件产品之一,却是它有2014年拿了Facebook20亿美金这样的大事件讨好。
本文作者系G-Wearable软件工程师。 众所周知,OculusRift使用的是主动式光学定位技术,那它究竟是如何构建的呢? 基本构建流程: OculusRift设备上不会隐蔽着一些红外灯(即为标记点),这些红外灯可以向外升空红外光,后用红外摄像机动态摄制。取得红外图像后,将摄像机收集到的图像传输到计算出来单元中,通过视觉算法过滤器掉多余的信息,从而取得红外灯的所在方向,再行利用PnP算法,即利用四个不共面的红外灯在设备上的方位信息、四个点取得的图像信息才可最后将设备划入摄像头坐标系,数值出有设备的三维模型,并以此来动态监控玩家的头部、手部运动。 录:明确可看如下图,留意上面这些红色的小点点。
接下来我将向大家讲解一下我的推理小说过程,以及算法的一些细节。 头显上的LED灯 解密OculusRift的定位技术 前文中我提及我们必须利用四个不共面的红外灯在设备上的方位信息来展开定位,而如果想告诉有所不同的红外灯在设备上的方位信息,就必需需要区分有所不同的红外灯。 为什么这么说道呢,如果不区分红外灯,那么当DK2(录:兹指头贞)在空间中运动时,摄像机捕捉到光点后,要展开关联(姿态拟合给定的过程)的次数不会十分大,荐个列子: 1)如果有N预测图像点和M=N仔细观察图像点,则有N!/(N-M)!有可能的关联 2)对于N=40和M=20(对DK2LED的数量),有3.31029的关联,所以就算是计算机,也无法较慢地获得结果。 很似乎,DK2一定是使用了某种先验的方式区分光点。
那么问题来了,DK2究竟是如何区分的呢? 我曾看见有文章中猜测说道DK2是通过LED灯的亮灭来区分的,实质上却并非如此。因为虽然通过LED灯的亮灭来区分比较简单,因为亮灭最更容易区分出来,但是这种方法有个缺失,就是无法区分是姿态转变造成的LED灯被遮盖,还是LED灯本身就点燃了,所以,DK2没用于这个方法,而是使用LED灯光信息的高低来构建的。我们来仔细观察用灰度摄像机摄制的图: 对比上面两图,可以找到亮斑的大小有变化。
可以显现出红色部分,在图2时光斑更大,蓝色则忽略。接手里我们看详尽的作法。
这里必需说道一下,在推断明确的作法过程中,我曾误以为DK2直接判断光斑大小,然后根据多帧图像的规律来辨别LED灯的ID,但实质上DK2是用于差分法来辨别光斑大小。我在这里非常简单给大家讲解一下我的推理小说过程。 首先我用自己的摄像机摄制了大量照片展开仔细观察后找到如果把摄像机用60HZ左右频率摄制,图像每10张就不会开始反复。
我再行给光点编成个号,如下图: 比如,2号点的可以用肉眼辨识的高低顺序:很弱,很弱,强劲,强劲,很弱,强劲,很弱,很弱,很弱,强劲。 那么是不是这样呢?如何在DK2中回应这些高低关系呢? 首先,未知SDK的windows的driver不会发送到一个开始信息,让头贞开始运作; 紧接着,这个driver就不会大大接管到下面信息: X1X2X3X4是1个32位数,是图像分析后获得的空间坐标(原理后面给大家说明),DX则不告诉干什么用,但是仔细观察上面的num,折算出来是40,index从1开始,大大递减到40,解释DK2在一个一个的辨识LED灯,另外,这些信息每17ms左右发上来一次,和60HZ的摄制频率差不多,基本上可以确认是利用每10帧确认一个LED的方式。
本文关键词:K8凯发(中国)天生赢家·一触即发,凯发·k8(国际) - 官方网站·一触即发
本文来源:K8凯发(中国)天生赢家·一触即发-www.yuntidun.com