如何识别或匹配两张图片?
How to recognize or match two images?
我的捆绑包或应用程序中存储了一张图片。
现在我想扫描相机中的图像并将该图像与我本地存储的图像进行比较。当图像匹配时,我想播放一个视频,如果用户将相机从该特定图像移动到其他地方,那么我想停止该视频。
为此我已经尝试 Wikitude sdk for iOS 但它无法正常工作,因为内存问题或其他一些原因随时会崩溃。
想到其他事情Core ML and ARKit,但 Core ML 检测图像的属性,如名称、类型、颜色等,我想匹配图像。 ARKit 将不支持所有设备,ios 并且我不知道是否可以根据要求进行图像匹配。
如果有人有任何想法来实现这个要求,他们可以分享。每一个帮助将不胜感激。谢谢:)
你的任务是图像相似度,你可以简单地完成它,并使用机器学习获得更可靠的输出结果。由于您的任务是使用相机扫描。更好的选择是 CoreML.You 可以参考这个 link by apple for Image Similarity.You 可以通过使用您自己的数据集进行训练来优化您的结果。任何更多的澄清需要评论。
最简单的方法是 ARKit 的 imageDetection
。您知道它支持的设备的局限性。但是它给出的结果很广泛而且很容易实现。 Here is an example
接下来是最难的CoreML。即使是简短的,你也需要了解机器学习。然后是困难的部分——用你的数据集进行训练。最大的缺点是你有单一的形象。我会放弃这种方法。
最后的中途解决方案是使用OpenCV。这可能很难,但适合您的需要。您可以找到不同的特征匹配方法来在相机源中找到您的图像。 example here。您可以使用 objective-c++ 在 c++ 中为 ios 编写代码。
另一种方法是使用所谓的"siamese network"。这实际上意味着您使用 Inception-v3 或 MobileNet 等模型和两个图像,然后比较它们的输出。
然而,这些模型通常会给出分类输出,即"this is a cat"。但是如果你从模型中移除那个分类层,它给出的输出只是一堆数字,这些数字描述了图像中的事物种类,但在非常抽象的意义上。
如果两张图片的这些数字非常相似——如果它们之间的 "distance" 非常小——那么这两张图片也非常相似。
所以你可以拿一个现有的 Core ML 模型,移除分类层,运行 它两次(每个图像一次),它给你两组数字,然后计算这些数字之间的距离.如果这个距离低于某种阈值,那么图像就足够相似了。
我的捆绑包或应用程序中存储了一张图片。 现在我想扫描相机中的图像并将该图像与我本地存储的图像进行比较。当图像匹配时,我想播放一个视频,如果用户将相机从该特定图像移动到其他地方,那么我想停止该视频。
为此我已经尝试 Wikitude sdk for iOS 但它无法正常工作,因为内存问题或其他一些原因随时会崩溃。
想到其他事情Core ML and ARKit,但 Core ML 检测图像的属性,如名称、类型、颜色等,我想匹配图像。 ARKit 将不支持所有设备,ios 并且我不知道是否可以根据要求进行图像匹配。
如果有人有任何想法来实现这个要求,他们可以分享。每一个帮助将不胜感激。谢谢:)
你的任务是图像相似度,你可以简单地完成它,并使用机器学习获得更可靠的输出结果。由于您的任务是使用相机扫描。更好的选择是 CoreML.You 可以参考这个 link by apple for Image Similarity.You 可以通过使用您自己的数据集进行训练来优化您的结果。任何更多的澄清需要评论。
最简单的方法是 ARKit 的 imageDetection
。您知道它支持的设备的局限性。但是它给出的结果很广泛而且很容易实现。 Here is an example
接下来是最难的CoreML。即使是简短的,你也需要了解机器学习。然后是困难的部分——用你的数据集进行训练。最大的缺点是你有单一的形象。我会放弃这种方法。
最后的中途解决方案是使用OpenCV。这可能很难,但适合您的需要。您可以找到不同的特征匹配方法来在相机源中找到您的图像。 example here。您可以使用 objective-c++ 在 c++ 中为 ios 编写代码。
另一种方法是使用所谓的"siamese network"。这实际上意味着您使用 Inception-v3 或 MobileNet 等模型和两个图像,然后比较它们的输出。
然而,这些模型通常会给出分类输出,即"this is a cat"。但是如果你从模型中移除那个分类层,它给出的输出只是一堆数字,这些数字描述了图像中的事物种类,但在非常抽象的意义上。
如果两张图片的这些数字非常相似——如果它们之间的 "distance" 非常小——那么这两张图片也非常相似。
所以你可以拿一个现有的 Core ML 模型,移除分类层,运行 它两次(每个图像一次),它给你两组数字,然后计算这些数字之间的距离.如果这个距离低于某种阈值,那么图像就足够相似了。