Présentation du projet

Le projet vise à créer un espace de couleur qui facilite la représentation de teintes de peau diverses dans différents contextes, tels que les créateurs de personnages ou l'art numérique. L'objectif est de définir un espace de couleur qui permet de générer des teintes de peau plausibles et simplifiées.

Méthodologie

La méthodologie utilisée consiste à étiqueter manuellement des couleurs en RGB pour obtenir une approximation grossière de la forme des données. Ensuite, une analyse en composantes principales (ACP) est effectuée avec N=3 sur le jeu de données pour transformer la forme en quelque chose de plus facile à travailler. Enfin, des équations sont créées manuellement pour mapper une sphère dans l'espace cible sur les données transformées dans l'espace XYZ ou ACP.

Implémentation de l'algorithme

L'algorithme est implémenté en Python et en JavaScript. La fonction select_point permet de sélectionner un point de manière uniforme sur une sphère. La fonction to_rgb convertit les coordonnées de la sphère en valeurs RGB.

def select_point(r_square: float = 2.) -> tuple[float, float, float]:
       radius = r_square ** (1. / 2)
       phi = uniform(0, 2 * math.pi)
       costheta = uniform(-1, 1)
       n = uniform(0, 1)
       theta = math.acos(costheta)
       r = radius * (n ** (1.0 / 3))
       t = r * math.sin(theta) * math.cos(phi)
       u = r * math.sin(theta) * math.sin(phi)
       v = r * math.cos(theta)
       return (t, u, v)

Limitations et perspectives

Le projet a des limitations, notamment le fait que les teintes de peau sont beaucoup plus complexes que une simple couleur. Les teintes de peau varient largement entre les différentes parties du corps et sont soumises à des processus biologiques complexes. De plus, les couleurs ne sont pas perçues de manière consistante sur les différents types d'écrans et dans les différents environnements de visualisation. Une extension de ce travail pour prendre en compte ces limitations serait un domaine d'investigation intéressant.