ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

makehdr

ハイ ダイナミック レンジ イメージを作成

説明

HDR = makehdr(files) は、files 内にある、空間的にレジストレーションされたロー ダイナミック レンジ (LDR) イメージのセットから単精度のハイ ダイナミック レンジ (HDR) イメージ HDR を作成します。

HDR = makehdr(imds) は、ImageDatastore オブジェクト imds として格納されている、空間的にレジストレーションされた LDR イメージのセットから単精度のハイ ダイナミック レンジ イメージ HDR を作成します。

HDR = makehdr(___,Name,Value) は、前のいずれかの構文の入力引数に加えて、イメージ作成のさまざまな特性を制御する名前と値のペアを使用します。

メモ

入力イメージ ファイルには EXIF (Exchangeable Image File Format) 露光メタデータを含めなければなりません。makehdr は、最も明るいイメージと最も暗いイメージの中間の露光値を、HDR の計算の基本露光として使用します。この値は、特定のファイルにある必要はありません。この中間の露光値の計算方法についての詳細は、アルゴリズムを参照してください。

すべて折りたたむ

同じ絞り値を共有し、異なる露光時間を持つロー ダイナミック レンジ (LDR) イメージのセットからハイ ダイナミック レンジ (HDR) イメージを作成します。

6 つのロー ダイナミック レンジ イメージをワークスペースに読み込みます。各露光時間のベクトルを作成します。イメージをモンタージュとして表示します。

files = {'office_1.jpg','office_2.jpg','office_3.jpg',...
         'office_4.jpg','office_5.jpg','office_6.jpg'};
expTimes = [0.0333 0.1000 0.3333 0.6250 1.3000 4.0000];
montage(files)

LDR イメージを組み合わせて HDR イメージにします。

hdr = makehdr(files,'RelativeExposure',expTimes./expTimes(1));

HDR イメージを表示します。

rgb = tonemap(hdr);
imshow(rgb)

同じ絞り値を共有し、異なる露光時間を持つ 6 つのロー ダイナミック レンジ (LDR) イメージのセットからハイ ダイナミック レンジ (HDR) イメージを作成します。推定されたカメラ応答関数の値は、これらの LDR イメージから計算され、HDR イメージを生成するために使用されます。

空間的にレジストレーションされた 6 つの LDR イメージのセットをワークスペースに読み取ります。これらのイメージを含む imageDatastore オブジェクトを作成します。イメージをモンタージュとして表示します。

setDir = fullfile(toolboxdir('images'),'imdata','office_*');
imds = imageDatastore(setDir);
montage(imds)

データストア内のイメージからカメラ応答関数を推定します。

crf = camresponse(imds);

推定されたカメラ応答関数の値を使用することによって、LDR イメージを組み合わせて HDR イメージにします。

hdr = makehdr(imds,'CameraResponse',crf);

HDR イメージを表示します。

rgb = tonemap(hdr);
imshow(rgb)

入力引数

すべて折りたたむ

空間的にレジストレーションされた LDR イメージのセット。string 配列または文字ベクトルの cell 配列として指定します。これらのイメージは、任意のビット深度のカラーまたはグレースケールです。ただし、LDR イメージの推奨ビット深度は 8 または 16 です。

データ型: char | string | cell

空間的にレジストレーションされた LDR イメージのセット。ImageDatastore オブジェクトとして指定します。これらのイメージは、任意のビット深度のカラーまたはグレースケールです。ただし、LDR イメージの推奨ビット深度は 8 または 16 です。

名前と値のペアの引数

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

例: makehdr(files,'RelativeExposure',[0.1 0.3 0.4]);

基本露光として使用するファイルの名前。string スカラーまたは文字ベクトルとして指定します。

データ型: char | string

メモ

名前と値のペア 'BaseFile''ExposureValues'、および 'RelativeExposure' は、一度に 1 つだけ使用できます。

入力セット内の各ファイルの露光値。正の値の数値ベクトルとして指定します。このベクトルの k 番目の要素は、入力セット内の k 番目の LDR イメージに対応します。露光値 (EV) が 1 増加するのは、2 倍の露光に相当します。EV が 1 減少するのは 2 分の 1 の露光に相当します。このパラメーターを指定した場合、この関数は EXIF 露光メタデータをオーバーライドします。

データ型: single | double

入力セット内の各ファイルの相対露光値。正の値の数値ベクトルとして指定します。このベクトルの k 番目の要素は、入力セット内の k 番目の LDR イメージに対応します。

たとえば、相対露光 (RE) 値が 0.5 のイメージには、RE 値が 1 のイメージの半分の露光があります。同様に、RE 値が 3 のイメージには、RE 値が 1 のイメージの 3 倍の露光があります。このパラメーターを指定した場合、関数は EXIF 露光メタデータをオーバーライドします。

データ型: single | double

最小適正露光値。正の整数として指定します。各 LDR イメージで、この最小値より小さい値を持つピクセルは露光不足と見なされ、最終的な HDR イメージに寄与しません。既定では、この最小値は、イメージのデータ型で許容される最大強度の 2% に設定されます。

データ型: single | double

最大適正露光値。正の整数として指定します。各 LDR イメージで、この最大値より大きい値を持つピクセルは露光過多と見なされ、最終的な HDR イメージに寄与しません。既定では、この最大値は、イメージのデータ型で許容される最大強度の 98% に設定されます。

データ型: single | double

カメラ応答関数。グレースケール イメージの場合は n 行 1 列のベクトルとして、カラー イメージの場合は n 行 3 列の行列として指定します。カメラ応答関数は、入力イメージの対数露光値 (シーンの放射輝度) を強度レベルにマッピングします。n の値は 2bit depth です。たとえば、イメージの入力セットのビット深度が 8 の場合、n は 256 です。

メモ

名前と値のペア 'MaximumLimit''MinimumLimit' は、'CameraResponse' が指定された場合、無視されます。

データ型: single | double

出力引数

すべて折りたたむ

ハイ ダイナミック レンジ イメージ。m x n x 3 の数値配列として返されます。

データ型: single

アルゴリズム

関数 makehdr は、入力イメージの露光値 (EV) を使用して中間の露光値を計算します。各イメージの露光値は、絞りとシャッター速度に基づいて計算されます。絞りとシャッター速度の値は、その入力ファイルの EXIF メタデータに格納されるか、名前と値のペア 'ExposureValues' を使用して指定されます。中間の EV は、最大の EV と最小の EV の平均値として計算され、基本露光として使用されます。

参照

[1] Reinhard et al. High Dynamic Range Imaging 2006. Ch. 4.

[2] Debevec, P.E., and J. Malik. "Recovering High Dynamic Range Radiance Maps from Photographs." In ACM SIGGRAPH 2008 classes, Article No. 31. New York, NY: ACM, 2008.

R2008a で導入