calib3d_initUndistortRectifyMap

[32/64bit] 歪み補正と平行化の変換マップを計算します.

calib3d_initUndistortRectifyMap p1,p2,p3,p4,p5,p6,p7,p8

p1 = sptr : IntPtr cameraMatrix
p2 = sptr : IntPtr distCoeffs
p3 = sptr : IntPtr R
p4 = sptr : IntPtr newCameraMatrix
p5 = ARGS_SIZE : Size size
p6 = int : int m1type
p7 = sptr : IntPtr map1
p8 = sptr : IntPtr map2

(プラグイン / モジュール : OpenCvSharpExtern.dll)

解説

この関数は,歪み補正と平行化の変換を合同で計算し,その結果をリマップ用のマップの形で表現します.歪みのない画像は,カメラ行列 =newCameraMatrix を用いたカメラで撮影されたかのように,元の画像と同じように見え,歪みもありません.単眼カメラの場合,newCameraMatrix は通常 cameraMatrix と等しくなりますが,スケーリングをより正確に制御するために, getOptimalNewCameraMatrix によって計算することもできます.ステレオカメラの場合,newCameraMatrix は通常,stereoRectify によって求められた P1 または P2 に設定されます.また,この新しいカメラは,R に従って,座標空間内で異なる向きに配置されます.例えば,ステレオカメラの2つのヘッドを調整して,両方の画像のエピポーラ線が水平になり,同じ y-座標を持つようにすることができます(水平に配置されたステレオカメラの場合).つまり,この関数は,補正・平行化された出力画像の各ピクセル ?((u, v)?))に対して,元画像(つまり,カメラから出力されたオリジナル画像)における対応する座標を計算します.このような処理を行います。^T ardarrow R^{-1}*[x ?, y?,1]^T ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ !!!!+ 2p_1 x' y' + p_2(r^2 + 2 x'^2) + s_1 r^2 + s_2 r^4\ y'' ??{1 + k_1 r^2 + k_2 r^4 + k_3 r^6}{1 + k_4 r^2 + k_5 r^4 + k_6 r^6}。+ p_1 (r^2 + 2 y'^2) + 2 p_2 x' y' + s_3 r^2 + s_4 r^4 ????? = ?????{R_{33}(?????)}{0}{R_{13}((?????)}){0}{R_{33}(??? -? ???)}{R_{23}(????)}{0}{0}{1}R(\tau_x, \tau_y) \vecthree{x''}{y''}{1}\ map_x(u,v) ????? ????? ????? ????? ?????\ステレオカメラの場合,この関数は,各カメラヘッドに対して,stereoRectify の後,stereoCalibrate の後に 2 回呼び出されます.しかし,ステレオカメラがキャリブレーションされていない場合は, stereoRectifyUncalibrated を用いて,基本行列から直接,平行化変換を計算することができます.各カメラに対して,この関数は,3次元空間の回転行列 R ではなく,ピクセル領域の平行化変換としてホモグラフィ H を求めます.R は,H から次のようにして求められます:[??? -? ???] = ??? -? ??? )^{-1} ????? )\ここで,CameraMatrix は任意に選択できます.

元関数名(C#): calib3d_initUndistortRectifyMap
元DLLエクスポート名: calib3d_initUndistortRectifyMap
参照元CSファイル: Internal\PInvoke\NativeMethods\calib3d\NativeMethods_calib3d.cs
▼ C言語側関数定義
CVAPI(ExceptionStatus) calib3d_initUndistortRectifyMap(
    cv::_InputArray *cameraMatrix, cv::_InputArray *distCoeffs,
    cv::_InputArray *R, cv::_InputArray *newCameraMatrix,
    MyCvSize size, int m1type, cv::_OutputArray *map1, cv::_OutputArray *map2)
{
    BEGIN_WRAP
    cv::initUndistortRectifyMap(*cameraMatrix, *distCoeffs, *R, *newCameraMatrix, cpp(size), m1type, *map1, *map2);
    END_WRAP
}

情報

プラグイン / モジュールOpenCvSharpExtern.dll
バージョン1.00
作成日2021/11/30
著作者inovia
URLhttps://hsp.moe/
備考#include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as"
使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること
タイプOpenCVSharpラッパーDLL
グループNativeMethods_calib3d
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\OpenCvSharpExtern.hs