04-01-20, 19:47
(Modification du message : 04-01-20, 19:51 par aurelienpierre.)
(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 :
Développeur de filmique, égaliseur de tons, balance couleur, etc.
darktable est mon métier, pensez à m'aider :