Heim >Backend-Entwicklung >Golang >Wie können wir die Farbmischung von Lacken mithilfe eines Algorithmus genau modellieren?
Algorithmus zum Mischen von Farben in einem Farbraum
Beim Mischen physischer Farben unterscheidet sich die resultierende Farbe von dem, was man beim Mischen von Farben erwarten würde ein digitaler Bildschirm. Dies liegt daran, dass Farben durch Absorption gemischt werden, wohingegen digitales Farbmischen eine Emission beinhaltet.
Farbabsorption und digitale Farbmischung
Algorithmus für die Farbmischung im Farbraum von Farben
Farben in einer Farbe mischen Beim Farbraum werden die absorbierten Wellenlängen vom weißen Licht subtrahiert (255, 255, 255). Beispielsweise würde das Mischen von blauer Farbe (die Rot und Grün absorbiert) mit gelber Farbe (die Blau absorbiert) zu einem schlammigen Grün führen.
Alternative Lösung mit HLS-Farbraum
Alternativ Durch die Verwendung des HLS-Farbraums (Hue, Lightness, Saturation) können intuitivere Farbmischungsergebnisse erzielt werden, die unabhängig von den physikalischen Absorptionseigenschaften von sind malen.
Python-Code für die Farbmischung im HLS-Farbraum
Unten ist eine Python-Funktion, die den Durchschnitt zwischen zwei Farben im HLS-Farbraum berechnet:
import math from colorsys import rgb_to_hls, hls_to_rgb def average_colors(rgb1, rgb2): h1, l1, s1 = rgb_to_hls(rgb1[0]/255., rgb1[1]/255., rgb1[2]/255.) h2, l2, s2 = rgb_to_hls(rgb2[0]/255., rgb2[1]/255., rgb2[2]/255.) s = 0.5 * (s1 + s2) l = 0.5 * (l1 + l2) x = cos(2*pi*h1) + cos(2*pi*h2) y = sin(2*pi*h1) + sin(2*pi*h2) if x != 0.0 or y != 0.0: h = atan2(y, x) / (2*pi) else: h = 0.0 s = 0.0 r, g, b = hls_to_rgb(h, l, s) return (int(r*255.), int(g*255.), int(b*255.))
Mit dieser Funktion können wir das Ergebnis des Mischens von blauer und gelber Farbe annähern, z Beispiel:
>>> average_colors((255, 255, 0), (0, 0, 255)) (0, 255, 111)
Dieser Ansatz liefert ein intuitiveres Farbmischergebnis, das nicht durch die Absorptionseigenschaften physikalischer Farben eingeschränkt wird.
Das obige ist der detaillierte Inhalt vonWie können wir die Farbmischung von Lacken mithilfe eines Algorithmus genau modellieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!