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

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

モノクロフィルム画像 光被り補正サポートツール (1)

f:id:yasuo_ssi:20210627103216p:plain

 先日カラーネガの光被り補正ツールのバージョンアップを公表しました。カラーネガの光被りの場合、Rチャンネルのみ光被りの影響が及んでいるならば、拙作の光被り補正ツール + 相対RGB色マスク画像作成ツールを使った補正を掛けることでそれなりの程度で補正ができるようになりました。

 但し、モノクロフィルムの光被りは非常に困難です。1チャンネルしかないため、ネガカラーのように、レファレンスにするチャンネルが存在しないからです。とりあえずマニュアルで補正を行ってみましたが、かなり難渋しました。ただマニュアル補正をやって気づいたことは、マスクを掛けて、明るさを上げたり下げたりすると、画像のテクスチャが失われてのっぺりしがちであるという点です。

 そこで今回ちょっと作戦を変えてみました。ツールだけで補正をするというのは到底無理ですが、まず、補正のための素材を作成するツールを作ってみました。モノクロフィルムの光被りは、場所によって大きくパラメータを変えなければならないので、場所ごとに部分補正を行ったファイルを作成し、それを最終的にマニュアルで貼り合わせて、補正を行おうという作戦です。部分、部分の補正ファイルを作るだけなので、光被り補正サポートツールとしました。

 以下に今回のツールを使って補正を行ってみた事例を掲げます。

f:id:yasuo_ssi:20220319205852j:plain

オリジナル

補正結果

 もちろん、100%完璧の補正できるわけではありません。ある程度のところで妥協しています。ただだいぶましになっているとは言えると思います。難しいのは車両の後ろの方、ぼわっとした光被りの補正ですが、これは後述しますが、ARTのローカルコントラスト補正を使ってみました。

 ともあれ、本サポートツールを活用すればこの程度の補修は何とかなるということです。因みに補修のためのレイヤーですがこんな感じになっています。手探り状態でやってみたので、苦闘の後が... とはいえ、基本的にはとりあえずパーツを貼り合わせれば良いので、前よりは楽です。

補正レイヤー

 

 では、まずツールの紹介から始めます。例によってImageJ上で走ります。このツールで作成した画像ファイルをGIMPなり、Photoshopでレイヤー編集で使って最終画像を作成するという手順になります。とりあえずファイル名は Light_Fogging_Correction_Support_tool for_Mono_Filmv0.07.py

としています。ダウンロードはこちらからお願いします。

■基本原理

 基本原理の一部はカラー用光被り補正ツールと似ています。

f:id:yasuo_ssi:20210223203502j:plain

補正の基本原理

  パトローネをフィルムに巻き込むことにより発生する光線被りは、基本的に縦方向に光被りが発生します。そこで、ユーザが修正したい領域 (通常縦長) を指定すると(上図、黄色い部分)、プログラムは、デフォルトでその左側に正常な画像のサンプリング領域を取ります(上図、水色の部分。幅は画像の横幅の1.5%)。このサンプリング領域はユーザが別途任意の場所に指定することもできます。プログラムはこの正常なサンプリング領域で平均的な輝度値を計算します。次にユーザが指定した光が被った修正領域内で平均的な輝度値を計算し、正常な平均輝度値と、変色した部分の平均輝度値を比較し、この平均輝度差の乖離度に比例して修正領域の輝度を引き下げていきます(暗く修正する)。乖離(変色)の度合いが高いほど引き下げ量が増えるとともに、少なければ、引き下げ量は少なくなります。なお、カラーの場合は直接輝度値をいじらず、Rチャンネルに対するGチャンネルの混入比に比例させていました。

補正量決定基本原理

 この計算は、Y (縦) 方向にユーザが指定したゾーン数でブロッキングして、そのブロックごとに行っていきます。ブロックを細かく分ければよりきめ細かい補正ができますが、細かく分割しすぎてもあまり良好な結果が得られない場合があります。そのあたりは、画像ごとにトライアンドエラーで判断するしかありません。

 このプログラムでうまくいく条件は、サンプリング領域と補正領域の画像パターンが似ていることです。画像パターンが大きく異なるとうまく補正できません。また、細かくゾーンを分割しすぎると、サンプリング領域と補正領域の画像パターンが異なってしまう可能性が高くなります。かと言って、分割が大雑把過ぎてもきめの細かい補正が困難になります。従って、そのあたりのバランスが重要です。またこのバランスは画像ごとに異なってきます。

■実行準備

 基本的に他の拙作のImageJ用ツールと同じで、ImageJ、Fijiディストリビューションのインストールと、本ツールのインストールが必要です。

 ImageJのインストールについては以下の記事をご覧ください。

yasuo-ssi.hatenablog.com

yasuo-ssi.hatenablog.com

 ダウンロードしたファイルを解凍し、ImageJ のFiji.appsフォルダの下にある、plugins フォルダにコピーしてください。なお、本ツールで作成した画像はPhotoshop等その他レイヤー & マスク編集をサポートするフォトレタッチソフトでも活用できます。

■実行処理

 本ツールを起動するとまずファイル選択ダイアログが開きますので、補正元ファイルを選びます。しばらくするとファイルが読み込まれます。

Step 01 作成ファイルの順序番号確認ダイアログ

 まず、同じディレクトリにある既存のログファイルをみて、次に作成するファイルの順番が出てきます。この番号が今回の補正ファイルに付きます。OKを押します。今回のツールは複数の素材用補正ファイルを同一のディレクトリに作成することを想定しているので、補正ファイルを作成すると別の番号をつけて前のファイルを上書きしないようにしています。

 そしてパラメータ設定ダイアログです。

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

 [Number of Y Dividing zone]とはy方向に何ブロックに分けて平均値や補正値を計算するかを指定します。デフォルトは25です。もし縦方向に部分的にしか補正しない場合は、値を小さくした方が良いかもしれません。またきめを細かくしたいなら値を増やします。

 [Columns width for Calculating correction value] とは、縦の各画素列の補正値を決定する際に、左右何画素列の値を参照して決定するかを入力する欄です。値を小さくするときめ細かく、大きくすると大雑把に各列の補正値を決定します。但し、一概にきめ細かいほうが良いとは限りません。

 例えば、下記のような光被りの場合は、値が小さいほうが良い結果が得られます。

値が小さいほうが望ましい場合

 しかし下記のような場合は、大きいほうが良好な結果が得られる可能性が高くなります。

値が大きいほうが望ましい場合

 値が大きいほうが望ましい場合に小さくすると以下のような結果になります。

値を大きく取るべきだったケース

 [Factor for mixing adjustment amount] は、データの補正値に対してどの程度の倍数を掛けるかです。デフォルトは1.0です。しかし、過剰に補正される場合 (黒っぽくなりすぎる場合) は値を小さくしてください。また補正量が足りない場合は (白っぽくなりすぎる場合) は1 以上の値を指定して下さい。例えば下記のような場合は、補正部分がやや黒っぽくなっていますので、例えば補正量を0.9などに設定します。

やや過剰補正のケース

 [Smoothing between correction blocks] は縦方向にスムーズになるよう補正値を調整します。[Smoothing X direction] は横方向に非補正部分とつながるように補正値を調整するかどうかです。おおむね縦方向のスムージングは行ったほうが良好な結果が得られます。しかし、横方向はスムージングを行うべきかはケースバイケースです。スムージングを行っていないと補正部分と非補正部分の境界が目立つ場合があります。但しスムージングを行っていると補正部分の中央部分と周辺部分で補正量に差がついて不自然になる場合があります。この場合は横方向のスムージングはチェックせず、 [Factor for mixing adjustment amount] で、周辺部との差が出ないように調整したほうが良いかもしれません。

[Power for Smoothing X] は横方向にスムージングを行う際の調整乗数です。値を小さくすると、周辺から中央に掛けて急速に補正量が増大する一方、値を大きくするとなだらかに補正量が増えます。1.0の場合は補正範囲中央を最高値としてリニアに値が変化します。この値は0から1.0の間で設定してください。なお、この値は補正範囲の左半分と右半分で異なる値を設定できます。なおスムージングを行わない場合はここの値は無効になります。

 

 そして、次のステップでは補正領域の設定になります。設定の仕方はネガカラーフィルム版の光被りサポートツールと同じです。

Step 03 補正領域指定ダイアログ

 補正領域(ROI)の範囲を示す座標値を入力し、Preview ROIにチェックを入れると、下記のように指定した領域が黄線で囲まれて表示されます。値を変更したら一旦チェックを外し、再度チェックしてください。なお、マウスで指定することはできません。なお、既に同じ画像に対して補正ファイルを作っていると、前のログファイルを読み込んでそのとき使った補正領域座標がそのまま継承されるようにしています。

Step04 補正領域指定

 ユーザがサンプリング領域を指定したいときは、[Define Sampling Normal Reagion?]でYesを設定してください。すると次のサンプリング領域指定ダイアログに移ります。このケースの場合は、すぐ左隣りに乗務員室扉があり暗くなっている部分があります。自動だとこの部分がサンプリングされてしまいますので不適切です。従ってユーザがサンプリング領域を指定する必要があります。

 また、[Define Nest ROI?] をyesにすると引き続き次のROIの指定ができます。

 以下はサンプリング領域の指定ダイアログです。

Step 05 サンプリング領域指定

 サンプリング領域も先ほどと同様、座標値で指定し、Preview ROIにチェックを入れると、その領域がプレビューされます。

 そしてOKを押すと、プログラムが実行されます。以下のダイアログが出たらOKを押してください。

Step 06 補正値計算開始確認ダイアログ

 そして以下のダイアログが出てOKを押すと、実際に値を書き換えます。

Step 07 補正作業開始確認ダイアログ

 最後に一瞬、値を書き換えた部分を水色で表示して、終了します。

Step 08 プレビュー画面

 作成されたファイルです。

Step 09 作成した補正素材ファイル

 とりあえず車体に前部を修正したファイルができました。しかし、屋根の部分や、線路の下の方はパラメータを変えて修正したほうが良さそうです。そこで、これらの部分部分を補修したファイルを作成していきます。また車体後部は別途やはりパラメータを変えて補正をかける必要があります。

 このようにパラメータを変えながら部分、部分を修正したファイルをいくつか作成していきます。なお作成されるファイル名は、

元ファイル名 +_correct( x ).tif 
 ※ x には順序番号が入る

となります。

 なお、本ツールを動かすと、元ファイル名 +_parameter.txt というパラメータを保存したログファイルを作成します。このファイルを元に、ファイルの順序番号を決定していますので、消さないで下さい。本ファイルを消すと、次に本ツールを実行した時に、以前作成した補正ファイルが上書きされることがあります。

 このファイルには例えば以下のような情報が保存されます。

Number of blocks: 25.0 MixFactor: 1.0 columsWidth: 10
ROI  xStart: 5100 xEND: 5500 yStart: 1600 yEND: 5024
Smpl xStart: 4650 xEND: 4800
10

y方向の計算ブロック数、データ補正量に対する倍数、計算時に参照する横方向のピクセル幅、修正領域の座標値、サンプリング領域の x 座標値 (ユーザが指定しない場合は 0) そして次の順序番号が保存されます。

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

次回記事

yasuo-ssi.hatenablog.com

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

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