2017-10-12 37 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高度成比例,並且它的飛機上的佔地面積與箱子的寬度成正比。你必須做一些研究和測試,看看是否會出現這樣的假設,特別是在你的應用覆蓋的任何用例中。

相關問題