[32bit] ステレオカメラセットのキャリブレーションを行います。この関数は、2台のカメラそれぞれの固有パラメータと、2台のカメラ間の外部パラメータを求めます。
calib3d_stereoCalibrate_array p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23
p1 = sptr : IntPtr[] objectPoints p2 = int : int opSize1 p3 = var : int[] opSizes2 p4 = sptr : IntPtr[] imagePoints1 p5 = int : int ip1Size1 p6 = var : int[] ip1Sizes2 p7 = sptr : IntPtr[] imagePoints2 p8 = int : int ip2Size1 p9 = var : int[] ip2Sizes2 p10 = var : double* cameraMatrix1 p11 = var : [In, Out] double[] distCoeffs1 p12 = int : int dc1Size p13 = var : double* cameraMatrix2 p14 = var : [In, Out] double[] distCoeffs2 p15 = int : int dc2Size p16 = ARGS_SIZE : Size imageSize p17 = sptr : IntPtr R p18 = sptr : IntPtr T p19 = sptr : IntPtr E p20 = sptr : IntPtr F p21 = int : int flags p22 = ARGS_TERMCRITERIA : TermCriteria criteria p23 = 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_array 元DLLエクスポート名: calib3d_stereoCalibrate_array 参照元CSファイル: Internal\PInvoke\NativeMethods\calib3d\NativeMethods_calib3d.cs ▼ C言語側関数定義
CVAPI(ExceptionStatus) calib3d_stereoCalibrate_array( cv::Point3f **objectPoints, int opSize1, int *opSizes2, cv::Point2f **imagePoints1, int ip1Size1, int *ip1Sizes2, cv::Point2f **imagePoints2, int ip2Size1, int *ip2Sizes2, double *cameraMatrix1, double *distCoeffs1, int dc1Size, double *cameraMatrix2, double *distCoeffs2, int dc2Size, MyCvSize imageSize, cv::_OutputArray *R, cv::_OutputArray *T, cv::_OutputArray *E, cv::_OutputArray *F, int flags, MyCvTermCriteria criteria, double *returnValue) { BEGIN_WRAP std::vector<std::vector<cv::Point3f> > objectPointsVec(opSize1); std::vector<std::vector<cv::Point2f> > imagePoints1Vec(ip1Size1); std::vector<std::vector<cv::Point2f> > imagePoints2Vec(ip2Size1); for (auto i = 0; i < opSize1; i++) objectPointsVec[i] = std::vector<cv::Point3f>( objectPoints[i], objectPoints[i] + opSizes2[i]); for (auto i = 0; i < ip1Size1; i++) imagePoints1Vec[i] = std::vector<cv::Point2f>( imagePoints1[i], imagePoints1[i] + ip1Sizes2[i]); for (auto i = 0; i < ip2Size1; i++) imagePoints2Vec[i] = std::vector<cv::Point2f>( imagePoints2[i], imagePoints2[i] + ip2Sizes2[i]); cv::Mat cameraMatrix1M(3, 3, CV_64FC1, cameraMatrix1); cv::Mat cameraMatrix2M(3, 3, CV_64FC1, cameraMatrix2); cv::Mat distCoeffs1M(dc1Size, 1, CV_64FC1, distCoeffs1); cv::Mat distCoeffs2M(dc2Size, 1, CV_64FC1, distCoeffs2); *returnValue = cv::stereoCalibrate(objectPointsVec, imagePoints1Vec, imagePoints2Vec, cameraMatrix1M, distCoeffs1M, cameraMatrix2M, distCoeffs2M, 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 |