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

詳細説明

関数

void cv::sfm::computeOrientation (InputArrayOfArrays x1, InputArrayOfArrays x2, OutputArray R, OutputArray t, double s)
 2つの3D点集合の間の絶対的または外部的な姿勢 (姿勢推定) を計算する。
 
void cv::sfm::essentialFromFundamental (InputArray F, InputArray K1, InputArray K2, OutputArray E)
 基礎行列とカメラ行列から基本行列 (Essential matrix) を求める。
 
void cv::sfm::essentialFromRt (InputArray R1, InputArray t1, InputArray R2, InputArray t2, OutputArray E)
 運動(R群とt群)から基本行列(Essential matrix)を求める。
 
void cv::sfm::fundamentalFromEssential (InputArray E, InputArray K1, InputArray K2, OutputArray F)
 基礎行列とカメラ行列から基本行列 (Essential matrix) を求める。
 
void cv::sfm::fundamentalFromProjections (InputArray P1, InputArray P2, OutputArray F)
 射影行列から基礎行列(Fundamental matrix)を求める。
 
void cv::sfm::motionFromEssential (InputArray E, OutputArrayOfArrays Rs, OutputArrayOfArrays ts)
 
int cv::sfm::motionFromEssentialChooseSolution (InputArrayOfArrays Rs, InputArrayOfArrays ts, InputArray K1, InputArray x1, InputArray K2, InputArray x2)
 
void cv::sfm::normalizedEightPointSolver (InputArray x1, InputArray x2, OutputArray F)
 2つの2D点データセット(画像座標空間)間の基礎行列を推定する。
 
void cv::sfm::normalizeFundamental (InputArray F, OutputArray F_normalized)
 基礎行列を正規化する。
 
void cv::sfm::projectionsFromFundamental (InputArray F, OutputArray P1, OutputArray P2)
 基礎行列から射影行列を求める。
 
void cv::sfm::relativeCameraMotion (InputArray R1, InputArray t1, InputArray R2, InputArray t2, OutputArray R, OutputArray t)
 2台のカメラ間の相対的なカメラ運動を計算する。
 

関数詳解

◆ computeOrientation()

void cv::sfm::computeOrientation ( InputArrayOfArrays x1,
InputArrayOfArrays x2,
OutputArray R,
OutputArray t,
double s )

#include <opencv2/sfm/fundamental.hpp>

2組の3D点間の絶対方位または外部方位(姿勢推定)を計算する。

引数
x1入力となる1つ目の 3xN または 2xN の点の配列。
x2入力となる2つ目の 3xN または 2xN の点の配列。
R計算された 3x3 の回転行列を出力する。
t計算された 3x1 の並進ベクトルを出力する。
s計算されたスケール係数を出力する。

xp=projection*(s*R*x+t) を満たす最適な変換を求める(姿勢推定、ePNPと同じ)。以下のルーチンは現時点では正射影の場合のみに対応する。

◆ essentialFromFundamental()

void cv::sfm::essentialFromFundamental ( InputArray F,
InputArray K1,
InputArray K2,
OutputArray E )

#include <opencv2/sfm/fundamental.hpp>

基礎行列とカメラ行列から基本行列を取得する。

引数
F入力となる 3x3 の基礎行列。
K1入力となる 3x3 の1つ目のカメラ行列 \(K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)。
K2入力となる 3x3 の2つ目のカメラ行列。パラメータは K1 と同様である。
E計算された 3x3 の基本行列を出力する。

参考文献: [120] 9.6 257ページ (式9.12)

◆ essentialFromRt()

void cv::sfm::essentialFromRt ( InputArray R1,
InputArray t1,
InputArray R2,
InputArray t2,
OutputArray E )

#include <opencv2/sfm/fundamental.hpp>

運動(R群とt群)から基本行列を取得する。

引数
R1入力となる 3x3 の1つ目のカメラ回転行列。
t1入力となる 3x1 の1つ目のカメラ並進ベクトル。
R2入力となる 3x3 の2つ目のカメラ回転行列。
t2入力となる 3x1 の2つ目のカメラ並進ベクトル。
E計算された 3x3 の基本行列を出力する。

参考文献: [120] 9.6 257ページ (式9.12)

◆ fundamentalFromEssential()

void cv::sfm::fundamentalFromEssential ( InputArray E,
InputArray K1,
InputArray K2,
OutputArray F )

#include <opencv2/sfm/fundamental.hpp>

基礎行列とカメラ行列から基本行列を取得する。

引数
E入力の3x3基本行列(essential matrix)。
K1入力となる 3x3 の1つ目のカメラ行列 \(K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)。
K2入力となる 3x3 の2つ目のカメラ行列。パラメータは K1 と同様である。
F出力の3x3基礎行列(fundamental matrix)。

参考文献: [120] 9.6 257ページ (式9.12) または http://ai.stanford.edu/~birch/projective/node20.html

◆ fundamentalFromProjections()

void cv::sfm::fundamentalFromProjections ( InputArray P1,
InputArray P2,
OutputArray F )

#include <opencv2/sfm/fundamental.hpp>

射影行列から基礎行列を取得する。

引数
P1入力の3x4の1つ目の射影行列。
P2入力の3x4の2つ目の射影行列。
F出力の3x3基礎行列(fundamental matrix)。

◆ motionFromEssential()

void cv::sfm::motionFromEssential ( InputArray E,
OutputArrayOfArrays Rs,
OutputArrayOfArrays ts )

#include <opencv2/sfm/fundamental.hpp>

基本行列から運動(R群とt群)を取得する。

引数
E入力の3x3基本行列(essential matrix)。
Rs出力の3x3回転行列のベクトル。
ts出力の3x1並進ベクトルのベクトル。

参考文献: [120] 9.6 259ページ (結果9.19)

◆ motionFromEssentialChooseSolution()

int cv::sfm::motionFromEssentialChooseSolution ( InputArrayOfArrays Rs,
InputArrayOfArrays ts,
InputArray K1,
InputArray x1,
InputArray K2,
InputArray x2 )

#include <opencv2/sfm/fundamental.hpp>

基本行列から得られる4つのとりうる運動解のうち1つを選択する。

引数
Rs入力の3x3回転行列のベクトル。
ts入力の3x1並進ベクトルのベクトル。
K1入力となる 3x3 の1つ目のカメラ行列 \(K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)。
x11つ目の2D点を含む入力の2x1ベクトル。
K2入力となる 3x3 の2つ目のカメラ行列。パラメータは K1 と同様である。
x22つ目の2D点を含む入力の2x1ベクトル。

対応点 x1–x2 の三角測量結果がカメラの前方にあることを確認して正しい解を決定する。正しい解のインデックスを返す。解がない場合は -1 を返す。

参考文献: [120] 9.6 259ページ (9.6.3 4つの解の幾何学的解釈) を参照。

◆ normalizedEightPointSolver()

void cv::sfm::normalizedEightPointSolver ( InputArray x1,
InputArray x2,
OutputArray F )

#include <opencv2/sfm/fundamental.hpp>

2つの2D点データセット(画像座標空間)間の基礎行列を推定する。

引数
x1ビュー1における2D点の入力2xN配列。
x2ビュー2における2D点の入力2xN配列。
F出力の3x3基礎行列(fundamental matrix)。

正規化8点法による基礎行列ソルバーを用いる。参考文献: [120] 11.2 281ページ (x1 = x, x2 = x')

◆ normalizeFundamental()

void cv::sfm::normalizeFundamental ( InputArray F,
OutputArray F_normalized )

#include <opencv2/sfm/fundamental.hpp>

基礎行列を正規化する。

引数
F入力となる 3x3 の基礎行列。
F_normalized出力の3x3正規化された基礎行列。

デフォルトでは基礎行列を L2 ノルムで除算する。

◆ projectionsFromFundamental()

void cv::sfm::projectionsFromFundamental ( InputArray F,
OutputArray P1,
OutputArray P2 )

#include <opencv2/sfm/fundamental.hpp>

基礎行列から射影行列を取得する。

引数
F入力となる 3x3 の基礎行列。
P1出力の3x4のとりうる1つの射影行列。
P2出力の3x4のとりうる別の射影行列。

◆ relativeCameraMotion()

void cv::sfm::relativeCameraMotion ( InputArray R1,
InputArray t1,
InputArray R2,
InputArray t2,
OutputArray R,
OutputArray t )

#include <opencv2/sfm/fundamental.hpp>

2台のカメラ間の相対的なカメラ運動を計算する。

引数
R1入力となる 3x3 の1つ目のカメラ回転行列。
t1入力となる 3x1 の1つ目のカメラ並進ベクトル。
R2入力となる 3x3 の2つ目のカメラ回転行列。
t2入力となる 3x1 の2つ目のカメラ並進ベクトル。
R出力の3x3相対回転行列。
t出力の3x1相対並進ベクトル。

2台のカメラの運動パラメータが与えられたとき、1台目を原点にあると仮定して2台目の運動パラメータを計算する。T1とT2がカメラの運動であるとき、計算される相対運動は \(T = T_2 T_1^{-1}\) である。