極座標変換マップの作成

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

Syntax

C#
public static int fnFIE_polar_trans_map(
	FHANDLE hmap,
	DPNT_T origin_in,
	double width,
	double height,
	DPNT_T origin_out,
	double radius,
	double start_angle,
	double range_angle,
	f_coord_mode coord_mode
)
Visual Basic
Public Shared Function fnFIE_polar_trans_map ( 
	hmap As FHANDLE,
	origin_in As DPNT_T,
	width As Double,
	height As Double,
	origin_out As DPNT_T,
	radius As Double,
	start_angle As Double,
	range_angle As Double,
	coord_mode As f_coord_mode
) As Integer

Parameters

hmap
Type: fvalgcli..::..FHANDLE
変換マップ( type : double, float / channel : 2 )
origin_in
Type: fvalgcli..::..DPNT_T
入力側での処理対象領域の開始座標
width
Type: System..::..Double
入力側での処理対象領域の幅
height
Type: System..::..Double
入力側での処理対象領域の高さ
origin_out
Type: fvalgcli..::..DPNT_T
出力側での円板の回転中心
radius
Type: System..::..Double
出力側での円板の半径
start_angle
Type: System..::..Double
出力側での処理開始角度
range_angle
Type: System..::..Double
出力側での角度の処理範囲
coord_mode
Type: fvalgcli..::..f_coord_mode
入力側での回転中心位置
  • F_PT_UPPER :処理対象領域の右上座標
  • F_PT_LOWER :処理対象領域の左下座標
  • F_PT_LEFT :処理対象領域の左上座標
  • F_PT_RIGHT :処理対象領域の右下座標

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_polar_trans_map()
        {
            int status = (int)f_err.F_ERR_NONE;

            FHANDLE src_img = FHANDLE.Zero;    // 入力画像.
            FHANDLE dst_img = FHANDLE.Zero;    // 出力画像.
            FHANDLE hmap = FHANDLE.Zero;    // 変換マップ( type : double, channel : 2 ). 
            DPNT_T origin_in;                // 入力側での処理対象領域の開始座標.
            double width;                    // 入力側での処理対象領域の幅.
            double height;                    // 入力側での処理対象領域の高さ.
            DPNT_T origin_out;                // 出力側での円板の回転中心.
            double radius;                    // 出力側での円板の半径.
            double start_angle;                // 出力側での処理開始角度.
            double range_angle;                // 出力側での角度の処理範囲.
            f_coord_mode coord_mode;        // 入力側での回転中心位置.

            try
            {
                // 入力画像ファイルのロード.
                api.fnFIE_load_bmp(TestImageDir + "/testdata/lena256.bmp", ref src_img, f_color_img_type.F_COLOR_IMG_TYPE_UC8);

                // 入力画像の情報取得.
                int img_width = api.fnFIE_img_get_width(src_img);
                int img_height = api.fnFIE_img_get_height(src_img);

                // 変換マップの生成.
                hmap = api.fnFIE_img_root_alloc((int)f_imgtype.F_IMG_DOUBLE, 2, img_width, img_height);

                // パラメータの設定.
                coord_mode = f_coord_mode.F_PT_UPPER;
                origin_in.x = img_width - 1;
                origin_in.y = 0;

                width = img_width;
                height = img_height;

                origin_out.x = (double)img_width / 2;
                origin_out.y = (double)img_height / 2;

                radius = (double)Math.Min(img_width, img_height) / 2;
                start_angle = 0;
                range_angle = 2.0 * Math.PI;

                // 処理の実行.
                status = api.fnFIE_polar_trans_map(hmap,
                                                            origin_in, width, height,
                                                            origin_out, radius,
                                                            start_angle, range_angle,
                                                            coord_mode);

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

                // 得られた変換マップを使った fnFIE_geotrans_warpping による画像化.
                {
                    // 出力画像の生成.
                    dst_img = api.fnFIE_img_root_alloc((int)f_imgtype.F_IMG_UC8, 1, img_width, img_height);

                    api.fnFIE_geotrans_warpping(src_img, hmap, dst_img, FHANDLE.Zero, true, f_sampling_mode.F_SAMPLING_BILINEAR);

                    // 出力画像の保存.
                    api.fnFIE_save_png(ResultDir + "/fnFIE_polar_trans_map.png", dst_img, -1);
                }

            }
            finally
            {
                // オブジェクトの開放.
                src_img.Dispose();
                dst_img.Dispose();
                hmap.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_polar_trans_map()
        Dim status As Integer = CInt(f_err.F_ERR_NONE)

        Dim src_img As FHANDLE = FHANDLE.Zero
        ' 入力画像.
        Dim dst_img As FHANDLE = FHANDLE.Zero
        ' 出力画像.
        Dim hmap As FHANDLE = FHANDLE.Zero
        ' 変換マップ( type : double, channel : 2 ). 
        Dim origin_in As DPNT_T
        ' 入力側での処理対象領域の開始座標.
        Dim width As Double
        ' 入力側での処理対象領域の幅.
        Dim height As Double
        ' 入力側での処理対象領域の高さ.
        Dim origin_out As DPNT_T
        ' 出力側での円板の回転中心.
        Dim radius As Double
        ' 出力側での円板の半径.
        Dim start_angle As Double
        ' 出力側での処理開始角度.
        Dim range_angle As Double
        ' 出力側での角度の処理範囲.
        Dim coord_mode As f_coord_mode
        ' 入力側での回転中心位置.
        Try
            ' 入力画像ファイルのロード.
            api.fnFIE_load_bmp(TestImageDir & "/testdata/lena256.bmp", src_img, f_color_img_type.F_COLOR_IMG_TYPE_UC8)

            ' 入力画像の情報取得.
            Dim img_width As Integer = api.fnFIE_img_get_width(src_img)
            Dim img_height As Integer = api.fnFIE_img_get_height(src_img)

            ' 変換マップの生成.
            hmap = api.fnFIE_img_root_alloc(CInt(f_imgtype.F_IMG_DOUBLE), 2, img_width, img_height)

            ' パラメータの設定.
            coord_mode = f_coord_mode.F_PT_UPPER
            origin_in.x = img_width - 1
            origin_in.y = 0

            width = img_width
            height = img_height

            origin_out.x = CDbl(img_width) / 2
            origin_out.y = CDbl(img_height) / 2

            radius = CDbl(Math.Min(img_width, img_height)) / 2
            start_angle = 0
            range_angle = 2.0 * Math.PI

            ' 処理の実行.
            status = api.fnFIE_polar_trans_map(hmap, origin_in, width, height, origin_out, radius, _
                start_angle, range_angle, coord_mode)

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

            ' 得られた変換マップを使った fnFIE_geotrans_warpping による画像化.
            If True Then
                ' 出力画像の生成.
                dst_img = api.fnFIE_img_root_alloc(CInt(f_imgtype.F_IMG_UC8), 1, img_width, img_height)

                api.fnFIE_geotrans_warpping(src_img, hmap, dst_img, FHANDLE.Zero, True, f_sampling_mode.F_SAMPLING_BILINEAR)

                ' 出力画像の保存.
                api.fnFIE_save_png(ResultDir & "/fnFIE_polar_trans_map.png", dst_img, -1)

            End If
        Finally
            ' オブジェクトの開放.
            src_img.Dispose()
            dst_img.Dispose()
            hmap.Dispose()
        End Try
    End Sub
End Class

See Also