Correspondance des couleurs la plus proche dans un tableau
Étant donné un tableau de couleurs et un objet Color distinct, la tâche consiste à déterminer la correspondance la plus proche dans le tableau à la couleur donnée. La distance des couleurs est un concept subjectif et il existe différentes façons de la quantifier.
Méthode des teintes uniquement
Cette méthode se concentre uniquement sur les teintes des couleurs, ignorant la saturation. et la luminosité. Il calcule la différence absolue entre les teintes de la couleur candidate et la couleur donnée. La couleur candidate avec la plus petite différence de teinte est sélectionnée.
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 de l'espace RVB
Cette méthode mesure la distance directe entre les couleurs dans l'espace RVB. Il calcule la distance euclidienne entre les composantes R, V et B de la couleur candidate et la couleur donnée. La couleur candidate avec la plus petite distance est sélectionnée.
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 pondérée
Cette méthode attribue des poids aux composants de teinte, de saturation et de luminosité des couleurs. Il calcule une distance pondérée en combinant la différence de teinte avec une combinaison pondérée de saturation et de luminosité. La couleur candidate avec la plus petite distance pondérée est sélectionnée.
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); }
En fonction de vos exigences, vous pouvez choisir la méthode qui convient le mieux à votre application.
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!