【问题标题】:scale and reduce colors to reduce file size of scan缩放和减少颜色以减小扫描文件大小
【发布时间】:2012-01-25 08:12:50
【问题描述】:

我需要减小彩色扫描的文件大小。

到目前为止,我认为应该采取以下步骤:

  • 选择性模糊(或类似)以减少噪点
  • 缩放至 ~120dpi
  • 减少颜色

到目前为止,我们使用 convert (imagemagick) 和 net-ppm 工具。

扫描件是发票,不是照片。

任何提示表示赞赏。

更新

示例:

赏金

具有可复制解决方案的 example.png 最小且可读性好的缩减文件获得赏金。解决方案只需要使用开源软件即可。

文件格式不重要,只要能重新转成PNG即可。处理时间并不重要。我可以稍后优化。

更新

我得到了非常好的黑白输出结果(谢谢)。颜色减少到大约 16 或 32 种颜色会很有趣。

【问题讨论】:

  • vips库中关于github问题的相关问题:github.com/jcupitt/libvips/issues/9
  • 您对最终文件的要求是什么?什么需要能够阅读它们? (例如,它们必须是 png,还是可以是另一种格式?如果是另一种格式,它们可以是专有格式还是经常不使用的格式?)另外,什么样的扫描?它们总是颜色相对较少的文档吗?他们有完整的照片吗?此外,您可以花多少时间处理它们?它们总是与您示例的尺寸有关吗?
  • 我更新了示例。让 example.png 尽可能小。更多颜色、其他维度或输出格式目前并不重要。
  • 噪声通常通过平均/模糊/钳位/等来减少,这与锐化相反。
  • 如果你想要最小的可读文件,那就是一个文本文件!也许太残酷了,但是,您的标准中没有提到必须保留哪些方面。

标签: algorithm colors resize scanning


【解决方案1】:

这是一个相当开放的问题,因为在图像质量和图像大小之间仍有可能调整的空间......毕竟,将其设为黑白并使用 CCITT T.6 黑白(传真样式)进行压缩如果不是所有支持颜色的压缩算法,压缩将击败大多数人。

如果您愿意使用黑白(不是灰度),那就去做吧!它使文档非常小。

否则,我建议使用一系列次要图像转换和自适应预测树(请参阅here)。 APT 软件包是开源或公共领域的,非常易于编译和使用。它的优点是它在各种图像类型上表现良好,尤其是文本,它可以让您更好地缩放图像大小与图像质量,而不会失去可读性。 (我发现自己在可读性阈值上将 example_1000 大小的彩色版本压缩到 48KB,而 64K 具有明显的伪影但易于阅读。)

我将 APT 与 imagemagick 调整组合:

convert example.png -resize 50% -selective-blur 0x4+10% -brightness-contrast -5x30 -resize 80% example.ppm
./capt example.ppm example.apt 20  # The 20 means quality in the range [0,100]

并扭转这个过程

./dapt example.apt out_example.ppm
convert out_example.ppm out_example.png

解释 imagemagick 设置:

  • -resize 50% 将其缩小一半以加快处理速度。还隐藏了一些打印和扫描伪影。
  • -selective-blur 0x4+10%:锐化实际上会产生更多噪音。您真正想要的是选择性模糊(如在 Photoshop 中),当没有“边缘”时会模糊。
  • -brightness-contrast -5x30:这里我们将对比度提高了一点,以减少由页面轮廓引起的不良着色(导致可压缩数据较少)。我们还稍微变暗以使黑色更黑。
  • -resize 80% 最后,我们将大小调整为比您的 example_1000 图像大小大一点。 (足够接近。)这也减少了明显伪影的数量,因为当像素合并在一起时它们在某种程度上被隐藏了。

此时,您将在此示例中获得精美的图像——漂亮、平滑的颜色和清晰的文本。然后我们压缩。 20 的质量值是一个相当低的设置,看起来不再那么漂亮,但文档非常清晰。即使质量值为 0,它仍然基本清晰。

再次重申,使用 ADT 不一定会为这张图片带来最佳效果,但它不会在渐变等类似摄影的内容上变成完全无法辨认的混乱,因此应该更好地了解更多内容类型或意外类型的文档。

结果: 88kb 76kb 64kb 48kb

Processed image before compression

【讨论】:

  • 处理 imagemagick 时典型的明显优化:不要使用 imagemagick!它很慢。如果你够勇敢的话,用 imagemagick 编写我们正在做的事情并不难,除了调整大小。 (也许 GD 图形库会让事情变得更简单?)
  • 感谢您的回答。我给了你赏金。
【解决方案2】:

如果您真的不在乎颜色的数量,我们不妨去黑白并使用双层编码器。我最终使用了 DJVU 格式,因为它与 JBIG2 相媲美并且具有开源编码器。在这种情况下,我使用了didjvu 编码器,因为它取得了最好的结果。 (在 Ubuntu 上,您可以 apt-get install didjvu,也许在其他发行版上也是如此。)

我最终得到的魔法编码如下:

convert example.png -resize 50% -selective-blur 0x4+10% -normalize -brightness-contrast -20x100 -dither none -type bilevel example_djvu.pgm
didjvu encode -o example.djvu example_djvu.pgm --lossless

请注意,这实际上是在全分辨率下优于 0x2+10% 的颜色模糊 - 这最终会使想象在转换为双层图像之前与想象的一样好。

解码工作如下:

convert example.djvu out_example.png

即使使用更大的分辨率(更易于阅读),大小仍为 24KB。当缩小到相同大小时,它仍然是 24KB!最后,只有 75% 的原始图像缩小和 0x5+10% 的模糊,它的权重为 32KB。

在此处查看视觉结果:http://img29.imageshack.us/img29/687/exampledjvu.png

【讨论】:

    【解决方案3】:

    如果您已经使用 Imagemagick 实用程序“转换”做正确的事情,那么最好先查看 Imagemagick 库。

    快速查看我的 Ubuntu 软件包列表显示了 perl、python、ruby、c++ 和 java 的绑定

    【讨论】:

    • Imagemagick 很慢,并且不(AFAIK)使用多个 CPU。
    • 你没有在你的要求中提到速度。
    • 是的,我改变了主意。起初我希望图像尽可能小。我可以稍后优化。
    猜你喜欢
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2013-09-11
    • 2011-10-23
    • 1970-01-01
    • 2013-06-25
    • 2011-01-10
    • 1970-01-01
    相关资源
    最近更新 更多