saucecontrol / Compact-ICC-Profiles

Minimal ICC Profiles intended for embedding in image files
Creative Commons Zero v1.0 Universal
195 stars 7 forks source link

Rec2020-v4.icc looks wrong #3

Closed GregSlazinski closed 3 years ago

GregSlazinski commented 3 years ago

Hello,

I think the Rec2020-v4.icc is wrong, because I get totally different results when using it, and when using http://www.color.org/profiles/ITU-R_BT2020(beta).icc or http://color.support/iccprofiles.html (the last 2 look the same)

saucecontrol commented 3 years ago

Thanks for pointing that out. It appears the two profiles you linked are using a constant gamma of 2.4, while mine is using the transfer function described here: https://en.wikipedia.org/wiki/Rec._2020#Transfer_characteristics

There's a note on that wiki page that mentions a 2.4 reference gamma for display devices, but I'm not sure why that would be used in a profile.

While the Rec. 2020 transfer function can be used for encoding, it is expected that most productions will use a reference monitor that has an appearance of using Gamma 2.4 transfer function as defined in Rec. ITU-R BT.1886 and that the reference monitor will be evaluated as defined in Rec. ITU-R BT.2035.[1][13][14]

This would be analogous to using the display reference 2.2 gamma for sRGB instead of the piecemeal transfer function defined in the encoding spec. It's a mistake some profile makers made early on but then corrected later.

I suppose if the 2.4 gamma version is used in some software, it might be worth creating a compact version to match. Can you tell me anything about your use case for the profile and what software is involved?

saucecontrol commented 3 years ago

Actually, I see an explanation in the descriptions in your second link:

For now, I therefore assume that Rec. 2020 displays have a gamma of 2.4. That's the reason I named the profile Rec2020-Rec1886.icc.

Seems like the choice is still up in the air until more implementations are finalized. In general, I wouldn't expect encoded images/videos to use a constant gamma simply because those curves approach zero too quickly on the low end and will crush near-black values, although it could be ok at higher encoding bit-depths. 🤷

GregSlazinski commented 3 years ago

I use this for color correction in my game engine, source starting from here: https://github.com/Esenthel/EsenthelEngine/blob/master/Engine/Source/Graphics/Color.cpp#L518

Original Original

ITU-R_BT2020(beta) ITU-R_BT2020(beta) icc

Rec2020-v4 Rec2020-v4 icc

Yours has different gamma

However I'm not using these profiles at the moment, just pointing out that yours looks different than anothers.

saucecontrol commented 3 years ago

I added a gamma 2.4 profile, just so it's there in case somebody wants it. It should match the others. I still think it's wrong, but 🤷‍♂️