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

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

決定版! 不均等黄変・褪色ネガ写真のデジタル補正術 (6-2) (2021.12バージョン)

f:id:yasuo_ssi:20210310145522j:plain

お知らせ

 本記事は 2021年12月に改訂した新バージョンです。いろいろな情報を追加で盛り込んだ結果分かりにくくなってしまいましたので、整理しなおしました。なお改訂前の記事とは異なり、GIMPとともに、ImageJ対応・相対RGB色マスク作成ツールを併用した編集方法に統一しました。以前の記事 (GIMPの色域指定を使った編集 - 2020.8版) をご覧になりたい方はこちらをご覧ください。

目次

1. 本連載記事の概要 

2. 今まで紹介されてきた経年劣化による変褪色写真の補正術 

3. 写真補正の原理    

4. Bチャンネル再建法による不均等黄変・褪色ネガ写真補正の方法                

5-1. Bチャンネル再建法による具体的な補正実施手順 - 準備   

5-2. Bチャンネル再建法による具体的な補正実施手順 - ImageJによる作業

5-3. Bチャンネル再建法による具体的な補正実施手順 - GIMPによる作業

6-1. 追加マニュアル補正の実施 - 補正不完全の原因分析と追加補正方針の決定

6-2. 追加マニュアル補正の実施 - 追加編集作業の実際 (本記事)

補足. GIMPの代わりにPhotoshopで不均等黄変画像の編集を行う

補足. Bチャンネル再建法 補正ツール簡易版

補足. 標準的なBチャンネル再建法(+汎用色チャンネルマスク作成ツール)による黄変写真補正過程

チュートリアルビデオ. 決定版! 不均等黄変・褪色ネガ写真のデジタル補正術・チュートリアルビデオ

6. 追加マニュアル補正の実施

6.2. 追加編集作業の実際

6.2.1 GIMPにおける疑似非破壊画像編集法

 GIMP の現行バージョンは Photoshop と異なり、調整レイヤーという概念がありません。このため画像編集を行うと必ず編集対象画像のピクセル値が変化します。これを補完するための編集の方法については、前の記事では、記事の中で書いていましたが、改訂版の本稿では、ここに掲載すると煩雑になりますので、以下にまとめておきました。ご参照ください。

yasuo-ssi.hatenablog.com

6.2.2 相対RGB色マスク画像作成ツールを使った追加色調補正

 本サイトでは2021.7に、追加補正をサポートする拙作の、ImageJ対応・相対RGB色マスク作成ツールを公開しておりますが、このツールを使ってBチャンネル再建法不均等黄変補正の副作用であるB-G値の接近を修正する追加補正を行います。GIMP はファイルサイズが大きい画像ですと、色域指定に非常に時間がかかることがありますので、本稿では編集方法を変更しました。ツールの導入方法は下記の記事をご覧ください。

yasuo-ssi.hatenablog.com

 以下、人物写真の事例1と、風景写真の事例2に分けて技法を紹介します。

■事例1 人物写真補正のケース

 まず、前回例示した人物写真のケースです。なお事例1の写真に関しては転載は一切ご遠慮ください。

 
前回例示の Bチャンネル再建法適用補正例

 すでに前回 (6-1) で分析したように、このケースの場合、不均等黄変補正後のB-G値の接近により、ファイルは肌の色のBが高くて色がくすむ一方、法被青のB値が低すぎて黄色っぽくなっていることが明らかになりました。そこでImageJ 対応 相対RGB色マスク作成ツールをつかって法被部分を補正するB透過マスクと、肌を補正するR透過マスクを作ることにします。このため2つの補正レイヤーを追加して補正することになります。

 まず法被部分を中心とするB透過マスクですが、一旦できている黄変補正済みTIFFファイルを基に作成します。ImageJを立ち上げ、相対RGB色マスク作成ツールプラグインを起動します。

f:id:yasuo_ssi:20211208224234p:plain

相対RGB色マスク作成ツール プラグインの起動

 次に、ファイル指定ダイアログが開くので、補正元ファイルを選択します。するとファイルを読み込んだ後、次のようなダイアログが出ます。

f:id:yasuo_ssi:20211207163841p:plain

チャンネル指定ダイアログ

 まず、ここでは法被等補正用のBチャンネル透過マスクを作りたいので、Select Target Channnel for Mask で Yellow/Blue を指定し、Select Target Channnel for deciding upper & lower threshold でBlueを指定します。

 すると以下のダイアログが出ますので、ここでは青い部分を透過させるマスクを作りたいので Mask invert for Blue mask にチェックを入れます。ここにチェックを入れ忘れると、黄色い部分を透過するマスク画像になってしまいます。さらにスライダーを動かしてマスクが有効な範囲のBlueチャンネルの明度の閾値を指定します。プレビュー画像の白い部分が透過する範囲、黒い部分が不透過な部分なので、プレビューを見ながら、スライダーを動かして調整します。なお、マスクを掛けたレイヤーに対し色の調整を掛けると、調整が有効になるのは透過範囲(白い部分)です。 したがって法被部分がすべて白でカバーされるとともに、補正しなくてよい部分の黒い領域が最大になるよう、ぎりぎりのラインを狙って調整します。

f:id:yasuo_ssi:20211205230250p:plain

相対RGB色マスク画像作成ツールを使いB透過マスク作成

 パラメータは、何度か試行した後、上記の図通りに行いました。 法被の部分が結構黄色 (→緑色) くなっている部分がありますので、Bマスクの閾値を+40と多めに取りました。そうでないと法被の黄色(緑色)っぽくなってしまった部分をカバーしきれません。上のプレビューで法被の部分をすべて覆ったではないかと思われるかもしれませんが、プレビューの白い範囲がそのまま透過範囲になるのではなく、この範囲からさらに、相対的に青い部分のみが透過したマスクになりますので、ここでは、相対的にどの程度青い範囲を透過部分に含めるかを指定するのです。+の値を与えるとより青みの少ない(黄色っぽい)範囲まで含める(より範囲が広がる)ことになります。

 次に肌の部分を補正するR透過マスクを作成します。再び、プラグインを起動して補正元のファイルを指定した後、次のチャンネル選択ダイアログでは、以下のように選択します。

f:id:yasuo_ssi:20211207164809p:plain

チャンネル選択ダイアログ

 肌部分等補正用のRチャンネル透過マスクを作りたいので、Select Target Channnel for Mask で Cyan/Red を指定し、Select Target Channnel for deciding upper & lower threshold でRedを指定します。

 OKを押して次に出てくるダイアログで、Mask invert for Red mask にチェックを入れます。そしてB透過マスクと同じ要領でパラメータを調節します。

f:id:yasuo_ssi:20211205230546p:plain

相対RGB色マスク画像作成ツールを使いR透過マスク作成

 パラメータは上の図をご参照ください。Rマスクの閾値はデフォルト通り (+10) です。但し、透過率をデフォルトより上げ 1.5 としました。

 次にGIMPに読み込んでおいた黄変補正済み編集ファイル(オリジナルの補正元ファイルではありません)の背景レイヤーを、もう二枚複製します。

f:id:yasuo_ssi:20211206061025p:plain

レイヤーの複製

 その一つにはImageJで作ったB透過マスクを、もう一つにはR透過マスクを掛けます。

f:id:yasuo_ssi:20211206061119p:plain

ImageJで作成した画像をマスクとして読み込む

 なお、上で示しているGIMPには、「マスクとして読込む」コマンドがメニューにありますが、これはマスク読み込み用の拙作プラグインを導入してあります。通常では「マスクとして読込む」メニューはありません。このコマンドをクリックして、それぞれのレイヤーにB透過マスク用画像と、R透過マスク用画像のファイルを指定して読込み、マスクを掛けます。なお、このプラグインの導入法は下記をご覧ください。

yasuo-ssi.hatenablog.com なお、どのファイルがどのファイルなのか、そのファイル名については、詳しくは相対RGB色マスク作成ツールの説明ページをご覧いただきたいと思いますが、基本的には下図のように、 ...... B ...... Mask_binded.tif (B透過マスクファイル)と、 .... R .... Mask_binded.tif (R透過マスクファイル)とあるファイルがマスク用画像ファイルになります。

f:id:yasuo_ssi:20211206061323p:plain

ImageJで作成した画像をマスクとして読み込む (2)

 マスクを掛けるとレイヤーダイアログが以下のように表示されます。なお、分かりやすいように、レイヤー名を変更しておきました。

f:id:yasuo_ssi:20211205230850p:plain

マスクを掛けたレイヤーダイアログ

 この後、B透過マスク、R透過マスクを編集して、補正しなくてよい部分を黒 (あるいは灰色[→この場合は補正量が減る]) で塗りつぶします。なお、マスクを編集する際は、レイヤーダイアログ上で編集するレイヤーの上にカーソルを置き、右クリックしてコンテキストメニューを表示し、[レイヤーマスクの表示] および [レイヤーマスクの編集] の両方に、x をつけてください。

f:id:yasuo_ssi:20211207171842p:plain

マスク編集 & 表示指定

 編集済みのマスクは下記の通りです。なお編集が終わったら、再びコンテキストメニューを表示して、[レイヤーマスクの表示] および [レイヤーマスクの編集] の両方の x を外します。外さないと、次の色調補正ができません。

f:id:yasuo_ssi:20211205231054p:plain

編集済みB透過マスク
主に法被部分補正用

f:id:yasuo_ssi:20211205231140p:plain

編集済みR透過マスク
主に肌部分補正用

 この両者がかかった補正レイヤーに対して、まずB透過マスクを掛けた補正レイヤーにはトーンカーブを使ってBチャンネルの値を上昇させます。法被などが青くなってきました。

f:id:yasuo_ssi:20211205231325p:plain

B透過マスク付レイヤーの補正中

 次にR透過マスクを掛けた補正レイヤーにはトーンカーブを使ってBチャンネルの値を下降させます。肌に黄色味が増し、生気が出てきました。

f:id:yasuo_ssi:20211206061804p:plain

R透過マスク付レイヤーの補正中

 一番下のオリジナルレイヤー、Bマスクレイヤー、Rマスクレイヤーを合わせて表示すると下記のようになって完成です。

f:id:yasuo_ssi:20211206074427p:plain

事例1 レイヤー編集模式図

f:id:yasuo_ssi:20211205231738p:plain

補正合成結果

因みにオリジナル画像は以下にあります。比較してみてください。

udimac.livedoor.blog

RGB値も測ってみました。

 

 この画像をさらに改善するには、一旦フリーのRaw現像ソフトに読み込んでトーン調整等を行うことをお勧めします。というのは、これらのRaw現像ソフトでトーン調整を行うと、編集過程で生じたトーンジャンプを補間する効果があるからです (GIMPではないようです)。次の事例でRaw現像ソフトを使ったトーン調整を含めてご紹介します。

■事例2 風景 (鉄道) 写真のケース

 次のケースですが、Bチャンネル再建法を適用すると下図のようになりました。そこでまず、Bチャンネル再建法で補正したファイルのRGB値を計測します。このファイルを見ると、草などの緑の部分のRGB値が、BとGが非常に近い値を取っています。通常植物の緑は、陰でない限り、G, Rが高く、Bが低いので、このケースの場合、差がほとんどない点が問題です。この写真は6月に撮っているので、GとBの差が新緑ほど大きくはないはずですが、それでも差が少なすぎます。典型的なBチャンネル再建法の副作用です。

f:id:yasuo_ssi:20210515203626p:plain

Bチャンネル再建法適用後のRGB値

 因みに、通常であればどのようなRGB値になるかを把握していることは補正方針を決めるにあたって重要です。例えば、肌色はRが高く、Gがそれより低く、Bがさらに低いのが通常です。新緑と並んで肌色も、BとGチャンネルに値が近づくBチャンネル再建法で影響が出やすいところです。この参考のために、色のレファレンスに関する記事を書いておりますので、ご参照ください。

 ここから汎用色チャンネルマスク作成ツールの出番です。この補正を掛けたファイルを基に、色の冴えない近景の緑部分を補正するマスクを作成します。遠景の山が入らないようにグレースケールで明度範囲を0-112に設定しました。マスク自体はGを透過するマスクです。

 なお、以下の補正過程に関しては、ビデオも用意しました。

youtu.be

f:id:yasuo_ssi:20210624091759p:plain

汎用色チャンネルマスク作成ツールのチャンネル選択画面
ここではマスク作成対象チャンネルに Magenta/Greenを指定し
輝度ゾーン範囲指定対象チャンネルに Greenを指定

 

f:id:yasuo_ssi:20210624092550p:plain

パラメータ指定画面

 

f:id:yasuo_ssi:20210515200717p:plain

輝度範囲 0 -112 / G閾値+40で作成されたマスク

  Gの閾値は+40 でG透過マスクを作成しました。なお、Gチャンネルを使った色透過マスク (グリーン or マゼンタ透過マスク) を作成するときは、他のチャンネルを使ったマスクより閾値を+20程度多めにした方が良いです。なぜならGチャンネルは他の2チャンネルと相関が高い一方、BとRチャンネルの相関は低い傾向にあります。そして汎用色チャンネルマスク作成ツールでは、チャンネルとの明度差に基づいてマスクを作成しますので、他チャンネルとの相関が高いGチャンネルを使ったマスクは透過度が低めになる傾向にあるのです。従ってGチャンネルを使う色マスクの閾値は30~40程度が適当です。

 ちなみに、いくつかの風景写真を調べてみましたが、G-R間の相関が最も高く、次がG-B間、そしてB-R間の相関が最も低い傾向にありました。ただし画像によっては、G-B間が最も高く、次がG-R間になるケースもありました。その場合でもB-R間が最も相関が低いことは変わりません。この原因は、植物の緑は、人間の直観とは異なり、G-R間の相関が意外と高く、G-B間の相関は低い傾向にあります。そのため、植物の緑が多い風景写真はG-R間の相関が最も高くなる傾向がある一方、植物の緑が少ない都市の風景などは、G-B間の相関が最も高くなる可能性があります。なお当然ながらこの傾向は風景写真に限られ、例えば人工的な原色のオブジェを間近に撮影した写真などはこの傾向から逸脱する可能性があります。

 そして、もともと、G-B間の相関が最も高い画像は、Bチャンネル再建法適用後、コントラストや明るさ、露出調整だけでOKになる可能性がありますが(例えば、Bチャンネル再建法紹介記事の1番目のサンプル写真)、G-R間の相関が最も高く、G-B間の相関が比較的低い画像は、基本的に汎用色チャンネルマスク作成ツールによる追加補正は、必至だと考えてよいでしょう。 

f:id:yasuo_ssi:20210515201817p:plain

GIMP上でグローバルにBチャンネルに対し、
S字状のトーンカーブで補正中

 まず、植物の緑におけるG値とB値の値を引き離す意味と、スキャナ自動補正の副作用で全体にややブルーがかっているのを補正する意味で、グローバルにBチャンネルの値を調整して補正します。読み込んだBチャンネル再建法適用後のレイヤーを直接補正するのではなく、一旦、そのレイヤーをコピーし、コピーしたレイヤーに対しグローバルに補正を掛けるとよいでしょう。ただし、空の部分のB値はもう少し高くてもよいので、Bチャンネルに対しトーンカーブ補正ツールで緩いS字状にトーンカーブを掛けます(上図)。つまり中間値(知覚的ガンマ補正が行われている場合で、B値が128 / 50%前後)より上はややB値を上昇させ、中間値より下はややB値を下げます。これにより全般的な青被りがかなり改善されます。なお、全体に青被りがなかったとしても、この緩いS字状のBチャンネルに対するグローバル補正は、植物の緑の多い風景写真では普遍的に適用されるべき重要なキーポイントです。

f:id:yasuo_ssi:20210515202008p:plain

Bチャンネルを一旦グローバルに補正した結果

 これでも、まだ緑部分が結構青っぽいですが、ここで無理にグローバルに黄色っぽくするのではなく、あとは汎用色チャンネル補正マスク作成ツールで作ったマスクによるローカル補正に任せます。

 そこで、グローバルにBチャンネルを補正したレイヤーの上に、一旦Bチャンネル再建法適用後のBチャンネル補正前の画像をレイヤーとしてコピーし、それに先ほど汎用色チャンネルマスク作成ツールを使って作成した、グリーン補正マスク画像をつけて、グリーン補正レイヤーを作ります。なお、こちらにある画像ファイルをマスクとして読み込む拙作のGIMPプラグインスクリプトを導入していると、以下のように簡単にマスクを掛けることができます。以下このプラグインを使ってマスクを掛ける過程を画像で提示します。

f:id:yasuo_ssi:20210624150545p:plain

マスクを掛けるレイヤーを選択した状態で
マスクとして画像ファイルを読み込むプラグインを起動する

f:id:yasuo_ssi:20210624150633p:plain

マスクとして読み込む画像ファイルを選択する
選択したら[保存]ボタンを押す

f:id:yasuo_ssi:20210624155746p:plain

ファイル読込中

f:id:yasuo_ssi:20210624155851p:plain

マスクがかかった状態

 このG補正レイヤーに対しトーンカーブ・モジュールで、B値を引き下げ、またG値、R値は引き上げます。今回はマスク画像は編集せずにツールで作成したままマスクとして貼り付けますが、場合によってはマスク画像を編集した方が良いでしょう。

 以前お見せしたような、人工的な黄変画像の場合は、B値だけが異常であり、R, G値は正常であることが保証されていますので、B値のみをいじればよいですが、今回の場合はスキャナの自動補正の反作用がありますので、G値やR値も補正を掛けます。ただこの場合は反作用の程度はさほど大きくないので、G値やR値の補正量は控えめでよいと思います。逆に言えばスキャナの自動補正による反作用がなければ、ローカルなB値の引き下げだけで済むかもしれない、ということです。場合によっては下図より大胆にB値を引き下げてもよいと思います。

f:id:yasuo_ssi:20210515201505p:plain

GIMP上で緑部分に対し、R, G, Bトーンチャンネル、トーンカーブ補正中

 以上のように補正したグローバル補正レイヤーとG補正レイヤーを合成して、第2次補正ファイルを作成します。

f:id:yasuo_ssi:20210616160443p:plain

事例2 レイヤー編集模式図

 この結果が下図です。上から順に、G部分補正レイヤー、そしてBチャンネルにS字補正を掛けたグローバル補正レイヤーの2枚のレイヤーを合成した画像です。かなりナチュラルな画像になりました。写真は6月の曇天下で撮ったものですが、色彩バランスは、やや彩度不足気味なのと、空が若干ピンクに偏っていますが、まずまず妥当ではないかと思います。

 なお、画像によってはもっとたくさんの補正レイヤーを作成する必要があると思います。そのような場合のケースについては別記事にて紹介していますのでご参照ください。ここでは、追加補正の基本をお示しするために、もっとも単純な、グローバル補正レイヤー+G補正レイヤーの2枚の補正レイヤーのみを使う事例を扱っています。

f:id:yasuo_ssi:20210515201311p:plain

GIMP補正完了状態

・Raw現像ソフトを使った最終調整
 この後、フリーのRaw現像ソフトを使って、さらに全般的なホワイトバランスやコントラストを補正していきます。今回は比較的素直な画像ですので darktable を使ってみます。最後にRaw現像ソフトを通すのは、最終調整がやりやすいということ、および諧調補完・増強効果が大きい (私がこの効果を確認しているのは RawTherapee (または ART) と darktable のみで、他の市販のRaw現像ソフトでどうかは未確認ですが) という2点が理由です。RawTherapee or ARTと darktable の両者のうち、使いやすいほうを使っていただければと思います。なお、個人的な感想として、さらにRaw現像ソフトで色の調整の追い込みが必要な場合はRawTherapeeやART (RGBカーブが使いやすいので)、ほぼこれ以上色の調整が不要な場合はdarktableが良い結果を得られやすいように思います。f:id:yasuo_ssi:20210515202444p:plain

darktableで補正中

 コントラストがはっきりしてかなりしっかりした画像になりました。

f:id:yasuo_ssi:20210515202715p:plain

完成画像

 6月の曇天下の画像としては、ナチュラルで妥当な画像になったと思います。比較のため再度オリジナルも下に掲示します。黄変もきれいに消えているのが分かります。かなりいい感じに補正できました。

f:id:yasuo_ssi:20200720223934j:plain

オリジナル

 皆さんもぜひ当記事の情報をご覧いただき不均等黄変褪色写真の補正に挑戦してみてください。また事例1のサンプル写真を提供していただいたudiさんには深く感謝申し上げます。

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

 なお、黄変部の濃度が高く、Bチャンネル再建法の適用だけでは黄変が取り切れない場合があります。その場合は追加補正の中で、その黄変を取っていきますが、そのようなケースに関しては以下の補正例をご参照ください。なお、一見さほど濃度がさほどでないように見えても、取り切れないケースがあります。

yasuo-ssi.hatenablog.com