【Nuke抠像】如何使用Primatte抠像 – 抠像算法

VFX大学 Nuke合成影视制作 【Nuke抠像】如何使用Primatte抠像 – 抠像算法

正在查看 9 条回复
  • 作者
    帖子
    • #29518

      韩十七
      参与者
      青骑士

      大家好我是十七,今天接着给大家讲 Primatte 抠像,今天讲最后一个问题——抠像算法。有三种 Primatte 算法,先上一张表,对比下这几种算法之间的主要区别。

      翻译一下:

      Primatte Primatte RT Plus Primatte RT
      分离面数 128(每个颜色式样一个) 6 1
      饱和前景支持 支持 不支持 不支持
      色彩抑制模型 替换/补充 替换 替换
      像素计算成本 非常轻

      [poet-badge]

    • #29519

      韩十七
      参与者
      青骑士

      下面十七就分别为大家讲解三种算法的工作原理。

      首先是 Primatte 的工作原理。

      Primatte 色度键控算法是一种非常复杂的色彩空间分割方法。这里十七尽量解释得浅显一些,帮助大家理解。最基础的,Primatte 将前景图像中的所有色彩分为4中不同的类别,最后得到一个移除溢色的前景图像,和一个用于将修改后的前景图像应用到合适背景的遮罩

      Primatte 工作在 3D RGB 色彩空间。下图是图像处理后 Primatte 算法的可视化呈现。

      通过操作 Primatte 界面,我们可以创建三个同轴心的多面体,这些多面体可以画成三个球(或多面体/多边形),一个套一个,拥有共同的中心点。创建的这些多面体将所有肯能是前景像素的色彩分为4部分:小多面体里面(1),小多面体和中多面体之间(2),中多面体和大多面体之间(3),以及大多面体外面(4)。

    • #29520

      韩十七
      参与者
      青骑士

      说说每个区域表示的色彩部分:

      区域1(小多面体内部)- 被认为100%属于背景色,这些是绿色或蓝色,以及其他用作背景色的颜色。

      区域2(小多面体和中多面体之间)- 前景物体边缘的前景色,以及玻璃内部、玻璃反射、阴影、水的光泽和其他透明/半透明的色彩区域。这些也会应用溢色压制,得到的是除去背景溢色的半透明像素。

      区域3(中多面体和大多面体之间)- 被认为100%属于前景色,同时也应用了溢色压制,移除了背景溢色。也就是说这些色彩是100%的实色。

      区域4(大多面体外部)- 最后一部分,100%来自于原始图像的前景色,没用经过溢色压制处理。

    • #29521

      韩十七
      参与者
      青骑士

      十七之前讲过 Primatte 的用法,第一步是 Smart Select BG Color,需要我们标明原始图像中的背景色,取色的时候我们一般从靠近前景物体的中间调色彩区域采样。也就是说,如果背景色是绿色,且图像中的绿色区域深浅不同,从浅绿到深绿甚至接近黑色的都有,那么在这种极端范围内我们应该选择一个靠中间的绿色。如果这样的到的结果不是很好,我们应该重置 Primatte,然后对稍浅或稍深的绿色采样。Primatte 的第一次采样往往决定三个多面体的中心。

      采样时我们可以选取单个像素,也可以选择一个像素范围。如果选取的是像素范围,那么最终的采样色将是这些像素的平均值。这单个像素或者平均值的到的像素,将成为小多面体的中心。在该像素周围的色彩也会包含在最初的小多面体中。

      注意:建议第一次采样选取单个像素,这样我们就能准确知道多面体中心;如果是框选或拖选,我们最终就只能猜测作为中心点的平均值。通过重置 Primatte 节点、查看 alpha 通道,以及在 Smart select BG Color 操作模式下点击绿色/蓝色区域周围,我们可以知道采样是如何影响算法的。这样我们可以实时看到多面体初始设置的结果。

    • #29526

      韩十七
      参与者
      青骑士

      Primatte 的第二步是清除背景颜色区域,这是通过添加绿色/蓝色区域到小多面体中实现的。第二步(Clean BG Noise)通常是在黑白 alpha 通道下执行的。

      处于 Clean BG Noise 采样模式时,我们需要采样上面左图中乳白色区域,使它们变成黑色,如右图所示。

      这样,Primatte 算法中,这些新的绿色(上面图中的乳白色)会添加到小多面体中。这个技巧的先进之处在于,多面体只在背景屏幕绿色区域变形,把这些颜色包起来。这些绿色周围的其他颜色不受干扰。

    • #29575

      韩十七
      参与者
      青骑士

      创建小多面体之后,我们需要塑造中多面体和大多面体。默认中多面体和大多面体是自动创建的,并基于接下来Primatte的操作被修改。Primatte第三步(Clear FG Noise)是采样并消除100%前景区域中的灰色区域。

      我们可以多次采样灰色区域,直至他们成为实的白色。Primatte 会使用采样的每个颜色区域塑造大多面体。在这一步和之前的步骤中都要注意,不要采样太接近前景物体的边缘,否则前景物体周围的边缘会非常硬。Primatte 使用这些采样编辑和塑造中多面体和大多面体,以得到想要的形状。此时,我们已经创建了遮罩或抠像,前景物体可以合成到新的背景图像上。

      此时当我们查看RGB通道时,通常前景物体的边缘甚至中间都会有溢色。如果前景物体的中间有溢色,通常是反射的背景色。接下来我们需要使用 Spill Sponge、Fine Tuning 或 Spill(-) 来消除溢色。

      让我们看看执行接下来的操作时,Primatte 算法会发生什么变化。

      如上图所示,Spill Sponge 会使指定色彩区域的大多面体凸起,点击图像中的特定溢色区域可以指定颜色区域。比如我们点击前景人物的脸颊上的溢色,Primatte 将会计算大多面体中靠近肤色的区域,并使此处凸起,最终肤色将从大多面体外部移动到中多面体和大多面体之间,也就是进入区域3——经过溢色压制的100%前景。由于溢色压制处理,脸颊及同样颜色区域的颜色将被移除。然后我们可以继续采样图像中其他溢色区域,进行去溢色处理。

    • #29579

      韩十七
      参与者
      青骑士

      移除所有溢色之后,我们得到最终用于合成的图像。作为最后一步,我们应该查看 alpha 通道,并确认前景中没有灰色透明区域。如果有的话,需要选择 Matte Sponge 操作模式,并对这些灰色像素采样,直至它们完全变为白色。

      Matte SpongeSpill Sponge 工具会使多面体凸起或凹陷。如果图像没有达到预期的效果或结果过于极端,我们可以使用手动方式—— Fine Tuning 滑块,选择感兴趣的颜色区域,然后移动相应的滑块,得到想要的结果。

      例如,我们可以选择合成图像上带溢色的区域,进行溢色移除。这时我们可以稍稍右移溢色或大多面体滑块,大多面体会凸起,而溢色会消失。右移此滑块会移除溢色(将颜色从大多面体外部移动到中多面体和大多面体之间),左移此滑块会使大多面体凹陷,颜色区域会进入大多面体外部。

      如果我们采样了前景物体的阴影,并右移 M-poly(trans) 滑块,阴影会更透明。这在匹配合成图像的阴影到摄影图背景上的阴影时非常有用,也可以用来使云朵或烟雾更透明。

      如果在合成时,有些前景细节丢失了,我们可以选择本该存在细节的地方,并左移 S-poly(detail)。这样采样颜色区域处的小多面体会凹陷,细节像素会从小多面体内部进入小多面体和中多面体之间,细节就会显现出来。

      Matte SpongeSpill Sponge 工具是快捷工具,可以自动滑块移动到一个预选的量,可以为我们节省时间。其他快捷工具还包括 Make FG Trans. 工具和 Restore Detail 工具。

      这些快捷工具都是一步式操作,当我们选择一个兴趣区域时,Primatte 会执行一个预计算操作。一般预计算操作就已经可以满足绝大多数需求了,但是有时候也还是需要手动操作。

      Spill(-) 工具会使大多面体凸起,而 Spill(+) 会使其凹陷。Matte(-) 和 Matte(+) 工具作用于中多面体,Detail(-) 和 Detail(+) 作用于小多面体。

    • #29583

      韩十七
      参与者
      青骑士

      Primatte 算法的工作原理就讲完啦。下面是 Primatte RT+ 算法的工作原理。

      Primatte RT+ 算法和 Primatte 算法不同,因为前者是6面色彩分割器,而不是128面多面体。这使Primatte RT+ 算法要简单得多,运算当然也要快得多。Primatte RT+ 的结果和性能介于 PrimattePrimatte RT 之间。Primatte RT+ 算法在低饱和的背景屏幕色彩下效果可能不太好,而且不支持 complement 色彩溢色压制方法(此方法可以提供做好的细节)。对于光线充足、拍摄良好的图像或片段,此算法能生成良好的效果,且渲染迅速。

    • #29585

      韩十七
      参与者
      青骑士

      最后是 Primatte RT 工作原理。

      Primatte RT 是最简单的算法,因此也最快。它仅使用一个平面来切分 3D RGB 色彩空间,也因此不能像上述的 Primatte 算法一样细致地将前景物体从背景屏幕中分离出来。和 Primatte RT+ 算法一样,Primatte RT 在低饱和的背景屏幕色彩下效果也可能不太好,也不支持 complement 色彩溢色压制方法(此方法可以提供做好的细节)。对于光线充足、拍摄良好的图像或片段,此算法能生成良好的效果,且渲染非常非常迅速。

    • #35567

      182****2389
      参与者
      骑士

      看不懂 太深奥

      • #54341

        韩十七
        参与者
        青骑士

        纯理论的,是比较费脑哈哈哈,如果不做开发者,只了解用途就可以啦,不必去深究底层原理。

正在查看 9 条回复
  • 在下方一键注册,登录后就可以回复啦。
error: 提示:内容受到保护!!
-->