我一直在使用ImageMagick搜索绿屏色度键的好算法,但到目前为止还没有令人满意的答案 .
我想探索一种在HSV / HSB颜色空间中使用范围选择的简单方法(类似于-fuzz)来选择我想要的绿色并使它们透明 . -fuzz似乎仅适用于RGB空间,这是不希望的 .
任何人都可以教我如何选择具有H,S,V分量的单独范围的颜色,例如,115-125度色调,40%-60%饱和度和30-80%值 .
如果还有其他更好的色度键算法,您的建议也非常受欢迎 .
提前致谢 .
Imagemagick的FX可用于生成alpha通道 . 存在 hue , saturation , lightness 和 luma 关键字,但您需要按max(r,g,b)计算颜色 value .
hue
saturation
lightness
luma
value
hueMin=115/360; hueMax=125/360; saturationMin=0.40; saturationMax=0.60; valueMin=0.30; valueMax=0.80; value = max( r, max( g, b ) ); ( ( hue > hueMin && hue < hueMax ) && ( ( saturation > saturationMin && saturation < saturationMax ) || ( value > valueMin && value < valueMax ))) ? 0.0 : 1.0
将上述内容保存到名为 hsl-greenscreen.fx 的文件中,并使用以下命令对图像执行以下操作:
hsl-greenscreen.fx
convert source.png -channel alpha -fx @hsl-greenscreen.fx out.png
FX脚本可能需要额外调整以匹配预期结果 . 您还会注意到这将需要一些CPU来完成,但可以改进 .
另一个选择是应用相同的 -fuzz 选项,但是在每个HSV Channels 上 . 只需拆分并克隆每个通道,对目标灰色应用 -fuzz ,然后组成图像蒙版 .
-fuzz
convert source.png -colorspace HSV -separate +channel \ \( -clone 0 -background none -fuzz 5% +transparent grey32 \) \ \( -clone 1 -background none -fuzz 10% -transparent grey50 \) \ \( -clone 2 -background none -fuzz 20% -transparent grey60 \) \ -delete 0,1,2 -alpha extract -compose Multiply -composite \ -negate mask.png
然后将蒙版指定为图像alpha通道
convert source.png mask.png -alpha Off -compose CopyOpacity -composite out.png
1 回答
Imagemagick的FX可用于生成alpha通道 . 存在
hue
,saturation
,lightness
和luma
关键字,但您需要按max(r,g,b)计算颜色value
.将上述内容保存到名为
hsl-greenscreen.fx
的文件中,并使用以下命令对图像执行以下操作:FX脚本可能需要额外调整以匹配预期结果 . 您还会注意到这将需要一些CPU来完成,但可以改进 .
另一个选择是应用相同的
-fuzz
选项,但是在每个HSV Channels 上 . 只需拆分并克隆每个通道,对目标灰色应用-fuzz
,然后组成图像蒙版 .然后将蒙版指定为图像alpha通道