画像の正対変換と歪み補正を同時に行う座標変換マップの生成
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_calib_rectify_ud_image_map( F_CAMERA_PARAM camera, FMATRIX_PTR homography, double origin_x, double origin_y, double ppm, FHANDLE map ) |
Visual Basic |
---|
Public Shared Function fnFIE_calib_rectify_ud_image_map ( camera As F_CAMERA_PARAM, homography As FMATRIX_PTR, origin_x As Double, origin_y As Double, ppm As Double, map As FHANDLE ) As Integer |
Parameters
- camera
- Type: fvalgcli..::..F_CAMERA_PARAM
カメラ内部パラメータ
- homography
- Type: fvalgcli..::..FMATRIX_PTR
カメラ混合パラメータ(3x3行列)
- origin_x
- Type: System..::..Double
ワールド平面座標系と map 原点のX方向オフセット。 ワールド平面座標系の単位で指定します。
- origin_y
- Type: System..::..Double
ワールド平面座標系と map 原点のY方向オフセット。 ワールド平面座標系の単位で指定します。
- ppm
- Type: System..::..Double
map での出力画素数とワールド平面座標系の単位長さとの比( ppm > 1e-9 ) ( pixel/mm, pixel/inchなど )
- map
- Type: fvalgcli..::..FHANDLE
座標変換マップ ( type:double, float / ch:2 ) fnFIE_geotrans_warpping() の座標変換マップと同じものです。
Return Value
Type: Int32以下のエラーコードを返します。
エラーコード:
f_err | 内容 |
---|---|
F_ERR_NONE | 正常終了 |
F_ERR_NOMEMORY | メモリ不足エラー |
F_ERR_INVALID_IMAGE | 画像オブジェクトの異常 |
F_ERR_INVALID_PARAM | パラメータ異常 |
F_ERR_CALC_IMPOSSIBLE | 計算不能 |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
Remarks
Examples
C# | Copy |
---|---|
// $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_calib_rectify_ud_image_map() { int status = (int)f_err.F_ERR_NONE; // カメラ内部パラメータ. F_CAMERA_PARAM camera = F_CAMERA_PARAM.init(916.396023110107, 910.774803134449, 1.12644931840078, 331.36766487411, 227.057842377842, -0.215845914024188, 0.0707690551914399); FMATRIX_PTR homography = FMATRIX_PTR.Zero; // カメラ混合パラメータ. double origin_x = 0; // オフセットX. double origin_y = 0; // オフセットY. double ppm = 2.0; // ワールド平面座標系と画素の比. FHANDLE map = FHANDLE.Zero; // 座標変換マップ. FHANDLE hsrc = FHANDLE.Zero; // 入力画像. FHANDLE hdst = FHANDLE.Zero; // 結果画像. int width = 500; // マップの幅(結果画像の幅). int height = 680; // マップの高さ(結果画像の高さ). try { // 入力画像のロード. status = api.fnFIE_load_img_file(TestImageDir + "/testdata/calib_rectify_target.bmp", ref hsrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8); Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status); // カメラ混合パラメータの設定. homography = fnFIE_calib_calc_extrinsic_parameters(); // マップ領域の確保. map = api.fnFIE_img_root_alloc((int)f_imgtype.F_IMG_DOUBLE, 2, width, height); // マップの生成. status = api.fnFIE_calib_rectify_ud_image_map(camera, homography, origin_x, origin_y, ppm, map); Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status); // 結果画像の生成. hdst = api.fnFIE_img_root_alloc((int)f_imgtype.F_IMG_UC8, 1, width, height); status = api.fnFIE_geotrans_warpping(hsrc, map, hdst, FHANDLE.Zero, true, f_sampling_mode.F_SAMPLING_BILINEAR); Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status); // 画像の保存. status = api.fnFIE_save_bmp(ResultDir + "/fnFIE_RectifyImage.bmp", hdst); Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status); } finally { homography.Dispose(); map.Dispose(); hsrc.Dispose(); hdst.Dispose(); } } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.1 $ Imports System.Collections.Generic Imports System.Text Imports fvalgcli Public Partial Class FIE ''' <summary> ''' 画像の正対変換と歪み補正を同時に行う座標変換マップの生成. ''' </summary> <FvPluginExecute> _ Public Sub fnFIE_calib_rectify_ud_image_map() Dim status As Integer = CInt(f_err.F_ERR_NONE) ' カメラ内部パラメータ. Dim camera As F_CAMERA_PARAM = F_CAMERA_PARAM.init(916.396023110107, 910.774803134449, 1.12644931840078, 331.36766487411, 227.057842377842, -0.215845914024188, _ 0.0707690551914399) Dim homography As FMATRIX_PTR = FMATRIX_PTR.Zero ' カメラ混合パラメータ. Dim origin_x As Double = 0 ' オフセットX. Dim origin_y As Double = 0 ' オフセットY. Dim ppm As Double = 2.0 ' ワールド平面座標系と画素の比. Dim map As FHANDLE = FHANDLE.Zero ' 座標変換マップ. Dim hsrc As FHANDLE = FHANDLE.Zero ' 入力画像. Dim hdst As FHANDLE = FHANDLE.Zero ' 結果画像. Dim width As Integer = 500 ' マップの幅(結果画像の幅). Dim height As Integer = 680 ' マップの高さ(結果画像の高さ). Try ' 入力画像のロード. status = api.fnFIE_load_img_file(TestImageDir & "/testdata/calib_rectify_target.bmp", hsrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8) Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err)) ' カメラ混合パラメータの設定. homography = fnFIE_calib_calc_extrinsic_parameters() ' マップ領域の確保. map = api.fnFIE_img_root_alloc(CInt(f_imgtype.F_IMG_DOUBLE), 2, width, height) ' マップの生成. status = api.fnFIE_calib_rectify_ud_image_map(camera, homography, origin_x, origin_y, ppm, map) Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err)) ' 結果画像の生成. hdst = api.fnFIE_img_root_alloc(CInt(f_imgtype.F_IMG_UC8), 1, width, height) status = api.fnFIE_geotrans_warpping(hsrc, map, hdst, FHANDLE.Zero, True, f_sampling_mode.F_SAMPLING_BILINEAR) Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err)) ' 画像の保存. status = api.fnFIE_save_bmp(ResultDir & "/fnFIE_RectifyImage.bmp", hdst) Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err)) Finally homography.Dispose() map.Dispose() hsrc.Dispose() hdst.Dispose() End Try End Sub End Class |