我发现了许多检测不同形状的方法。但是当我想要一个物理对象时运气不好。从我读到的内容,我们应该在图像周围有一个黑色边框来制作一个图案文件。如果我遵循这个概念并生成一个模式,那么我的应用程序会检测到打印输出的图像。但在现实世界中,物理对象不一定有黑色边框围绕它。
更新
尽管我接受了答案,但我的问题仍未解决。由于仍然没有检测物理对象的解决方案。
欢迎任何进一步的研究和链接!
我发现了许多检测不同形状的方法。但是当我想要一个物理对象时运气不好。从我读到的内容,我们应该在图像周围有一个黑色边框来制作一个图案文件。如果我遵循这个概念并生成一个模式,那么我的应用程序会检测到打印输出的图像。但在现实世界中,物理对象不一定有黑色边框围绕它。
更新
尽管我接受了答案,但我的问题仍未解决。由于仍然没有检测物理对象的解决方案。
欢迎任何进一步的研究和链接!
坏消息是,你不能使用 AndAR 来检测物理对象。AndAR 基于基准标记方法,其中标记由两个部分组成:实心边框和内部图案。该模式编码一个值,该值可用于寻址特定模型以在标记上呈现,并且边框使确定标记与设备的相对方向变得容易。显然这只是平面图像识别。
对 3D 对象进行对象识别是一个更复杂的问题,我不知道有任何 Android 库提供了交钥匙解决方案,但在移动设备上只识别一个对象可能是可行的。
一种可能性可能是研究现在都支持某些图像识别的可用 Android AR 工具包(Layar、Junaio、Qualcomm AR SDK)。可能是通过以各种旋转方式拍摄茶壶的图像并将这些图像用作您希望应用程序与之匹配的图像,您可能会得到此解决方案,但请记住,它们仅设计用于对图像进行平面匹配,而不是真实的 3D 对象,因此性能可能不是很好。(嗯,Metaio Mobile SDK Pro 可以进行 3D 识别和跟踪,但是非常昂贵)。
虽然对象识别可能最好通过将相机帧与您希望识别的对象的图像进行比较(或通过将来自相机帧的图像特征与预先计算的图像特征等进行比较)来完成,但跟踪是另一回事。如果您想在 3D 空间中准确跟踪您的 3D 对象,您确实需要拥有或构建它的 3D 模型,并为每一帧确定相机图像和 3D 对象之间的点对应关系以进行跟踪。真正的无辅助(即没有深度相机)3D 跟踪很难。
我希望这能给你一些背景知识,你可以用它来评估你的下一步。
更新:Qualcomm 的 Vuforia SDK 允许您跟踪“多目标”,即具有一组具有固定空间关系的平面跟踪表面的对象。如果您为对象(茶壶)的 6 个面制作了“立方体”不同的照片,这可能会有所帮助。 https://ar.qualcomm.at/qdevnet/developer_guide/Trackables
2013 年底更新:
我对这些没有经验,但是:
Metaio 现在提供 CAD 模型的 3D 跟踪:https ://dev.metaio.com/sdk/tutorials/3d-tracking-based-on-cad-data/
ARLab.com 的 LinkAR 承诺对象匹配。http://www.arlab.com/objecttracking
我会注意到“匹配”这个词的使用——我认为这里的用例是您知道要覆盖的对象(玩具盒和引擎等)。区分多个 3D 对象可能完全超出范围。
您是否考虑过使用OpenCV 来检测和跟踪对象?看看使用网络摄像头查找对象教程 (C++ / Qt)。OpenCV 可用于 Android - OpenCV 4 Android。
2018 年 5 月,Google 发布了移动 SDK – ML Kit,这是一个供 Android 和 iOS 开发人员使用的机器学习 API,您可以与ARCore
SDK 一起使用(现在有增强图像 API 和增强面部 API)。目前它仍处于测试阶段,但它具有以下工作功能:
Google ML Kit 工程师对此有以下看法:
ML Kit将 Google 的机器学习专业知识通过一个功能强大且易于使用的软件包引入 Android 和 iOS 应用程序。无论您是机器学习新手还是经验丰富的人,只需几行代码即可实现所需的功能。无需深入了解神经网络或模型优化即可开始使用。另一方面,如果您是经验丰富的 ML 开发人员,ML Kit 提供了方便的 API,可帮助您在移动应用程序中使用自定义TensorFlow Lite模型。