Алгоритм перевода RGB-компонент в длину волны? Здравствуйте, кто-нибудь может поделиться идеями, насчёт того, как можно перевести значения RGB-компонент цвета в длину ЭМ-волны и обратно? Задача простая - задаётся длина волны, надо найти значения RGB, наиболее близко к нему подходящее. Ну и наоборот.
Для перевода RGB-компонент в длину волны и наоборот, можно воспользоваться формулой преобразования RGB в XYZ и XYZ в длину волны.
Преобразование RGB в XYZ:RGB -> XYZ:
X = 0.4124564 R + 0.3575761 G + 0.1804375 B
Преобразование XYZ в длину волны:Y = 0.2126729 R + 0.7151522 G + 0.0721750 B
Z = 0.0193339 R + 0.1191920 G + 0.9503041 * B
X/Y/Z -> λ:
λ = 580.024531/S + 581.353663/T + 661.372534/U + 547.960292/V
Для обратного перехода от длины волны к RGB можно воспользоваться обратной последовательностью преобразований:
Преобразование длины волны в XYZ:λ -> X/Y/Z:
Преобразование XYZ в RGB:S = 580.024531/(λ - λ)
T = 581.353663/(λ - λ)
U = 661.372534/(λ - λ)
V = 547.960292/(λ - λ)
X/Y/Z -> RGB:
R = 3.2404542 X - 1.5371385 Y - 0.4985314 Z
G = -0.9692660 X + 1.8760108 Y + 0.0415560 Z
B = 0.0556434 X - 0.2040259 Y + 1.0572252 * Z
Надеюсь, эти формулы помогут вам решить задачу по конвертации RGB в длину волны и наоборот.