関数 | |
INT FVALGAPI | fnFIE_calib_undistort_points (F_CAMERA_PARAM camera, DPNT_T *src_points, DPNT_T *dst_points, INT num_points) |
![]() | |
INT FVALGAPI | fnFIE_calib_undistort_image_map (F_CAMERA_PARAM camera, FHANDLE map) |
![]() | |
INT FVALGAPI | fnFIE_calib_undistort_image_map_scale (F_CAMERA_PARAM camera, DPNT_T offset, DOUBLE scale, FHANDLE map) |
![]() | |
INT FVALGAPI | fnFIE_calib_undistort_fit_scale (F_CAMERA_PARAM camera, INT src_width, INT src_height, INT mode, DOUBLE *fit_scale, DPNT_T *fit_offset, INT *fit_width, INT *fit_height) |
![]() | |
INT FVALGAPI | fnFIE_calib_undistort_fit_rect (F_CAMERA_PARAM camera, INT src_width, INT src_height, INT mode, DOUBLE scale, DPNT_T *fit_offset, INT *fit_width, INT *fit_height) |
![]() | |
INT FVALGAPI | fnFIE_calib_distort_points (F_CAMERA_PARAM camera, DPNT_T *src_points, DPNT_T *dst_points, INT num_points) |
![]() | |
INT FVALGAPI | fnFIE_calib_distort_image_map (F_CAMERA_PARAM camera, FHANDLE map) |
![]() | |
INT FVALGAPI | fnFIE_calib_rectify_matrix (FMATRIX *homography, DOUBLE origin_x, DOUBLE origin_y, DOUBLE ppm, FMATRIX *rectify) |
![]() | |
INT FVALGAPI | fnFIE_calib_rectify_matrix_inv (FMATRIX *homography, DOUBLE origin_x, DOUBLE origin_y, DOUBLE ppm, FMATRIX *rect_inv) |
![]() | |
INT FVALGAPI | fnFIE_calib_rectify_ud_image_map (F_CAMERA_PARAM camera, FMATRIX *homography, DOUBLE origin_x, DOUBLE origin_y, DOUBLE ppm, FHANDLE map) |
![]() |
INT FVALGAPI fnFIE_calib_undistort_points | ( | F_CAMERA_PARAM | camera, | |
DPNT_T * | src_points, | |||
DPNT_T * | dst_points, | |||
INT | num_points | |||
) |
点列を歪み補正画像座標へ変換
カメラ内部パラメータによる座標変換を行います。 カメラ画像座標系から理想画像座標系への変換になります。
ただし、
:カメラ内部パラメータ(光軸移動係数)
:カメラ内部パラメータ(放射歪係数)
:正規化画像座標系での座標
また、 はカメラ内部パラメータ行列
により
を射影変換した座標です。
が最小になるような を非線形最適化を用いて推定し、出力します。
[in] | camera | カメラ内部パラメータ構造体 |
[in] | src_points | カメラ画像座標系における点の配列 |
[out] | dst_points | 歪み補正画像座標系における点の配列 |
[in] | num_points | src_points, dst_points の点数 |
F_ERR_NONE | 正常終了 | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_CALC_IMPOSSIBLE | 計算不能 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_calib_undistort_image_map | ( | F_CAMERA_PARAM | camera, | |
FHANDLE | map | |||
) |
画像の歪み補正マップ生成
カメラ内部パラメータによる座標変換マップを生成します。 本関数によって生成される座標変換マップは、 カメラ画像座標系から理想画像座標系への変換を行います。
歪み補正の実施例
カメラ画像座標と理想画像座標で光軸中心付近の スケール係数が1対1になるように変換マップは生成されます。 そのため、画像の外周では変換後に補正前には視野の外だったピクセルが 画像中に出たり、補正前に視野にあったピクセルが画像外に出たりすることがあります。
ただし、
:カメラ内部パラメータ(光軸移動係数)
:カメラ内部パラメータ(放射歪係数)
:正規化画像座標系での座標
また、 はカメラ内部パラメータ行列
により
を射影変換した座標です。
[in] | camera | カメラ内部パラメータ構造体 |
[out] | map | 歪み補正画像作成用map ( type:double, float / ch:2 ) |
F_ERR_NONE | 正常終了 | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_INVALID_IMAGE | 画像異常 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_CALC_IMPOSSIBLE | カメラ内部パラメータの逆行列が計算不能 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_calib_undistort_image_map_scale | ( | F_CAMERA_PARAM | camera, | |
DPNT_T | offset, | |||
DOUBLE | scale, | |||
FHANDLE | map | |||
) |
画像の歪み補正マップ生成(スケール・オフセット付き)
カメラ内部パラメータによる座標変換マップを生成します。 本関数によって生成される座標変換マップは、カメラ画像座標系から、 理想画像座標系にスケールとオフセットを加えた座標系への変換を行います。
本関数と fnFIE_calib_undistort_image_map() との違いは、 fnFIE_calib_undistort_image_map() がカメラ内部パラメータによる変換結果をそのまま 使用するのに対して、本関数ではそれにスケールとオフセットを付加できる点です。 その他の部分は fnFIE_calib_undistort_image_map() と同一仕様ですので、 そちらのリファレンスをあわせて参照してください。
スケール scale およびオフセット offset は理想画像座標を 、 理想画像座標にスケールとオフセットを加えた座標を
としたときに、
となるように適用されます。 つまり fnFIE_calib_undistort_image_map() の出力する座標変換マップと 本関数によって生成された座標変換マップを比較したときに、 fnFIE_geotrans_warpping() で使用した結果の画像が (0,0) を基準に scale 倍された後で offset だけ平行移動 するような違いが生まれます。
map は fnFIE_geotrans_warpping() と同じ形式の座標変換マップ画像で、 画像型 F_IMG_DOUBLE または F_IMG_FLOAT、チャネル数2の画像を入力します。 map の画像サイズは後で fnFIE_geotrans_warpping() に渡して 変換する際の処理結果画像と画像サイズが同じである必要があります。
[in] | camera | カメラ内部パラメータ構造体 |
[in] | offset | 原点のオフセット |
[in] | scale | 拡大倍率 ( scale > 0 ) |
[out] | map | 歪み補正画像作成用map ( type:double, float / ch:2 ) |
F_ERR_NONE | 正常終了 | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_INVALID_IMAGE | 画像異常 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_CALC_IMPOSSIBLE | カメラ内部パラメータの逆行列が計算不能 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_calib_undistort_fit_scale | ( | F_CAMERA_PARAM | camera, | |
INT | src_width, | |||
INT | src_height, | |||
INT | mode, | |||
DOUBLE * | fit_scale, | |||
DPNT_T * | fit_offset, | |||
INT * | fit_width, | |||
INT * | fit_height | |||
) |
歪み補正画像の内接矩形画像や外接矩形画像作成のための係数の算出
幅が src_width, 高さが src_height のカメラ撮像画像を カメラ内部パラメータ camera にて変換する際に、 その変換結果に対してフィットするような 座標変換マップのサイズとオフセットを計算します。 計算されたパラメータ fit_offset, fit_width, fit_width は スケール・オフセット付き画像ひずみ補正関数 fnFIE_calib_undistort_image_map_scale() にて使用できます。
本関数では変換マップの幅または高さのうち、 スケール変化の小さくなる方をカメラ撮像画像のそれと 同一になるように固定したときの各パラメータを算出します。
mode パラメータの指定値により動作が異なり、 次のように処理が行われます。
本関数と fnFIE_calib_undistort_fit_rect() との違いは、 本関数がカメラ撮像画像の幅または高さを基準として パラメータを算出するのに対し fnFIE_calib_undistort_fit_rect() では 画像のスケール変化率を基準としてパラメータを算出する点です。
[in] | camera | カメラ内部パラメータ構造体 |
[in] | src_width | カメラ画像とワープ変換先画像の横幅 |
[in] | src_height | カメラ画像とワープ変換先画像の縦幅 |
[in] | mode | 計算モード指定
|
[out] | fit_scale | スケール係数 |
[out] | fit_offset | オフセット |
[out] | fit_width | 内接または外接する領域を最大限にとったときの横幅 |
[out] | fit_height | 内接または外接する領域を最大限にとったときの縦幅 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_CALC_IMPOSSIBLE | 計算不能 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_calib_undistort_fit_rect | ( | F_CAMERA_PARAM | camera, | |
INT | src_width, | |||
INT | src_height, | |||
INT | mode, | |||
DOUBLE | scale, | |||
DPNT_T * | fit_offset, | |||
INT * | fit_width, | |||
INT * | fit_height | |||
) |
歪み補正画像の内接矩形画像や外接矩形画像作成のための係数の算出2
幅が src_width, 高さが src_height のカメラ撮像画像を カメラ内部パラメータ camera にて画像を変換する際に、 scale パラメータで入力したスケール係数の画像に対してフィットするような 座標変換マップのサイズとオフセットを計算します。
計算されたパラメータ fit_offset, fit_width, fit_width は スケール・オフセット付き画像ひずみ補正関数 fnFIE_calib_undistort_image_map_scale() にて使用できます。
mode パラメータの指定値により動作が異なり、 次のように処理が行われます。
[in] | camera | カメラ内部パラメータ構造体 |
[in] | src_width | カメラ画像とワープ変換先画像の横幅 |
[in] | src_height | カメラ画像とワープ変換先画像の縦幅 |
[in] | mode | 計算モード指定
|
[in] | scale | スケール係数 ( scale > 0 ) |
[out] | fit_offset | オフセット |
[out] | fit_width | 内接または外接する領域を最大限にとったときの横幅 |
[out] | fit_height | 内接または外接する領域を最大限にとったときの縦幅 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_CALC_IMPOSSIBLE | 計算不能 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_calib_distort_points | ( | F_CAMERA_PARAM | camera, | |
DPNT_T * | src_points, | |||
DPNT_T * | dst_points, | |||
INT | num_points | |||
) |
点列を歪んだ座標へ変換
カメラ内部パラメータと放射歪み係数を用いて点列の歪みシミュレーションを行います。 理想画像座標系からカメラ画像座標系への変換です。
src_points で与えられる理想画像座標系での座標を と表すと、本関数は下式により dst_points で出力される カメラ画像座標系での座標
を計算します。
ただし、 :正規化画像座標系での座標
:カメラ内部パラメータ
:放射歪系数
[in] | camera | カメラ内部パラメータ構造体 |
[in] | src_points | 理想画像座標系における点の配列( ![]() |
[out] | dst_points | カメラ画像座標系における点の配列( ![]() |
[in] | num_points | src_points, dst_points の点数 |
F_ERR_NONE | 正常終了 | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_CALC_IMPOSSIBLE | カメラ内部パラメータの逆行列が計算不能 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_calib_distort_image_map | ( | F_CAMERA_PARAM | camera, | |
FHANDLE | map | |||
) |
画像の歪みシミュレーションマップ生成
画像の歪みシミュレーションをするための座標変換マップを生成します。 カメラ内部パラメータ構造体の歪み補正係数を用いて、 画像の歪み補正前にどのような画像だったかシミュレーションするための 座標変換マップを生成します。 理想画像座標系からカメラ画像座標系への変換になります。
map は fnFIE_geotrans_warpping() と同じ形式の座標変換マップ画像で、 画像型 F_IMG_DOUBLE または F_IMG_FLOAT、チャネル数2の画像を入力します。 map の画像サイズは後で fnFIE_geotrans_warpping() に渡して変換する際の 処理結果画像と画像サイズが同じである必要があります。 また map の画像サイズは、カメラ内部パラメータ算出時の画像サイズと 同じであることを想定していますが、異なっていても実行は可能です。
[in] | camera | カメラ内部パラメータ構造体 |
[out] | map | 歪み画像作成用座標変換マップ ( type:double, float / ch:2 ) |
F_ERR_NONE | 正常終了 | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_INVALID_IMAGE | 画像異常 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_calib_rectify_matrix | ( | FMATRIX * | homography, | |
DOUBLE | origin_x, | |||
DOUBLE | origin_y, | |||
DOUBLE | ppm, | |||
FMATRIX * | rectify | |||
) |
画像を正対変換するための射影行列の生成
カメラ混合パラメータに対して平行移動とスケール成分を付加した射影行列を計算します。 生成された行列は fnFIE_geotrans_perspective() や fnFIE_geotrans_perspective_point() 等に 渡すことで、理想画像からワールド平面画像への変換に使用することが出来ます。 本処理は fnFIE_calib_rectify_matrix_inv() と逆方向の変換行列生成を行います。
正対変換の実施例
[in] | homography | カメラ混合パラメータ(3x3行列) 通常は fnFIE_calib_calc_extrinsic_parameters() で生成された行列を使用します。 |
[in] | origin_x | ワールド平面座標原点と map 原点のX方向オフセット。 ワールド平面座標系の単位で指定します。 |
[in] | origin_y | ワールド平面座標原点と map 原点のY方向オフセット。 ワールド平面座標系の単位で指定します。 |
[in] | ppm | map での出力画素数とワールド平面座標系の単位長さとの比( ppm > 1e-9 ) ( pixel/mm, pixel/inchなど ) |
[out] | rectify | 正対変換のための射影行列 |
F_ERR_NONE | 正常終了 | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_CALC_IMPOSSIBLE | 計算不能 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_calib_rectify_matrix_inv | ( | FMATRIX * | homography, | |
DOUBLE | origin_x, | |||
DOUBLE | origin_y, | |||
DOUBLE | ppm, | |||
FMATRIX * | rect_inv | |||
) |
画像を逆正対変換するための射影行列の生成
カメラ混合パラメータに対して平行移動とスケール成分を付加した射影行列を計算します。 生成された行列は fnFIE_geotrans_perspective() や fnFIE_geotrans_perspective_point() 等に 渡すことで、ワールド平面画像から理想画像への変換に使用することが出来ます。 本処理は fnFIE_calib_rectify_matrix() と逆方向の変換行列生成を行います。
[in] | homography | カメラ混合パラメータ(3x3行列) 通常は fnFIE_calib_calc_extrinsic_parameters() で生成された行列を使用します。 |
[in] | origin_x | ワールド平面座標原点と map 原点のX方向オフセット。 ワールド平面座標系の単位で指定します。 |
[in] | origin_y | ワールド平面座標原点と map 原点のY方向オフセット。 ワールド平面座標系の単位で指定します。 |
[in] | ppm | map での出力画素数とワールド平面座標系の単位長さとの比( ppm > 1e-9 ) ( pixel/mm, pixel/inchなど ) |
[out] | rect_inv | 逆正対変換のための射影行列 |
F_ERR_NONE | 正常終了 | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_CALC_IMPOSSIBLE | 計算不能 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_calib_rectify_ud_image_map | ( | F_CAMERA_PARAM | camera, | |
FMATRIX * | homography, | |||
DOUBLE | origin_x, | |||
DOUBLE | origin_y, | |||
DOUBLE | ppm, | |||
FHANDLE | map | |||
) |
画像の正対変換と歪み補正を同時に行う座標変換マップの生成
カメラの内部パラメータによる変換と、外部パラメータによる変換を 同時に行う座標変換マップを生成します。 生成された座標マップは fnFIE_geotrans_warpping() にて使用します。 この座標変換マップにて変換を行うと、 カメラ画像座標系からワールド平面座標系への正対変換が行えます。
正対変換の実施例
ただし、 :放射歪み係数
:理想画像座標上での光軸中心座標
:カメラ内部パラメータ行列
:カメラ混合パラメータ行列
:理想画像座標上での点座標
:カメラ画像座標上での点座標
:
を正規化画像座標系へ変換した座標
[in] | camera | カメラ内部パラメータ |
[in] | homography | カメラ混合パラメータ(3x3行列) |
[in] | origin_x | ワールド平面座標系と map 原点のX方向オフセット。 ワールド平面座標系の単位で指定します。 |
[in] | origin_y | ワールド平面座標系と map 原点のY方向オフセット。 ワールド平面座標系の単位で指定します。 |
[in] | ppm | map での出力画素数とワールド平面座標系の単位長さとの比( ppm > 1e-9 ) ( pixel/mm, pixel/inchなど ) |
[out] | map | 座標変換マップ ( type:double, float / ch:2 ) fnFIE_geotrans_warpping() の座標変換マップと同じものです。 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_INVALID_IMAGE | 画像オブジェクト異常 | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_CALC_IMPOSSIBLE | 計算不能 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |