PhysLight Explorer: sensibilidade espectral de câmera

Ferramenta PhysLight interativa: coloque espectros blackbody, LED, HMI ou laser em curvas R/G/B reais, compare dois sensores e veja metamerismo. Combina com CIE 1931, Display Check, e aulas.Curvas espectrais do projeto aberto PhysLight, obrigado à Wētā (Wētā Digital / Wētā FX), Apache-2.0.

PhysLight Explorer

Dados do lightsaber

Coloque um espectro sobre as sensibilidades R/G/B medidas de uma câmera real. Mesma luz, sensores diferentes: isso é metamerismo.

Fonte de luz

SPD de Planck · arraste o Kelvin

Temperatura de cor

5600 K
3200
5600
6500
10k
Gráfico espectral4004505005506006507001comprimento de onda (nm)SPD da luzCam. RCam. GCam. B

Canon EOS R5

RGB linear com WB

R

1.00

G

0.83

B

0.68

1.000, 0.832, 0.684

Sony ILCE-7SM3

RGB linear com WB

R

1.00

G

0.86

B

0.71

1.000, 0.855, 0.709

Humano (CIE 1931)

P3

O que um observador padrão reportaria como a cor desta SPD; câmeras raramente coincidem exatamente com isso.

ColorChecker Macbeth sob esta luz

24 patches · Ohta 1997

Quadrados aninhados como o gráfico do PhysLight: externo = resposta base, interno = comparação. Mesmo patch / mesma luz: as mudanças de cor são metamerismo (ou câmera vs CIE).

Externo · Cam. A · EOS R5Interno · Cam. B · ILCE-7SM3

Exportar matriz e LUT 3D

.nk
.cube

Matriz 3×3 por mínimos quadrados de RGB da Câmera A → alvo nos 24 patches do ColorChecker sob o iluminante atual. O Δ por patch mostra onde um mapeamento linear falha; o .cube opcional adiciona um resíduo IDW para que as cores do gráfico fiquem mais próximas do que só com a matriz. Educacional: não é um perfil de câmera de laboratório.

0.5914 0.0371 0.1577
0.2339 0.8134 -0.2338
0.0475 -0.3003 1.3613

Resíduo rel. médio: 1.6% · pior: 5.6% · EOS R5 → CIE XYZ (rel. Y) · corpo negro de 5600 K

Resíduo por patch (após a 3×3)

Mapa de calor = erro relativo % em cada patch do ColorChecker (mais escuro / avermelhado = maior falha do ajuste linear).

#PatchRel %|Δ| médiaΔ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
Pré-visualizar script do 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"
}

LUT 3D (.cube)

17³

Malha Adobe/IRIDAS (R varia mais rápido). O domínio cobre as amostras do ajuste (0 → src máx.). O modo com resíduo é mais preciso no gráfico; só matriz é um bake linear exato da 3×3.

Pré-visualizar cabeçalho do .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
Obrigado à Wētā (Wētā Digital / Wētā FX) por medir estas curvas espectrais de câmeras com o “lightsaber” do PhysLight e por disponibilizá-las como código aberto. Fonte: github.com/wetadigital/physlight (data/camera), Licença Apache 2.0. Espectros do ColorChecker: Ohta (1997) / ISO 17321-1. As curvas foram reempacotadas para esta ferramenta; veja LICENSE/ATTRIBUTION no repositório. Interface do explorador © CompStart. Uso educacional, não para produção crítica de cor. TAL COMO ESTÁ, sem garantias.