天道酬勤,学无止境

Android VR Toolkit - HeadTransform getHeadView matrix representation

I'm starting with Android VR-Toolkit for google cardboard. I use the sample at google website: https://developers.google.com/cardboard/get-started

I new with openGL and try to figure out how the values are represented by the system. For example HeadTransform.getHeadView set a 4x4 matrix and according to the documentation:

A matrix representing the transform from the camera to the head. Head origin is defined as the center point between the two eyes.

My question is what represents every value (each cell) in the matrix?

评论

Google Cardboard 's headTransform.getHeadView() provide a transform matrix holding bothrotation and translation transforms (of the head).

Here is the matrix layout (column major order)

Rxx Ryx Rzx x
Rxy Ryy Rzy y
Rxz Ryz Rzz z
0    0    0 1
  • [x, y, z] is the translation matrix. The vector is [0,0,0] in my tests.
  • [Rxx, Rxy, Rxz] is the x axis after the rotation (replace Rx by Ry for the Y axis and so on).

If you are new in OpenGL maybe vr toolkit is not the best place to start learning opengl.

You could find this interesting ftp://ftp.informatik.hu-berlin.de/pub3/Linux/Qt/QT/developerguides/qtopengltutorial/OpenGLTutorial.pdf

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Display a gstreamer video feed into Google Cardboard SurfaceTexture
    I'm using gstreamer to retrieve a video feed (sent from a RaspPi), and I need to display it into Google Cardboard. I based my work on the tutorial-3 example of gstreamer. I managed to display my video into a SurfaceView, by giving my Surface (retrieved from SurfaceView.SurfaceHolder.getSurface(), but I now need to connect it with the Google Cardboard. If I do not mistake, Google Cardboard relies on some SurfaceTexture. So I thought it would be easy to simply get the Surface from the SurfaceTexture using the Surface(SurfaceTexture) constructor. The problem is that it simply doesn't work. My
  • 7个VR开发中容易混淆的概念:SteamVR、OpenVR、OpenXR……
    在进行Unity VR应用程序开发过程中,有几个容易混淆的概念, 本文将尝试做一次区分,如果有任何疑问,读者可在文末留言共同讨论。这几个概念包括OpenVR 、OpenVR Desktop、OpenVR XR Plugin、SteamVR、SteamVR Plugin、OpenXR以及OpenXR Plugin,以下: OpenVR OpenVR是Valve公司开发的一套包含一系列SDK和API的工具集,旨在从驱动层级为硬件厂商提供软硬件开发支持。硬件设备制造商可以为设备开发OpenVR 驱动程序,以使设备能够运行在SteamVR平台上。 虽然OpenVR是HTC Vive默认使用的驱动程序,但它的开发目的是为了得到更多厂商的支持,例如,开发者也可以为Oculus Rift或Windows MR 设备开发基于OpenVR的软件应用。 OpenVR 需要注意的是,OpenVR虽然也提供了一套开发标准,但是相较于OpenXR,其覆盖范围相对较小,另外,Valve 从SteamVR客户端1.16开始,已经对OpenXR标准进行了全面的支持。 作为Unity开发者来说,并不需要太多关心OpenVR及其SDK,因为这更多的是面向VR硬件平台和游戏引擎开发商来进行使用的。 OpenVR Desktop Unity需要各VR硬件平台提供与对应底层驱动程序通信的工具包来完成VR应用程序的渲染等工作
  • [Android并排摄像头([android Side By Side Camera)
    问题 嗨,我想在我的Android手机上并排显示实时摄像头预览。 像这样: https://lh6.googleusercontent.com/-Ngo4tD4AvWY/U8JOHxxQ9KI/AAAAAAAACK8/NZjnw1Yqg8A/w384-h287/2.jpg 如果仅左半屏幕显示实时预览,或仅显示右侧,则可以使用,但是如果我想同时显示左侧和右侧,我只会出现黑屏,而且我不知道为什么。 显现 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.test.normaltest.sbscameraview" > <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="
  • [论文笔记]Cluster-GCN: An Efficient Algorithm for Training Deep and Large Graph Convolutional Networks
    文章目录 Abstract 1. Introduction Previous GCN Training Algorithms 2. Background 图卷积网络(GCNs) 3. Proposed Algorithm Why does vanilla mini-batch SGD have slow per-epoch time? Embedding utilization can reflect computational efficiency 3.1 Vanilla Cluster-GCN Time and space complexity 3.2 Stochastic Multiple Partitions 3.3 Issues of training deeper GCN 4. Experiments 4.1 Training Performance for median size datasets Training Time vs Accuracy Memory usage comparison 4.2 Experimental results on Amazon2M A new GCN dataset: Amazon2M 4.3 Training Deeper GCN State-of-the-art results by training deeper GCNs
  • [论文笔记]Cluster-GCN: An Efficient Algorithm for Training Deep and Large Graph Convolutional Networks
    文章目录 Abstract1. IntroductionPrevious GCN Training Algorithms 2. Background图卷积网络(GCNs) 3. Proposed AlgorithmWhy does vanilla mini-batch SGD have slow per-epoch time?Embedding utilization can reflect computational efficiency 3.1 Vanilla Cluster-GCNTime and space complexity 3.2 Stochastic Multiple Partitions3.3 Issues of training deeper GCN 4. Experiments4.1 Training Performance for median size datasetsTraining Time vs AccuracyMemory usage comparison 4.2 Experimental results on Amazon2MA new GCN dataset: Amazon2M 4.3 Training Deeper GCNState-of-the-art results by training deeper GCNs 5
  • SLAM开发最强最全资源汇总
    以下内容由公众号:AIRX社区(国内领先的AI、AR、VR技术学习与交流平台) 整理发布 不断更新中~ 入门 视觉SLAM的基础知识-高翔(高翔博士)-----视频,吐血推荐 关于slam SLAM简介 SLAM第一篇:基础知识 SLAM_介绍以及浅析 SLAM的前世今生 终于有人说清楚了(张一茗) SLAM for Dummies(一本关于实时定位及绘图(SLAM)的入门指导教程) 提取码:k3r3 STATE ESTIMATION FOR ROBOTICS (吐血推荐) 提取码:y7tc 基础 数学基础 计算机视觉中的数学方法 提取码:afyg ----本书着重介绍射影几何学及其在视觉中的应用视觉SLAM中的数学基础 第一篇----3D空间的位置表示视觉SLAM中的数学基础 第二篇----四元数视觉SLAM中的数学基础 第三篇----李群与李代数李群和李代数 提取码:92x2 语言编程基础 菜鸟教程----学习C++与python基础语法python计算机视觉编程 提取码:kyt9OpenCV3编程入门_毛星云编著----C++实现 提取码:qnms 计算机视觉基础 计算机视觉算法与应用中文版 提取码:b8y1特征提取与图像处理 提取码:hgy2机器视觉算法与应用 提取码:hxgn 泡泡机器人SLAM 优质视频课程----视觉slam十四讲 视觉slam十四讲1-2
  • 如何并排显示两个相机预览?[对于纸板应用](How to show 2 camera preview side by side?[For cardboard apps])
    问题 我正在尝试构建一个Cardboard android应用程序,该程序并排显示2个摄像头视图。 [就像相机视图适用于VRCinema Android应用一样。] 因此,我研究了来自GitHub的Cardboard代码,进行了一些修改,到目前为止,我能够使用imageView并排复制相同的图像。 到目前为止,《守则》看起来像这样。 AndroidManifest.XML <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.vrtoolkit.cardboard.samples.treasurehunt" > <uses-permission android:name="android.permission.NFC" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE
  • How to show 2 camera preview side by side?[For cardboard apps]
    I am trying to build a Cardboard android application that shows 2 camera view side by side. [Just like the camera view works for VRCinema Android app.] So I studies the Cardboard code from GitHub, made some modification and so far I am able to use the imageView to replicate the same image side by side. and the Code so far looks like this. AndroidManifest.XML <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.vrtoolkit.cardboard.samples.treasurehunt" > <uses-permission android:name="android.permission.NFC" /> <uses
  • 在非常大的稀疏矩阵上应用PCA(Apply PCA on very large sparse matrix)
    问题 我正在用R进行文本分类任务,并获得了一个文档项矩阵,其大小为22490 x 120,000(只有400万个非零条目,少于1%的条目)。 现在,我想通过使用PCA(主成分分析)来降低尺寸。 不幸的是,R无法处理这个庞大的矩阵,因此我将这个稀疏矩阵存储在“矩阵市场格式”的文件中,希望使用其他技术来进行PCA。 因此,任何人都可以给我一些有用的库(无论使用哪种编程语言)的提示,它们可以轻松地使用此大规模矩阵进行PCA,或者由我自己进行长期的PCA,换句话说,首先要计算协方差矩阵,然后然后计算协方差矩阵的特征值和特征向量。 我想要的是计算所有PC(120,000),并仅选择占90%方差的前N个PC 。 显然,在这种情况下,我必须给先验阈值以将一些非常小的方差值设置为0(在协方差矩阵中),否则,协方差矩阵将不会稀疏,其大小将为120,000 x 120,000,即一台机器无法处理。 同样,载荷(特征向量)将非常大,应以稀疏格式存储。 非常感谢您的帮助! 注意:我使用的机器具有24GB RAM和8个CPU内核。 回答1 Python工具箱scikit-learn有一些PCA变体,其中RandomizedPCA可以处理scipy.sparse支持的任何格式的稀疏矩阵。 scipy.io.mmread应该能够解析Matrix Market格式(不过,我从未尝试过)。 免责声明
  • DICOM VR数据类型表
    DICOM标准在 PS3.5中定义了27 个基本数据类型,就是所谓的值表现(VR, ValueRepresentations)。值表现是用来封装所有可能的临床数据类型的。在 DICOM 中写任何东西都必须符合这 27 个基本数据类型中的一个。每个 VR 都是两个英文字母的缩写。下表列出了这 27 个基本数据类型的定义。DICOM VR(Value Representations)表VR含义允许的字符数据长度CS - Code String代码字符串开头结尾可以有没有意义的空格的字符串,比如“CD123_4”大写字母,0-9,空格以及下划线字符最多 16 个字符SH - Short String短字符串短字符串,比如:电话号码,ID等最多 16 个字符LO - Long String长字符串一个字符串,可能在开头、结尾填有空格。比如“Introduction to DICOM”最多 64 个字符ST - Short Text短文本可能包含一个或多个段落的字符串最多 1024 个字符LT - Long Text短文本可能包含一个或多个锻炼的字符串,与LO相同,但可以更长最多 10240 个字符UT - Unlimited Text无限制文本包含一个或多个段落的字符串,与 LT 类似最多(2的32次方–2)个字符AE - Application
  • Java中二维矩阵的表示与转换
    Java中二维矩阵的表示与转换 矩阵在线性代数中有着广泛应用,在科学计算、数据分析处理、线性方程等领域也有着广泛应用,可惜JDK中没有相关的矩阵运算工具包,我自己想实现一个,遗憾的是大学里学的线性代数都忘记完了,书本早已回炉再造了。仅仅实现了点点基础的数据转换层的类实现。现先放到这里,希望有兴趣的博友能继续完善! import java.util.ArrayList; import java.util.Iterator; import java.util.logging.Logger; /** * 二维结构转换 * File: MatrixStructure.java * User: leizhimin * Date: 2008-3-10 16:29:36 */ public class MatrixStructure { private static Logger log = Logger.getLogger(MatrixStructure.class.getName()); /** * 将结果集二维集合数据转换为XML * * @param columns 列名集合 * @param result 二维结果集 * @return 返回格式良好的XML字符串 */ public static String listToXML(ArrayList<String> columns
  • 如何入手Kaldi和语音识别
    如何入手Kaldi和语音识别 什么是KaldiKaldi的三个部分预处理和特征提取模型训练过程 什么是Kaldi Kaldi是一个用于处理语音数据的开源工具包。 它已用于语音相关应用程序中,主要用于语音识别,但也用于其他任务,例如说话人识别和说话人区分。 该工具包已有大约7年历史,但仍在不断更新。 Kaldi在学术界(2015年被引用400多次)和行业中被广泛采用。 Kaldi的三个部分 预处理和特征提取 如今,大多数处理音频数据的模型都可以使用该数据的pixel-based的表示形式。 当想要提取这样的表示形式时,您通常会希望使用对以下两点都有利的特征: 识别人类语音丢弃任何不必要的噪音。 多年来,人们进行了许多尝试来实现这些功能,而如今,MFCC已在行业中广泛使用。Y轴表示特征,X轴表示时间。 MFCC代表梅尔频率倒谱系数,自从80年代由Davis和Mermelstein发明它以来,它几乎已经成为行业标准。MFCC仅考虑了我们耳朵最能听到的声音。 在Kaldi中,使用了另外两个特性: CMVNs:用于更好地实现标准化MFCCI-Vector:用于更好地了解域内的差异。 例如-创建与说话者相关的表示。 I-Vector基于JFA(联合因子分析)的相同思想,但更适合于理解声道和说话者的差异。 为了对这些概念有基本的了解,请记住以下几点: MFCC和CMVN用于表示每种音频话语的内容
  • Python模块汇总(常用第三方库)
    模块 定义 计算机在开发过程中,代码越写越多,也就越难以维护,所以为了编写可维护的代码,我们会把函数进行分组,放在不同的文件里。在python里,一个.py文件就是一个模块 优点: 提高代码的可维护性。 提高代码的复用,当模块完成时就可以在其他代码中调用 引用其他模块,包含python内置模块和其他第三方模块 避免函数名和变量名等名称冲突 Python语言生态 Python语言提供超过15万个第三方库,Python库之间广泛联系、逐层封装。 使用pip安装 Python社区:https://pypi.org/ python标准库: sys模块 random模块 os模块: os.path:讲解https://www.jb51.net/article/159730.htm time模块: turtle模块: 教程:https://www.jb51.net/article/171752.htm 数据可视化 1.matplotlib : 提供了2维可视化功能库,是Python可视化程序库的泰斗,它的设计和在1980年代被设计的商业化程序语言MATLAB非常接近。比如pandas和Seaborn就是matplotlib的外包,它们让你能用更少的代码去调用 matplotlib的方法。 访问: https://matplotlib.org/ 颜色: https://www.jb51.net
  • python第三方库排行-Python模块汇总(常用第三方库)
    模块 定义 计算机在开发过程中,代码越写越多,也就越难以维护,所以为了编写可维护的代码,我们会把函数进行分组,放在不同的文件里。在python里,一个.py文件就是一个模块 优点: 提高代码的可维护性。 提高代码的复用,当模块完成时就可以在其他代码中调用 引用其他模块,包含python内置模块和其他第三方模块 避免函数名和变量名等名称冲突 Python语言生态 Python语言提供超过15万个第三方库,Python库之间广泛联系、逐层封装。 使用pip安装 Python社区:https://pypi.org/ python标准库: sys模块 random模块 os模块: os.path:讲解 https://www.cnblogs.com/yufeihlf/p/6179547.html time模块: turtle模块: 教程:https://www.cnblogs.com/chen0307/articles/9645138.html 数据可视化 1.matplotlib : 提供了2维可视化功能库,是Python可视化程序库的泰斗,它的设计和在1980年代被设计的商业化程序语言MATLAB非常接近。比如pandas和Seaborn就是matplotlib的外包,它们让你能用更少的代码去调用 matplotlib的方法。 访问: https://matplotlib.org/
  • 使用calibration_toolkit进行相机和三维激光雷达的联合标定(详细步骤)
    使用calibration_toolkit进行相机和三维激光雷达的联合标定(16线速腾雷达) 系统配置: Ubuntu18.04系统 安装 ROS Melodic 安装 opencv 3.2.0 rslidar 16 calibration_toolkit,autoware 1.10.0版本中的标定工具箱单独编译安装 calibration_toolkit是autoware1.10版本以前内置标定工具,autoware是与apllol类似的自动驾驶模拟系统。 网上很多教程都会先绍autoware的安装然后单独编译标定工具。我根据官网的教程安装autoware,可能是我网络原因和系统配置的原因,一直不能成功将git工程克隆到本地,走了很多弯路。 实际上我发现如果只需要标定工具可以单独安装编译calibration_toolkit这个是大佬从autoware系统中单独“剥”出来的,可以直接安装使用 1、安装nlopt 网上很多安装教程都是ubuntu16.04的,我的系统是18.04的文章前面也已经介绍了系统配置,接下来介绍标定工具的比版以安装。 编译标定工具箱依赖于nlopt,需要先行安装,安装教程参考:https://github.com/stevengj/nlopt 2、安装标定工具箱 标定工具箱安装教程参考:https://github.com/XidianLemon
  • 导入模块时隐藏外部模块(例如,有关代码完成的信息)(Hide external modules when importing a module (e.g. regarding code-completion))
    问题 我在一个项目包中使用了几个模块(一种工具包),这些模块可以在我的项目中使用。 结构如下: the_toolkit: __init__.py basic_io.py simple_math.py matrix_kit.py ... 现在,当我使用以下命令从包中导入模块后,在VIM使用IPython或VIM的代码完成功能时 from the_toolkit import matrix_kit 我得到了一堆由matrix_kit.py导入的模块/函数( array , math , log , loggin , format_exc等),以及matrix_kit定义的实际函数。 由于我对matrix_kit模块的代码完成中的math或array不感兴趣,该如何过滤掉所有其他内容? __init__.py是许多pythonistas建议的为空,还是这样做的方法? 回答1 我遇到了同样的问题,并通过在所有进口商品中添加了下划线来解决了这个问题。 它看起来并不出色,但可以实现您的追求。 from __future__ import division as _division import numpy as _np import pandas as _pd 使用.. import *导入模块时,仅导入没有下划线的内容。 或在IPython或spyder中使用制表符补全功能时。 回答2
  • 基于《Kaldi语音识别》技术及开源语音语料库分享
    前言: 数据堂自AI开源计划发起,面向高校和科研机构首次开源的【1505小时中文普通话语音数据集】,该数据集句标注准确率达到了98%,得到了很多开发者的认可。 不仅如此,数据堂基于此开源数据集还精选出了【200小时中文普通话语音数据】同期发布,并提供了基于Kaldi【200小时中文普通话语音数据】训练方法。该训练方法同时得到了广泛的关注及开发者的极度认可,并表示希望数据堂持续分享相关技术。 日前,数据堂AI开放实验室发起基于《Kaldi语音识别》技术的分享会,分享会也一同邀请到了北印和北工商实验室的同学参加。 分享会上,数据堂AI开放实验室语音识别数据处理技术研究同事详细的讲解了语音识别技术、语音识别引擎框架、开源语音语料库、算法归纳、模型训练实战演示、语音识别技术未来的挑战。 以下为分享会主要内容回顾: 一、语音识别技术 1.1什么是语音识别ASR (Automatic Speech Recognition) 声波蕴含了更为丰富的信息,比如说话人性别、口音、年龄、情感等,语音识别即让机器把语音信号转变为相应的文本,进而达到机器自动识别和理解语音内容。输入一段随时间播放的信号序列,输出对应的一段文本序列。 ——基本流程—— 1.2语音识别技术的应用 语音识别作为一种基础层感知类技术,既可以作为核心技术直接应用于终端产品,也可以仅作为一种感知类辅助技术集成于语音助手、车载系统
  • 卷积神经网络的详解
    前言: 卷积神经网络(Convolution Neural Network,CNN)是通过模拟人脑视觉系统,采取卷积层和池化层依次交替的模型结构,卷积层使原始信号得到增强,提高信噪比,池化层利用图像局部相关性原理,对图像进行邻域间采样,在减少数据量的同时提取有用信息,同时参数减少和权值共享使得系统训练时间长的问题得到改善。 目前主流的典型卷积神经网络(CNN),比如VGG, GoogleNet,ResNet都是由简单的CNN调整,组合而来。 一.卷积神经网络结构定义及原理 CNN是一种多层网络,它的每一层由多个二维平面构成,卷积神经网络结构如下图所示。 每一个二维平面由多个神经元构成。CNN的网络结构也可分为3部分:输入层,隐藏层与输出层。CNN的输入层是直接输入二维图像信息,这一点与传统的神经网络输入层需要输入一维向量有所不同。通常将输入层到隐藏层的映射称为一个特征映射,也就是通过卷积层得到特征提取层,经过pooling之后得到特征映射层。 隐藏层由三种网络构成——卷积层,池化层,全连接层。 卷积层:该层的每个神经元与上层对应的局部感受域相连,通过滤波器和非线性变换来提取局部感受域的特征。当每个局部特征被提取之后,不同的局部特征间的空间关系也就确定下来了。 池化层:可以对卷积层提取的特征进行降维,同时可以增加模型的抗畸变能力。 全连接层
  • 图形学复习
    文章目录 charpter1图形学的基本应用(C1,E33)光栅图形,相关定义(如像素、真彩色、帧缓存等)与计算(C4,E35)图形学的历史(CG01)人类视觉系统(C16)(如光谱(C13)、颜色模型(C49, E98))三维图形的处理流程(如顶点、裁剪、光栅化、片元等)(C25,E65) chapter2OpenGL 与 WebGL简介OpenGL 与WebGL函数的使用opengl基本函数分类指定OpenGL窗口的显示模式的函数是什么?并给出互斥参数的比较分析。WebGL的绘制流水线 颜色索引(C51) chapter3双缓存 C75物理设备(C7)(多种类型)与逻辑设备(C9)(6种基本类型)三种基本的输入模式(请求、采样、事件)C10GLUT的基本回调函数(显示、鼠标、形变、键盘、空闲等)C57,72 chapter4标量、向量、点的概念 C82仿射空间点积和叉积(图形学意义)C88维数、基、坐标系与标架 C91Homogeneous Coordinates C95三种基本变换:平移、旋转、缩放(2D与3D)C111组合变换(顺序问题)C117多边形网格、多面体、欧拉公式(CG14) 、四元数(C132,CG13) chapter5平面几何投影的分类(平行与透视)C139不同领域的经典视图 C139灭点的概念 C142建立观察标架 C143、CG16照相机标架的定位
  • 新版的ARMv9到底牛在哪?
    近期ARMv9架构发布,根据安谋官方的说法最新V9版本的ARM芯片具有安全计算、SVE2指令集和极致的性能优化三大特性,是十年来ARM最重要一次升级,并且还能继续向华为供货。不少媒体也沿用了ARM官方的说法,不过笔者窃以为这样的说法听听就好,像性能极致优化、继续供货华为等说法其实只是意义不大,而真正带来革命的SVE2反而光芒被掩盖了。 略显鸡肋的安全计算与性能升级 首先我们看到首先于2011年的ARMV8架构的确是革命性的创新,ARMv8中首次引入了AArch64架构,对于64位架构的ARM处理器产生的革命性提升。不过本次的升级当中所谓极致的性能优化其实是目前各大芯片设计厂商都已经在做的工作,其实并不算什么重大的创新点。 安全计算的理念倒是比较新,安全计算实际是计算机加了一个安全密室,即使拥有最高权限的管理员也不能进入安全密室。这样的功能在计算机已经被完全攻破的情况其实意义不大,因为数据进出安全屋的情况,可以被外界一览无遗,因此拥有最高权限的用户完全可以通过行为分析破解安全屋内发生的事情。 供货华为,意义不大 笔者在之前的文章《造芯为何这么难》当中曾经介绍过在芯片制造几大环节当中,我们最缺失的是工业软件EDA和包括光刻机等方面在内的晶圆制造技术,在芯片设计的封装、测试方面其实我们做得还不错。而ARMv9本身其实是一个IP CORE,而我们国产EDA中还没有哪家能把ARMV9