カメラキャリブレーション(外部+内部)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
外部パラメータと内部パラメータのキャリブレーションを行う
#contents
*double calibrateCamera( InputArrayOfArrays _objectPoints...
複数フレームで求められた平面パターンの座標からキャリブレ...
**引数 [#t2c89261]
-_objectPoints:Mat型のパターンの世界座標。入力
-_imagePoints:Mat型のパターンの画像座標。入力
-imageSize:Size型の撮影画像の画像サイズ。入力
-_cameraMatrix:Mat型のカメラ行列(内部行列)。出力
-_distCoeffs:Mat型の歪計数ベクトル。出力
-_rvecs:Mat型の回転ベクトルの集合。出力
-_tvecs:Mat型の並進ベクトルの集合。出力
-flags:int型の処理フラグ。入力。省略可
-criteria:TermCriteria型の収束条件。入力。省略可
**返り値 [#a508323c]
double型の再投影誤差
*void cvCalibrateCamera2( CvMat* world_points, CvMat* ima...
複数フレームで求められた平面パターンの座標からキャリブレ...
**引数 [#w942b4bb]
-world_points:CvMat*型のパターンの世界座標
-image_points:CvMat*型のパターンの画像座標
-counts:CvMat*型の各フレームにおいて求められたパターンの...
-image_size:CvSize型の画像サイズ
-A:CvMat*型の内部パラメータ行列
-distortion:CvMat*型の歪み係数ベクトル
-rotation:CvMat*型の回転ベクトルの集合.省略可能
-translation:CvMat*型の並進ベクトルの集合.省略可能
-flags:int型の処理フラグ.省略可能
**返り値 [#e2b5e811]
-void型なのでなし(OpenCV 1.0時点)
-再投影誤差を表すdouble型(OpenCV 2.2以降)
*解説(C++版) [#lefe27e0]
-_objectPointsのサイズは3xNか2xN
--Nはフレーム数x点の数
--必ずしも各フレームで同じ点の数である必要は無いが,便宜...
--世界座標は3次元だが,内部パラメータを推定する場合平面パ...
-image_pointsのサイズは2xN
-当然world_pointsとimage_pointsでサイズと型の整合性が取れ...
-countsのサイズは1xMかMx1
--Mはフレーム数
-image_sizeはCvSize型の画像サイズ
-Aは3x3の内部パラメータ行列
--内部パラメータの推定を行ってくれるが,flagsの指定次第で...
-distortionには歪み係数ベクトルが返って来る
--OpenCVで4次元の歪みパラメータを扱える
-rotationsのサイズは3xMか9xMで回転ベクトルの集合が返って...
--サイズが3xMの場合はQuaternion表記で,9xMの場合は回転行...
-translationsのサイズは3xMで並進ベクトルの集合が返って来る
-flagsは省略可能.下記のフラグ,もしくはそれらの組み合わ...
--CV_CALIB_USE_INTRINSIC_GUESS(1):渡した内部パラメータを...
---実際,内部パラメータが既知の場合,cvFindExtrinsicCamer...
---このフラグが指定された無かった場合,cx,cyは画像サイズ...
--CV_CALIB_FIX_ASPECT_RATIO(2):fxとfyの比率を固定したまま...
--CV_CALIB_FIX_PRINCIPAL_POINT(4):光学中心位置だけを固定...
--CV_CALIB_ZERO_TANGENT_DIST(8):円周方向の歪み方向が0に固...
--CV_CALIB_FIX_FOCAL_LENGTH(16):
--CV_CALIB_FIX_K1(32):
--CV_CALIB_FIX_K2(64):
--CV_CALIB_FIX_K3(128):
--CV_CALIB_FIX_K4(2048):
--CV_CALIB_FIX_K5(4096):
--CV_CALIB_FIX_K6(8192):
--CV_CALIB_RATIONAL_MODEL(16384):
*解説(C版) [#ge3f0297]
-world_pointsのサイズは3xNか2xN
--Nはフレーム数x点の数
--必ずしも各フレームで同じ点の数である必要は無いが,便宜...
--世界座標は3次元だが,内部パラメータを推定する場合平面パ...
-image_pointsのサイズは2xN
-当然world_pointsとimage_pointsでサイズと型の整合性が取れ...
-countsのサイズは1xMかMx1
--Mはフレーム数
-image_sizeはCvSize型の画像サイズ
-Aは3x3の内部パラメータ行列
--内部パラメータの推定を行ってくれるが,flagsの指定次第で...
-distortionには歪み係数ベクトルが返って来る
--OpenCVで4次元の歪みパラメータを扱える
-rotationsのサイズは3xMか9xMで回転ベクトルの集合が返って...
--省略するとNULLが渡され,回転ベクトルの推定が行われない
--サイズが3xMの場合はQuaternion表記で,9xMの場合は回転行...
-translationsのサイズは3xMで並進ベクトルの集合が返って来る
--省略するとNULLが渡され,並進ベクトルの推定が行われない
-flagsは省略可能.下記のフラグ,もしくはそれらの組み合わ...
--CV_CALIB_USE_INTRINSIC_GUESS(1):渡した内部パラメータを...
---実際,内部パラメータが既知の場合,[[cvFindExtrinsicCam...
---このフラグが指定された無かった場合,cx,cyは画像サイズ...
--CV_CALIB_FIX_ASPECT_RATIO(2):fxとfyの比率を固定したまま...
--CV_CALIB_FIX_PRINCIPAL_POINT(4):光学中心位置だけを固定...
--CV_CALIB_ZERO_TANGENT_DIST(8):円周方向の歪み方向が0に固...
*その他 [#cc938933]
-OpenCV 2.4.8 時点では、 C++ はC実装のラッパー。
-OpenCV 2.2 では遅くとも再投影誤差の返り値があったが、Ope...
*サンプルコード [#sfdf20cb]
#geshi(c++,number){{
int M = 50; // フ...
int N = M * patternX * patternY; // 総...
CvMat *world_points = cvCreateMat(N, 3, CV_32FC1); // 世...
CvMat *image_points = cvCreateMat(N, 2, CV_32FC1); // 画...
CvMat *counts = cvCreateMat(M, 1, CV_32SC1); // 各...
CvMat *A = cvCreateMat(3, 3, CV_32FC1); // 内...
CvMat *distortion = cvCreateMat(4, 1, CV_32FC1); // 歪...
CvMat *rotation = cvCreateMat(M, 3, CV_32FC1); // 回...
CvMat *translation = cvCreateMat(M, 3, CV_32FC1); // 並...
CvSize image_size = cvSize(width, height);
setPoints(world_points, image_points, counts, M, N); // ...
// キャリブレーションを行う
cvCalibrateCamera2( world_points, image_points, counts, ...
cvReleaseMat(&world_points);
cvReleaseMat(&image_points);
cvReleaseMat(&counts);
cvReleaseMat(&A);
cvReleaseMat(&distortion);
cvReleaseMat(&rotation);
cvReleaseMat(&translation);
}}
*実体ファイル [#gb46f406]
-C++インタフェース(2.4.8)
--modules/calib3d/src/calibration.cpp
--modules/calib3d/include/opencv2/calib3d/calib3d.hpp
-Cインタフェース(2.4.8)
--modules/calib3d/src/calibration.cpp
--modules/calib3d/include/opencv2/calib3d/calib3d.hpp
-Cインタフェース(1.0)
--cv/src/cvcalibration.cpp
--cv/include/cv.h
*注意 [#w7d39168]
-基本的にデータは転置してもOKなOpenCVなのに,world_points...
-上記には無いが,マルチチャンネルの1xNもNx1も利用できる
ジャンル[[:OpenCV]][[:OpenCV 1.0]][[:OpenCV 2.4]]準拠
終了行:
外部パラメータと内部パラメータのキャリブレーションを行う
#contents
*double calibrateCamera( InputArrayOfArrays _objectPoints...
複数フレームで求められた平面パターンの座標からキャリブレ...
**引数 [#t2c89261]
-_objectPoints:Mat型のパターンの世界座標。入力
-_imagePoints:Mat型のパターンの画像座標。入力
-imageSize:Size型の撮影画像の画像サイズ。入力
-_cameraMatrix:Mat型のカメラ行列(内部行列)。出力
-_distCoeffs:Mat型の歪計数ベクトル。出力
-_rvecs:Mat型の回転ベクトルの集合。出力
-_tvecs:Mat型の並進ベクトルの集合。出力
-flags:int型の処理フラグ。入力。省略可
-criteria:TermCriteria型の収束条件。入力。省略可
**返り値 [#a508323c]
double型の再投影誤差
*void cvCalibrateCamera2( CvMat* world_points, CvMat* ima...
複数フレームで求められた平面パターンの座標からキャリブレ...
**引数 [#w942b4bb]
-world_points:CvMat*型のパターンの世界座標
-image_points:CvMat*型のパターンの画像座標
-counts:CvMat*型の各フレームにおいて求められたパターンの...
-image_size:CvSize型の画像サイズ
-A:CvMat*型の内部パラメータ行列
-distortion:CvMat*型の歪み係数ベクトル
-rotation:CvMat*型の回転ベクトルの集合.省略可能
-translation:CvMat*型の並進ベクトルの集合.省略可能
-flags:int型の処理フラグ.省略可能
**返り値 [#e2b5e811]
-void型なのでなし(OpenCV 1.0時点)
-再投影誤差を表すdouble型(OpenCV 2.2以降)
*解説(C++版) [#lefe27e0]
-_objectPointsのサイズは3xNか2xN
--Nはフレーム数x点の数
--必ずしも各フレームで同じ点の数である必要は無いが,便宜...
--世界座標は3次元だが,内部パラメータを推定する場合平面パ...
-image_pointsのサイズは2xN
-当然world_pointsとimage_pointsでサイズと型の整合性が取れ...
-countsのサイズは1xMかMx1
--Mはフレーム数
-image_sizeはCvSize型の画像サイズ
-Aは3x3の内部パラメータ行列
--内部パラメータの推定を行ってくれるが,flagsの指定次第で...
-distortionには歪み係数ベクトルが返って来る
--OpenCVで4次元の歪みパラメータを扱える
-rotationsのサイズは3xMか9xMで回転ベクトルの集合が返って...
--サイズが3xMの場合はQuaternion表記で,9xMの場合は回転行...
-translationsのサイズは3xMで並進ベクトルの集合が返って来る
-flagsは省略可能.下記のフラグ,もしくはそれらの組み合わ...
--CV_CALIB_USE_INTRINSIC_GUESS(1):渡した内部パラメータを...
---実際,内部パラメータが既知の場合,cvFindExtrinsicCamer...
---このフラグが指定された無かった場合,cx,cyは画像サイズ...
--CV_CALIB_FIX_ASPECT_RATIO(2):fxとfyの比率を固定したまま...
--CV_CALIB_FIX_PRINCIPAL_POINT(4):光学中心位置だけを固定...
--CV_CALIB_ZERO_TANGENT_DIST(8):円周方向の歪み方向が0に固...
--CV_CALIB_FIX_FOCAL_LENGTH(16):
--CV_CALIB_FIX_K1(32):
--CV_CALIB_FIX_K2(64):
--CV_CALIB_FIX_K3(128):
--CV_CALIB_FIX_K4(2048):
--CV_CALIB_FIX_K5(4096):
--CV_CALIB_FIX_K6(8192):
--CV_CALIB_RATIONAL_MODEL(16384):
*解説(C版) [#ge3f0297]
-world_pointsのサイズは3xNか2xN
--Nはフレーム数x点の数
--必ずしも各フレームで同じ点の数である必要は無いが,便宜...
--世界座標は3次元だが,内部パラメータを推定する場合平面パ...
-image_pointsのサイズは2xN
-当然world_pointsとimage_pointsでサイズと型の整合性が取れ...
-countsのサイズは1xMかMx1
--Mはフレーム数
-image_sizeはCvSize型の画像サイズ
-Aは3x3の内部パラメータ行列
--内部パラメータの推定を行ってくれるが,flagsの指定次第で...
-distortionには歪み係数ベクトルが返って来る
--OpenCVで4次元の歪みパラメータを扱える
-rotationsのサイズは3xMか9xMで回転ベクトルの集合が返って...
--省略するとNULLが渡され,回転ベクトルの推定が行われない
--サイズが3xMの場合はQuaternion表記で,9xMの場合は回転行...
-translationsのサイズは3xMで並進ベクトルの集合が返って来る
--省略するとNULLが渡され,並進ベクトルの推定が行われない
-flagsは省略可能.下記のフラグ,もしくはそれらの組み合わ...
--CV_CALIB_USE_INTRINSIC_GUESS(1):渡した内部パラメータを...
---実際,内部パラメータが既知の場合,[[cvFindExtrinsicCam...
---このフラグが指定された無かった場合,cx,cyは画像サイズ...
--CV_CALIB_FIX_ASPECT_RATIO(2):fxとfyの比率を固定したまま...
--CV_CALIB_FIX_PRINCIPAL_POINT(4):光学中心位置だけを固定...
--CV_CALIB_ZERO_TANGENT_DIST(8):円周方向の歪み方向が0に固...
*その他 [#cc938933]
-OpenCV 2.4.8 時点では、 C++ はC実装のラッパー。
-OpenCV 2.2 では遅くとも再投影誤差の返り値があったが、Ope...
*サンプルコード [#sfdf20cb]
#geshi(c++,number){{
int M = 50; // フ...
int N = M * patternX * patternY; // 総...
CvMat *world_points = cvCreateMat(N, 3, CV_32FC1); // 世...
CvMat *image_points = cvCreateMat(N, 2, CV_32FC1); // 画...
CvMat *counts = cvCreateMat(M, 1, CV_32SC1); // 各...
CvMat *A = cvCreateMat(3, 3, CV_32FC1); // 内...
CvMat *distortion = cvCreateMat(4, 1, CV_32FC1); // 歪...
CvMat *rotation = cvCreateMat(M, 3, CV_32FC1); // 回...
CvMat *translation = cvCreateMat(M, 3, CV_32FC1); // 並...
CvSize image_size = cvSize(width, height);
setPoints(world_points, image_points, counts, M, N); // ...
// キャリブレーションを行う
cvCalibrateCamera2( world_points, image_points, counts, ...
cvReleaseMat(&world_points);
cvReleaseMat(&image_points);
cvReleaseMat(&counts);
cvReleaseMat(&A);
cvReleaseMat(&distortion);
cvReleaseMat(&rotation);
cvReleaseMat(&translation);
}}
*実体ファイル [#gb46f406]
-C++インタフェース(2.4.8)
--modules/calib3d/src/calibration.cpp
--modules/calib3d/include/opencv2/calib3d/calib3d.hpp
-Cインタフェース(2.4.8)
--modules/calib3d/src/calibration.cpp
--modules/calib3d/include/opencv2/calib3d/calib3d.hpp
-Cインタフェース(1.0)
--cv/src/cvcalibration.cpp
--cv/include/cv.h
*注意 [#w7d39168]
-基本的にデータは転置してもOKなOpenCVなのに,world_points...
-上記には無いが,マルチチャンネルの1xNもNx1も利用できる
ジャンル[[:OpenCV]][[:OpenCV 1.0]][[:OpenCV 2.4]]準拠
ページ名: