Retinex/jp

From RawPedia
Jump to: navigation, search

レティネックス

ここの解説は一部がまだ不完全です。

概要

 薄暗い、鮮やかな色に囲まれている、霞みがかかっている、など周辺の環境が違っても、人間の目は、物の色を正しく捉えて見ることが出来ますが、カメラはそれが苦手です。そこで、環境変化に対する人間の視覚のメカニズムを真似たMSR(MultiScale Retinex)というアルゴリズムが生まれました。デジタル写真撮影の中で、このレティネックス(Retinex:網膜-retinaと皮質-cortexの合成語)というアルゴリズムは、天体写真やX線撮影、CTスキャンで、画像の中の曖昧な箇所をはっきりさせるために使われています。この20年で、様々な理論やアルゴリズムが開発されました。初めの試みは、人間の目の知覚とEdwin Landが提案した網膜の役割を基に、Rahmanが1996年に行った実験です。アプローチ自体はCIECAMと似ていますが、機能的にはDoG(Difference of Gaussian ガウス差分)による画像の生成に似ています。考え方としては、画像の注目画素とその周辺画素の輝度の強弱の特徴を解析するのですが、科学的根拠に基づいている訳ではなく、実験や経験に基づいて、長い間改良が重ねられたものです。これら研究成果は、まだ満足のいくものではありませんが、プログラムに組み込む上で、次の2つの研究成果を参考にしました:

  • "Automatic Image Haze Removal Based on Luminance Component" (Fan Guo, Zixing Cai, Bin Xie, Jin Tang)"[1](英語)
  • "Retinex Algorithm on Changing Scales for Haze Removal with Depth Map" (Weixing Wang, Lian Xu)"[2](英語)
  • 上記2つの研究に加えて、Fabien Pelissonによる“プログラムの工夫2003”を参考にしています。

 レティネックスは次の様な画像の補正に有効でしょう:

  •  霧などで霞んだ画像
  •  輝度の差が著しく少ない画像
  •  画像に特殊な効果を付けたい(例 トーンマッピング)

レティネックスの初めの処理

 ここでは、このアルゴリズムの利用限度、長所・短所を説明します。

ウェーブレット機能の中のレティネックス

 ウェーブレット機能の中でレティネックスを利用する方法を考えました(パッチファイル)。それにより下記に示した利用限度の幾つは解決します。 “ウェーブレット機能の中のレティネックス”と、“レティネックスの初めの処理”との比較は以下の説明(仏語)を参照して下さい。 Wavelet_levels/fr#Avantages_.28.2B.29_et_inconv.C3.A9nients_.28-.29_de_Retinex.2Ffr_par_rapport_.C3.A0_Retinex_in_wavelet

RawTherapeeでの利用限度

 このアルゴリズムは画像全体を考慮する必要があるため、切り抜いた画像やリサイズした画像には使えません。この制約ため、プログラムへの応用に関しても幾つか制限があります:

  • 処理モジュールは“Lab調整”の近くに置くことにしました。Lab調整はraw画像を処理するためRawTherapeeの処理工程の最初の方にあります。従ってレティネックスのモジュールも処理工程の最初の方に置く必要があるため、扱える対象はrawファイルだけになります(TIFFやJPEG画像は扱えません)。
  • 処理モジュールをデモザイク処理の直ぐ後に置いたので、処理するrawデータは、ダウンストリームのrawデータとは性質が異なります。ガンマがなく、色域の制限もありません。ホワイトバランスもRGB変換もないので、アーティファクトの発生や、輝度や色度の記録精度が落ちます。
  • 処理モジュールが最初の方に置いてあるため、設定を変える度に、他を含む処理プロセス全体の演算が繰り返され、システムに負荷がかかります。
  • 色被り(空の色にマゼンタが被る)が発生することがあるので、その場合は、ホワイトポイントの補正が必要となります。
  • 但し、このモジュールは“ノイズ低減”の前にあるので、この色被りをノイズ低減機能で補正することが出来ます。

 以上の様な制限はありますが、ウェーブレット機能と併用することで、このレティネックスは霞がかかったような画像のコントラストや色のレンダリング補正で十分満足のいく効果が得られると思います。

基本的なアルゴリズム

 更に詳しい情報が、上記‘概要’の研究成果(pdf)の中にあります。

“透過マップ”を作る

  • まず、入力画像の注目ピクセルの輝度の対数と、ガウスフィルタを使って平滑化したその周辺ピクセルの輝度を算出し、その差を求めます。ここで使われるガウス関数の1標準偏差(σ)は非常に大きくなります‐一般的にRawTherapeeで使われているσは概ね0.5~5.0ですが、ここではその値が10~280(シングルスケールレティネックスの場合で)になります:
  • 次に入力画像の輝度分布を変えます:
  • “透過マップ”ファイルの作成前にガンマを適用します
  • 作成後に、ガンマの逆数を適用し、入力画像の特徴を復元します

 こうして輝度分布を変えることで:

  • 画像の明暗が変えられます
  • 例えば、明るさの過不足を考慮して透過マップを調整出来ます
  • スケールを複数回適用します(MSR:マルチスケールレティネックス)。3回適用しますが、この数をユーザーが変えることは出来ません。このアルゴリズムは経験から得た係数の集合で作られています。スケールの深度が浅い場合、見た目のコントラストは増えますが、自然な映りにするためには大きい値の設定が必要です。但し、ノイズが増えやすい傾向があります。
  • 目標とする効果に応じて、MSRのバリエーション(均等、低、高、ハイライト)を選びます:
    • 均等:濃度の低い部分と高い部分を均等に処理します。
    • 低:濃度の低い部分に重点を置いて補正します。
    • 高:濃度の高い部分のレンダリングを補正します。
    • ハイライト:ハイライト部分でマゼンタ被りが起こる場合のレンダリングを補正しますが、強いアーティファクトが発生することがあります。
  • 作業色空間を選びます:
    • 対数L*a*b*
    • 対数HSL
    • 線形HSL:これは標準的なアルゴリズムではありません。通常のレティネックスで適切な効果が得られない場合に使います

 この処理(線形HSL以外)により対数分布(透過マップ)が得られ、これを入力画像から“減じる”ことで、理論的には画像から霞を取り除くことが出来ます。画像にもよりますが、対数分布はおおむねガウス分布で、霞の多い画像で、最小値(minT)が‐10~‐40、平均値‐1~+2、1標準偏差値2~6、最大値は(maxT)10~40になります。マイナス値は濃度が低い部分を示し、プラス値は高い部分を示しています。これら値は対数値なので、実数値はかなり大きなものです(例、log1000=6.9、log22000=約10、log500000=約20)。理論的には、高い“スケール”値とガウス値が、画像の中でレンズに近い部分(大気の影響が少ない)で使われ、低い値がレンズとの距離が遠い部分(大気の影響が強い)で使われるべきでしょう。

ガウスフィルタによるマスク処理

“透過マップ”ファイルは以下の再帰処理に対応しています:

  • 入力画像-ヒストグラムイコライザやガンマで色々と調整された入力画像
  • ガウスフィルタによる平滑化処理(スケール、半径、モード、低・高)から直接得られた“マスク”ファイル

表示“マスク”の種類

 “マスク”ファイル処理を使うと、アーティファクトやハロの発生を減らすことが出来ます。マスクの種類はユーザーが選べるように、“コンボボックス”にしました。この機能はレティネックスの学習、及び目標とする調整を行うための補助として設けました。

  • プロセス(表示方式):
    • 標準:デフォルトに設定されている表示プロセスです。
    • マスク:ガウスフィルタを応用したレティネックスで得られたマスクを表示します。表示に影響する要素には次のようなものがあります:
      • レティネックス処理工程のアップストリームに位置する設定;バリエーション(低、均等、高、ハイライト)や半径、ガンマ、ヒストグラムイコライザの調整が表示画像に影響します。一方、ダウンストリームに位置する設定;コントラスト、ゲイン、明るさ、しきい値、透過マップのカーブは、表示に影響しません。
      • “マスクイコライザ”(マスクの方法で“なし”以外を選択した時に利用可能)による設定。
      • これら設定は外部エディタ(GIMPやPhotoshop)にエクスポートすることが出来ます。
    • アンシャープマスク:入力画像からマスクを取り除いた画像を表示するオプションです。この場合、“強さ”は入力画像とマスクの釣り合いを調節する役割を果たします。半径を大きく取ったアンシャープマスクのような画像になります。
    • 透過:“透過マップ”ファイルを“画像”として表示するオプションです。
      • このオプションンで表示される“画像”は現実的な画像ではありません。一般的には‐30~+30の対数の範囲に収まる画像データを表示したものです。
      • (固定)透過:任意に選んだ2つの係数を使っています。これにより基数が変更され増幅されます。自動計算だけでは比較が困難なので、この様な設定を用意しました。
      • (自動)透過:透過マップファイルを見極める目的で、輝度の分布が0~32700に収まるように、プレビュー画面に表示されている値(透過マップ、最小値、最大値、平均、標準偏差)を使いました。もちろん、これら数字が最大範囲にあっても見えますが、現実的な画像ではありません。画像にもよりますが、“固定”の方が適切な表示オプションかもしれません。
      • 透過マップは、a) メディアンフィルター、b) ゲイン補正、c) オフセット補正(“明るさ”)、d) “強さ”を除く全てのレティネックス処理を考慮したモードです。
      • “マスクイコライザ”や“透過マップ”のカーブを使った補正も反映されるので、ハロやコントラストに対し直接的な作用を見ることが出来ます。

マスクの方法

 マスクの方法を3つ用意しました:

  • マスクイコライザ(“なし”以外の選択で利用可能)は“マスク”のコントラストに直接的に影響します。敏感に作用するので、このカーブだけを使う方法ではアーティファクトの発生に注意が必要です。但し、処理時間は短くて済みます。このカーブによる調整は単独で使うことも、他の方法と併用も可能です。
  • ガウスフィルタ:マスクにガウスフィルタを適用します。シャドウ部分、ハイライト部分、半径を別々に調整することが出来ます。処理時間の増加は多くありません。
  • シャープマスク:マスクに“ウェーブレット”による処理(シャープマスク)を適用します。シャドウ部分とハイライト部分を調整することができます。部分的な適用、全体的な適用の選択にもよりますが、処理時間はかなり増えます。

透過マップのプロセス

透過マップの分布

この基本的処理は、“透過マップ”の平均値と標準偏差を使って、目標とする効果のタイプを適用することです: 

  • 新しい透過マップ=(旧透過マップ‐最小値)/最大値‐最小値
  • ここで、最小値=平均‐k*標準偏差
  • ここで、最大値=平均+k*標準偏差

 ユーザーが調整できる係数k ‐コントラスト(統計で言うところの分散)‐ は画像のレンダリングに大きな影響を与えます:低い値は明らかにコントラストを増やしますが、高い値の方が、アーティファクトやハロが少なく、画像の映りが、より自然になります。 基本処理に3つの構成要素を使います:

  • しきい値を変えると、最大値(maxT)と最小値(minT)が新しくなり、それ以上、或いは、それ以下の値は新しい最大・最小値に集約されます。例えば、しきい値を10にすると、‐10以下の値は全て‐10になり、10以上の値は全て10になります。この設定で明らかにコントラストは増えますが、アーティファクトが発生する可能性も増えます。
  • (フラット)カーブで、コントラストのばらつきを変えます。理論値の代わりにユーザーが直接的に入力することで調整します。カーブを動かし、マイナス値を増やす一方でプラス値を減らす、或いはその逆を行い、コントラストのレンダリングを変えます。
  • アーティファクトの発生を抑えるため3x3のメディアンフィルターで画像の不規則を補正します。

“霞のない画像”ファイルの作成

霞のない画像

 霞のない画像は入力画像と“透過マップ”ファイルの差から得られます。  そのためゲインと明るさ(オフセット)という2つの補助変数を使います:これら変数によって、“透過マップ”ファイルも調整が行える画像に含めることが出来ます。実際、こういった予防措置が無いと、調整された画像の輝度が通常の0~32768という範囲に収まらないことがあります。

  • “ゲイン”は輝度全体の幅を増やしたり減らしたりします。例えば、輝度が0のピクセルの数を減らす、など。
  • “オフセット”は“ゲイン”の適用後、明るさを回復させるために使います。

 ユーザーが使い易いように、インターフェースに霞の無い画像の最小値を表示するようにしました。“ゲイン”や“オフセット(明るさ)”の調整だけでなく、特に“コントラスト(分散)”や“透過マップのカーブ”でも調整出来ます。これは最小値を0、最大値を32768に近づける調整をやり易くするためのものです。例えば、入力画像の透過マップの最小値が‐44230、最大値が76000であれば、これらを、最小値32、最大値32500まで補正することが出来るでしょう。もちろん、常にそこまでの調整が必要であるということではありませんが、未調整の場合は、0以下の輝度値は0へ、32768以上の輝度値は32768へ、全て集約することになるので、“透過マップ”の利点を無駄にすることになってしまいます。

 インターフェースに表示される数値の意味は、例えば: 

  • 霞を除去した画像 最小値=‐5681、最大値=34568:これは霞のない画像の輝度飽和直前の最小値・最大値を表示しています。
  • TM Min=‐3.8、TM Max=4.1、Mean=0.1、σ=3.3 :透過マップの最小値、最大値は次の計算式から得られた値と一致しています。最小値=平均‐標準偏差*分散/100、最大値=平均+標準偏差*分散/100
  • TM Tm=‐6.5 TM=11.8:透過マップの対数分布の最小値と最大値です。

 インターフェースに“透過マップ”の分布と“霞を除去した画像”のデータを表示することは、システムの理解つながるだけでなく、使い勝手にもプラスだと思いますが、まだ改良の余地はありそうです。

レティネックスとトーンマッピング

   レティネックスのアルゴリズムを“トーンマッピング”のレンダリングに適用する方法は(この分野の専門書によれば)幾つかあります。問題点もありますが、コードを精査した結果、以下のような解決策を取りました:

  • レティネックスの特定のコードを複数回繰り返します。一部のコードは省きました:
    • RGBからL*a*b*、或いはRGBからHSLへの変換(或いはこの逆)
    • ヒストグラムの平滑化
    • 異なるガンマ(低、中間、高、任意)の適用
    • 目標とする効果、“低”、“均等”、“高”、“ハイライト” の違いは関係しません。
  • 但し、繰り返しにより処理時間は増えます。5回の繰り返しで、処理時間は2.5倍増えます。

 “グラデーション”と名付けた3つの要素で、繰り返し作業を行います。

  • “ガウスグラデーション”は、a) ガウス暈しの標準偏差(半径、或いは近傍のピクセル)と、b) “スケール”(デフォルトは3)に作用します。
  • “透過マップのグラデーション”は、a) コントラスト(分散)とb) “透過マップ”の境界を決めるしきい値に作用します。 
  • “強さのグラデーション”は、“霞のない画像”と元画像を合成する“強さ”に作用します。

 3つのグラデーションは何れも値を0に設定すると、繰り返し作業が基本プロセスと同一のものとなります。  各グラデーションの作用は:

  • “ガウスグラデーション”:“it”(繰り返し回数)に応じて、半径(“近傍ピクセル”)を、“grad”で割り、“スケール”が変化します:
  • Gg 1 :
    • it=1 grad=1; it=2 grad=1.25;it=3 grad=1.5;it=4 grad=1.75;it=5 grad=2
    • it=1 scal=4; it=2 scal=3; it=3 scal=3; it=4 scal=3; it=5 scal=2
  • Gg 2 :
    • it=1 grad=1; it=2 grad=1.50;it=3 grad=2.0;it=4 grad=2.50;it=5 grad=3
    • it=1 scal=5; it=2 scal=4; it=3 scal=3; it=4 scal=2; it=5 sca=2
  • Gg 3 :
    • it=1 grad=1; it=2 grad=1.66;it=3 grad=2.3;it=4 grad=3.00;it=5 grad=3.6
    • it=1 scal=5; it=2 scal=4; it=3 scal=3; it=4 scal=2; it=5 scal=2
  • Gg 4 :
    • it=1 grad=1; it=2 grad=1.80;it=3 grad=2.6;it=4 grad=3.40;it=5 grad=4.2
    • it=1 scal=5; it=2 scal=4; it=3 scal=3; it=4 scal=2; it=5 scal=2
  • Gg 5 :
    • it=1 grad=1; it=2 grad=3.50;it=3 grad=6.0;it=4 grad=8.5;it=5 grad=11.0
    • it=1 scal=5; it=2 scal=4; it=3 scal=3; it=4 scal=2; it=5 scal=2
  • Gg 6 :
  • it=1 grad=1; it=2 grad=6.00;it=3 grad=11.0;it=4 grad=16.0;it=5 grad=21.0
  • it=1 scal=5; it=2 scal=4; it=3 scal=3; it=4 scal=2; it=5 scal=2
  • Gg -1 :
    • it=1 grad=1; it=2 grad=0.875;it=3 grad=0.75;it=4 grad=0.50;it=5 grad=0.37
    • it=1 scal=3; it=2 scal=3; it=3 scal=3; it=4 scal=3; it=5 scal=3

 Gg5とGg6に関しては、特定の方法が採用されます。“ハイライト”が選択されている場合は、“ハイライトのしきい値”に応じて、‘grad’の値が増幅されます。

  • “透過グラデーション”:“it”(繰り返し回数)に応じて、コントラスト(分散)と“しきい値”が、“var”で増幅されます:
    • Tg 1: it=1 var=1; it=2 var=0.875; it=3 var=0.75; it=4 var=0.625; it=5 var=0.5
    • Tg 2: it=1 var=1; it=2 var=0.800; it=3 var=0.60; it=4 var=0.400; it=5 var=0.2
    • Tg-1: it=1 var=1; it=2 var=1.125; it=3 var=1.25; it=4 var=1.375; it=5 var=1.5
    • Tg-2: it=1 var=1; it=2 var=1.400; it=3 var=1.80; it=4 var=2.200; it=5 var=2.6
  • “強さのグラデーション”:“it”(繰り返し回数)に応じて、“強さ”が“s”によって増幅されます:
    • Sg 1 : it=1 s=1.30; it=2 s=1; it=3 s=0.70; it=4 s=0.5; it=5 s=0.5
    • Sg 2 : it=1 s=1.60; it=2 s=1; it=3 s=0.40; it=4 s=0.3; it=5 s=0.3
    • Sg-1 : it=1 s=0.80; it=2 s=1; it=3 s=1.20; it=4 s=1.2; it=5 s=1.2
    • Sg-2 : it=1 s=0.60; it=2 s=1; it=3 s=1.40; it=4 s=1.5; it=5 s=1.5

 注意:EQ(色相イコライザ)の色と“透過メディアンフィルター”は、繰り返し数の設定にかかわらず、一回だけ作用します。

様々な設定

常に可能な調整

 常に調整出来る機能:

  • レティネックスの4つバリエーション:“低”、“均等”、“高”、“ハイライト”
    • “低”:濃度が低い部分に重点置いて補正します
    • “均等”:濃度が低い部分と高い分を均等に補正します
    • “高”:濃度の高い部分のレンダリングを補正します
    • “ハイライト”:ハイライト部分でマゼンタ被りが出るのを抑えます。但し、アーティファクトの発生に注意して下さい。

 上記の方式は“透過マップ”に直接作用します。

  • 作業色空間
    • 対数L*a*b*
    • 対数HSL
    • 線形HSL

 画像に応じて作業色空間を上記の3つの中から選びますが、最初の2つがレティネックスのアルゴリズムとの相性がいいでしょう。

  • 強さ:“霞のない”画像と入力画像の混合の割合を決めます。強さ=0の場合、霞のない画像の影響は0になります。逆に、強さ=100の場合は、霞のない画像だけが表示されることになります。50以下の設定で使うことを奨めます。
  • 半径(近傍ピクセル):“ガウス差分”のアルゴリズムを使い近傍ピクセルの輝度を調整します。値が大きいほど、画像の前景が影響を受け、値が低いほど、背景の霞んだ部分が影響を受けます。この調整は透過マップに直接的に影響します。
  • ハイライトのしきい値:レティネックスのバリエーションで“ハイライト”が選択された時だけ表示され使うことが出来ます。値が1の時は、効果は“高”の場合と殆ど変わりません。値を大きくすると、露出オーバー部分のマゼンタ被りが減ります。但し、以下の調節が必要かもしれません:
    • “半径(近傍ピクセル)”の再調節
    • 露出オーバー部分にマゼンタ被りがある時は、“Rawホワイトポイント補正”を増やす
    • 露出オーバー部分にマゼンタ被りがある時は、“色相イコライザ”使用
    • “レティネックスのガンマ”を調節
  • コントラスト(分散):この係数は、“透過マップ”の平均値と標準偏差値の比重を変えます。画像のレンダリングに影響する重要な係数で、“透過マップ”のコントラストのしきい値に作用します。低い値にすると、画像のローカルコントラストは増えますが、映りが不自然になります。高い値にすると画像の映りはより自然になり、アーティファクトの発生も少なくて済みます。係数は、“透過マップ”そのものには影響しませんが、霞のない画像の計算に影響します。
  • クロマ(これはパッチファイルです):輝度に対する“強さ”の割合に応じて、レティネックスのアルゴリズム使って、カラーコンポーネントを調整します。カラーコンポーネントだけに作用するようレティネックスのアルゴリズムを単純化し、スライダーを使って適用します。よって輝度固有のコンポーネントである、ガンマ、輝度、ガウスマスクには影響しません。

“設定”によって行う調整

 イコライザ

  • ヒストグラムイコライザ:このカーブはあまり効果的な機能ではありませんが、仕方がありません。レティネックスのモジュールはプログラム処理工程の前の方に置いてあるためraw画像だけにしか適用できません。よってガンマやRGB変換、入力ICCプロファイル、ホワイトバランスを考慮することが出来ないため、このカーブで補間します。 “透過マップ”のデータは一般的に精度が悪いので、この補正機能がないと、著しいアーティファクトの発生につながりかねません。注意:このカーブ機能は作業色空間L*a*b*とHSLに応じたものが用意されています。デフォルトでは、カーブの影響がない状態ですが、L*a*b*でカーブを使う場合は、カーブの最初の1/4部分を大きく動かすことは避けるべきでしょう。大きな値を使うとアーティファクトの発生につながります。動かす加減は経験で身につける必要があります。
  • 色相イコライザ:
    • 色相に応じて、レティネックスの効果を調整します。例えば空の青色を弱めたり、木々の緑を鮮やかにしたりします。
    • 露出オーバー部分にマゼンタ被りがある場合、それを軽減します。
    • レティネックスの方式で“ハイライト”を選択している場合、この調整は最終画像の色度にも影響します。
  • レティネックスのガンマ:“低”、“中間”、“高”、“フリー”という4つのガンマから選びます。このガンマとその勾配は、レティネックスのアルゴリズムが作用する前に適用され、画像が再合成される直前、選択したガンマの逆数が適用されます。高いガンマ値に低い勾配を設定すると、アーティファクトが発生し易くなります。目標とする画像の映りに応じて、作業色空間、L*a*b*やHSLの組み合わせを考えます。

 これら3つ(ヒストグラムイコライザ、色相イコライザ、レティネックスのガンマ、)の設定は、“透過マップ”に直接的に働くわけではなく、透過マップの値を補正するものです。

 透過及びゲインとオフセット(明るさ)

  • “透過マップのカーブ”:このカーブは透過マップに相互作用します。X軸は“透過マップ”の基本的な分布(最小minT、平均、最大maxT)を示しています。グラフの左側を下げると最小値(はっきりしている部分‐前景‐に対して)の水準が下がります。逆に右側を下げると最大値(霞んでいる部分‐背景‐に対して)の水準が下がります。このカーブは画像の知覚的な映りに大きく影響します。
  • “しきい値”:この係数は“透過マップ”の最小値・最大値に作用します。
  • “透過メディアンフィルター”:このフィルターは、“透過マップ”の変化が大きい部分でアーティファクトが発生するのを抑制します。
  • “ゲインと明るさ(オフセット)補正”:2つを組み合わせて使うことで、霞のない画像の精度を高めます。インターフェースのヒントの中でも書かれていますが、補正によって最小値を0、最大値を32768に近づけるようにします。2つの補正は“霞のない画像”に作用しますが、“透過マップ”には作用しません。

様々な調整とその効果

コントラストに関する主な調整とその効果
機能名 主な機能 補足
強さ 入力画像にレティネックス画像を重ね合わせる度合いを調整 レティネックスのプロセス自体には影響しない
方式 :低、均等、高、ハイライト 画像の濃度(輝度)に合わせて異なる方式を使用(低=濃度が低い、ハイライト=色ずれを軽減) 高い方式ほど前景(濃度の高い部分)に影響を与える
半径 高い値ほど前景に影響、低いほど背景に影響 値を大きくし過ぎるとアーティファクト発生の可能性
コントラスト(分散) 低い値ほど前景に重点を置いて全体のコントラストが増加。低すぎるとアーティファクト発生の可能性
しきい値 低い値ほど全体のコントラストが増加するが、境界部分でアーティファクト発生の可能性 低い値は背景のアーティファクトを軽減
透過マップのカーブ カーブの左半分は前景、右半分は背景に作用 中間ポイントの移動はコントラストとアーティファクトに影響
ゲインと明るさ 入力画像に応じてレティネックスによるコントラストと明るさの比重を調整 調整の仕方次第で画像が幻想的になる
その他の調整
機能名 主な機能 補足
ガウシアンマスクとシャープマスク ローカルコントラストが強すぎるために発生するアーティファクトを軽減 値を高くするとレティネックスの作用が減少
作業色空間:対数L*a*b*、対数HLS、線形HLS アーティファクトを抑制するために、初期の輝度配分を変更 露出が高い画像には対数L*a*b* が向いている
ガンマとヒストグラムイコライザ アーティファクトを抑制するために、初期の輝度配分を変更 レティネックスではガンマの逆数を適用し、ガンマの補正を行う

ウェーブレットやLab調整との併用

 霞のかかった画像を、レティネックスを使って補正する際、以下のようなケースが生じる時はウェーブレットやLab調整の機能を併用します:

  • レティネックスだけでは十分な調整が出来ない、或いはアーティファクトが発生する
  • 色ずれが発生する、或いはレティネックスだけでは色度やコントラストの調整が不十分

これらを以下のように解決します:

  • L*a*b*調整を使って色度を増やす(色度スライダー或いはCCカーブ)。
  • 全体的なコントラストを、L*a*b*調整を使って増やす(或いはLカーブ)。
  • ウェーブレットの残差画像の機能で色度を増やす。
  • もちろん、RawTherapeeに備わっている他の機能を併用することに問題はありません。特に“露光”タブに入っている機能が使えるでしょう。

 このように調整方法は幾つかありますが、ウェーブレット機能を併用することを奨めます。特に霞のある画像を補正したい場合です。その理由は:

  • 残差画像セクションでコントラストを増やすことが出来る。
  • 圧縮の方法で“コントラスト”を使い、“効力の圧縮”や“ガンマの圧縮”が可能。
  • “エッジシャープネス”で“エッジの検出”オプションを使い、輪郭のシャープ感を微妙に調整出来る。
  • “最終調整”、特にその中の“最終ローカルコントラスト”が使える。“後のコントラストカーブ”或いは、圧縮の方法では“トーンマッピング効果”も使える。 

霞除去の例‐調整のヒント

 レティネックスの使い方を理解するため、霞がかかってくすんだ画像(Madeira マデイラ島の写真)を使って、調整方法を説明します(現在まだこの機能がTIFFを扱えないため、リンクされた画像が使えない)。但し、これはあくまで調整方法を説明するだけであって、その結果が完璧な画像と言う訳ではありません。変更や調整、好みのレンダリングに応じてユーザーが調整して下さい。

初めに

  • まず(同じ画像情報を使って調整を行うため)、入力画像にニュートラルプロファイルを適用し、それからデフォルトプロファイルを適用します。
  • 次に“レティネックス”を有効にします。

 調整を行うための機能とその効果については、4.3の様々な調整とその効果を参照して下さい。例に使う画像は、前景と後景の両方が霞み、且つヒストグラムも概ね正規分布を形作っているので、筆者は以下のオプションを選択しました:

  • レティネックスの方式:均等
  • 作業色空間:対数L*a*b*

 とりあえず、“半径”、“コントラスト”、“強さ”はデフォルトの設定のままです。

透過マップファイルの設定‐半径、コントラスト、スケールの反復

 次に“設定”のセクションを見ます。レティネックスによる最適化(霞のない画像)を図るための“透過マップ”ファイル情報の一部が書かれています。画像として透過マップを見るのであれば、プレビューの表示法で透過図(固定)を選びます。

 例題の画像の数値は:最小値=‐5799、最大値=14069となっています。他の値は差異の最小値=‐9.8、差異の最大値=7.7、平均=8.8、標準偏差=4.4、透過最小値=‐13.1、透過最大値=20.7です。 

 最小値‐5799、最大値14069は、入力画像から差し引く透過マップの数値ですが、ご覧のようにこれらは普通RawTherapeeが使うL*a*b*空間の輝度範囲0~32768とは一致していません。従って、最初に行う調整は、“透過マップ”カーブを使って、透過マップの数値を通常の輝度範囲に近づけることです。正確に最小値を0、最大値を32768にする必要はなく、ある程度近づけることが目標です。例えば、カーブの左側を少し下げ、右側を少し上げてみて下さい。リンクは筆者が行った調整のpp3ファイルです:Media:madeira-first.pp3

霞のない画像

 透過マップに直接的な影響のある“半径”や“コントラスト”の調整を行う前に、“ゲインとオフセット(明るさ)”を調整し、それから“半径”や“コントラスト”、“スケール”を調整します。次のように調整を行いました:

  • 前述のように、“透過マップ”のカーブを使って、通常の輝度範囲0~32768に近づける調整を行い、最小値‐400、最大値39000を得ました。当初はこれで十分だと思います。
  • 次に、“半径”、“コントラスト”、“スケール”を使って、更に細かい調節を行いました。コントラストがやや強い画像になりましたが、この辺りは個人の好み次第です。
  • 納得するまでこれら調整を繰り返します。

 リンクは調整後のpp3ファイルです:Media:madeira-second.pp3

ガウシアンマスクとガンマ

 これら2つは、高い輝度と低い輝度の分布を変える機能です。

  • 例では、“マスクの方法”にガウシアンマスクを選択し、空を明るくするため新たに表示されたスライダーの中のハイライトを23に設定しました。調整の結果は、プレビューの表示のマスクを選択し確認することが出来ます。
  • “設定”の中の“ガンマ”を“低”に設定しました。

 これら2つの設定も個人の好み次第です。    リンクは調整後のpp3ファイルです:Media:madeira-third.pp3

色の調整

 2つの方法があります。

  • 露光補正パネルの中にあるレティネックスには色度を調整する機能がありません。調整は“L*a*b*調整”の“色度”スライダー、或いはaカーブ、bカーブ、またはより直感的なCCカーブを使います。
  • “ウェーブレット機能の中のレティネックス”(パッチファイル)の場合は、ウェーブレットの“色度”スライダーを使います。

 リンクは色度調整後のpp3ファイルです:Media:madeira-four.pp3

コントラストを増やし、更に霞を減らす‐ウェーブレット

  • “詳細レベルのコントラスト”を使って少しコントラストを増やします。
  • “残差画像”のコントラストと色度を調整します(例では、コントラスト25、色度22に設定しました)。次に“圧縮の方法”で“トーンマッピング”を選択し、“残差の効力を圧縮”は‐0.29にしました。
  • “最終調整”の“バランス方式”で“スライダー”を選択し、“コントラストバランス 斜め/垂直・水平”を19にしました。
  • “色度のバランス”を有効にしました。

 リンクは調整後のpp3ファイルです:Media:madeira-five.pp3

最終調整

 必要であれば、以下の調整を行います:

  • レティネックスの“強さ”を調整
  • ウェーブレットの“最終的なローカルコントラスト”、或いは“後のコントラストカーブ”を調整
  • その他の機能で調整

 リンクは最終的な調整のpp3ファイルです:Media:madeira-six.pp3