OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
魚眼カメラモデル

詳細説明

定義: P をワールド基準フレームにおける座標 X の3D点とする (行列 X に格納される)。カメラ基準フレームにおける P の座標ベクトルは次のとおり:

\[Xc = R X + T\]

ここで R は回転ベクトル om に対応する回転行列である: R = rodrigues(om); Xc の3つの座標を x, y, z とする:

\[\begin{array}{l} x = Xc_1 \\ y = Xc_2 \\ z = Xc_3 \end{array} \]

P のピンホール投影座標は [a; b] であり、ここで

\[\begin{array}{l} a = x / z \ and \ b = y / z \\ r^2 = a^2 + b^2 \\ \theta = atan(r) \end{array} \]

魚眼歪み:

\[\theta_d = \theta (1 + k_1 \theta^2 + k_2 \theta^4 + k_3 \theta^6 + k_4 \theta^8)\]

歪んだ点の座標は [x'; y'] であり、ここで

\[\begin{array}{l} x' = (\theta_d / r) a \\ y' = (\theta_d / r) b \end{array} \]

最後にピクセル座標への変換: 最終的なピクセル座標ベクトル [u; v] は次のとおり:

\[\begin{array}{l} u = f_x (x' + \alpha y') + c_x \\ v = f_y y' + c_y \end{array} \]

概要: 透視投影を用い、歪み補正を行わない汎用カメラモデル [147]

名前空間

namespace  cv::fisheye
 この名前空間のメソッドは、いわゆる魚眼カメラモデルを用いる。
 

関数

double cv::fisheye::calibrate (InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size &image_size, InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags=0, TermCriteria criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 100, DBL_EPSILON))
 カメラキャリブレーションを実行する。
 
double cv::fisheye::stereoCalibrate (InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, OutputArray R, OutputArray T, int flags=CALIB_FIX_INTRINSIC, TermCriteria criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 100, DBL_EPSILON))
 これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは受け取る引数のみが異なる。
 
double cv::fisheye::stereoCalibrate (InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, OutputArray R, OutputArray T, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags=CALIB_FIX_INTRINSIC, TermCriteria criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 100, DBL_EPSILON))
 ステレオキャリブレーションを実行する。
 

関数詳解

◆ calibrate()

double cv::fisheye::calibrate ( InputArrayOfArrays objectPoints,
InputArrayOfArrays imagePoints,
const Size & image_size,
InputOutputArray K,
InputOutputArray D,
OutputArrayOfArrays rvecs,
OutputArrayOfArrays tvecs,
int flags = 0,
TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 100, DBL_EPSILON) )
Python:
cv.fisheye.calibrate(objectPoints, imagePoints, image_size, K, D[, rvecs[, tvecs[, flags[, criteria]]]]) -> retval, K, D, rvecs, tvecs

#include <opencv2/calib.hpp>

カメラキャリブレーションを実行する。

引数
objectPointsキャリブレーションパターン座標空間におけるキャリブレーションパターン点のベクトルのベクトル。
imagePointsキャリブレーションパターン点の投影のベクトルのベクトル。各 i について、imagePoints.size() と objectPoints.size()、および imagePoints[i].size() は objectPoints[i].size() と等しくなければならない。
image_sizeカメラ内部行列の初期化にのみ使用される画像のサイズ。
K出力される 3x3 浮動小数点のカメラ内部行列 \(\cameramatrix{A}\) 。cv::CALIB_USE_INTRINSIC_GUESS が指定されている場合、fx, fy, cx, cy の一部またはすべてを関数の呼び出し前に初期化しておく必要がある。
D出力される歪み係数のベクトル \(\distcoeffsfisheye\)。
rvecs各パターンビューに対して推定された回転ベクトル(Rodrigues を参照)の出力ベクトル。すなわち、各 k 番目の回転ベクトルは、対応する k 番目の並進ベクトル(次の出力引数の説明を参照)とともに、キャリブレーションパターンをモデル座標空間(オブジェクト点が指定される空間)からワールド座標空間へ、すなわち k 番目のパターンビューにおけるキャリブレーションパターンの実際の位置(k=0.. M -1)へと移す。
tvecs各パターンビューについて推定された並進ベクトルの出力ベクトル。
flags0、または以下の値の組み合わせを指定できる各種フラグ:
criteria反復最適化アルゴリズムの終了条件。

◆ stereoCalibrate() [1/2]

double cv::fisheye::stereoCalibrate ( InputArrayOfArrays objectPoints,
InputArrayOfArrays imagePoints1,
InputArrayOfArrays imagePoints2,
InputOutputArray K1,
InputOutputArray D1,
InputOutputArray K2,
InputOutputArray D2,
Size imageSize,
OutputArray R,
OutputArray T,
int flags = CALIB_FIX_INTRINSIC,
TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 100, DBL_EPSILON) )
Python:
cv.fisheye.stereoCalibrate(objectPoints, imagePoints1, imagePoints2, K1, D1, K2, D2, imageSize[, R[, T[, rvecs[, tvecs[, flags[, criteria]]]]]]) -> retval, K1, D1, K2, D2, R, T, rvecs, tvecs
cv.fisheye.stereoCalibrate(objectPoints, imagePoints1, imagePoints2, K1, D1, K2, D2, imageSize[, R[, T[, flags[, criteria]]]]) -> retval, K1, D1, K2, D2, R, T

#include <opencv2/calib.hpp>

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

◆ stereoCalibrate() [2/2]

double cv::fisheye::stereoCalibrate ( InputArrayOfArrays objectPoints,
InputArrayOfArrays imagePoints1,
InputArrayOfArrays imagePoints2,
InputOutputArray K1,
InputOutputArray D1,
InputOutputArray K2,
InputOutputArray D2,
Size imageSize,
OutputArray R,
OutputArray T,
OutputArrayOfArrays rvecs,
OutputArrayOfArrays tvecs,
int flags = CALIB_FIX_INTRINSIC,
TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 100, DBL_EPSILON) )
Python:
cv.fisheye.stereoCalibrate(objectPoints, imagePoints1, imagePoints2, K1, D1, K2, D2, imageSize[, R[, T[, rvecs[, tvecs[, flags[, criteria]]]]]]) -> retval, K1, D1, K2, D2, R, T, rvecs, tvecs
cv.fisheye.stereoCalibrate(objectPoints, imagePoints1, imagePoints2, K1, D1, K2, D2, imageSize[, R[, T[, flags[, criteria]]]]) -> retval, K1, D1, K2, D2, R, T

#include <opencv2/calib.hpp>

ステレオキャリブレーションを実行する。

引数
objectPointsキャリブレーションパターン点のベクトルのベクトル。
imagePoints11台目のカメラで観測された、キャリブレーションパターン点の投影のベクトルのベクトル。
imagePoints22台目のカメラで観測された、キャリブレーションパターン点の投影のベクトルのベクトル。
K1入出力の第1カメラ内部行列: \(\vecthreethree{f_x^{(j)}}{0}{c_x^{(j)}}{0}{f_y^{(j)}}{c_y^{(j)}}{0}{0}{1}\) 、 \(j = 0,\, 1\) 。cv::CALIB_USE_INTRINSIC_GUESScv::CALIB_FIX_INTRINSIC のいずれかが指定されている場合、行列要素の一部またはすべてを初期化しておく必要がある。
D1入出力される4要素の歪み係数のベクトル \(\distcoeffsfisheye\)。
K2入出力される2台目のカメラ内部行列。パラメータは K1 と同様である。
D22台目のカメラの入出力されるレンズ歪み係数。パラメータは D1 と同様である。
imageSizeカメラ内部行列の初期化のためだけに使われる画像のサイズ。
R1台目と2台目のカメラ座標系の間の出力される回転行列。
Tカメラの座標系の間の出力される並進ベクトル。
rvecsステレオペアの最初のカメラの座標系で各パターンビューに対して推定された回転ベクトル( Rodrigues )の出力ベクトル(例: std::vector<cv::Mat>)。より詳しくは、各i番目の回転ベクトルは、対応するi番目の並進ベクトル(次の出力パラメータの説明を参照)とともに、キャリブレーションパターンを物体座標空間(物体点が指定される空間)からステレオペアの最初のカメラのカメラ座標空間へと変換する。より技術的に言えば、i番目の回転ベクトルと並進ベクトルの組は、物体座標空間からステレオペアの最初のカメラのカメラ座標空間への基底変換を実行する。
tvecs各パターンビューについて推定された並進ベクトルの出力ベクトル。前の出力パラメータ ( rvecs ) の説明を参照。
flags0、または以下の値の組み合わせを指定できる各種フラグ:
  • cv::CALIB_FIX_INTRINSIC K1, K2 と D1, D2 を固定し、R, T 行列のみを推定する。
  • cv::CALIB_USE_INTRINSIC_GUESS K1, K2 に fx, fy, cx, cy の有効な初期値が含まれており、さらに最適化される。そうでない場合、(cx, cy) は最初に画像の中心に設定され(imageSize が使用される)、焦点距離は最小二乗法で計算される。
  • cv::CALIB_RECOMPUTE_EXTRINSIC 内部パラメータの最適化の各反復の後に外部パラメータが再計算される。
  • cv::CALIB_CHECK_COND 関数は条件数の妥当性をチェックする。
  • cv::CALIB_FIX_SKEW スキュー係数(alpha)はゼロに設定され、ゼロのまま保たれる。
  • cv::CALIB_FIX_K1,..., cv::CALIB_FIX_K4 選択された歪み係数はゼロに設定され、ゼロのまま保たれる。
criteria反復最適化アルゴリズムの終了条件。