GHS ? C'est quoi?

Je suis un peu perdu. Quelqu’un sait ce que c’est le GHS et à quoi ça sert ?

Bonjour,
ça semble trapu comme concept…

@jdc pourrait nous en dire plus. Il en parlait dans sa présentation.

Bonjour

Difficile de répondre simplement, sans parler mathématiques et concepts. Néanmoins je vais essayer de simplifier à l’extrême.
J’ai “découvert” GHS par une des CTL de Art - de mon point de vue les CTL permettent d’avoir un aperçu d’un algorithme, mais en général, l’intégration dans le code C++ est un peu limitée et on ne profite pas pleinement des fonctionnalités, et il est souvent indispensable de modifier, ajouter du code et des fonctionnalités.

GHS est à l’origine un produit issu de PixInsight (payant), logiciel d’astrophotographie, produit en 2022/2023 avec une démarche qui sort des sentiers battus. Le produit a aussi été repris par Siril autre logiciel Astro.
Pourquoi dis-je sorti des sentiers battus, car tout ce qu’on trouve dans les logiciels sont des produits dérivés de Adobe, ACES ou AGx-blender…C’est comme cela que sont “nés” dans Darktable Filmic, Sigmoid et maintenant Agx Blender.

  • Filmic et son dérivé dans ART et RT (Log encoding) est un produit simple s’appuyant sur une transformée logarithmique - qui comme son nom l’indique n’est pas linéaire. Certes, l’algo compresse la dynamique mais perturbe les couleurs, la saturation.
  • Sigmoid (à ne pas confondre avec la partie terminale du colon !) est une transformée ‘symétrique’ d’une fonction hyperbolique simple où on définit une pente (un contraste) et un point pivot (skew). Ces fonctions hyperboliques permettent toutes de s’approcher d’une limite sans jamais l’atteindre. Vous retrouvez Sigmoid dans Darktable, sous forme de CTL dans ART et en code incorporé à CAM16 ou JzCzHz dans Rawtherapee Selective Editing. J’en ai profité pour “améliorer un poil” le truc.
  • Agx blender, est en gros une Sigmoid où on est capable de modifier l’action dans les basses et hautes lumières (avec un ‘toe’ point). Point d’articulation. Car Sigmoid seul est difficilement capable de traiter ‘en même temps’ les basses et hautes lumières.
  • Ces 3 produits utilisent la notion de Dynamique Range de Black-Ev et White-Ev, ainsi que de gris moyen ‘midgrey’. Ces valeur sont soit forfaitaires ou calculées avant (souvent nettement avant dans le processus) et calculées en mode logarithmique.

GHS dans Rawtherapee ne fait pas cela ou du moins différemment. J’ai adapté GHS pour traiter des images ‘normales’ donc contrairement aux astro, avec une forte Dynamique, et le problème des hautes lumières.
Le calcul des points noirs et blancs se fait juste avant l’algorithme en mode linéaire. Ces 2 points sont extrêmement importants et différents de Sigmoid, Filmic, etc.
Ensuite on n’utilise pas la notion de ‘midgrey’ (gris moyen), mais de Point de symétrie (Symmetrie point). Ce point correspond (avec un histogramme en mode linéaire) au pic de l’histogramme. En général cette valeur est souvent très faible (0.015 sur une échelle [0 1]) et très inférieure au gris moyen.
GHS veut dire Generalized Hyperbolic Strech. Donc à l’intérieur selon la position des curseurs - Strech factor et Local Intensity - le type de fonction hyperbolique change continuellement. Schématiquement c’est un Sigmoid a géométrie variable .
On ne parle pas de contrast, de point gris, Les 2 curseurs Protect shadow et Protect Highlight, remplacent la courbe hyperbolique par des parties linéaires.
De mon point de vue, c’est le meilleur produit pour traiter des images difficiles…Mais il suppose un réapprentissage complet.

Je pense avoir dit l’essentiel.
Je joins ce que j’ai écrit sur Rawpedia (qui n’est pas complètement à jour)
GHS Rawpedia

Mais bien sûr, je peux compléter et répondre aux questions.
De plus je vais essayer d’améliorer un peu GHS - avec (peut être) des calculs automatiques pour faciliter la vie des utilisateurs.

Jacques

1 « J'aime »

Merci Jacques pour les explications aussi compréhensibles que possible ! :grinning_face_with_smiling_eyes: :wink:

Il faudrait une petite vidéo de présentation et d’exemple de traitement pour mieux comprendre… C’est toujours obscur pour moi mais merci pour avoir pris le temps d’écrire ce texte.

Bonjour
Je n’ai pas du tout l’habitude (je peux même dire jamais) de faire des vidéos…pour tout un tas de raisons…Maîtrise du truc, nécessité de l’anglais… et pédagogiquement pas sûr que ce soit mieux qu’un didacticiel de type Rawpedia… Celui présent est incomplet, et actuellement il y a une refonte complète du système d’aide qui va prendre un “certain temps” … sans qu’on puisse mettre à jour l’ancien système… donc en résumé on est dans la me..de.

Néanmoins je comprends tes questions et incompréhensions. Il suffit de regarder sur Pixls-us Darktable les remarques des utilisateurs “paumés” parce que il n’y a pas les termes contrastes, etc. en ce qui concerne Blender Agx.

Dans le cas de GHS on a franchi un autre niveau. Par rapport aux autres “Tone mappers” tout est différent. Et je pense sincèrement que une fois qu’on a compris, c’est mieux.
Point important, tout ce que je dis / écris ici est pour Rawtherapee (pas pour ART qui n’a pas les fonctionnalités que j’ai ajoutées). Choisis pour simplifier de travailler en mode “global” (sans deltaE).

J’ai eu le même échange (en gros) avec un Chinois… (en anglais)…
En gros “Stretch” veut dire étirer, mais inévitablement si on étire quelque part on comprime de l’autre. L’image consiste à comparer avec une montagne. On diminue la hauteur et on remplit les vallées.
Le point essentiel est le réglage des points noirs et blancs qui doit se faire avec Stretch en valeur par défaut 0.001. Le système est très sensible aux réglages (selon les images) de Highlight reconstruction. En général privilégier “Color Propagation”.
Je viens de mettre en ligne un réglage automatique des ces 2 points , si tu as de quoi compiler c’est sur la branche "ghsauto’… Mais peut être je vais faire une Pull Request… (quand ?)

L’autre point essentiel est le Symmetry point (SP), par défaut la valeur de 0.015 doit souvent convenir. Cela n’ a que peu de rapport avec le gris moyen.
Point important active les Tooltips dans Preferences. Cela aidera (un peu).

L’autre facteur clefs de la compréhension est “Local Intensity”… L’action sur ce curseur modifie en profondeur la fonction hyperbolique… C’est selon le cas : Logarithme, vaguement sigmoid, ou nettement plus complexe, mais l’utilisateur s’en moque… En simplifié on “déplace” la zone de contraste…

Protect shadows et Protect highlights dépendent du réglage se “Symmetry point”, ils remplacent la fonction hyperbolique par des parties linéaires et donc agissent en profondeurs sur ombres et hautes lumières.
Le système est très puissant, jai passé beaucoup de temps à examiner et améliorer les algorithmes de base qui sont “géniaux”… Les 2 gars qui ont fait cela méritent une médaille… On est dans une démarche “nouvelle” faisant fi de Adobe, ACES, etc…et bien sûr du langage…

L’exemple avec Raw et pp3 dans Rawpedia IMGP2426.DNG est un bon exemple pour comprendre (je ne dis pas que les réglages sont optimisés…)

J’espère que cela améliore (un peu) la compréhension).

Jacques

1 « J'aime »

Merci Jacques pour les éclaircissements. :grinning_face_with_smiling_eyes: :wink:

Bonjour

Je viens de créer une Pull request avec les exécutables disponibles pour Appimage et Windows
Voir (en angliche) le site de Pixl-us.
GHS sur pixls us

Bonne journée
Jacques

Merci Jacques, j’essaie de regarder quand j’ai un peu de temps.
:grinning_face_with_smiling_eyes: :wink: