Heim > Backend-Entwicklung > Golang > Wie können wir die Farbmischung von Lacken mithilfe eines Algorithmus genau modellieren?

Wie können wir die Farbmischung von Lacken mithilfe eines Algorithmus genau modellieren?

Mary-Kate Olsen
Freigeben: 2024-11-29 15:41:11
Original
627 Leute haben es durchsucht

How Can We Accurately Model Paint Color Mixing Using an Algorithm?

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

  • Farbabsorption: Farbe absorbiert bestimmte Lichtwellenlängen, wodurch die sichtbare Farbe entsteht. Blaue Farbe absorbiert beispielsweise rote und grüne Wellenlängen und reflektiert nur blaues Licht.
  • Digitale Farbmischung:Digitale Displays geben Licht ab, um Farben zu erzeugen. Beim Mischen zweier digitaler Farben ist die resultierende Farbe eine Kombination der emittierten Wellenlängen.

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.))
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage