7

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

在此处输入图像描述

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

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

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

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

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

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

4

2 回答 2

2

我不是 iOs 程序员,但我会尝试从算法的角度来回答。本质上,您有一个检测问题(“斑块在哪里?”)和一个分类问题(“它是哪一个?”)。要求用户将斑块保持在预定义的区域中当然是个好主意。这解决了检测问题,这通常比分类问题更难在资源有限的情况下解决。

对于分类,我看到了两种选择:

  1. 经典的“计算机视觉”路线是特征提取和分类。Local Binary PatternsHOG是已知对于移动设备来说足够快的特征提取器(前者比后者快),而且它们实现起来并不复杂。然而,分类器并不重要,您可能必须搜索合适的 iOs 库。

  2. 或者,您可以尝试对图像进行二值化,即将像素分类为“板”/白色或“文本”/黑色。然后,您可以使用容错相似性度量将您的二值化图像与斑块的二值化参考图像进行比较。倒角距离测量是一个很好的候选。它基本上归结为比较两个二值化图像的距离变换。这比直接比较二值图像更能容忍错位。参考图像的距离变换可以预先计算并存储在设备上。

就个人而言,我会尝试第二种方法。第二种方法的(非移动)原型使用良好的图像处理库(OpenCV、Matlab + 图像处理工具箱、Python 等)相对容易编码和评估。

于 2013-02-06T17:54:49.637 回答
1

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

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

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

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

于 2013-02-16T15:14:02.093 回答