如何使用 ImageMagick 将彩色图像转换为黑白?

时间:2021-01-28 21:43:10

标签: .net-core imagemagick monochrome

背景:我在 Gimp 中对彩色图像进行了索引转换,结果是源图像的黑白版本。

我在 ImageMagick 中尝试了许多选项都无济于事。我可以接近,但从来没有像 gimp 似乎毫不费力地做的那样清晰明快。

这是我的来源:

var bmp = new MagickImage(sourceImage);

bmp.Threshold(new ImageMagick.Percentage(60));

bmp.Resample(200, 200);
bmp.ColorType = ColorType.Bilevel;
bmp.BitDepth(1);
bmp.Settings.Compression = CompressionMethod.Group4;
bmp.Strip();

bmp.Format = MagickFormat.Tiff;

我一直在调整 Threshold 调用,并尝试了我在网上看到的各种建议,并取得了不同程度的成功。

magickimage 有一个名为 -monochrome 的功能,但我还没有在 .net 库中找到它是如何实现的。

我确信这是可能的,但实现良好黑白转换的最佳方法是什么。

sample image

1 个答案:

答案 0 :(得分:1)

使用 ImageMagick 7,您可以进行 Otsu 阈值处理。

输入:

enter image description here

magick check.png -alpha off -auto-threshold otsu x.png

结果:

enter image description here

ImageMagick 6 中没有内置等效项。但是我有一个脚本 otsuthresh 可以做到At my web site

所以在 ImageMagick 6 中,你只需要做简单的阈值处理。

convert check.png -alpha off -threshold 50% y.png

结果:

enter image description here

我注意到您的输入图像有一个不透明的 Alpha 通道,需要将其移除才能获得正确的结果。