先日、褪色フィルム画像の補正に使える 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 上で実行した結果を比較して見ます。読み込むファイルは以下のファイルです。このファイルは以前こちらの記事でサンプルとして使用しました。なおこのサンプルは赤色褪色ポジを使っていますが (手持ち画像の関係です)、他の褪色パターンでも、不均等に変褪色しているのでなければ有効です。
オリジナルのヒストグラムも掲げます。
ハイライト域を中心に、R チャンネルの値が G, B チャンネルより高めに推移しているのが分かります。
これを変換した結果のヒストグラムを IrfanView で取ってみます。なお IrfanView のヒストグラムは 16bit 画像もいったん 8bit に直してからとっていることにご注意ください。比較のため GIMP 平滑化コマンドを適用した結果もヒストグラムをとります。
8bit の場合諧調のきめの細かさは、当プラグインと GIMP ではあまり変わらないようですが、16bit では顕著な差があり、当プラグインの方が諧調のきめが細かく、ヒストグラムもより文字通り平坦になっています。これだけ滑らかだと本アルゴリズムの弱点であるトーンジャンプはほぼ無視できるレベルだと思います。よく分かりませんが、GIMP の平滑化コマンドの方は、16bit ファイルの場合、ヒストグラムの諧調数が ImageJ より少ないものと思われます。ImageJ を使うとひと手間増えますが、16bit ファイルの場合そのひと手間を掛ける価値は十分あると思います。逆に元ネタが Jpeg などの 8bit ファイルならそのまま GIMP 上で平滑化コマンドをかけた方が楽で効果も同じです。
ただ実行結果の見た目はどれもあまり変わりません。ヒストグラムが結構違うのにこれはちょっと不思議です。
因みにこの実行結果 (16bit → 16bit) を GIMP で通常の TIFF ファイルに変換した後、ART に読み込ませ、霞除去を掛け、露出でブラックポイント補正を行っただけで以下の結果が得られました。
このブラックポイントの調整で、上のヒストグラムの右端の山はほぼクリップされました (下図ヒストグラム参照)。
さらに、ART のチャンネルミキサーの原色補正モードで調整を掛けると...
更に筆者がこちらのフォーラムで公開している ART 用の CTL スクリプトを使ってさらに追加編集を加えると...
自画自賛で恐縮ですが、これはいいですね。
なお、インストールその他については以下の前のバージョンの記事をご参照ください。
----------------
[最近の関連記事]