Peter Schlaile proposes a new node for Blender “Inpainting”!:eek:
http://lists.blender.org/pipermail/bf-committers/2012-July/037357.html
Check out the wiki:
Potential for denoising here, depending on the algos employed :eyebrowlift:.
Sadly it seems that Blender is in lock down for 2.64 but maybe Mango could wedge it in, as there is more potential for another detail keyer!
This seems like a big deal for the compositor.
Hi,
I wrote an inpaint node for the compositor.
Since we are directly before a release, I haven’t commited it, but I’d
like people to review it.
In case, you don’t know, inpainting does this:
http://en.wikipedia.org/wiki/Inpainting
It’s use cases in blender are
- wire removal
- green screen background reconstruction
the later is important to actually improve keying in blender. (see
below)
The node isn’t tile based (for fundamental reasons), but very fast,
since it first builds a manhatten distance map and after that performs
color convolution only on the edges.
That’s something, one should probably add also to the dilate node (in
step mode) to make it perform a lot better for dilate iterations greater
than 3.
It will bring it’s computing time from O(n^3) down to O(n^2).
Take a look here for the details:
http://ostermiller.org/dilate_and_erode.html )
My aim is implementing something like the IBK Keyer in Nuke
(http://www.youtube.com/watch?v=-GmMC0AYXJ4 ), since all current
solutions within Blender fail on hair details rather badly.
You can see first steps in this direction here, which already do some
nice improvements:
http://peter.schlaile.de/blender/inpaint/
(compare key_raw.png to inpaint_key.png )
The trick I use is the following:
If you consider the usual compositing equation
Composite = Background * (1-ALPHA) + Foreground * ALPHA
for the case, that Background is our GreenScreen and Foreground is the
Object, we want to seperate, you’ll notice, that we more or less
successfully can pull an alpha-matte (using a color channel node), but
currently fail to subtract the GreenScreen Background properly from the
Foreground.
That’s no surprise, since until now, the GreenScreen Background wasn’t
actually known (we don’t have any clean plates shot in Mango).
But: we can inpaint the surrounding greenscreen into the area behind
the semi-transparent regions and subtract that instead.
The only thing missing in blender for that task, is said inpainting
node. And that’s why I added it
So: please use my git repository at
http://gitorious.org/~schlaile/blenderprojects/blender-vse-schlaile
git checkout image-keyer
and tell me your findings.
If I should commit to trunk, please let me know. If team Mango can make
use of it, feel free to commit to tomato branch.
Cheers and good night,
Peter
P.S.: There are a lot more sophisticated solutions for inpainting, some
are convolution based, like my simple approach (which convolves the
known surrounding pixels with a weighted average into the unknown
region), some are a lot more advanced. For all practical reasons (the
ones noted above), my node should work fairly well. If you want to add
additional inpainting algos, feel free to add a type and activate
custom1 as a type parameter variable.
–
Peter Schlaile