在白色产品上使用imagemagick删除背景

在白色产品上使用imagemagick删除背景,imagemagick,Imagemagick,以下是我试图从中删除背景的原始图像: 我正在尝试使用imagemagick从图像中删除背景。当图像有白色产品时,我的脚本无法正常工作。它还可以去除产品内部的白色。简言之,我正试图做到以下几点 创建遮罩图像(用带有模糊和阈值的白色替换背景像素) 在原始图像上应用遮罩以生成输出 如果我使用0的模糊因子,如下图所示,我会移除背景,但它会在周围产生一个讨厌的光晕。这里可以做什么 我会利用色彩空间,从亮度通道创建alpha遮罩 convert tshirt.jpg \( \ +clo

以下是我试图从中删除背景的原始图像:

我正在尝试使用imagemagick从图像中删除背景。当图像有白色产品时,我的脚本无法正常工作。它还可以去除产品内部的白色。简言之,我正试图做到以下几点

  • 创建遮罩图像(用带有模糊和阈值的白色替换背景像素)
  • 在原始图像上应用遮罩以生成输出
如果我使用0的模糊因子,如下图所示,我会移除背景,但它会在周围产生一个讨厌的光晕。这里可以做什么

我会利用色彩空间,从亮度通道创建alpha遮罩

convert tshirt.jpg \( \
        +clone -colorspace HSL -separate \
        -delete 0,1 -fx 'u>0.975?0:1' \) \
        -compose CopyOpacity -composite  \
        out.png

我会选择一个简单的阈值来挑出白色,然后进行某种过滤以去除噪音/参差不齐的边缘。比如说

convert shirt.jpg -threshold 99.99% -negate  result.jpg
因此:

然后应用一些中值滤波使其平滑:

convert shirt.jpg -threshold 99.99% -median 5 -negate  result.jpg

或者更大的过滤器:

convert shirt.jpg -threshold 99.99% -median 11 -negate  result.jpg
这就是

或者,你可以通过侵蚀和扩张得到更好的结果

convert shirt.jpg -threshold 99.99% -negate  \
   -morphology erode  diamond:3              \
   -morphology dilate diamond:3 result.jpg

您可能希望使用Anthony Thyssen的
闪烁\u compare
在输入图像和结果图像之间闪烁,以查看您得到了什么,请参阅


共享原始图像如何?在MarkSetchell完成。你有什么线索吗?你好,马克,这种方法对白色产品很有效。如果图像中的产品不是白色的,就会在其周围形成一个令人讨厌的锯齿状光晕。可能是侵蚀过程造成的。而且,它对某些其他类型的图像根本不起作用。。有没有一种去除背景的方法可以处理所有类型的图像?没有什么可以阻止你使用我的方法处理白色产品,而使用另一种方法处理彩色产品。我没有那么多时间来为你所有的图像制定一种方法,也许你可以从Eric那里学习使用
HSL
的想法,以及我关于中值滤波和形态学的一些想法,然后做更多的实验。另外,请看一下安东尼·蒂森的精彩文章。。。
./flickercompare -o flick.gif shirt.jpg result.jpg