OpenCV 4.5.3(日本語機械翻訳)
クラス | マクロ定義 | 列挙型 | 関数
Custom Calibration Pattern for 3D reconstruction

クラス

class cv::ccalib::CustomPattern
class cv::multicalib::MultiCameraCalibration
ピンホールカメラと全方位カメラに対応したマルチカメラキャリブレーション用のクラスです。全方位カメラのモデルについては、ccalibモジュール内のomnidir.hppを参照してください.最初に各カメラを個別にキャリブレーションした後、最適化のようなバンドル調整を行って外部パラメータを調整します。今のところ,キャリブレーションには "ランダム "パターンしかサポートしていませんが,詳細はccalibモジュールのrandomPattern.hppを参照してください.使用する画像は "cameraIdx-timestamp.*"という名前でなければなりません。同じタイムスタンプを持つ複数の画像は同じパターンで撮影されたことを意味します。[【詳解】(英語]
class cv::randpattern::RandomPatternCornerFinder
キャリブレーションに利用できる「ランダム」なパターンの特徴点と,それに対応するワールド座標の3次元を求めるクラスです.このクラスは、複数のカメラを使ったキャリブレーションにおいて、パターンが部分的に隠蔽されていたり、パターンの一部分しか観察できない場合に有効です。このパターンはRandomPatternGeneratorこのファイルで説明しているクラスで生成できます.[【詳解】(英語]
class cv::randpattern::RandomPatternGenerator

マクロ定義

#define HEAD   -1
#define INVALID   -2

列挙型

enum {
CALIB_USE_GUESS = 1 , CALIB_FIX_SKEW = 2 , CALIB_FIX_K1 = 4 , CALIB_FIX_K2 = 8 ,
CALIB_FIX_P1 = 16 , CALIB_FIX_P2 = 32 , CALIB_FIX_XI = 64 , CALIB_FIX_GAMMA = 128 ,
CALIB_FIX_CENTER = 256
}
enum { RECTIFY_PERSPECTIVE = 1 , RECTIFY_CYLINDRICAL = 2 , RECTIFY_LONGLATI = 3 , RECTIFY_STEREOGRAPHIC = 4 }
enum { XYZRGB = 1 , XYZ = 2 }

関数

CV_EXPORTS_W void cv::omnidir::projectPoints (InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, InputArray K, double xi, InputArray D, OutputArray jacobian=noArray())
CMeiのモデルを用いた全方位カメラのプロジェクトポイント[【詳解】(英語]
CV_EXPORTS void cv::omnidir::projectPoints (InputArray objectPoints, OutputArray imagePoints, const Affine3d &affine, InputArray K, double xi, InputArray D, OutputArray jacobian=noArray())
CV_EXPORTS_W void cv::omnidir::undistortPoints (InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray xi, InputArray R)
CMeiのモデルを用いた全方位カメラの2次元画像点の歪み補正[【詳解】(英語]
CV_EXPORTS_W void cv::omnidir::initUndistortRectifyMap (InputArray K, InputArray D, InputArray xi, InputArray R, InputArray P, const cv::Size &size, int m1type, OutputArray map1, OutputArray map2, int flags)
回転Rで変換された全方位カメラ画像に対して,歪み補正マップと平行化マップを計算します.cv::remap(). D が空の場合は,ゼロディストーションが利用され,R または P が空の場合は,単位行列が利用されます.[【詳解】(英語]
CV_EXPORTS_W void cv::omnidir::undistortImage (InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray xi, int flags, InputArray Knew=cv::noArray(), const Size &new_size=Size(), InputArray R=Mat::eye(3, 3, CV_64F))
全方位画像の透視画像への歪み補正[【詳解】(英語]
CV_EXPORTS_W double cv::omnidir::calibrate (InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, Size size, InputOutputArray K, InputOutputArray xi, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags, TermCriteria criteria, OutputArray idx=noArray())
全方位カメラのキャリブレーションを行います.デフォルトの出力深度は CV_64F です.[【詳解】(英語]
CV_EXPORTS_W double cv::omnidir::stereoCalibrate (InputOutputArrayOfArrays objectPoints, InputOutputArrayOfArrays imagePoints1, InputOutputArrayOfArrays imagePoints2, const Size &imageSize1, const Size &imageSize2, InputOutputArray K1, InputOutputArray xi1, InputOutputArray D1, InputOutputArray K2, InputOutputArray xi2, InputOutputArray D2, OutputArray rvec, OutputArray tvec, OutputArrayOfArrays rvecsL, OutputArrayOfArrays tvecsL, int flags, TermCriteria criteria, OutputArray idx=noArray())
全方位カメラモデルに対するステレオキャリブレーション.これは,2台のカメラの固有パラメータと,2台のカメラ間の外部パラメータを計算します.デフォルトの出力深度は CV_64F です.[【詳解】(英語]
CV_EXPORTS_W void cv::omnidir::stereoRectify (InputArray R, InputArray T, OutputArray R1, OutputArray R2)
全方位カメラモデルに対するステレオ平行化.これは,2つのカメラに対する平行化回転を計算します.[【詳解】(英語]
CV_EXPORTS_W void cv::omnidir::stereoReconstruct (InputArray image1, InputArray image2, InputArray K1, InputArray D1, InputArray xi1, InputArray K2, InputArray D2, InputArray xi2, InputArray R, InputArray T, int flag, int numDisparities, int SADWindowSize, OutputArray disparity, OutputArray image1Rec, OutputArray image2Rec, const Size &newSize=Size(), InputArray Knew=cv::noArray(), OutputArray pointCloud=cv::noArray(), int pointType=XYZRGB)
一組の画像からのステレオ3D再構成[【詳解】(英語]

詳解

関数詳解

calibrate()

CV_EXPORTS_W double cv::omnidir::calibrate ( InputArrayOfArrays objectPoints,
InputArrayOfArrays imagePoints,
Size size,
InputOutputArray K,
InputOutputArray xi,
InputOutputArray D,
OutputArrayOfArrays rvecs,
OutputArrayOfArrays tvecs,
int flags,
TermCriteria criteria,
OutputArray idx = noArray()
)

全方位カメラのキャリブレーションを行います.デフォルトの出力深度は CV_64F です.

引数
objectPoints ワールド(パターン)座標における Vec3f 個のオブジェクトポイントのベクトル.のベクトルにすることもできます.Matのベクトルで,サイズは 1xN/Nx1,型は CV_32FC3 です.深さが 64_F のデータでも構いません.
imagePoints objectPoints に対応する Vec2f 個の画像点のベクトル.objectPoints と同じサイズ,同じタイプである必要があります.
size キャリブレーション画像の画像サイズです。
K キャリブレーションされたカメラマトリックスを出力。
xi CMeiのモデルのパラメータxiを出力
D 歪みパラメータの出力$(k_1, k_2, p_1, p_2)$
rvecs 各校正画像の回転量の出力
tvecs 各キャリブレーション画像に対する出力された平行移動
flags キャリブレーションを制御するフラグ
criteria 最適化の終了基準
idx 初期化を通過した画像のうち,実際にキャリブレーションで使用される画像のインデックス.そのため、rvecs のサイズは idx.total() と同じです。

initUndistortRectifyMap()

CV_EXPORTS_W void cv::omnidir::initUndistortRectifyMap ( InputArray K,
InputArray D,
InputArray xi,
InputArray R,
InputArray P,
const cv::Size & size,
int m1type,
OutputArray map1,
OutputArray map2,
int flags
)

回転Rで変換された全方位カメラ画像に対して,歪み補正マップと平行化マップを計算します.cv::remap(). D が空の場合は,ゼロディストーションが利用され,R または P が空の場合は,単位行列が利用されます.

引数
K カメラ行列$K = \vecthreethree{f_x}{s}{c_x}{0}{f_y}{c_y}{0}{0}{_1}$深度が CV_32F または CV_64F の場合
D 入力 歪み係数のベクトル$(k_1, k_2, p_1, p_2)$深度が CV_32F または CV_64F の場合
xi CMeiのモデルのパラメータ xi.
R オリジナル空間とオブジェクト空間の間の回転変換:3x3 1チャンネル,またはベクトル.3x1/1x3, 深さが CV_32F または CV_64F の場合.
P 新しいカメラ行列(3x3),または新しい投影行列(3x4).
size 歪みのない画像サイズ.
m1type 最初に出力されるマップの種類は, CV_32FC1 または CV_16SC2 です.参照convertMaps()を参照してください。
map1 第1の出力マップ.
map2 2番目の出力マップ.
flags フラグは,平行化の種類を示し, RECTIFY_PERSPECTIVE, RECTIFY_CYLINDRICAL, RECTIFY_LONGLATI, RECTIFY_STEREOGRAPHIC がサポートされます.

projectPoints() [1/2]

CV_EXPORTS void cv::omnidir::projectPoints ( InputArray objectPoints,
OutputArray imagePoints,
const Affine3d & affine,
InputArray K,
double xi,
InputArray D,
OutputArray jacobian = noArray()
)

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

projectPoints() [2/2]

CV_EXPORTS_W void cv::omnidir::projectPoints ( InputArray objectPoints,
OutputArray imagePoints,
InputArray rvec,
InputArray tvec,
InputArray K,
double xi,
InputArray D,
OutputArray jacobian = noArray()
)

CMeiのモデルを用いた全方位カメラのプロジェクトポイント

このモジュールはOpenCVのGSoC2015プロジェクトとして採択されたもので、Baisheng Lai氏がオーサリング、Bo Li氏がメンターを務めました。

引数
objectPoints 世界座標の物体点,Vec3fのベクトルまたはMatの1xN/Nx1 3chのCV_32F型で,Nは点の数です.64F でも構いません.
imagePoints 画像点の出力配列.Vec2f のベクトル,あるいは CV_32F 型の 1xN/Nx1 2 チャンネルのベクトル.64F でも構いません.
rvec ワールド座標とカメラ座標の間の回転ベクトル,つまり om.
tvec パターン座標とカメラ座標の間の並進ベクトル
K カメラ行列$K = \vecthreethree{f_x}{s}{c_x}{0}{f_y}{c_y}{0}{0}{_1}$.
D 入力 歪み係数のベクトル$(k_1, k_2, p_1, p_2)$.
xi CMeiのモデルのパラメータ xi.
jacobian オプションで出力される 2Nx16 の CV_64F 型のヤコビ行列は,以下のパラメータに対する画像ピクセル点の導関数を含みます$om, T, f_x, f_y, s, c_x, c_y, xi, k_1, k_2, p_1, p_2$. この行列は,最適化によるキャリブレーションの際に利用されます.

この関数は,オブジェクトのワールド座標の3次元点を,内部パラメータと外部パラメータで指定された画像ピクセルに投影します.また,オプションで副産物を計算します.それは,内部および外部パラメータに対する画像ピクセル点の導関数を含むヤコビ行列です.

stereoCalibrate()

CV_EXPORTS_W double cv::omnidir::stereoCalibrate ( InputOutputArrayOfArrays objectPoints,
InputOutputArrayOfArrays imagePoints1,
InputOutputArrayOfArrays imagePoints2,
const Size & imageSize1,
const Size & imageSize2,
InputOutputArray K1,
InputOutputArray xi1,
InputOutputArray D1,
InputOutputArray K2,
InputOutputArray xi2,
InputOutputArray D2,
OutputArray rvec,
OutputArray tvec,
OutputArrayOfArrays rvecsL,
OutputArrayOfArrays tvecsL,
int flags,
TermCriteria criteria,
OutputArray idx = noArray()
)

全方位カメラモデルに対するステレオキャリブレーション.これは,2台のカメラの固有パラメータと,2台のカメラ間の外部パラメータを計算します.デフォルトの出力深度は CV_64F です.

引数
objectPoints ワールド(パターン)座標におけるオブジェクトの点.その型は vector<vector<Vec3f> > です.のベクトルにすることもできます.Matのベクトルで,サイズは 1xN/Nx1,型は CV_32FC3 です.深さが 64_F のデータでも構いません.
imagePoints1 タイプが vector<vector<Vec2f> > である,1番目のカメラの対応する画像点.objectPoints と同じサイズ,同じ型でなければなりません.
imagePoints2 2番目のカメラの対応する画像ポイント.タイプは vector<vector<Vec2f> >.objectPointsと同じサイズ、同じタイプである必要があります。
imageSize1 1台目のカメラのキャリブレーション画像の画像サイズ.
imageSize2 2台目のカメラのキャリブレーション画像の画像サイズ.
K1 第1カメラの出力カメラ行列.
xi1 Meiモデルの第1カメラ用出力パラメータxi
D1 歪みパラメータの出力$(k_1, k_2, p_1, p_2)$1台目のカメラの
K2 第1カメラの出力カメラ行列.
xi2 第2カメラに対するCMeiモデルの出力パラメータxi
D2 歪みパラメータの出力$(k_1, k_2, p_1, p_2)$第2カメラ用
rvec 第1カメラと第2カメラ間の回転を出力
tvec 第1カメラと第2カメラ間の移動量の出力
rvecsL 第1カメラの各画像に対する回転の出力
tvecsL 第1カメラの各画像に対する並進の出力
flags stereoCalibrate を制御するフラグ
criteria 最適化の終了基準
idx キャリブレーションに実際に使用される,初期化を通過した画像ペアのインデックス.そのため,rvecs のサイズは idx.total() と同じです.@

stereoReconstruct()

CV_EXPORTS_W void cv::omnidir::stereoReconstruct ( InputArray image1,
InputArray image2,
InputArray K1,
InputArray D1,
InputArray xi1,
InputArray K2,
InputArray D2,
InputArray xi2,
InputArray R,
InputArray T,
int flag,
int numDisparities,
int SADWindowSize,
OutputArray disparity,
OutputArray image1Rec,
OutputArray image2Rec,
const Size & newSize = Size(),
InputArray Knew = cv::noArray(),
OutputArray pointCloud = cv::noArray(),
int pointType = XYZRGB
)

一組の画像からのステレオ3D再構成

引数
image1 第1の入力画像
image2 2番目の入力画像
K1 第1カメラの入力カメラ行列
D1 入力歪みパラメータ$(k_1, k_2, p_1, p_2)$1台目のカメラの
xi1 CMeiモデルの第1カメラの入力パラメータxi
K2 第2カメラの入力カメラマトリクス
D2 入力歪みパラメータ$(k_1, k_2, p_1, p_2)$第2カメラ用
xi2 CMeiのモデルにおける第2カメラの入力パラメータxi
R 第1カメラと第2カメラの間の回転
T 第1カメラと第2カメラ間の移動
flag 整形タイプのフラグ,RECTIFY_PERSPECTIVE または RECTIFY_LONGLATI
numDisparities パラメータ「numDisparities」のStereoSGBMを参照してください。StereoSGBMを参照してください。
SADWindowSize のパラメータ 'SADWindowSize' を参照してください.StereoSGBMを参照してください。StereoSGBMを参照してください。
disparity ステレオマッチングで生成された視差マップ
image1Rec 1枚目の画像を補正した画像
image2Rec 2枚目の画像の平板化画像
newSize 矩形化された画像の画像サイズ, omnidir::undistortImage を参照してください.
Knew 矩形化された画像の新しいカメラ行列, omnidir::undistortImage を参照してください.
pointCloud 3次元再構成の点群,タイプは CV_64FC3.
pointType 点群の種類は,XYZRGB または XYZ です.

stereoRectify()

CV_EXPORTS_W void cv::omnidir::stereoRectify ( InputArray R,
InputArray T,
OutputArray R1,
OutputArray R2
)

全方位カメラモデルに対するステレオ平行化.これは,2つのカメラに対する平行化回転を計算します.

引数
R 第1カメラと第2カメラの間の回転
T 第1カメラと第2カメラ間の移動
R1 1台目のカメラに対する3x3の回転行列を出力.
R2 2台目のカメラに対する3x3回転行列を出力

undistortImage()

CV_EXPORTS_W void cv::omnidir::undistortImage ( InputArray distorted,
OutputArray undistorted,
InputArray K,
InputArray D,
InputArray xi,
int flags,
InputArray Knew = cv::noArray(),
const Size & new_size = Size(),
InputArray R = Mat::eye(3, 3, CV_64F)
)

全方位画像の透視画像への歪み補正

引数
distorted 入力された全方位画像。
undistorted 出力される歪んでいない画像
K カメラ行列$K = \vecthreethree{f_x}{s}{c_x}{0}{f_y}{c_y}{0}{0}{_1}$.
D 入力 歪み係数のベクトル$(k_1, k_2, p_1, p_2)$.
xi CMei のモデルのパラメータ xi.
flags 整形の種類を示すフラグ,RECTIFY_PERSPECTIVE, RECTIFY_CYLINDRICAL, RECTIFY_LONGLATI, RECTIFY_STEREOGRAPHIC.
Knew 歪んだ画像のカメラ行列.割り当てられていない場合は,単にKとなります.
new_size 新しい画像のサイズ.デフォルトでは,歪んだ画像のサイズになります.
R 入力画像と出力画像の間の回転行列.デフォルトでは,単位行列です.

undistortPoints()

CV_EXPORTS_W void cv::omnidir::undistortPoints ( InputArray distorted,
OutputArray undistorted,
InputArray K,
InputArray D,
InputArray xi,
InputArray R
)

CMeiのモデルを用いた全方位カメラの2次元画像点の歪み補正

引数
distorted 歪んだ画像点の配列,Vec2f または 1xN/Nx1 の2チャンネルのベクトル.MatCV_32F型,64F深度でも可.
K カメラ行列$K = \vecthreethree{f_x}{s}{c_x}{0}{f_y}{c_y}{0}{0}{_1}$.
D 歪み係数$(k_1, k_2, p_1, p_2)$.
xi CMeiのモデルのパラメータ xi.
R 元画像と物体空間の間の回転トレインフォーム:3x3 1チャンネル,またはベクトル.3x1/1x3 の 1 チャンネル,または 1x1 の 3 チャンネル.
undistorted 正規化されたオブジェクトポイントの配列,Vec2f/Vec2d のベクトル,または 1xN/Nx1 の 2chMat同じ深さの歪んだ点を持ちます.