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

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

新バージョン Bチャンネル再建法 追加補正サポート用マスク作成ツール公開

f:id:yasuo_ssi:20210310145522j:plain

お知らせ

  このツールのバグ修正版を  2021.5.18に公開しました。5.8の修正し残しのバグを再修正しました。すでに各ページのリンクは修正してあります。新バージョン番号は Ver. 0.18となっています。

---------

 このツールのバグ修正版を  2021.5.8に公開しました。4.17の修正で発生したバグを再修正しました。すでに各ページのリンクは修正してあります。新バージョン番号は Ver. 0.17となっています。それ以前にダウンロードされた方は、再度ダウンロードをお願いします。修正内容はこちらのページをご参照ください。

--------

 このツールのバグ修正版を2021.4.17に公開しました。こちらのページをご覧ください。なお、当ページのダウンロードリンクも新バージョンに修正してあります。


 本 (2021) 年2月28日に、Bチャンネル再建法 追加補正サポート用マスク作成ツールを公開しました。しかしさすがにあらかじめImageJで閾値を測った上、パラメータをメモして使えというのは、我ながら自分で使っていても使い勝手が悪すぎます。

 という訳でマスクが有効範囲となる閾値を決定するのにプラグインの中のプレビュー画面を見ながら決定するような対話的なダイアログを作成しました(かなり大変でした)。これで大幅に利便性がアップしていると思います。内容的にはユーザインターフェース部分を変更しただけで、プログラムの本体部分は変更ありません。

 なお、このツールを使う目的や意義については、作成ツール公開時の2月28日の記事をご参照ください。以下、新バージョンのマスク画像作成ツールの使い方から説明します。

 

1. このツールが行うこと

1) ある特定の色チャンネル(R, G, B もしくはグレースケール)に基づいて、特定の明度(明るさ)範囲を透過させるバイナリーマスク画像ファイルを作成します。

※バイナリーマスク画像: 透過部分を白、不透過部分を黒とした、白(255)と黒(0)の二値の画像。透過部分は100%透過、不透過部分は100%不透過となる。

2) 黄変部分 (相対的に黄色い部分) もしくは相対的に青い部分を透過させるマスク画像ファイルを作成します。

※こちらは二値ではなく透過度の高い部分を白っぽく、不透過度の高い部分を黒っぽくしたグレースケールマスク画像。透過、不透過量は100%か0%の二値ではなく、段階的に変化する。

3) 1)と2)の画像を合算し、特定の明度範囲のみに有効な黄変(もしくは相対的に青い)部分透過マスク画像を作成します。

 → 例えば明度範囲が128-180の間だけ有効な黄変部分補正マスク

 予め補正を行わない明度範囲をマスキングしておいたマスク原稿画像を用意することで、マスク編集作業の手間が楽になると思います。

2. 事前準備

 当然ながら ImageJ (Fiji ディストリビューション) をインストールしておいてください。またプラグインファイルは、こちらからダウンロードして下さい。そしてこのインストールフォルダ (Fiji.App) の下の Plugins フォルダにダウンロードしたプラグインを解凍し、コピーします。

3. プラグインの実行

1) ImageJの[Plugin]メニューから、先ほどインストールしたプラグインを起動します。メニューの下の方に「Additional adjst Yellow mask Maker V0.1」表示されているはずですので(前のバージョンは V0.01でした)、それをクリックします。

f:id:yasuo_ssi:20210318083832j:plain

ImageJメニュー表示

2) 予め、ImageJでファイルを読み込んでいなければファイル選択ダイアログが出るので、そこで対象となるファイルを選択します。ファイルサイズが大きいと選択してからファイルが開くまでちょっと時間がかかることがあります。あらかじめ読み込んであれば、選択ダイアログが出ることなく次へ行きます。

3) すると、下記のようなダイアログが出ますので、明度範囲を決定するための対象チャンネルを選択します。選択肢は、RGBtoGRAY, Blue, Red, Greenです。黄変マスクであれば通常は Blue もしくは RGBtoGRAY を選択します。

f:id:yasuo_ssi:20210318084707j:plain

明度範囲決定対象チャンネルの選択ダイアログ

 

4) 対象チャンネルを選択すると、以下のようなプレビュー画面を伴った閾値決定ダイアログが出ます。

f:id:yasuo_ssi:20210318085336j:plain

閾値決定ダイアログ

一番上、[Yellow Mask Threshold] は、黄変 (または青色部分) マスクの、どこからを透過させるか決定する閾値を決めるパラメータです。0に設定すると、Bチャンネルの値と、R と G チャンネルの平均値を比較して、Bチャンネルがそれを下回るところから透過させて(画面上は白っぽく)いきます。式でいうと (r + g) /2 - b で各ピクセルの値を決定します。この閾値を 10 とか 20に引き上げると、やや黄色くないところから透過を始めることになります。式でいうと、閾値をα とすると ((r + g) /2  - b) + α つまり透過量を 閾値を 0 に設定する時よりも α 引き上げる、ということに等しくなります。

 なお、経験的には閾値を 0 に設定したマスクを使って黄変部分の黄色味を減らす補正を掛けると、黄色いところと黄色くないところの境界が強調される傾向にあるので、この閾値は 10ないし20程度に設定するのが適切です。10~20のどの値が適切かは実際にマスクを掛け補正してみて補正の効き具合を見て決めてください。補正の効きが悪いと思ったら、閾値を引き上げてください。ただやりすぎは禁物ですので、寸止めぐらいの補正を心掛けた方が良いと思います。

 次のチェックボックス、[Mask invert for blue mask] はマスク画像を反転し、青色部分透過画像を作成します。式でいうと、黄色マスクが ((r + g) /2  - b) + α だったのに対し、b -((r + g) /2) + α の式でマスク画像を作ります。

 次のスライダー、[upper threshold of mask]、[lower threshold of mask]、は前のダイアログで選択したチャンネルに基づいて (つまり今のプレビュー画面に表示されているチャンネルです)、マスクが有効な範囲の閾値を設定します。スライダーを動かすと以下のようにプレビュー画面が二値化されます。upperは、マスクが有効な閾値の上限、lowerは閾値の下限になります。透過する部分が白、不透過の部分が黒で表示されます。

f:id:yasuo_ssi:20210318093553j:plain

閾値プレビュー画面

 上のケースは電車の窓の上下の部分に焦点を当てて、閾値の上限と下限を設定しているところです。

 なおプレビュー画面は横幅1200ピクセル、ビット深度は8bitに固定されていますが、これは実際のファイル加工に影響を与えません。プレビューの際に実際の画像を見せると処理が重くなるので、それを避けるために小さい画像でプレビューさせています。また閾値の数値も8bitの値で示していますが、16bitの画像であれば、実際の加工時にはちゃんと値を変換して適用されます。

 その下に[preview]チェックボックスがありますが、これを外すとスライダーを動かしてもプレビュー画面に反映されません。

 [Show working windows?]は、プラグイン実行中作業ウィンドウを表示するかしないかを決定します。

5) OKボタンを押すと、ファイルの作成作業に入ります。

4. 作成されるマスク画像ファイル

・実行が終わると、元画像と同じフォルダに以下の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になる)

・以下、電車の青い色部分を主対象としたマスクの事例を掲示します。

f:id:yasuo_ssi:20201202100021j:plain

マスク作成元の 一旦Bチャンネル再建法を適用した画像
微妙にまだ黄色味が取り切れていない部分がある

f:id:yasuo_ssi:20210208114404j:plain

閾値 +15 の黄色補正マスク

f:id:yasuo_ssi:20210208114442j:plain

Bチャンネルの明るさの閾値が 65 から 96 の範囲の明るさゾーンマスク

f:id:yasuo_ssi:20210208114629j:plain

 上の2つの画像を合成して作成した、有効範囲がBチャンネルの明るさの閾値が 65 から 96 に限定された、閾値 +15 の黄色補正マスク素材画像

・なお、[Lowest Threshold of L Zone], [Highest Threshold of L Zone]の設定値によって、画像の全範囲が指定されると、プラグインは次のようなエラーメッセージを出力して終了します。

 "Selected ROI (Region of Interest) is missing."

 この場合、上の一番最初のファイルのみ作成して終了します。

5. 補正へのマスクとしての適用

プラグインを実行して出来たマスク原稿用の画像ファイルを、実際の補正マスクとしてレイヤー編集をサポートしたフォトレタッチソフト(GIMP, Photoshop等)上で補正対象画像にマスクとして読み込み、さらに必要のないところを塗りつぶします。なお、GIMPでマスクとして貼り付ける場合は、3月5日に、簡単に画像ファイルをマスクとして貼り付けられるプラグインを公表しておりますので、導入を強くお勧めします。

・次の図は、上の画像を加工して電車の青色部分のみ補正するマスクとした事例です。

 

f:id:yasuo_ssi:20210208120148j:plain

上のマスク素材画像を加工した電車青色部分補正マスク

・また、壁面補正マスクの作成例も提示します。

f:id:yasuo_ssi:20210208120944j:plain

有効範囲がBチャンネルの明るさの閾値が 82 から 117 に限定された、
閾値 +20 の黄色補正マスク素材画像

f:id:yasuo_ssi:20210208121006j:plain

上の画像を加工して作成した壁面黄色部分補正マスク

f:id:yasuo_ssi:20210208174823j:plain

GIMP上で補正レイヤー & マスクを使って補正中

6. 補足

 

 なお、本ツールで originalfilename_Mask_Thr_Y+z_x4.tif が得られますので、黄変部分補正マスク作成ツールおよび青色部分マスク作成ツールを兼ねることができます。

 最後に2021.2.1にアップした画像を、今回のプラグインを使って再調整した画像をお見せします。

f:id:yasuo_ssi:20210208174256j:plain

今回のプラグインを使って再調整した結果

f:id:yasuo_ssi:20210208144624j:plain

上の再調整画像をRawTherapeeに掛け、トーンカーブ補正 & フィルムシミュレーションに掛けて補正した最終結

 前回と今回では、Bチャンネル再建法を適用した画像を出発点としているのは同一です。前回は色域指定で3つの補正レイヤーを追加しましたが。今回は、電車の青色部分補正のレイヤーと壁面等の補正のレイヤーの2つを追加して補正しています。最後にRawTherapeeで仕上げているのも同じです。当然ながら、どちらかの方法が間違っているという訳ではないので、大きな差はありません。ただ色域指定だとアドホックな感じがありますが、こちらの方だと若干組織的に補正した感があるというところかと思います。どちらの方法を使うかは好みの問題かと。ただ今回マスク作成ツールの利便性がアップしましたので、好みの問題ではありますが、色域指定を使うよりは調整が簡単だと感じられる方もいらっしゃるかと思います(前のバージョンではマスク作成ツールを使う利便性が明らかに下回っていました)。

 因みにそもそもBチャンネル再建補正に掛ける前の、オリジナルの黄変写真はこちらです。

f:id:yasuo_ssi:20201202095824j:plain

オリジナル

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

 2021.3.5に画像ファイルを簡単にレイヤーマスクとして貼り付けるGIMPプラグインを公表しました。このプラグインを使うと簡単に画像をマスクとして貼り付けられます。こちらをご覧ください。

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

 なお、本記事で紹介した写真補正技法やソフトウェア (Plug-in) は、個人的および非営利用途であれば、自由に使っていただいて構いませんが、本技法を使って何らかの成果 (編集した写真等) を公表する場合は、本記事で紹介した技法を使った旨クレジットをつけて公表していただくことをお願いします。

 また、本ソフトウェアは現状のまま提供されるものし、作者はこれを使ったことによるいかなる損害補償等にも応じられないことを了解の上使っていただくものとします。
 但し、もしソフトウェアのバグがありましたら、ご連絡いただければなるべく改善するよう努めたいと思います。