如何将自定义半色调应用于 PDF 文件到位图的 Ghostscript 转换

问题描述 投票:0回答:2

我有一个带有灰度图像的 PDF 文件,我正在尝试使用 Ghostscript 将其转换为单色位图(每像素 1 位)。 我可以让一切正常工作,但我不喜欢默认灰度转换看起来粗线穿过的方式。 我的理解是,我可以根据自己的喜好自定义半色调算法,但我似乎无法让 postscript 命令对输出产生影响。 我是否错误地使用了“sethalftone”命令?我应该考虑其他方法吗?

gs -sDEVICE=bmpmono -sOutputFile=test.bmp -dBATCH -dNOPAUSE -r300 -c "<< /HalftoneType 1 /Frequency 40 /Angle 0 /SpotFunction {pop}>> sethalftone" -sPageList=1 input.pdf

我可以完全删除“-c”命令行参数,这没有什么区别。

这就是我正在尝试改进的当前单声道转换:

Sample

pdf bitmap ghostscript
2个回答
2
投票

使用 Ghost Script 中内置的默认半色调具有有限的工作范围,并且倾向于提供向一侧倾斜的外观,(这是有意的设计,并非偶然)有一个抖动控制,但往往在 r/20 下有效工作r/5 在这种情况下显示 -dDITHERPPI=25 到 -dDITHERPPI=60,从而减少块的大小。然而,还有其他潜在的控制措施。

enter image description here

我不是如何最好地使用这些设置(抄袭)的专家,我们需要阅读 PS 手册,或使用它们的值,但它们似乎效果更好。

enter image description here

gswin32c -sDEVICE=bmpmono -r300 -o out.bmp -c "<< /Frequency 133 /Angle 45 /SuperCellSize 36 /Levels 255 >> .genordered /Default exch /Halftone defineresource { } settransfer 0.003 setsmoothness"  -f ../examples/text_graph_image_cmyk_rgb.pdf

(请注意,您可能希望在 -c ".... 之前包含 -dUseFastColor)

改变价值观

/角度常用值可能为 0(0=GS 默认值)22 30 45 52 60 67,但是

/Angle 45
对于这种单声道转换来说是最常见的,并且变化与一系列 / 频率(线屏频率 ~= LPI)和SuperCell 尺寸可能会产生无法实现或低于正常的结果。

/频率(75=GS 默认值)可以设置为不同的值,但常见的比率是 4/3 = 133 (%) 另一个是 170,但经验法则是 r/2,因此如果您使用 300dpi

/Frequency 150
可能是在这种情况下更好。 正确的选择取决于对多种因素的复杂考虑,因此 45 度的网格以 sqrt(2)=1.41421356237 的角度间隔。因此,水平和垂直效果为 0.7071...(就页面 dpi 而言),因此为了匹配 300 dpi,LPI 频率可能需要相对设置,因此请考虑 212

/SuperCellSize 令我困惑 整数;默认值 = 1——实际像元大小由频率、角度、水平/垂直分辨率决定。较大的值将允许达到更多的级别。如果没有目标样本,不清楚什么可能是最佳值,因此尝试一些值,但有些值会触发错误反馈,请尝试 32 或 64 左右作为合理的最大起始点。注意示例使用 36 ?

为了防止出现不良的摩尔纹,Peter Fink 提出了名为 Adobe Accurate Screen 的 Supercell 方法来实现屏幕 3 在图像域中设计的超级单元包括 m × m(m:整数)个相同的半色调单元,是精确近似所需加网角度和加网线数的一种解决方案。 https://www.imaging.org/site/PDFS/Papers/1998/PICS-0-43/668.pdf

你也不妨尝试一下
/DotShape 整数;默认值 = 0(圆圈)。其他可用形状有: 1=红皮书、2=倒置、3=菱形、4=LINE_X、5=LINE_Y、6=DIAMOND1、7=DIAMOND2、8=ROUNDSPOT、

这些值和更多内容可以在 https://ghostscript.readthedocs.io/en/latest/Language.html

找到

左上角是图形应用程序中抖动的单色区域,根据分辨率和密度,“蠕虫”或“莫尔”图案开始出现。为了调节此类效果,会应用故意的屏幕,并且线条图案中的最小单位像差将不会明显,除非放大到超出预期的审查范围。

gswin32c -sDEVICE=bmpmono -r300 -o out.bmp -c "<< /Frequency 106 /Angle 45 /SuperCellSize 64 /Levels 255 >> .genordered /Default exch /Halftone defineresource { } "  -f test.pdf

enter image description hereenter image description here


0
投票

Imagemagick 可以使用由 XML 文件定义的自定义半色调,因此如果您无法直接使用 GhostScript 获得所需的结果,另一种选择是使用 GhostScript 输出高分辨率灰度图像,然后使用 Imagemagick 生成黑白图像白色半色调图像。

© www.soinside.com 2019 - 2024. All rights reserved.