【问题标题】:remove background(any color) from image using image magick使用图像魔法从图像中删除背景(任何颜色)
【发布时间】:2021-12-19 09:29:46
【问题描述】:

您好,我是根据这个问题问这个问题Fuzzy flood fill in ImageMagic php - making a transparent image

 #!/bin/bash

# Get size of original
sz=$(convert -format "%wx%h" phone.png info:)

# Floodfill background area with transparency
convert phone.png -fuzz 5% -fill none -draw 'color 0,0 floodfill' ObjectOnTransparent.png

# Extract alpha channel
convert ObjectOnTransparent.png -alpha extract Alpha.png

# Extract edges of alpha channel - experiment with thickness
convert Alpha.png -edge 1 AlphaEdges.png

# Get difference from background for all pixels
convert phone.png \( +clone -fill white -colorize 100% \) -compose difference -composite Diff.png

# Multiply edges with difference, so only edge pixels will have a chance of getting through to final mask
convert AlphaEdges.png Diff.png -compose multiply -composite EdgexDiff.png

# Extend Alpha by differences at edges
convert Alpha.png EdgexDiff.png -compose add -composite ReEdgedAlpha.png

# Apply new alpha to original image
convert phone.png \( ReEdgedAlpha.png -colorspace gray \) -compose copyopacity -composite RemaskedPhone.png

# Splat RemaskedPhone over red background
convert -size $sz xc:red RemaskedPhone.png -composite Result.png

我运行了这些脚本,它在白色背景的图像上运行准确,并且产生了干净的边缘,但我想问是否有任何方法可以从像这张图片https://ibb.co/BNWnNBs 这样的图像中删除任何颜色背景我想从中删除像https://ibb.co/x7nD8Vb这样的图像角落的黑色。

感谢任何帮助

【问题讨论】:

    标签: image-processing imagemagick


    【解决方案1】:

    如果你用透明度填充,那么改变

    convert phone.png -fuzz 5% -fill none -draw 'color 0,0 floodfill' ObjectOnTransparent.png
    

    convert phone.png -fuzz 5% -fill none -draw 'matte 0,0 floodfill' ObjectOnTransparent.png
    

    然后对边缘进行抗锯齿,改变

    convert phone.png \( ReEdgedAlpha.png -colorspace gray \) -compose copyopacity -composite RemaskedPhone.png
    

    convert phone.png \( ReEdgedAlpha.png -colorspace gray -blur 0x2 -level 50x100% \) -compose copyopacity -composite RemaskedPhone.png
    

    【讨论】:

    • 我更改了步骤并运行了命令,但它没有删除外部黑色而是图像相同ibb.co/0c15sYw>你能建议一些吗?我想像这样删除外部黑色背景 ibb.co/x7nD8Vb>
    【解决方案2】:

    这适用于我在 Unix 语法的 ImageMagick 6 中。

    输入:

    convert eagle.png -alpha off -fuzz 10% -fill none -draw "matte 0,0 floodfill"  \
    \( +clone -alpha extract -blur 0x2 -level 50x100% \) \
    -alpha off -compose copy_opacity -composite \
    eagle_transp.png
    

    结果:

    Windows 语法为:

    转换 eagle.png -alpha off -fuzz 10% -fill none -draw "matte 0,0 floodfill" ^ ( +clone -alpha extract -blur 0x2 -level 50x100% ) ^ -alpha 关闭 -compose copy_opacity -composite ^ eagle_transp.png

    如果在 .bat 脚本中,将 % 加倍为 %%

    【讨论】:

    • 我厌倦了这个并在这个命令中将“matte 0,0 floodfill”更改为“alpha 0,0 floodfill”,因为我有版本 7,它不适用于许多白色背景图像,这里是链接图片 ibb.co/Y8Wf1hs> 仅左上部分转换为透明,其余部分未转换,您可以在这里提出建议吗?为演示目的在背景上附加相同的图像 prnt.sc/1ysr8an>
    【解决方案3】:

    要回答您关于新图片的问题,该图片在两个方面有所不同。首先,透明像素下的背景不是全白的。其次,白色区域不会环绕图像。所以在 ImageMagick 中,你需要做两个额外的步骤。

    输入:

    您可以通过关闭图像上的 alpha 来查看第一个问题:

    magick target-transp.png -alpha off target-transp_alpha_off.png
    

    注意左上角的黑色区域。所以在处理过程中我们需要把那个黑色区域改成白色。

    其次,正如您在上图中看到的那样,白色并没有遍布图像周围。所以我们需要用白色的边框填充图像,边长为 1 像素。

    因此您可以执行以下两个过程之一:

    1. 洪水填满白色

      magick target-transp.png
      -背景白色 -alpha 背景 -alpha 关闭
      -bordercolor 白色 -border 1
      -fuzz 10% -fill none -draw "alpha 0,0 floodfill"
      ( +clone -alpha extract -blur 0x2 -level 50x100% )
      -alpha 关闭 -compose copy_opacity -composite
      -剃须 1x1
      目标-transp_proc1.png

    1. 或使所有白色像素透明,包括一些字母内部,例如“a”和“e”的内部

      magick target-transp.png
      -背景白色 -alpha 背景 -alpha 关闭
      -bordercolor 白色 -border 1
      -绒毛 10% -透明白色
      ( +clone -alpha extract -blur 0x2 -level 50x100% )
      -alpha 关闭 -compose copy_opacity -composite
      -剃须 1x1
      目标-transp_proc2.png

    您需要下载生成的图像以查看差异。

    【讨论】:

    • 感谢您的帮助@fmw42,该脚本现在适用于白色和非白色背景,但是您能告诉我,在从边缘移除白色的同时,边缘添加了一些模糊因子也可以在您的上一张图片中看到?
    • 我将模糊语句更改为-blur 0x1,现在它几乎可以正常工作了,再次感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 2014-12-31
    相关资源
    最近更新 更多