映像や画像のCLUT(カラールックアップテーブル、カラーラットとも言われる)から色を置換するhaldclutフィルタの使い方。CLUTは一般に配布されているものを使うことができるが、解像度を所定のサイズにする必要がある。

カラールックアップテーブルを適用するlut1d、lut3d

「RawTherapee Film Simulation Collection」の項目でCLUTをたくさん配布している。
Film Simulation – RawPedia

基本コマンド

CLUTを準備する。
ffmpeg -f lavfi -i haldclutsrc=level=8:r=25:d=10 -vf "hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process" -c:v ffv1 clut.nut

元映像にCLUTを参照してhaldclutフィルタを当てる。元映像とCLUTのフレームレートは一致させる。
ffmpeg -i input -i clut.nut -filter_complex [0][1]haldclut -shortest output
ffplay input -vf movie=clut.nut,[in]haldclut
ffplay -f lavfi -i movie=input[0];movie=clut.nut[1];[0][1]haldclut=interp=2:eof_action=0:shortest=0:repeatlast=1

haldclutsrcフィルタのlevel[int]でCLUTが作れる。オプションによって解像度が異なる。

  • 2:8×8
  • 3:27×27
  • 4:64×64
  • 5:125×125
  • 6:216×216
  • 7:343×343
  • 8:512×512
  • 9:729×729
  • 10:1000×1000
  • 11:1331×1331
  • 12:1728×1728
  • 13:2197×2197
  • 14:2744×2744
  • 15:3375×3375
  • 16:4096×4096

ffmpeg で使える映像のテストソース

オプション

framesyncに対応している。

  • interp[int]
    補間方法
    • 0, nearest:隣同士
    • 1, trilinear:8方向
    • 2, tetrahedral:4面体。既定値

公式ドキュメント:
FFmpeg Filters Documentation : haldclut
FFmpeg Filters Documentation : haldclutsrc

制作者のサイト:
QUELSOLAAR:COM : Verse – Realtime networking protocol for 3D graphic

日本語で一部抜粋する。

HaldCLUTは特定の色のパターンを持つ画像です。このパターンでは、色空間のすべての色が表現されます。HaldCLUT画像を使って画像の色補正を行うアプリケーションは、元画像の色を取ってHaldCLUTのカラーパターンで調べ、その場所で見つけた色が、元画像の色を置き換えるべき補正色となります。その色がCLUTに存在しない場合は、複数の色を検索してそれらの間を補間することができます。
アイデンティティCLUTは、適用された画像に影響を与えないCLUTです。
例えば、2つの異なるCLUT間をブレンドして、2つの異なる外観を平均化した色補正を作成することができます。
適用したいCLUTが複数ある場合、あるCLUTを別のCLUTで補正するだけでCLUTをマージできます。新しいCLUTには両方の補正が含まれ、このCLUTを使用して補正された画像は、2つの元のCLUTで補正された場合と同じ処理を受けることができます。
HaldのCLUTはアーチファクトを生成する可能性があるため、JPEGのような破壊的/低解像度の画像フォーマットを使用して保存すべきではありません。
サイズを重視するならPNGファイル形式を強くお勧めします。他にも、ハイダイナミックレンジ(HDR)用のRGBeやOpenEXRなどもあります。
HaldCLUTは複数の異なるサイズをサポートしています。画像が大きいほど精度が高く、使用するメモリも多くなります。
CLUTがどのレベルにエンコードされているかを知るには、単に画像のサイズを取って、3乗根を計算します。
各コンポーネントの色をCLUTに格納できる数を計算するには、レベルを2の累乗にします。
レベル4(64*64サイズ)または8(512*512サイズ)の使用は、チャンネルあたり8ビット以下の画像を使用することをお勧めします。
レベル16は、10、12、16ビットの画像と同様に、高度な8補正を行う場合に推奨されます。
エンコーディングは、幅が赤、高さが緑、奥行きが青の3次元バッファのように連続したバッファにエンコードします。
最初のピクセルは黒から始まる左上の近い隅にあり、最後のピクセルは右下の深い隅にあります。

関連記事
RawTherapee:また新たな機能?Hald CLUT(フィルムシミュレーション) 素人のRAW現像記録/ウェブリブログ : archive.org

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)