在白色产品

时间:2015-08-05 16:14:05

标签: imagemagick

这是原始图片,我试图从以下位置删除背景:

enter image description here

我正在尝试使用imagemagick从图像中删除背景。当图像有白色产品时,我的脚本效果不佳。它还可以从产品内部去除白色。简而言之,我试图做以下事情

  • 创建一个蒙版图像(用带有模糊和阈值的白色替换背景像素)
  • 将遮罩应用于原始图像以生成输出

如果我使用0的模糊因子,如下所示,我会删除背景,但它会在它周围创建一个令人讨厌的光环。可以在这做什么?

This one is image with fuzz factor 0

2 个答案:

答案 0 :(得分:2)

我会利用HSL色彩空间,并从亮度通道创建一个alpha蒙版。

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

enter image description here

答案 1 :(得分:1)

我会选择一个简单的阈值来挑选白色,然后进行某种过滤以去除噪音/粗糙的边缘。所以,例如

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

给出了这个:

enter image description here

然后应用一些中值滤波来平滑它:

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

enter image description here

或者更大的过滤器:

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

给出了这个

enter image description here

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

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

enter image description here

您可能希望使用Anthony Thyssen的flicker_compare在输入和结果图像之间闪烁以查看您的内容,请参阅here

./flickercompare -o flick.gif shirt.jpg result.jpg

enter image description here