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

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

Bチャンネル再建法補正ツール Ver. 4.5x の前景補正マスクについて

f:id:yasuo_ssi:20210310145522j:plain

 Bチャンネル再建法補正ツールの今回のバージョンアップで、エキスパートモードにおいて前景補正レイヤーのマスクのタイプの選択が可能になりました。Mask type for foreground correction layer というパラメータがそれです。

ImageJ用プラグイン パラメータ入力ダイアログ
(エキスパートメニュー)

 これを機に、本ツールで採用している、それぞれのマスクがどのようなものかについて解説します。まず、オリジナルのサンプル画像です。

オリジナル

 元々、従来アルゴリズムで採用されていた前景補正レイヤー用マスクはRチャンネルに128の値(Max: 255のスケールで)を加えたものでした。それがType1です。

マスク Type1

 このマスクを最初に考えた理由は、Gチャンネルを半分以上Bチャンネルにミックスして補正を行うので、なるべく補正したBチャンネルとGチャンネルとの間で色の多様性を確保するという理由からでした。

 しかし、今回ハイブリッド補正アルゴリズムでは、以下のType2マスクをスタンダードとして採用しました。Bチャンネルの明度値がGチャンネル値を上回る部分の補正を抑制する(マスク画像上では黒い部分)マスクです。

マスク Type2

 考え方としては、黄変はBチャンネルの明度値が本来の値より低下して発生します。そしてGチャンネル情報をミックスすることでBチャンネルの低下した値をある程度上昇させて補正しようとしているわけですが、同時に、本来Bチャンネルの値がGチャンネルより高い部分もミックスさせることで、必要もないのにBチャンネルの値が下がってしまいます。その結果、できた画像は、単純にBチャンネルにGチャンネルを代入した結果に近くなってしまいます。それを避けるために元々Bチャンネルの値がGチャンネルより高い部分は補正を抑制しようというのがこのマスクの考え方です。

 具体的には図を見ていただくとわかりますが、電車の車体や手すりの青い塗色、山の遠景などがマスクされています。

 なお、このマスクを掛けると黄変部分は良いのですが、ご覧のように周辺のBチャンネルの情報抜け(Bチャンネルの値が褪色により異常に明るくなる)部分も、補正が抑制されます。これに関しては、周辺補正レイヤーを使ってBチャンネル値を修正します。

 

マスク Type3

 上の Type3 マスクは、植物の緑保護マスクです。植物の緑、特に明るい黄緑色の若草などは、R, G値に比べ、B値が低い特徴があります。しかし、GチャンネルをBチャンネルにミックスするとやはりB値が必要以上に上昇し、植物の緑が青緑に近づきます。そこで、Gの相対値が高い部分のみを不透過にし、補正を抑制するマスクです。相対的に緑色が強いほどマスクの色は黒くなります。これにより、B値がなるべく低いままに抑えることを狙っています。ご覧のように緑の濃い部分ほどマスクが黒っぽくなっています。

 植物がほとんど写っていないような画像では使わない方が良いです。

マスク Type4

 マスク Type4 は、Type2 と 3 を合成したマスクです。B値がG値より高い部分並びに、相対的に緑が強い部分の両者の補正を抑制します。ノービスモードのデフォルトに、[Preserve plants green] にチェックを入れると、このマスクがかかります

 

 なお、黄変が画像のごく一部に限られる場合、前景および遠景補正レイヤーで、補正を適用しない部分を黒塗りにすると、その部分の補正をスキップすることができます。

 

 次に遠景(background)補正レイヤー用マスクです。

遠景補正レイヤーマスク

 このマスクについては、従来と変更ありません。基本的に空や遠く見える山などの部分を中心に補正することを想定しているレイヤーですので、標準的中間グレー点である128 (知覚的TRCがかかっている場合=50%)を基準にしたバイナリーマスクを掛けています。近景部分は、マスク編集で、黒く塗って編集して使用されることを想定しています。中間グレー点が標準的ではないようなケース (全般的に明るい or 暗い) では、この値 [Background threshold] を変更することができます。なお、知覚的TRCがかかっていないリニアな画像では中間グレー点は18~19%とされています。

 また、中間グレー点が標準的でない場合、例えば Windows であれば、有名なフリーの画像ビューワー、Irfanviewヒストグラムを使うと明るさの平均値が出ますので、それで計測できます。

 

 次は周辺補正レイヤーです。

周辺補正レイヤー

 このままマスクなしに使用すると、ほぼBチャンネルの代わりにGチャンネルを代入したのと近い画像になります。従って周辺部分のみを生かすためにマスクがかかっています。

 以下デフォルト値の周辺補正レイヤーにかかるマスクです。

周辺補正レイヤーマスク (閾値10)

 上の図は、周辺補正レイヤーマスクの閾値がデフォルトの10になっている状態です。このマスクを単純に編集せずに周辺補正レイヤーに適用すると下図になります。

周辺補正レイヤー+マスク(閾値10)

 これだと、周辺のみならず中央の電車のブルーも低く補正されてしまう(→色が黄色になる)ので当然まずいです。従って上のマスクの中央部分を黒塗りし、周辺のみ残るようにします。編集したマスクと周辺補正レイヤーを合わせたものが下図です。

マスク編集後の周辺補正レイヤー+マスク

 これを、他の補正レイヤーに重ねることで、周辺部分のBチャンネル抜けを補正していきます。因みに周辺補正レイヤーマスクの閾値を下げるとどうなるでしょうか...

周辺補正レイヤーマスク (閾値 -10)

 周辺補正レイヤーマスクの閾値を下げると、マスクが暗くなります。ということはマスク適用の周辺補正レイヤーの濃度が薄くなる、ということです。周辺補正レイヤーの濃度が濃すぎる場合は、閾値を下げる方向に調整して薄くします。または、GIMP上で、できた周辺補正レイヤーの透明度を下げることでも同様な効果が得られます。

 因みに周辺補正レイヤー未適用の合成画像が下図です。

周辺補正レイヤー未適用の合成画像

 下端を中心に妙に明るくなっているのが分かると思います。

 これに周辺補正レイヤーを重ね合わせると...

周辺補正レイヤー適用後の合成画像

 妙に明るくなっている部分が補正されました。これをもとに三原色合成を行うと下図のようになります。

上の合成画像をBチャンネルとした
Bチャンネル再建法適用画像

 さらにマゼンタ被りの除去などの追加補正を加えると、下図のようになります。

追加補正後