Melexis colourLIB RGB LED Color Calibration Pipeline

Host入力
R, G, B
+ Intensity (0–100%)
cfl_RgbIToxyY
RGB→XYZ (CIE1931)
XYZ→xy色度座標
Y_max計算 / ガマットチェック
CIE xyY
x = 色度
y = 色度
Y = 輝度 [lm]
cfl_XyzToDutyCycle
xyY→XYZ
温度補償
M_SLOPE逆行列でPWM算出
PWM出力
PWM_R / G / B
+ 電流源選択

ガマット三角形データ (xyY参照)

SLOPECFL_SLOPE_COLORGAMUT OFFSETCFL_OFFSET_COLORGAMUT MAXCFL_MAX_INTENSITY / WHITE_POINT

キャリブレーションデータ (EEPROM 62B/モジュール)

行列CFL_M_SLOPE (3×3) / CFL_B_OFFSET (3×3) 温度CFL_CALIB_TEMP 補償CFL_REDTEMP / GREEN / BLUE [3][141] -40〜100℃

RGB入力が同じでも、カラープロファイルで出力色は変わる

R, G, B は 0〜max のデジタル値。同じ値でもプロファイルにより出力色が異なる。

sRGB

sRGB gamut
R(0.640, 0.330) G(0.300, 0.600) B(0.150, 0.060)

PC・モニター・スマホ

DCI-P3

DCI-P3 gamut
R(0.680, 0.320) G(0.265, 0.690) B(0.150, 0.060)

映画・Apple Display

Rec.2020

Rec.2020 gamut
R(0.708, 0.292) G(0.170, 0.797) B(0.131, 0.046)

4K/8K HDR テレビ

Melexis IC

Melexis任意色域

R / G / B 任意設定
使用LEDに合わせた
任意の色域を設定

RGB → CIE xyY — 色と輝度を分離する

CIE xy色度図とLEDガマット三角形

なぜ xyY に変換するのか

RGB はデバイス依存 (同じ値でもLED種・プロファイルで色が違う)。
CIE xyY はデバイス非依存:
・xy = 色度 (何色か) を2次元座標で表現
・Y = 輝度 (どれだけ明るいか) を独立保持
→ 色と明るさを分離して独立に制御できる。

分離したことで可能になること

Color Fading CIE xy平面上を直線で遷移 → 自然な色変化。遷移中も Y は一定。

Intensity Fading Yだけを指数カーブで遷移 → 目にリニアな明暗。色度 (xy) は不変。

図: CIE xy色度図上のLEDガマット三角形。個体A/B/Cで三角形が異なる = 個体差。

Color Fading — 目標色を書き込むだけでICが自動遷移

Color Fading 図

挙動

現在色 A で目標色 B を書き込むだけで、IC が A → B を自動遷移。

軌跡

CIE xy 上を均一な Δt で直線遷移 = 人の目に自然な色変化。
遷移中も輝度 (Y) は一定。

A1234B

Intensity Fading — 目標輝度を書き込むだけでICが自動遷移

Intensity Fading 図

挙動

A (80%) で B (0%) を書き込むだけで IC が自動的に消灯。

カーブと色維持

IC 出力は指数カーブ。
人の目にはリニアに消灯して見える。

遷移中も色度 (xy) は不変 → 色ズレなしで消灯

CIE 1931 等色関数 — 人間の目の感度曲線とLEDスペクトル

等色関数とLEDスペクトル

色 = 3センサーの反応値の比率

人の目には3種類のセンサー (錐体) がある。色とはこの3センサーの反応値の比率。

LED が光るといろんな波長の光がまとめて目に入る。各センサーは得意な波長で強く、苦手な波長で弱く反応する。全波長からの刺激を合算した値がそのセンサーの反応値。

XYZ はこの3センサー反応値の数学モデル。感度関数 x̅(λ), y̅(λ), z̅(λ)。

積分式

X = ∫ P(λ) × x̅(λ) dλ (赤系) Y = ∫ P(λ) × y̅(λ) dλ (輝度) Z = ∫ P(λ) × z̅(λ) dλ (青系)

LED個体ばらつきデータ — duty vs XYZ 出力の線形関係

duty vs XYZ

PWM duty に対する XYZ 出力は線形。傾き (m) と切片 (b) が個体ごとに異なる = ばらつき。

colourLIB の基本モデル — 目標 XYZ を R/G/B PWM duty に変換する線形式

X_target = mRx × R_duty + mGx × G_duty + mBx × B_duty Y_target = mRy × R_duty + mGy × G_duty + mBy × B_duty Z_target = mRz × R_duty + mGz × G_duty + mBz × B_duty

個体固有の m 行列を工場で測定・格納

  • 分光器+積分球で duty vs XYZ を測定
  • 3×3 の m 行列 (9 パラメータ) を個体ごとに算出
  • EEPROM に格納し、初期化時に IC 内部へロード
  • 製造ばらつき (波長・効率) を m 行列に封じ込める

colourLIB は逆行列演算で PWM を算出

  • Host は目標 XYZ (xyY 経由) を指定
  • IC 内で PWM = M⁻¹ · XYZ_target
  • モジュールごとに異なる M⁻¹ が個体差を打ち消す
  • 結果: 全モジュールが同じ XYZ 座標を再現

オプション機能 — 必要に応じて有効化できる 2 つの拡張

コア (オフセット無し線形モデル) に加えて、用途に合わせて選択可能。

① オフセット補正 (y = mx + b)

効果
・低 PWM 域の色再現精度が向上
・暗い色・低輝度シーンで正確な色
・LED 漏れ電流・暗電流の寄与を補正

コスト / 条件
・EEPROM に b offset (3×3=9個) 追加格納
・キャリブレーション時の 2 点測定
・2 電流源 (6mA / 30mA) ごとに m, b を保持可能

詳細 → 次スライド

② Intensity パラメータ

効果
・lm 単位の絶対輝度を指定可能
・OEM が「この色を 0.5 lm で」と仕様化できる
・モジュール間の輝度均一性が保証される

コスト / 条件
・EEPROM に Yr_max, Yg_max, Yb_max を追加格納
・キャリブレーション時に積分球で lm を実測
・Host は R, G, B に加えて intensity を渡す

詳細 → 最終スライド

機能① オフセット補正 — y = mx + b (低PWM域の精度向上)

フォワードモデル (XYZ出力 = 各LEDの m×duty + b の足し合わせ)

X_target = mRx·Rduty + mGx·Gduty + mBx·Bduty + (bRx+bGx+bBx) Y_target = mRy·Rduty + mGy·Gduty + mBy·Bduty + (bRy+bGy+bBy) Z_target = mRz·Rduty + mGz·Gduty + mBz·Bduty + (bRz+bGz+bBz)

この式を逆算 (CFL_M_SLOPE の逆行列) して PWM duty を求める。モジュール毎に m, b が異なる → 同じ XYZ_target でも異なる PWM duty。

m と b の意味

m (slope) = 傾き
PWMに対する XYZ 出力の変化率。2点測定 (6mA/30mA) から算出。

b (offset) = 切片
PWM=0 でも残る値。LED 漏れ電流・暗電流に起因。

→ m, b を EEPROM (62B/モジュール) に格納。

切片 (b) が精度に与える影響

高 PWM 域: m × PWM が支配的。b の影響は相対的に小さい。

低 PWM 域: m × PWM が小さい。b の無視による誤差が相対的に大きい。

→ 暗い色 / 低輝度の色再現精度に差が出る。

Melexis の優位性

y = mx + b モデルを採用 → 低PWM域でも高精度な色再現。

2 電流源構成 (6mA / 30mA) 対応 → ダイナミックレンジ拡大。各電流源ごとに m, b を保持。

→ 全輝度領域で正確な色再現。

機能② Intensity パラメータ — 絶対輝度制御 (lm 単位指定)

cfl_RgbIToxyY( R, G, B, intensity ) の輝度計算

最大輝度: Y_max = R × Yr_max / (R+G+B) + G × Yg_max / (R+G+B) + B × Yb_max / (R+G+B) 実輝度: Y = intensity / 10000 × Y_max (intensity: 0〜10000 = 0〜100%) Yr_max, Yg_max, Yb_max = 各LED色の最大輝度 [lm] (キャリブレーション値)

lm 単位の絶対輝度指定

I% と Y_max から実ルーメン値を算出: Y [lm] = I/100 × Y_max

例: Y_max = 2.0 lm のモジュールで I=25% → Y=0.5 lm (仕様通り)。OEM が「0.5 lm」と仕様を決めればその通りに出る。

モジュール間の輝度均一性

各モジュールの Y_max はキャリブレーション済み。全モジュールに I = 50% を指定 → 個体差に関わらず同じ実ルーメン値。

OEM は「この色をこの明るさで」と指定するだけ → 製造ばらつきは IC が吸収。

    1 / 11
    colourLIB · ESC=目次 · ←→=移動