Comment déterminer la couleur la plus proche dans un tableau de couleurs
Introduction
Trouver la la couleur la plus similaire au sein d’un tableau peut être une technique utile dans diverses applications. Cette question explore trois méthodes pour mesurer la similarité des couleurs et récupérer l'indice de la correspondance la plus proche.
Méthodes
Méthode 1 : Comparaison des teintes
En considérant uniquement la teinte (la nuance de couleur), cette méthode trouve la teinte la plus proche de la couleur cible. Il ignore la saturation et la luminosité.
int closestColor1(List<Color> colors, Color target) { var hue1 = target.GetHue(); var diffs = colors.Select(n => getHueDistance(n.GetHue(), hue1)); var diffMin = diffs.Min(n => n); return diffs.ToList().FindIndex(n => n == diffMin); }
Méthode 2 : Distance spatiale RVB
Cette méthode mesure directement la différence de valeurs RVB entre la couleur cible et chaque couleur dans le tableau.
int closestColor2(List<Color> colors, Color target) { var colorDiffs = colors.Select(n => ColorDiff(n, target)).Min(n => n); return colors.FindIndex(n => ColorDiff(n, target) == colorDiffs); }
Méthode 3 : pondérée Distance
Cette méthode intègre la teinte, la saturation et la luminosité pour évaluer la similitude. Le composant de teinte a un poids plus élevé par défaut.
int closestColor3(List<Color> colors, Color target) { float hue1 = target.GetHue(); var num1 = ColorNum(target); var diffs = colors.Select(n => Math.Abs(ColorNum(n) - num1) + getHueDistance(n.GetHue(), hue1)); var diffMin = diffs.Min(x => x); return diffs.ToList().FindIndex(n => n == diffMin); }
Fonctions d'assistance
Utilisation
int indexInArray = closestColor1(clist.ToList(), someColor);
Conclusion
Le choix de la méthode dépend des exigences spécifiques de la demande. Pour les comparaisons basées sur les teintes, la méthode 1 est suffisante. La méthode 2 mesure la distance RVB, tandis que la méthode 3 fournit un calcul de distance pondéré prenant en compte toutes les propriétés de couleur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!