ImageJ 用の、画像のガンマをLUT (Look up table) を使って変更するツールを作成しました。以前、画像自体に TRC をかけたり外したりするツールを公開しましたが、そちらのツールは画像データに TRC (トーン再生カーブ) を掛けたり外したりすることで、明度値を変更するツールでした。
今回公開するツールは、LUT を使って画像の見え方を変更するツールです。従って、画像の見せ方を定義する LUT のみ入れ替えるので、画像の明度値自体は変化しません。画像データ自体はいじらないという考え方です。
ただ、基本的にはリニア画像 (Gamma = 1.0) の見せ方を変更するために使うことを考えています。というのは ImageJ はカラーマネジメントに対応していませんので (これは Mac でも Windows、Linux でも変わりません)、リニア画像は本来の明るさより暗く見えてしまいます*1。それを補償するために、 LUT で見せ方だけを調整するというという考え方です。
また、既にかかっている LUT に対し、ガンマ補正を掛けることもできます。
もし開いているファイルがない状態で、本ツールを ImageJ 上で起動すると、以下のようなメッセージが出ます。
新たにファイルを開く場合は、bio-format プラグインでインポートしますので、その場合、もし開くファイルに LUT が設定されていてもリセットされてしまうので、その警告メッセージです。従って既存の LUT のガンマを変えたい場合はこのプラグインを起動する前に、予めファイルを開いておいてください。
そして、ファイルを指定して開くと以下のような Gamma 値調整ダイアログが出ます。
この時、新たにファイルを開いた場合は、Select applying process で選択の余地はありません。
既存の LUT に対するガンマを掛けたい場合は、LUT のかかったファイルを File → Open で事前に読み込んでおいて本ツールを起動します。すると下記のように、Gamma のドロップボックスにて、adjust existing Lut が選択可能になりますので、それを選びます。
なお、上のサンプルファイルには、リニア画像を読み込ませています。また上のケースではカラー画像を読ませていますが、その下のように、モノクロ画像も大丈夫です。ここで、スライダーを動かすとその結果がプレビュー画面に出ます。
ちょうどよいところでスライダーを止めて OK すると、下記のように、結果画像の画面が表示されるとともに、元の画像に、
_Gamma_ガンマ値_encoded.tif
という名前を付けたファイルが作成されます。つまり元の画像を上書きせずに、ガンマのかかった LUT を加えた画像ファイルが別途できます。なお、デフォルト値は 1.0 ですが、このままだと何の画像も変化しませんので、別の値を指定する必要があります。通常は sRGB TRC の近似値である、2.2 を指定するのが良いと思います。なお、モノクロでもカラー画像でもガンマ値を変更できます。
また、"encode" を選びますと (なお、新たにファイルを開いた場合は encode しか選べません)、元々かかっていた LUT を完全に置き換えますので、この点にもご注意ください。既存の Lut のガンマを変えたい場合は、上のように、adjust existing Lut を選びます。できたファイルの LUT を表示させると下記のようになります。
ちゃんと LUT にガンマが掛かっているのが確認できます。
本ツールのダウンロードはこちらから。
ただ、これをつくってみて ImageJ がカラーマネジメントに対応しない理由も分かりました。おそらく LUT で対応すればよいという考え方かと思います。ただそれならビルトインの LUT にガンマ2.2 の LUT が含まれているべきだと思うのですが、それが見当たりません。
また、メニューの Image → LookUp tables 以下から Lut がかけられますが、RGB ファイルの場合、R チャンネル (RGB の最初のチャンネルであるため) のみに LUT が掛かることになります。したがってそれは、常に R チャンネルの値に基づいて Lut がかかるということを意味します。しかし、これはそもそも RGB カラーファイルに LUT を掛けることを想定していないのでは、と考えてしまいます。そのため、RGB カラーファイルの LUT 周りの仕様についてこれで良いのか、ちょっと考え中です。現状は、R チャンネルの LUT にのみガンマ補正が掛かるような仕様になっています。
*1:リニア画像は、暗く見えるべきだ、というのは本来間違いです。その理由については以下の記事をご覧ください。