実行
[HDR合成]


列挙型

enum  f_hdr_calibrate_method { F_HDR_CALIBRATE_LINEAR = 0, F_HDR_CALIBRATE_ROBERTSON }
 逆カメラ応答関数のキャリブレーション手法タイプ [詳細]
enum  f_hdr_execute_method { F_HDR_EXECUTE_ROBERTSON = 0, F_HDR_EXECUTE_DEBEVEC }
 HDR画像生成手法タイプ [詳細]

関数

FHANDLE FVALGAPI fnFIE_hdr_calibrate_linear (INT img_type, INT channels, INT *exerr)
 線形応答を表す逆カメラ応答関数の生成
FHANDLE FVALGAPI fnFIE_hdr_calibrate_robertson (FHANDLE imgstack, const DOUBLE *exposure_ratios, INT iter_limit, DOUBLE thresh, INT *exerr)
 Robertsonによる逆カメラ応答関数推定
INT FVALGAPI fnFIE_hdr_execute (FHANDLE hhdr, FHANDLE imgstack, FHANDLE hdr_img, const DOUBLE *exposure_ratios)
 HDR画像生成
INT FVALGAPI fnFIE_hdr_get_imgtype (FHANDLE hhdr)
 画像型の取得
INT FVALGAPI fnFIE_hdr_get_num_images (FHANDLE hhdr)
 画像枚数の取得
INT FVALGAPI fnFIE_hdr_get_channels (FHANDLE hhdr)
 チャネル数の取得
INT FVALGAPI fnFIE_hdr_get_icrf (FHANDLE hhdr, INT ch, DOUBLE *icrf_values, INT *num_values)
 逆カメラ応答関数の取得
DOUBLE FVALGAPI fnFIE_hdr_get_gain (FHANDLE hhdr, INT ch)
 ゲインの取得
INT FVALGAPI fnFIE_hdr_set_gain (FHANDLE hhdr, INT ch, DOUBLE gain)
 ゲインの設定
DOUBLE FVALGAPI fnFIE_hdr_get_exposure_ratio (FHANDLE hhdr, INT img_index)
 露光量の比の取得
INT FVALGAPI fnFIE_hdr_get_calibrate_method (FHANDLE hhdr)
 キャリブレーション手法の取得
INT FVALGAPI fnFIE_hdr_get_execute_method (FHANDLE hhdr)
 HDR画像生成手法の取得
INT FVALGAPI fnFIE_hdr_set_execute_method (FHANDLE hhdr, enum f_hdr_execute_method method)
 HDR画像生成手法の設定
INT FVALGAPI fnFIE_hdr_mertens (FHANDLE imgstack, FHANDLE hdst, INT pyramid_level_limit)
 Mertensによる画像合成 (Exposure fusion)
INT FVALGAPI fnFIE_hdr_tonemap_gamma (FHANDLE hsrc, FHANDLE hdst, DOUBLE gamma)
 ガンマ変換を利用したtonemapping
INT FVALGAPI fnFIE_hdr_tonemap_hood (FHANDLE hsrc, FHANDLE hdst, DOUBLE alpha)
 Hoodによるtonemapping

列挙型

逆カメラ応答関数のキャリブレーション手法タイプ

列挙型の値:
F_HDR_CALIBRATE_LINEAR  線形応答を仮定したキャリブレーション
F_HDR_CALIBRATE_ROBERTSON  Robertsonの手法によるキャリブレーション

HDR画像生成手法タイプ

列挙型の値:
F_HDR_EXECUTE_ROBERTSON  Robertsonの手法によるHDR画像生成
F_HDR_EXECUTE_DEBEVEC  Debevecの手法によるHDR画像生成


関数

FHANDLE FVALGAPI fnFIE_hdr_calibrate_linear ( INT  img_type,
INT  channels,
INT *  exerr 
)

線形応答を表す逆カメラ応答関数の生成

線形応答を表す逆カメラ応答関数を生成します。 手法の詳細については、カメラ応答関数を線形とした手法 をご覧ください。

パラメータ img_type および channels には、 HDR画像生成時に利用する入力画像の型とチャネル数を指定してください。 指定可能な入力画像の型は、 F_IMG_UC8 のみです。

生成された逆カメラ応答関数はハンドルオブジェクト(HDRオブジェクト)として返されます。 返されたHDRオブジェクトは不要になったら fnFIE_free_object() にて解放してください。 HDRオブジェクトの利用方法については HDR合成の使い方 をご覧ください。

引数:
[in] img_type HDR画像生成時に入力する画像の型
[in] channels HDR画像生成時に入力する画像のチャネル数
[out] exerr エラーコード。エラーコードを受け取る必要の無い場合は、NULLを指定します。
  • F_ERR_NONE 正常終了
  • F_ERR_NOMEMORY メモリ不足で確保に失敗した
  • F_ERR_INVALID_PARAM パラメータ不正
  • F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
戻り値:
正常終了した場合は、生成したHDRオブジェクトのハンドルを返します。 何らかのエラーが発生し、処理が失敗した場合は NULL を返します。

FHANDLE FVALGAPI fnFIE_hdr_calibrate_robertson ( FHANDLE  imgstack,
const DOUBLE *  exposure_ratios,
INT  iter_limit,
DOUBLE  thresh,
INT *  exerr 
)

Robertsonによる逆カメラ応答関数推定

Robertsonの手法により逆カメラ応答関数を推定します。 手法の詳細については、Robertsonによる逆カメラ応答関数の推定 をご覧ください。

入力画像スタックimgstack について、以下の全てを満たす必要があります。

  • 画像スタックは少なくとも2枚以上の画像を保有する。
  • 画像スタックが格納している画像について、幅、高さ、及びチャネル数は全て一致している。
  • 画像スタックが格納している画像について、画像型=F_IMG_UC8である。

exposure_ratios は露光量の比の配列です。入力画像スタックが保有する画像枚数と同じ長さのDOUBLE型配列を入力してください。 exposure_ratios[i] にはimgstack のi番目の画像の露光量の比(正の値)を入力してください。 露光量の比の例として、露光時間を利用できます(単位は問いません)。

iter_limit は、放射輝度推定と応答関数推定を繰り返す回数の上限です。0以上の整数を入力してください。 推奨値:30

thresh は、推定前後での各チャネルの応答関数をベクトルと見た時のノルムの差がthresh 以下の場合、 収束したとし推定を打ち止めするための閾値です。0以上の数値を入力してください。 値が小さいほど正確と思われる結果が得られますが、時間がかかります。 推奨値:0.01

推定された逆カメラ応答関数はハンドルオブジェクト(HDRオブジェクト)として返されます。 返されたHDRオブジェクトは不要になったら fnFIE_free_object() にて解放してください。 HDRオブジェクトの利用方法については HDR合成の使い方 をご覧ください。

画像スタックの画像枚数と画像1枚あたりの画素数の積がUI32_MAXを超える場合、F_ERR_INVALID_IMAGEを返します。

引数:
[in] imgstack 入力画像スタック (type: uc8)
[in] exposure_ratios 露光量の比の配列
[in] iter_limit 推定を繰り返す回数の上限
[in] thresh 推定前後で推定値たちの差がthresh以下の場合、収束したとし推定を打ち止めします
[out] exerr エラーコード。エラーコードを受け取る必要の無い場合は、NULLを指定します。
  • F_ERR_NONE 正常終了
  • F_ERR_NOMEMORY メモリ不足で確保に失敗した
  • F_ERR_INVALID_OBJECT imgstack が画像スタックオブジェクトではない
  • F_ERR_INVALID_IMAGE 不正な画像が渡された
  • F_ERR_INVALID_PARAM パラメータ不正
  • F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
戻り値:
正常終了した場合は、生成したHDRオブジェクトのハンドルを返します。 何らかのエラーが発生し、処理が失敗した場合は NULL を返します。

INT FVALGAPI fnFIE_hdr_execute ( FHANDLE  hhdr,
FHANDLE  imgstack,
FHANDLE  hdr_img,
const DOUBLE *  exposure_ratios 
)

HDR画像生成

HDRオブジェクト hhdr を用いてHDR合成を行い、HDR画像を生成します。 HDRオブジェクトの生成方法については HDR合成の使い方 をご覧ください。

入力画像スタックimgstack について、以下の全てを満たす必要があります。

  • 画像スタックは少なくとも2枚以上の画像を格納する。
  • 画像スタックが格納している画像について、幅、高さ、及びチャネル数は全て一致している。
  • 画像スタックが格納している画像について、画像型は全てF_IMG_UC8である。

出力画像 hdr_img について、以下の全てを満たす必要があります。

  • 出力画像の幅、高さ及びチャネル数は、入力画像スタックが格納する画像の幅、高さ及びチャネル数と一致する。
  • 出力画像の画像型はF_IMG_DOUBLEである。

exposure_ratios は露光量の比の配列です。 入力画像スタックが格納する画像枚数と同じ長さのDOUBLE型配列を入力してください。 exposure_ratios[i] にはimgstack のi番目の画像の露光量の比(正の値)を入力してください。 露光量の比の例として、露光時間を利用できます(単位は問いません)。 HDRオブジェクト hhdr を生成する際に露光量の比の配列を指定しており、 かつ生成時の画像枚数が imgstack が格納する画像の数と一致する場合は、 exposure_ratios を NULL に指定することができます。 その場合、HDRオブジェクト生成時に指定した露光量の比が利用されます。

本関数の挙動は、HDRオブジェクト hhdr の設定に依存します。 必要に応じて、下記の関数によりHDRオブジェクトの設定を変更してください。

HDRオブジェクト hhdr には NULL を指定することができます。 NULL を指定した場合、 fnFIE_hdr_calibrate_linear() により生成されたHDRオブジェクトを指定した場合と同様に動作します。

引数:
[in] hhdr HDRオブジェクト
[in] imgstack 入力画像スタック (type: uc8)
[out] hdr_img 出力画像 ( type: double )
[in] exposure_ratios 露光量の比の配列
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_OBJECT imgstack が画像スタックオブジェクトではない
F_ERR_INVALID_IMAGE 不正な画像が渡された
F_ERR_INVALID_PARAM パラメータ不正
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_hdr_get_imgtype ( FHANDLE  hhdr  ) 

画像型の取得

HDRオブジェクトが格納する逆カメラ応答関数に対応する画像型を取得します。

戻り値:
正常終了した場合は、HDRオブジェクトに対応する画像型を返します。 異常終了した場合は、-1を返します。

INT FVALGAPI fnFIE_hdr_get_num_images ( FHANDLE  hhdr  ) 

画像枚数の取得

HDRオブジェクトの生成に使用した画像枚数を取得します。 fnFIE_hdr_calibrate_linear() により生成されたHDRオブジェクトを指定した場合は、常に0が返ります。

戻り値:
正常終了した場合は、HDRオブジェクトの生成に使用した画像枚数を返します。 異常終了した場合は、-1を返します。

INT FVALGAPI fnFIE_hdr_get_channels ( FHANDLE  hhdr  ) 

チャネル数の取得

HDRオブジェクトが格納する逆カメラ応答関数に対応するチャネル数を取得します。

戻り値:
正常終了した場合は、HDRオブジェクトに対応するチャネル数を返します。 異常終了した場合は、-1を返します。

INT FVALGAPI fnFIE_hdr_get_icrf ( FHANDLE  hhdr,
INT  ch,
DOUBLE *  icrf_values,
INT *  num_values 
)

逆カメラ応答関数の取得

HDRオブジェクトに格納されている逆カメラ応答関数 (ICRF) を取得します。

ICRFの形式
ICRFはチャネルごとに定義されており、本関数では単一チャネルのICRFを取得します。 チャネル数は ch パラメータで指定します。 ICRFはDOUBLE型の配列で表現されます。 配列の要素数は、HDRオブジェクトに対応する画像型(fnFIE_hdr_get_imgtype()で返される型)の取りうる画素値の数です。 例えば画像型が F_IMG_UC8 の場合、256個です。 配列の各要素は、画素値に対応する相対放射輝度の値を表します。
ICRFの出力配列の指定方法
icrf_values にICRFの出力配列を指定します。 必要な要素数(HDRオブジェクトに対応する画像型の取りうる画素値の数)以上の配列を指定してください。 num_values に出力配列の要素数を指定します。 出力配列の要素数が必要な要素数より小さい場合はエラーとなります。 関数が正常終了した場合、 num_values には実際に出力された要素数が格納されます。
引数:
[in] hhdr HDRオブジェクト
[in] ch 対象チャネル (0 <= ch < fnFIE_hdr_get_channels() で返される値)
[out] icrf_values 逆カメラ応答関数の出力配列。必要な要素数以上の配列を指定してください。
[in,out] num_values 出力配列の長さ
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_OBJECT 不正なオブジェクトが渡された
F_ERR_INVALID_PARAM パラメータ不正
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

DOUBLE FVALGAPI fnFIE_hdr_get_gain ( FHANDLE  hhdr,
INT  ch 
)

ゲインの取得

HDRオブジェクトに格納されているゲインを取得します。

ゲインはチャネル間の画素値の比を調整するパラメータです。 各チャネルのゲインの初期値は1.0です。

引数:
[in] hhdr HDRオブジェクト
[in] ch 対象チャネル (0 <= ch < fnFIE_hdr_get_channels() で返される値)
戻り値:
正常終了した場合は、ゲイン値を返します。 異常終了した場合は、-1.0を返します。

INT FVALGAPI fnFIE_hdr_set_gain ( FHANDLE  hhdr,
INT  ch,
DOUBLE  gain 
)

ゲインの設定

HDRオブジェクトにゲインを設定します。

ゲインはチャネル間の画素値の比を調整するパラメータです。 各チャネルのゲインの初期値は1.0です。 1.0より大きな値を設定することで、該当チャネルの放射輝度が大きいことを意味します。 反対に、1.0より小さな値を設定することで、該当チャネルの放射輝度が小さいことを意味します。

カラーキャリブレーション結果が利用できる場合など、チャネル間の画素値の比が既知の場合に本関数をご利用ください。

引数:
[in] hhdr HDRオブジェクト
[in] ch 対象チャネル (0 <= ch < fnFIE_hdr_get_channels() で返される値)
[in] gain ゲイン値 (0 < gain)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_OBJECT 不正なオブジェクトが渡された
F_ERR_INVALID_PARAM パラメータ不正
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

DOUBLE FVALGAPI fnFIE_hdr_get_exposure_ratio ( FHANDLE  hhdr,
INT  img_index 
)

露光量の比の取得

HDRオブジェクトに格納されている露光量の比を取得します。

引数:
[in] hhdr HDRオブジェクト
[in] img_index 対象画像インデックス (0 <= img_index < fnFIE_hdr_get_num_images() で返される値)
戻り値:
正常終了した場合は、露光量の比を返します。 異常終了した場合は、-1.0を返します。

INT FVALGAPI fnFIE_hdr_get_calibrate_method ( FHANDLE  hhdr  ) 

キャリブレーション手法の取得

HDRオブジェクトの生成に使用したキャリブレーション手法を表す定数を取得します。

引数:
[in] hhdr HDRオブジェクト
戻り値:
正常終了した場合は、キャリブレーション手法を返します。 異常終了した場合は、-1を返します。
  • F_HDR_CALIBRATE_LINEAR : 線形応答
  • F_HDR_CALIBRATE_ROBERTSON : Robertsonの手法

INT FVALGAPI fnFIE_hdr_get_execute_method ( FHANDLE  hhdr  ) 

HDR画像生成手法の取得

HDRオブジェクトからHDR画像を生成する際の手法を表す定数を取得します。 初期値はHDRオブジェクトの生成方法によって異なり、下記の通りです。

引数:
[in] hhdr HDRオブジェクト
戻り値:
正常終了した場合は、HDR画像生成手法を返します。 異常終了した場合は、-1を返します。
  • F_HDR_EXECUTE_ROBERTSON : Robertsonの手法
  • F_HDR_EXECUTE_DEBEVEC : Debevecの手法

INT FVALGAPI fnFIE_hdr_set_execute_method ( FHANDLE  hhdr,
enum f_hdr_execute_method  method 
)

HDR画像生成手法の設定

HDRオブジェクトにHDR画像の生成手法を設定します。 HDRオブジェクトの生成時に適切な初期値が設定されますが、状況によっては変更が好ましい場合があります。 本関数により手法を切り替えることができます。

設定できる手法は下記の通りです。

  • F_HDR_EXECUTE_ROBERTSON : Robertsonの手法
  • F_HDR_EXECUTE_DEBEVEC : Debevecの手法

より詳しくは、 fnFIE_hdr_execute()について をご覧ください。

引数:
[in] hhdr HDRオブジェクト
[in] method HDR画像生成手法
  • F_HDR_EXECUTE_ROBERTSON : Robertsonの手法
  • F_HDR_EXECUTE_DEBEVEC : Debevecの手法
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_OBJECT 不正なオブジェクトが渡された
F_ERR_INVALID_PARAM パラメータ不正
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_hdr_mertens ( FHANDLE  imgstack,
FHANDLE  hdst,
INT  pyramid_level_limit 
)

Mertensによる画像合成 (Exposure fusion)

コントラストの高さと画素値が中間付近にあることを指標として重み付けをし、 複数の画像をピラミッド合成によって融合します。手法の詳細については、Mertensの手法HDR合成の各手法の性質 をご覧ください。

入力画像スタックimgstack について、以下の全てを満たす必要があります。

  • 画像スタックは少なくとも2枚以上の画像を保有する。
  • 画像スタックが格納している画像について、幅、高さが全て一致している。
  • 画像スタックが格納している画像について、全てチャネル数=1、画像型=F_IMG_UC8である。

出力画像hdst について、以下の全てを満たす必要があります。

  • 入力画像スタックが格納する画像と幅、高さが出力画像の幅、高さと一致している。
  • 出力画像はチャネル数=1、画像型=F_IMG_UC8である。

pyramid_level_limit は、ピラミッドの深さの上限を決めるパラメータです。1以上の整数値または-1を入力してください。 -1を入力した場合、画像サイズから計算されたデフォルト値となります。推奨値:-1

引数:
[in] imgstack 入力画像スタック (type: uc8, ch: 1)
[out] hdst 出力画像 ( type: uc8, ch: 1 )
[in] pyramid_level_limit ピラミッドの深さの上限を決めるパラメータ。
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_IMAGE 不正な画像が渡された
F_ERR_INVALID_PARAM パラメータ不正
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_hdr_tonemap_gamma ( FHANDLE  hsrc,
FHANDLE  hdst,
DOUBLE  gamma 
)

ガンマ変換を利用したtonemapping

ガンマ変換を利用したtonemappingを行います。入力画像の各チャネルで最小値最大値を[0,1]の範囲に正規化し、ガンマ変換を行い、 その後[0,UC8_MAX]の範囲に正規化します。

入出力画像について、以下の全てを満たす必要があります。

  • 入力画像の幅、高さ、及びチャネル数は、出力画像の幅、高さ、及びチャネル数と一致している。
  • 入力画像の画像型はF_IMG_DOUBLEである。
  • 出力画像の画像型はF_IMG_UC8である。

gamma はガンマ変換で用いる値です。0より大きい数値を入力してください。 推奨値:2.2

入力画像の画素値が全てほぼ同じ値である場合、出力画像の画素値は全て0になります。

引数:
[in] hsrc 入力画像 ( type: double )
[out] hdst 出力画像 ( type: uc8 )
[in] gamma ガンマ値 ( gamma>0 )
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_IMAGE 不正な画像が渡された
F_ERR_INVALID_PARAM パラメータ不正
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_hdr_tonemap_hood ( FHANDLE  hsrc,
FHANDLE  hdst,
DOUBLE  alpha 
)

Hoodによるtonemapping

Hoodの手法によるtonemappingを行います。

入出力画像について、以下の全てを満たす必要があります。

  • 入力画像の幅、高さは、出力画像の幅、高さと一致している。
  • 入力画像のチャネル数はともに1である。
  • 入力画像の画像型はF_IMG_DOUBLEである。
  • 出力画像の画像型はF_IMG_UC8である。

トーンマッピングは次式のように行われます。

\[ x\to \dfrac {x^{1-alpha}}{1+x^{1-alpha}} \]

xは正規化された画素値で、alpha は内部で変換に用いられるパラメータです。 alpha は-1または0以上1未満の値を入力してください。

-1を入力した場合、Reinhardの方法により画像から自動でalpha を計算し、その値で変換されます。 alpha の計算式は以下の通りです。

$ L_{max}, L_{min}, L_{ave}$ はそれぞれhsrc を正規化し、微小な正の値と最大をとった後の対数画像の最大画素値、最小画素値、平均画素値とし、

\[ k=\dfrac {L_{max}-L_{ave}}{L_{max}-L_{min}} \]

\[ alpha=0.3+0.7k^{1.4} \]

入力画像の画素値が全てほぼ同じ値である場合、出力画像の画素値は全て0になります。

引数:
[in] hsrc 入力画像 (type: double )
[out] hdst 出力画像 ( type: uc8 )
[in] alpha 入力パラメータ( -1または0<=alpha<1を満たす数値 )
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_IMAGE 不正な画像が渡された
F_ERR_INVALID_PARAM パラメータ不正
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参考文献:
  • Donald C. Hood et al.(1979), "Psychophysical tests of models of the response function"
  • Erik Reinhard et al.(2005), "Dynamic Range Reduction Inspired by Photoreceptor Physiology"


Documentation copyright © 2009-2026 TOKYO ELECTRON DEVICE LIMITED.
Generated on Tue Mar 24 10:11:00 2026 for FIEライブラリ by doxygen 1.5.6-FASTSP-p2