OpenCV 4.12.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 本质矩阵。

参考:[119] 9.6 页 257 (公式 9.12)

◆ essentialFromRt()

void cv::sfm::essentialFromRt ( InputArray 一个可能的旋转矩阵。,
InputArray t1,
InputArray 另一个可能的旋转矩阵。,
InputArray t2,
OutputArray E )

#include <opencv2/sfm/fundamental.hpp>

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

参数
一个可能的旋转矩阵。输入 3x3 第一个相机旋转矩阵。
t1输入 3x1 第一个相机平移向量。
另一个可能的旋转矩阵。输入 3x3 第二个相机旋转矩阵。
t2输入 3x1 第二个相机平移向量。
E输出 3x3 本质矩阵。

参考:[119] 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 基本矩阵。

参考:[119] 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 平移向量的向量。

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

参考:参见 [119] 9.6 页 259 (9.6.3 4 个解决方案的几何解释)。

◆ normalizedEightPointSolver()

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

#include <opencv2/sfm/fundamental.hpp>

估计两个 2D 点数据集(图像坐标空间)之间的基本矩阵。

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

使用归一化的 8 点基本矩阵求解器。 参考:[119] 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 一个可能的旋转矩阵。,
InputArray t1,
InputArray 另一个可能的旋转矩阵。,
InputArray t2,
OutputArray R,
OutputArray t )

#include <opencv2/sfm/fundamental.hpp>

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

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

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