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

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

褪色写真のカラー修復に有効な ImageJ 用クラシック・ヒストグラム平坦化プラグイン 16bit 画像出力版

 先日、褪色フィルム画像の補正に使える ImageJ 用の古典的ヒストグラム平坦化プラグインを公開しましたが、途中で ALT キーを押さなければならないのが煩わしいというのと、32bit 画像非対応の点、ならびに 8bit 画像にそのままヒストグラム平坦化を掛けるよりは、16bit 画像に直したほうがベターではないかという点から、改訂版を作成しました。

 なおヒストグラム平坦化アルゴリズムの褪色フィルム画像のカラー修復効果については、欧米のユーザにもほとんど知られていないので (私も偶然発見しました)、GIMP の平滑化コマンドも将来的に Photoshop のように「欠点」が「改善」されて、カラー修復効果がなくされてしまうことを恐れて、このプラグインを開発しました。以前にも指摘しましたが、このカラー修復効果は、本来のこのアルゴリズムの目的 (暗部を鮮明に見せる) からは色相が変わってしまう「欠点」に過ぎませんので。なお、ImageMagick にもヒストグラム平坦化コマンドがありますが、バージョンの進化でこの特徴が「改善」されてしまったようです。

 今回の改訂版の特徴は、読み込む画像の bit 深度にかかわらず、一旦 16bit 画像に変換してプロセスを実行し、常に 16bit 画像を出力する点です。また上でも触れたように ALT キーを押す必要はありません。なお読み込みファイルを上書きしないという特徴 (最後に、元のファイル名に、"_equalized.tif" をつけた名前で実行結果を保存) はそのまま維持されています。

 コード的には、ImageJ の ContrastEnhancer API に依存するのを止め、この API のクラシックなヒストグラム平坦化アルゴリズムをそのまま Python に移植することで、ALT キーを押さなくてもクラシックなヒストグラム平坦化を実行するように変えました。一部直接 Java の 命令を叩いているところもあります。

 実は先日ヒストグラム平坦化アルゴリズムの解説を書いたのは当プラグインを書くための準備でした。

 ImageJ 版のヒストグラム平坦化プラグインを使うとGIMP に比べ次の点で有利です。

GIMP の平滑化コマンドを実行するより、特に 16bit ネイティブ画像においてより諧調のきめ細かい画像が得られる

 この特徴は、前のバージョンの ImageJ 用プラグインも同じです。また性能面でも変わりはありません。

 一方注意を要する点は、

・一般の画像処理ソフトで読み込める形式に変換するには、拙作の GIMP 用 ImageJ RGB TIFF ファイルインポートプラグインで一旦読み込んで保存しておく必要あり (もしくは手動で RGB 合成が必要)。

・ImageJ はカラーマネジメントに非対応なので、オリジナルファイルが sRGB 以外の場合、他の画像ソフトに読み込んだ際、カラープロファイルを割り当て直す必要がある*1

 この注意点も、前のバージョンと同じです。

メニュー画面

 メニュー上は histogram equalization16 と表示されます。

 因みに当プラグインヒストグラム平坦化を実行した結果と、GIMP 上で実行した結果を比較して見ます。読み込むファイルは以下のファイルです。このファイルは以前こちらの記事でサンプルとして使用しました。なおこのサンプルは赤色褪色ポジを使っていますが (手持ち画像の関係です)、他の褪色パターンでも、不均等に変褪色しているのでなければ有効です。

f:id:yasuo_ssi:20210417112011j:plain

オリジナル

 オリジナルのヒストグラムも掲げます。

上のヒストグラム

 ハイライト域を中心に、R チャンネルの値が G, B チャンネルより高めに推移しているのが分かります。

 これを変換した結果のヒストグラムIrfanView で取ってみます。なお IrfanViewヒストグラムは 16bit 画像もいったん 8bit に直してからとっていることにご注意ください。比較のため GIMP 平滑化コマンドを適用した結果もヒストグラムをとります。

プラグイン 16bit → 16bit

プラグイン 8bit → 16bit

GIMP 平滑化 16bit

GIMP 平滑化 8bit

 8bit の場合諧調のきめの細かさは、当プラグインGIMP ではあまり変わらないようですが、16bit では顕著な差があり、当プラグインの方が諧調のきめが細かく、ヒストグラムもより文字通り平坦になっています。これだけ滑らかだと本アルゴリズムの弱点であるトーンジャンプはほぼ無視できるレベルだと思います。よく分かりませんが、GIMP の平滑化コマンドの方は、16bit ファイルの場合、ヒストグラムの諧調数が ImageJ より少ないものと思われます。ImageJ を使うとひと手間増えますが、16bit ファイルの場合そのひと手間を掛ける価値は十分あると思います。逆に元ネタが Jpeg などの 8bit ファイルならそのまま GIMP 上で平滑化コマンドをかけた方が楽で効果も同じです。

 ただ実行結果の見た目はどれもあまり変わりません。ヒストグラムが結構違うのにこれはちょっと不思議です。

実行結果 当プラグイン 16bit → 16bit

 因みにこの実行結果 (16bit → 16bit) を GIMP で通常の TIFF ファイルに変換した後、ART に読み込ませ、霞除去を掛け、露出でブラックポイント補正を行っただけで以下の結果が得られました。

上のファイルを ART で編集

 このブラックポイントの調整で、上のヒストグラムの右端の山はほぼクリップされました (下図ヒストグラム参照)。

 さらに、ART のチャンネルミキサーの原色補正モードで調整を掛けると...

さらに原色補正で編集を追加

出力結果 (周辺一部トリミング)

 更に筆者がこちらのフォーラムで公開している ART 用の CTL スクリプトを使ってさらに追加編集を加えると...

再々編集出力結果

 自画自賛で恐縮ですが、これはいいですね。

 当プラグインのダウンロードはこちらから。

 なお、インストールその他については以下の前のバージョンの記事をご参照ください。

yasuo-ssi.hatenablog.com

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

[最近の関連記事]

yasuo-ssi.hatenablog.com

yasuo-ssi.hatenablog.com

*1:GIMP におけるカラープロファイルの割り当てに関しては、以下の記事の、3. をご覧ください。

yasuo-ssi.hatenablog.com