ユークリッド変換の変換行列を計算
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_geotrans_estimate_euclidean_matrix( FMATRIX_PTR trans_mat, DPNT_T_PTR pnts_from, DPNT_T_PTR pnts_to, uint pnts_num ) |
Visual Basic |
---|
Public Shared Function fnFIE_geotrans_estimate_euclidean_matrix ( trans_mat As FMATRIX_PTR, pnts_from As DPNT_T_PTR, pnts_to As DPNT_T_PTR, pnts_num As UInteger ) As Integer |
Parameters
- trans_mat
- Type: fvalgcli..::..FMATRIX_PTR
求められたユークリッド変換の変換行列 (3x3)
- pnts_from
- Type: fvalgcli..::..DPNT_T_PTR
ユークリッド変換前の点列の座標
- pnts_to
- Type: fvalgcli..::..DPNT_T_PTR
ユークリッド変換後の点列の座標
- pnts_num
- Type: System..::..UInt32
pnts_from/pnts_to の点数
Return Value
Type: Int32以下のエラーコードを返します。
エラーコード:
f_err | 内容 |
---|---|
F_ERR_NONE | 正常終了 |
F_ERR_NOMEMORY | メモリ不足エラー |
F_ERR_INVALID_PARAM | パラメータ異常 |
F_ERR_INVALID_OBJECT | fpMat が3×3の行列ではない |
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_geotrans_estimate_euclidean_matrix() { int status = (int)f_err.F_ERR_NONE; FMATRIX_PTR fpMat = IntPtr.Zero; // 求められた変換行列. DPNT_T_PTR pntspFrom = IntPtr.Zero; // 変換前の点列の座標. DPNT_T_PTR pntspTo = IntPtr.Zero; // 変換後の点列の座標. uint uiNum = 0; // pntspFrom/pntspTo の点数. const int size = 256; const int shift = 32; try { // 変換前後の点の座標列の確保と値の設定. uiNum = 2; pntspFrom = DPNT_T_PTR.alloc((int)uiNum); pntspTo = DPNT_T_PTR.alloc((int)uiNum); pntspFrom[0] = DPNT_T.init(0, 0); pntspFrom[1] = DPNT_T.init(size, 0); pntspTo[0] = DPNT_T.init(shift, shift); pntspTo[1] = DPNT_T.init(size + shift, shift); // 変換行列の確保. fpMat = api.fnFIE_mat_aalloc(3, 3); // 処理の実行. status = api.fnFIE_geotrans_estimate_euclidean_matrix(fpMat, pntspFrom, pntspTo, uiNum); // エラー判定. Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status); // 結果出力. ConsoleOut.WriteFMATRIX(fpMat, 3, 3); // 得られた変換行列によるアフィン変換の実行と結果画像の保存. { FHANDLE src = FHANDLE.Zero; FHANDLE dst = FHANDLE.Zero; try { src = api.fnFIE_img_root_alloc((int)f_imgtype.F_IMG_UC8, 1, size, size); dst = api.fnFIE_img_root_alloc((int)f_imgtype.F_IMG_UC8, 1, size, size); api.fnFIE_jaehne_testimg(src); api.fnFIE_geotrans_affine(src, dst, FHANDLE.Zero, fpMat, true, f_sampling_mode.F_SAMPLING_BILINEAR); api.fnFIE_save_png(ResultDir + "/fnFIE_geotrans_estimate_euclidean_matrix.png", dst, -1); } finally { src.Dispose(); dst.Dispose(); } } } finally { // オブジェクトの開放. fpMat.Dispose(); pntspFrom.Dispose(); pntspTo.Dispose(); } } } } |
Visual Basic | Copy |
---|---|
Imports System.Collections.Generic Imports System.Text Imports fvalgcli Public Partial Class FIE <FvPluginExecute> _ Public Sub fnFIE_geotrans_estimate_euclidean_matrix() Dim status As Integer = CInt(f_err.F_ERR_NONE) Dim fpMat As FMATRIX_PTR = IntPtr.Zero ' 求められた変換行列. Dim pntspFrom As DPNT_T_PTR = IntPtr.Zero ' 変換前の点列の座標. Dim pntspTo As DPNT_T_PTR = IntPtr.Zero ' 変換後の点列の座標. Dim uiNum As UInteger = 0 ' pntspFrom/pntspTo の点数. Const size As Integer = 256 Const shift As Integer = 32 Try ' 変換前後の点の座標列の確保と値の設定. uiNum = 2 pntspFrom = DPNT_T_PTR.alloc(CInt(uiNum)) pntspTo = DPNT_T_PTR.alloc(CInt(uiNum)) pntspFrom(0) = DPNT_T.init(0, 0) pntspFrom(1) = DPNT_T.init(size, 0) pntspTo(0) = DPNT_T.init(shift, shift) pntspTo(1) = DPNT_T.init(size + shift, shift) ' 変換行列の確保. fpMat = api.fnFIE_mat_aalloc(3, 3) ' 処理の実行. status = api.fnFIE_geotrans_estimate_euclidean_matrix(fpMat, pntspFrom, pntspTo, uiNum) ' エラー判定. Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err)) ' 結果出力. ConsoleOut.WriteFMATRIX(fpMat, 3, 3) ' 得られた変換行列によるアフィン変換の実行と結果画像の保存. If True Then Dim src As FHANDLE = FHANDLE.Zero Dim dst As FHANDLE = FHANDLE.Zero Try src = api.fnFIE_img_root_alloc(CInt(f_imgtype.F_IMG_UC8), 1, size, size) dst = api.fnFIE_img_root_alloc(CInt(f_imgtype.F_IMG_UC8), 1, size, size) api.fnFIE_jaehne_testimg(src) api.fnFIE_geotrans_affine(src, dst, FHANDLE.Zero, fpMat, True, f_sampling_mode.F_SAMPLING_BILINEAR) api.fnFIE_save_png(ResultDir & "/fnFIE_geotrans_estimate_euclidean_matrix.png", dst, -1) Finally src.Dispose() dst.Dispose() End Try End If Finally ' オブジェクトの開放. fpMat.Dispose() pntspFrom.Dispose() pntspTo.Dispose() End Try End Sub End Class |