[32bit] キャリブレーションパターンの複数のビューから、カメラの内在的および外在的パラメータを見つけます。
calib3d_calibrateCamera_InputArray p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12
p1 = sptr : IntPtr[] objectPoints p2 = int : int objectPointsSize p3 = sptr : IntPtr[] imagePoints p4 = int : int imagePointsSize p5 = ARGS_SIZE : Size imageSize p6 = sptr : IntPtr cameraMatrix p7 = sptr : IntPtr distCoeffs p8 = sptr : IntPtr rvecs p9 = sptr : IntPtr tvecs p10 = int : int flags p11 = ARGS_TERMCRITERIA : TermCriteria criteria p12 = var : out double returnValue
(プラグイン / モジュール : OpenCvSharpExtern.dll)
この関数は,カメラの内部パラメータと,各ビューの外部パラメータを推定します.このアルゴリズムは, [293] と [31] に基づいています.各ビューにおける3次元オブジェクトポイントの座標と,それに対応する2次元射影を指定する必要があります.これは、既知のジオメトリと簡単に検出できる特徴点を持つオブジェクトを使用することで実現できます。このようなオブジェクトは,キャリブレーションリグやキャリブレーションパターンと呼ばれます.OpenCVは,キャリブレーションリグとしてチェスボードをビルトインでサポートしています(findChessboardCornersを参照してください).現在のところ,内部パラメータの初期化(CALIB_USE_INTRINSIC_GUESS がセットされていない場合)は,平面的なキャリブレーションパターン(オブジェクトポイントのZ座標はすべて0でなければいけない)に対してのみ実装されています.アルゴリズムは以下のステップを実行します:初期固有パラメータを計算する(平面キャリブレーションパターンでのみ利用可能なオプション)、または入力パラメータから読み取る。CALIB_FIX_K? の一部が指定されていない限り、歪み係数はすべてゼロに初期設定されます。 固有のパラメータが既に知られているかのように、初期のカメラポーズを推定する。これは solvePnP を用いて行われる。 グローバル Levenberg-Marquardt 最適化アルゴリズムを実行して,再投影誤差,つまり,観測された特徴点 imagePoints と,(カメラパラメータとポーズの現在の推定値を用いて)投影されたオブジェクト点 objectPoints との間の二乗距離の総和を最小化します.詳細は projectPoints を参照してください。非正方(non-N-by-N)グリッドを使用し、findChessboardCorners でキャリブレーションを行った場合、 calibrateCamera が悪い値(歪み係数がゼロ、\(c_x\)と\(c_y\)が画像の中心から非常に離れている、\(f_x\)と?(f_yansen)の差が大きい(比率が10:1以上))の場合は、findChessboardCornersでpatternSize=cvSize(cols,rows)を使うのではなく、patternSize=cvSize(rows,cols)を使っていると思われます。関連項目:ocalibrateCameraRO, findChessboardCorners, solvePnP, initCameraMatrix2D, stereoCalibrate, undistort 元関数名(C#): calib3d_calibrateCamera_InputArray 元DLLエクスポート名: calib3d_calibrateCamera_InputArray 参照元CSファイル: Internal\PInvoke\NativeMethods\calib3d\NativeMethods_calib3d.cs ▼ C言語側関数定義
CVAPI(ExceptionStatus) calib3d_calibrateCamera_InputArray( cv::Mat **objectPoints, int objectPointsSize, cv::Mat **imagePoints, int imagePointsSize, MyCvSize imageSize, cv::_InputOutputArray *cameraMatrix, cv::_InputOutputArray *distCoeffs, std::vector<cv::Mat> *rvecs, std::vector<cv::Mat> *tvecs, int flags, MyCvTermCriteria criteria, double *returnValue) { BEGIN_WRAP std::vector<cv::Mat> objectPointsVec(objectPointsSize); for (auto i = 0; i < objectPointsSize; i++) objectPointsVec[i] = *objectPoints[i]; std::vector<cv::Mat> imagePointsVec(imagePointsSize); for (auto i = 0; i < imagePointsSize; i++) imagePointsVec[i] = *imagePoints[i]; *returnValue = cv::calibrateCamera(objectPointsVec, imagePointsVec, cpp(imageSize), *cameraMatrix, *distCoeffs, *rvecs, *tvecs, flags, cpp(criteria)); 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 |