【问题标题】:Green screen chroma-key using ImageMagick使用 ImageMagick 的绿屏色度键
【发布时间】:2012-08-02 19:57:58
【问题描述】:

我一直在使用 ImageMagick 寻找绿屏色度键的好算法,但到目前为止还没有令人满意的答案。

我想探索一种简单的方法,使用沿 HSV/HSB 颜色空间的范围选择(类似于 -fuzz)来选择我想要的绿色并使它们透明。 -fuzz 似乎只适用于 RGB 空间,这是不希望的。

谁能教我如何为 H、S、V 分量选择不同范围的颜色,例如 115-125 度色调、40%-60% 饱和度和 30-80% 值。

如果有其他更好的色度键算法,也非常感谢您的建议。

提前致谢。

【问题讨论】:

  • 给我们一个示例图像如何?

标签: imagemagick chromakey


【解决方案1】:

Imagemagick 的FX 可用于生成 Alpha 通道。存在 huesaturationlightnessluma 关键字,但您需要通过 max(r, g, b) 计算颜色 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 的文件中,然后对一个图像执行它:

convert source.png -channel alpha -fx @hsl-greenscreen.fx out.png

FX 脚本可能需要额外的调整以匹配预期结果。您还会注意到这将需要一些 CPU 才能完成,但可以改进。

另一个选项是应用相同的-fuzz 选项,但在每个 HSV 通道上。只需拆分和克隆每个通道,将-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

【讨论】:

  • 我喜欢第二种解决方案!如果我选择绿屏,你能告诉我如何估计正确的灰度*吗?
  • @Unispaw 您通过简单的数学估算。选择目标的颜色,转换为 HSV,并隔离范围。灰色* 位于范围的中间。在上面的示例中,“40%-60% 饱和度”为 gray50 +/- 10。
  • 您也可以在一个命令中执行此操作。 convert source.png \( source.png -colorspace HSB -separate +channel \( -clone 0 -background none -fuzz 5% +transparent grey32 \) \( -clone 0 -background none -fuzz 10% -transparent grey50 \) \( -clone 0 -background none -fuzz 15% -transparent grey60 \) -delete 0,1,2 -alpha extract -compose Multiply -composite -negate \) -compose CopyOpacity -composite out.png
猜你喜欢
  • 2011-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
  • 2019-03-26
相关资源
最近更新 更多