JzCzhz color space

So I was just reading https://github.com/darktable-org/darktable/pull/4688
and here the dev mentions JzCzhz which I’m not familiar with so I go to google it to familiarize myself and google gives me 280 results in total and most of those are some asian marketing sites called Jzczhz.

There is no Wikipedia page, no forum discussions (except on pixls), no nothing except a few visualizations and a paper from the ppl who came up with it.

Now I’m completely loving this and I wouldn’t like any silly abstractions in the naming but I just imagined what would it be like trying to move from Lightroom to Darktable for the first time and seeing stuff like JzCzhz, YUV, Y0U0V0.
I would be like “What did these devs smoked when they developed this? Is this Cyrilic? Where’s the RGB?!!” xD.

It would be a good idea for someone with deep understanding of color modes and these color spaces to write something in the DT documentation imho.

But for real, how come there are only 280 results for JzCzhz? Is nobody implementing it except DT and ImageMagick?

Thanks @paperdigits for the title, an obvious one :slight_smile: I must be sleep deprived xd

What makes you think there won’t be documentation?

Nothing, I’m just surprised how DT is different from other software and how modern some of it’s features are. To the point that the only info on the topic is the original paper.

The name looks a bit scary, doesn’t it? But if you read the paper, it sort of makes sense.

I think most darktable users are familiar with CIE Lab space. Well, these guys are proposing a perceptual space that is similar to Lab, but is better suited for high dynamic range and wide gamut applications, and instead of Lab they call it Jzazbz.

Then you might know that the a and b from Lab can we written in polar coordinates, as an angle (like a hue) and a distance (like a saturation, or a Chroma value). So, Lab values can be written as LCh values (L=lightness, C=Chroma/saturation, and h=hue). Similarly, the new Jzazbz space can be written in polar coorinates, so that JzCzhz is to Jzazbz as LCh is to Lab.


Color spaces are not for the uninitiated, so it can be a little scary.
The reason why basically nobody uses Jzazbz (or polar conversions thereof) yet, is because it is relatively new (see this research article from 2017 which introduced it: https://www.osapublishing.org/oe/fulltext.cfm?uri=oe-25-13-15131&id=368272) and because it hasn’t proven itself as a worthwhile improvement over the widely adopted L*a*b* colorspace.
I mean, someone needs to implement it first, then it might get some traction as a useful method to do color editing.

Two of the important search results with more information: Jzazbz color space / Jacob Rus / Observable
Jzazbz colorspace by our own @snibgo

1 Like

JzAzBz has an almost perfect hue-linearity and can do HDR. These are 2 large improvements over Lab.


The Jz colorspaces are solutions looking for a problem.

I suspect the “killer app” for Jz will be affordable consumer screens for games and computers that have much wider gamuts and dynamics that we currently have. Imagine a screen that that can display monochromatic yellow or red or any hue you want in a dynamic range of 1:100000. Ahh, we can dream.

Yes, Jzazbz and JzCzhz are perceptual improvements on CIE L*a*b* and LCh, which are better than HCL, which is better than HSL. I suppose that re-writing all Lab software to use Jzazbz instead would give better results more easily, but how much better? And how many people would care?

Jzazbz / JzCzhz still has the “problem” (in fact a design feature) that brightness J is non-linearly related to the light intensity releative to the scene. So, all the remarks in @anon41087856’s article Lab vs RGB article concerning blurring and other optical/physics-based processes still apply for Jzazbz space:

Yes, Jz colorspaces are designed to model perceptual colours, not physical colours.

Yes, but JzCzhz is only used to create an alpha mask by thresholding the channels with a keyframe. Once this alpha mask is done, fusion happens in linear RGB. So the non-linear thingy is only UI.

Right, my comments were more about migrating some existing modules using blurs (like sharpening module) from using Lab as their internal working space to use Jzazbz for their internal working space instead – you still suffer the same issues due to non-linearity of L / Jz, and so probably don’t gain too much. The new blending modes that use JzCzhz of course work as you say, and so won’t produce nasty artifacts.