我需要制作一个具有以下功能的 iOS 应用程序:
- 使用相机捕捉图像。
- 识别该图像:它是否与示例图像匹配?
是否有任何在线 API 可以做到这一点(来自 Google、Yahoo 等)?例如,我可以上传一张图片并获得一个图片 URL,然后请求一个 URL 以将新图片与现有图片进行比较吗?
我需要制作一个具有以下功能的 iOS 应用程序:
是否有任何在线 API 可以做到这一点(来自 Google、Yahoo 等)?例如,我可以上传一张图片并获得一个图片 URL,然后请求一个 URL 以将新图片与现有图片进行比较吗?
OpenCV库(适用于 iPhone)包含许多算法。您可以简单地比较图像的颜色直方图,或者使用更复杂的东西。你指的是哪种搭配?查找重复或计算图像的相似性度量?
如果您想匹配一些简单的模板来查找对象,请尝试 Viola & Jones 算法和所谓的 Haar 级联。例如,OpenCV 已经在 XML 文件中训练了用于检测人脸的模板集合。OpenCV 包含用于训练的实用程序,因此您可以为其他类型的对象生成级联
您还可以查看Moodstocks,它们提供了出色的 API 和 iOS SDK,可在几分钟内在您的应用中实现图像识别。
尝试以下两个 API:
我找到了 IQEngines,效果很好。
随着深度神经网络的出现,整个图像识别领域都发生了变化。但是,您需要一台功能强大的机器来训练您自己的神经网络。不过,您也可以使用vize.it - 这是一个易于使用的在线应用程序,可让您使用 http API 定义任务和分类图像。
免责声明:我是人工智能的博士生,是 vize.it 团队的成员。
Pastec是已经提到的服务的开源(LGPL) 替代方案。
其简单的 HTTP API 允许在索引中轻松添加、删除和搜索匹配的图像。它基于 OpenCV 并使用无专利的 ORB 描述符。
我调查了Moodstocks,他们似乎已经完善了具有按月付费服务的图像识别系统。他们有一个很棒的系统(我已经测试过它供我自己使用,它很棒)但它对我来说非常昂贵,这就是我不使用它的原因。在我写这篇文章的时候,“最多 100,000 张”的图像服务大约是 12,000 美元/年。对于我的项目,我需要匹配近 400 万张图像。哎呀。
因此,经过几个月的断断续续的研究,我得出的结论是,如果您要与 1000 张或更多(在我的情况下为 100 万张以上)图像进行比较,则需要关闭图像比较的设备。用户移动设备没有空间、速度和能力来执行大量计算来完成此类工作。
这真正意味着您需要在高性能机器上设置图像识别服务器并将其公开给您的应用程序。在应用程序上,让用户为对象拍照(或者您可以从相机视频中抓取帧),将其发送到您的服务器进行比较,然后在找到匹配项时将结果报告回应用程序。
例如,您可以使用Accord.NET或EmguCV 之类的框架来制作 C# 桌面应用程序或在 Windows Server 机器上运行的服务来执行此操作。
据我猜测,亚马逊 iOS 应用程序对图像识别的作用是它们似乎实时定位 SURF 点,并在扫描而不是整个图像时将数据发送到服务器。我的猜测是他们在设备上使用 OpenCV 来执行此操作。但他们仍然使用服务器软件发回匹配的产品 SKU。
这是一个很棒的博客文章,作者是一个想在 .NET 中进行图像匹配的人,他介绍了每个步骤,包括它的工作原理、操作方法,然后在示例应用程序中提供了他的所有代码。惊人的帖子:https ://sbrakl.wordpress.com/2015/01/30/love-affair-with-cbir-part-3/comment-page-1/
据我所知,LoCATe 算法在处理大量图像时表现最好和最快,但也需要数小时、数天甚至数周(取决于您拥有的图像数量)来创建海量索引搜索。我认为在图像匹配方面,我发现创建可靠索引的速度与从查询中查找匹配的速度有关。