algorithm - 缩放和减少颜色以减小扫描文件的大小

标签 algorithm colors resize scanning

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

到目前为止,我认为应该进行以下步骤:

  • 选择性模糊(或类似方法)以减少噪音
  • 缩放到 ~120dpi
  • 减少颜色

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

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

感谢任何提示。

更新

例子:

赏金

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

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

更新

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

最佳答案

这是一个相当开放的问题,因为在图像质量和图像尺寸之间仍然存在灵活的空间...毕竟,将其制作成黑白图像并使用 CCITT T.6 黑白图像(传真样式)进行压缩如果不是所有支持颜色的压缩算法,压缩都会让大多数人脱颖而出。

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

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

我将 APT 与 imagemagick tweakery 相结合:

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 不一定会为此图像带来最佳结果,但它不会在类似照片的内容(例如渐变)上变成完全无法识别的困惑,因此您应该更好地了解 more类型或意外类型的文档。

结果: 88kb 76kb 64kb 48kb

Processed image before compression

关于algorithm - 缩放和减少颜色以减小扫描文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8999544/

相关文章:

algorithm - 如何编写暴力算法?

javascript - 如何将 mired 转换为 RGB 或在 css 中显示 mired?

opencv - 在 HSV 颜色空间中定义黑色区域

java - 仅在 Java 中生成随机 "dark"颜色

c# - 在 C# 中的运行时更改窗体大小

div 中的 css div 高度不正确

algorithm - 简单移动平均求和/偏移问题

algorithm - 许多文件中出现频率最高的单词是什么

c++ - 如何明智地实现96条件?

html - 将图像拖放到网页中并使用 HTML 文件 API 自动调整它们的大小