iOS中的稀疏图像匹配

iOS中的稀疏图像匹配,ios,objective-c,image-processing,static-libraries,image-recognition,Ios,Objective C,Image Processing,Static Libraries,Image Recognition,我正在构建一个iOS应用程序,作为一个关键功能,它包含图像匹配。问题是我需要识别的图像是小的定向运动10x10斑块,上面有简单的大文本。它们可以很好地反射,并且在室外(因此光照条件会变化)。样本图像 池中最多会有15种类型的图像,我真正需要检测的是文本,以便记录用户的位置 我面临的问题是,使用我尝试过的图像匹配软件aurasma和稍微成功一点的arlabs,它们无法区分它们,因为它们主要是为处理细节图像而构建的 我需要准确地检测正在扫描的斑块,并考虑使用gps优化选择,但我发现唯一可靠的方法是

我正在构建一个iOS应用程序,作为一个关键功能,它包含图像匹配。问题是我需要识别的图像是小的定向运动10x10斑块,上面有简单的大文本。它们可以很好地反射,并且在室外(因此光照条件会变化)。样本图像

池中最多会有15种类型的图像,我真正需要检测的是文本,以便记录用户的位置

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

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

有人能推荐一款可以工作的软件(iOS友好型)或一种对用户来说有效、互动/愉悦的检测方法吗

示例环境:


环境可以发生实质性的变化,基本上是斑块所在的任何位置;篱笆、墙和柱子,无论是在树木茂密的地方还是在开阔的地方,但绝大多数都是在户外。

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

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

  • 经典的“计算机视觉”路线是特征提取和分类。并且是已知的对移动设备来说足够快的功能提取器(前者比后者快),并且它们的实现并不太复杂。然而,分类器是非常重要的,您可能需要搜索适当的iOs库

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


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

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

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

    我发现免费的tesseract()库易于使用,并且具有大量的可定制性。起初,结果非常随机,但应用锐化和单色滤光片以及颜色反转可以很好地清理文本。接下来,a在ui上标出一个目标区域,并使用该区域剪切出要处理的矩形图像。大图像的处理速度很慢,这就大大降低了处理速度。OCR过滤器允许我限制允许的字符,由于斑块遵循标准配置,这降低了精确度


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

    您是否有这些斑块在其原始环境中的一些图像,以了解我们希望从中提取它们的内容?如果你不能找到一个很好的解决方案来解决这个更为普遍的图像处理问题,网站上的人可能会帮你解决这部分问题。不过,他们无法描述iOS的具体解决方案。您可能需要对图像进行预处理,以生成高对比度图像——扔掉所有灰度信息,补偿阴影等。dsp.stackexchange.com可能有一些指针。(他们比这个董事会更能容忍“愚蠢”的问题。)到目前为止,我的策略是隔离图像,并在相机上放置一个裁剪过的检查矩形。我希望用户在区域内对齐图像。同样,您可以想象人们看到的示例图像在这里非常有用。它可能会让我们测试一些不同的图像处理技术。对不起,我误解了这个问题。我已经添加了一个示例图像。非常好的响应。我的主要问题是我没有时间实现匹配算法,尤其是在零经验的情况下。我希望找到/购买一个完整的解决方案,与我目前使用的解决方案不同,它可以在我的环境中工作。你关于二元分类的观点给了我希望,因为所有斑块的对比度都很高。谢谢