画像特徴量:指定座標を原点とする濃淡モーメント

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

Syntax

C#
public static int fnFIE_img_pixelmoment(
	FHANDLE himg,
	FHANDLE hreg,
	double orgnx,
	double orgny,
	ref double M10,
	ref double M01,
	ref double M20,
	ref double M02,
	ref double M11
)
Visual Basic
Public Shared Function fnFIE_img_pixelmoment ( 
	himg As FHANDLE,
	hreg As FHANDLE,
	orgnx As Double,
	orgny As Double,
	ByRef M10 As Double,
	ByRef M01 As Double,
	ByRef M20 As Double,
	ByRef M02 As Double,
	ByRef M11 As Double
) As Integer

Parameters

himg
Type: fvalgcli..::..FHANDLE
処理対象画像( type: uc8, s16, us16, double )
hreg
Type: fvalgcli..::..FHANDLE
領域
orgnx
Type: System..::..Double
濃淡モーメントを求めるときに原点とするX座標
orgny
Type: System..::..Double
濃淡モーメントを求めるときに原点とするY座標
M10
Type: System..::..Double%
X方向1次濃淡モーメント
M01
Type: System..::..Double%
Y方向1次濃淡モーメント
M20
Type: System..::..Double%
X方向2次濃淡モーメント
M02
Type: System..::..Double%
Y方向2次濃淡モーメント
M11
Type: System..::..Double%
XY方向2次濃淡モーメント

Return Value

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

エラーコード:
f_err内容
F_ERR_NONE正常終了
F_ERR_INVALID_IMAGE不正な画像オブジェクト
F_ERR_INVALID_OBJECT領域が不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
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
    {
        [FvPluginExecute]
        public void fnFIE_img_pixelmoment()
        {
            FHANDLE himage = FHANDLE.Zero;
            FHANDLE hreg = FHANDLE.Zero;
            FHANDLE himg = FHANDLE.Zero;

            try
            {
                // リージョン作成用の2値画像を読み込む.            
                int status1 = api.fnFIE_load_img_file(TestImageDir + "/TC/SampleCode/palette_BIN_1.png", ref himage, f_color_img_type.F_COLOR_IMG_TYPE_UC8);
                Assert.IsTrue(status1 == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status1);
                Assert.IsTrue(himage != FHANDLE.Zero, "himage が異常です.");

                // 画像からリージョンを作成する.
                // --- オフセット.
                PNT_T offset = new PNT_T();
                offset.x = 0;
                offset.y = 0;
                // --- 作成.
                hreg = api.fnFIE_region_encode(himage, offset);
                Assert.IsTrue(hreg != FHANDLE.Zero, "リージョン作成でエラー.");

                // 計測用の濃淡画像を読み込む.
                int status2 = api.fnFIE_load_img_file(TestImageDir + "/TC/SampleCode/palette_UC8.png", ref himg, f_color_img_type.F_COLOR_IMG_TYPE_UC8);
                Assert.IsTrue(status2 == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status2);

                // 画像特徴量:指定座標を原点とする濃淡モーメント.
                double orgnx = 0;
                double orgny = 0;
                double M10 = 0;
                double M01 = 0;
                double M20 = 0;
                double M02 = 0;
                double M11 = 0;
                int status = api.fnFIE_img_pixelmoment(himg, hreg, orgnx, orgny, ref M10, ref M01, ref M20, ref M02, ref M11);
                Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "img_pixelmomentでエラーが発生しました。({0})", (f_err)status);

                // 値の確認.
                Console.WriteLine("M10={0},M01={1},M20={2},M02={3},M11={4}", M10, M01, M20, M02, M11);
            }
            finally
            {
                himage.Dispose();
                hreg.Dispose();
                himg.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System.Collections.Generic
Imports System.Text
Imports fvalgcli

Public Partial Class FIE
    <FvPluginExecute> _
    Public Sub fnFIE_img_pixelmoment()
        Dim himage As FHANDLE = FHANDLE.Zero
        Dim hreg As FHANDLE = FHANDLE.Zero
        Dim himg As FHANDLE = FHANDLE.Zero

        Try
            ' リージョン作成用の2値画像を読み込む.            
            Dim status1 As Integer = api.fnFIE_load_img_file(TestImageDir & "/TC/SampleCode/palette_BIN_1.png", himage, f_color_img_type.F_COLOR_IMG_TYPE_UC8)
            Assert.IsTrue(status1 = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status1, f_err))
            Assert.IsTrue(himage <> FHANDLE.Zero, "himage が異常です.")

            ' 画像からリージョンを作成する.
            ' --- オフセット.
            Dim offset As New PNT_T()
            offset.x = 0
            offset.y = 0
            ' --- 作成.
            hreg = api.fnFIE_region_encode(himage, offset)
            Assert.IsTrue(hreg <> FHANDLE.Zero, "リージョン作成でエラー.")

            ' 計測用の濃淡画像を読み込む.
            Dim status2 As Integer = api.fnFIE_load_img_file(TestImageDir & "/TC/SampleCode/palette_UC8.png", himg, f_color_img_type.F_COLOR_IMG_TYPE_UC8)
            Assert.IsTrue(status2 = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status2, f_err))

            ' 画像特徴量:指定座標を原点とする濃淡モーメント.
            Dim orgnx As Double = 0
            Dim orgny As Double = 0
            Dim M10 As Double = 0
            Dim M01 As Double = 0
            Dim M20 As Double = 0
            Dim M02 As Double = 0
            Dim M11 As Double = 0
            Dim status As Integer = api.fnFIE_img_pixelmoment(himg, hreg, orgnx, orgny, M10, M01, _
                M20, M02, M11)
            Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "img_pixelmomentでエラーが発生しました。({0})", CType(status, f_err))

            ' 値の確認.
            Console.WriteLine("M10={0},M01={1},M20={2},M02={3},M11={4}", M10, M01, M20, M02, M11)
        Finally
            himage.Dispose()
            hreg.Dispose()
            himg.Dispose()
        End Try
    End Sub
End Class

See Also