カメラキャリブレーション(外部のみ)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
外部パラメータのみのキャリブレーションを行う
#contents
*void cvFindExtrinsicCameraParams2( CvMat* world_points, ...
座標の対応から外部パラメータのみを推定する
**引数 [#sbbbdb76]
-world_points:CvMat*型のパターンの世界座標
-image_points:CvMat*型のパターンの画像座標
-A:CvMat*型の内部パラメータ行列
-distortion:CvMat*型の歪み係数ベクトル
-rotation:CvMat*型の回転ベクトル(4元数表記)
-translation:CvMat*型の並進ベクトル
**返り値 [#i5d8e16b]
-void型なのでなし
*解説 [#c1d1e1d5]
-外部パラメータのキャリブレーションなので内部パラメータは...
-world_pointsのサイズは3xNかNx3
-image_pointsのサイズは2xNかNx2
-当然world_pointsとimage_pointsでサイズと型の整合性が取れ...
-Aは3x3の内部パラメータ行列
--fx, cx, fy, cy しかパラメータとして利用できない
-distortionには歪み係数ベクトルを入れる
--OpenCVで4次元の歪みパラメータを扱える
--分からなければNULLで省略可能
-rotationのサイズは3xNかNx3で回転ベクトルが返って来る
-translationサイズは3xNかNx3で並進ベクトルが返って来る
*サンプルコード [#h1f6ae3e]
#geshi(c++,number){{
const int patternX = 4;
const int patternY = 5;
CvCapture *camera;
IplImage *image;
CvPoint2D32f *corners;
camera = cvCaptureFromCAM(-1); // カメラ初期化
image = cvQueryFrame(camera); // 画像取得
corners = new CvPoint2D32f [patternX*patternY];
// 座標格納用配列
cvFindChessboardCorners(image, cvSize(patternX, patternY...
// 点検出
// 画像座標行列を作成
for(int i = 0;i < patternX*patternY;i++){
cvSetReal2D(pointsMatrix, i, 0, corners[i].x);
cvSetReal2D(pointsMatrix, i, 1, corners[i].y);
}
cvFindExtrinsicCameraParams2(world_points, pointsMatrix,...
// 外部パラメータ計算
cvReleaseCapture(&camera); // 解放
delete [] corners; // 解放
}}
*実体ファイル [#f99e540b]
-cv/src/cvcalibration.cpp
-cv/include/cv.h
ジャンル[[:OpenCV]][[:OpenCV 1.0]]準拠
終了行:
外部パラメータのみのキャリブレーションを行う
#contents
*void cvFindExtrinsicCameraParams2( CvMat* world_points, ...
座標の対応から外部パラメータのみを推定する
**引数 [#sbbbdb76]
-world_points:CvMat*型のパターンの世界座標
-image_points:CvMat*型のパターンの画像座標
-A:CvMat*型の内部パラメータ行列
-distortion:CvMat*型の歪み係数ベクトル
-rotation:CvMat*型の回転ベクトル(4元数表記)
-translation:CvMat*型の並進ベクトル
**返り値 [#i5d8e16b]
-void型なのでなし
*解説 [#c1d1e1d5]
-外部パラメータのキャリブレーションなので内部パラメータは...
-world_pointsのサイズは3xNかNx3
-image_pointsのサイズは2xNかNx2
-当然world_pointsとimage_pointsでサイズと型の整合性が取れ...
-Aは3x3の内部パラメータ行列
--fx, cx, fy, cy しかパラメータとして利用できない
-distortionには歪み係数ベクトルを入れる
--OpenCVで4次元の歪みパラメータを扱える
--分からなければNULLで省略可能
-rotationのサイズは3xNかNx3で回転ベクトルが返って来る
-translationサイズは3xNかNx3で並進ベクトルが返って来る
*サンプルコード [#h1f6ae3e]
#geshi(c++,number){{
const int patternX = 4;
const int patternY = 5;
CvCapture *camera;
IplImage *image;
CvPoint2D32f *corners;
camera = cvCaptureFromCAM(-1); // カメラ初期化
image = cvQueryFrame(camera); // 画像取得
corners = new CvPoint2D32f [patternX*patternY];
// 座標格納用配列
cvFindChessboardCorners(image, cvSize(patternX, patternY...
// 点検出
// 画像座標行列を作成
for(int i = 0;i < patternX*patternY;i++){
cvSetReal2D(pointsMatrix, i, 0, corners[i].x);
cvSetReal2D(pointsMatrix, i, 1, corners[i].y);
}
cvFindExtrinsicCameraParams2(world_points, pointsMatrix,...
// 外部パラメータ計算
cvReleaseCapture(&camera); // 解放
delete [] corners; // 解放
}}
*実体ファイル [#f99e540b]
-cv/src/cvcalibration.cpp
-cv/include/cv.h
ジャンル[[:OpenCV]][[:OpenCV 1.0]]準拠
ページ名: