光源スペクトル・反射率・センサー感度・色順応モデルをつないで理解する
ホワイトバランスは、単に「色味を整える機能」ではありません。観測された RGB が、光源の分光分布、被写体の反射率、撮像素子の分光感度の積として決まる以上、そこで起きているのは光学と推定の問題です。この記事では、ホワイトバランスを色温度の言い換えとしてではなく、観測色を基準白へ寄せるためのモデル化・推定・変換の問題として整理します。
ホワイトバランスは何をしているのか
「白いものが白く見える」を、カメラ系でどう実現するかという問題です。
シママ、ホワイトバランスを「白を白くする機能」だけで終わらせると、かなり本質を落とすばい。
色かぶりを取る機能、くらいの説明じゃ足りないんだね。どこから考えると整理しやすいの?
まずは、人間の視覚とカメラを分けて考えることたい。人間は照明が変わっても、ある程度は同じ紙を同じ白として感じ続ける。これは視覚の色順応によるもので、入力そのものが一定だからではなか。
でもカメラのセンサーは、そういう順応を持たないよね。
そうたい。センサーは入ってきた分光放射を三つのチャネルへ射影しとるだけやけん、光源が変われば観測 RGB は普通に変わる。同じ白紙でも、昼光と電球色で値はずれる。
人間の視覚は、照明が変わってもある程度は「同じ紙は同じ白」と感じ続けます。これは視覚系の色順応によるもので、観測された刺激そのものが一定だからではありません。一方、カメラのセンサーは、入ってきた分光放射をそのまま三つのチャネルへ射影するだけなので、光源が変われば観測 RGB は素直に変わります。
したがって、ホワイトバランスの本質は光源変化によりずれた観測色を、ある基準白に対して補正することです。ここでいう「白いものが白く見える」とは、物理的には「基準となる中立反射体が、出力画像上で無彩色に近い座標へ写る」ことを意味します。
ここで大切なのは、ホワイトバランスが「真の色」を完全に復元する魔法ではないことです。三つのチャネルだけから、光源・反射率・センサー感度の絡み合った影響をほどくのは本質的に難しく、そこでさまざまな仮定が導入されます。
観測色が決まる物理モデル
入射光スペクトル × 反射率 × センサー感度の波長積分で各チャネル出力が決まります。
まず式で固定しようか。各チャネルの出力は、光源スペクトル $E(\lambda)$、反射率 $R(\lambda)$、センサー感度 $S_k(\lambda)$ の積を波長で積分したものになるたい。
単純に RGB を読むというより、スペクトルを三つの応答関数へ押し込んでいる感じなんだね。
被写体表面からカメラへ届く分光放射は、単純化すると、光源の分光分布 $E(\lambda)$ と被写体反射率 $R(\lambda)$ の積で表せます。さらに、センサーの各チャネル $k \in \{R,G,B\}$ は分光感度 $S_k(\lambda)$ を持つので、観測チャネル出力 $c_k$ は次式で書けます。
$$c_k=\int_{\Lambda}E(\lambda)R(\lambda)S_k(\lambda)\,d\lambda$$
ここで $\Lambda$ は可視域を含む波長範囲です。この式が示しているのは、観測色が「光源だけ」で決まるのでも「物体色だけ」で決まるのでもなく、その両者とセンサー特性の合成結果として決まるということです。
ベクトルでまとめると、
$$\mathbf{c}=\begin{bmatrix}c_R\\c_G\\c_B\end{bmatrix}=\int_{\Lambda}E(\lambda)R(\lambda)\begin{bmatrix}S_R(\lambda)\\S_G(\lambda)\\S_B(\lambda)\end{bmatrix}d\lambda$$
と書けます。したがって、光源スペクトル $E(\lambda)$ が変われば、同じ $R(\lambda)$ を持つ物体でも $\mathbf{c}$ は変化します。ホワイトバランスは、この変化を何らかの形で打ち消そうとする処理です。
離散化すると何が見えるか
実装では、波長を有限個のサンプルに離散化して
$$c_k\approx\sum_{i=1}^{N}E_iR_iS_{k,i}\Delta\lambda$$
と扱うことが多くなります。すると、ひとつの RGB 値が多数の波長成分の重ね合わせであることがよりはっきり見えます。ここから分かるのは、RGB の三値だけでは元の分光分布を一意に復元できない、ということです。後で述べるメタメリズムや不良設定性は、この段階ですでに芽を持っています。
この離散化の見方をすると、RGB 三つしかないのに、もとのスペクトル側はずっと自由度が高いことがよく分かるやろ。
うん。だから「三つの値から全部戻せる」とは言えないんだね。ホワイトバランスが推定問題になる理由が見えてきたよ。
色温度とホワイトバランスの違い
色温度は光源の近似的な記述であり、ホワイトバランス処理そのものではありません。
ここで色温度が出てくるけど、色温度とホワイトバランスは同じものじゃなか。色温度は光源を記述するための座標の一つたい。
写真では「ケルビンを合わせる」とよく言うけど、それで全部説明できるわけじゃないんだね。
写真ではしばしば「色温度を合わせる」と言いますが、色温度とホワイトバランスは同じものではありません。色温度は、もともと黒体放射の色を温度で表した概念です。理想黒体の分光分布 $B(\lambda,T)$ は温度 $T$ の関数で与えられます。
$$B(\lambda,T)=\frac{2hc^2}{\lambda^5}\frac{1}{\exp\!\left(\frac{hc}{\lambda k_B T}\right)-1}$$
この式は、温度が変わると分光分布全体の形が変わることを示しています。白熱灯のように黒体放射へ比較的近い光源では、色温度はかなり意味のある指標です。
しかし、現実の多くの光源は理想黒体ではありません。そこで用いられるのが相関色温度です。相関色温度は、ある光源の色度に最も近い黒体放射の温度を指す量であり、分光分布そのものを完全に代表するわけではありません。
つまり、二つの光源が同じ 5000 K 近辺の相関色温度を持っていても、分光分布が同じとは限りません。特に LED や蛍光灯のような線スペクトル成分や鋭いピークを持つ光源では、色温度だけで色かぶりや演色性を語り切れません。
したがって、ホワイトバランスを「色温度を合わせること」だけで説明するのは不十分です。ホワイトバランスは、あくまでその光源下で得られた観測色を、どの白へ寄せるかという変換処理であり、色温度はその一部を近似的に説明する補助的な座標にすぎません。
白色点推定の考え方
ホワイトバランスは、まず「照明の白」をどう推定するかという問題から始まります。
ホワイトバランス補正を行うには、まず現在の画像がどのような光源で照らされているか、あるいは少なくとも「白はどの方向にずれているか」を推定しなければなりません。ここでよく出てくるのが Gray World 仮説と White Patch 仮説です。
Gray World 仮説
画像全体の平均反射が灰色に近いと仮定する考え方です。画像中の全画素平均を $\bar{\mathbf{c}}=[\bar{c}_R,\bar{c}_G,\bar{c}_B]^T$ とすると、理想的には
$$\bar{c}_R\approx\bar{c}_G\approx\bar{c}_B$$
になるはずだ、という発想です。したがって、この平均が偏っていれば、その偏りを照明色由来とみなして打ち消します。計算が軽く、古典的 AWB の代表例ですが、画像全体が特定の色で支配される場面では簡単に外れます。
White Patch 仮説
画像中のもっとも明るいパッチ、あるいは局所的に白に近い領域が基準白を表していると考える方法です。チャネル最大値を用いれば、
$$\mathbf{w}=\begin{bmatrix}\max c_R\\\max c_G\\\max c_B\end{bmatrix}$$
を推定白色点として扱えます。ただし、飽和、鏡面反射、ノイズ、高輝度の有彩色物体に強く影響されるため、これも万能ではありません。
なぜ推定が外れるのか
本質的には、画像だけから光源と反射率を同時に分離しようとしているからです。青空と海ばかりの場面、赤い舞台照明、緑の森林のクローズアップでは、画像の統計自体が強いバイアスを持っています。そのため、画素分布から基準白を推定するアルゴリズムは、被写体の色分布に強く依存します。
「画像の平均は灰色のはず」「一番明るいところは白のはず」みたいな仮説は、場面が偏るとすぐ崩れるたい。海ばかり、森ばかり、ライブ照明、どれも危うい。
補正が外れるというより、その前の「白の推定」が外れていることがあるわけだね。
その通りたい。ホワイトバランスは補正式の話に見えて、半分以上は推定問題と思ったほうがよか。
RGBゲイン補正と対角モデル
多くのホワイトバランスは、まずチャネルごとのゲイン補正として近似されます。
ホワイトバランスの実装で最も基本的な近似は、RGB チャネルごとにスケーリングをかける対角行列モデルです。観測 RGB ベクトルを $\mathbf{c}$、補正後を $\mathbf{c}’$ とすると、
$$\mathbf{c}’=\mathbf{D}\mathbf{c},\qquad\mathbf{D}=\begin{bmatrix}g_R&0&0\\0&g_G&0\\0&0&g_B\end{bmatrix}$$
のように書けます。ここで $g_R,g_G,g_B$ は各チャネルの補正ゲインです。もし推定白色点 $\mathbf{w}=[w_R,w_G,w_B]^T$ をニュートラル $[1,1,1]^T$ へ送りたいなら、単純には
$$\mathbf{D}=\begin{bmatrix}1/w_R&0&0\\0&1/w_G&0\\0&0&1/w_B\end{bmatrix}$$
と置けます。これは、白のずれをチャネル独立なゲイン差として吸収する考え方です。
von Kries 型の考え方
色順応をチャネル独立のゲイン制御として近似する考え方は、von Kries 型モデルとして広く使われます。ただし、どの三刺激空間で対角化するのが自然かは重要な論点です。センサー RGB そのままで対角補正する場合もあれば、LMS あるいはある種の色順応空間へ変換してから対角補正し、再び表示空間へ戻す場合もあります。
一般形は $$\mathbf{x}’=\mathbf{M}^{-1}\mathbf{D}\mathbf{M}\mathbf{x}$$ です。ここで $\mathbf{x}$ は元の色ベクトル、$\mathbf{M}$ は補正しやすい空間への変換、$\mathbf{D}$ はその空間での対角ゲインです。つまり、ホワイトバランスの本質は単に RGB を掛けることではなく、どの座標系で掛けると光源変化を最も素直に表現できるかという設計問題でもあります。
センサ空間と表示RGB空間は違う
ここを混同すると議論が崩れます。カメラ内部で扱う RAW のセンサ値は、ディスプレイ用の sRGB とは別物です。RAW 現像のホワイトバランスは、通常、色変換やトーンカーブより前の比較的素直な段階で作用します。いっぽう JPEG 撮って出しでは、すでに複数の画像処理を経た後の見え方としてホワイトバランスが固定されていることが多く、後からの自由度は下がります。
対角モデルは便利やけど、「どの空間で対角に見るか」まで含めて初めて話が閉じるたい。RAW のセンサ空間と表示用 RGB は一緒じゃなかけんね。
単に R を上げて B を下げる、みたいな話よりずっと深いんだね。どの段階で補正するかが意味を変えてしまうんだ。
限界と破綻条件
ホワイトバランスが原理的に難しいのは、情報の不足と仮定の脆さのためです。
メタメリズム
異なる分光分布でも、同じ三刺激値に写ることがあります。これがメタメリズムです。RGB が一致しても分光分布は一致しないので、三チャネル情報だけから「本当のスペクトル」を一意に復元することはできません。
三チャネル観測の限界
前述の積分モデルから分かるように、観測は高次元のスペクトル情報を三次元へ圧縮したものです。したがって、光源と反射率を同時に求める問題は本質的に不良設定です。何らかの先験知識、統計仮定、学習データ、あるいは色票のような基準が必要になります。
複数光源環境
教室の窓際、室内照明と外光が混ざる場面、舞台照明などでは、単一の白色点では画像全体を説明できません。このとき単一ゲインのホワイトバランスは、ある領域を直せば別の領域が崩れる、という構造を避けられません。
白が存在しない場面
基準白に近い物体が画面内にない場合、White Patch 的な推定は不安定になります。また、単色支配の場面では Gray World も外れやすくなります。つまり「何を白とみなすか」が画像自体に含まれていない場面では、問題設定そのものが厳しくなります。
結局、破綻する条件は「白が見つからん」「光源が一つじゃない」「三チャネルではスペクトルを戻せん」の三つが大きかね。
失敗例を並べると、「アルゴリズムが雑だから」だけじゃないって分かるね。問題設定そのものが厳しいんだ。
RAW現像・実装・写真表現との関係
工学的に中立な補正と、写真として好ましい色は必ずしも一致しません。
RAW では、センサ空間に近い段階でホワイトバランスを調整できるため、チャネルゲイン補正の意味が比較的はっきりしています。いっぽう JPEG 撮って出しでは、デモザイク、色変換、トーンマッピング、ノイズ処理などが絡んだ後の結果を見ることになるため、「後から WB を動かす」ことの物理的意味はやや薄くなります。
オートホワイトバランスは、画像統計、顔検出、シーン認識、学習ベースの照明推定などを組み合わせて、基準白を推定する仕組みだと考えると分かりやすいです。古典的には Gray World や White Patch のような仮説があり、近年は学習ベースの方法も広く使われます。
ただし、工学的に中立な補正、つまり「照明由来の色偏りを最小化する補正」が、写真表現として常に望ましいとは限りません。夕景の暖色感、ライブ会場の色光、室内の電球色の雰囲気は、厳密に中立化するとむしろ不自然に見えることがあります。したがって、ホワイトバランスには計測としての中立化と表現としての演出の二つの軸があります。
工学的には中立へ寄せるのが筋でも、写真としてはその場の暖色や色光を残したいことがある。ここで「正しい」と「好ましい」は分かれるたい。
理屈を知った上で、最後にどこまで中立を目指すかを選ぶわけだね。ここは写真の面白さともつながるんだ。
まとめ
ホワイトバランスは、光源変動下の観測色を基準白へ寄せる推定・変換の問題です。
ホワイトバランスを工学的に見るなら、まず観測 RGB が $E(\lambda)$、$R(\lambda)$、$S_k(\lambda)$ の積分で決まることを押さえる必要があります。その上で、光源変化により生じた白色点のずれを推定し、対角モデルなどで補正する、という流れになります。
色温度はこの問題を理解するための有力な道具ですが、それだけで十分ではありません。特に実在光源の分光分布、メタメリズム、複数光源、被写体依存の統計バイアスを考えると、ホワイトバランスは単純な Kelvin 指定よりずっと広い問題です。
読み終えた時点で押さえておきたいのは、ホワイトバランスとは、光源が変わることで変動した観測色を、ある仮定のもとで補正する推定・変換の問題であるということです。そして、色温度はその一部を説明する座標ではあっても、ホワイトバランス全体をそれだけで語るのは不十分である、という点です。