如何识别或匹配两个图像?

时间:2019-01-25 05:30:44

标签: ios arkit image-recognition coreml

我的捆绑包或应用程序中存储了一张图像。 现在,我想在相机中扫描图像,并将该图像与本地存储的图像进行比较。匹配图像后,我要播放一个视频,如果用户将摄像机从该特定图像移动到其他位置,则我想停止播放该视频。

为此,我尝试了Wikitude sdk for iOS,但是由于内存问题或其他一些原因,它随时崩溃,因此无法正常工作。

还有其他一些想法,例如Core MLARKit,但Core ML会检测图像的属性,例如名称,类型,颜色等,而我想匹配该图像。 ARKit将不支持所有设备和ios,并且根据我的要求是否可能进行图像匹配。

如果任何人有实现此要求的任何想法,他们可以分享。每一个帮助将不胜感激。谢谢:)

3 个答案:

答案 0 :(得分:2)

您的任务是图像相似度,您可以使用机器学习轻松地完成图像相似度更高的输出结果。由于您的任务是使用相机扫描。更好的选择是CoreML。您可以参考apple的link以获得“图像相似性”。您可以通过训练自己的数据集来优化结果。任何其他澄清都需要评论。

答案 1 :(得分:2)

最简单的方法是ARKit的imageDetection。您知道它支持的设备的局限性。但是它给出的结果是广泛的,并且确实易于实现。 Here is an example

接下来是CoreML,这是最困难的方法。即使简短,您也需要了解机器学习。然后是困难的部分-使用数据集进行训练。最大的缺点是图像单一。我会放弃这种方法。

最后的中途解决方案是使用OpenCV。可能很难,但适合您的需求。您可以找到不同的功能匹配方法,以在相机源中查找图像。 example here。您可以使用Objective-C ++在iOS的C ++中进行编码。

答案 2 :(得分:0)

另一种方法是使用所谓的“暹罗网络”。这实际上意味着您使用诸如Inception-v3或MobileNet之类的模型,并同时使用这两个图像,然后比较它们的输出。

但是,这些模型通常会提供分类输出,即“这是一只猫”。但是,如果您从模型中删除该分类层,则它给出的输出只是一堆数字,以非常抽象的方式描述了图像中的事物种类。

如果两个图像的这些数字非常相似-如果它们之间的“距离”很小-那么两个图像也非常相似。

因此,您可以采用现有的Core ML模型,删除分类层,对其进行两次运行(每幅图像一次),这将为您提供两组数字,然后计算这些数字之间的距离。如果此距离小于某种阈值,则图像足够相似。