我需要减少彩色扫描的文件大小。
到目前为止,我认为应该采取以下步骤:
- 选择性模糊(或类似)以减少噪声
- 缩放至约120dpi
- 减少颜色
到目前为止,我们使用convert(imagemagik)和netppm工具。
扫描的是发票,而不是照片。
如有任何提示,不胜感激。
更新
示例:
- http://www.thomas-guettler.de/tbz/example.png1100万
- http://www.thomas-guettler.de/tbz/example_0800_pnmdepth009.pngpnmscale,pnmdepth 110K
- http://www.thomas-guettler.de/tbz/example_1000_pnmdepth006.pngpnmscale,pnmdepth 116K
赏金
拥有可复制解决方案的example.png的最小且可读性良好的精简文件将获得奖励。该解决方案只需要使用开源软件。
文件格式并不重要,只要您可以再次将其转换为PNG即可。处理时间并不重要。我可以稍后进行优化。
更新
我在黑白输出方面得到了很好的结果(谢谢)。将颜色减少到大约16或32种颜色将是令人感兴趣的。
这是一个相当开放的问题,因为图像质量和图像大小之间仍有可能存在灵活性。。。毕竟,将其制成黑白并用CCITT T.6黑白(传真式)压缩将击败大多数(如果不是所有颜色都支持的话)压缩算法。
如果你愿意黑白(而不是灰度),那就去做吧!它使文档变得非常小。
否则,我推荐一系列次要的图像转换和自适应预测树(请参阅此处)。APT软件包是开源或公共领域的,非常易于编译和使用。它的优点是,它在各种图像类型(尤其是文本)上都表现良好,并且可以在不损失可读性的情况下更好地缩放图像大小和图像质量。(我发现自己把一个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
解释imagemagik设置:
-resize 50%
将其缩小一半以加快处理速度。还隐藏了一些打印和扫描伪影-selective-blur 0x4+10%
:锐化实际上会产生更多的噪声。你真正想要的是一种选择性模糊(就像在Photoshop中一样),当没有"边缘"时会模糊-brightness-contrast -5x30
:在这里,我们将对比度增加了一点,以消除页面轮廓造成的不好的着色(导致数据压缩性降低)。我们也会稍微变黑,使黑色变黑-resize 80%
最后,我们将大小调整为比您的示例1000图像大小大一点。(足够近。)这也减少了明显的伪影的数量,因为当像素合并在一起时,它们在某种程度上是隐藏的
在这一点上,您将在这个例子中得到一个好看的图像——漂亮、平滑的颜色和清晰的文本。然后我们压缩。20的质量值是一个非常低的设置,它看起来不再那么整洁了,但文档非常清晰。即使质量值为0,它仍然基本清晰。
同样,使用ADT并不一定能为这张图像带来最佳效果,但它不会在渐变等类似照片的内容上变成完全无法识别的混乱,所以你应该更好地了解更多类型或意外类型的文档。
结果:88kb76kb64kb48kb
压缩前处理过的图像
如果你真的不在乎颜色的数量,我们还可以选择黑白并使用双层编码器。我最终使用了DJVU格式,因为它与JBIG2相比很好,并且具有开源编码器。在这种情况下,我使用了didjvu
编码器,因为它获得了最好的结果。(在Ubuntu上,你可以安装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
如果您已经让它使用Imagemagik实用程序"convert"做了正确的事情,那么首先查看Imagemagik库可能是个好主意。
快速查看我的Ubuntu包列表,可以看到perl、python、ruby、c++和java的绑定