iOS 上的图像匹配

信息处理 图像处理 物体识别 匹配过滤器
2022-02-02 01:42:12

建议从 SO 迁移此问题。

我正在构建一个 iOS 应用程序,作为一项关键功能,它包含图像匹配。问题是我需要识别的图像是小型定向运动 10x10 牌匾,上面有简单的大文字。它们的反射性很强,并且会在室外(因此光线条件会变化)。示例图片http://i1274.photobucket.com/albums/y425/Chris_Mitchelmore/2_zpsce84d4f3.png

池中将有多达 15 种此类图像,而我真正需要检测的只是文本,以便记录用户所在的位置。

我面临的问题是,使用我尝试过的图像匹配软件 aurasma 和稍微成功的 arlabs,它们无法区分它们,因为它们主要是为处理详细图像而构建的。

我需要准确检测正在扫描的斑块,并考虑使用 gps 来优化选择,但我发现唯一可靠的方法是让用户手动输入文本。我们以产品为基础的主要吸引力之一是能够检测这些已经存在的图像,而无需设置任何额外的材料。

任何人都可以建议一款可以工作的软件(iOS 友好)或一种对用户来说有效且互动/愉悦的检测方法。

示例环境: http ://www.orienteeringcoach.com/wp-content/uploads/2012/08/startfinishscp.jpeg

环境可能会发生很大变化,基本上可以放置在斑块所在的任何地方;在树木繁茂或开阔的区域,但绝大多数是在户外的围栏、墙壁和柱子。

1个回答

我设法找到了一个运行良好的解决方案。我还没有完全优化,但我认为它只是调整过滤器,稍后会解释。

最初我尝试设置 opencv,但它非常耗时且学习曲线陡峭,但它确实给了我一个想法。我的问题的关键是真正检测图像中的字符并忽略背景,这基本上只是噪音。OCR 正是为此目的而设计的。

我发现免费库 tesseract ( https://github.com/ldiqual/tesseract-ios-lib ) 易于使用且具有大量可定制性。起初结果非常随机,但应用锐化和单色滤镜和颜色反转效果很好,可以清理文本。接下来在 ui 上标出一个目标区域,并用它来切出要处理的图像矩形。大图像的处理速度很慢,这大大减少了它。OCR 过滤器允许我限制允许的字符,并且由于斑块遵循标准配置,这缩小了准确性。

到目前为止,它在灰色背景斑块上取得了成功,但我还没有找到适用于红色和白色版本的正确过滤器。我的目标是添加颜色检测并消除输入数据类型的需要。