如何应用色度键控(去除绿屏)?

平面设计 瘸子 透明度
2022-02-09 12:50:48

是否可以使用 Gimp 应用色度键控,即移除绿色(或蓝色......)屏幕背景?(我碰巧使用了 Gimp,但我想使用 Photoshop 的答案也一样好,除非它引用特定的 Photoshop 插件。)

我的意思是:

在此处输入图像描述

(注意:我还不知道怎么做,这个模型是从一张透明的图片开始制作的。)

如果我们看看需要做什么(或尽可能近似,见下文),它是以下内容:

在此处输入图像描述

注意这个过程是如何不仅仅是添加一个 Alpha 通道;它正在改变与关键颜色本身位于同一象限的所有颜色。意思是,如果关键颜色是绿色,则除了添加合适的 alpha 通道外,还需要对所有绿色进行实质性修改:

在此处输入图像描述

我发布这个问题的原因是关于这个主题的所有其他问题和答案都错过了这个关键点。

无法将一种绿色变成半透明的红色,而将另一种绿色变成半透明的蓝色,只需使用魔术棒、颜色选择工具或将通道复制到蒙版中即可。

我不知道色度键控背后的理论背景,我猜它可能很棘手。例如,恰好位于主色(在这种情况下为绿色)与其完全相反的颜色(在这种情况下为洋红色)之间的颜色是完美的灰色(根据相反颜色的定义)。我们是否需要改变这种阴影灰色变成半透明洋红色?如果它是原始图片中的实际灰色怎么办?(实际上更有可能。)

考虑到问题空间本身的所有这些未定义行为,我确信 Adob​​e Premiere 和所有其他专业视频制作工具都包含非常复杂的色度键控算法。

我们甚至可以使用 Gimp 中发现的基本图像处理来近似这些算法的结果吗?或者任何这样的努力注定会失败?

或者,是否有开源 Gimp 插件或单独的程序可以对图片执行高质量的色度键控?

编辑:维基百科的文章给出了一个简单的绿屏功能示例:rgb(r,g,b) -> rgba(r, min(g,b), b, A*(r+b)-B*g)并继续解释现代算法可能要复杂得多。即使使用简单的功能,我也能理解它在说什么,但我不知道如何使用简单的选择和通道操作来执行它。

3个回答

显然,您的绿色背景头皮很好地呈现了您有问题的图像 - 绿色与头发混合的大面积区域:

在此处输入图像描述

不幸的是,没有办法准确计算混合区域的原始颜色,因为我们不知道它是由于透明度(= 边缘附近更透明的毛发)而混合的,还是它最初没有绿色背景,边缘颜色比边缘更绿色在头皮中间。我们必须做出猜测。

在您的“应该做什么”的图像中,您猜测水平颜色条纹继续具有相同的色调和饱和度,但随着颜色接近纯绿色,透明度增加。实际上你没有猜到,你是这样构造条纹的,但是没有人工智能聪明的愚蠢的自动化无法知道图像是如何构造的。它只看到一个像素一个像素的混合结果,不知道不同像素背后可能有什么样的共同创建过程。如果你想要一些猜测能力,你需要比 GIMP 更先进的东西。

实际上,您的彩色条纹将在下一个过程中很好地恢复,因为程序员的想法与您相同 - 就像不需要的颜色只有应有的透明度。

过程:通过将颜色 > 颜色应用于 Alpha,可以将绿色变为透明。

这是你的条纹的结果:

在此处输入图像描述

下一个是更真实的结果——背景以一种复杂的方式与目标混合。它不是纯线性透明度:

在此处输入图像描述

阈值滑块现在非常随机设置。纯绿色,仅比背景暗的区域为洋红色。距离纯绿色太远但仍然绿色的区域是“原样”。如果移动不透明度阈值滑块,绿色会消失,但红色和蓝色会增加:

在此处输入图像描述

找不到好的门槛。另一个滑块将修剪头发。但是您可以为图像着色。如果你的大脑有一些超出平常的马力,你可以使用通道混合器(颜色>组件>通道混合器)。我跳过它。

在您的情况下,可以接受单一色调重新着色。从原始图像中挑选一个饱和度良好的样本,并用它填充一个新的顶层。让该层具有混合模式 Color LCH。还有其他“颜色”混合模式,但 Color LCH 适合这种情况,因为它会从样本中复制色调和色度:

在此处输入图像描述

如果颜色好,合并图层。

您可以通过制作副本,对底部副本去饱和并用软刷部分擦除顶部彩色的部分来使稀疏区域像原始区域一样去饱和。或者最好通过插入图层蒙版以便在出现错误时轻松修复。

绿屏不是静态摄影的最佳选择。它对视频很有用,因为它是处理数千帧的一种极好的快速技术。在静态摄影中,情况并非如此。相反,这是有问题的。绿屏通常存在最好完全避免的问题。例如,在静态摄影中,通常首选中性背景以避免颜色污染问题。像 Photoshop 和 GIMP 这样的软件有背景去除工具,可以用来制作好的蒙版,而不必求助于使用绿屏。

至于解决您似乎遇到的问题,您将不得不跳过一些额外的障碍。

您可以使用绿色通道创建蒙版并将其反转并调整蒙版的级别,但这并不能解决颜色污染的问题。仅靠遮罩几乎不可能去除颜色污染。

这是一个例子

在此处输入图像描述

如果图像是在中性灰色背景上,则不会存在此问题。一个简单的面具就足够了。

要修复它,您要么需要进一步细化蒙版以去除颜色污染,否则可能会丢失细节,或者在原始图像的边缘上涂漆以去除绿色。两者都不是一个很好的解决方案,尽管最后一个选项可能是您最好的选择。

在这个例子中,我从头发中取样棕色,并使用混合模式设置为 HSL 颜色的画笔在边缘上绘画。结果还不错,但是对于具有不同颜色的更复杂的图像会更加困难。

在此处输入图像描述

ADD:提问者插入了一条评论,说明这个答案是无用的。他的照片有彩色区域,背景和目标颜色混合在一起,他不会以一种容易去除背景的方式重新拍摄他的图像。

======

您可以将颜色应用到 Alpha 调整。但是:图像不应该有边缘材料颜色和关键颜色混合的边缘区域。幸运的是,如果图像中的目标以像素为单位足够大,那么稍后可以将 1 像素宽的区域剃掉。广泛的混合区域需要猜测或知道应该有什么颜色。如果没有大量假设,就无法计算出来。

如果您要拍摄自己的照片,您应该拥有如此强烈且均匀的白色前景光,以使主色背景不会影响目标的边缘颜色。模糊的镜头和 JPG 压缩也很糟糕。

许多基于颜色的背景去除工具都以一个示例进行广告宣传,它们在没有手动修补的情况下修剪头发的效果如何。如果没有专业品质的相机、完美的灯光和均匀照明的单色背景,就不会发生这种情况。有时,阳光明媚的海滩提供光线和背景。沙子反射光 ==> 没有很深的阴影,蓝天是一个很好的单色背景,肯定是那么远,前景光+目标不会在背景上产生阴影。

我在这里多次建议静态对象另一种方法。用绝对不动的相机拍摄 2 张​​照片(= 有专业三脚架)。拍摄 1 以在明亮的背景下拍摄深色剪影,并在明亮的前景灯打开时拍摄另一张照片。从剪影构建一个面具。