PhysLight Explorer: カメラ分光感度

インタラクティブPhysLight:blackbody・LED・HMI・レーザーのスペクトルを実測カメラR/G/B曲線に重ね、センサー比較とメタメリズムを確認。 合わせて使う 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波長 (nm)光源SPDカメラ Rカメラ Gカメラ B

Canon EOS R5

WB後のリニアRGB

R

1.00

G

0.83

B

0.68

1.000, 0.832, 0.684

Sony ILCE-7SM3

WB後のリニアRGB

R

1.00

G

0.86

B

0.71

1.000, 0.855, 0.709

人間の視覚 (CIE 1931)

P3

標準観測者がこのSPDの色として報告するであろう値です。カメラがこれと完全に一致することはほとんどありません。

この光源下のMacbeth ColorChecker

24パッチ · Ohta 1997

PhysLightのチャートと同じネスト型の正方形です:外側 = ベースのレスポンス、内側 = 比較対象。同じパッチ・同じ光源での色のずれはメタメリズム(またはカメラとCIEの差)です。

外側 · カメラA · EOS R5内側 · カメラB · ILCE-7SM3

マトリクスと3D LUTの書き出し

.nk
.cube

現在の照明下にあるColorChecker 24パッチについて、カメラAのRGBから目標値への最小二乗3×3を求めます。パッチごとのΔは線形変換が外れる箇所を示します。任意の.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をご覧ください。エクスプローラーのUI © CompStart。教育目的であり、色の厳密さが求められる本番用途向けではありません。現状のまま提供され、いかなる保証もありません。