Bonjour et merci pour refléchir au problème.
J'en étais arrivé à la même conclusion que toi et je suis parti dans une autre direction pour cette interpolation surtout que l'essai que j'avais fait prenait un temps considérable.
L'autre axe de mes reflexions pas encore finalisé :
Le problème quand je pars d'un triplet RVB dans mon image j'ai un ensemble de 2 valeurs sur un espace de codage de 0 à 255.
Ma table de Lut est par exemple dans un espace de 36 valeurs. D'autres valeurs sont possible mais le pb est le même.
Lorsque je ramène le rouge par exemple 187 et que je le ramène vers l'espace de la table j'obtiens 187/(256/36)=26,296... donc la "bonne valeur" de rouge est entre 26 et 27.
Pour les composantes verte et bleue même calcul, donc la couleur d'un pixel est comprise entre Table[R,V,B] et Table[R+1,V+1,B+1]
Je calcul ensuite
EcartR:=Table[R+1,V+1,B+1].r -Table[R,V,B].r;
et si je reprend ma valeur 187 qui me donne 26 plus 0,296 la valeur du pixel transformé pour le rouge sera égale à :
Round(Table[R,V,B].r +EcartR*0.296);
Ce type de calcul donne de meilleurs résultats sur les dégradés de couleur que l’application simple de r:=Table[Round(R/k),(V/k),(B/k)].r avec k:=256/36;
Cela me paraît juste, qu'en penses tu ? Le résultat pour certaines tables est surprenant et même quand c'est "normal" dans certains cas je suis un peu moins bon que Affinity le concurrent de photoshop.
Si tu veux tester : http://www.vscalendrier.fr/ApplisBB/...2017-12-13.exe
Le fichier est gros car il contient plein de table de lut
Partager