通过转换为过采样位图然后缩小比例来消除矢量图形中的细线 - 如何使用 ImageMagick?

Eliminate hairlines from a vector graphics by converting to oversampled bitmap and then downscaling - How with ImageMagick?

[

我想通过图像处理去除细纹

在图形上创建天桥视频之前。

我的基本思路是:

  1. 将矢量转换为分辨率非常高的位图(过采样,例如转换为 600 或 1200 DPI)
  2. 然后使用一种算法下采样到目标分辨率(例如 150 DPI),该算法可以消除细线(消失在相邻像素的主导地位),同时总体上仍尽可能保持清晰锐利。

所以第 1 步,我已经想通了,通过这两种可能性:

但是对于第 2 步,有很多可能性:

resample <DPI>-filter <FilterName> -resize 25%-scale 12.5%(从 1200 到 150 时)

请告诉我应该使用哪些方法(重采样、调整大小、缩放)以及哪些插值算法或过滤器来实现消除细线的目标,方法是将细线溶解到相邻像素中,其余的(正常) 1px 线条、呈现的文本和符号等)尽可能清晰。

  1. 具有不同 DPI 设置的 ImageMagick PDF tp PNG 转换: convert -density XXX flowchart.pdf flowchart-ImageMagick-XXX.png
  • flowchart-ImageMagick-150.png; flowchart-ImageMagick-300.png ; flowchart-ImageMagick-600.png
  1. 使用不同 DPI 设置的 Apple 预览 PDF 到 PNG 导出:
  • flowchart-ApplePreview-150.png; flowchart-ApplePreview-300.png; flowchart-ApplePreview-600.png
  1. 不同的降尺度处理
  • a) convert -median 3x3 -resize 50% flowchart-ApplePreview-300.png flowchart-150-from-ApplePreview-300-median-3x3.png 感谢@ChristophRackwitz

    的提示
  • b) convert -filter Box -resize 25% flowchart-ImageMagick-600.png flowchart-150-from-ImageMagick-600-resize-box.png

比较

flowchart-ApplePreview-150.png

流程图-150-from-ApplePreview-300-中位数-3x3.png

  • ✅ 发际线消失
  • ❌ 但是字体没有那么清晰了,中位数破坏了那个。

流程图-150-from-ImageMagick-600-resize-box.png

  • 总体来说还是挺脆的
  • 发际线非常非常微弱,甚至在放大时也微弱

这两种变体在某种程度上都足以让我的 KenBurns / Dolly cam 骑过它们。我仍然希望有一种算法可以保持清晰度,但仍然可以消除非常高 DPI 位图中的 1px 线条。但我想这只是我幻想中的万事通。

处理时间

  • MacBook Pro 15''(2014 年中,2.5 GHz Quad-Core Intel Core i7)

ImageMagick PDF 转 PNG

  • PDF 来源 Ca。 84x60cm (33x23'')
  • 300dpi -> 27s
  • 600dpi -> 1m58s
  • 1200dpi -> 37m34s

ImageMagic 缩小

time convert -filter Box -resize 25% 1@600.png 1@150-from-600.png
# PNG @ 39700 × 28066:  135.57s user   396.99s system   109%  cpu   8:08.08 total

time convert -median 3x3 -resize 50% 2@300.png 2@150-from-300-median3x3.png
# PNG @ 19850 × 14033:  311.48s user     9.42s system   536% cpu      59.76 total

time convert -median 3x3 -resize 50% 3@300.png 3@150-from-300-median3x3.png
# PNG @ 19850 × 14033:  237.13s user     8.33s system   544% cpu      45.05 total