Algorithm 图像背景去除算法
我有很多白色背景的图像,我需要将其删除(使其透明)。我已经尝试过imagemagick,有些图像效果很好,但仍然无法在黑暗背景下使用。Algorithm 图像背景去除算法,algorithm,imagemagick,image-manipulation,alpha-transparency,Algorithm,Imagemagick,Image Manipulation,Alpha Transparency,我有很多白色背景的图像,我需要将其删除(使其透明)。我已经尝试过imagemagick,有些图像效果很好,但仍然无法在黑暗背景下使用。 我是编程这一分支的新手。。。有人知道一些去除背景的好算法吗 另外,如果它能够正确处理这样的图像,那就太好了: convertdiff的问题在于它会擦除大量图像,而边框算法不会触及中间部分。 我完全理解计算器做这样的事情有多难,转换的结果让我非常惊讶,但是如果有更好的解决方案,为什么不问问呢D您不必将白色像素转换为透明像素。您可以选择左上角像素的颜色,使所有颜色
我是编程这一分支的新手。。。有人知道一些去除背景的好算法吗 另外,如果它能够正确处理这样的图像,那就太好了:
convert
diff
的问题在于它会擦除大量图像,而边框
算法不会触及中间部分。我完全理解计算器做这样的事情有多难,转换的结果让我非常惊讶,但是如果有更好的解决方案,为什么不问问呢D您不必将白色像素转换为透明像素。您可以选择左上角像素的颜色,使所有颜色透明的像素也适用于黑色背景: 正如@emcconville所建议的,以下两个选项中的第一个更简洁:
convert towel.jpg -fill none -fuzz 2% -draw 'matte 0,0 replace' output.png
或者,根据我的原创
convert towel.jpg -alpha on -fill none -fuzz 5% -draw 'color 0,0 replace' output.png
你可能会发现这更具可读性
convert towel.jpg -fuzz 5% \
-transparent $(convert towel.jpg -format "%[pixel:p{0,0}]" info:) \
output.png
在第二行,
$(convert…
只获取左上角像素的颜色,并将其作为颜色输入到外部的convert
命令的中间,以使其透明-但它只执行与第一个版本相同的操作。回答得好,但是我会把-alpha放在-draw'matte 0,0 replace'
@emcconville上,我很乐意听你的建议并从中学习,但我不确定我是否理解你建议的方法的精妙之处?请你解释一下好吗?当然可以。我放弃了我的答案,因为它和你的完全相同;但是,我选择使用draw的蒙版操作。与color
完全相同,但会自动继承alpha处理,因此无需调用其他-alpha
标志。@emcconville非常感谢您-我已纳入您的建议改进。感谢您和@emcconville的回复。如果你看到你发布的图像,这是不可接受的,即使结果与我的几乎相同:(我需要在用户选择的背景上渲染这些图像,这就是为什么它不能在重要部分被擦除,也不能使背景仍在浮动的原因。)。。。