通过转换为过采样位图然后缩小比例来消除矢量图形中的细线 - 如何使用 ImageMagick?
Eliminate hairlines from a vector graphics by converting to oversampled bitmap and then downscaling - How with ImageMagick?
我使用 Apple Numbers(具有样式选项的电子表格应用程序)创建了一个应用程序的各种用户界面的 UX 流程图。
Apple Numbers 有一个 PDF 导出选项。
问题是,即使 table 中的某些边界线在导出中已设置为“none”,您仍然会看到细小的细线,请参阅此切口:
[
我想通过图像处理去除细纹
在图形上创建天桥视频之前。
我的基本思路是:
- 将矢量转换为分辨率非常高的位图(过采样,例如转换为 600 或 1200 DPI)
- 然后使用一种算法下采样到目标分辨率(例如 150 DPI),该算法可以消除细线(消失在相邻像素的主导地位),同时总体上仍尽可能保持清晰锐利。
所以第 1 步,我已经想通了,通过这两种可能性:
- 一个。 Apple Preview 有一个 PDF 到 PNG 导出选项,您可以在其中指定 DPI。
- b。 ImageMagick
convert -density 600 source.pdf export.png
但是对于第 2 步,有很多可能性:
resample <DPI>
或 -filter <FilterName> -resize 25%
或 -scale 12.5%
(从 1200 到 150 时)
请告诉我应该使用哪些方法(重采样、调整大小、缩放)以及哪些插值算法或过滤器来实现消除细线的目标,方法是将细线溶解到相邻像素中,其余的(正常) 1px 线条、呈现的文本和符号等)尽可能清晰。
- 具有不同 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
- 使用不同 DPI 设置的 Apple 预览 PDF 到 PNG 导出:
- flowchart-ApplePreview-150.png; flowchart-ApplePreview-300.png; flowchart-ApplePreview-600.png
- 不同的降尺度处理
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
我使用 Apple Numbers(具有样式选项的电子表格应用程序)创建了一个应用程序的各种用户界面的 UX 流程图。
Apple Numbers 有一个 PDF 导出选项。
问题是,即使 table 中的某些边界线在导出中已设置为“none”,您仍然会看到细小的细线,请参阅此切口:
[
我想通过图像处理去除细纹
在图形上创建天桥视频之前。
我的基本思路是:
- 将矢量转换为分辨率非常高的位图(过采样,例如转换为 600 或 1200 DPI)
- 然后使用一种算法下采样到目标分辨率(例如 150 DPI),该算法可以消除细线(消失在相邻像素的主导地位),同时总体上仍尽可能保持清晰锐利。
所以第 1 步,我已经想通了,通过这两种可能性:
- 一个。 Apple Preview 有一个 PDF 到 PNG 导出选项,您可以在其中指定 DPI。
- b。 ImageMagick
convert -density 600 source.pdf export.png
但是对于第 2 步,有很多可能性:
resample <DPI>
或 -filter <FilterName> -resize 25%
或 -scale 12.5%
(从 1200 到 150 时)
请告诉我应该使用哪些方法(重采样、调整大小、缩放)以及哪些插值算法或过滤器来实现消除细线的目标,方法是将细线溶解到相邻像素中,其余的(正常) 1px 线条、呈现的文本和符号等)尽可能清晰。
- 具有不同 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
- 使用不同 DPI 设置的 Apple 预览 PDF 到 PNG 导出:
- flowchart-ApplePreview-150.png; flowchart-ApplePreview-300.png; flowchart-ApplePreview-600.png
- 不同的降尺度处理
a)
的提示convert -median 3x3 -resize 50% flowchart-ApplePreview-300.png flowchart-150-from-ApplePreview-300-median-3x3.png
感谢@ChristophRackwitzb)
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