热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

是否可以使用CoreML和ARKit获得World对象的“SCNVector3”位置?

如何解决《是否可以使用CoreML和ARKit获得World对象的“SCNVector3”位置?》经验,为你挑选了1个好方法。

我正在研究一种基于AR的解决方案,其中使用SceneKit和ARKit渲染了一些3D模型。我还集成了CoreML以识别对象并在场景中渲染相应的3D对象。

但是现在,我一检测到对象就将其呈现在屏幕中央(仅适用于我拥有的对象列表)。是否可以获取现实世界对象的位置,以便可以在对象上方显示一些叠加层?

也就是说,如果我扫描了水瓶,则应该能够找到水瓶的位置。它可能在水瓶中的任何地方,但不应放在水瓶外面。使用SceneKit是否可能?



1> rickster..:

从理论上讲,您所要求的所有部分都是可能的,但是a)几个部分,没有集成的API可以为您做事,b)您可能会提出自己想像的难题。

大概您与Core ML集成所拥有的就是图像分类器,因为这就是大多数容易找到的ML模型所做的。图像分类回答了一个问题:“这是什么图片?”

您要查找的内容至少涉及另外两个问题:

    “鉴于此图像已被分类为包含(某些特定对象),该对象在2D图像中的何处?”

    “给出被检测物体在2D视频图像中的位置,在ARKit跟踪的3D空间中它在哪里?”

问题1非常合理。在ML社区中,有些模型可以进行分类和检测(图像中的位置/边界)。也许最著名的是YOLO- 这是一篇有关将其与Core ML一起使用的博客文章。

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

要真正知道对象的形状,甚至是3D边界框,都意味着将对象检测与场景重建集成在一起。例如,如果某个对象在2D图像中具有一定的高度,那么您是在看一个3D对象,该对象高大且占用空间小,又或者长而低的3D对象会缩回远处?这种集成将需要拆散ARKit的内部工作,而Apple以外的人都做不到,或者从头开始创建类似ARKit的工作。

但是,您可能需要做出一些假设,才能从2D边界框获得非常粗略的3D形状估计。例如,如果您在框的下角进行AR命中测试,并发现它们在水平面上,则可以猜测框的2D高度与对象的3D高度成正比,平面上的足迹与盒子的宽度成比例。您必须进行一些研究和测试,看看这种假设是否成立,尤其是在您的应用涵盖的任何用例中。


推荐阅读
author-avatar
D
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有