我正在为iPhone开发一个ARKit
应用程序。我需要检测特定的香水瓶,并根据检测结果显示内容。我使用了developer.apple.com上的演示应用来扫描现实世界的物体并导出.arobject
文件,我可以在资产中使用。它工作得很好,尽管由于瓶子是玻璃制成的,检测效果非常差。它只能在扫描位置的2-30秒内检测到,或者根本无法检测到。扫描的合并并没有改善情况,反而有时使情况变得更糟。合并后的结果可能有奇怪的方向。
我该怎么解决这个问题呢?
如果没有办法,CoreML
能帮我吗?我可以拍很多照片来训练模型。如果我对每一帧进行匹配检查,这种方法有机会成功吗?
回答:
关于玻璃折射
由于玻璃折射现象和不同的光照条件,香水瓶的对象识别过程(在ARKit和CoreML中)是最复杂的。
看看下面的图片 – 在不同位置有三个玻璃球:
这些玻璃球具有不同的菲涅耳折射率(IOR)、环境、相机的视角、大小和光照条件。但它们具有相同的形状、材质和颜色。
因此,加速识别过程的最佳方法是使用相同的背景/环境(例如单色浅灰色纸背景)、相同的光照条件(光的位置、强度、颜色和方向)、良好的形状可读性( благодаря бликам)以及相同的相机视角。
我知道,有时候无法遵循这些建议,但这些建议确实有效。