calib3d_stereoCalibrate_InputArray

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