gpt4 book ai didi

computer-vision - Google ARCore 域模型示例

转载 作者:行者123 更新时间:2023-12-03 01:23:57 24 4
gpt4 key购买 nike

我正在尝试阅读并理解 Google ARCore 的域模型,特别是 Android SDK包。目前此 SDK 处于“预览版”模式,因此没有可用于了解如何使用此 API 的教程、博客、文章等。甚至 Google 本身也建议只阅读源代码、源代码注释和 Javadoc 来了解如何使用 API。问题是:如果您还不是计算机视觉专家,域模型会让您感觉有点陌生和陌生。

具体来说,我有兴趣了解以下类之间的根本区别及其正确用法:

根据Anchor的javadoc:

"Describes a fixed location and orientation in the real world. To stay at a fixed location in physical space, the numerical description of this position will update as ARCore's understanding of the space improves. Use getPose() to get the current numerical location of this anchor. This location may change any time update() is called, but will never spontaneously change."

所以 anchor 有一个姿势。听起来就像您“将 anchor 放在相机中可见的物体上”,然后 ARCore 跟踪该 anchor 并不断更新其姿势以反射(reflect)其屏幕坐标的性质?

来自 Pose 的 javadoc:

"Represents an immutable rigid transformation from one coordinate frame to another. As provided from all ARCore APIs, Poses always describe the transformation from object's local coordinate frame to the world coordinate frame (see below)...These changes mean that every frame should be considered to be in a completely unique world coordinate frame."

所以它听起来就像一个姿势只是相机的“当前帧”所独有的,并且每次帧已更新,所有 anchor 的所有姿势可能都会重新计算?如果不是,那么Anchor、它的Pose、当前帧和世界坐标系之间的关系是什么?无论如何,什么是姿势真正? “姿势”只是存储矩阵/点数据的一种方式,以便您可以将 anchor 从当前帧转换为世界帧吗?还是别的什么?

最后,我发现框架、姿势和 anchor 之间存在很强的相关性,但还有点云。我在 com.google.ar.core 中看到的唯一使用这些的类是 FramePointClouds 似乎是 (x,y,z) - 与代表 ARCore 对 x/y/z 分量实际上正确的“置信度”的第四个属性进行协调。因此,如果 anchor 有一个姿势,我会想象一个姿势也会有一个代表 anchor 坐标和对这些坐标的置信度的点云。但姿势没有点云,所以我一定完全误解了这两个类建模的概念。

<小时/>

问题

我在上面提出了几个不同的问题,但它们都归结为一个简单、简洁、可回答的问题:

框架、 anchor 、姿势和点云背后的概念有什么区别?您何时使用它们(以及用于什么目的)?

最佳答案

姿势是一种结构化转换。它是从一个坐标系(通常是对象局部坐标系)到另一个坐标系(通常是世界坐标系)的固定数值变换。

anchor 代表世界上物理上固定的位置。它的 getPose() 将随着对世界的理解的变化而更新。例如,假设您有一栋建筑物,外面有一条走廊。如果您沿着走廊一直走,传感器漂移会导致您无法到达开始时的相同坐标。但是,ARCore 可以(使用视觉特征)检测到它位于启动它的同一空间中。当这种情况发生时,它会扭曲世界,使您当前的位置和原始位置对齐。作为这种扭曲的一部分, anchor 的位置也将被调整,以便它们保持在相同的物理位置。

由于这种扭曲,相对于世界的姿势应仅在返回它的帧的持续时间内被视为有效。一旦您下次调用update(),世界可能已经在那个姿势上 reshape 了,这可能是无用的。如果您需要保留比框架更长的位​​置,请创建一个 anchor 。只需确保removeAnchors()您不再使用的 anchor ,因为每个实时 anchor 都会产生持续的费用。

Frame 捕获瞬间的当前状态,并在两次调用 update() 之间发生变化。

点云是在世界中检测到的 3D 视觉特征点的集合。它们位于自己的本地坐标系中,可以通过 Frame.getPointCloudPose() 访问该坐标系。希望比平面检测提供更好的空间理解的开发人员可以尝试使用点云来了解有关 3D 世界结构的更多信息。

这有帮助吗?

关于computer-vision - Google ARCore 域模型示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46022227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com