FPM画像オブジェクトからのマッチング実行
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_fpm_matching_image( FHANDLE hfpm, FHANDLE himage, FHANDLE hmask_match, BOX_T window, f_fpm_featedge method, ref F_FPM_FEATURE pfeature_param, ref F_FPM_MATCH pmatching_param, F_SEARCH_RESULT_PTR pmatching_result, ref int presult_num ) |
Visual Basic |
---|
Public Shared Function fnFIE_fpm_matching_image ( hfpm As FHANDLE, himage As FHANDLE, hmask_match As FHANDLE, window As BOX_T, method As f_fpm_featedge, ByRef pfeature_param As F_FPM_FEATURE, ByRef pmatching_param As F_FPM_MATCH, pmatching_result As F_SEARCH_RESULT_PTR, ByRef presult_num As Integer ) As Integer |
Parameters
- hfpm
- Type: fvalgcli..::..FHANDLE
FPMオブジェクト
- himage
- Type: fvalgcli..::..FHANDLE
マッチング対象となる画像オブジェクト(画像タイプ:uc8 のみ対応) チャネル数は 1 でなければいけません。
- hmask_match
- Type: fvalgcli..::..FHANDLE
マッチングエリアへのマスク情報 画像タイプ uc8 のみ対応し、チャネル数は 1 でなければいけません。 IntPtr.Zero が指定された場合はマスクを使用しません。
- window
- Type: fvalgcli..::..BOX_T
マッチングエリア
- method
- Type: fvalgcli..::..f_fpm_featedge
特徴量抽出手法- F_FPM_SOBEL_EDGE ソーベルによる特徴量抽出
- F_FPM_CORR_EDGE 相関エッジによる特徴量抽出
- pfeature_param
- Type: fvalgcli..::..F_FPM_FEATURE%
特徴量計測パラメータ(IntPtr.Zero が指定された場合はマスターパタン登録時のパラメータを使用します)
- pmatching_param
- Type: fvalgcli..::..F_FPM_MATCH%
マッチングパラメータ
- pmatching_result
- Type: fvalgcli..::..F_SEARCH_RESULT_PTR
マッチング結果
- presult_num
- Type: System..::..Int32%
マッチング結果個数
Return Value
Type: Int32以下のエラーコードを返します。
エラーコード:
f_err | 内容 |
---|---|
F_ERR_NONE | 正常終了 |
F_ERR_INVALID_OBJECT | 引数オブジェクトの種別が異常 |
F_ERR_INVALID_IMAGE | 引数画像オブジェクトが異常 |
F_ERR_NOMEMORY | メモリ不足 |
F_ERR_INVALID_PARAM | 引数異常 |
F_ERR_FPM_NOFEATURE | 特徴量が見つかりません |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
Remarks
Examples
C# | Copy |
---|---|
// $Revision: 1.1 $ using System; using System.Collections.Generic; using System.Text; using fvalgcli; namespace TC { public partial class FIE { /// <summary> /// FPM画像オブジェクトからのマッチング実行. /// </summary> [FvPluginExecute] public void fnFIE_fpm_matching_image() { string ptn_file = TestImageDir + "/testdata/fpm00.bmp"; string src_file = TestImageDir + "/testdata/fpm00.bmp"; int status = (int)f_err.F_ERR_NONE; FHANDLE _hPattern = FHANDLE.Zero; FHANDLE hPattern = FHANDLE.Zero; FHANDLE hSrc = FHANDLE.Zero; FHANDLE hFPM = FHANDLE.Zero; FHANDLE hMask = FHANDLE.Zero; F_SEARCH_RESULT_PTR result = F_SEARCH_RESULT_PTR.Zero; try { // 画像ファイルの読み込み. api.fnFIE_load_bmp(ptn_file, ref _hPattern, f_color_img_type.F_COLOR_IMG_TYPE_UC8); api.fnFIE_load_bmp(src_file, ref hSrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8); hPattern = api.fnFIE_img_child_alloc(_hPattern, 300, 300, 100, 100); // ===== 特徴量抽出関連 ===== // --- エッジ検出手法とパラメータ. f_fpm_mode matching_mode = f_fpm_mode.F_FPM_SPEED_MODE; f_fpm_featedge method = f_fpm_featedge.F_FPM_SOBEL_EDGE; F_FPM_FEATURE feature_param = new F_FPM_FEATURE(); feature_param.sobel_edge = F_EDGE_SOBEL_PARAMS.init(120, 3); int perr_code = 0; DPNT_T offset = new DPNT_T(); // --- 特徴量抽出. hFPM = api.fnFIE_fpm_alloc(hPattern, IntPtr.Zero, offset, matching_mode, method, ref feature_param, ref perr_code); // ===== マッチング関連 ===== // --- マッチングパラメータ. F_FPM_MATCH matching_param = new F_FPM_MATCH(); matching_param.require_result_num = 10; matching_param.min_angle = -180; matching_param.max_angle = 179; matching_param.min_scale = 100; matching_param.max_scale = 100; matching_param.coarse_comp_rate = 1; matching_param.coarse_err_wide = 1; matching_param.coarse_highcomp_threshold = 50; matching_param.coarse_lowcomp_threshold = 50; matching_param.refine_execute = true; matching_param.refine_threshold = 60; matching_param.refine_err_wide = 1; matching_param.polarity = f_fpm_polarity.F_FPM_SAME_POLARITY; // --- 処理範囲. BOX_T window = new BOX_T(); window.st.x = 0; window.st.y = 0; window.ed.x = api.fnFIE_img_get_width(hSrc) - 1; window.ed.y = api.fnFIE_img_get_height(hSrc) - 1; result = F_SEARCH_RESULT_PTR.alloc(matching_param.require_result_num); int result_num = 0; api.fnFIE_fpm_matching_image(hFPM, hSrc, hMask, window, method, ref feature_param, ref matching_param, result, ref result_num); Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "fnFIE_fpm_matching_image: エラーが発生しました。({0})", (f_err)status); Console.WriteLine("fnFIE_fpm_matching_image"); } finally { _hPattern.Dispose(); hPattern.Dispose(); hSrc.Dispose(); hFPM.Dispose(); hMask.Dispose(); result.Dispose(); } } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.1 $ Imports System.Collections.Generic Imports System.Text Imports fvalgcli Public Partial Class FIE ''' <summary> ''' FPM画像オブジェクトからのマッチング実行. ''' </summary> <FvPluginExecute> _ Public Sub fnFIE_fpm_matching_image() Dim ptn_file As String = TestImageDir & "/testdata/fpm00.bmp" Dim src_file As String = TestImageDir & "/testdata/fpm00.bmp" Dim status As Integer = CInt(f_err.F_ERR_NONE) Dim _hPattern As FHANDLE = FHANDLE.Zero Dim hPattern As FHANDLE = FHANDLE.Zero Dim hSrc As FHANDLE = FHANDLE.Zero Dim hFPM As FHANDLE = FHANDLE.Zero Dim hMask As FHANDLE = FHANDLE.Zero Dim result As F_SEARCH_RESULT_PTR = F_SEARCH_RESULT_PTR.Zero Try ' 画像ファイルの読み込み. api.fnFIE_load_bmp(ptn_file, _hPattern, f_color_img_type.F_COLOR_IMG_TYPE_UC8) api.fnFIE_load_bmp(src_file, hSrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8) hPattern = api.fnFIE_img_child_alloc(_hPattern, 300, 300, 100, 100) ' ===== 特徴量抽出関連 ===== ' --- エッジ検出手法とパラメータ. Dim matching_mode As f_fpm_mode = f_fpm_mode.F_FPM_SPEED_MODE Dim method As f_fpm_featedge = f_fpm_featedge.F_FPM_SOBEL_EDGE Dim feature_param As New F_FPM_FEATURE() feature_param.sobel_edge = F_EDGE_SOBEL_PARAMS.init(120, 3) Dim perr_code As Integer = 0 Dim offset As New DPNT_T() ' --- 特徴量抽出. hFPM = api.fnFIE_fpm_alloc(hPattern, IntPtr.Zero, offset, matching_mode, method, feature_param, _ perr_code) ' ===== マッチング関連 ===== ' --- マッチングパラメータ. Dim matching_param As New F_FPM_MATCH() matching_param.require_result_num = 10 matching_param.min_angle = -180 matching_param.max_angle = 179 matching_param.min_scale = 100 matching_param.max_scale = 100 matching_param.coarse_comp_rate = 1 matching_param.coarse_err_wide = 1 matching_param.coarse_highcomp_threshold = 50 matching_param.coarse_lowcomp_threshold = 50 matching_param.refine_execute = True matching_param.refine_threshold = 60 matching_param.refine_err_wide = 1 matching_param.polarity = f_fpm_polarity.F_FPM_SAME_POLARITY ' --- 処理範囲. Dim window As New BOX_T() window.st.x = 0 window.st.y = 0 window.ed.x = api.fnFIE_img_get_width(hSrc) - 1 window.ed.y = api.fnFIE_img_get_height(hSrc) - 1 result = F_SEARCH_RESULT_PTR.alloc(matching_param.require_result_num) Dim result_num As Integer = 0 api.fnFIE_fpm_matching_image(hFPM, hSrc, hMask, window, method, feature_param, _ matching_param, result, result_num) Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "fnFIE_fpm_matching_image: エラーが発生しました。({0})", CType(status, f_err)) Console.WriteLine("fnFIE_fpm_matching_image") Finally _hPattern.Dispose() hPattern.Dispose() hSrc.Dispose() hFPM.Dispose() hMask.Dispose() result.Dispose() End Try End Sub End Class |