在繪畫色彩空間中混合顏色的演算法
混合物理顏料時,產生的顏色與混合顏色時可能期望的顏色不同數位螢幕。這是因為油漆通過吸收進行混合,而數位混色涉及發射。
油漆吸收和數位混色
油漆顏色空間中的顏色混合演算法
在油漆中混合色彩色彩空間涉及從白光中減去吸收的波長(255、255、 255)。例如,將藍色顏料(吸收紅色和綠色)與黃色顏料(吸收藍色)混合會產生渾濁的綠色。
使用HLS 色彩空間的替代解決方案
替代,使用HLS(色相、亮度、飽和度)色彩空間可以提供更直觀的混色結果,與物理吸收特性無關Paint.
HLS 色彩空間中顏色混合的Python程式碼
下面是一個Python 函數,用來計算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.))
使用這個函數,我們可以近似混合藍色和黃色顏料的結果,對於例子:
>>> average_colors((255, 255, 0), (0, 0, 255)) (0, 255, 111)
這種方法提供了更直觀的混色結果,不受物理油漆吸收特性的限制。
以上是我們如何使用演算法準確地模擬油漆顏色混合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!