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 object. The axes object contains an object of type image.

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

RGB = tonemapfarbman(HDR);
imshow(RGB)

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

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

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

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

入力引数

すべて折りたたむ

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

データ型: single | double

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: 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 で導入