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

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

新・輝度マスク (Luminosity Mask) 作成ツール

[お知らせ]

 本ツールは、以下のページにバージョンアップ版を公開しております。

yasuo-ssi.hatenablog.com

-----------

 昨年9月に作成し公開した輝度マスク作成ツールは、Photoshop上で一般的に実践されていた輝度マスク作成方法およびGIMPの公式ページでPat Davidが指南していた方法による輝度マスクを、ImageJ上で作成するImageJ対応プラグインでした (できたファイルはGIMPPhotoshopなどのレイヤー編集をサポートする写真編集ソフトで使えます)。

 ただ、輝度マスクは、こう作るべきだという方法が定まっているわけではなく、画像の輝度情報を使ったマスクであればなんでも輝度マスクになるようなので、今回は私のオリジナルなアイディアに基づく輝度マスクツールを作成してみました。とりあえず新・輝度マスク作成ツールと称しておきます。

 今回の新・輝度マスクの基本的なアイディアは、先日公開した汎用色チャンネルマスク作成ツールの考え方をそのまま輝度情報に基づいたグレースケール画像に応用したものです。つまり、ユーザが指定した輝度の範囲で、輝度に基づくグレースケールのマスクを作成するものです。ただグレースケールマスクの計算アルゴリズムは当然ながら汎用色チャンネルマスク作成ツールと異なっています。

 仮にユーザが指定した輝度範囲を X lower ~ X upper だとすると、輝度値 L に対して L - X lowerで画像を計算し、それに係数 a を掛けたものをマスク画像とします。この時、X lower値以下のピクセルはすべて、0 (全暗黒) になります。a の値はデフォルトで4ですが (これは汎用色チャンネルマスク作成ツールに同じ)、透過係数をかけることで調整することができます。ポジマスクとネガマスクを作成することができますが、ネガ画像マスクを求める際は、(L - X lower) ÷ a の画像を反転しています。因みにデフォルトで a に4を入れて輝度値に掛けるのは、経験的にマスクとしてはこの程度係数をかけないと効果が薄いためです。

 因みに同じグレースケール画像でも、輝度 (Luminosity) によるものと明度 (Lightness) によるものがあります。その違いですが、明度は単純にR, G, B値の平均値でグレースケールを求めるもの、それに対し輝度はGに約7割、Rに約2割、Bに約1割のウェイトをつけて計算した値でグレースケール画像を求めるもので、輝度の方が一般に人間の視覚に近い明るさの画像が得られるとされています。ウェイト付ける具体的な割合はソフトウェアごとに多少異なっていますが、ここではImageJでのウェイト付け (おそらくPhotoshopも同) を使っています。

 ダウンロードはこちらからお願いします。ダウンロードしたファイルを解凍し、ImageJ Fiji ディストリビューションプラグインディレクトリにコピーすることで、ImageJのプラグインとして使用することができます。

 コピーすると、プラグインメニューから、New Luminosity Mask Makerという名前でプラグインが起動できるようになります(下図)。

f:id:yasuo_ssi:20210514220034p:plain

新・輝度マスク作成ツール起動画面

 起動すると、マスクを作るファイル選択ダイアログが出るので、読み込むファイルを指定します。ファイルを読み込んだ後、パラメータ指定ダイアログが出ます。

 

f:id:yasuo_ssi:20210514220409p:plain

パラメータ設定画面

 デフォルトはネガマスクにチェックが入っていますが、ポジマスクを作るには、チェックを外してください。そしてマスクに含ませたい輝度領域を指定します。白抜きがマスクに含まれる透過範囲で黒い部分は不透過部分になります。

 

 さらにマスク透過係数(Mask Transparency Factor)を指定します。デフォルトは1.0ですが、より透過度を増したい場合はより大きく、減らしたい場合は1未満を指定します。すると、プラグインが稼働し、マスク画像を作成します。

 以下は、0-63の輝度範囲で、マスク透過係数1.0のネガマスクを作成した事例です。マスク画像は3つ作ります。指定した輝度範囲の二値マスク、輝度範囲の最低値を閾値とした、グレースケールマスク、この両者を組み合わせた混合マスクです。

 

f:id:yasuo_ssi:20210514220851p:plain

輝度範囲 0 -63の二値マスク

f:id:yasuo_ssi:20210514220953p:plain

最低値 0 透過係数 x 1.0 のネガマスク画像

 

f:id:yasuo_ssi:20210514220714p:plain

上の2枚を併合して作成されたマスク (輝度範囲 0 - 63 透過係数 1.0 ネガ)

 ところで、こんなマスクを作って何になるのか、という疑問をお持ちの方もいるかもしれません。例えば先日掲示したクモユニ143の写真があります。 元々の写真は非常にピーカンの時に撮られた写真ですが光が当たっている場所と当たらない場所のコントラストが強すぎ、影になった部分がかなり暗くなり、特に床下に何が写っているか分からない状態でした。このようなケースは、フィルム写真のみならず、デジタルカメラでもこのような写真は十分ありうると思います。そのため、少しでも床下に何が写っているか分かるように、darktableを使ってコントラスト補正していました。

f:id:yasuo_ssi:20210428232716j:plain

クモユニ143-1 (静ヌマ)

 この写真は、GIMPで編集終了した下の画像を補正したものですが、床下や正面がより良く見えるようになった代償として、色がちょっと派手になってしまいました。もともとのワインレッドカラーの印象色としては、下の写真の方がベターなように思います。

f:id:yasuo_ssi:20210502161547j:plain

GIMP編集終了状態

 そこで、darktableのフィルミックRGBを使ったコントラスト調整の代わりに、今回の新・輝度マスク作成ツールを使って補正をすることを考えます。

f:id:yasuo_ssi:20210516105004p:plain

ネガマスク画像 範囲0-21 透過係数1.0

 新・輝度マスク作成ツールで、範囲を0-21 透過係数1.0でネガマスク原稿画像を作成します(上図)。

f:id:yasuo_ssi:20210516105149p:plain

編集後のマスク

 これを元にクモユニの正面と床下のみ含まれるような輝度マスクを作成します。

f:id:yasuo_ssi:20210516105222j:plain

輝度マスクを使った明度レベル補正過程

 

 このマスクをかけたレイヤーに対し、明るさをレベル補正を使って補正します。

 

f:id:yasuo_ssi:20210516104706j:plain

上のマスクを使って補正したファイル

 微妙な差ですが、ワインレッドをあまり派手にすることなく、床下がより見えるように補正しました。ただレベルを上げすぎると影の部分が白浮きし、不自然になってしまいますので、この程度で留めました。

 

 他に新輝度マスク作成ツールを使った補正例として以下のようなケースも...

f:id:yasuo_ssi:20210514221241p:plain

オリジナル

f:id:yasuo_ssi:20210514221332p:plain

補正結果

 これはネガカラー写真から補正したケースですが、露光不足の部分は粒子が荒れているので、暗い部分がはっきりした半面、ちょっと荒れが目立っています。