iOS中的稀疏图像匹配
我正在构建一个iOS应用程序,作为一项关键功能,它包含图像匹配。 问题是我需要识别的图像是小型定向10x10斑块,上面有简单的大文本。 它们可以很反光,并且会在外面(所以光线条件会变化)。 示例图像
这些类型的图像中最多会有15个图像,我真正需要检测的是文本,以便记录用户的位置。
我面临的问题是,我尝试过的图像匹配软件,aurasma和稍微成功的arlabs,他们无法区分它们,因为它们主要用于处理详细的图像。
我需要准确地检测出正在扫描的斑块,并考虑使用gps来优化选择,但我发现的唯一可靠方法是让用户手动输入文本。 我们基于产品的主要吸引力之一是能够检测已经存在的这些图像,而不必设置任何其他材料。
任何人都可以推荐一款可以工作的软件(如iOS友好型)或者一种有效且交互式/令用户满意的检测方法。
示例环境:http://www.orienteeringcoach.com/wp-content/uploads/2012/08/startfinishscp.jpeg
环境可以发生显着变化,基本上可以放置斑块的任何位置; 围墙,墙壁和岗位在树木繁茂或开放的地区,但绝大多数在户外。
我不是一位iOs程序员,但我会尝试从算法的角度回答。 基本上,你有一个检测问题(“斑块在哪里?”)和一个分类问题(“它是哪一个?”)。 要求用户将斑块保留在预先定义的区域当然是一个好主意。 这解决了检测问题,与分类问题相比,这通常难以用有限的资源来解决。
为了分类,我看到了两个选择:
经典的“计算机视觉”路线将是特征提取和分类。 局部二进制模式和HOG是已知对于移动来说足够快的特征提取器(前者比后者更快),并且它们不太复杂。 然而,分类器并不重要,您可能必须搜索适当的iOs库。
或者,您可以尝试对图像进行二值化处理,即将像素分类为“平板”/白色或“文本”/黑色。 然后,您可以使用容错相似性度量来比较二值化图像和斑块的二值化参考图像。 倒角距离度量是一个很好的选择。 它基本归结为比较你的两个二值化图像的距离变换。 这比直接比较二进制图像更容忍错位。 参考图像的距离变换可以被预先计算并存储在设备上。
就我个人而言,我会尝试第二种方法。 第二种方法的一个(非移动)原型相对容易用一个好的图像处理库(OpenCV,Matlab +图像处理工具箱,Python等)进行编码和评估。
我设法找到了一个运行良好的解决方案。 我还没有完全优化,但我认为它只是调整过滤器,稍后会解释病情。
最初我试图设置opencv,但它非常耗时,学习曲线陡峭,但它确实给了我一个想法。 我的问题的关键是真正检测图像中的字符,并忽略背景,这基本上只是噪音。 OCR完全是为此目的而设计的。
我发现免费的库tesseract(https://github.com/ldiqual/tesseract-ios-lib)易于使用,并具有大量的可定制性。 起初,结果是非常随机的,但应用锐化和单色滤镜以及颜色反转效果很好,可以清理文本。 接下来,在ui上标出一个目标区域,并用它来剪切要处理的图像矩形。 大图像的处理速度很慢,这大大减少了处理速度。 OCR过滤器允许我限制允许的字符,并且随着斑块遵循标准配置,缩小了精度。
到目前为止,它已成功与灰色背景斑块,但我还没有找到红色和白色版本的正确过滤器。 我的目标是添加颜色检测并消除需要输入数据类型。
链接地址: http://www.djcxy.com/p/11789.html