Maison > développement back-end > Golang > Comment pouvons-nous modéliser avec précision le mélange de couleurs de peinture à l'aide d'un algorithme ?

Comment pouvons-nous modéliser avec précision le mélange de couleurs de peinture à l'aide d'un algorithme ?

Mary-Kate Olsen
Libérer: 2024-11-29 15:41:11
original
569 Les gens l'ont consulté

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

Algorithme de mélange de couleurs dans un espace colorimétrique de peinture

Lors du mélange de peintures physiques, la couleur résultante diffère de ce à quoi on pourrait s'attendre lors du mélange de couleurs sur un écran numérique. En effet, la peinture se mélange par absorption, alors que le mélange numérique des couleurs implique une émission.

Absorption de la peinture et mélange numérique des couleurs

  • Absorption de la peinture : La peinture absorbe des longueurs d'onde spécifiques de la lumière, ce qui donne la couleur visible. Par exemple, la peinture bleue absorbe les longueurs d'onde rouges et vertes, réfléchissant uniquement la lumière bleue.
  • Mélange numérique des couleurs :Les écrans numériques émettent de la lumière pour créer des couleurs. Lors du mélange de deux couleurs numériques, la couleur résultante est une combinaison des longueurs d'onde émises.

Algorithme de mélange de couleurs dans l'espace colorimétrique de la peinture

Mélange des couleurs dans une peinture L’espace colorimétrique consiste à soustraire les longueurs d’onde absorbées de la lumière blanche (255, 255, 255). Par exemple, mélanger de la peinture bleue (absorbant le rouge et le vert) avec de la peinture jaune (absorbant le bleu) donnerait un vert boueux.

Solution alternative utilisant l'espace colorimétrique HLS

Alternativement , l'utilisation de l'espace colorimétrique HLS (Teinte, Légèreté, Saturation) peut fournir des résultats de mélange de couleurs plus intuitifs, indépendants des propriétés d'absorption physique de paint.

Code Python pour le mélange de couleurs dans l'espace colorimétrique HLS

Vous trouverez ci-dessous une fonction Python qui calcule la moyenne entre deux couleurs dans l'espace colorimétrique HLS :

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.))
Copier après la connexion

En utilisant cette fonction, nous pouvons approximer le résultat du mélange de peinture bleue et jaune, par exemple exemple :

>>> average_colors((255, 255, 0), (0, 0, 255))
(0, 255, 111)
Copier après la connexion

Cette approche fournit un résultat de mélange de couleurs plus intuitif qui n'est pas limité par les propriétés d'absorption des peintures physiques.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal