Woodhamによる法線画像生成
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_ps_woodham( FHANDLE hsrc, DOUBLE_PTR slant, DOUBLE_PTR tilt, FHANDLE hdst_normal, FHANDLE hdst_albedo ) |
Visual Basic |
---|
Public Shared Function fnFIE_ps_woodham ( hsrc As FHANDLE, slant As DOUBLE_PTR, tilt As DOUBLE_PTR, hdst_normal As FHANDLE, hdst_albedo As FHANDLE ) As Integer |
Parameters
- hsrc
- Type: fvalgcli..::..FHANDLE
入力画像 ( type: uc8, us16, double )
- slant
- Type: fvalgcli..::..DOUBLE_PTR
光源ベクトルの情報である slant の配列 (要素数は入力画像のチャネル数と同じ数)
- tilt
- Type: fvalgcli..::..DOUBLE_PTR
光源ベクトルの情報である tilt の配列 (要素数は入力画像のチャネル数と同じ数)
- hdst_normal
- Type: fvalgcli..::..FHANDLE
出力法線画像 ( type: double, / ch: 3 )
- hdst_albedo
- Type: fvalgcli..::..FHANDLE
出力アルベド画像 ( type: double, / ch: 1 )
Return Value
Type: Int32以下のエラーコードを返します。
エラーコード:
f_err | 内容 |
---|---|
F_ERR_NONE | 正常終了 |
F_ERR_NOMEMORY | メモリ不足 |
F_ERR_INVALID_IMAGE | 不正な画像オブジェクト |
F_ERR_INVALID_PARAM | パラメータ異常 |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
Examples
C# | Copy |
---|---|
using System; using System.Collections.Generic; using System.Text; using fvalgcli; namespace TC { public partial class FIE { [FvPluginExecute] public void fnFIE_ps_woodham() { int status = (int)f_err.F_ERR_NONE; FHANDLE hsrc = FHANDLE.Zero; FHANDLE hdst_normal = FHANDLE.Zero; FHANDLE hdst_albedo = FHANDLE.Zero; DOUBLE_PTR slant = IntPtr.Zero; DOUBLE_PTR tilt = IntPtr.Zero; try { // 入力画像: (ファイル読み込み) api.fnFIE_load_img_file(TestImageDir + "/TC/PS/fie_ps_sample-uc8.png", ref hsrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8); // 入力画像の情報取得. int width = api.fnFIE_img_get_width(hsrc); int height = api.fnFIE_img_get_height(hsrc); int channels = api.fnFIE_img_get_channels(hsrc); // 出力画像の生成. hdst_normal = api.fnFIE_img_root_alloc(f_imgtype.F_IMG_DOUBLE, 3, width, height); hdst_albedo = api.fnFIE_img_root_alloc(f_imgtype.F_IMG_DOUBLE, 1, width, height); // 光源ベクトル の情報. slant = DOUBLE_PTR.alloc(channels); tilt = DOUBLE_PTR.alloc(channels); slant[0] = 26.565051177078; slant[1] = 26.565051177078; slant[2] = 26.565051177078; tilt[0] = 170; tilt[1] = 290; tilt[2] = 410; // 処理の実行. status = api.fnFIE_ps_woodham(hsrc, slant, tilt, hdst_normal, hdst_albedo); if (status != 0) throw new FvException(status); // 出力画像の保存. api.fnFIE_save_tiff(ResultDir + "/fnFIE_ps_woodham-normal.tiff", hdst_normal, f_tiff_compression.F_TIFF_COMPRESSION_DEFLATE, -1); api.fnFIE_save_tiff(ResultDir + "/fnFIE_ps_woodham-albedo.tiff", hdst_albedo, f_tiff_compression.F_TIFF_COMPRESSION_DEFLATE, -1); } finally { hsrc.Dispose(); hdst_normal.Dispose(); hdst_albedo.Dispose(); slant.Dispose(); tilt.Dispose(); } } } } |
Visual Basic | Copy |
---|---|
Imports System.Collections.Generic Imports System.Text Imports fvalgcli Public Partial Class FIE <FvPluginExecute> _ Public Sub fnFIE_ps_woodham() Dim status As Integer = CInt(f_err.F_ERR_NONE) Dim hsrc As FHANDLE = FHANDLE.Zero Dim hdst_normal As FHANDLE = FHANDLE.Zero Dim hdst_albedo As FHANDLE = FHANDLE.Zero Dim slant As DOUBLE_PTR = IntPtr.Zero Dim tilt As DOUBLE_PTR = IntPtr.Zero Try ' 入力画像: (ファイル読み込み) api.fnFIE_load_img_file(TestImageDir & "/TC/PS/fie_ps_sample-uc8.png", _ hsrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8) ' 入力画像の情報取得. Dim width As Integer = api.fnFIE_img_get_width(hsrc) Dim height As Integer = api.fnFIE_img_get_height(hsrc) Dim channels As Integer = api.fnFIE_img_get_channels(hsrc) ' 出力画像の生成. hdst_normal = api.fnFIE_img_root_alloc(f_imgtype.F_IMG_DOUBLE, 3, width, height) hdst_albedo = api.fnFIE_img_root_alloc(f_imgtype.F_IMG_DOUBLE, 1, width, height) ' 光源ベクトル の情報. slant = DOUBLE_PTR.alloc(channels) tilt = DOUBLE_PTR.alloc(channels) slant(0) = 26.565051177078 slant(1) = 26.565051177078 slant(2) = 26.565051177078 tilt(0) = 170 tilt(1) = 290 tilt(2) = 410 ' 処理の実行. status = api.fnFIE_ps_woodham(hsrc, slant, tilt, hdst_normal, hdst_albedo) If status <> 0 Then Throw New FvException(status) End If ' 出力画像の保存. api.fnFIE_save_tiff(ResultDir & "/fnFIE_ps_woodham-normal.tiff", _ hdst_normal, f_tiff_compression.F_TIFF_COMPRESSION_DEFLATE, -1) api.fnFIE_save_tiff(ResultDir & "/fnFIE_ps_woodham-albedo.tiff", _ hdst_albedo, f_tiff_compression.F_TIFF_COMPRESSION_DEFLATE, -1) Finally hsrc.Dispose() hdst_normal.Dispose() hdst_albedo.Dispose() slant.Dispose() tilt.Dispose() End Try End Sub End Class |