OCR 中的滑动窗口需要大量时间

Posted

技术标签:

【中文标题】OCR 中的滑动窗口需要大量时间【英文标题】:Sliding windows in OCR taking lot of time 【发布时间】:2012-11-15 03:00:38 【问题描述】:

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

我正在用 java 编码。

【问题讨论】:

【参考方案1】:

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

    最大限度地减少磁盘 I/O 和缓存未命中。你说一个矩形是“从图片中剪下来的”。如果每个“剪切”都是从磁盘单独读取,则效率非常低,并且会显着增加执行时间。当您移动窗口(移动 2 个像素)时,新窗口中的大部分数据都是相同的,因此请尽量避免重新读取这些数据。 减小窗口大小或增加步长。这显然会影响您的结果,但根据您尝试 OCR 的字符大小,这可能是一种选择。 如果您要应用卷积滤波器来执行 OCR,请考虑通过图像数据的 2D FFT 执行 fast convolution。 多线程您的应用程序,如果它还没有。虽然您的问题不是embarrassingly parallel,但它很容易是多线程的。

【讨论】:

感谢您的回答。我无法减小或增大窗口大小,但我绝对可以选择 2 像素相同的数据。而且我已经应用了多线程。【参考方案2】:

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

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

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

【讨论】:

以上是关于OCR 中的滑动窗口需要大量时间的主要内容,如果未能解决你的问题,请参考以下文章

Andrew Ng-ML-第十九章-应用举例:照片OCR(光学字符识别)

2D 中的滑动窗口最小值/最大值

随着时间的推移滑动窗口 - 数据结构和垃圾收集

Matlab-在滑动窗口周围放置边框

滑动窗口9:239. 滑动窗口最大值和480滑动窗口中位数

Android中的手势滑动