PhysLight Explorer, спектральная чувствительность камеры

Интерактивный PhysLight: спектры blackbody, LED, HMI или лазера на реальных R/G/B кривых, сравнение сенсоров и metamerism. Дополнительно CIE 1931, Display Check, и уроки.Спектральные кривые из открытого проекта PhysLight, спасибо Wētā (Wētā Digital / Wētā FX), Apache-2.0.

PhysLight Explorer

Данные «лайтсейбера»

Наложите спектр на измеренные R/G/B-чувствительности реальной камеры. Один и тот же свет, разные сенсоры: это и есть метамерия.

Источник света

SPD Планка · перетащите Кельвины

Цветовая температура

5600 K
3200
5600
6500
10k
График спектра4004505005506006507001длина волны (нм)SPD светаКам. RКам. GКам. B

Canon EOS R5

Линейный RGB с балансом белого

R

1.00

G

0.83

B

0.68

1.000, 0.832, 0.684

Sony ILCE-7SM3

Линейный RGB с балансом белого

R

1.00

G

0.86

B

0.71

1.000, 0.855, 0.709

Человек (CIE 1931)

P3

Цвет этого SPD, который дал бы стандартный наблюдатель; камеры редко совпадают с ним точно.

ColorChecker Macbeth при этом свете

24 патча · Ohta 1997

Вложенные квадраты, как на графике PhysLight: внешний = базовый отклик, вставка = сравнение. Тот же патч при том же свете: сдвиги цвета означают метамерию (или камера против CIE).

Внешний · Кам. A · EOS R5Вставка · Кам. B · ILCE-7SM3

Экспорт матрицы и 3D LUT

.nk
.cube

Матрица 3×3 по методу наименьших квадратов из RGB камеры A в целевое пространство по 24 патчам ColorChecker при текущем освещении. Δ по патчам показывает, где линейное преобразование не справляется; необязательный .cube добавляет IDW-остаток, поэтому цвета на графике ложатся ближе, чем при одной матрице. Учебный инструмент, а не лабораторный профиль камеры.

0.5914 0.0371 0.1577
0.2339 0.8134 -0.2338
0.0475 -0.3003 1.3613

Средняя отн. ошибка: 1.6% · максимальная: 5.6% · EOS R5 → CIE XYZ (отн. Y) · 5600 K, чёрное тело

Ошибка по патчам (после 3×3)

Тепловая карта = относительная ошибка в % для каждого патча ColorChecker (темнее / краснее = больший промах линейной подгонки).

#ПатчОтн. %Среднее |Δ|ΔRΔGΔB
16Red5.60.0137-0.0145-0.0124-0.0141
19Cyan4.00.0159-0.0124-0.0155-0.0198
14Blue3.10.0092+0.0076+0.0085+0.0116
7Bluish green2.80.0135-0.0111-0.0129-0.0165
11Purple2.60.0039+0.0016+0.0040+0.0061
3Light skin2.30.0105-0.0081-0.0104-0.0131
10Moderate red2.20.0073-0.0051-0.0071-0.0098
9Purplish blue2.00.0076+0.0058+0.0070+0.0099
13Orange yellow1.70.0092+0.0093+0.0087+0.0095
4Blue sky1.60.0054+0.0049+0.0051+0.0063
5Foliage1.40.0020+0.0005+0.0022+0.0033
18Magenta1.20.0043-0.0070-0.0035-0.0025
24Neutral 3.51.00.0010+0.0009+0.0009+0.0013
25Black1.00.0004+0.0003+0.0003+0.0005
8Orange0.90.0039+0.0055+0.0032+0.0031
23Neutral 50.90.0020+0.0019+0.0018+0.0024
22Neutral 6.50.90.0035+0.0033+0.0031+0.0039
15Green0.90.0022-0.0018+0.0016+0.0034
21Neutral 80.80.0050+0.0049+0.0048+0.0053
2Dark skin0.70.0010-0.0011-0.0010-0.0008
12Yellow green0.50.0025-0.0015+0.0018+0.0043
20White0.50.0051+0.0055+0.0052+0.0047
6Blue flower0.20.0010-0.0010+0.0003+0.0018
17Yellow0.20.0014-0.0016-0.0016-0.0009
Просмотр скрипта Nuke
# PhysLight Explorer → Nuke ColorMatrix
# Educational fit from measured camera spectral sensitivities × ColorChecker reflectances.
# Not a production camera profile. Validate before use.
# Fit under 5600 K blackbody; daylight-WB camera RGB → CIE XYZ (rel. Y); ColorChecker Classic (Ohta 1997) 24 patches
ColorMatrix {
 matrix {
		{ 0.59141067 0.03706286 0.15765617 }
		{ 0.23390597 0.81338272 -0.23382498 }
		{ 0.04753048 -0.30033174 1.36129747 }
 }
 name PhysLight_Canon_EOS_R5_to_XYZ
 label "EOS R5 → CIE XYZ (rel. Y) · 5600 K blackbody"
}

3D LUT (.cube)

17³

Решётка Adobe/IRIDAS (R меняется быстрее всего). Домен охватывает образцы подгонки (0 → макс. src). Режим с остатком точнее на графике; режим «только матрица» даёт точную линейную запечку 3×3.

Просмотр заголовка .cube (PhysLight_Canon_EOS_R5_to_XYZ_mat+res_17.cube)
# PhysLight Explorer → 3D LUT (.cube)
# Educational fit from measured camera spectral sensitivities × ColorChecker.
# Not a production camera profile. Validate before use.
# Order: red varies fastest (Adobe/IRIDAS).
# Fit under 5600 K blackbody; daylight-WB camera RGB → CIE XYZ (rel. Y); ColorChecker Classic (Ohta 1997) 24 patches
# Lattice = 3x3 matrix + IDW residual (fades to matrix off-chart).
# LUT_3D_SIZE 17
TITLE "PhysLight_Canon_EOS_R5_to_XYZ_mat+res_17"
DOMAIN_MIN 0.00000000 0.00000000 0.00000000
DOMAIN_MAX 1.43082121 1.43082121 1.43082121
LUT_3D_SIZE 17
0.00032601 0.00074218 0.00122484
…
# 4913 lattice lines omitted
Спасибо Wētā (Wētā Digital / Wētā FX) за измерение этих спектральных кривых камер с помощью «лайтсейбера» PhysLight и открытую публикацию. Источник: github.com/wetadigital/physlight (data/camera), Apache License 2.0. Спектры ColorChecker: Ohta (1997) / ISO 17321-1. Кривые переупакованы для этого инструмента; см. LICENSE/ATTRIBUTION в репозитории. Интерфейс обозревателя © CompStart. Учебное использование, не для цветокритичного продакшена. КАК ЕСТЬ, без гарантий.