Nächste Farbübereinstimmung in einem Array
Gegeben ein Array von Farben und ein separates Farbobjekt, besteht die Aufgabe darin, die größte Übereinstimmung darin zu bestimmen das Array auf die angegebene Farbe. Der Farbabstand ist ein subjektives Konzept und es gibt verschiedene Möglichkeiten, ihn zu quantifizieren.
Nur-Farbton-Methode
Diese Methode konzentriert sich ausschließlich auf die Farbtöne und ignoriert die Sättigung und Helligkeit. Es berechnet den absoluten Unterschied zwischen den Farbtönen der Kandidatenfarbe und der angegebenen Farbe. Die Kandidatenfarbe mit dem kleinsten Farbtonunterschied wird ausgewählt.
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); }
RGB-Raummethode
Diese Methode misst den direkten Abstand zwischen den Farben im RGB-Raum. Es berechnet den euklidischen Abstand zwischen den R-, G- und B-Komponenten der Kandidatenfarbe und der angegebenen Farbe. Die Kandidatenfarbe mit dem kleinsten Abstand wird ausgewählt.
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); }
Gewichtete Methode
Diese Methode weist den Farbton-, Sättigungs- und Helligkeitskomponenten der Farben Gewichte zu. Es berechnet einen gewichteten Abstand, indem es den Farbtonunterschied mit einer gewichteten Kombination aus Sättigung und Helligkeit kombiniert. Es wird die Kandidatenfarbe mit dem kleinsten gewichteten Abstand ausgewählt.
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); }
Basierend auf Ihren Anforderungen können Sie die Methode auswählen, die am besten zu Ihrer Anwendung passt.
Das obige ist der detaillierte Inhalt vonWie kann ich die beste Farbübereinstimmung in einem Farbarray finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!