„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie finde ich die nächste Farbe in einem Farbarray?

Wie finde ich die nächste Farbe in einem Farbarray?

Gepostet am 2025-03-23
Durchsuche:618

How to Find the Closest Color in a Color Array?

Ermittlung der engsten Farbe in einem Array

Vergleich der Farben und der Identifizierung der nächsten Übereinstimmung in einem Array ist eine gemeinsame Aufgabe in Grafikanwendungen. In diesem Artikel werden wir drei verschiedene Methoden untersuchen, um dies zu erreichen:

Distanzmetriken

1. Nur Hue-Nur-Vergleich:

Diese Methode berücksichtigt nur die Farben der Farben, die Sättigung und Helligkeit ignorieren. Die Farbtonentfernung wird unter Verwendung einer einfachen Subtraktion berechnet, und der nächstgelegene Farbton wird bestimmt, indem die minimale Distanz gefunden wird.

2. RGB Distanz:

Diese Methode misst die direkte Distanz zwischen den RGB -Werten der Farben. Der Farbunterschied wird als euklidische Entfernung im RGB -Raum berechnet, und die engste Farbe wird gefunden, indem dieser Unterschied minimiert wird.

3. Gewichteter Farbton, Sättigung und Helligkeitsvergleich:

Diese Methode kombiniert Farbton, Sättigung und Helligkeit auf gewichtete Weise. Die wahrgenommene Helligkeit wird berechnet und eine Farbzahl basierend auf Sättigung und Helligkeit berechnet. Die nächstgelegene Farbe wird bestimmt, indem die gewichtete Summe des Farbunterschieds und der Farbtonentfernung minimiert wird. int conthestColor1 (Liste Farben, Farbziel) { 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 -Abstandvergleich int conthestColor2 (Liste Farben, Farbziel) { var colordiffs = colors.select (n => colordiff (n, target)). min (n => n); return colors.findIndex (n => colordiff (n, target) == colordiffs); } // gewichteter Farbton, Sättigung und Helligkeitsvergleich int conthestColor3 (Liste Farben, Farbziel) { float hue1 = target.gethue (); var num1 = colornum (Ziel); var diffs = colors.select (n => math.abs (colornum (n) - num1) Gethuedistanz (n.gethue (), hue1)); var diffmin = diffs.min (x => x); return diffs.tolist (). findIndex (n => n == diffmin); }

helfer functions

// Farbhelligkeit wie wahrgenommen: float getBrightness (Farbe c) => (C.R * 0,299F C.G * 0,587F C.B * 0,114F) / 256F; // Abstand zwischen zwei Farbtönen: float gethuedistance (float hue1, float hue2) => math.abs (hue1 - hue2)> 180? 360 - math.abs (hue1 - hue2): math.abs (hue1 - hue2); // gewogen durch Sättigung und Helligkeit: float colornum (Farbe c) => c.getSaturation () * faktoren Getbrightness (c) * faktorbri; // Entfernung im RGB -Raum: int colordiff (Farbe C1, Farbe c2) => (int) math.sqrt ((c1.r - c2.r) * (c1.r - c2.r) (c1.g - c2.g) * (c1.g - c2.g) (c1.b - c2.b) * (c1.b - c2.b); Metrik hängt von der spezifischen Anwendung ab. Wenn der Farbton die primäre Überlegung ist, reicht der Nur-Farbton-Vergleich aus. Für allgemeinere Farbanpassungen liefern die RGB -Entfernung oder die gewichtete Farbton-, Sättigungs- und Helligkeitsvergleichsmethoden genauere Ergebnisse.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3