如何使用MATLAB分割文本图像?

时间:2010-04-10 12:32:55

标签: matlab artificial-intelligence machine-learning ocr pattern-recognition

这是OCR过程的一部分,即:

如何将句子分成单词,然后分成字符?

这项任务的候选算法是什么?

4 个答案:

答案 0 :(得分:1)

首先,NIST(国家标准与技术研究院)发布了一个protocol称为 NIST基于表格的手写识别系统 约15几年前,对于这个确切的问题 - 即提取和准备文本图像数据,以输入OCR的机器学习算法。 NIST的这个小组的成员也在该系统上发布了一些papers

他们的分类器的性能也通过算法(“NIST手写样本表格”)发布的数据证明了。

我已经下载和使用的六个左右的OCR数据集中的每一个都引用了NIST使用的数据提取/准备协议来准备用于输入其算法的数据。特别是,我非常确定这是准备波士顿大学手写数字数据库所依赖的方法,该数据库被视为OCR的基准参考数据。

因此,如果NIST协议不是真正的标准,至少它是一种经过验证的方法,可以为OCR算法的输入准备文本图像。我建议从那里开始,并使用该协议来准备你的数据,除非你有充分的理由不这样做。

总之,NIST数据是通过直接从预打印的表格中提取32位x 32位标准化位图来准备的。

以下是一个例子:

00000000000001100111100000000000 00000000000111111111111111000000 00000000011111111111111111110000 00000000011111111111111111110000 00000000011111111101000001100000 00000000011111110000000000000000 00000000111100000000000000000000 00000001111100000000000000000000 00000001111100011110000000000000 00000001111100011111000000000000 00000001111111111111111000000000 00000001111111111111111000000000 00000001111111111111111110000000 00000001111111111111111100000000 00000001111111100011111110000000 00000001111110000001111110000000 00000001111100000000111110000000 00000001111000000000111110000000 00000000000000000000001111000000 00000000000000000000001111000000 00000000000000000000011110000000 00000000000000000000011110000000 00000000000000000000111110000000 00000000000000000001111100000000 00000000001110000001111100000000 00000000001110000011111100000000 00000000001111101111111000000000 00000000011111111111100000000000 00000000011111111111000000000000 00000000011111111110000000000000 00000000001111111000000000000000 00000000000010000000000000000000

我认为BU数据准备技术包含了NIST技术,但最后增加了几个步骤,不是考虑到更高的保真度,而是减少文件大小。特别是BU组:

  • 从32 x 32位图开始;然后
  • 将每个32 x 32位图划分为 非重叠的4x4块;
  • 接下来,他们计算了数量 每个块中激活的像素(“1” 被激活; “0”不是);
  • 结果是一个8 x 8输入矩阵 其中每个元素是一个整数(0-16)

答案 1 :(得分:1)

作为第一关:

  • 将文字处理为行
  • 将一条线处理成段(连接的部分)
  • 找到可以放在每对段之间的最大白色条带。
  • 查看宽度序列,选择“大”宽度作为空格。
  • 白色空间之间的一切都是一个词。

现在你需要一个足够好的“大”定义。

答案 2 :(得分:0)

我假设你在matlab中使用图像处理工具箱。

区分图像中的文字。您可能想要关注:

  1. 灰度(大大加快了速度)。
  2. 对比度增强。
  3. 轻微侵蚀图像以消除噪点(划痕/光点)
  4. 膨胀(沉重)。
  5. 边缘检测(或ROI计算)。
  6. 通过试错法,您将得到合适的系数,使得您在第5步之后获得的图像将包含围绕每个字母/字/行/段的凸区域。

    注意:

    1. 基本上你扩张的越多,你获得的元素就越大。即最少的扩张对于识别字母是有用的,而识别字符和段落则需要相对较高的扩张。
    2. Online ImgProc MATLAB docs
    3. 查看在线文档中的“文档中的示例”部分,或参阅Matlab“帮助”菜单中的图像处理工具箱文档。

      这里给出的示例将指导您调用正确的函数及其各种格式。

      Sample CODE (not mine)

答案 3 :(得分:0)

用于查找二进制序列,如101000000000000000010000001 检测序列0000,0001,001,01,1