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

参考文献:[116] 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 本质矩阵。

参考文献:[116] 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 基础矩阵。

参考文献:[116] 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 平移向量。

参考文献:[116] 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 向量,包含第一个二维点。
K2输入 3x3 第二个相机矩阵。参数与 K1 类似。
x2输入 2x1 向量,包含第二个二维点。

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

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

◆ normalizedEightPointSolver()

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

#include <opencv2/sfm/fundamental.hpp>

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

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

使用归一化八点法基本矩阵求解器。参考文献:[116] 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}\)