さて、先日開発中と書いておりました、パトローネにフィルムを完全に巻き込んでしまったときに起こりがちな、ネガカラーフィルムの光線被りを補正するツールを作成しました。使い勝手に不便なところはありますが、需要も多いとは思えないので、これで公開としたいと思います。この使い方も一回の記事では書ききれないので、今の予定では三回に分けて連載としたいと思います。なおこのツールを使って補正できる光線被りは、影響が 赤 (R) チャンネルに限定されているもので、見た目上は、プリントしたときに赤い線が入っているようなものに限定されます。青 (B), 緑 (G)チャンネルまでに影響が及んでいる (つまり真っ白、もしくはそれに近い光の線が入ってしまっている) ものは補正不能です。もちろん、チャンネルが1つしかないモノクロフィルムもダメです。
この補正法の基本的な考え方は、不均等黄変ネガフィルムの補正の発想の延長線上にあり、失われたチャンネルの画像情報を他チャンネルの画像情報を流用して再建するというものです。このため、3チャンネルとも画像情報が失われていたり、大きく損失しているようなケースでは再建できません。
目次 (予定)
1. 光線被り補正の基本的な仕組み・準備 (本記事)
1. 光線被り補正の基本的な仕組み・準備
1-1.基本的な仕組み
■光線被り補正の基本的ワークフロー
■光線被り補正ツールの基本動作
今回も、黄変写真補正ツールと同じように、ImageJ用の拙作のプラグインを使います。まず、ImageJ用の光線被り補正ツールですが、基本原理は、光線被りよって輝度が上がってしまったRチャンネルの画像を、Gチャンネルの情報をミックスすることによって補正し*1、Rチャンネル画像を再建します。つまり光線被りの方は、「Rチャンネル再建法」による補正を行うのです。具体的には次のように動作します。
パトローネをフィルムに巻き込むことにより発生する光線被りは、基本的に縦方向に光被りが発生します。そこで、ユーザが修正したい領域 (通常縦長) を指定すると(上図、黄色い部分)、プログラムは、デフォルトでその左側に正常な画像のサンプリング領域を取ります(上図、水色の部分。幅は画像の横幅の1.5%)。このサンプリング領域はユーザが別途任意の場所に指定することもできます。プログラムはこの正常なサンプリング領域でR と G チャンネルの平均的な輝度差を計算します。次にユーザが指定した変色した修正領域内でR と Gチャンネルの平均的な輝度差を計算し、正常な平均輝度差と、変色した平均輝度差を比較し、この輝度差の乖離度に比例して修正領域のRチャンネルに Gチャンネルの情報を混入していきます。乖離(変色)の度合いが高いほどGチャンネルの混入量が増えるとともに、少なければ、Gチャンネルの混入は少なくなります。
この計算は、Y (縦) 方向にユーザが指定したゾーン数でブロッキングして、そのブロックごとに行っていきます。ブロックを細かく分ければよりきめ細かい補正ができますが、細かく分割しすぎてもあまり良好な結果が得られない場合があります。そのあたりは、画像ごとにトライアンドエラーで判断するしかありません。
このプログラムでうまくいく条件は、サンプリング領域と補正領域の画像パターンが似ていることです。サンプリング領域と補正領域の画像パターンが大きく異なるとうまく補正できません。また、細かくゾーンを分割しすぎると、サンプリング領域と補正領域の画像パターンが異なってしまう可能性が高くなります。かと言って、分割が大雑把過ぎてもきめの細かい補正が困難になります。従って、そのあたりのバランスが重要です。またこのバランスは画像ごとに異なってきます。
■追加補正
とはいえ、何枚か補正を試した限りでは、RチャンネルへのGチャンネル画像の混入だけでは、変色は大幅に改善されるものの、多くのケースでうっすらと赤みが残ってしまいました。従って第二段階の追加補正がほぼ必須です。
この理由は、第一段階では基本的にはあくまでRチャンネルにGチャンネルを混入するという補正を行っています。ただそれだけでは補正しきれずさらにRチャンネルの値を域下げる必要があるケースがある、ということです。そこで、一応さらにRチャンネルの値を引き下げる調整パラメータを補正ツールにつけてあるのですが、その際、一律に一定の量値を引き下げるということをやっていません。Gチャンネルの混入量に比例してRチャンネルを引き下げることにし、その引き下げる最大値のみをユーザが指定するようになっています。というのは一律一定量引き下げるということをやると、補正部分が人工的になってしまうからです。そのため引き下げ補正効果がかなり抑制的になっています。そのため、目で確認しながら行うマニュアルの追加補正が必要になるのです。
この追加補正にはいろいろな方法が考えられますが、ツールとして、ImageJ上で走る、赤変部分補正マスク画像作成ツールを用意しました。このツールでできる画像を元に赤変部分補正マスクを作成し、その部分のRのレベルを落とすことにより、補正しきれない部分を補正することができます。また、フォトレタッチソフトの色域指定機能を使って赤変が取り切れない部分を指定し、赤みを減らすという方法も取れます。
1-2. 補正作業の準備
今回も、不均等黄変ネガフィルムの補正と同様、ImageJとGIMPを使用します。GIMPは、前回同様、Photoshop等、レイヤー編集をサポートする他のフォトレタッチソフトで代用可能です。ImageJ, GIMPのインストールについては、不均等黄変ネガフィルム補正の記事をご参照ください。
それから、私が作成したネガカラー光線被り補正ツールをダウンロードしていただきます。ダウンロード先は、こちらです。
ダウンロードしますと、ZIP形式で圧縮されていますので、解凍します。中には、ImageJ用のツールとGIMP用のツールが含まれています。
ImageJ用のツールは次の2本です。
Light_Fogging_Correction_v0.02.py
RチャンネルにGチャンネルの情報を混合して再建Rチャンネルを作成するツール
Red_mask_Maker_V0.01.py
一旦補正したファイルを再調整するための、赤変部分マスク画像作成ツール
2022.6追記
上記ツールを、再バージョンアップしました。以下をご覧ください。
2021.10追記
上記ツールをバージョンアップしました。詳しくは以下をご覧ください。
GIMP用のツールは次の2本です。
Light_Fog_correction_load_files.py
Light_Fog_correction_load_filesJ.py
いずれも、再建したRチャンネル画像とG, B画像を読み込んで合成し補正したファイルを作成するプラグインです。ファイル名に J がついているほうは、日本語表示になっているだけですので、どちらかを使用してください。
これらのファイルを、ImageJ, およびGIMPのプラグインフォルダにコピーして準備は終了です。具体的にどこにコピーすればよいかは、不均等黄変ネガフィルム補正の記事をご参照ください。
------------------
------------------
なお、本記事で紹介した写真補正技法やソフトウェア (Plug-in) は、個人的および非営利用途であれば、自由に使っていただいて構いませんが、本技法を使って何らかの成果 (編集した写真等) を公表する場合は、本記事で紹介した技法を使った旨クレジットをつけて公表していただくことをお願いします。
また、本ソフトウェアは現状のまま提供されるものし、作者はこれを使ったことによるいかなる損害補償等にも応じられないことを了解の上使っていただくものとします。
但し、もしソフトウェアのバグがありましたら、ご連絡いただければなるべく改善するよう努めたいと思います。