在白色产品上使用 imagemagick 删除背景
Removing background using imagemagick, on a white product
这是我试图从中删除背景的原始图片:
我正在尝试使用 imagemagick 从图像中删除背景。当图像有白色产品时,我的脚本不能正常工作。它还可以去除产品内部的白色。简而言之,我正在尝试执行以下操作
- 创建蒙版图像(用带有模糊和阈值的白色替换背景像素)
- 在原始图像上应用遮罩以生成输出
如果我使用 0 的模糊因子,如下所示,我会删除背景,但它会在它周围产生一个令人讨厌的光晕。这里可以做什么?
我会利用 HSL 色彩空间,并从亮度通道创建一个 alpha 蒙版。
convert tshirt.jpg \( \
+clone -colorspace HSL -separate \
-delete 0,1 -fx 'u>0.975?0:1' \) \
-compose CopyOpacity -composite \
out.png
我会选择一个简单的阈值来挑选白色,然后进行某种过滤以去除 noise/ragged 边缘。所以,例如
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 的 flicker_compare
在输入图像和结果图像之间闪烁以查看得到的结果,参见 here。
./flickercompare -o flick.gif shirt.jpg result.jpg
这是我试图从中删除背景的原始图片:
我正在尝试使用 imagemagick 从图像中删除背景。当图像有白色产品时,我的脚本不能正常工作。它还可以去除产品内部的白色。简而言之,我正在尝试执行以下操作
- 创建蒙版图像(用带有模糊和阈值的白色替换背景像素)
- 在原始图像上应用遮罩以生成输出
如果我使用 0 的模糊因子,如下所示,我会删除背景,但它会在它周围产生一个令人讨厌的光晕。这里可以做什么?
我会利用 HSL 色彩空间,并从亮度通道创建一个 alpha 蒙版。
convert tshirt.jpg \( \
+clone -colorspace HSL -separate \
-delete 0,1 -fx 'u>0.975?0:1' \) \
-compose CopyOpacity -composite \
out.png
我会选择一个简单的阈值来挑选白色,然后进行某种过滤以去除 noise/ragged 边缘。所以,例如
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 的 flicker_compare
在输入图像和结果图像之间闪烁以查看得到的结果,参见 here。
./flickercompare -o flick.gif shirt.jpg result.jpg