相関エッジフィルタを利用したエッジ検出

Namespace: fvalgcli
Assembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)

Syntax

C#
public static int fnFIE_edge_corr(
	FHANDLE hsrc,
	FHANDLE hmag,
	ref F_EDGE_CORR_PARAMS param,
	f_edge_feature_mode feat_mode,
	f_border_mode border_mode,
	PNT_T offset,
	ref F_EDGE_PTR edges,
	ref int edge_num
)
Visual Basic
Public Shared Function fnFIE_edge_corr ( 
	hsrc As FHANDLE,
	hmag As FHANDLE,
	ByRef param As F_EDGE_CORR_PARAMS,
	feat_mode As f_edge_feature_mode,
	border_mode As f_border_mode,
	offset As PNT_T,
	ByRef edges As F_EDGE_PTR,
	ByRef edge_num As Integer
) As Integer

Parameters

hsrc
Type: fvalgcli..::..FHANDLE
相関エッジフィルタを利用したエッジ検出
hmag
Type: fvalgcli..::..FHANDLE
エッジ強度画像(type:us16 / ch:1)
param
Type: fvalgcli..::..F_EDGE_CORR_PARAMS%
エッジ検出のための各種パラメータ
feat_mode
Type: fvalgcli..::..f_edge_feature_mode
勾配方向、強度付きエッジ点構造体に保持するデータを指定するモード
border_mode
Type: fvalgcli..::..f_border_mode
ボーダーモード
  • F_BORDER_NONE ボーダー処理無し
  • F_BORDER_CONTINUOUS 端延長モード
offset
Type: fvalgcli..::..PNT_T
オフセット量
edges
Type: fvalgcli..::..F_EDGE_PTR%
取得したエッジ。( IntPtr.Zero で初期化してください。)
edge_num
Type: System..::..Int32%
取得したエッジ数

Return Value

Type: Int32
以下のエラーコードを返します。

エラーコード:
f_err内容
F_ERR_NONE正常終了
F_ERR_INVALID_IMAGE不正な画像オブジェクトが渡された
F_ERR_INVALID_PARAM不正なパラメータが渡された
F_ERR_NOMEMORYメモリ不足エラー
F_ERR_NO_LICENCEライセンスエラー、または未初期化エラー

Examples

C# Copy imageCopy
//    $Revision: 1.1 $

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using fvalgcli;

namespace TC
{
    public partial class FIE
    {
        [FvPluginExecute]
        public void fnFIE_edge_corr()
        {
            string filepath = TestImageDir + "/testdata/image_file_8bpp.bmp";

            int status = (int)f_err.F_ERR_NONE;
            FHANDLE hImageSrc = FHANDLE.Zero;
            FHANDLE hImageDst = FHANDLE.Zero;
            F_EDGE_PTR edges = new F_EDGE_PTR();

            try
            {
                int edge_num = 0;
                PNT_T offset;
                offset.x = 0;
                offset.y = 0;
                f_border_mode border_mode = f_border_mode.F_BORDER_NONE;
                f_edge_feature_mode feat_mode = f_edge_feature_mode.F_EDGE_FEAT_DIRECT | f_edge_feature_mode.F_EDGE_FEAT_MAG_SQRT;
                F_EDGE_CORR_PARAMS param;
                param.width = 13;
                param.height = 5;
                param.sigmoid_k = 1.0;
                param.var_threshold = 25;
                param.mag_threshold = 160;
                param.nms_length = 6;

                api.fnFIE_load_bmp(filepath, ref hImageSrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8);
                hImageDst = api.fnFIE_img_root_alloc((int)f_imgtype.F_IMG_US16, api.fnFIE_img_get_channels(hImageSrc), api.fnFIE_img_get_width(hImageSrc), api.fnFIE_img_get_height(hImageSrc));

                // エッジ検出実行.
                status = fvalgcli.api.fnFIE_edge_corr(hImageSrc, hImageDst, ref param, feat_mode, border_mode, offset, ref edges, ref edge_num);
                Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "fnFIE_edge_corr: エラーが発生しました。({0})", (f_err)status);
                Console.WriteLine("fnFIE_edge_corr");
                for (int i = 0; i < edge_num; i++)
                    Console.WriteLine("edge[{0}]=({1}, {2}, {3}, {4})", i, edges[i].x, edges[i].y, edges[i].q, edges[i].mag);
            }
            finally
            {
                hImageSrc.Dispose();
                hImageDst.Dispose();
                edges.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System.Collections.Generic
Imports System.Text
Imports System.Runtime.InteropServices
Imports fvalgcli

Public Partial Class FIE
    <FvPluginExecute> _
    Public Sub fnFIE_edge_corr()
        Dim filepath As String = TestImageDir & "/testdata/image_file_8bpp.bmp"

        Dim status As Integer = CInt(f_err.F_ERR_NONE)
        Dim hImageSrc As FHANDLE = FHANDLE.Zero
        Dim hImageDst As FHANDLE = FHANDLE.Zero
        Dim edges As New F_EDGE_PTR()

        Try
            Dim edge_num As Integer = 0
            Dim offset As PNT_T
            offset.x = 0
            offset.y = 0
            Dim border_mode As f_border_mode = f_border_mode.F_BORDER_NONE
            Dim feat_mode As f_edge_feature_mode = f_edge_feature_mode.F_EDGE_FEAT_DIRECT Or f_edge_feature_mode.F_EDGE_FEAT_MAG_SQRT
            Dim param As F_EDGE_CORR_PARAMS
            param.width = 13
            param.height = 5
            param.sigmoid_k = 1.0
            param.var_threshold = 25
            param.mag_threshold = 160
            param.nms_length = 6

            api.fnFIE_load_bmp(filepath, hImageSrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8)
            hImageDst = api.fnFIE_img_root_alloc(CInt(f_imgtype.F_IMG_US16), api.fnFIE_img_get_channels(hImageSrc), api.fnFIE_img_get_width(hImageSrc), api.fnFIE_img_get_height(hImageSrc))

            ' エッジ検出実行.
            status = fvalgcli.api.fnFIE_edge_corr(hImageSrc, hImageDst, param, feat_mode, border_mode, offset, _
                edges, edge_num)
            Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "fnFIE_edge_corr: エラーが発生しました。({0})", CType(status, f_err))
            Console.WriteLine("fnFIE_edge_corr")
            For i As Integer = 0 To edge_num - 1
                Console.WriteLine("edge[{0}]=({1}, {2}, {3}, {4})", i, edges(i).x, edges(i).y, edges(i).q, edges(i).mag)
            Next
        Finally
            hImageSrc.Dispose()
            hImageDst.Dispose()
            edges.Dispose()
        End Try
    End Sub
End Class

See Also