【问题标题】:Fastest deskew algorithm?最快的纠偏算法?
【发布时间】:2010-12-03 20:00:37
【问题描述】:

手头的任务让我有点不知所措。我们有一个用于 TWAIN 扫描的工具包。我们的一些客户抱怨设置纠偏选项时扫描速度变慢。这是因为如果他们的扫描仪不支持硬件纠偏,则会在 CPU 的后处理中完成。我想知道是否有人知道一个好的(即快速)算法来实现这一点。我很难说我们现在使用的是什么算法。有哪些算法可以解决这个问题,它们在速度/准确性方面的排名如何?如果我知道算法的名称,我可以更轻松地对它们进行 google 搜索。

谢谢。 -汤姆

【问题讨论】:

标签: c++ algorithm image-processing twain


【解决方案1】:

您是用彩色还是黑白扫描?

Deskew 是处理器密集型的。必须对 Group4 tiff 或 JPEG 进行解压缩、确定偏斜角度、去偏斜然后压缩。

市面上有许多图像处理算法都带有纠偏功能,这些年来我评估过很多。不同库之间的处理速度存在巨大差异,其中很大一部分归结为编码的好坏而不是使用的算法。商业图书馆仅仅读取和写入图像就存在巨大差异。

到目前为止,我使用过的最快的商业纠偏来自 Unisoft Imaging (www.unisoftimaging.com)。我假设其中大部分是用汇编程序编写的。 Unisoft 已经存在多年并且非常快速和高效。它支持不同的许多不同的纠偏选项,包括黑色边框去除、颜色和黑白纠偏。 Group4 的套路非常扎实而且速度非常快。该库附带许多其他图像处理选项以及 TWAIN 和本机 SCSI 扫描仪支持。它还支持Unix。

如果您想要免费的纠偏,那么您可能想看看 Leptonica。它没有太多的文档,但是非常稳定并且写得很好。 http://www.leptonica.com/

从头开始开发代码可能会非常耗时,并且可能会出现很多错误并且容易出错。

另一种选择是在单独的进程中处理文档,以便扫描能够以扫描仪的速度运行。目前,您可能正在以并行方式处理所有内容,一个接一个的任务,因此速度变慢了。

【讨论】:

  • +1 用于 leptonica (leptonlib)。它使用 libtiff 进行解码/编码,速度相当快,并且去偏斜算法是我见过的最快的算法之一(用于角度检测的微分线和,以及用于旋转的光栅剪切)。而且我不同意文档 - 源文件具有非常好的文档 cmets,只是没有“一站式”文档。考虑到您正在使用 C++ 进行开发,这将是一个绝佳的选择。
  • 我自己刚刚进入 Leptonica。我只是查看了源代码,不得不同意你的看法。源代码 cmets 非常有帮助。不过,将它放在一个地方会很好。 Lpetonica 得到了很好的支持,现在是 Google Tesseract OCR 项目不可或缺的一部分。
  • 再次为 leptonlib +1,我在我的 JBig2 应用程序中使用它......但是我如何真正解决这个问题 - 减少了它投射的最小和最大角度。我把它降到了半秒,这是可以接受的
【解决方案2】:

考虑将其作为后处理进行,因为不能实时进行纠偏(除非它是硬件加速的)。

Deskew 包含两个步骤:倾斜检测和旋转。通常可以在黑白(1 位)图像上更快地检测倾斜角度。旋转速度取决于插值的质量。运行质量良好的纠偏需要花费大量时间,远远超过扫描页面。

一台好的高速扫描仪每分钟可以处理 120 个双面页面,如果它具有硬件 JPEG 或 TIFF Group 4 压缩,并且您的 TWAIN 库会利用它(提示:不要使用本机模式)。您几乎没有足够的时间以这种速度将文件保存到硬盘驱动器,更不用说解压缩、倾斜检测、旋转、重新压缩了。除非您可以使用视频卡的硬件加速器来旋转和压缩,否则每页质量偏差需要几秒钟。

【讨论】:

    【解决方案3】:

    我是否正确理解您已经实现了这样的算法?如果是这样,你确定没有优化空间吗?我将从分析现有解决方案开始。

    无论如何,我想你应该寻找快速的数字 Radon 变换算法。

    看看http://pagetools.sourceforge.net。他们有纠偏算法实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-25
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      相关资源
      最近更新 更多