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

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

ImageJ で作成した 32bit 画像を表示させると...

 筆者が作成した ImageJ 用プラグインを走らせるとプレビュー用 8-bit 画像と結果として出力される 32-bit 画像の表示結果が異なることが多々あります。そこでそもそも各アプリケーションで 32-bit イメージはどう表示されるのか、確認してみました。なお、この画像はsRGB式の TRC (知覚的トーン再生カーブ) がかかっており、かつカラーマネジメント非対応の ImageJ で出力したので、iccプロファイルが含まれていません。すると...

 まず筆者が作成した ImageJ 用プラグインの 8-bit プレビューイメージから...

8bit ㇷ゚レビュー画像

 上の設定で作成した 32-bit TIFF ファイル (ディスプレイ範囲 0.0 - 1.0) を各アプリケーションで開いてみると...

 まず ImageJ から...

ImageJ

 この画像の場合は、プレビューイメージ通りです。ImageJ で出力していますので、当然ではありますが。次は IrfanView です。

IrfanView

 ごく僅か黒っぽいような気がしますが、おおむね同一です。違いがあっても誤差の範囲でしょう。

 次は GIMP

GIMP

 これも ImageJ で読み込んだのとあまり変わりません。ところが...

 以下はWindows Photo Viewer です。Windowsの中では優等生的なカラーマネジメントを備えているアクセサリプログラムですが、明るさがかなり明るくなりました。

Windows Photo Viewer

 さらに、Photoshopで読み込むと、読み込む際にグレースケールプロファイルがないとか言われて、適当に選択すると、Windows Photo Viewer と同様の表示になりました。なお、グレースケールプロファイルはどれを選んでもあまり変わりません。

Photoshop 作業用グレースケールプロファイル Dot Gain 15%適用

 darktable でも Windows Photo Viewer と似ています。ちなみに RawTherapee や ART では読み込めませんでした。

darktable 4.2.1

 Xn View は、ImageJ などとほぼ同じでした。

Xn View MP

 大きく、明るく表示されるアプリと暗めに表示されるアプリで2分されました。

 筆者の別のプラグインを走らせた結果を見てみます。

 まず 8-bit ㇷ゚レビュー画像から...

8-bit プレビュー画像

 ImageJ で読み込んでみると...

ImageJ

 ちょっと表示が薄くなっています。プレビューの方が濃すぎるのかもしれません。念のためヒストグラムをとってみます。

ヒストグラム

次は IrfanView です。

IrfanView

 非常に明るくなってしまいました。しかしヒストグラムをとってみると...

ヒストグラム

 値が 8bit に変換されていますが、基本的に ImageJ と変わらないようです。

次は GIMP...

GIMP

 ImageJ とほぼ同様なのは、上のサンプルと同じです。

次は、Windows Photo Viewer...

Windows Photo Viewer

 やはり明るくなっています。

Photo Shop , darktable も見てみます。

Photoshop

darktable

 Photoshop, darktable が Windows Photo Viewer と同じなのは上の例と変わりません。

 調べてみると、GIMP の画像に、Gamma 2.2 を掛けると Windows Photo Viewer の表示に酷似することが分かりました。

 結局、次のようなことのようです。ImageJ は以前にも指摘している通り、カラーマネジメントを一切行いません。従って ImageJ が出力する画像も TRC に関するメタデータは含まれません。この例で使っているオリジナル画像は、sRGBのTRCで変換された非リニア (知覚的) な 32-bit 画像ですが、出力されたデータにはどのTRCに基づくデータなのかを指定したメタデータが含まれません。そして、TRC指定のない 32-bit TIFF を読み込んだ時にどう処理するかが、ソフトウェアによって異なり、Windows Photo Viewer 等は、32-bit 画像の場合、元データはリニアだと仮定して、sRGB TRC を掛けて表示出力する一方、GIMP などは sRGB のTRCがかかった知覚的データであると仮定し何の処理もせずに表示出力を行うということのようです。ImageJ はそもそもカラーマネジメントを行わず、そのまま表示出力を行いますので、知覚的TRCがかかった32-bit画像を扱った場合、結果的に GIMP などと結果が一致することになります。

 この画像は元々知覚的データなのに、Windows Photo Viewer 等ではリニアと仮定され、さらに TRC がかかってしまうので、元より明るく表示されてしまったということかと思います。

 よく分からないのは IrfanView の挙動で、そのまま表示出力したり、ガンマを掛けて表示出力したり (しかもそのガンマ値も単に通常の知覚的 TRC ではないようです) していますが、おそらく 32-bit 画像をちゃんと扱うことが考えられていないため、何かバグっていると考えるべきでしょう。

 それとまだ残った疑問点は、拙作のプログラムで上の例で使ったプログラムと下の例で使ったプログラムでプレビュー表示に違いが出る点です。上は適正ですが、下はより黒くなっています。下のケースではおそらくガンマ -2.2 がかかっているように思われます。ただ自分の中では上と下とで、プレビュー画像のガンマ値 (あるいは TRC) の扱いを意図的に変えた覚えはありません。なぜこんな違いが出てしまったのか、解明する必要が残されています。おそらく DisplayRange がらみとは思いますが...