【问题标题】:The best algorithm for grayscale for tesseract input正方体输入灰度的最佳算法
【发布时间】:2015-03-08 00:55:27
【问题描述】:

我正在开发一个使用 tesseract 库来识别单词的项目。它没有像我预期的那样工作,有时,它会以完全聚焦的图像失败。我发现原因是我的灰度步骤后的图像不太好。

我使用的算法来自 zxing 项目:

int grey = yuv[inputOffset + x] & 0xff;
pixels[outputOffset + x] = (grey * 0x00010101) | 0xFF000000;

对于这种情况有没有更好的解决方案?

更新: 我尝试在裁剪和转换后打印图像,我得到了一个具有预期大小但不是颜色的裁剪图像。看起来图像被转换为​​“紫绿色”图像。任何人都可以帮助我:(?

【问题讨论】:

  • 我不知道您正在使用的yuv 的定义,但看起来您正在剥离v 而不是y。这肯定会导致糟糕的结果。
  • 这段代码是从源码复制过来的,其实我是把图片拆开转成灰度图,输入的图片是YUV格式所以变量名是yuv
  • 这就是我的意思,你的灰度转换是错误的。但是不知道 yuv 图像是如何生成的,我无法给出具体的建议。

标签: algorithm tesseract grayscale


【解决方案1】:

调整输入图像的大小以确保您在 Tesseract 喜欢的范围内获得 x 高度,并使用 Otsu 或通过 Open CV 和一些形态学过滤器(如开放和扩张)进行自适应阈值处理,提供一组良好的预处理过滤器,可产生良好的结果,具体取决于您的输入需要尝试打开/扩张的配置。

【讨论】:

  • 在我的要求中,裁剪后的图像是可调整大小的,因此很难修复输入图像的大小。在没有 OpenCV 库的情况下,你有更好的图像预处理解决方案吗?
【解决方案2】:

旧版本确实需要 8 位灰度 tiff 才能获得良好效果。但是,如果您使用 >3 的版本,最好的算法是根本不进行任何图像预处理。至少在你没有特殊要求的情况下。 如果你有红色字符(0xFF000000 只使用红色通道),zxing 的算法会很好。

【讨论】:

  • 其实我认为0xFF000000 只是在像素值上添加一个恒定的alpha,无论如何这可能会被忽略。
  • 据我了解,| 0xFF000000 仅添加常量 alpha。为什么是红色通道。我使用tess-two 库进行识别,这个库使用tesseract v3.04,不是最新版本吗?但是,我认为图像处理效果更好,请参阅here
猜你喜欢
  • 1970-01-01
  • 2011-07-02
  • 2020-08-26
  • 2016-03-22
  • 2017-01-20
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多