GHS - more intuitive and simpler for the user

@Wayne_Sutton

Thank you for this quick review and have a good trip.

I didn’t know there was already such a name ‘Magic keys’. My goal isn’t to make it sound ‘pretty’ or ‘exciting,’ but to draw attention to Stretch Factor, which exhibits ‘abnormal’ behavior at certain values. But of course, I can delete it; it’s just text, with no impact on the algorithm. That’s the purpose of these issues and PRs, after all: to allow people to try and comment.

A few years ago, an RT developer told me that I shouldn’t do what I did for “Stretch Factor,” i.e., dedicate a specific action to certain values, but rather use an additional control (button, checkbox, etc.). Here, it’s difficult, if not impossible, or very complex (due to the dynamics).

If the ‘auto’ checkbox is enabled, it is not possible (at least in what I have planned) to disable ‘gray out’ unless ‘Stretch factor’ is between 0.001 and 0.002. You probably mean that there are cases (due to the GUI) where it does not work. It is quite possible, given the complexity of the GUI… In this case, after your trip give me, step by step, what leads to this malfunction. Or my explanation in the tooltips is unclear or bad (which would be nothing abnormal). :wink:

Thank you again for testing :grinning:

Jacques

1 Like

I’ve completely revised the Label for the ‘Stretch Factor’ (D) slider and all the tooltips related to Black Point (BP), White Point (WP), auto BP-WP, Inverse GHS, and Stretch Factor (D).

Of course, I remain open to criticism, particularly regarding syntax and British grammar.

For more comments, see the issue on this topic.
Issue 7528

Executables
Text ghsinverse

But this has no impact on the GUI itself (other than the text) as well as the algorithm and the ‘engine’ code.

Jacques

Hello everyone

The labels and tooltips have been updated.

I plan to merge this pull request soon. The changes only affect the GUI (a single *cc file), labels, and tooltips.

Executables
Txt ghsinverse

Jacques

1 Like

To help the user understand (a little better) what GHS and its inverse function are, I’ll make a few comments.

As you can see:

  • ‘Stretch factor (D)’ only has positive values.
  • There are no ‘contrast’ or ‘lightness’ sliders, no more ‘middle grey’ or ‘pivot’.
  • Interestingly, I use very low values ​​of (D) as ‘special’ values ​​(0.001 or 0.002) to activate certain functions : settings for White Point linear (WP), Black Point linear (BP), Symmetry point (SP), and Inverse GHS.

It’s important to understand that the system as I’ve designed it is entirely dynamic. You directly see the interaction of the (WP), (BP), and (SP) settings. Some might say it’s not very ‘professional’ (in terms of code), but I haven’t found any other solutions that work. It is imperative that the GHS algorithm be activated in order to calculate and see the influence of (BP) and (WP) and examine the histogram (I recommend doing it in ‘working profile’ mode with gamma=1) - before any significant action on ‘Stretch factor (D)’. ‘D = 0.001’ is a very low value that can be considered negligible (in terms of stretch), but it allows the algorithm to function. At this value, to ensure the impact of (BP) and (WP) is visible, some sliders are deactivated so as not to influence the result (eg : Stretch regularization & Midtones)

The problem (not just that of labels and tooltips - labels and tooltips are difficult to write because you have to try to convey something else) is complex. Wanting to create a dynamic system that calculates (BP), (WP), and (SP) in real time and allows for inverse operation is difficult ; I’m not trying to be pretentious. However, it’s completely different from anything being done elsewhere. I’m not saying that what is done elsewhere (in RT or other software…) is less good or bad, but it is very different.

As a reminder, because I’ve already mentioned it:

  • (BP) and (WP) calculations are in linear mode, not with Ev.

  • It’s important, even on ordinary images, to enable ‘Color Propagation’ (even if you can disable it later).

  • Combining the two allows you to retrieve out-of-gamut colors (including ACES-P0). When the system finds a (WP) of 10, it means that within the limits of the usual data gamut (0 / 65535), the values ​​taken into account are about 655000…For example, when the illuminant consists of LEDs.

The system acts as a gamut compressor (a bit like ‘Gamut Compression’, but for the 3 RGB channels) and ‘fits’ the data into the gamut. Adjusting the (WP) (for example, reducing it) will limit the maximum value. Adjusting the ‘Stretch Factor (D)’ and ‘Local Intensity (b)’ will allow you to focus on the area of ​​the image to be enhanced. If necessary to refine the colorimetry, you can use ‘Abstract profiles’ (which is not, in this branch, up to date with the new features of the ‘cam16slope’ branch) in particular the ‘Custom (CIExy diagram)’ part, and ‘Refine colors’, etc.

And of course, if you create a second Spot, the (BP) and (WP) values ​​are recalculated and often close to 0 and 1, and (SP) recalculated.

The ‘Inverse GHS’ function is (somewhat) similar to ‘Excluding spot’, but more sophisticated, if I may use this term while remaining modest.

It allows you to ‘undo’ previous actions for a specific area of ​​the image, for example ‘removing’ or ‘reduce’ Stretch in a sky or sunset.

But it also allows you to work in ‘negative space’, that is, to treat the ‘Stretch factor (D)’ as if it had negative values ​​(which is not normally possible). In ‘Inverse GHS’ mode, the contrasts will be reduced overall (instead of being increased). The entire system will operate in reverse. Look at ‘GHS curve visualization’ and you’ll see that when you increase ‘Stretch factor (D)’, the curve curves downwards…

Jacques

3 Likes

I merge this Pull Request in Dev this morning

Jacques

1 Like