提问人:BlasterGod 提问时间:9/19/2023 最后编辑:BlasterGod 更新时间:9/20/2023 访问量:91
ImageMagick - 将轮廓图像转换为完美的黑白,无噪点
ImageMagick - Transform Outline Image to Perfect Black And White, WIth No Noise
问:
我正在寻找一个图像魔术命令,它可以帮助我将黑白轮廓图像(涂鸦草图)转换为完美的白色背景和完美的黑色线条(甚至没有抗锯齿)。我需要这个,这样我就可以使用自动跟踪将它们转换为完美的中心线 SVG。
问题是我无法发出适合我处理的所有图像的命令。 以下是我想转换的 2 张图像:
如果你看一下 IMAGE2,我想去除黑线周围的所有白点和噪点。
我尝试了很多组合和命令,但没有任何效果。
几乎起作用的最接近的命令是:convert 2.png -threshold 50%% -negate -morphology Dilate Diamond:1 -negate -gaussian-blur 1 -unsharp 0x1 77.ppm
我尝试使用其他参数,例如: 但无法获得我想要的好结果。+level-colors black, -statistic mean 15x15 -level 25%,75% -canny 0x1+10%+30% -blur 0x10 -unsharp 0x10
在 IMAGE2 中,我特别想删除所有“模糊”,如下所示,但在那里保持一条清晰的黑线:
任何帮助都是值得赞赏的。我的主要目标是使用获得的图像通过自动跟踪获得中心线跟踪。 主要问题之一是狗的右眼,它离头部很近,在头部线和右眼之间,有嘈杂的像素。我想把它们变成完美的白色,这样我就可以完美地界定一切,并在完美的白色背景上获得清晰的黑线(即使没有抗锯齿)。
编辑1:对我来说,对于图像2(有狗的孩子),当我应用阈值时,我得到的结果与其他人不同。我正在使用 image magick 7.1.1 。您能否尝试在图像 https://sodevrom.net/2.png(此确切的图像)上应用阈值,并让我知道您是否获得了良好的结果?
编辑2:命令 -blur 0x1 -threshold 50%% -blur 0x1为我提供了 image2 的所需结果。image1 的问题在于线条非常细。当我应用相同的命令时,一些行被截断,如下所示。https://imgur.com/xST1WRq我不希望这种情况发生。有什么想法吗?
编辑3:我找到了适合我的最后一个命令。 转换 2.png -阈值 50%% -否定 -形态学 打开钻石:1 -否定 -模糊 0x1 77.ppm
这非常适合 IMAGE2,而 -morphology Dilate Diamond:1 非常适合 IMAGE1。会找到一个折衷方案,因为很难让它完美地适用于所有类型的图像。
答:
在 Imagemagick 中将 -auto-level 添加到阈值 50% 命令中,将黑色拉伸到 0,将白色拉伸到 255。
Unix IM 6 语法:
convert image1.jpg -auto-level -threshold 50% result1.png
convert image2.png -auto-level -threshold 50% result2.png
对于 IM 7,请使用 magick 而不是 convert。对于 Windows,将 % 转义为 %%。
评论
magick 2.png -auto-level -threshold 50%% 77.ppm
这在 Imagemagick 7 中更好吗?将 -blur 0x1添加到命令中。
magick image1.jpg -blur 0x1 -auto-level -threshold 50% result1.png
magick image2.png -blur 0x1 -auto-level -threshold 50% result2.png
如果没有,请尝试增加 -blur 0x2。
或者尝试将 -morphology open diamond:2 添加到命令中,作为
magick image1.jpg -auto-level -threshold 50% -morphology open diamond:2 result5.png
magick image2.png -auto-level -threshold 50% -morphology open diamond:2 result6.png
如果需要,增加菱形:X 尺寸或更改开口以侵蚀以加粗线条。
评论
这是另一个想法。JPG 图像具有压缩伪影,需要至少 15% 的阈值才能去除。因此,让我们在 Imagemagick 的阈值中使用 25% 而不是 50%。
Unix Imagemagick 7 语法:
magick image1.jpg -auto-level -threshold 25% -morphology open diamond:2 result7.png
magick image2.png -auto-level -threshold 25% -morphology open diamond:2 result8.png
** 对于 Windows,请将 % 转义为 %%。对于 Imageamgick 6,将 magick 替换为 convert**
评论
convert image -negate -threshold 0 -negate