[Bf-vfx] Keying nodes
Bob Holcomb
bob_holcomb at hotmail.com
Sun Apr 15 18:50:07 CEST 2012
I think we definitely should look at improving the keying nodes, but I
also think there is a bit of misunderstanding about what is already
present. This is largely my fault for not documenting them better-I'll
update the wiki after this short novel. Here's what we got:
Difference Key:
This takes the difference between a clean plate and another plate and
determines at a per-pixel level if the two pixels are different within
an RGB color space (with an adjustable tolerance and falloff). This
node works really well if your clean plate and keying plate are lined up
perfectly, such as when using a tripod to shoot the image or using a
motion control camera.
This could be made better by allowing for positional tolerances in
addition to account for small movements between the two shots. This
key requires the patch I submitted a couple of weeks ago to fix the
sliders from being dependent upon one another, they should be independent.
Luminance Key:
This uses the luminance value (in YUV color space) and a high/low slider
to determine if a pixels should be keyed or not. This is useful for
anytime the foreground is significantly brighter than the background.
Such as keying special effects like fire/explosions/fireworks/etc for
comping over other scenes later.
Distance Key:
This keys pixels based on the 3 dimensional distance between colors in a
3D RGB color space. This key works well when trying to single out a
specific color in a background (not necessarily green). This key
requires the patch I submitted a couple of weeks ago to fix the sliders
from being dependent upon one another, they should be independent.
Color Key:
This is pretty weak. It keys based off the color in HSV color space.
It allows for tolerances for each of the components (H,S, and V)
independently. It was more of an experiment than anything else and
probably isn't useful.
Channel Key:
This is the (most well known) simple green minus red (or the max of the
red/blue) channel keying. The node can work in other color spaces and
allows for any channel to be used to limit the other channels, but I
think it has very limited uses outside of the RGB color space. It does
allow for arbitrary channels to be used (e.g. red minus max of
green/blue). It has some high/low tolerance slider to vary the
impact. This is probably the most useful keying node.
Chroma Key:
This node was based on the method described in the book "Video
Demistified." It converts the image to YCbCr color space, then
"rotates" the pixels color (in the CbCr plane) to align it with the
keying color space. If the angle between the color and the key (the key
laying on the X axis in the rotated color space) is less than the angle
tolerance, then the pixel is keyed. This key node is useful when the
background is unevenly lit, but is consistent in chroma. This is
probably the second most useful keying node. This node usually looks
crappy because it works in YCbCr color space, and most digital cameras
compress the hell out of the CbCr components. Separating these channels
out and blurring them a little, then recombining them helps pull a
better matte.
None of these keying nodes do spill suppression, so there's a separate
node for that.
I would expect that none of these nodes will produce a good matte on
their own. You'll probably need to combine a garbage matte, keying
nodes (more than one) and edge filtering nodes to get a good matte.
Each shot is different and will probably require its own node setup.
I think an advanced keyer such as the bayesian approach would be an
awesome addition.
cheers,
Bob
More information about the Bf-vfx
mailing list