Journal
http://www.alanzucconi.com/2015/09/30/colour-sorting/
Le problème de tri des couleurs est directement défini par la difficulté de trouver une relation d'ordre qui soit visuellement satisfaisante pour un espace colorimétrique.
Si l'on prend les nuanciers types arc en ciel, ceux ci sont produits dans un espace HSL en faisant varier la teinte (hue) et en conservant la saturation et la luminance à une valeur fixe (typiquement 1). Essayez sur directement sur http://google.github.io/palette.js
Ici, la relation d'ordre est spécifiée par la valeur de teinte (unidimensionnelle) d'où un bel arc en ciel visuellement uniforme, comme ici : http://www.play-crafts.com/blog/wp-content/uploads/2013/12/hue.jpg
Cependant, si l'on fait varier aléatoirement la teinte, la saturation et la luminance, le bel arc en ciel n'est plus possible car un même vert peut exister en plusieurs niveaux de saturation/luminosité. Avec une simple relation d'ordre lexicographique sur les valeurs de teinte, saturation et luminance, le tri produit ceci http://www.alanzucconi.com/wp-content/uploads/2015/09/sort_hls.png
On observe que l'arc en ciel est là, mais avec des rais de différentes saturation/luminosité qui produisent du bruit dans le résultat.
Si l'on cherche à regrouper les couleurs entre elles, cela peut se faire en divisant l'espace en classes, soit uniformément (découpage en blocs uniformes), soit au moyen d'un algorithme de clustering.
Cela donne un résultat où les couleurs sont effectivement regroupées mais sans arc en ciel global : http://www.alanzucconi.com/wp-content/uploads/2015/09/sort_hsv-lum.png
Il est possible aussi de minimiser la distance entre toutes les couleurs lors de la réduction en dimension 1, ce qui se formalise en problème de voyageur du commerce. Toutefois, si le résultat obtenu est très lisse, il est aussi visuellement aléatoire : http://www.alanzucconi.com/wp-content/uploads/2015/09/sort_nn_hsv.png
Si l'on prend les nuanciers types arc en ciel, ceux ci sont produits dans un espace HSL en faisant varier la teinte (hue) et en conservant la saturation et la luminance à une valeur fixe (typiquement 1). Essayez sur directement sur http://google.github.io/palette.js
Ici, la relation d'ordre est spécifiée par la valeur de teinte (unidimensionnelle) d'où un bel arc en ciel visuellement uniforme, comme ici : http://www.play-crafts.com/blog/wp-content/uploads/2013/12/hue.jpg
Cependant, si l'on fait varier aléatoirement la teinte, la saturation et la luminance, le bel arc en ciel n'est plus possible car un même vert peut exister en plusieurs niveaux de saturation/luminosité. Avec une simple relation d'ordre lexicographique sur les valeurs de teinte, saturation et luminance, le tri produit ceci http://www.alanzucconi.com/wp-content/uploads/2015/09/sort_hls.png
On observe que l'arc en ciel est là, mais avec des rais de différentes saturation/luminosité qui produisent du bruit dans le résultat.
Si l'on cherche à regrouper les couleurs entre elles, cela peut se faire en divisant l'espace en classes, soit uniformément (découpage en blocs uniformes), soit au moyen d'un algorithme de clustering.
Cela donne un résultat où les couleurs sont effectivement regroupées mais sans arc en ciel global : http://www.alanzucconi.com/wp-content/uploads/2015/09/sort_hsv-lum.png
Il est possible aussi de minimiser la distance entre toutes les couleurs lors de la réduction en dimension 1, ce qui se formalise en problème de voyageur du commerce. Toutefois, si le résultat obtenu est très lisse, il est aussi visuellement aléatoire : http://www.alanzucconi.com/wp-content/uploads/2015/09/sort_nn_hsv.png
Ce journal est basé sur Ginger, un gestionnaire de lien minimaliste développé dans le cadre d'un stage de perfectionnement. Pour plus d'informations, consulter le wiki consacré à mes projets personnels.