[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 |
URL | https://hsp.moe/ |
備考 | #include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as" 使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること |
タイプ | OpenCVSharpラッパーDLL |
グループ | NativeMethods_calib3d |
対応環境 |
|
hs ファイル | hsphelp\OpenCvSharpExtern.hs |