Main Content

blendexposure

異なる露光のイメージから適切な露光のイメージの作成

説明

J = blendexposure(I1,I2,...,In) は露光が異なるグレースケール イメージまたは RGB イメージをブレンドします。blendexposure はコントラスト、彩度および適切な露光に基づいてイメージをブレンドし、適切な露光のイメージ J を返します。

J = blendexposure(I1,I2,...,In,Name=Value) は露光が異なるイメージをブレンドします。名前と値の引数を使用して、各入力イメージの混合イメージに対する寄与度を調整します。

すべて折りたたむ

露光が異なる一連のイメージを読み取ります。これらは固定カメラでシーンの中に動く物体がない状況で撮影されたものです。

I1 = imread('car_1.jpg');
I2 = imread('car_2.jpg');
I3 = imread('car_3.jpg');
I4 = imread('car_4.jpg');

イメージを表示します。露光不足のイメージでは、ヘッドライトのような明るい領域だけに、詳しい情報があります。逆に、露光オーバーのイメージのヘッドライトは飽和していて、最適なコントラストは、レンガの床や屋根のような暗い領域で得られます。

montage({I1,I2,I3,I4})

露光融合を使用してイメージをブレンドします。既定では、関数 blendexposure は強力な光源からのハイライトを抑えるようにします。比較のために、ハイライトを抑えないイメージのブレンドも行います。2 つの結果を表示します。

E = blendexposure(I1,I2,I3,I4);
F = blendexposure(I1,I2,I3,I4,'ReduceStrongLight',false);
montage({E,F})
title('Exposure Fusion With (Left) and Without (Right) Strong Light Suppression')

融合したイメージでは、明るい領域と暗い領域に、詳しい情報があります。強力な光が抑えられると、ヘッドライトの形状を識別でき、飽和したピクセルは、ヘッドライトの境界を超えません。強力な光が抑えられないと、ヘッドライトの形状を識別できず、床や他の車の一部のピクセルは、ヘッドライトの反射で飽和しています。

露光が異なる一連のイメージを読み取ります。これらのイメージは固定カメラで撮影されたものです。シーンの中に動く物体はありません。

I1 = imread('office_1.jpg');
I2 = imread('office_2.jpg');
I3 = imread('office_3.jpg');
I4 = imread('office_4.jpg');
I5 = imread('office_5.jpg');
I6 = imread('office_6.jpg');
montage({I1,I2,I3,I4,I5,I6})
title('Images with Different Exposures')

露光融合を使用して登録イメージをブレンドします。オプションで融合のコントラスト、彩度、露光の重みを変更し、強力な光源を低減しないで実行します。結果を表示します。

E = blendexposure(I1,I2,I3,I4,I5,I6,'contrast',0.8,...
    'saturation',0.8,'wellexposedness',0.8,'reduceStrongLight',false);
imshow(E)
title('Blended Image Using Exposure Fusion')

入力引数

すべて折りたたむ

グレースケールまたは RGB イメージ。一連の m 行 n 列の数値行列または m x n x 3 の数値配列として指定します。イメージはすべて同じサイズで同じデータ型でなければなりません。

データ型: single | double | uint8 | uint16

名前と値の引数

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

例: blendexposure(I1,I2,I3,Contrast=0.5,Saturation=0.9)

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

例: blendexposure(I1,I2,I3,"Contrast",0.5,"Saturation",0.9)

ブレンド中のコントラストに対する相対重み。範囲 [0, 1] の数値として指定します。

ブレンド中の彩度に対する相対重み。範囲 [0, 1] の数値として指定します。

ブレンド中の露光画質に対する相対重み。範囲 [0, 1] の数値として指定します。各イメージの露光画質は、適切な露光のピクセルのモデルから、ピクセルの強度の発散に基づいています。

強力な光の低減。数値または logical の 1 (true) または 0 (false) として指定します。ReduceStrongLighttrue の場合、blendexposure はイメージで強力な光源からのハイライトを抑えるようにします。

メモ

入力イメージに強力な光源がなく、ReduceStrongLighttrue を指定した場合、出力イメージ J ではコントラストが低くなります。

出力引数

すべて折りたたむ

融合イメージ。サイズとデータ型が入力イメージ I1,I2,...,In と同じ数値行列または配列として返されます。

ヒント

  • 動きのあるシーンやカメラ ジッターがあるイメージをブレンドするには、関数 imregmtb を使用してまずイメージのレジストレーションを実行します。imregmtb ではイメージのレジストレーションを実行するとき、平行移動だけを考慮します。回転や他の種類の幾何学的変換は考慮されません。

アルゴリズム

関数 blendexposure は次のとおり、各画質測定の重みを計算します。

  • コントラストの重みはラプラシアン フィルター処理を使用して計算されます。

  • 彩度の重みは、各イメージの標準偏差から計算されます。

  • 適切な露光は、平均 0.5、標準偏差 0.2 のガウス分布とイメージの各部分を比較して決定します。

  • 強力な光の低減の重みは、他の 3 つの重みを混合し、一定の平均と分散のガウス分布を乗算して計算します。

これらの重みは、シームレスなブレンド用ガウス ピラミッドと対応するイメージのラプラス ピラミッドを使用し、分解されます。これはシーンの細部を維持できます。

参照

[1] Mertens, T., J. Kautz, and F. V. Reeth. "Exposure Fusion." Pacific Graphics 2007: Proceedings of the Pacific Conference on Computer Graphics and Applications. Maui, HI, 2007, pp. 382–390.

バージョン履歴

R2018a で導入