我有兴趣使用Project Tango平板电脑使用任意点功能进行3D重建.在当前的SDK版本中,我们似乎可以访问以下数据.
我真正想要的是能够识别图像中关键点的3D点.因此,将深度投影到图像平面是有意义的.我做到了这一点,我得到这样的东西:
该过程的问题在于与RGB像素相比,深度点是稀疏的.所以我更进一步,在深度点之间进行插值.首先,我做了Delaunay三角测量,一旦我得到了很好的三角测量,我在每个方面的3个点之间进行插值,得到了一个体面的,相当均匀的深度图像.以下是插值深度有效的区域,强加在RGB图像上.
现在,给定相机模型,可以在深度图像上的任何点处将深度投射回笛卡尔坐标(因为深度图像是这样的,即每个像素对应于原始RGB图像上的点,并且我们具有相机参数的RGB相机).但是,如果您查看三角测量图像并将其与原始RGB图像进行比较,您可以看到深度对图像中所有不感兴趣的点都有效:大多数是空白,无特征的平面.这不仅适用于这一组图像; 这是我对传感器的一种趋势.例如,如果一个人站在传感器前面,他们的轮廓内的深度点很少.
由于传感器的这种特性,如果我在图像上执行视觉特征提取,则具有角落或有趣纹理的大多数区域落在没有相关深度信息的区域中.举个例子:我从Xtion传感器的RGB图像中检测到1000个SIFT关键点,其中960个具有有效的深度值.如果我对这个系统做同样的事情,我会得到80个有效深度的关键点.目前,这种性能水平对我来说是不可接受的.
我可以猜测其根本原因:似乎某种平面提取算法用于获取深度点,而Primesense/DepthSense传感器正在使用更复杂的东西.
所以,无论如何,我的主要问题是:通过改进的RGB-IR图像处理算法,我们能否期望在以后的某个时间点对深度数据进行任何改进?或者这是电流传感器的固有限制?
所以我知道setSurface,使用它作为叠加层或其他任何东西没有问题 - 它在表面控制上.也就是说,我很难获得像素数据
1)我已经尝试了所有我能想到的(控件,根等)来使用绘图缓存函数来获取相机表面的位.呀,不.缓存的位图始终为零.
2)我已成功使用SurfaceView和GLSurfaceView作为setSurface taget.我不能使用任何其他类,如TextureView.
3)我已经调查了C API,我看到相机暴露了connectOnFrameAvailable,这将让我访问像素
我的猜测是内部探戈逻辑只是使用java中的表面来获取对底层位传输通道的访问 - 在C API中它需要一个纹理ID,这让我怀疑在一天结束时,相机数据是非常快速地发送到GPU,并且我打赌CUDA lib对它进行操作 - 考虑到事情的状态,我无法看到如何在不支持设备的情况下获取Java端的位 - 只是因为我有纹理或简单的表面视图渲染屏幕上的原始位并不意味着我可以得到它们.
我不想将图像数据从GPU中剥离出来.我需要将忙碌的动画从手表切换到日历.
在深入研究C API之前,有什么方法可以用Java获取相机位吗?我真的希望能够将它们与特定的姿势联系起来,但是现在我甚至无法弄清楚如何获得它们.我真的想知道3D点的位置和颜色.相机内在函数,点云和生成点云的2D图像都是我需要的.但是,如果我无法获得像素,我就无法做任何事情,而且图像与(姿势和点云)之间的关系越是值得怀疑.
如果我深入了解C,那么connectOnFrameAvailable会给我我需要的东西吗?点云生成的同步程度如何?哦,我有这个权利吗?彩色摄像机用于深度,鱼眼用于姿势?
我可以混合使用Java和C,即在Java中创建Tango实例,然后只使用C来解决图像问题吗?或者我将不得不重新实现C中的所有内容并停止使用探戈java jar?
我正在尝试按照本教程开始使用Google Tango for Unity:https://developers.google.com/project-tango/apis/unity/unity-prefab-motion-tracking
但是当我构建并运行我的项目时,陀螺仪似乎不起作用,相机也没有响应.
我正在使用Unity 4.6.7.
有什么建议?
我正在尝试使用 MediaCodec 在 Android 上对 h264 视频进行编码以进行实时视频流,但 dequeueOutputBuffer 持续花费很长时间(实际上它有时非常快,但有时非常慢,请参阅下面的日志输出)。我已经看到它甚至需要 200 毫秒才能准备好输出缓冲区。我的代码有问题吗,或者您认为这是 OMX.Nvidia.h264.encoder 的问题吗?
也许我需要将图像从 1280x720 缩小到更小?或者我可能需要在等待输出缓冲区时将更多输入缓冲区出列和排队?(有 6 个输入和 6 个输出缓冲器可用)。我使用的是 Android API 19,因此无法使用异步 MediaCodec 处理方法。我实际上是从 Google Project Tango 平板电脑流式传输图像,所以我的另一个怀疑是可能 Tango 的后台操作花费的时间太长并导致编码器变慢。关于什么可能会减慢这种速度的任何想法?
01-20 23:36:30.728 2920-3014/com.... D/StreamingThread: dequeueOutputBuffer took 0.400666ms.
01-20 23:36:30.855 2920-3014/com.... D/StreamingThread: dequeueOutputBuffer took 94.290667ms.
01-20 23:36:30.880 2920-3014/com.... D/StreamingThread: dequeueOutputBuffer took 0.57ms.
01-20 23:36:30.929 2920-3014/com.... D/StreamingThread: dequeueOutputBuffer took 4.878417ms.
01-20 23:36:31.042 2920-3014/com.... D/StreamingThread: dequeueOutputBuffer took 77.495417ms.
01-20 23:36:31.064 2920-3014/com.... D/StreamingThread: dequeueOutputBuffer took 0.3225ms.
01-20 23:36:31.182 2920-3014/com.... D/StreamingThread: dequeueOutputBuffer took 74.777583ms. …
Run Code Online (Sandbox Code Playgroud) encoding android h.264 google-project-tango android-mediacodec
我设法将Tango SDK和Vuforia集成到我的Unity项目中AndroidManifest.xml
.
我Vuforia Camera Prefab
是一个孩子,Tango Delta Camera Prefab
并且已经成立,因此它应该成为AR世界的中心.
当检测到目标时,我会在场景中实例化一个没有父级的对象来使用它移动它Tango Delta Camera
.
然而,Tango Camera
当Vuforia Camera
活动时跟踪似乎出现故障- 它仍在工作,但运动检测非常错误.
是不是Vuforia阻止Tango使用相机?我该如何解决这个问题?
问题情况:始终以舒适的方式在同一位置(在桌子上)创建AR可视化。我们不希望客户像无数ARCore / ARKit示例中那样放置对象本身。
我想知道是否有一种方法可以实现这些步骤:
我知道TangoSDK的最新版本中包含类似Marker-Detection API的东西。但是该技术仅限于少量设备(确切地说是两个)。
最好的问候,并感谢您的任何想法
昨晚得到了我的Tango平板电脑,并试图通过安装所需的包来实现它.更新"Project Tango Core"应用程序失败.这是我得到的错误:
有人看过这个并知道如何解决这个问题吗?
以下是可能需要的一些信息:
在使用Yosemite的Macbook Pro上 - 在完成安装Android SDK的困难之后,我插入了设备,但它没有显示.命令adb设备产生"附加设备列表",后面没有任何内容.它就在USB上,关于这个Mac系统报告显示它出现在USB上.
这个问题类似于为ProjectTango developpemnt设置开发环境的问题,但是因为我没有使用Eclipse,所以不一样.
我是一名中国开发者,正在读研究生。实验室有一个项目需要使用tango。Google关闭了tango的官方网站,并关闭了开发者社区和文档\xef\xbc\x8c,因为我刚刚入门,对Tango开发不熟悉。这导致我们的项目被中断。所以现在我需要 Tango 文档。
\n我无法让我的Windows 7 x64计算机识别我的Tango设备.我安装了安装了USB驱动程序的Android Studio,并手动加载了Google USB驱动程序.
设备加载为"USB控制器 - 未知设备",但有错误.当我尝试更新驱动程序并从文件中选择一个驱动程序,指向Google USB驱动程序时,我收到一条错误消息:"...不包含适用于您设备的兼容驱动程序....确保它的设计工作正常使用Windows x64 ..."
我能够让我的Nexus 7平板电脑连接这个驱动程序.
我已经尝试打开和关闭USB调试,我尝试来回更改USB连接到MTP和PTP,结果相同.
当我关闭USB调试时,设备有时会加载为"Android ADB设备"并出现错误.当我尝试更新驱动程序时,我得到与上面相同的错误消息.