Better Chroma Key in the Dev Pipe? Maybe something like Ultra Key?

LaughterOnWater

New Member
Windows 10, 16K RAM, NVIDIA Quadro M4000 GPU, Logitech C920 Webcam
While the current Chroma Key in OBS is yards better than Zoom AI background removal, it could be better. I've got gray hair and a gray beard, which tend to get posterized and coarsely keyed when the green screen is behind it. I've tried the full gamut of settings. I can get close, but if I turn my head, I'm suddenly and unintentionally glitter-beard. It's not fair to compare the keying in OBS with Ultra Key in Premiere Pro, but the problem is nearly non-existent in that software. I'd love to see OBS chroma key evolve into something more believable. Are there plans in the developmental pipeline to make Chroma Key even better?

I get that there is a need to balance less robust average hardware with software compatibility, but I'd really love to get more convincing green screen.

Cheers in advance!
 
Yeah, a better keyer would be great to have in OBS.
While it's not a proper solution, check out this thread: https://obsproject.com/forum/threads/120361/
Some solid advice there, plus an advanced keying shader you can use to great effect. Much better despilling without hue shift.

Another technique I use with OBS is color grading my green screen in Premiere/Resolve (or any proper grading software really), shifting the hue into pure greens and narrowing the lightness/chroma/hue range to make it easier for the keyer to do its job; then I export that grade as a LUT and apply it before the keying filter. By paying special attention to the transition between the background and the subject during grading, I can fine tune my accidental reflections and color casts. It still requires de-spilling, though.
 
Last edited:

LaughterOnWater

New Member
Thanks so much for this response. It's been very helpful!

Yeah, a better keyer would be great to have in OBS.
While it's not a proper solution, check out this thread: https://obsproject.com/forum/threads/120361/
Some solid advice there, plus an advanced keying shader you can use to great effect. Much better despilling without hue shift.
I've downloaded and installed Halsu's HybridKeyer_V014 shader. Using the reference image of my actual green screen as a clean despeckled image achieves the smoothest results. Amazing! Still a bit sparkly when presented against a #00FF00 background source, but way better than core obs Chroma Key. Like many of us, my green screen is difficult to light evenly. What a difference.

Another technique I use with OBS is color grading my green screen in Premiere/Resolve (or any proper grading software really), shifting the hue into pure greens and narrowing the lightness/chroma/hue range to make it easier for the keyer to do its job; then I export that grade as a LUT and apply it before the keying filter. By paying special attention to the transition between the background and the subject during grading, I can fine tune my accidental reflections and color casts. It still requires de-spilling, though.
Not sure I understand, so I'll try to rephrase what you're suggesting here...
1. Apply the lut crafted from your clean greenscreen to the background of your chromakeyed scene.
2. Play with the settings in Chromakey.
3. Tune despill settings
 
Not sure I understand, so I'll try to rephrase what you're suggesting here...
1. Apply the lut crafted from your clean greenscreen to the background of your chromakeyed scene.
2. Play with the settings in Chromakey.
3. Tune despill settings
Alright, I'll just describe in depth my entire setup then. I use it for several months at my remote work. If it sounds too complicated, ad-hoc, and hard to follow, that's because it is. It's what works for me and I don't recommend any of this unless you're really familiar with color grading and making custom LUTs.

So, what I have is:
- a desk lamp with a 5500K 50W LED lightbulb pointed at an A0 paper sheet on my wall, as my main light
- a cheap selfie ring as my balancing light, also 5500K
- a $50 chinese webcam which is even worse than your Logitech C920
- a "relatively green" background
No high-CRI lights, no mirrorless camera, no Elgato Facecam or anything fancy like that. The whole setup is probably about $150 total. (I have a separate mic though).

First, my webcam is noisy, regardless of lighting. Since a reasonable keying quality pretty much demands the narrowest margins you can get, I need to lower the noise floor of my webcam somehow, without sacrificing too much quality. I capture the webcam with VLC, because it has a good temporal denoiser, and pipe it through NDI to OBS. With NDI and a bit of VLC tweaking I get much lower latency than with the VLC source in OBS. Giving VLC higher priority in Windows also helps.

Here's a still from my webcam after denoising, as seen by OBS:
2.png


The lovely green tint just screams "shitty LEDs", doesn't it?

Then I calibrate it using the color target I have. (a step that is not really required for a goddamn Zoom meeting, if you know how to set the white balance and fix skin colors manually; but I do it anyway)
3.png


After this, I still have two problems.
1. The Halsu's shader works in RGB color space, which isn't optimal. The shader really expects pure green, and despills any other hue into a non-neutral color, which will be important later. My shitty webcam thinks my screen is yellow-ish, though. NOT green.
2. I don't have dedicated softboxes for my green screen and it's very poorly lit.
So I grade the screen separately, narrowing its hue, chromaticity and lightness spread. I do it in a very perceptually uniform colorspace such as HCL, so it's straightforward and doesn't involve lots of fiddling.
4.png


This what is fed to the shader, you can see the background looks much more even and green now. The slight spill on the hair is intentional, to help it work better; without it I was getting poor results with the hair. The pixelated artifacts on my hand come from the shitty webcam working in NV12. I think they are unavoidable without chroma upsampling/antialiasing of some kind, or a better camera that doesn't wreck the chroma resolution.
5.png


This is the result I get after Halsu's shader. While the key quality is not acceptable for anything serious, it's good enough for a crappy webcam setup with no proper lighting, in real-time. No flickering due to the noise either, it's temporally stable. Note that Halsu's de-spilling is very aggressive at killing yellows. Be sure not to overdo it as it will eat away the skin tones. Use a vectorscope for precise control.
6.png
 

LaughterOnWater

New Member
Alright, I'll just describe in depth my entire setup then. I use it for several months at my remote work. If it sounds too complicated, ad-hoc, and hard to follow, that's because it is. It's what works for me and I don't recommend any of this unless you're really familiar with color grading and making custom LUTs.

So, what I have is:
- a desk lamp with a 5500K 50W LED lightbulb pointed at an A0 paper sheet on my wall, as my main light
- a cheap selfie ring as my balancing light, also 5500K
- a $50 chinese webcam which is even worse than your Logitech C920
- a "relatively green" background
No high-CRI lights, no mirrorless camera, no Elgato Facecam or anything fancy like that. The whole setup is probably about $150 total. (I have a separate mic though).

[ snip ... ]

Your setup sounds a lot like mine. My greenscreen is nowhere near as evenly lit as yours. Getting there...

Wow... This is exactly the information I'm looking for. Your results are amazing! I'm way behind you as far as doing this, but thank you for actually writing down the steps you used. I've got a path.

CS6 doesn't include that LUT creation capability. I haven't done anything in DaVinci Resolve. Guess now's my chance. Small Steps!

Thank you!
 
CS6 doesn't include that LUT creation capability. I haven't done anything in DaVinci Resolve.
In the post above, I was actually using the software weirdly named GrossGrade. It's available for free. It's unfinished, not color managed properly, has clunky UI, and is sometimes buggy. It's nowhere near the level of polish the popular color grading software has, but whoever made some of its tools is a usability genius, I think its control of hue/chroma ranges is far more convenient than Resolve's.
NB: the white balance picker is located inside the Color Wheel tool. You might probably want to uncheck Lock Neutrals and switch to HCLxy color space.
 

bradtem

Member
Alright, I'll just describe in depth my entire setup then. I use it for several months at my remote work. If it sounds too complicated, ad-hoc, and hard to follow, that's because it is. It's what works for me and I don't recommend any of this unless you're really familiar with color grading and making custom LUTs.
I'm coming in late here, but what tool are you using to be able to grade the screen differently and map its colours? Is this a plugin?
 
I'm coming in late here, but what tool are you using to be able to grade the screen differently and map its colours? Is this a plugin?
That was the standalone software called GrossGrade, the post above yours had a link to it. Unfortunately, the author discontinued it; too bad as it was an extremely flexible (although unfinished) node-base editor.

Actually it was simply convenient, and you should be able to do this in any other mature grading software like DaVinci Resolve.
 
Top