[32bit] ステレオカメラセットのキャリブレーションを行います。この関数は、2台のカメラそれぞれの固有パラメータと、2台のカメラ間の外部パラメータを求めます。
calib3d_stereoCalibrate_InputArray p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18
p1 = sptr : IntPtr[] objectPoints p2 = int : int opSize p3 = sptr : IntPtr[] imagePoints1 p4 = int : int ip1Size p5 = sptr : IntPtr[] imagePoints2 p6 = int : int ip2Size p7 = sptr : IntPtr cameraMatrix1 p8 = sptr : IntPtr distCoeffs1 p9 = sptr : IntPtr cameraMatrix2 p10 = sptr : IntPtr distCoeffs2 p11 = ARGS_SIZE : Size imageSize p12 = sptr : IntPtr R p13 = sptr : IntPtr T p14 = sptr : IntPtr E p15 = sptr : IntPtr F p16 = int : int flags p17 = ARGS_TERMCRITERIA : TermCriteria criteria p18 = var : out double returnValue
(プラグイン / モジュール : OpenCvSharpExtern.dll)
この関数は,ステレオペアを構成する2つのカメラ間の変換を推定します.2つのカメラ間の相対的な位置と姿勢が固定されているステレオカメラにおいて,1番目のカメラと2番目のカメラに対する物体の姿勢をそれぞれ( ????? ), ( ????? ), ( ????? ) と計算すると,それらの姿勢は確実に互いに関連していることになります.つまり、2つのカメラの相対的な位置と向き(\(R\)、\(T\))がわかっていれば、(\(R_1\)、\(T_1\))が与えられたときに、(\(R_2\)、\(T_2amer))を計算することができます。これが,この関数の役割です.R_2=R R_1\]T_2=R T_1 + T.\]従って、1台目のカメラの座標系での3次元点の座標表現が与えられたとき、2台目のカメラの座標系での3次元点の座標表現を計算することができます。♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪R&T」は、0&1で構成されています。\\\\Optionally, the essential matrix E:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\R\(t=[t_0, t_1, t_2]^t\) .また,この関数は,基本行列Fを計算することもできます:\[F = cameraMatrix2^{-T}\cdot E ?cdot cameraMatrix1^{-1}\]ステレオ関連の情報の他に,2台のカメラそれぞれのフルキャリブレーションを行うこともできます。しかし,パラメータ空間の次元が高く,入力データにノイズが含まれているため,この関数は正しい解から乖離する可能性があります.各カメラの固有パラメータを個別に高精度に推定できる場合(例えば,calibrateCamera を用いて)は,そうしてから,計算された固有パラメータとともに CALIB_FIX_INTRINSIC フラグを関数に渡すことをお勧めします.また,すべてのパラメータが一度に推定される場合は,いくつかのパラメータを制限することに意味があります.例えば,CALIB_SAME_FOCAL_LENGTH フラグと CALIB_ZERO_TANGENT_DIST フラグを渡しますが,これは通常,妥当な仮定です. calibrateCamera と同様に,この関数は,両方のカメラから得られるすべての利用可能なビューのすべてのポイントに対して,合計再投影誤差を最小化します.この関数は,再投影誤差の最終的な値を返します. 元関数名(C#): calib3d_stereoCalibrate_InputArray 元DLLエクスポート名: calib3d_stereoCalibrate_InputArray 参照元CSファイル: Internal\PInvoke\NativeMethods\calib3d\NativeMethods_calib3d.cs ▼ C言語側関数定義
CVAPI(ExceptionStatus) calib3d_stereoCalibrate_InputArray( cv::_InputArray **objectPoints, int opSize, cv::_InputArray **imagePoints1, int ip1Size, cv::_InputArray **imagePoints2, int ip2Size, cv::_InputOutputArray *cameraMatrix1, cv::_InputOutputArray *distCoeffs1, cv::_InputOutputArray *cameraMatrix2, cv::_InputOutputArray *distCoeffs2, MyCvSize imageSize, cv::_OutputArray *R, cv::_OutputArray *T, cv::_OutputArray *E, cv::_OutputArray *F, int flags, MyCvTermCriteria criteria, double *returnValue) { BEGIN_WRAP std::vector<cv::_InputArray> objectPointsVec(opSize); std::vector<cv::_InputArray> imagePoints1Vec(ip1Size); std::vector<cv::_InputArray> imagePoints2Vec(ip2Size); for (auto i = 0; i < opSize; i++) objectPointsVec[i] = *objectPoints[i]; for (auto i = 0; i < ip1Size; i++) imagePoints1Vec[i] = *imagePoints1[i]; for (auto i = 0; i < ip2Size; i++) imagePoints2Vec[i] = *imagePoints2[i]; *returnValue = cv::stereoCalibrate(objectPointsVec, imagePoints1Vec, imagePoints2Vec, *cameraMatrix1, *distCoeffs1, *cameraMatrix2, *distCoeffs2, cpp(imageSize), entity(R), entity(T), entity(E), entity(F), 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 |