olive-editor / olive

Free open-source non-linear video editor
https://olivevideoeditor.org/
GNU General Public License v3.0
8.22k stars 556 forks source link

[COLOR] On color wheels/displays, visualize which colors are out of range for the chosen display #1355

Closed itsmattkc closed 1 year ago

itsmattkc commented 3 years ago

Originally opened as https://github.com/sobotka/olive/issues/95

General TODO Summary It seems useful to show which colors are out of range on color selectors. Something like this maybe? image

Additional Information / Notes I'm not entirely certain how to determine which values are out of range with OCIO. Does it require inverting the 0.0 - 1.0 range from display to input to see where the limits are on the input values?

itsmattkc commented 3 years ago

Comment by sobotka Saturday May 02, 2020 at 16:07 GMT


This has to do with gamuts.

The RGB domain is problematic here for evaluations, and Olive can do better with colourimetric ground truth configuration variables.

The reason that RGB is problematic can be seen when considering changing from one gamut to another; here the “green” primary literally has changed to a different chromaticity. The result? The original “green” channel intensity may need to go down or up from where it was.

As a result, it is not ideal to simply examine the resultant RGB values. A brute force naïve indication is as follows:

  1. Normalize source radiometric RGB value range, from LOW to HIGH to 0.0 to 1.0. Let this array be called SOURCE_NORM, with the original values SOURCE_RGB.
  2. Transform SOURCE_RGB to DEST_RGB.
  3. Normalize DEST_RGB using the same scale value as SOURCE_NORM, including offset.
  4. Values that are lower than 0.0 or greater than 1.0 using that approach, are out of gamut.

It is also possible via the above outline to begin to see why a simple transform becomes complex, as the output context isn’t the whole picture.

Again though, Olive can do better here, and provide actual colourimetric evaluations for the audience.