我制作了图案:带有不同尺寸“A”字母的图像(从12到72:12,14,..,72) 我测试了模式匹配的方法,它给出了很好的结果。 从图像中选择文本区域的一种方法是对所有小字母和大字母以及不同大小的数字运行该算法。和字体! 我不喜欢它。而不是它我想做一个像普遍模式或 更好的说法是:扫描具有不同窗口大小的图像,并选择某些功能(该窗口中存在字符的概率)大于某个固定值的区域。 你知道任何方法或想法来实现这个功能吗? 它必须与原始图像(灰度)一起使用。
答案 0 :(得分:2)
我想你正在开发OCR,对吧?
你决定采用非常不寻常的方式,因为其他人都会在双色调图像上进行匹配。这使一切变得更加简单。一旦你正确地降级它(这本身就是一项非常困难的任务),你不必处理不同的亮度级别,注意不均匀的背景等等。当然,需要的计算资源更少。然而,做灰度的一切实际上是你的目标,你想向其他OCR科学家展示它实际上是可行的 - 好吧,祝你好运。
您描述的字母位置的方法是非常非常非常非常非常计算的。您必须扫描整个图像(image_size ^ 2),然后匹配模式(* pattern_size ^ 2),然后为每个模式(* pattern_num)执行此操作。这将非常缓慢。
而是尝试简化算法以将其分解为两个阶段。首先应该在图片上寻找一些特征(比如连接的暗区域,或者在大方块上分割图像并丢弃所有亮区域),然后在少量找到的区域上执行模式匹配。这至少是N ^ 2,您可以尝试降低复杂性以首先处理图像的行或列(通过创建直方图)。因此,您可以尝试使用许多不同的简化方法。
在图片上找到这些对象并在其上匹配图案后,您实际上知道它们的大小,因此您不必存储所有尺寸的字母A,您只需将对象的原始图像重新缩放到该尺寸说72,并匹配它。
至于字体 - 你在这里没有多少选择,你需要匹配所有可能的A形状,以确保你找到A.但是一旦你只匹配A的一个大小 - 你有更多的计算尝试不同的A的力量。