Color Checker Calibrator

After doing a few addons and releasing them to the Blender Market, I noticed something that Blender didn’t have that some image compositors might want - a color checker calibrator. I made this mockup and tested it on a few images of my own, and it works fairly well.

If you have a color checker, do me a favor: check out the addon repository below and test it on your own images/videos. Does it work? In what ways could it be better? The first things I will look into is more color options (maybe a systematic way of adding/removing colors?) and calibration for black, midtones and white points.

I studied color spaces, LUTs, and color matching for a while, but I am very young in this field. So I need your help. This is going to be a public project because this is an application that I feel many would like to see in Blender (or at least for free). So please feel free to clone the repo, make changes (which I will be doing as well), and let me know so I can merge them for everyone’s benefit.

Feel free to ask questions and discuss :grin:

2 Likes

Haven’t tried the addon but I’m having a problem with color and this might help.
I have a render with some furniture in it. A closet needs to be an exact color so I’d like to give it that color in the compositor via some nodes. But filmic is causes it to be a different color

This because of how filmic works. So can your addon help with this?

The addon currently supports calculating colors to match a color passport. However, a next step in developing the addon would be to add your own colors so you could do something like this.

For now (if this is urgent or for a client), I would look into the hue correct node. That’s what my addon uses, so this will give you more flexibility to solve the problem than my addon currently does.

Thx Magnusson,

Indeed have been using other techniques to do so but it is fiddely to say the least.
keep me posted of your addon :wink:

Haha will do, I try to update my addon posts for each update. Unfortunately, due to many big life changes and school I’ve had little time to develop :sweat_smile: hopefully that changes soon.

1 Like

“One year later” :smile:

Hello @MagnussonProductions

I do have an Andoer color checker (the cheapo one, around $20) so I modified your script accordingly. Here’s the PR: https://github.com/semagnum/blender_colorchecker/pull/1

It has an error though about index size (9, not 6 or 7), I can’t find it. Please review and correct it before merging.

This project is very interesting, because Resolve is limited to other checkers, you can’t add yours and, AFAIK, there’s nothing easy as Blender to color correct images.

However, eye-dropper is picking a pixel, not a zone like Resolve, and the noise (you can see it in the indoor image I added) is messing with precision. At least you can zoom and pick the best average value to your eye :slight_smile:
I might take an outdoor shot later.

haha it was a crazy year :sweat_smile: Life events kept getting delayed. I added a comment on Github, but I think the issue is just that the hue node doesn’t have enough points to match the array in the operator. There simply needs to be another loop to add more points as needed.
I can correct it later this weekend, but here’s a link that may help for the syntax.

That’s funny with the color picker average. I actually have a color picker for such an occasion. You could either use the addons in tandem, or a future feature could be implementing it within this addon.

To help you all out:

You can use colorsys for the rgb_to_hsv function:

import bpy
import colorsys

print(colorsys.rgb_to_hsv(0.095307, 0.056129, 0.043735))

When adding points, I’ll just remove all the points but 2 (the curve needs 2 points) and then add 23 more (it’s not the best code, but it works):

        hh_points = hue_node.mapping.curves[0].points
        while len(hue_node.mapping.curves[0].points) > 2:
            p = hue_node.mapping.curves[0].points[0]
            hue_node.mapping.curves[0].points.remove(p)
        i = 2
        while i < 25:
            hue_node.mapping.curves[0].points.new((1.0/24)*i,0.5)
            i = i + 1

Still a lot to do. Saturation gets value of 0 when in the desaturated colors. You cannot divide by 0.

2021-11-09 01_39_52-Window
The curves gets the values from the checkerboard. That should not be the case. It should calculate the difference between the original location and picked one.

1 Like

Appreciate you being willing to create a profile and make this suggestion, thank you. I did not know about the colorsys function - I just made a function that matched the one used by Blender (which has it in C++, otherwise I’d just call it).

There’s several reasons I could give for not contributing since the initial commits - life changes, busy with work and family, starting my next paid addon nView, etc. - but most of all, I have heard little feedback apart from earlier in the year with a few comments here and an unfinished PR that wasn’t up to par (simply added more variables, where I’d rather have it be more scalable for users via presets with add or remove functionality). I have no idea if anyone uses it, let alone would like to still contribute. If I learn that lots of people are using this addon, then I’d be happy to give it more priority. But I have received too little of feedback to be proven otherwise.

1 Like