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

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

darktableでのダイナミックレンジの高い写真の編集方法

f:id:yasuo_ssi:20211128195339p:plain

 すでに本ブログのいくつかの記事で指摘したように、ダイナミックレンジの画像を表示させようとしても、通常私たちの見る画像出力装置のダイナミックレンジ (ディスプレイや印画紙) が低いために、物理的にダイナミックレンジの広いデータであればあるほど、ダイナミックレンジが広いように見えない、というのが現実です。つまり現状では、HDR画像であることが重要なのではなく、HDR風に見える演出が重要ということです。HDR画像があれば、HDR風画像を作る素材としてはより有利でしょうが、HDR風画像を作る必要条件ではないように思われます。その意味では、デジタルカメラのセンサーのダイナミックレンジも当面現状以上に拡大させる必要性はあまりないのではないでしょうか。もちろん、画像を見る出力装置として、HDR対応ディスプレイが一般化すれば事態は変わるかもしれません。とはいえそれらが現状のカメラのセンサーのダイナミックレンジを大きく超えることはないようにも思われます。

 ところで、darktableのオンラインディスカッションの中に、明暗差の激しいダイナミックレンジの高い画像を、darktableをつかって、どうディスプレイの狭いダイナミックレンジにマッピングするのかという、Boris Hajdukovic氏による、テクニックの解説がありました。それが以下です。

discuss.pixls.us この記事に対する日本語の解説を以下に記します。

1. まずハイライトクリッピングを避けるために、ややアンダー気味の露出で撮影する。[1枚目の写真]

2. フィルミックRGBを使って、全体のダイナミックレンジを圧縮する。[3枚目の写真]

3. すると画像が平板になるので、中間グレー点を下げ(全体が暗くなる)、中間グレー点から、ハイライトまでのダイナミックレンジを拡張することで、コントラストを回復させる。[4枚目の写真]

4. さらに、ホワイトバランスを調整したあと、2番目のカラー・キャリブレーション・モジュールを使って雲と空のコントラストを上げる。[5枚目の写真]

5. さらにカラーバランスモジュールも動員し、さらにコントラストを上げる。[6枚目の写真]

6. ここでトーンイコライザーを使ってハイライトのみ、他の部分とは別にコントラスト調整を行う。そのために、トーンイコライザー・モジュールを2枚に複製し、まず、1番目のモジュールで、ハイライト部分を暗くする。[7枚目の写真]

7. さらに、トーンイコライザーの2番目のモジュールを使って、この部分のハイライトを回復させる。[8枚目の写真]

8. 最後に、 拡散/シャープ化 (diffuse and sharpen) モジュールで、ローカルコントラストを上昇させる。[9枚目の写真]

 

 どの編集モジュールであっても、編集モジュールを増やして多重に掛けることができるという darktable の柔軟性を活かして、ローカルトーンマッピングを行って、HDR風画像を作るという好サンプルかと思いますので紹介してみました。

 

www.youtube.com

Bチャンネル再建法ツール ハイブリッド・アルゴリズム実装版 Ver. 4.8 バージョンアップ

f:id:yasuo_ssi:20210310145522j:plain

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

[本プログラムには以下のバージョンアップがあります]

yasuo-ssi.hatenablog.com------------------------------

 昨年10月に本ツールをバージョンアップしましたが、2か月ぶりにバージョンアップします。今回のバージョンアップは昨年末に次期バージョンアップの課題として指摘して置いた内容になります。

 

1) 緑保護マスクの強化

 現在のバージョンの黄変ネガカラーフィルム画像の補正ツールでは、主として、黄変量を推計して、その分をBチャンネルから差し引く (厳密に言えばBチャンネルの値を引き上げる) ことで、補正を行っています。しかし、この推計はGチャンネルの値を参照しながら行っているので、植物の緑など、相対的にGチャンネル値が高い部分もBチャンネルの値を引き上げる(青っぽくする)ことになります。同じ緑でも元々B値の高い青緑系はあまり影響がありませんが、B値の低い黄緑系は影響が大きくなります。またもともと黄色味のある部分と、あまりない部分では、黄変した時も、前者の黄変量は相対的に少ない傾向のようです。そのためもあり、B値の低い緑系(要はやや黄緑の傾向にある緑)の部分はあまり補正を掛けない方がより良い結果が得られるようです。

 そのため、[preserve plant green] という緑の部分で補正を弱めるオプションをつけているのですが、どうもこのオプションの効果が弱い、つまり補正抑制効果が弱いようです。

 という訳で、今回のバージョンアップでは、特にやや黄緑に寄った緑色に関してより補正効果を弱めるよう、アルゴリズムを全面的に見直しました。端的に言うと、R値に対する感度を高め (R値が高いほど補正効果を弱める)、B値に対する感度を弱めています。一般に植物の緑は、R値が高い傾向にあるので、植物の緑を保護するという点では、適切な改定です。その代償として、青緑に寄った緑に関しては、補正抑制効果は弱まっていますが、青緑はもともとG値とB値が近いので、それによる大きな副作用はないものと思います。

 前のバージョンとの効果の違いの具体例を用いた比較については、この記事の最後の部分に例示します。

2) 周辺補正レイヤーの 閾値のパラメータ入力をノービスモードで省略

ノービスメニュー 

 上のノービスメニューの画像にあるように、4.7にはあった周辺補正レイヤーの閾値の指定ボックスを消しました。これは自分自身使っていても、まず閾値を変更する必要を感じないので、ノービスメニューの煩雑さを避けるために省略し、極力必要最小限のパラメータ入力のみ表示することにしました。但し、エキスパートメニューでは残してあります。

3) 遠景補正レイヤーの閾値推薦値の表示

 Ver. 4.7までは、遠景補正レイヤーの閾値のデフォルト値として常に 128 を表示するようにしていました (知覚的TRCが掛かっている場合)。もちろんこの値はユーザが変更することができます。但し平均的な明るさが明るい画像の場合は、この値をもっと上げる必要が出てきます。これを一旦補正作業をやってみてやっぱりまずかったとやり直すよりは、最初にデフォルト値として推薦値を計算してあげたほうが親切です。

 そこで、まず読み込んだ画像の平均的な明るさを計算し、画像の平均値が128よりも明るい場合、平均値よりちょっと上の値を、ノービスメニューにおけるデフォルトの閾値として表示するようにしました。なお、暗い場合は今まで通り 128 のままです。

 ともあれ、インターフェース面では、ノービスメニューにおいてユーザが選択しなければならないパラメータ入力を最小限にし、なるべくデフォルト通りの設定でまずまずの結果が得られるように改善したつもりです。

 

 本バージョンのダウンロードはこちらからお願いします。

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

 本ツールのマニュアルは以下です。

yasuo-ssi.hatenablog.com----------------------

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

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

 営利・営業目的で使用される方は別途ご相談下さい。

 また、私の作成したPlug-inも自由に改変して使用していただいて構いませんが、その成果を公表する場合はご一報下さい (公表しない場合は特に連絡は必要ありません)。またその改良した結果を私の方で自由に利用させていただくこともご了承下さい。

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

■緑保護オプションの Ver. 4.7 と 4.8 での効果の違い

 今回の、黄変フィルム Bチャンネル再建法補正ツールのバージョンアップの最大のポイントは、緑色保護オプションの効果の強化です。

ノービスメニュー (緑保護オプションにチェックをつけたところ)

 Ver. 4.7から4.8で、どう緑保護オプションの効果が変わったか、いくつかの事例で比較して見ます。

○サンプル1

 まず以下の家屋の写真です。中央やや左よりを中心に黄変が見られるとともに、画像下を中心に周辺部分の褪色も見られます。ダメージの比較的大きい画像です。

オリジナル画像

 まず近景補正レイヤー用マスク画像の比較です。マスクのタイプは緑保護+青透過 (Type4) です。緑の部分だけでなく、オリジナルファイルがより青い部分も黒くなっています(黒くなっている部分が補正効果が抑制される部分です)。

Ver. 4.7 マスク (Type4)

Ver. 4.8 マスク (Type4)

 従来は草の部分の緑部分の保護(=補正効果の抑制)が弱いのに対し、4.8では、かなり保護が強くなっています。ただ、副作用として建物の左より部分の黄変も保護されてしまっています。以下はそれを基にRGB合成した結果です。マスクの編集を行っています。

Ver. 4.7 補正1

Ver. 4.8 補正1

 従来バージョンでは草の部分がかなり青っぽくなっていますが、新バージョンではかなり改善されています。なお、建物部分の黄変が残らないように、新バージョンではマスクの編集を加えています。かなり良い感じになりました。本画像では改善効果が明確です。

 なお、緑部分の補正抑制効果を強化したため、空の黄変など、補正を抑制したくない部分も、緑保護オプションを使うと、抑制される副作用が出る場合がありますが、これについては、当面、マスクの編集 (補正を抑制したくない部分を白塗りにする) で対応をお願いいたします。

 

○サンプル2

 もう1枚、こちらは上より黄変の濃度は濃くありませんが、周辺褪色は同様に見られます。中程度のダメージです。

オリジナル画像

Ver. 4.7 マスク (Type4)

Ver. 4.8 マスク (Type4)

 マスク画像では、元々緑部分の黄色味が少ないためか、新バージョンではむしろ全般的にはマスクの濃度が下がっています。ただ黄色味の強い部分ではマスクが濃くなっています。

Ver. 4.7 補正1

 

Ver. 4.8 補正1

 RGB合成の結果は従来バージョンと新バージョンではあまり差が見られません。青緑系では、マスク上では補正抑制効果が弱まっているはずですが、あまり差がないということは、この点も狙い通りということです。

 

○サンプル3

 次は空がかなり黄変した画像です。周辺褪色は辛うじて大丈夫かどうかというあたりですが、黄変の濃度がかなり強い画像です。

オリジナル

Ver. 4.7 マスク (Type4)

 

Ver. 4.8 マスク (Type4)

 マスク画像を見ると、他の稲の緑は、以前のバージョンに比べるとかなり保護されています。しかしその副作用として、保護されるべきではない、空の黄色くなっている部分も保護されてしまった部分があります。

Ver. 4.7 補正1

Ver. 4.8 補正1

 RGB合成した結果です。一応新バージョンのRGB合成の際には、空の不必要な保護部分はある程度削除する編集を行いました。稲の色は新バージョンで確かに改善されています(より黄緑が残っている)。ただこの画像の場合、ほぼ黄変は山から上に限定されていて、下半分はあまり問題ありませんので、副作用も考えると、緑保護オプションをそもそも使わずに素材ファイルを作成し、下半分は、オリジナル画像をそのまま活かすような編集を行ったほうが合理的かと思います。以下にその場合のサンプルを示しますが...

 下は、上の画像を緑保護オプションをオフにしたときの近景補正レイヤー用マスク画像です。

近景補正レイヤー用マスク
(緑保護オプション Off)

 この画像をマスク編集画面で下記のように編集を行うと、下半分の補正がキャンセルされます。

上のマスクを下半分の補正を無効になるように編集したもの
(なお、一部周辺部の補正抑制効果もキャンセルする編集を追加)

以上に基づくRGB合成結果 (補正1)

 まだマゼンタ汚れが残っていますので、この後追加でマゼンタ汚れ補正作業が必要です。

 

 以上のように、今回の緑保護マスクのアルゴリズム見直しは、効果があるかどうかは画像によりけりですが、おおむね効果の改善につながっていると思います。

 なお、緑保護オプションで得られる以上に、緑色部分の黄色味を増したい場合は、相対RGB色マスク画像作成ツールを使って、グリーン透過マスクを作り、GIMP等でトーンカーブなどを使って補正を掛けるか、補正したい緑部分の面積が少ない場合は ARTやdarktable のローカル編集機能を使って緑部分のニュアンスを変更することになります。あるいは黄変したオリジナルを部分的に切り取って透過度を調整して貼り付けるなどの手法もあり得ます。

 例えば上のサンプル2の場合、相対RGB色マスク作成ツール探求版を使い、以下のようなグリーン透過マスクを作ります。

サンプル2補正1へのグリーン透過マスク作成例

 これを基に、B値を大きく引き下げるとともに、R, G値を若干引き上げてやると...

上のマスクを使った追加補正例

 さらにマゼンタ補正を掛けてやるとかなり良くなるはずです。

 

ART の HDR 出力機能マニュアル

f:id:yasuo_ssi:20210904211415j:plain

 以下、今年1月2日にリリースされた、ART Ver. 1.18 から備えられたHDR出力に関するマニュアル ( https://bitbucket.org/agriggio/art/wiki/Hdroutput ) を翻訳し公開します。

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

HDR 出力画像の生成

 適切に設定されていれば、ART は HDR ディスプレイに適した画像を出力として生成できます。バージョン 1.16.4 から、手順が大幅に簡素化され、数回クリックするだけで済みます。

HDR としてエクスポートする

 必要な依存関係ライブラリを指示通りインストールした上で、関連するカスタム イメージ形式プラグインを ART-imageio リポジトリからインストールすることにより、HDR 出力を有効にすることができます。プラグインが適切に構成されている場合、利用可能な出力形式のリスト (バッチ キューまたはファイル保存ダイアログ) に、次の 3 つの異なる HDR エントリが表示されます。「AVIF (HDR PQ)」、「JPEG-XL (HDR PQ)」 」、および「HEIC (PQ HDR-TV 1000 nits)」。なお、バージョン 1.18 以降、これらのプラグインは ART の Windows インストーラーには同梱されています (つまり、Windowsでは、プラグインをユーザが設定する必要なし)。

 どの形式を使用するかは、対象の表示デバイスによって異なります。このページの最後で簡単に説明します。いずれの場合も、HDR 出力を生成するために必要な処理手順は同じです。

HDR出力の処理

 デフォルトでは、ART のトーン カーブ モジュールは、ピクセル値を強制的に [0, 1] の範囲に固定します。 HDR の核心は、拡散ホワイト*1 (値 1 に対応) を超える輝度値を表示できるようにすることであるため、これは HDR 出力には望ましくありません。

 画像を HDR 用に処理するには、トーン カーブ モジュールのホワイト ポイント スライダーを使用して、より高いクリッピングしきい値を設定します。また、スライダは自動的に曲線を「引き伸ばし」、必要に応じてコントラスト式を修正するので、ほとんどの場合、適切なホワイトポイントを設定するだけで済みます。 1 の値が 100 nit*2 に対応させなければならないことを考慮すると、理想としては、ホワイトポイントは目的のディスプレイ媒体のピーク輝度に近い値に設定する必要があります (したがって、画面のピーク輝度が 1000 nit の場合、値は 10 が適切です):

トーンカーブでホワイトポイントをHDR出力用に上昇させる

 ホワイトポイントの値を大きくすると、ART の画像のプレビューが明るすぎるため、クリップされて表示されることに注意してください。これは、ART 自体が HDR 画像を表示できないためです。解決策は、異なるエクスポート プロファイルを異なる出力形式に関連付ける (および記憶する) ART の機能を利用して、エクスポート時にのみ白色点を変更することです。このような場合、次のエクスポート プロファイルを、上で設定した AVIF 出力形式に関連付けることができます。

[Version]
Version=1038

[ToneCurve]
WhitePoint=10

 上の記述を、ユーザプロファイルディレクトリ (例えば  .$HOME/.config/ART/profiles on Linux)にある、部分プロファイル white-point-1000nits.arp に保存し、AVIFフォーマットで出力する際に、このプロファイルを指定することでそれが可能になります:

HDR出力時の部分プロファイルの指定

HDR ファイルの表示

 HDR 画像のメリットを享受するには、HDR 対応のディスプレイと、必要なトーン マッピングを実行できるビューアーが必要です。これを書いている時点では、これを行う最も簡単な方法は、最近の Appleバイス (MacBookiPad、または iPhone) で Google Chrome を使用し、AVIF または JPEG-XL のいずれかを出力形式として使用することです。ただし、残念ながら私はそのようなデバイスを持っていないため、これが意図したとおりに機能するかどうか確認できません.

 別の方法は、PQ 形式をサポートし、HEIC ファイルを読み取ることができる HDR-TV を使用することです。 HDR-TV での HEIC 静止画のサポートがどれほど一般的かはわかりませんが、少なくとも私の TV で動作することは確認できます (FWIW :-)。

*1:どの光の波長も吸収することなく反射する白色。これが最も明るい値になる。

*2:輝度の単位。1nitは1平方メートルをむらなく1カンデラの明るさで光らせる輝度。

pixls.us の オンラインディスカッションに vkdt のフォーラムができた

 2日前に、pixls.us のオンラインディスカッションに、vkdt のフォーラムができました。

discuss.pixls.us

 vkdt とは Raw現像ソフト、darktable の派生で、vulkan darktable の略です。vulkan というのは、GPU用のローレベルAPIで、OpenGLの後継になるAPIのようです。要するにGPUを使って非常に高速に写真の現像処理を行うというコンセプトのRaw現像ソフトのようです。またビデオも扱えるようです。

 以下のサイトに最初の公式リリース版 0.5.0 が公開されています。昨年末にリリースされたようです。現在 Linux のみの対応です。

github.com

 これ以外にパイプラインが generic node graph (DAG) に基づいてて様々なインプット、アウトプットが可能ということですが、このノードグラフってなんだ、と思って検索したら、以下のようなページが出てきました。

learn.foundry.com

 今後どう展開されるのか分かりませんが、興味ある方は試してみてはいかがでしょうか?

Intel GPU内蔵CPUを使ったマシンで、Ubuntu上で OpenCLを有効にする

f:id:yasuo_ssi:20211128195339p:plain

 darktableでは、OpenCLが利用できますが (RawTherapee, ARTは非対応)、Ubuntuではデフォルトで有効になっていない場合があります。NVIDIAグラフィックカードを使っている場合は、Ubuntuデバイスドライバをインストールすると有効になるようですが、Inel製CPUに内蔵されているGPUの場合は下記の手順で有効化可能です。

 なお、Windows版の darktable ではデフォルトで OpenCL が有効になります。

 

Intel CPU内蔵GPUラインタイムのインストール

sudo apt-get install intel-opencl-icd

OpenCLのインストール

sudo apt install ocl-icd-opencl-dev

OpenCLのバージョン確認

sudo apt-cache show ocl-icd-dev

 

参考にしたサイト

github.com

asukiaaa.blogspot.com

ガンマ補正理解メモ(2) - 画像処理ソフトとガンマ補正 (改訂版)

[お知らせ]

 2020年12月に公開した記事内容に誤解に基づく誤りが含まれていましたので、以下、書き換え版を公表します。

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

 前回に引き続き、私のガンマ補正に関する理解のメモです。あくまでも私の理解の範囲で書いているので、情報の正しさに関しては保証の限りでありません。

○画像処理ソフトとトーン再生カーブ(TRC)の関係

 さて、前回ガンマ補正の基本的な話を書きました。前回の話の中で、いわゆる「ガンマ補正」には、トーン再生カーブ (Tone Reproduction Curve: 以下、TRCと書きます) と、単純に画像の明暗のトーンを調整するトーンカーブ調整としてガンマ補正が使われる場合の2つがあり、さらに、TRC 自体、全く異なった二つの目的を兼用している、ということを明らかにしました。これらがいずれもガンマ補正と呼ばれうるので、話が分かりにくくなります。そこで、ここではまずトーン再生カーブ(TRC)から説明していきます。

 ところで、個別の画像処理ソフトでは画像データのTRCはどのように管理されているのでしょうか?前回でも触れましたが、カラーマネジメントがしっかり行われていれば、保存されている画像がどのようなTRCを使っていようが、モニタ上の出力(あるいは印刷出力)は、常にガンマ1.0で表示されるのが正解です。そしてMac OSではカラーマネジメントがOSレベルで行われていますが、WindowsではアプリケーションソフトがOS上のカラーマネジメントシステムを使うのか、それともアプリケーションが独自にカラーマネジメントを行うのか、はたまたカラーマネジメントを行わないのかは、アプリケーション任せになっています。さらにカラーマネジメントが行われていない場合、あるいは画像にカラープロファイルが欠落している場合は、OS上ですべてsRGB画像であるものとしてモニタに出力が渡されます。

 従って、ガンマ1.0のリニアな 画像が人に見せるべき画像だとすると、リニアな画像を表示させると薄暗くなるという状況が発生するとすれば、それはそのソフトウェアが一切カラーマネジメントを行っていないか、はたまたそのソフトウェアの内部で画像に含まれているカラープロファイルを無視してsRGB式TRC (図1. のgammma correction 1/2.2という点線の曲線)*1 エンコードした画像を扱うことを前提として調整しているか、はたまたその画像ファイルに含まれるべきカラープロファイルが欠落しているかのいずれかです。ですので、そのような場合、画像データがガンマ1.0になっていると、モニタ表示は、ガンマ2.2の近似値で逆エンコード(図1. のCRT Gammaという実線曲線)した画像が表示されてしまうので、薄暗くなってしまうのです。いずれにせよ適切なカラーマネジメントが行われていないケースということになります。

*1:厳密にはsRGBのガンマ補正曲線は、1/2.2のガンマ補正曲線の近似値であり、12.92まではリニア、それ以上はガンマ1/2.4となっている。sRGB以外の他の色空間でもそのカーブを採用している場合が多い。

続きを読む

黄変ネガ写真補正 Bチャンネル再建法 Q & A

f:id:yasuo_ssi:20210310145522j:plain

 このページでは、今まで黄変ネガ写真補正 Bチャンネル再建法 に関して寄せられた質問に関して、主要なものを掲載します。今後、更に質問が寄せられましたら、このページに内容を追加していきます。

 

■ 遠景補正レイヤーの位置づけがよく分からない

 端的に言うと、2022年7月のバージョンアップ以降は、必ずしも遠景に使わなければならないわけではありません。画像に応じて効果があるようなら使ってください。

 基本的には遠景補正レイヤーは近景補正レイヤーにガンマ補正をかけて明るさを明るくしたレイヤーです。したがって、このレイヤーをBチャンネルの再構成に使うと、より青みが増すことになります。一般的には、近景より遠景(および空)のほうが青みが増しますので、この部分を担当させるために設置しているレイヤーです。

 しかし、2022年7月のバージョンアップから、近景補正レイヤーに対して、元画像のピクセルが近景補正レイヤーより、より青い(B値がより高い)場合、補正レイヤーのピクセルを無効にして元画像のピクセルを活かすマスクをデフォルトでかけるようにしています。このため、元画像のダメージが比較的軽いケースでは、遠景補正レイヤーを使わないほうが良いケースが出てきています(遠景補正レイヤーであってもB値へのG値の影響があるので)。但し、元画像のダメージが大きい場合(空などで黄色い変色が激しい場合)は、依然として、遠景補正レイヤーを使ったほうが良い場合が多いと思います。

 したがって、遠景補正レイヤーをBチャンネルの再構成に使うか使わないかは、画像ごとに、オン/オフしてみて、効果を確認してから決定してください。

 

マニュアルの(5-3)で紹介されているサンプルにおける、遠景補正レイヤーのマスク編集で、車両の車体の一部にマスクを白抜きしている部分がある理由が分からない

 上で述べたように、遠景補正レイヤーは近景補正レイヤーの青みを強くしたレイヤーです。マニュアル(5-3)の事例では、通常なら車体も含めて、近景をすべて黒で塗りつぶすところですが、このケースでは、車体の青い部分の青みを強くしたいので、遠景だけではなく、車体の青い部分もマスクを白抜きにして、遠景補正レイヤーを活かすようにしています。