省型旧形国電の残影を求めて

戦前型旧形国電および鉄道と変褪色フィルム写真を中心とした写真補正編集の話題を扱います。他のサイトでは得られない、筆者独自開発の写真補正ツールや補正技法についても情報提供しています。写真補正技法への質問はコメント欄へどうぞ

HaldCLUT ファイルのフォーマット

 先日、ART / RawTherapee および darktable のフィルムシミュレーションについて記事を書きました。その際、フィルムシミュレーションに使うのがHaldCLUTファイルです。Hald というのは語源がよく分からないようですが、CLUTというのは Color Lookup Table の略で、つまりカラー対照表です。個々のどの色をどのように変換するのかという変換表という訳です。従ってこの表を適宜作成すれば、非線形的な複雑なカラー変換も可能になります。このカラー変換表にない部分はソフトウェアの方で適宜補間して変換することになります。

 下に、HaldCLUTファイルの事例をお見せしますが、このファイルは、データロスのない、可逆変換の pngtiffファイルで作成します。ロスのあるJpegなどの圧縮フォーマットでは正確な変換ができません。

f:id:yasuo_ssi:20210927213147p:plain

HaldCLUTファイルの例

 ところでこのファイルフォーマットがどうなっているのかと思ってさんざん検索しましたが、日本語では全く情報がありません。ようやく英語の解説サイトを見つけました(RawPediaにリンクがありました)。以下のサイトです。

www.quelsolaar.com ただ、ここの解説今一つ不正確なようです。そこでこのサイトの情報と、HaldCLUTファイルの現物を突き合わせて、HaldCLUTのフォーマットについて解説をしたいと思います。

 

 このファイルフォーマットの起源は元々ImageMagicにあるようです。しかし今は様々な静止画、動画編集ソフトで使われています。

 図を作成する都合上、もっとも単純な Level 4 で構造を説明します。

f:id:yasuo_ssi:20211211184319p:plain

HaldCLUTファイルの構造
Level 4を事例に

 Leverl 4というのは R, G, B各色を 4 x 4 = 16段階で表示する、つまり全カラーを 16の3乗、4096色で表現するCLUTです。従ってファイルサイズも (一辺: 16 x 4) の2乗の 4096ピクセルとなります。もしLevel 8なら RGBそれぞれを 8 x 8の64段階で、全カラーを26万2144 色 (一辺: 64 x 8)で、Level 16なら RGBそれぞれを 16 x 16の256段階で、全カラーを1677万7216色 (一辺: 256 x 16) で表現します。

 このファイルの最も暗い点 (0,0,0)は一番左上、最も明るい点 (16,16,16)は一番右下になります。右、もしくは下に行くほど値は明るくなります。

 

 上の例示のファイルの場合、横のブロックの列が8ブロックですのでLever 8ということが分かります。つまりRGBがそれぞれ64段階で表されています。

 

f:id:yasuo_ssi:20211209171153p:plain

1つのブロック内でのR, G値の上昇方向

 上の図で1つのブロックのRGBを見ていただいていますが、当然、この中でB値は全く変化がありません、G値は下に行くほど上昇しています。しかし、分かりにくいかもしれませんがこのブロックの中の横一行ではG値は全く同じです、右のブロックに移ると、同じ行のG値は1段階上昇します。2つ右のブロックに移ると、同じ行のG値は2段階上昇します。

 

 そしてこの例の1段目、つまりB=0の段を抜き出すと下記のようになります (若干はみ出ている部分がありますがご了承ください)。このB値が等しい1段分が、8 x 8 の cube に相当します。

f:id:yasuo_ssi:20211209164837p:plain

上のサンプルの1段 (cube) 目 (B値 = 0の段)

 この1段の中に8列8行に渡って、G値が 0~63のクラスター(と仮に呼んでおきます) が並んでおり、この段の中で、G値は左上から右下に掛けて8つずつ Z字状に折り返しながら徐々に上昇していきます(下図参照。下図の1マス分が、64の画素を含む、1クラスター)。各クラスターの中では、R値が0~63という異なる値を持った64画素が、横1行に並んでいます。

f:id:yasuo_ssi:20211209172853p:plain

1つの段 (cube) の中でのG値の分布 (Level 8)

 さらに、最終段 (64段目、B=63) を抜き出すと下記のようになります。

f:id:yasuo_ssi:20211209164943p:plain

上のサンプルの64段 (cube) 目 (B値=63の段)

 ここでもG値の分布は同様です。

 そして Levelが16になると、上で8だったものが16になるとお考え下さい。1 cubeも16 x 16 になります。

 そして各ピクセルに割り当てられている色が、そのRGB値を持つ色が、どのように変換されるかを示しています。これがHaldCLUTファイルのフォーマットになります。

 

 なおLevel 16 (4096 x 4096) の一切変換を定義していないIdentity HaldCLUTファイルは以下にあります。

http://www.quelsolaar.com/technology/Hald_CLUT_Identity.png

 またImageMagicを使ってHaldCLUTのIdentity FIleを作る方法については、RawPediaの以下のページをご参照ください。

https://rawpedia.rawtherapee.com/Film_Simulation/jp

 

 そして、例えば、あるRaw現像ソフトで画像の色調編集をやった結果を反映したHaldCLUTファイルを作りたい場合は、まず何らかの写真ファイルで色調編集を行った後、上のIdentity HaldCLUTを読み込み、これに、先ほどのファイルでの編集結果を貼り付け、それをロスのない可逆圧縮形式で保存しなおせば、簡単にカスタマイズしたHaldCLUTファイルが出来上がります。

 同一のRaw現像ソフトを使っている限りでは、このようにしてHaldCLUT作る意味はありませんが、異なるRaw現像ソフト間で、例えば、ARTの調整プリセットを、darktableでも適用したい、という場合は、このようにHaldCLUTファイルを作っておくと適用できるようになりますし、調整プリセットを他のRaw現像ソフト所有者を含めた他の人と共有したい、という場合でも有効かと思います。

---------------------

その他参考サイト

im.snibgo.com