À propos du projet
Hueclid est un outil open-source qui convertit des captures d'écran ou des photos en palettes de couleurs UI accessibles. Contrairement aux générateurs de palettes typiques qui extraient les couleurs dominantes et s'arrêtent là, Hueclid traite la génération de palettes comme un problème d'optimisation sous contraintes, produisant un ensemble de rôles de système de design—fond, surface, texte, action primaire, danger, et plus—qui sont vérifiés entre eux pour le contraste en utilisant APCA (Algorithme de Contraste Perceptuel Accessible) plutôt que l'ancien ratio de contraste WCAG 2.
L'algorithme central, appelé ACCORD, recherche une palette qui reste fidèle aux couleurs réelles de l'image source tout en satisfaisant simultanément chaque contrainte de contraste dans un graphe de rôles dirigé. Il utilise CP-SAT (Programmation par Contraintes avec SAT) pour une résolution exacte, ce qui signifie que le résultat est soit prouvablement correct, soit prouvablement irréalisable, avec une indication claire de la contrainte problématique lorsqu'aucune palette valide n'existe.
Le projet est à un stade précoce mais dispose d'un backend FastAPI fonctionnel et d'un frontend Next.js, hébergés publiquement sur hueclid.cinexg.com. Les mathématiques des couleurs sont implémentées et vérifiées : conversion sRGB vers CIELAB, différence de couleur CIEDE2000 (vérifiée par rapport aux données de référence de Sharma et al. 2005), Oklab et Oklch (vérifiés par rapport aux matrices de référence CSS Color 4), mappage de gamut en Oklch, regroupement en histogrammes dans l'espace Lab, et un extracteur de palettes par k-moyennes pondérées. Un cache basé sur Postgres des histogrammes de l'espace Lab est construit pour l'ingestion de données, validé sur les ensembles de données Rico, Enrico et WebUI avec plus de 100 000 captures d'écran réelles.
Le projet se distingue des travaux connexes comme Colorgorical et Palettailor en traitant APCA comme une contrainte stricte dans la génération (et non comme un post-filtre), en générant des rôles de système de design typés avec un graphe de contraintes dirigé (et non un ensemble plat de couleurs distinguables), et en résolvant l'étape de sélection contrainte de manière exacte (et non par heuristique).
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.