OpenCV  4.10.0
开源计算机视觉
加载中...
搜索中...
无匹配
函数

详细描述

函数

void cv::sfm::computeOrientation (InputArrayOfArrays x1, InputArrayOfArrays x2, OutputArray R, OutputArray t, double s)
 计算两组 3D 点之间的绝对或外部方向(姿态估计)。
 
void cv::sfm::essentialFromFundamental (InputArray F, InputArray K1, InputArray K2, OutputArray E)
 从基础矩阵和相机矩阵获取基本矩阵。
 
void cv::sfm::essentialFromRt (InputArray R1, InputArray t1, InputArray R2, InputArray t2, OutputArray E)
 从运动(R 和 t)获取基本矩阵。
 
void cv::sfm::fundamentalFromEssential (InputArray E, InputArray K1, InputArray K2, OutputArray F)
 从基础矩阵和相机矩阵获取基本矩阵。
 
void cv::sfm::fundamentalFromProjections (InputArray P1, InputArray P2, OutputArray F)
 从投影矩阵获取基础矩阵。
 
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)
 估计两组 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)
 计算两个相机之间的相对相机运动。
 

函数文档

◆ computeOrientation()

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

#include <opencv2/sfm/fundamental.hpp>

计算两组 3D 点之间的绝对或外部方向(姿态估计)。

参数
x1输入第一个 3xN 或 2xN 点数组。
x2输入第二个 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 第一个相机矩阵 \(K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)。
K2输入 3x3 第二个相机矩阵。参数与 K1 相似。
E输出 3x3 基本矩阵。

参考:[117] 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 第一个相机旋转矩阵。
t1输入 3x1 第一个相机平移向量。
R2输入 3x3 第二个相机旋转矩阵。
t2输入 3x1 第二个相机平移向量。
E输出 3x3 基本矩阵。

参考:[117] 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 基本矩阵。
K1输入 3x3 第一个相机矩阵 \(K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)。
K2输入 3x3 第二个相机矩阵。参数与 K1 相似。
F输出 3x3 基础矩阵。

参考:[117] 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 第一个投影矩阵。
P2输入 3x4 第二个投影矩阵。
F输出 3x3 基础矩阵。

◆ motionFromEssential()

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

#include <opencv2/sfm/fundamental.hpp>

从基本矩阵获取运动(R 和 t)。

参数
E输入 3x3 基本矩阵。
Rs输出 3x3 旋转矩阵向量。
ts输出 3x1 平移向量向量。

参考:[117] 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>

从基本矩阵中选择四种可能的运动解之一。

参数
Rs输入 3x3 旋转矩阵向量。
ts输入 3x1 平移向量向量。
K1输入 3x3 第一个相机矩阵 \(K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)。
x1输入 2x1 向量,包含第一个 2D 点。
K2输入 3x3 第二个相机矩阵。参数与 K1 相似。
x2输入 2x1 向量,包含第二个 2D 点。

通过检查匹配 x1-x2 的三角测量结果是否位于相机前方,来确定正确的解。返回正确解的索引,如果无解则返回 -1。

参考:参见 [117] 9.6 页 259(9.6.3 四个解的几何解释)。

◆ normalizedEightPointSolver()

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

#include <opencv2/sfm/fundamental.hpp>

估计两组 2D 点(图像坐标空间)之间的基础矩阵。

参数
x1输入 2xN 数组,包含视图 1 中的 2D 点。
x2输入 2xN 数组,包含视图 2 中的 2D 点。
F输出 3x3 基础矩阵。

使用归一化的 8 点基础矩阵求解器。参考:[117] 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 一个可能的投影矩阵。
P2输出 3x4 另一个可能的投影矩阵。

◆ relativeCameraMotion()

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

#include <opencv2/sfm/fundamental.hpp>

计算两个相机之间的相对相机运动。

参数
R1输入 3x3 第一个相机旋转矩阵。
t1输入 3x1 第一个相机平移向量。
R2输入 3x3 第二个相机旋转矩阵。
t2输入 3x1 第二个相机平移向量。
R输出 3x3 相对旋转矩阵。
t输出 3x1 相对平移向量。

给定两个相机的运动参数,计算第二个相机的运动参数,假设第一个相机位于原点。如果 T1 和 T2 是相机运动,则计算出的相对运动为 \(T = T_2 T_1^{-1}\)