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

戦前型旧型国電および鉄道と写真補正編集の話題を扱います

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

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

○画像処理ソフトとガンマの関係

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

 従って、ガンマ1.0のリニアな 画像が人に見せるべき画像だとすると、リニアな画像を表示させると薄暗くなるという状況が発生するとすれば、それはそのソフトウェアが一切カラーマネジメントを行っていないか(Windows上の場合)、はたまたそのソフトウェアの内部でsRGBのガンマ補正曲線(図1. のgammma correction 1/2.2という点線の曲線)*1 エンコードした画像を扱うことを前提として調整しているかのどちらかです。ですので、画像データがガンマ1.0になっていると、モニタ表示は、ガンマ2.2の近似値で逆エンコード(図1. のCRT Gammaという実線曲線)した画像が表示されてしまうので、薄暗くなってしまうのです。

f:id:yasuo_ssi:20201028103245j:plain

図1. ガンマ曲線 (Wikipediaより引用)

 IrfanViewの場合、デフォルトではカラーマネジメントが行われていないのでリニアな画像を読ませると暗くなってしまいます。sRGB式のガンマ補正がかかっている場合のみ正しく表示されます。

 

トーンカーブとガンマ補正カーブの関係

 ところで、カメラで撮ったRawファイルには、あらかじめファイルのプロファイル情報で定義されたトーン再生カーブ (TRC) が掛けられており、Raw現像ソフトで通常デフォルトの状態で読み込むとそのトーンカーブが読み込まれるか、あるいはそのソフトで用意されたそのカメラのプロファイル(およびそこに含まれるトーンカーブ)が読み込まれることが普通です。

 ちなみにRawTherapeeでプロファイルを[ニュートラル]で読み込むと、一切トーンカーブ等が読み込まれない素の状態で読み込まれます。以下はNikonデジタルカメラのNEFファイルをニュートラルで読んだ状態です。

f:id:yasuo_ssi:20201205163255j:plain

図1. RawTherapeeで、ニュートラルで読み込んだ状態

 実は、私がガンマ補正の問題を考え始めた原因は、RawTherapeeで、Vuescanを使って作成したリニア (ガンマ=1.0) なRawファイルを、プロファイル[ニュートラル]で読み込むと薄暗くなってしまうところから出発したためでした。当初はリニアだから薄暗く表示されるのかと誤解していましたが、結局それはトーンカーブの欠如、およびスキャンしたままでホワイトバランスが崩れていたための問題であることが分かりました。

 で、図1に露出タブにある[トーンカーブの自動調節]を適用するとトーンカーブが適用されて、下記のように明るくなります。ヒストグラムが変わっているのもわかると思います。

f:id:yasuo_ssi:20201108234438j:plain

図2. 図1にトーンカーブを掛けた状態

 RawTherapeeの自動調節で生成されるトーンカーブは、Rawファイルに含まれるサムネイル用Jpegから自動的に生成されます*2。あるいはカラータブの[カラー・マネジメント]→[入力プロファイル]→[カスタム]でカメラ用プロファイルを選択し、さらに[DCPトーンカーブ使用]にチェックを入れると、カメラ用プロファイルにあるトーンカーブが適用されます。

 ちなみにRawTherapeeのヒストグラムにはRawファイルのヒストグラムの表示/非表示切替ボタンがありますがこれを切り替えると、かなり左に寄ったヒストグラムになりますので、デフォルトの状態は元のRawファイルのリニアな状態から、sRGB式ガンマ補正を行ったのち、ヒストグラムが表示されるようです*3

 

f:id:yasuo_ssi:20201130095724j:plain

図3. ヒストグラム Raw / 非Raw切替ボタン
(ヒストグラムは図2とは関係ない)

f:id:yasuo_ssi:20201205170418j:plain

図4. 図1,2の画像のRawファイルヒストグラム

 図4がRawファイルのヒストグラムです。但し、トーンカーブを適用しようがなかろうが変わらないので、図4. のヒストグラムにsRGB式ガンマ・エンコードを掛けると図1. のヒストグラムになるようです。つまり図4. が物理的RGBの分布、図1が知覚的RGBの分布ということになるかと思います。

 しかし図1の画像は、図2のトーンカーブが掛けられた画像に比べて印象の薄い眠い画像に感じられます。仮にsRGB標準のガンマ補正カーブが、知覚反応上正しいとしても(しかし、それも近年異論が出ていて、PQ, HLGなどの別の知覚的補正カーブが提案されています)、印象的、あるいは心理的インパクトが考慮されていないということかと思います。その部分を補正するのがトーンカーブで、いわばカメラの持ち味として、カメラごとに(あるいはカメラの撮影プロファイルごとに)設定されているのではないかと思います。

 因みにVuescanで作成したRawファイルにはカメラプロファイル情報は含まれていないので、基本的には作業色空間への変換とガンマ補正は行いますが、トーンカーブは適用されない状態でRaw現像ソフトに読み込まれるということかと思います。但し、AdobeLightroomやCamera Rawの場合は、ファイルにカメラプロファイル情報が含まれていない場合には、Adobeの標準トーンカーブが読み込んだときに自動的に適用されるようです。ですので、直ちにカメラで作成したRawファイルと同様に扱える、ということかと思います。他の現像ソフトでも同様な扱いになっている場合があるかもしれません。

f:id:yasuo_ssi:20201110090152j:plain

図5. カメラプロファイルの有無に応じた
Rawファイルを現像ソフトに読み込んだ際の動作の違い

 でも、トーンカーブと知覚的ガンマ補正カーブの関係はどのようなものなのでしょうか。これについて、下記のような有用な情報を公開されているブログ記事がありました。

mikio.hatenablog.com この記事の中で、ガンマ補正だけ掛けたケースとガンマ補正とシグモイド補正をかけ合わせたケースを検討していますが、このシグモイド曲線による画像補正という部分が、トーンカーブによる補正に相当する部分かと思います。この記事の事例写真のすぐ下にあるグラフの緑の線がガンマ補正(但しここではガンマを1/2.0としています)とシグモイド補正を掛け合わせた補正曲線として出ていますが、これこそがカメラがトーンカーブで補正を掛けて目指す最終的な補正曲線ではないかと思います。つまり、非リニアな作業色空間の中では、最終的には、リニアな直線より若干上に寄った程度の曲線で補正するのが良いということではないでしょうか。よく、コントラストをやや上げるためにS字のトーンカーブを... という話を聞きますが、このグラフのオレンジのシグモイド曲線がその役割を果たしていると思います。この記事の中で、ガンマ補正だけだと最暗部に階調を割り当てすぎるきらいがある、と指摘されており、その補正のためにシグモイド曲線による補正を掛けると述べられていますが、まさにそういうことかと思います。同時に、ウェーバー=フェビナーの理論に疑問が投げかけられているというのも、そのあたりが原因ではないかと思います。

 ただ、この補正された画像は、さらにモニタでガンマ・デコードされて表示されるので、モニタに出力された画像は、図1.のリニアな対角線と、CRT Gamma 2.2という実線の曲線との中間ぐらいの、リニアな対角線より多少下にへこんだ補正曲線を掛けた画像になるはずです。ですが、よく考えてみると、この下にへこんだ補正曲線を掛けた画像のカーブは、トーンカーブ補正曲線そのものです。このトーンカーブこそカメラ等による「味付け」に相当するかと思います。要は、リニアなガンマ1.0の画像にトーンカーブによる補正を掛けた画像を出力して、それを人間に見せようとしていることになります。

f:id:yasuo_ssi:20201111182608j:plain

図6. ガンマ補正とトーンカーブ補正

 そうだとすると、そもそもリニアな色空間で処理する、ガンマ1.0を前提とする画像処理ソフトでは、ガンマ・エンコードを飛ばし、トーンカーブによる味付けのみ行えばよいということになります*4。そうなると、ガンマ補正が掛かった非リニアな画像よりは補正量が少なく、計算量も少なくて済むはずなのでよりスピーディーに動作するはずです。

 ところで、ここまで考えてきて、気が付いたことがあります。せっかくガンマエンコードして、暗い部分の諧調を相対的に増やしたのにS字カーブのトーンカーブ補正を掛けてしまうと、完全に戻るわけではないにせよ、再びリニアに近いところまで戻ってしまいます。つまり、知覚的に暗い部分の諧調が減ってしまうことになってしまいます。もちろん16bitファイルなら問題ないわけですが...

 もう一つは、人間はリニアな画像を見ているはずなのに、写真はリニアな画像より、トーンカーブ補正を掛けてコントラストを高くした画像をより好ましく、あるいは自然、リアルと感じるのはなぜか、という問題です。

 これは全く私の推測ですが、現場にいるときは、いわば人間は風景に取り囲まれた空間にいるわけです。それを人間が写真として見た場合、その空間を大幅に縮小して見ているので、そこに何らかの視覚心理学的要因が働いて、オリジナルの物理的な光線に比例したリニアな画像ではリアリティが感じにくいのではないでしょうか。このあたり何らかの理論的なバックグラウンドがあるのではないかと思いますが、まだ調べていません。

 

 ただ、究極的にはどのような補正カーブを当てればよいのか、という議論には最終的な正解は存在しないと思います。あるとすれば主観的な割り切りのみです。極論をすれば、補正する本人が主観的に良ければどうでも良いという鵺的なものかと思います。結局それは、Color Perfectの技術解説ページ*5で指摘されていましたが、カメラ入力というものは厳密な意味でデバイス入力ではないからです。つまりその時点時点で、明るさも、絞りも、照明状況も異なる多様な状況で入力が行われます。Rawファイルに記録されたデータがリニアな画像であるのは確かではありますが、それが「正しい」リニアな画像なのかは断言できません。照明のせいで色被りしている可能性だってあるのです。しかも、色被りしている状態を「適切」と主観的に判断する可能性もあります。これが、入力条件が厳密に定まっている他のコンピュータ・デバイスと比べた時に、デバイスとは言えない、という意味です。ですので補正カーブについても正解は1つに定まらないと思います。

 

○それ以外にリニアRawファイルが暗く表示される可能性

 通常画像センサーは12bitもしくは14bitのデータを出力するケースが多いと思います。ただしデジタルカメラでよく使われるベイヤー型センサーのRawデータは、そのままではRGBデータが揃っていませんのでRawデータから直接画像を出力することができず、必ずデモザイクという処理過程を経なければなりません*6。ですので、デモザイクして画像処理ソフトの色空間にデータを変換するときに、255を最大値とする浮動小数点で扱うのか、あるいは16bit 65535を最大値とする空間で扱うのかは分かりませんが、それと同時に、最大値が適切に処理されて読み込まれていることが多いのではないでしょうか。

 しかし、フィルムスキャナなどに多い3CCDセンサーの場合は、最初からRGBデータがそろっていますのでデモザイクが必要ありません。そして、12bitセンサーなら最大値は4095, 14bitセンサーなら最大値は16383となります。これを最大値が65535となる16bitのファイルフォーマットにそのまま直接保存するとすれば、非常に暗く表示される可能性はあります。Raw現像ソフトやRawビュアーソフトに、Rawファイルの最大値を調節せずに読み込むソフトがあるかどうかは分かりません。しかしVuescanはフィルムスキャナのRawデータを16bit リニアTIFFファイルで保存することもできますので、これを通常の画像処理ソフトに読み込むと、最大値を調節せずに非常に暗く表示する可能性は大です。

← 初回「ガンマ補正理解メモ (1) - 人に見せるべき画像はガンマ1.0!」に戻る

⇒ 次回「ガンマ補正理解メモ(3) - Photoshopで色の明るさを変えると色自体(色相)も変わる!?」に行く

 

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

*2:次の議論を参照してください。なおこの件については公式マニュアルRawPediaには一切言及がありません。

discuss.pixls.us

discuss.pixls.us また、VuescanでスキャンしたDNG形式のRawファイルの場合、サムネイルのJpeg内部でリニアなデータで保存されます。しかしJpegはそもそもsRGBで保存されることを前提とした形式なので、常に暗く表示されます。従って自動調節でトーンカーブを掛けると、常に暗くなってしまいます。

*3:RawTherapeeのデフォルトの作業色空間はProPhotoにsRGB式ガンマ補正を掛けたもののようです。RawPedia「R、G、Bデータを RGB変換するための作業色空間 “作業プロファイル”」参照。

*4:例えばフリーのRaw現像ソフト darkable では、リニアな作業色空間が利用可能ですが、そのフィルミックRGBワークフローなどはそのようなことを目指しているのではないでしょうか?

*5: Dunthorn, David, 2009,'Complete Color Integrity', C F Systems CFS-276 この文書の'The Pitfalls of Using Profiling as Camera Calibration'以下をご覧ください。

*6:例えばこちらのサイトをご覧ください。

vook.vc

RawファイルをDNGファイルに変換したら、元のRawファイルと同じか?

 Adobe社はカメラのRawファイルフォーマットとしてDNG (Digital NeGative) 形式を提唱しています。ただし、必ずしもカメラ各社は採用しておらず積極的に採用しているのはリコー/ペンタックスぐらいで、あとは時々DNG対応の機種がある程度です。ユーザサービスとして無料で利用させている自社カメラ用の現像ソフトを他社カメラユーザに使わせたくない、というあたりがその理由ではないでしょうか。

 しかし、AdobeはDNGコンバーターという無料ソフトを配布して、デジタルカメラ各社のRawファイルをDNG形式に変換できるようにしています。ところで、今RawファイルをDNGコンバーターで処理したいという方の多くは、サブスクリプションで毎年「税金」を吸い上げられるのを良しとせず、Adobeの旧製品を使い続けたいが、最新のカメラが対応していない、というあたりでしょうか。

 その際に気になるのは、DNG形式に変換してもオリジナルのRAWファイルと変わりないのか、現像でオリジナルと同じデータが引き出せるのか、あるいはいわゆる「現像耐性」があるのか、という点ではないかと思います。

続きを読む

ガンマ補正理解メモ (1) - 人に見せるべき画像はガンマ1.0!

 Vuescanにおいて、カメラプロファイルのないリニアなRawファイルを保存し、それをRaw現像ソフトで取り扱うようになってから、ガンマ補正とは何かが気になるようになりました。ですが、いろいろなサイトを見て説明を見ても、説明が紛らわしく当初は十分理解出ませんでした。またdarkableなどではリニアな画像処理を推奨しているようですが、その意味も分かったような、分からないような状態でした。ようやくどういうことかある程度、分かってきたようですので (分かったつもりになっているだけかもしれませんが)、備忘録を兼ねて現在の理解状況をメモします。

 

 まず、私がガンマ補正に関して十分理解できなかった大きな要因は、ガンマ補正の理屈がどうであれ

最終的に目指されるべき出力 (モニタであれプリントアウトであれ) は、あくまで、ガンマ=1.0の画像 (つまりガンマ補正がかかっていない画像) であること

という点が、様々な説明を読むうちに、紛らわしくなり、分からなくなっていた、ということです*1。CRTの陰極管出力特性がどうとか、ウェーバー=フェヒナーの法則がどうとかという話が出てきますが、とにかく輝度が適切な物理的最終出力は、ガンマ=1.0のリニアな画像です。まずそこを押さえなければいけません。 

*1:結局、ガンマ・エンコードされたRGB画像データも、画像ソフトやOS、そしてドライバによって、ガンマ・デコードされ、ガンマ1.0に直されてモニタやプリントに出力されます。ただ、いろいろな解説では、当たり前な「ガンマ・デコードされ」という部分が省略され議論されるので、人に直接見せる画像は、ガンマ・エンコードされた画像かと誤解していたのです。専門家は当たり前と思ってスルーしがちな議論ですので、意外とこの点を分かりやすく説明しているサイトは少ないです。ですので、私と同じ誤解をされている方はかなり多いのではないでしょうか。というより、プロの写真家やリタッチャーなどでも半可通な理解をしているのではないかと疑われるケースさえ見受けるので、むしろ今の状況では誤解するなという方が無理です。例えば次のディスカッションの質問者は明らかに私と同じ誤解をしています。回答者の中でも半可通のまま回答している人がいます。Elle の言っていることはまともですが...

discuss.pixls.us

 また、読んでいてピンと来ない解説も、最終出力はリニアでなければならない、ということを頭において読むと、あっ、そういうことかと理解できることが多いです。ただ中には半可通の解説もあるので見極める必要がありますが...

続きを読む

突然アクセス数が増えました

 当ブログですが、ここのところ普段のアクセス数は10~20程度、ちょっと多いと30台程度ですが、昨日突然 82 アクセスまで増えました。Google等のクロールが入ると、2週間に一度ぐらい定期的にアクセス数が増えますが (それでも30~40台程度、せいぜい行って60程度) 、それだけではないようです。理由はよく分かりませんが、どうやら昨日公開したクハユニ56の写真の記事にアクセスが増えたようです。実際、注目記事の順位がどんどん上がっていきました。クハユニ56ってそんなに人気ありましたっけ?

 あとは、最近Googleからのアクセスの比率が減ってbingやYahooからのアクセスの比率が増えています。Googleからの検索は、はっきり分かりませんが、おそらくネガ写真の褪色補正で検索されてくる方が多いようです。Yahooからはどういうキーワードでたどり着くのかは分かりませんが、bingに関していうと、どうやらデジタルカメラによるネガデュープの方法について検索してこちらにたどり着く方が増えているようです。実際、ネガデュープしたネガポジ変換ソフトに関する記事が注目記事の上位に来るようになっています。なぜGoogleとBingではこちらに来るキーワードが異なるのか不明ですが、Googleではネガ、退色、補正というようなキーワードで上位に来るが、フィルム、ネガポジ変換、というようなキーワードでは上位に来ず、Bingではその反対というのは明確です。

 まともなフィルムスキャナーがなかなか手に入らなくて、デジタル一眼によるネガデュープに挑戦しようという人が増えているのだとは思いますが...

 でも絶版になったNikonの中古のフィルムスキャナーとかかなりプレミアがついているようです(海外でも)。海外の口コミを見ても、現在なお Nikonのフィルムスキャナーが評価最高峰であることは間違いありません。アメリカでは、Nikonのメーカーが修理対応してくれなくなったNikonのスキャナ修理を専門に手掛ける業者もいるようです。Nikonさん、もう一回フィルムスキャナの生産検討しても良いのではないでしょうか? そのような再投資をする余力はないかな...?

 私だったら、今フィルムスキャナーを買えと言われれば Plustec のスキャナーを買うことになるかなぁ...

飯田線クハユニ56011 (1983.6)

 一応ブログのタイトルがタイトルですので、月に1回ぐらいは旧型国電の写真を紹介しなければということで、今回は手抜きの紹介です。先日黄変写真補正のサンプルとして掲示したクハユニ56011(静ママ)の写真を再掲載します。ただ補正をちょっと変えました。今回は、Bチャンネル再建法に、色域指定によるBチャンネルのトーンカーブ補正を組み合わせて補正しました。Bチャンネル再建法で微妙に補正しきれていない部分を、色域指定を使って補正しました。最後にRawTherappeで明度のトーンカーブ補正とフィルムシミュレーション (Fuji Astia) を使って仕上げています。補正が適正なところまで追い込めるようであれば、RawTherapeeのフィルムシミュレーションではFujiのAstiaが一番ナチュラルな感じに仕上がるように思います。逆に言うと、追い込み切れないときに、フィルムシミュレーションを最後の駆け込み寺というか、頼みの綱に使っているようなところがありますが... (笑)。青い塗装の部分にやや黄色味が残っていますが、黄色味を消しすぎると艶がないような感じに仕上がりますので (アルミフォイルで作ったレフ板を使って被写体に光を当てると若干黄色がかりますが、それと同じかと思います)、微妙に残して艶あり感を出しています。

f:id:yasuo_ssi:20201115235609j:plain

クハユニ56011 (静ママ)

 再掲ですが、Bチャンネル補正法だとここまで黄変写真を補正できるということで、補正前のオリジナル画像も載せておきます。手持ちのフィルムでは、補正が最も困難な部類です (ネットではもっと毀損の著しい写真を公開されていらっしゃる方々がいます)。ともあれ、これだけ黄変しているフィルムでもまだ救済策はある、ということです。黄変しているからといって、あっさり貴重な写真を捨てたりなさらないよう。

f:id:yasuo_ssi:20201109210402j:plain

補正前 オリジナル
続きを読む

bio-formatでファイルを開く時は要注意! - ImageJ Pythonプログラミング Tips

 Pythonを使った、ImageJのプラグインスクリプトを編集して、一点気付いたことがあります。それはImageJで直接ファイルを開く場合と、bio-format Pluginを経由してファイルを開く場合で、ファイル名の扱いに違いがあるということです。

 実は、先日自作のプラグインを使って作業をしていたところ、ファイルを開く時にエラーが... 原因は何かと思って調べてみると、ファイルを入れていたフォルダにスペースが含まれていたためでした。そのため、スペースのところでフォルダ+ファイル名が途切れていると認識して、そんなファイルはありませんよ、とエラーになってしまったのでした。

続きを読む

ここまでできるポジフィルム褪色補正 Vuescan vs. digital ROC vs. マニュアル補正

 ところで、Webの写真補正に関する情報を検索して、一つ気付いた点があります。それは意外に褪色ポジフィルムの補正に関する日本語の情報が少ない、ということです。そこで、褪色ポジフィルムの補正例についても情報発信することにしました。たぶん、以前はフィルムスキャナを使ってフィルムをスキャンすることが多く、その場合ポジフィルムの褪色補正はDigital ROCなどで結構補正できていたのであまり問題にならなかったのかもしれません。しかし、現在はデジタル一眼を使ったフィルムデュープで対処しようという方が多いと思います。その際、褪色ポジの扱いに困っておられる方も多いのではないかと推測します。その意味でも確認しておいたほうが良いと思います。

 以下のサンプル写真は、1982年に撮影した写真で、ネガからラッシュプリントしたポジフィルムです。保管の際に光が微妙に当たっていたらしく、他のラッシュフィルムはあまり褪色が進んでいなかったのですが、このフィルムだけ褪色してしまいました。但し、ネガのような不均等変褪色は一切見られません。取り込みは、コニカ-ミノルタのフィルムスキャナー、Dimage Scan 5400 IIです。

 以下、それぞれフィルムを補正なしで取り込んだもの (オリジナル)、Vuescanで退色復元および色の復元オンで取り込んだもの、純正ドライバでDigital ROCをオンにして取り込んだものです。オリジナルは全体が赤褐色になっていますが、わずかに元の色味が残っているような状態です。

 

■フィルムスキャンの褪色補正効果例示

f:id:yasuo_ssi:20201106215309j:plain

図1-0. オリジナル
続きを読む