1

我正在实施滑动窗口技术来开发照片 OCR,即从图片中剪切一个特定大小的矩形并检查它是否包含文本。然后矩形再次移动了一些像素。但是这种滑动窗口技术需要很多时间。例如,处理一张 1366x768 的图片需要 6 个小时,步长为 2,窗口大小为 20x25。是否有任何其他可能有用的技术或如何加快该过程?

我正在用java编码。

4

2 回答 2

3

在不了解您的算法/代码的任何细节的情况下,很难给出具体的建议。您可以考虑几个潜在的性能改进:

  1. 最大限度地减少磁盘 I/O 和缓存未命中。你说一个矩形是“从图片中剪下来的”。如果每个“剪切”都是从磁盘单独读取,则效率非常低,并且会显着增加执行时间。当您移动窗口(移动 2 个像素)时,新窗口中的大部分数据都是相同的,因此请尽量避免重新读取该数据。
  2. 减小窗口大小或增加步长。这显然会影响您的结果,但根据您尝试 OCR 的字符大小,它可能是一个选项。
  3. 如果您正在应用卷积滤波器进行 OCR,请考虑通过图像数据的 2D FFT进行快速卷积。
  4. 多线程您的应用程序,如果它还没有。虽然您的问题不是令人尴尬的并行,但它可能相当容易多线程。
于 2012-11-27T13:34:41.903 回答
1

滑动窗口方法是蛮力的,因此从本质上来说非常缓慢。也许您应该看看基于显着性的技术,这些技术使用过滤器来优先处理要处理的图像区域。

这是我比较熟悉的一篇论文:B. Draper 和 A. Lionelle。“相似变换下选择性注意的评估”,视觉和图像理解,100:152-171,2005

最后,您使用的是什么 ANN 库?确保您的 ANN 代码正在执行矩阵/向量运算,并且它们已尽可能优化!

于 2012-11-30T04:34:33.663 回答