Page 1 of 1

Correcting GH5 V-Log L colors/color cast Resolve 14

PostPosted: Thu Apr 26, 2018 3:44 pm
by David J McCormick
I currently have resolve 14.2.0.012 and I am working with Panasonic GH5 V-log L 4K 10-bit 4:2:2 footage that I need to remove a color cast and correct the colors with. Back when I shot all the footage, I didn't have anything to use as a white balance and used daylight WB in camera (all was shot outdoors in daylight) and mostly the same exposure every time. I also used a SLR Magic Variable ND II attached to my lenses for most of the shots (some without the filter).

I now have a Color Checker Passport Video and would like to know two things. I need to remove a reddish color cast on my footage and some footage taken without the ND, has too much blue in them which I also need to tone down. How would I fix this? Much of the footage doesn't have any noticeable white in them that I could use as a reference, a few clips do.

Is there a way of using the Color Checker Passport to create a LUT I can apply to all my footage to get better colors? I will now use it to get the right white point in my footage in the future.

Re: Correcting GH5 V-Log L colors/color cast Resolve 14

PostPosted: Thu Apr 26, 2018 4:19 pm
by Cary Knoop
First I would make sure you use the proper transforms. GH5's V-log L is using V-Gamma but not V-Gamut, instead the colors are Rec.709. So if you do an input transform use the V-log transform but only the gamma and not the gamut (select separate gamma and gamut). If you use V-Gamut your colors will be too saturated because the color volume of V-Gamut is larger than that of Rec.709.

You obviously can't use a color checker on previously recorded footage.

I would try to color balance on a well-calibrated monitor by using your eyes.

If you truly have a color cast one way of removing that is to:

1. Create a two layer node with a composite mode of color.
2. Create a DCTL to get an inverse average:
Code: Select all
//
// Average a frame
//

__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, __TEXTURE__ p_TexR, __TEXTURE__ p_TexG, __TEXTURE__ p_TexB)
{
    const int   sample = 8;
    const float size = (float) (p_Height * p_Width /sample / sample);
   
    float R   = 0.0f;
    float G   = 0.0f;
    float B   = 0.0f;
    float TOP = 0.0f;
    float AVG = 0.0f;

    // Get the totals
    for (int i = 0; i < p_Height; i+=sample)
    {
        for (int j = 0; j < p_Width; j+=sample)
        {
           R += _tex2D(p_TexR, j, i);
           G += _tex2D(p_TexG, j, i);
           B += _tex2D(p_TexB, j, i);
        }
    }

    // Get the top channel
    TOP = _fmaxf(R, _fmaxf(G, B));

    // Set averages
    R = R /size;
    G = G /size;
    B = B /size;
    AVG = (R + G + B) /3;
       
    return make_float3(1-R, 1-G, 1-B);
   
}

3. Apply the DCTL to the bottom node.
4. In the Key window use just enough gain to get the cast removed.