FPM画像オブジェクトからのマッチング実行

Namespace: fvalgcli
Assembly: 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 imageCopy
//    $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 imageCopy
'    $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

See Also