映像や画像のCLUT(カラールックアップテーブル、カラーラットとも言われる)から色を置換するhaldclut
フィルタの使い方。CLUTは一般に配布されているものを使うことができるが、解像度を所定のサイズにする必要がある。
「RawTherapee Film Simulation Collection」の項目でCLUTをたくさん配布している。
Film Simulation – RawPedia : archive.org
基本コマンド
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
オプション
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