使用ImageMagick的绿色屏幕色度键

使用ImageMagick的绿色屏幕色度键,imagemagick,chromakey,Imagemagick,Chromakey,我一直在使用ImageMagick搜索绿色屏幕色度键的好算法,但到目前为止没有令人满意的答案 我想探索一种沿着HSV/HSB颜色空间(类似于-fuzz)使用范围选择来选择我想要的绿色并使其透明的简单方法。模糊似乎只适用于RGB空间,这是不需要的 有谁能教我如何选择H、S、V分量的不同范围的颜色,例如,115-125度色调,40%-60%饱和度和30-80%值 如果还有其他更好的色度键算法,我们也非常感谢您的建议 提前感谢。Imagemagick可用于生成alpha通道。色调,饱和度,亮度,&亮度

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

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

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

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

提前感谢。

Imagemagick可用于生成alpha通道。
色调
饱和度
亮度
,&
亮度
关键字存在,但您需要按最大值(r、g、b)计算颜色值

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

另一个选项是在每个HSV频道上应用相同的
-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

给我们一个示例图像来玩怎么样?我喜欢第二个解决方案!你能告诉我,如果我选择绿色屏幕,我如何估计正确的灰色*吗?@Unispaw你用简单的数学来估计。选择目标的颜色,转换为HSV,并隔离范围。灰色*在范围的中间。在上面的示例中,“40%-60%饱和度”为灰色50+/-10。您也可以在一个命令中执行此操作<代码>转换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\)-删除0,1,2-alpha提取-合成倍数-合成-否定\)-compose CopyOpacity-composite out.png
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
convert source.png mask.png -alpha Off -compose CopyOpacity -composite out.png