メインコンテンツ

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

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

RGB = tonemapfarbman(HDR);
imshow(RGB)

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

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

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

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

入力引数

すべて折りたたむ

ハイ ダイナミック レンジ イメージ。非負の数値から成る mn 列の行列または m×n×3 の配列として指定します。

データ型: single | double

名前と値の引数

すべて折りたたむ

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

例: LDR = tonemapFarbman(HDR,Saturation=2.1) は彩度を 2.1 として設定します。

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

例: LDR = tonemapFarbman(HDR,"Saturation",2.1)

レンジ圧縮。範囲 [0, 1] の数値として指定します。1 の値は最大の圧縮を表し、0 の値は最小の圧縮を表します。

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

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

スケールの数。正の整数として指定します。NumberOfScales の推奨範囲は [1, 5] です。Weights を指定した場合、既定のスケールの数は length(Weights) です。それ以外の場合、既定のスケールの数は 3 です。

詳細層の重み。正の数値の n 要素ベクトルとして指定します。ここで、nNumberOfScales で指定されるスケールの数です。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 で導入