Objectif de cette étape : charger l'image source (depuis une URL ou un fichier local) et l'afficher proprement dans un <canvas>. Le calcul des canaux (Lab, T1, T2, etc.) sera branché à l'étape 2.
Chargez une image (URL *CORS-enabled* ou fichier local), puis basculez le canal affiché sur chacun des deux canvas (A et B).
Conversion stricte sRGB->lin->XYZ->Lab (D65), calcul T1=a*+b*, T2=a*-b*, chroma=√(a*²+b*²), normalisation robuste (P2–P98).
Xn=0.95047, Yn=1.00000, Zn=1.08883).warmCoolScore (projection sur un axe chaud 60° et pondération par la chroma). Modes disponibles :
absolute : utilise directement les composantes a*/b*.relative_global : soustrait la moyenne globale de a*/b* avant projection.relative_local : soustrait un flou gaussien (σ=50 px) pour compenser les tendances locales.