映像や画像のCLUT(カラールックアップテーブル、カラーラットとも言われる)から色を置換するhaldclutフィルタの使い方。CLUTは一般に配布されているものを使うことができるが、解像度を所定のサイズにする必要がある。画像なら.pngや.tiffに。動画ならffv1の.nutや.mkv。floatなら.exrか、exrのmkvで出力する。
「RawTherapee Film Simulation Collection」の項目でCLUTをたくさん配布している。
Film Simulation – RawPedia : archive.org
基本コマンド
CLUTを準備する。適用する動画のfps、尺をそろえる。
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,format=yuv420p -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
exrで出力するとCLUTがlinerのfloat形式になるのでログ撮影のグレーディングにも使える。DaVinci Resolveなどでclut.mkvを読み込み補正し、再度exr形式のmkvか、連番exrで出力。補正したCLUTをhaldclutフィルタに当てることでグレーディングできる。
ffmpeg -f lavfi -i haldclutsrc=level=8:r=24000/1001:d=10 -c:v exr clut.mkv
オプション
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 Filters Documentation : haldclutsrc
haldclutフィルタのオプション。framesyncに対応している。
- interp[int]
補間方法 - 0, nearest:隣同士
 - 1, trilinear:8方向
 - 2, tetrahedral:4面体。既定値
 
公式ドキュメント:
FFmpeg Filters Documentation : haldclut
制作者のサイト:
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
おおー正解かも知れん。
ログ素材をffmpegでHaldcLUT生成。このとき、OpenEXRにする。
darktableでOpenEXRを読み込んで、各種補正とVericam LUT適用し、OpenEXRで保存
グレーディング済のOpenEXRを使って、元のログ素材にグレーディングを適用
これ普通にV-LOGのポテンシャル活かせてるんちゃうか・・— harako (@harako71754559) October 9, 2025