2次元の複素数画像を逆フーリエ変換する(アウトプレース処理)

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

Syntax

C#
public static int fnFIE_fft2_inv_CtoC_out(
	FHANDLE hFFT,
	FHANDLE hImgSrc,
	FHANDLE hImgDst
)
Visual Basic
Public Shared Function fnFIE_fft2_inv_CtoC_out ( 
	hFFT As FHANDLE,
	hImgSrc As FHANDLE,
	hImgDst As FHANDLE
) As Integer

Parameters

hFFT
Type: fvalgcli..::..FHANDLE
FFTハンドル
hImgSrc
Type: fvalgcli..::..FHANDLE
周波数領域の複素数入力画像のハンドル ( type: double )
hImgDst
Type: fvalgcli..::..FHANDLE
空間領域の複素数出力画像のハンドル ( type: double )

Return Value

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

エラーコード:
f_err内容
F_ERR_NONE正常終了
F_ERR_INVALID_OBJECT hFFT , hImgSrc , hImgDst のいずれか IntPtr.Zero が渡された
F_ERR_INVALID_PARAM hFFT が F_OBJID_FFTSPEC 型ではない
F_ERR_INVALID_IMAGE
  • hImgSrc 又は hImgDst が不正なハンドル
  • hImgSrc 又は hImgDst の型が F_IMG_DOUBLE でない
  • hImgSrc 又は hImgDst の幅が偶数でない
  • hImgSrc 又は hImgDst の幅又は高さが1である
F_ERR_FFT_INVALID_SPEC 指定された hFFT ハンドルはこの処理に使用できない
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>
        /// 2次元複素数画像の逆フーリエ変換(アウトプレース処理).
        /// </summary>
        [FvPluginExecute]
        public void fnFIE_fft2_inv_CtoC_out()
        {
            int status = (int)f_err.F_ERR_NONE;

            FHANDLE hTmp = FHANDLE.Zero;    // 入力画像.
            FHANDLE hSrc = FHANDLE.Zero;    // 入力データ.
            FHANDLE hDst = FHANDLE.Zero;    // 出力データ.
            FHANDLE hFFT = FHANDLE.Zero;    // FFTハンドル.

            try
            {
                // 入力画像ファイルのロード.            
                api.fnFIE_load_img_file(TestImageDir + "/testdata/lena512.bmp", ref hTmp, f_color_img_type.F_COLOR_IMG_TYPE_UC8);
                Assert.IsTrue(hTmp != FHANDLE.Zero, "hTmp が異常です.");

                //入力画像情報取得
                int width = api.fnFIE_img_get_width(hTmp);
                int height = api.fnFIE_img_get_height(hTmp);
                int type = api.fnFIE_img_get_type(hTmp);
                int channels = api.fnFIE_img_get_channels(hTmp);

                // FFT変換対象データの確保.
                hSrc = api.fnFIE_img_root_alloc((int)f_imgtype.F_IMG_DOUBLE, 1, width, height);
                hDst = api.fnFIE_img_root_alloc((int)f_imgtype.F_IMG_DOUBLE, 1, width, height);
                Assert.IsTrue(hSrc != FHANDLE.Zero, "hSrc が異常です.");
                Assert.IsTrue(hDst != FHANDLE.Zero, "hDst が異常です.");

                // 画像コピー(UC8 to DOUBLE).
                api.fnFIE_img_copy(hTmp, hSrc);

                // FFTハンドルの初期化.
                status = api.fnFIE_fft_2D_alloc(ref hFFT, width, height,
                    f_fft_direction.F_FFT_INVERSE,
                    f_fft_normalize_type.F_FFT_DIV_BY_SQRTN,
                    f_fft_data_type.F_2D_FFT_FCOMPLEX,
                    f_fft_data_type.F_2D_FFT_FCOMPLEX);
                Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "fnFIE_fft_2D_alloc: エラーが発生しました。({0})", (f_err)status);

                // 処理実行.
                status = api.fnFIE_fft2_inv_CtoC_out(hFFT, hSrc, hDst);

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

                // 出力画像の保存.
                api.fnFIE_save_tiff(ResultDir + "/fnFIE_fft2_inv_CtoC_out.tiff", hDst, f_tiff_compression.F_TIFF_COMPRESSION_NONE, 0);

            }
            finally
            {
                // オブジェクトの開放.
                hTmp.Dispose();
                hSrc.Dispose();
                hDst.Dispose();
                hFFT.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

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

Public Partial Class FIE
    ''' <summary>
    ''' 2次元複素数画像の逆フーリエ変換(アウトプレース処理).
    ''' </summary>
    <FvPluginExecute> _
    Public Sub fnFIE_fft2_inv_CtoC_out()
        Dim status As Integer = CInt(f_err.F_ERR_NONE)

        Dim hTmp As FHANDLE = FHANDLE.Zero
        ' 入力画像.
        Dim hSrc As FHANDLE = FHANDLE.Zero
        ' 入力データ.
        Dim hDst As FHANDLE = FHANDLE.Zero
        ' 出力データ.
        Dim hFFT As FHANDLE = FHANDLE.Zero
        ' FFTハンドル.
        Try
            ' 入力画像ファイルのロード.            
            api.fnFIE_load_img_file(TestImageDir & "/testdata/lena512.bmp", hTmp, f_color_img_type.F_COLOR_IMG_TYPE_UC8)
            Assert.IsTrue(hTmp <> FHANDLE.Zero, "hTmp が異常です.")

            '入力画像情報取得
            Dim width As Integer = api.fnFIE_img_get_width(hTmp)
            Dim height As Integer = api.fnFIE_img_get_height(hTmp)
            Dim type As Integer = api.fnFIE_img_get_type(hTmp)
            Dim channels As Integer = api.fnFIE_img_get_channels(hTmp)

            ' FFT変換対象データの確保.
            hSrc = api.fnFIE_img_root_alloc(CInt(f_imgtype.F_IMG_DOUBLE), 1, width, height)
            hDst = api.fnFIE_img_root_alloc(CInt(f_imgtype.F_IMG_DOUBLE), 1, width, height)
            Assert.IsTrue(hSrc <> FHANDLE.Zero, "hSrc が異常です.")
            Assert.IsTrue(hDst <> FHANDLE.Zero, "hDst が異常です.")

            ' 画像コピー(UC8 to DOUBLE).
            api.fnFIE_img_copy(hTmp, hSrc)

            ' FFTハンドルの初期化.
            status = api.fnFIE_fft_2D_alloc(hFFT, width, height, f_fft_direction.F_FFT_INVERSE, f_fft_normalize_type.F_FFT_DIV_BY_SQRTN, f_fft_data_type.F_2D_FFT_FCOMPLEX, _
                f_fft_data_type.F_2D_FFT_FCOMPLEX)
            Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "fnFIE_fft_2D_alloc: エラーが発生しました。({0})", CType(status, f_err))

            ' 処理実行.
            status = api.fnFIE_fft2_inv_CtoC_out(hFFT, hSrc, hDst)

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

            ' 出力画像の保存.

            api.fnFIE_save_tiff(ResultDir & "/fnFIE_fft2_inv_CtoC_out.tiff", hDst, f_tiff_compression.F_TIFF_COMPRESSION_NONE, 0)
        Finally
            ' オブジェクトの開放.
            hTmp.Dispose()
            hSrc.Dispose()
            hDst.Dispose()
            hFFT.Dispose()
        End Try
    End Sub
End Class

See Also