画像を逆正対変換するための射影行列の生成
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_calib_rectify_matrix_inv( FMATRIX_PTR homography, double origin_x, double origin_y, double ppm, FMATRIX_PTR rect_inv ) |
Visual Basic |
---|
Public Shared Function fnFIE_calib_rectify_matrix_inv ( homography As FMATRIX_PTR, origin_x As Double, origin_y As Double, ppm As Double, rect_inv As FMATRIX_PTR ) As Integer |
Parameters
- homography
- Type: fvalgcli..::..FMATRIX_PTR
カメラ混合パラメータ(3x3行列) 通常は fnFIE_calib_calc_extrinsic_parameters() で生成された行列を使用します。
- 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など )
- rect_inv
- Type: fvalgcli..::..FMATRIX_PTR
逆正対変換のための射影行列
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_matrix_inv() { 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; // ワールド平面座標系と画素の比. FMATRIX_PTR rectify_inv = FMATRIX_PTR.Zero; // 平行移動、スケール成分を付加したカメラ混合パラメータ. FHANDLE hsrc = FHANDLE.Zero; // 入力画像. FHANDLE hdst = FHANDLE.Zero; // 結果画像. int width = 640; // マップの幅(結果画像の幅). int height = 480; // マップの高さ(結果画像の高さ). try { // 入力画像のロード. status = api.fnFIE_load_img_file(TestImageDir + "/testdata/calib_unrectify_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(); // 行列領域の確保. rectify_inv = FMATRIX_PTR.alloc(3, 3); // 平行移動、スケール成分を付加したカメラ混合パラメータの生成. status = api.fnFIE_calib_rectify_matrix_inv(homography, origin_x, origin_y, ppm, rectify_inv); 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_perspective(hsrc, hdst, FHANDLE.Zero, rectify_inv, 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_UnRectifyImage.bmp", hdst); Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status); } finally { homography.Dispose(); rectify_inv.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_matrix_inv() 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 rectify_inv As FMATRIX_PTR = FMATRIX_PTR.Zero ' 平行移動、スケール成分を付加したカメラ混合パラメータ. Dim hsrc As FHANDLE = FHANDLE.Zero ' 入力画像. Dim hdst As FHANDLE = FHANDLE.Zero ' 結果画像. Dim width As Integer = 640 ' マップの幅(結果画像の幅). Dim height As Integer = 480 ' マップの高さ(結果画像の高さ). Try ' 入力画像のロード. status = api.fnFIE_load_img_file(TestImageDir & "/testdata/calib_unrectify_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() ' 行列領域の確保. rectify_inv = FMATRIX_PTR.alloc(3, 3) ' 平行移動、スケール成分を付加したカメラ混合パラメータの生成. status = api.fnFIE_calib_rectify_matrix_inv(homography, origin_x, origin_y, ppm, rectify_inv) 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_perspective(hsrc, hdst, FHANDLE.Zero, rectify_inv, 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_UnRectifyImage.bmp", hdst) Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err)) Finally homography.Dispose() rectify_inv.Dispose() hsrc.Dispose() hdst.Dispose() End Try End Sub End Class |