Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Egaliseur de tons
#21
J'y serai aussi à partir de 20h30
Centaure
Photographe amateur
Incompétent en informatique

"Il y a deux personnes dans une image: 
le photographe et le spectateur" (Ansel Adams)

Mon Site photo
Répondre
#22
(04-01-20, 18:33)Irek a écrit : Mais pourquoi il y a 9 niveaux ? Je sais pas ou j'ai pas de souvenir si Aurélien a déjà répondu à une question similaire. On peut pas en avoir plus ? Ou même rendre leur nombre configurable ? Après, effectivement, ma question est peut-être bête mais je sais pas la théorie mathematique derrière...

La raison est à moitié mathématique et à moitié informatique.

À partir des 9 paramètres utilisateurs, je fais une interpolation par moindres carrés en réduisant la fonction à 8 paramètres. La réduction d'un degré de liberté permet de lisser un peu la courbe et de limiter les oscillations quand l'utilisateur a été trop violent sur les réglages. En contrepartie, la fonction interpolée ne colle pas exactement aux points de contrôle (en fait, on parle d'approximation, et plus d'interpolation).

Ensuite, l'algo s'exécute avec 8 paramètres, soit 1 vecteur SSE4 ou 2 vecteurs SSE2, ce qui rend le code vectorisable et mieux optimisable pour le processeur.

Si le nombre de paramètres était variable, on ne pourrait pas optimiser le code de cette façon, ça serait plus lent à l'exécution. En pratique, 9 params utilisateurs c'est déjà plus que nécessaire. Après, il est toujours possible de jouer sur le post-traitement du masque pour étaler et glisser l'histogramme sur les noeuds disponibles. 9 paramètres, ça permet aussi d'avoir la même hauteur dans les 3 onglets du module (avec 9 curseurs). Bref, plein de raisons qui convergent…

Ceci dit, le code est parfaitement prêt pour utiliser plus de nœuds, il y a seulement 2 constantes à changer.
Aurélien, photographe portraitiste, spécialiste calcul.
Développeur de filmique, égaliseur de tons, balance couleur, etc.
darktable est mon métier, pensez à m'aider :
[Image: 2FAd4rc]
Répondre
#23
(04-01-20, 19:47)aurelienpierre a écrit :
(04-01-20, 18:33)Irek a écrit : Mais pourquoi il y a 9 niveaux ? Je sais pas ou j'ai pas de souvenir si Aurélien a déjà répondu à une question similaire. On peut pas en avoir plus ? Ou même rendre leur nombre configurable ? Après, effectivement, ma question est peut-être bête mais je sais pas la théorie mathematique derrière...

La raison est à moitié mathématique et à moitié informatique.

À partir des 9 paramètres utilisateurs, je fais une interpolation par moindres carrés en réduisant la fonction à 8 paramètres. La réduction d'un degré de liberté permet de lisser un peu la courbe et de limiter les oscillations quand l'utilisateur a été trop violent sur les réglages. En contrepartie, la fonction interpolée ne colle pas exactement aux points de contrôle (en fait, on parle d'approximation, et plus d'interpolation).

Ensuite, l'algo s'exécute avec 8 paramètres, soit 1 vecteur SSE4 ou 2 vecteurs SSE2, ce qui rend le code vectorisable et mieux optimisable pour le processeur.

...

OK. Merci Aurélien. Tout se tient effectivement. Surtout la même hauteur dans les 3 onglets ! :-)

Mais dans ce cas là j'ai une autre question. Oui, je suis même d'accord que c'est même un peu "presque trop": chaque point a un espèce de "rayon d'influence" sur les luminances "voisines". Et  il vient d'où ce rayon ? Uniquement de ton interpolation/approximation à 8 paramètres ou bien des études physiologiques ou de perceptions pour éviter justement les halos ou les effets "désagréables" visuellement ?
Répondre
#24
(04-01-20, 20:28)Irek a écrit : Mais dans ce cas là j'ai une autre question. Oui, je suis même d'accord que c'est même un peu "presque trop": chaque point a un espèce de "rayon d'influence" sur les luminances "voisines". Et  il vient d'où ce rayon ? Uniquement de ton interpolation/approximation à 8 paramètres ou bien des études physiologiques ou de perceptions pour éviter justement les halos ou les effets "désagréables" visuellement ?

L'interpolation est réalisée par une série de fonctions radiales, plus précisément des gaussiennes, soit y(x) = Somme(Ai * exp(-(x - ci)² / sigma²), i), i = 0...9, avec ci les centres des canaux des paramètres utilisateurs (0 EV, -1 EV, -2 EV, etc.), et Ai les coefficients d'interpolation qui sont déterminés par la méthode des moindre carrés. Le paramètre sigma (analogue de l'écart-type de la distribution gaussienne) définit la "douceur" de la courbe interpolée (ou pour parler maths, l'amplitude de la dérivée seconde) et est réglé dans l'interface par le paramètre "lissage de la courbe".

Il admet un optimum à sqrt(2) (qui correspond au réglage 0 dans l'interface), avec des valeurs supérieures qui donnent un meilleur lissage (mais qui sur-contraignent la courbe), et des valeurs inférieures qui donnent une meilleure interception des nœuds de contrôle (mais qui donnent plus de pics). Si tu t'amuses à pousser le lissage de la courbe, au delà de +0.75 tu vas t'apercevoir qu'elle devient rapidement instable et dégénère dès que tu touches les paramètres. Parfois, ça dégénère avant +0.75, suivant la forme de la courbe.

Le rayon d'influence de l'égaliseur, dans l'UI, est aussi réglé par le paramètre de lissage de l'interpolant et a pour but de dissoudre les augmentations de paramètres, en ajoutant une sorte d'inertie, de façon à limiter les instabilités. Pas d'études psychophysiques ici, on est purement dans des contraintes de stabilité numérique de l'interpolant. La seule chose que j'ai constaté de façon empirique, c'est que minimiser la dérivée seconde sur une courbe de tonalité donne toujours des transitions tonales plus douces et plus organiques.

D'où la nouvelle courbe dans filmique d'ailleurs : par design, elle garantit la continuité de la dérivée seconde et elle modère son amplitude (nulle dans la région intérieure à la latitude).
Aurélien, photographe portraitiste, spécialiste calcul.
Développeur de filmique, égaliseur de tons, balance couleur, etc.
darktable est mon métier, pensez à m'aider :
[Image: 2FAd4rc]
Répondre
#25
(05-01-20, 00:00)aurelienpierre a écrit : L'interpolation est réalisée par une série de fonctions radiales, ...

... D'où la nouvelle courbe dans filmique d'ailleurs : par design, elle garantit la continuité de la dérivée seconde et elle modère son amplitude (nulle dans la région intérieure à la latitude).

Merci ! Très instructif et très clair pour moi !
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 8 visiteur(s)