[Bf-vfx] Keying nodes
Ton Roosendaal
ton at blender.org
Mon Apr 16 19:52:35 CEST 2012
Hi Keir,
I agree, computer vision and 3d reconstruction potentially gives superior and high quality mattes. I'm afraid we need to invent it ourselves :)
Best keyer in market I saw is www.ultimatte.com, they do realtime greenscreen for tv etc. It even does glass :) I suspect they work with references (images without the keyed objects). Motion detection (not camera) + temporal filter is also interesting.
-Ton-
------------------------------------------------------------------------
Ton Roosendaal Blender Foundation ton at blender.org www.blender.org
Blender Institute Entrepotdok 57A 1018AD Amsterdam The Netherlands
On 16 Apr, 2012, at 19:32, Keir Mierle wrote:
> A couple months ago I spent some time surveying the literature on keying to see what I could find. I found almost nothing. It seems there is little to no published research in the area? In most areas that I survey for reconstruction, I can eventually point at 2 or 3 papers which are the state of the art.
>
> I have a bunch of ideas on how you could use modern computer vision techniques to do nice keying, but it would be research rather than implementing something we know works.
>
> Has anyone seen papers describing good chroma keying techniques?
>
> Keir
>
> P.S. some random ideas:
>
> - Use a mixture mode + EM to estimate P(key|pixel, pixels in the neighhbourhood)
> - Use MRF's or something similar for the above model
> - Do k-means clustering on the pixels where the user can specify some keying regions and non-keying regions, then the pixels are clustered by some sort of distance metric. This can be smarter than a single central point for the clusters; each cluster can be modeled as e.g. a gaussian (determined by PCA of linear RGB pixels, etc)
> - So on and so forth.
>
> On Sun, Apr 15, 2012 at 9:50 AM, Bob Holcomb <bob_holcomb at hotmail.com> wrote:
> 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
>
>
>
> _______________________________________________
> Bf-vfx mailing list
> Bf-vfx at blender.org
> http://lists.blender.org/mailman/listinfo/bf-vfx
>
> _______________________________________________
> Bf-vfx mailing list
> Bf-vfx at blender.org
> http://lists.blender.org/mailman/listinfo/bf-vfx
More information about the Bf-vfx
mailing list