同次変換行列に入力座標系/出力座標系のオフセットを加える

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

Syntax

C#
public static int fnFIE_geotrans_get_offset_matrix(
	FMATRIX_PTR vpTransMat,
	FMATRIX_PTR vpOffsetMat,
	double dSrcOffX,
	double dSrcOffY,
	double dDstOffX,
	double dDstOffY
)
Visual Basic
Public Shared Function fnFIE_geotrans_get_offset_matrix ( 
	vpTransMat As FMATRIX_PTR,
	vpOffsetMat As FMATRIX_PTR,
	dSrcOffX As Double,
	dSrcOffY As Double,
	dDstOffX As Double,
	dDstOffY As Double
) As Integer

Parameters

vpTransMat
Type: fvalgcli..::..FMATRIX_PTR
画像幾何変換の同次変換行列
vpOffsetMat
Type: fvalgcli..::..FMATRIX_PTR
偏移量を含めたの幾何変換の同次変換行列
dSrcOffX
Type: System..::..Double
元画像の横方向の偏移量
dSrcOffY
Type: System..::..Double
元画像の縦方向の偏移量
dDstOffX
Type: System..::..Double
結果画像の横方向の偏移量
dDstOffY
Type: System..::..Double
結果画像の縦方向の偏移量

Return Value

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

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

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>
        /// 同次変換行列に入力座標系/出力座標系のオフセットを加える.
        /// </summary>
        [FvPluginExecute]
        public void fnFIE_geotrans_get_offset_matrix()
        {
            int status = (int)f_err.F_ERR_NONE;

            FMATRIX_PTR vpTransMat = FMATRIX_PTR.Zero;    // 画像幾何変換の同次変換行列.
            FMATRIX_PTR vpOffsetMat = FMATRIX_PTR.Zero;    // 偏移量を含めた幾何変換の同次変換行列.
            const double dSrcOffX = 10;                    // 元画像の横方向の偏移量.
            const double dSrcOffY = 20;                    // 元画像の縦方向の偏移量.
            const double dDstOffX = 30;                    // 結果画像の横方向の偏移量.
            const double dDstOffY = 40;                    // 結果画像の縦方向の偏移量.

            try
            {
                // 同次変換行列の確保.
                vpTransMat = api.fnFIE_mat_aalloc(3, 3);
                vpOffsetMat = api.fnFIE_mat_aalloc(3, 3);

                // 同次変換行列の値設定.
                const double sx = 5;
                const double sy = 6;
                api.fnFIE_geotrans_calc_scale_matrix(vpTransMat, sx, sy);

                // 処理の実行.
                status = api.fnFIE_geotrans_get_offset_matrix(vpTransMat, vpOffsetMat, dSrcOffX, dSrcOffY, dDstOffX, dDstOffY);

                // エラー判定.
                Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status);

                // 結果出力.
                ConsoleOut.WriteFunctionName(":\t");
                ConsoleOut.IsEqualMatrix(
                    vpOffsetMat,
                    sx, 0, sx * dSrcOffX - dDstOffX,
                    0, sy, sy * dSrcOffY - dDstOffY,
                    0, 0, 1
                );
                ConsoleOut.WriteFMATRIX(vpOffsetMat, 3, 3);
            }
            finally
            {
                // オブジェクトの開放.
                vpTransMat.Dispose();
                vpOffsetMat.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System.Collections.Generic
Imports System.Text

Imports fvalgcli

Public Partial Class FIE
    ''' <summary>
    ''' 同次変換行列に入力座標系/出力座標系のオフセットを加える.
    ''' </summary>
    <FvPluginExecute> _
    Public Sub fnFIE_geotrans_get_offset_matrix()
        Dim status As Integer = CInt(f_err.F_ERR_NONE)

        Dim vpTransMat As FMATRIX_PTR = FMATRIX_PTR.Zero
        ' 画像幾何変換の同次変換行列.
        Dim vpOffsetMat As FMATRIX_PTR = FMATRIX_PTR.Zero
        ' 偏移量を含めた幾何変換の同次変換行列.
        Const  dSrcOffX As Double = 10
        ' 元画像の横方向の偏移量.
        Const  dSrcOffY As Double = 20
        ' 元画像の縦方向の偏移量.
        Const  dDstOffX As Double = 30
        ' 結果画像の横方向の偏移量.
        Const  dDstOffY As Double = 40
        ' 結果画像の縦方向の偏移量.
        Try
            ' 同次変換行列の確保.
            vpTransMat = api.fnFIE_mat_aalloc(3, 3)
            vpOffsetMat = api.fnFIE_mat_aalloc(3, 3)

            ' 同次変換行列の値設定.
            Const  sx As Double = 5
            Const  sy As Double = 6
            api.fnFIE_geotrans_calc_scale_matrix(vpTransMat, sx, sy)

            ' 処理の実行.
            status = api.fnFIE_geotrans_get_offset_matrix(vpTransMat, vpOffsetMat, dSrcOffX, dSrcOffY, dDstOffX, dDstOffY)

            ' エラー判定.
            Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err))

            ' 結果出力.
            ConsoleOut.WriteFunctionName(":" & vbTab)
            ConsoleOut.IsEqualMatrix(vpOffsetMat, sx, 0, sx * dSrcOffX - dDstOffX, 0, sy, _
                sy * dSrcOffY - dDstOffY, 0, 0, 1)
            ConsoleOut.WriteFMATRIX(vpOffsetMat, 3, 3)
        Finally
            ' オブジェクトの開放.
            vpTransMat.Dispose()
            vpOffsetMat.Dispose()
        End Try
    End Sub
End Class

See Also