CMT: メインカメラに合わせる


今回は、CMT: Camera Matching Transformについて説明します。これは、Bカメ以降のサブカメラの色や階調を、メインカメラのAカメに合わせるための変換のことです。イン前に作成しておけば、撮影現場、編集、VFX、グレーディングにて、カメラ間の差が最小化された状態で作業を行えるため、クリエイティブに集中できる、というメリットがあります。

カメラの差を除去するためには、ACESのIDT(Input Device Transform)が知られており、皆さんも日常的に使用していると思います。IDTを適用してACESに変換すれば、どんなカメラも色空間としては共通のものになります。しかし、残念ながら、IDTを適用してもカメラの差は残っています。

例を示します。各カメラについて、同じ条件、同じ位置でマクベスチャートを撮影し、IDTを含む、ACESの標準パイプラインでRec.709に変換しました。

Venice2をメインカメラとします。

メインカメラ Venice2 のマクベスチャート

このマクベスチャートの各色の中央部を四角に切り抜き、下記の画像を作成します。

Venice2 の各色の中央部を切り抜いた画像

この画像を他のカメラの画像の上に貼り付けて、違いを確認してみようと思います。いくつかのカメラを列挙します。

Alexa35をResolveで現像&IDT適用

まずはAlexa35です。カラーパイプラインは下記です。基本的には他のカメラも同じです。

Venice2の画像を重ねたAlexa35の画像は下記です。他のカメラも同様に作成しています。

Alexa35をResolveで現像&IDT適用

各パッチの中央部に見える、正方形の内側がVenice2、外側がAlexa35のデータです。この画像でわかるように、グレーパッチも含め、すべての色で有意な差が観察されます。

DJI X9 CinemaDNGをResolveで現像&IDT適用

DJI X9 CinemaDNGをResolveで現像&IDT適用

GoPro HERO12 GPLogにNetflix作成のCustom IDTを適用

GoPro HERO12 GPLogにNetflix作成のCustom IDTを適用

iPhone15Pro AppleLogにResolveでIDT適用

iPhone15Pro AppleLogにResolveでIDT適用

いかがでしょうか。かなりの差に感じるのではないでしょうか。これらはすべて、メーカー、あるいはユーザーが作成したIDTを適用し、共通のACESの色空間を経由してRec.709に変換されています。これらの違いは、いろいろな要因がありますが、大きくは露出とホワイトバランスの差である、と考えられます。

露出とホワイトバランスを合わせる

次に、マクベスチャートの18%グレーを使って、露出およびホワイトバランスを完全に一致させてみます。具体的には、ACES AP0(リニアの色空間)上で、グレーを一致させる係数を求め、画像全体に適用する、という方法です。撮影時に絞りおよびホワイトバランスを調整するのと、ほぼ同じ結果となる方法です。

「Exp/WB」は上記方法でグレーを一致させたもの、「IDT only」は先のIDTのみ適用したものを表示します。比較してみてください。

Alexa35のグレー一致

まずはAlexa35から見てみましょう。カラーパイプラインは下記になります

Venice2の画像を重ねたAlexa35の画像は下記です。他のカメラも同様に作成しています。

右下から左へ三番目のグレーチャートが完全に一致するように、露出およびホワイトバランスを調整する変換を適用しました。グレースケールだけでなく、カラーチャートの差も、かなり小さくなっていることがわかります。このカメラの場合は、露出およびホワイトバランスの調整で、大部分の誤差は除去できることがわかります。しかしながらカラーチャートには若干の差異が確認できます。

DJI X9 CinemaDNGのグレー一致

GoPro HERO12 GPLogのグレー一致

iPhone15Pro AppleLogのグレー一致

いかがでしょうか。露出、ホワイトバランスを合わせただけで、かなりVenice2に近づいたことが確認できました。カメラによっては色の違いがまだ大きいものもありますが、少なくともグレースケールはかなり近い状態になっていることがわかります。

ここで行った、露出・ホワイトバランス調整変換は、メーカーの違い、レンズの違い、個体の違いを反映しており、これを適用するだけでも、カメラ間の違いをかなり低減できていることがわかります。

リニアマトリクスを加える

さらに残存する色の違いを低減するために、リニアマトリクス、という手法を追加してみます。ACESリニアの色空間で、メインカメラのVenice2の色になるべく近づけるために、RGB 3×3のマトリクス、というものを算出して適用します。カラーパイプラインは下記です。

「CMT(MTX)」はマトリクスを使用して誤差を最小化したもの、「Exp/WB」は露出・ホワイトバランスのみでグレーを一致させたもの、「IDT only」はIDTのみ適用したものです。比較してみてください。

Alexa35のCMTによる一致

DJI X9 CinemaDNGのCMTによる一致

GoPro HERO12 GPLogのCMTによる一致

iPhone15Pro AppleLogのCMTによる一致

いかがでしょうか。残存していた微妙な色の違いも、かなり削減されたのではないでしょうか。

もちろん、実際の撮影では、カメラの画角の違いや、タイミングの違いにより、さまざまなばらつきが乗ってきます。ですが、上記のようにカメラそのものの違いを除去しておくことで、後工程の作業のしやすさ、余計な調整の手間の削減につながってくると思います。

CMT作成ツールを試す

実際にCMTを作成するプロセスを体験していただくために、ツールを用意しました。メインカメラをAlexa35として、各種カメラのデータを用意しました。カメラで撮影したマクベスチャート素材があれば、それをアップロードして使用することもできます。

Camera Matching Toolを開く

ページを開くと、手順を説明するダイアログが表示されます。基本的にはその指示にしたがっていけば、動的にCMTを作成し、適用するプロセスを体験できます。

CMTツールの手順ダイアログ

露出や色温度をわざと動かす手段も用意しており、差が大きい場合のシミュレーションもできます。

CMTツールの露出と色温度の調整

作成したCMTを適用して、メインカメラとどの程度一致したか、グラフで確認できます。

CMTのマッチング結果グラフ

CMTのオン・オフを切り替えて画像の違い、グラフの違いを確認できます。生成されたCMTはローカルにダウンロードすることもできます。

CMTのオン・オフ、表示、保存ボタン

CMTはCLFという新しいタイプのLUTフォーマットで記載されています。原則、ACES AP0入出力が前提になっています。露出補正、ホワイトバランス補正、リニアマトリクス調整はそれぞれ別のブロックに記載されているので、編集して一部の補正のみ利用することもできます。

CAMERA MATCHING TRANSFORM · CLF

CMTを構成する3つの補正

<?xml version="1.0" encoding="UTF-8"?>
<ProcessList id="2aeb9b79-72f8-4e72-a070-c99d82526649" compCLFversion="3">
  <Description>Source image: iPhone15ProBM AppleLogRec2020.dpx; IDT: AppleLog to AP0.clf; PixCal CMT mode=3 pureBlackCV=153.937444657</Description>
  <InputDescriptor>ACES2065-1</InputDescriptor>
  <OutputDescriptor>ACES2065-1</OutputDescriptor>
1リニアマトリクスによる色補正
<Matrix id="030.Calculated LinearMTX to AP0" inBitDepth="32f" outBitDepth="32f">
    <Array dim="3 3">
      1.14911856164 -0.0527749477846 -0.104443380555
      0.0302447391232 1.05919955118 -0.0912936221523
      0.0589312427103 8.33630994501e-06 0.944403952714
    </Array>
  </Matrix>
2露出をメインカメラに合わせる
<ASC_CDL id="050.matching exposure with MainCam" inBitDepth="32f" outBitDepth="32f" style="FwdNoClamp">
    <SOPNode><Slope>2.53799189272 2.53799189272 2.53799189272</Slope><Offset>0 0 0</Offset><Power>1 1 1</Power></SOPNode>
    <SatNode><Saturation>1</Saturation></SatNode>
  </ASC_CDL>
3ホワイトバランスをメインカメラに合わせる
<ASC_CDL id="060.matching white balance with MainCam" inBitDepth="32f" outBitDepth="32f" style="FwdNoClamp">
    <SOPNode><Slope>1.02260577919 1 0.899897488624</Slope><Offset>0 0 0</Offset><Power>1 1 1</Power></SOPNode>
    <SatNode><Saturation>1</Saturation></SatNode>
  </ASC_CDL>
</ProcessList>

CMTを本格的に導入したい方は是非ご相談ください。

CMT Toolを開く