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

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

【ブログ開設2周年】 不均等黄変ネガカラー写真補正・Bチャンネル再建法ツールの新バージョン公開 (新アルゴリズム実装版)

f:id:yasuo_ssi:20210310145522j:plain

 本日、7月17日は、当ブログを2020年に開設してから2周年になります。2020年の夏に本ブログの開設直後に、不均等黄変ネガカラー写真の補正ための、Bチャンネル再建法による補正ツールを公開しました(2020/7/21)。それ以来使い勝手の向上のためバージョンアップを重ねてきましたが、基本的なアルゴリズムの変更はありませんでした。しかし、今回、ブログ開設2周年記念ということで、2年ぶりに、Bチャンネル再建法の新しいアルゴリズムを実装したバージョンを公開します。今回からバージョン4.*代とします。

 今までのバージョンのアルゴリズムの基本的な発想は、こちらのページに説明しているように、BチャンネルにGチャンネルの情報をミキシングすることで、毀損したBチャンネル情報の回復を図る、という考え方でした。これを Gチャンネル情報混合アルゴリズム と名付けます。今回の新しいアルゴリズムは、疑似フラットフィールド補正を応用して、Bチャンネルの下がった明度を上昇させることで黄変を取ろうというものです。これを拡張疑似フラットフィールド補正アルゴリズムと名付けます。但し今回のアルゴリズムも万能ではないので、ツールの中では従来アルゴリズムと新アルゴリズムを選択できるようにしました。デフォルトは、Gチャンネル混合アルゴリズム(従来アルゴリズム)です。アルゴリズムだとパラメータも増え複雑になりますので、従来アルゴリズムで十分な効果が得られない場合に使っていただくアルゴリズムと位置付けたいと思います。

-----------

拡張疑似フラットフィールド補正アルゴリズムの長所

 新アルゴリズムの特徴は、

1) 黄変部分の削減効率が高い

 従来のアルゴリズムだと適用しても黄変が取り切れず、さらに相対RGB色マスク画像作成ツールで作成したマスクを併用して、取り切れなかった黄変部分を追加補正する必要がありましたが、新アルゴリズムではその必要性は少なくなりました。但し後述するように黄変の状態によっては、従来アルゴリズムより黄変の削減効果が上がらないケースがあります。

2) マイクロテクスチャが保持されやすい

 従来アルゴリズムに比べ、マイクロテクスチャにおけるB値とG値の接近量が減るため、マイクロテクスチャが保持されやすくなっています。従ってB値、G値間の多様性も、従来アルゴリズムよりも保持されやすくなっています。但し、Gチャンネルをリファレンスにして補正をしているという点は変わらないので、全般的にはB値とG値の接近は発生します。

3) 背景補正レイヤーのマスク編集作業が不要

 従来のアルゴリズムでは、どうしても前景補正レイヤーと背景補正レイヤーを分けて合成させなければいけませんでしたが、新アルゴリズムでは必ずしも背景補正レイヤーを適用する必要はなく、仮に適用するにしても、マスクを編集する必要性は少なくなりました。

 つまり、補正効率、手間の削減という点で性能がアップしています。とはいえ、GチャンネルをレファレンスにしながらBチャンネルを補正するという基本原理は変わっていませんので、B,G値の接近という根本的な副作用は以前としてあります。従って、多くの場合追加補正編集処理が必要なのも従来通りです。しかし、従来アルゴリズムよりは接近の程度は少なくなっているはずです。

 

 しかしこのアルゴリズムも万能ではありません。

拡張疑似フラットフィールド補正アルゴリズムの短所

1) Bチャンネルの毀損テクスチャの回復効果がない

 黄変したフィルムの場合、単に黄変しているだけではなくBチャンネルのテクスチャがひどく毀損している場合があります。しかし本アルゴリズムにはテクスチャ回復機能はありません。このような欠点を補うべく、デフォルトでは 20 % BチャンネルにGチャンネル情報を混合するように設定しています(混合比は調整可能)。しかし、テクスチャの毀損が激しい場合はこれでは到底足りません。テクスチャ回復のための高い混合比が必要なら、最初から従来のGチャンネル混合アルゴリズムを適用した結果が良い結果が得られます。

2) 青い部分が広い面積を占める画像では、補正効果がなくなる

 彩度(Saturation)の高い、青い部分が画面の大きな面積を占める画像では、拡張疑似フラットフィールド補正の原理上、補正効果がなくなります。これは、Bチャンネルの値がGチャンネルの値を下回る部分のみ補正するためです。青い部分が黄変していても、その値がGチャンネルを上回っていると補正を行いません。もっとも黄変が青い部分にかかっていなければ問題ありませんが、この青い部分に黄変が広くかかっているようなケースはアウトです。つまり黄変していたとしても、依然その部分のB値がG値より高いと補正されません。具体例としては、下記のような画像です。

f:id:yasuo_ssi:20201109210402j:plain

アルゴリズムが不適なケース

 あるいは、下記のページに掲げている、青い法被が画面の大きな面積を占めている画像もダメです。しかもこの画像の場合は、Bチャンネルのテクスチャの毀損程度も激しく、新アルゴリズムは全く向きません。

yasuo-ssi.hatenablog.com

 このようなケースでは、従来のアルゴリズムを使用してください。なお、同じ彩度が高いと言っても Chroma が高く、Saturation が低い場合は、拡張疑似フラットフィールド補正アルゴリズムは有効です。例えば、明るい (やや白っぽい) 青空は、Chromaは高いですが、Saturationはさほど高くありません(つまりB-G値の差が少ない)ので、本アルゴリズムは有効です。

 なお、Saturation と Chroma の差については下記の記事をご覧ください。

 

yasuo-ssi.hatenablog.com

3) 細かい斑点状、あるいは粒子状の黄変には補正効果がない、低い

 これも新アルゴリズムの特徴上避けられません。マイクロテクスチャが保持されやすいという特徴の裏面でもあるからです。従来アルゴリズムもこの補正は万全というわけではありませんが、新アルゴリズムは原理的に補正不可能です。これについては、追加補正での対応を考えるか、従来アルゴリズムを使うか、になります。

 手持ちのフィルムだと、フジカラーHR400の黄変の場合、Bチャンネルの粒状性が粗くなることが多く、新アルゴリズムだとあまり良い結果が得られないケースが多いです。黄変の粒状が細かい、あるいはスムーズであるほど補正効果が高くなります。

 これ以外に使い勝手の改善として、一度補正を行うとそのパラメータ設定を保存したサイドカーファイルを作成し、次に補正する時に、補正画像と同じディレクトリにサイドカーファイルを発見すると、最後の補正パラメータを読み込んでデフォルトとして設定するようにしました。

---------

 では、今回のアルゴリズム部分に限った使用法の説明を以下に記します。従来アルゴリズム部分のパラメータ設定に関しては、以前の説明をご参照ください。

1. パラメータ設定画面

パラメータ設定ダイアログ

 新たに設けられたのが、[Extended psedo Flat-field correction parameters]という部分です。ここで、拡張疑似フラットフィールドのパラメータを設定します。

[apply psedo flat-field correction] にチェックを入れることで、新アルゴリズムを適用します。適用しない場合はチェックを外してください。その下のパラメータはいずれもここにチェックを入れている場合のみ有効です。

[sigma for flat-field correction] は疑似フラットフィールド補正を行う際にどの程度ぼかすのか、ぼかしの量を設定します。通常はデフォルトの 20 で良いと思いますが、黄変が取り切れない場合は、増やしたり減らしたりして調整してみてください。

その下の [G mix rate to B] は Bチャンネルのテクスチャの毀損を補うためにどの程度BチャンネルにGチャンネルの情報を混合するか、その比率を指定します。これは前景補正レイヤーに適用されます。黄変が発生しているフィルムは多かれ少なかれBチャンネルのテクスチャの毀損が発生している場合が大多数なのでデフォルト値に0.2を設定しています。なお、ここを0.5以上の値を設定しないとうまくいかないようであれば、従来のアルゴリズムを使うべきです。またBチャンネルのテクスチャの毀損がほとんどなければ、ここは 0 でも構いませんし、そのほうが望ましいです。

[Correction Amout Adjustment] は補正量調整の意味で、デフォルトは Autoになっていますが、場合によっては No、あるいは Manual にして手で補正量を調整することも可能になっています。Manual の場合その下の [Incrementar Amount] で調整量を増やす値を指定します (それ以外の場合は数値は無視されます)。8bit相当値 (0-255) のスケールで値を指定します。通常は Auto で良いと思います。

 ただマニュアルで補正量を増やすと、黄変はより改善されますが、その一方で、画像全体が青っぽくなります。従って、後程ホワイトバランスを掛けた時に、ほとんど効果がAutoと大差ないということもあり得ます。但し補正を一部分だけ掛ける場合はマニュアルでも有効性が高いでしょう。

[Subtract value when B value is higher than G] パラメータの意味は次の通りです。通常拡張疑似フラットフィールド補正では、黄変を補正するために、Bの値がGの値を下回る場合に、その分、B値の値をG値に合わせ引き上げるという補正を行います。逆にB値がG値を上回る場合は補正しません。しかし、ここにチェックを入れると、B値がG値を上回る場合、B値を下げます。

 通常はここにチェックを入れるとBチャンネルとGチャンネルの値がかなり近接するので、望ましくありません。しかし、フィルムの周辺情報抜けが発生している場合、従来の周辺補正方式だと段差ができたりしてうまく補正できない場合、ここにチェックを入れることで、よりスムーズにフィルム周辺情報抜けが補正できる場合があります。

 いくつかの画像で試しましたが、ここにチェックを入れたほうが良いかどうかは、本当に画像の褪色状態によると言わざるをえません。ただなるべく使わないことに越したことはないので、デフォルトではオフになっています。

 この ------------- で囲まれたパラメータ設定部分は、新アルゴリズムを有効にしたときのみ有効なパラメータですので、従来アルゴリズムを使う時は無効となるパラメータです。

 

2. GIMPにおける編集

 ファイルを読み込んだ状態は、従来アルゴリズム、新アルゴリズムで異なった点はありません。

GIMPでファイルを読み込んだ状態

 新アルゴリズムでの違いは、おそらく、背景補正レイヤーは使わなくても良い場合が多いようなので、その場合は目のアイコンのチェックを外して、RGB合成を行ってください。背景を使った方が良いかどうかは実際に可視化/不可視化してみて画像にどのような違いが生じるかで判断して下さい。背景レイヤーを使うにしても、経験的に、従来のように、マスクの前景部分を全部塗潰す必要は少ないように思います。なお、背景補正レイヤーではGチャンネルの混合はありません。

 前景補正レイヤーにかかっているマスクについては、アルゴリズムと旧アルゴリズムでマスクの性質が異なっています。新アルゴリズムでのマスクの役割は、主に植物の緑が多い部分で補正効果を弱めるためです。Bチャンネル再建法で補正を掛けると、どのアルゴリズムでも、BとGの値が接近します。これにより植物の緑が、青緑の方向に寄ります。この効果を弱めるためにこのマスクを掛けています。

 従って、都市部での写真など、人工物の多い環境での画像では、前景補正レイヤーにかかっているマスクを無効にしてください。また自然環境の背景でも場合によっては無効にしたほうが良い場合があります。このあたりは画像によりケースバイケースです。

 また黄変部分が画像の一部に限られていて、補正を掛けるのを一部に限定したい場合は、この前景補正レイヤーを編集し、補正を掛けない部分を黒塗りにすることで、補正部分を限定できます

 これ以外のレイヤーの扱いは従来通りです。また作成されるファイル名も、従来アルゴリズムとの互換性を持たせるために変更ありません。Gimpプラグインに関しても無変更です。

新バージョンのプラグインのダウンロードはこちらから。

 

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

 なお補正結果の比較を行います。

 

事例1

オリジナル

従来アルゴリズム

アルゴリズム

 従来アルゴリズムと新アルゴリズムでは、大差はありませんが、新アルゴリズムの方が若干黄色みが少なくなっているようです。

 因みに前景補正マスクは以下のようになります。

前景補正マスク

 Gの相対的値が高いところほどマスクの不透過率が高くなっていますが、必要に応じて適宜編集しても良いと思います。このケースの場合は遠景の空や山は、白く塗りつぶしたほうがより良い結果が得られたかもしれません。

 さらにマゼンタ除去等の追加補正を行った結果が以下です。

アルゴリズム+追加補正

 ただ、この事例では従来アルゴリズムと新アルゴリズムで大きな差はありませんでした。

事例2

f:id:yasuo_ssi:20210525000043p:plain

オリジナル

 

f:id:yasuo_ssi:20210525000122p:plain

従来アルゴリズム

アルゴリズム

 従来アルゴリズムと新アルゴリズムでは、空の黄色の濃度がかなり高いにもかかわらず、新アルゴリズムでも、黄色味が取り切れていません。むしろ従来アルゴリズムの方がより取れています。これはおそらく残った黄色い部分は細かい粒子状だったためであるようです。またマゼンタ~ピンクがかりの傾向も空を中心に、従来アルゴリズムより強まっています。なお、この場合 Sigma の値を下げると改善する可能性がありますが、これも画像によりけりです。なお、Sigmaを大幅に下げると、結局GチャンネルをBチャンネルに混入する、またはBチャンネルをGチャンネルに置換するのとほぼ一緒になるので、それであれば従来アルゴリズムを使った方が良いと思います。

 で、この空のピンクがかりを追加補正で修正しようとしましたが、従来アルゴリズムより変色残りの色が濃いのと、この変色部分が粒子状であったこともあって、かなり悪戦苦闘することとなりました。以下、マスクを掛けて補正を掛けてみたところ取り切れなかった部分を拡大してみた図です。変色している部分としていない部分がモザイク状に混ざっていますが、こういうケースは新アルゴリズムは苦手です。

取り切れない空の変色部分の拡大

 このようなケースは、従来アルゴリズムの補正結果に追加補正を掛けたほうがはるかに楽で良好な結果が得られます。こちらは新アルゴリズムの完敗です。

 黄色味が一見濃くても、黄変の様態によっては従来アルゴリズムの方が有利な場合があります。

事例3

f:id:yasuo_ssi:20201030170448j:plain

図0. オリジナル

f:id:yasuo_ssi:20201031214533j:plain

従来アルゴリズム

アルゴリズム
(前景補正レイヤーマスク無効化)

 事例2と同じフィルムロールからの画像です。傾向は事例2と似ています。やはり青緑寄りが少ないため、葉の色の鮮やかさもより増しています。なおこのケースの場合は前景補正レイヤーマスクを無効化したほうが良い結果が得られるので、無効化しました。但し、赤~マゼンタ被り傾向が従来アルゴリズムやや強いのも同様です。

 そこで追加補正で、拙作の相対RGB色マスク作成ツールとGIMPを使って、全般的なマゼンタ被りを取るマスクを作成してマゼンタを取るとともに、取り切れない黄色味も取るマスクを作成し黄色味を取り、さらにARTで調整したのが以下の結果です。見た目では事例2とあまり変わらないようですが、変色部分の粒子状のざらつきの程度が大きくなかったため、こちらの追加補正は有効だったようです。

 マゼンタがかった枯草の色を復元するには、マゼンタ被り補正マスクを掛け、G値とR値を上げていくと、マゼンタがかったものが茶色に変わります。

アルゴリズム+追加補正

 この画像は、以前色々な方法で比較補正するサンプルとして使いました。以下のページです。

yasuo-ssi.hatenablog.com しかし、今回の補正結果が、色の豊かさという点で最も優れていると思います。この事例では新アルゴリズムのメリットが明確かと思います。事例2と3では一見すると黄変状況が同じように見えますが(しかも同じフィルムロール)、おそらくテクスチャの荒れで差が出ており、テクスチャの荒れがひどい場合は従来アルゴリズムが、荒れが少ない場合は新アルゴリズムが有利と推測されます。

 実際に、事例2と3で、BチャンネルがどれほどGチャンネルより暗いかを示した図を例示します。

事例2 G-B差

 上は事例2の場合です。植物の緑はBチャンネルの方が値が低いので、黒く見えるのは正常ですが、空はまずBチャンネルの値がGより暗いということはほとんどあり得ませんので、空の黒々としたのは黄変によるものと判断できます。そして、空の部分がかなりざらついているのが分かると思います。

 一方事例3ですが...

事例3 G-B差

 空の黒々とした部分のきめは、全くざらついていないわけではありませんが事例2より明らかに細かいです。これが事例3では新アルゴリズムでそこそこなんとかなる一方、事例2では追加補正を掛けても修正しきれない原因です。ただ事例3は、黄変が事例2より細かいとはいえやはり粒状になっているので、従来アルゴリズムより黄変削減量が弱くなっています。

事例4

 今回の新アルゴリズムで、補正量に大幅に改善が見られたものが本例です。

f:id:yasuo_ssi:20220205234525p:plain

オリジナル

 オリジナル画像はかなり強度の強い黄色に不均等変色しています。まず、従来アルゴリズムです。

従来アルゴリズム

 黄色みは改善したものの、まだまだ取り切れていません。これだけでも変色強めの通常の不均等黄色変色画像並に変色部分が残っています。前の補正ではここからの追加補正にかなり苦慮しました。

 次に新アルゴリズムです。

アルゴリズム

 黄色みは完全に取り切れているわけではないものの、従来アルゴリズムに比べ、大幅に取れています。ほぼマゼンタと赤みの変色が残っている状態です。変色がただこの画像はBチャンネルだけではなく、Gチャンネル、Rチャンネルにもダメージが及んでいるようです。そこで、ネガカラーによく見られる、マゼンタ被りだけではなく、Rチャンネルの補正も追加補正として行います。以下が追加補正結果です。

アルゴリズム + 追加補正

 マゼンタ被りに赤被り、また若干残った黄色みもなるべく除去してみました。具体的には、相対RGB色マスク作成ツールを使って、次のようなマスクを作成して使いました。まずマゼンタ被り補正マスクです。

追加補正のためのマゼンタマスク
G 上昇

 バケツの赤みを避けるようなマゼンタ補正用マスクを作成し(こちら参照)、GIMP上でこのマスクを掛けた、新アルゴリズム適用レイヤーに対し、トーンカーブを使ってG値を値の高い部分を中心に上昇させました。

 そして可視部分をレイヤー化し、そのレイヤーに対し、相対RGB色マスク作成ツールで作成したレッド補正用マスクを掛けます。

追加補正のためのレッドマスク
R下降 & B 上昇

 そしてR値を下降させて赤みを取るとともに、まだ黄色みが残っているので、B値も、明るい部分を中心に上昇させ補正してみました。

 レイヤーの重なりは以下に示します。

アルゴリズム画像補正のためのレイヤーマスク

 この補正結果はやや青い方向によっていますので、最後にARTを使い、全体的なホワイトバランス調整や色の調整、トーンカーブ補正を掛けました。それが下記の結果です。

さらにARTによる調整

 変色部分の色が不均等な感じは、完全には取り切れてはいませんが、まぁまぁなところまで来ました。もうちょっと時間を掛けて丁寧にマスクを作り込めば、より改善するかもしれません。とはいえ、色自体はかなり良い感じに補正できています。しかし、以前かなり時間を掛けて七転八倒しながらこのあたりまで来たのに比べ、大幅にかかる時間が少なくなっています。この画像に関しては、新アルゴリズムによる改善度合いは顕著です。参考までに以前の補正結果を以下に掲げます。

f:id:yasuo_ssi:20220205222049j:plain

以前の調整結果

 以前の調整では、色の不均等を誤魔化すために、彩度を大幅に下げていますが、新アルゴリズム+事後調整では、そのような誤魔化しを行わなくてもかなりいい線まで行っています。

事例5

 こちらはスキャナのおそらく過剰補正で黄色くなってしまった画像です。分かりにくいですが不均等黄変自体も発生しています。

オリジナル

 黄変の補正能力を調べるために、敢えてホワイトバランス補正を行わずそのままBチャンネル再建法ツールに掛けました。まず従来方式です。

従来アルゴリズム適用

 全般的に黄色が取り切れていません。ホワイトバランスを掛ければ取れる範囲ではありますが...

 次に新アルゴリズムです。

アルゴリズム適用

 黄色味はしっかり取れています。黄変部分が粗い粒状になってさえいなければ、基本的に新アルゴリズムの黄変削減能力が高いのが分かります。以上2枚は追加補正は行っていない結果です。

事例6

 こちらは可部線 クモハ11117の写真です。中央3/4がうっすらと黄変している一方、左右両端は若干Bチャンネル情報抜けが発生しているようです。

オリジナル

 まず従来アルゴリズムによる補正から...

従来アルゴリズム

 空の黄色味が微妙に取り切れていません。次は新アルゴリズムです。

アルゴリズム A

 明らかに空の黄色味の残りは少ないです。編集の手間としては、従来アルゴリズムだと、周辺補正マスク並びに、背景マスクの編集が必要でしたが、こちらは背景マスクを使わなくて済むので、編集の一手間が減っています。

 次に新アルゴリズムで、[Subtract value when B value is higher than G] にチェックを入れています。

アルゴリズム B

 微妙に新アルゴリズムAより全般的に緑っぽいような気がしますが、大差はありません。ただ、Aより、単純にBチャンネルにGを代入した結果に近づいているのだと思います。周辺の情報抜けはAより微妙に改善というあたりで、Aに比べ一長一短です。但し、手間は二手間減り、周辺補正マスク並びに背景補正マスクの編集は不要です。この両レイヤーを使う必要がないためです。

 この新アルゴリズムBを基に追加補正することにします。ただ空の青がかなり緑がかっているので、回復のため青透過マスクを掛け、空の青を増します。

青透過マスク

 それをARTに読み込んで調整した結果が下記です。

ARTで補正

 このケースでは従来アルゴリズムよりも新アルゴリズムの方が黄変の削減効果が上がっています。周辺の情報抜け補正効果もより改善していると思います。

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

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

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