Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

tonemapfarbman

エッジ保存マルチスケール分解を使用した LDR への HDR イメージの変換

説明

LDR = tonemapfarbman(HDR) は、マルチスケール トーンおよび詳細操作のためのエッジ保存分解というプロセスを使用して、ハイ ダイナミック レンジ (HDR) イメージを表示に適したロー ダイナミック レンジ (LDR) イメージに変換します。

LDR = tonemapfarbman(HDR,Name,Value) は、トーン マッピングのさまざまな特性を制御する 1 つ以上の名前と値のペアを使用します。

すべて折りたたむ

ハイ ダイナミック レンジ (HDR) イメージをワークスペースに読み込みます。

HDR = hdrread('office.hdr');

基本的なトーン マッピング関数 tonemap を使用して HDR イメージをロー ダイナミック レンジ (LDR) イメージに変換します。結果を表示します。LDR イメージには、許容されるダイナミック レンジがありますが、色は弱められます。

LDR = tonemap(HDR);
imshow(LDR)

Figure contains an axes. The axes contains an object of type image.

関数 tonemapfarbman を既定の引数値で使用して変換を繰り返します。結果を表示します。関数 tonemap を使用して作成された LDR イメージよりも、色の彩度が高くなります。ただし、イメージは明るくなり、木の陰などはコントラストが悪くなります。明度とコントラストの悪化は、'Exposure' の既定値が大きすぎることを示します。

RGB = tonemapfarbman(HDR);
imshow(RGB)

Figure contains an axes. The axes contains an object of type image.

関数 tonemapfarbman をより小さい値の 'Exposure' で使用して変換を繰り返し、イメージを暗くします。結果を表示します。イメージのコントラストが改善されます。また、このイメージでは、空、道路、モニターなど明るい領域でピクセル値のクリッピングが減少することがわかります。

RGB2 = tonemapfarbman(HDR,'Exposure',1.5);
imshow(RGB2)

Figure contains an axes. The axes contains an object of type image.

入力引数

すべて折りたたむ

ハイ ダイナミック レンジ イメージ。m 行 n 列の行列または m x n x 3 の配列として指定します。

データ型: single | double

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: LDR = tonemapFarbman(HDR,'Saturation',2.1);

レンジ圧縮。'RangeCompression' と範囲 [0, 1] の数値で構成されるコンマ区切りのペアとして指定します。1 の値は最大の圧縮を表し、0 の値は最小の圧縮を表します。

彩度。'Saturation' と非負の数値で構成されるコンマ区切りのペアとして指定します。'Saturation' の推奨範囲は [0, 5] です。彩度値を大きくすると、色はより鮮やかに強い色調になります。彩度値を小さくすると、色があせて灰色に近づきます。引数 'Saturation' はグレースケール HDR イメージに影響を与えません。

露光。'Exposure' と正の数値で構成されるコンマ区切りのペアとして指定します。'Exposure' の推奨範囲は (0, 5] です。この値が小さくなると、露光の長さが短くなり、イメージが暗くなります。この値が大きくなると、露光の長さが長くなり、イメージが明るくなります。

スケールの数。'NumberOfScales' と正の整数で構成されるコンマ区切りのペアとして指定します。'NumberOfScales' の推奨範囲は [1, 5] です。'Weights' を指定した場合、既定のスケールの数は length(Weights) です。それ以外の場合、既定のスケールの数は 3 です。

詳細層の重み。'Weights' と正の数値の n 要素ベクトルから構成されるコンマ区切りのペアとして指定します。n は 'NumberOfScales' で指定されるスケールの数です。Weights の各要素の推奨範囲は (0, 3] です。'Weights' の既定値は、すべての要素が 1.5 に設定された n 要素の数値ベクトルです。Weights <1 の場合は、出力イメージの詳細の量が減少し、Weights >1 の場合は、出力イメージの詳細の量が増加します。

出力引数

すべて折りたたむ

ロー ダイナミック レンジ イメージ。HDR と同じサイズの数値配列として指定します。

データ型: uint8

ヒント

  • この関数は、Farbman ら [1] により提唱されたように、重み付き最小二乗法フィルターを近似するために異方性拡散フィルター imdiffusefilt を使用します。

参照

[1] Farbman, Z., R. Fattal, D. Lischinski, and R. Szeliski. "Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation." ACM Transactions on Graphics. Vol. 27, Number 3, August 2008, pp. 1–10.

R2018b で導入