2017-10-12 35 views
0

我正在研究一个基于AR的解决方案,其中使用Scenekit-ARKit呈现一些3D模型。我还集成了CoreML来识别对象并在场景中渲染相应的3D对象。是否可以使用Core ML和ARKit获取真实世界对象的SCNVector3位置并在对象上创建SCNPlane?

但是现在我只是把它放在屏幕的中心,尽快检测到对象(仅限于我拥有的对象列表)。是否有可能获得真实世界对象的位置,以便我可以在对象上方显示一些叠加层?

这就是如果我有一瓶水扫描,我应该能够得到水瓶的位置。它可以放在水瓶里的任何地方,但不应该放在水瓶外面。这可能使用Scenekit吗?

回答

4

与你的要求的所有部件在理论上是可能的,但一)几个部分,没有集成API为你做的事情,和b)你可能会签署了自己的more difficult problem than you think

大概你的核心ML整合是一个图像分类器,因为这是大多数容易找到的ML模型。图像分类回答一个问题:“这是什么的照片吗?”

你在找什么涉及至少两个额外的问题:

  1. “鉴于这一形象已经被列为含(一些特定对象),其中2D图像在是对象?”
  2. ‘鉴于2D影像,它在哪里通过ARKit跟踪的3D空间中检测到的对象的位置?’

问题1非常合理。有ML模型可以在ML社区中进行分类和检测(图像中的位置/边界)。最有名的可能是YOLO - here’s a blog post about using it with Core ML

问题2是“研究团队和五年”的一部分。在YOLO的论文中您会注意到,它只会为检测到的对象提供粗糙的边界框 - 也就是说,它在2D图像空间中工作,而不是进行3D场景重建。

要真正了解物体的形状,甚至是物体的3D边界框,意味着将物体检测与场景重建相结合。例如,如果一个物体在二维图像中具有一定的高度,您是否正在查看一个高度较小,面积较小或长而低的三维物体,并退回距离?这种整合需要拆分ARKit的内部工作,苹果公司以外的任何人都无法做到,或者从头开始重新创建ARKit。尽管如此,可能会有一些假设可以从2D边界框中获得对3D形状的非常粗略的估计。例如,如果您在盒子的下角进行AR打击测试并发现它们位于水平面上,则可以猜测盒子的2D高度与对象的3D高度成比例,并且它的飞机上的占地面积与箱子的宽度成正比。你必须做一些研究和测试,看看是否会出现这样的假设,特别是在你的应用覆盖的任何用例中。

相关问题