関数 | |
INT FVALGAPI | fnFIE_ps_curvature (FHANDLE hsrc, FHANDLE hdst, DOUBLE normal_thresh, INT curvature_type) |
曲率画像生成 | |
INT FVALGAPI | fnFIE_ps_frankot_chellappa (FHANDLE hsrc, FHANDLE hdst, DOUBLE normal_thresh) |
Frankot-Chellappa法による高さ画像生成 | |
INT FVALGAPI | fnFIE_ps_horn_brooks (FHANDLE hsrc, FHANDLE hdst, DOUBLE normal_thresh, INT niter) |
Horn-Brooks法による高さ画像生成 | |
INT FVALGAPI | fnFIE_ps_woodham (FHANDLE hsrc, DOUBLE *slant, DOUBLE *tilt, FHANDLE hdst_normal, FHANDLE hdst_albedo) |
![]() |
INT FVALGAPI fnFIE_ps_curvature | ( | FHANDLE | hsrc, | |
FHANDLE | hdst, | |||
DOUBLE | normal_thresh, | |||
INT | curvature_type | |||
) |
曲率画像生成
法線画像から曲率画像を計算します。
引数 hsrc で法線画像を指定します。DOUBLE型3チャネルで、0,1,2チャネルにそれぞれx,y,z方向となる法線画像を入力します。 fnFIE_ps_woodham() で作成した画像が利用出来ます。
引数 curvature_type で曲率の種類を指定します。種類は以下の値にて指定してください。
ガウス曲率を計算します。本関数では以下の式に従い計算します。
平均曲率を計算します。本関数では以下の式に従い計算します。
ここでは法線画像の(x,y)の位置での高さを意味し、
は高さ
のxに関する偏微分を指します。
は高さのxに関する偏微分を、yに関して偏微分したものを指します。他の記号についても同様です。
引数 normal_thresh は法線画像のZ成分が小さい場合の閾値です。 normal_thresh は法線: のZ成分が小さすぎる場合、勾配:
が計算出来なくなることを防ぐため、
を指定された値に置き換えて計算します。0より大きい数値を入力してください。(推奨値:単位法線ベクトル画像の場合、0.1)
入力画像と出力画像の幅、高さは同じでなければなりません。
[in] | hsrc | 入力画像 ( type: double / ch: 3 ) |
[out] | hdst | 出力画像(曲率画像) ( type: double / ch: 1 ) |
[in] | normal_thresh | 法線のZ成分が小さい場合の閾値 |
[in] | curvature_type | 曲率の種類。下記のいずれかを指定。
|
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像ハンドルが渡された。 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_NOMEMORY | メモリ不足エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
![]() 入力法線画像 | ![]() 出力画像(ガウス曲率) | ![]() 出力画像(平均曲率)
|
INT FVALGAPI fnFIE_ps_frankot_chellappa | ( | FHANDLE | hsrc, | |
FHANDLE | hdst, | |||
DOUBLE | normal_thresh | |||
) |
Frankot-Chellappa法による高さ画像生成
法線画像からFrankot-Chellappa法を用いて高さ画像を計算します。
引数 hsrc で法線画像を指定します。DOUBLE型3chで、0,1,2chにそれぞれx,y,z方向となる法線画像を入力します。 fnFIE_ps_woodham() で作成した法線画像などが利用できます。
引数 normal_thresh は法線画像のZ成分が小さい場合の閾値です。 normal_thresh は法線: のZ成分が小さすぎる場合、勾配:
が計算出来なくなることを防ぐため、
を指定された値に置き換えて計算します。0より大きい数値を入力してください。(推奨値:単位法線ベクトル画像の場合、0.1)
引数 hdst は出力画像であり、Frankot-Chellappa法で計算された高さ画像を出力します。
高さ画像は値が大きいほどカメラに近いことを意味し、撮像した画像中で最も高さが低い箇所を0となるようにした高さを出力します。 高さ画像に出力される数値の単位は入力画像のxやyと同一のサイズである画素となります。 一般には本ライブラリでの座標系 の高さの値と一致しません。
入力画像と出力画像の幅、高さは同じでなければなりません。
法線を得ることが難しいため、高さ画像を得ることも難しい場合があります。例として、本ライブラリ座標系でのxy平面に対して垂直な段差を持つ物体で高さ画像を計算する場合、段差の高さは高さ画像に反映されません。 詳しくは説明:注意 をご覧ください。
[in] | hsrc | 入力法線画像 ( type: double / ch: 3 ) |
[out] | hdst | 出力高さ画像 ( type: double / ch: 1 ) |
[in] | normal_thresh | 法線のZ成分が小さい場合の閾値 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像ハンドルが渡された。 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_NOMEMORY | メモリ不足エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
![]() 入力法線画像 | ![]() 出力画像
|
INT FVALGAPI fnFIE_ps_horn_brooks | ( | FHANDLE | hsrc, | |
FHANDLE | hdst, | |||
DOUBLE | normal_thresh, | |||
INT | niter | |||
) |
Horn-Brooks法による高さ画像生成
法線画像からHorn-Brooks法を用いて高さ画像を計算します。
引数 hsrc で法線画像を指定します。DOUBLE型3chで、0,1,2chにそれぞれx,y,z方向となる法線画像を入力します。 fnFIE_ps_woodham() で作成した法線画像などが利用できます。
引数 normal_thresh は法線画像のZ成分が小さい場合の閾値です。 normal_thresh は法線: のZ成分が小さすぎる場合、勾配:
が計算出来なくなることを防ぐため、
を指定された値に置き換えて計算します。0より大きい数値を入力してください。(推奨値:単位法線ベクトル画像の場合、0.1)
引数niter でHorn-Brooks法のイテレーション数を指定します。0以上の整数を入力してください。
100程度で輪郭強調の効果があります。イテレーション数が多い方が高さは正確になりますが、処理時間も増えます。
引数 hdst は出力画像であり、Horn-Brooks法で計算された高さ画像を出力します。
高さ画像は値が大きいほどカメラに近いことを意味し、撮像した画像中で最も高さが低い箇所を0となるようにした高さを出力します。 高さ画像に出力される数値の単位は入力画像のxやyと同一のサイズである画素となります。 一般には本ライブラリの座標系 での高さの値と一致しません。
入力画像と出力画像の幅、高さは同じでなければなりません。 また、入出力画像の幅、高さはともに3以上である必要があります。
法線を得ることが難しいため、高さ画像を得ることも難しい場合があります。例として、本ライブラリ座標系でのxy平面に対して垂直な段差を持つ物体で高さ画像を計算する場合、段差の高さは高さ画像に反映されません。 詳しくは説明:注意 をご覧ください。
[in] | hsrc | 入力法線画像 ( type: double / ch: 3 ) |
[out] | hdst | 出力高さ画像 ( type: double / ch: 1 ) |
[in] | normal_thresh | 法線のZ成分が小さい場合の閾値 |
[in] | niter | イテレーション数 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像ハンドルが渡された。 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_NOMEMORY | メモリ不足エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
![]() 入力法線画像 | ![]() 出力画像(niter=100) | ![]() 出力画像(niter=10000)
|
INT FVALGAPI fnFIE_ps_woodham | ( | FHANDLE | hsrc, | |
DOUBLE * | slant, | |||
DOUBLE * | tilt, | |||
FHANDLE | hdst_normal, | |||
FHANDLE | hdst_albedo | |||
) |
Woodhamによる法線画像生成
Woodham の手法を用いて法線画像を計算します。相異なる光源ベクトルの照明を用いて撮像された画像たちから物体の表面の法線を推定します。本手法では光源ベクトルは3つ以上必要で、光源ベクトルたちは全て同一平面上に存在してはいけません。手法や推奨環境について、詳しくは説明 をご覧ください。 手法の性質上、法線を得ることが難しい場合があります。詳しくは説明:注意 をご覧ください。
slant, tilt は光源ベクトル の情報を格納する配列です。入力画像のcチャネルに格納されている画像を撮像した際の光源ベクトルの情報をslant[c],tilt[c]に格納します。slant, tilt の要素の単位は度(°)です。 slant やtilt について、直接計測が難しい場合のための補助関数があります。
fnFIE_ps_woodham_calc_light_from_pos()
fnFIE_ps_woodham_calc_light_ring()
入力画像は複数枚撮像した画像を統合し一枚の画像にして入力します。 詳しくはサンプルコード をご覧ください。また各画像での光源は同一の輝度である前提です。
出力画像について、本関数では法線画像とアルベド画像を計算できます。
出力画像について、法線画像かアルベド画像で不要なものがある場合NULLを指定出来ます。
入力画像と出力画像は下記の条件を全て満たしていなければいけません。
[in] | hsrc | 入力画像 ( type: uc8, us16, double ) |
[in] | slant | 光源ベクトルの情報であるslantの配列 |
[in] | tilt | 光源ベクトルの情報であるtiltの配列 |
[out] | hdst_normal | 出力法線画像 ( type: double, / ch: 3 ) |
[out] | hdst_albedo | 出力アルベド画像 ( type: double, / ch: 1 ) |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像ハンドルが渡された。 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_NOMEMORY | メモリ不足エラー | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
![]() 入力画像0チャネル | ![]() 入力画像1チャネル | ![]() 入力画像2チャネル | ![]() 入力画像3チャネル
|
![]() 入力画像4チャネル | ![]() 入力画像5チャネル | ![]() 入力画像6チャネル | ![]() 入力画像7チャネル
|
![]() 出力法線画像
|