2021.4.3に、本ツールの使い勝手を大幅に高めた新バージョンを公表しました。こちらのページをご覧ください。
このサイトで公開している不均等黄変写真のBチャンネル再建法補正マニュアルの中に、Bチャンネル補正法で一通り補正しただけでは不十分で、追加補正が必要なケースがあると記しています。一つは、Bチャンネル再建法でただ補正しただけでは黄色味が十分とり切れないケース (これは先日、2月1日にアップした写真がまさにこのケースです)、もう一つはこの補正法だとGとBのチャンネルの値が近づいてしまうので、もっと青い部分のチャンネルの値を離す必要がある場合です。前者の場合、画面の黄色味のある部分のB値を引き上げる、後者の場合、画面の青い部分のB値を引き上げる必要があります。
青味の部分と黄色味の部分の補正量が同一であれば、グローバルに全体的にトーンカーブ補正等でBチャンネルの値を引き上げればよいのですが、どちらか一方だけ補正する、あるいは青みの部分と黄色味の部分で補正値が異なるという場合は、グローバルな補正は不適切です。
そこで、マニュアルの中では、フォトレタッチソフトの色域指定機能を使って、その部分を個別に色補正するように書きました。
もちろんそれで正解なのですが、色域指定機能を使うよりはパラメータを調整して補正マスクを作成し、それを掛けて色補正したほうがやりやすい場合もあるのではないかと考えました。そこで、ImageJ (Fiji Distribution) に対応した追加補正サポート用マスク作成ツールを作ってみました。
このマスク作成ツールは、Bチャンネルの一定の明るさの範囲内のみで有効な黄色部分補正マスクもしくは青色部分補正マスクを作成するツールです。以前も、黄色、青色部分補正マスク作成ツールを公開しましたが、それらとの相違点は、さらに一定の明るさの範囲内に、マスク有効範囲を限定するようにした点です。
この発想は darktable をいじってみたことで得ました。darktable の negadoctor は、ネガ反転画像のホワイトバランスを一カ所で決めるのではなく、シャドウ域とハイライト域の2カ所に分けて調整することで、RawTherapee のネガフィルム反転機能より良好なカラー調整を実現しています。また色の調整も、シャドウ域、ミッドトーン域、ハイライト域と明るさのゾーンを三段階に分けて調整するようになっています(これに関しては、よく考えたら、Photoshopもそうなっていました)。
また、既に作成していた黄変補正マスクの問題点として、元の色の濃度 (明るさ) によって補正量が変わってしまう可能性がある欠点も認識していました。あくまでB値とG+R値の差に基づいてマスク画像を作ってはいますが、それでも、もともと色の濃度が濃い (暗い) ところでは補正量が少なく (マスク画像が暗く) 色の濃度が薄い (明るい) ところでは補正量が多く (マスク画像が明るく) なる傾向がありました。これは、彩度が高い部分は明るい部分が多い傾向があるためです。もちろん明るくても色が淡い場合もあり、明るいといって必ずしも彩度が高いとは限りません。とはいえ、暗い部分は、そもそも明度の値が低く、構造的にR, G, Bの値に差を作りにくいため彩度が低くなる傾向が出ます。
これらの影響により、単純な黄色部分判定マスクでは、仮に黄変量が同一であっても、元々の明るさによって補正量が変わる傾向を排除しきれない (但し機械的に明るければ補正量が上がるわけではなく、おおむねそのような傾向にある) のです。
これらを調整するために、一定の明るさのゾーンごとに黄変補正マスクを掛ける、という方針は合理的ではないかと思いました。というわけで作成してみました。
ダウンロード先はこちらです。
で、このツールの使い方を説明します。
1. 事前準備
当然ながら ImageJ (Fiji ディストリビューション) をインストールしておいてください。そしてこのインストールフォルダ (Fiji.App) の下の Plugins フォルダにダウンロードしたプラグインを解凍し、コピーします。
2. 補正手順
2.1. 調整閾値パラメータ決定のためのプレビュー作業
・まず、ImageJを立ち上げ、追加補正したい、第1次補正済みのファイルを読み込みます。その際、読み込むべきファイルが16bit TIFFで、かつ圧縮がかかっている場合は、[File] → [Open] では読み込めません。[Plugins] → [Bio-formats] → [Bio-formats impoter] を使って読み込んでください。
・この時、画像が8bit以外だったら、[Image]→[Type]で[8bit]をチェックし、8bitグレースケール画像に転換します*1。
・読み込んだら、[Image]→[Color]→[Split Channnels]を使って、画像を3色分解します。そして、不要なチャンネルの画像は閉じ、必要なBチャンネル画像のみ残します。
・次に、[Image]→[Color]→[Adjust]→[Threshold]を立ち上げます。そして、なるべく補正の対象としたい部分のみが黒くなるように上下の閾値を調整し、決まったらその調整値をメモしておきます。
2.2. プラグインの実行
・ImageJの[Plugin]メニューから、先ほどインストールしたプラグインを起動します。メニューの下の方に表示されているはずです。
・起動したら、まず、補正対象となるファイルを指定します。
・次にパラメータ入力ダイアログが出ます。
・[Image bit depth]は通常[Auto]のままで良いです。
・[Yellow Mask Threshold] はマスクの閾値を決めます。0だと、黄色いマスクの場合、少しでも黄色味のあるところを白抜きにするマスクを作ります((B+R/2)の値が、Bの値以上の部分を範囲とします)。これを10にすると、黄色くない部分も含め白抜きにする((B+R/2)+10 の値が、Bの値以上の部分を範囲とします)と同時に、調整すべき部分のマスクの透明度も上がり(マスクがより明るくなり)ます。通常、10-20ぐらいが適正かと思いますが、出来たマスクを見て適宜調整してください。
・[Mask Invert for Blue Mask] は、作成するマスクの種類を決めます。デフォルトは黄色い部分を補正するマスクです。黄色味のある部分の黄色味を減らすマスクなら、チェックは外したままにします。青い部分の青みをさらに増すためのマスクなら、チェックをつけます。
・[Base Channnel for L Zone] は、どのチャンネルをベースに明るさの領域を決めるかを指定するパラメータです。通常 Blueで良いと思いますが、Grayscaleや、Red, Greenチャンネルを選ぶこともできます。ここで違うチャンネルを選ぶなら、先ほどのプレビューもBlue以外のチャンネルでプレビューを行ってください。
・[Lowest Threshold of L Zone], [Highest Threshold of L Zone]は、マスクを適用する明るさの範囲を決めるパラメータです。先ほどプレビューで決定した閾値の下限値と上限値を入力します。
・[Show working windows?]はお好みで。ただ、デフォルトのYes にしておくと、トラブルで止まった時にすぐ分かります。
・OKを押すと、プラグインが実行されます。
2.3. 作成されるファイル
・実行が終わると、元画像と同じフォルダに以下の3種類のファイルができます。originalfilename のところには元画像のファイル名が入ります。
originalfilename_Mask_Thr_Y+z_x4.tif
閾値 +z の黄色補正マスク (青色補正マスクの場合はYがBになる)
originalfilename_L_Zonex-y_Mask.tif
Bチャンネルの明るさの閾値が x から y の範囲の明るさゾーンマスク
originalfilename_L_Zonex-y_Y+z_Mask_Binded.tif
上の2つの画像を合成して作成した、有効範囲がBチャンネルの明るさの閾値が x から y に限定された、閾値 +z の黄色補正マスク (青色補正マスクの場合はYがBになる)
・以下、電車の青い色部分を主対象としたマスクの事例を掲示します。
・なお、[Lowest Threshold of L Zone], [Highest Threshold of L Zone]の設定値によって、画像の全範囲が指定されると、プラグインは次のようなエラーメッセージを出力して終了します。
"Selected ROI (Region of Interest) is missing."
この場合、上の一番最初のファイルのみ作成して終了します。
2.4 補正へのマスクとしての適用
・プラグインを実行して出来たマスク原稿用の画像ファイルを、さらに必要のないところを塗りつぶして、実際の補正マスクとしてレイヤー編集をサポートしたフォトレタッチソフト(GIMP, Photoshop等)に取り込みます。
・次の図は、上の画像を加工して電車の青色部分のみ補正するマスクとした事例です。
・また、壁面補正マスクの作成例も提示します。
3. 補足
今までのImageJ用プラグインは、なるべくImageJをいじらなくて済むよう(つまり、改めてImageJの使い方を学習しなくても使えるよう)、プラグインの実行が終了すると自動的にImageJ自体も終了させていました。しかし、今回は、ImageJ自体をいじっていろいろプレビューしながら調整する必要がありますので、プラグインの実行が終了しても、ImageJは終了させないようにしています。
本来はプラグインの実行の途中でプレビュー画面を見ながら双方向的な調整ができればベストなのですが、私のプログラミング力不足で、そこまでうまく持っていけませんでした。そのため、ImageJを起動したまま、いろいろ操作していただく形にしました。
なお、本ツールで、画面の全領域を指定すれば、黄変部分補正マスク作成ツールおよび青色部分マスク作成ツールを兼ねることができます。
最後に2021.2.1にアップした画像を、今回のプラグインを使って再調整した画像をお見せします。
前回と今回では、Bチャンネル再建法を適用した画像を出発点としているのは同一です。前回は色域指定で3つの補正レイヤーを追加しましたが。今回は、電車の青色部分補正のレイヤーと壁面等の補正のレイヤーの2つを追加して補正しています。最後にRawTherapeeで仕上げているのも同じです。当然ながら、どちらかの方法が間違っているという訳ではないので、大きな差はありません。ただ色域指定だとアドホックな感じがありますが、こちらの方だと若干組織的に補正した感があるというところかと思います。どちらの方法を使うかは好みの問題かと。
因みにそもそもBチャンネル再建補正に掛ける前の、オリジナルの黄変写真はこちらです。
------------------
------------------
なお、本記事で紹介した写真補正技法やソフトウェア (Plug-in) は、個人的もしくは非営利用途であれば、自由に使っていただいて構いませんが、本技法を使って何らかの成果 (編集した写真等) を公表する場合は、本記事で紹介した技法を使った旨クレジットをつけて公表していただくことをお願いします。
また、本ソフトウェアは現状のまま提供されるものし、作者はこれを使ったことによるいかなる損害補償等にも応じられないことを了解の上使っていただくものとします。
但し、もしソフトウェアのバグがありましたら、ご連絡いただければなるべく改善するよう努めたいと思います。