我需要减小彩色扫描文件的大小。
到目前为止,我认为应该进行以下步骤:
- 选择性模糊(或类似方法)以减少噪音
- 缩放到 ~120dpi
- 减少颜色
到目前为止,我们使用 convert (imagemagick) 和 net-ppm 工具。
扫描件是发票,不是照片。
感谢任何提示。
更新
例子:
- http://www.thomas-guettler.de/tbz/example.png 11M
- http://www.thomas-guettler.de/tbz/example_0800_pnmdepth009.png pnmscale, pnmdepth 110K
- http://www.thomas-guettler.de/tbz/example_1000_pnmdepth006.png pnmscale, pnmdepth 116K
赏金
具有可重现解决方案的最小且可读性好的 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类型或意外类型的文档。
关于algorithm - 缩放和减少颜色以减小扫描文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8999544/