![]() |
OpenCV 4.12.0
开源计算机视觉
|
| 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 相同)。 以下例程目前仅适用于正交情况。
| 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)
| 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)
| 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
| void cv::sfm::fundamentalFromProjections | ( | InputArray | P1, |
| InputArray | P2, | ||
| OutputArray | F ) |
#include <opencv2/sfm/fundamental.hpp>
从投影矩阵获取基本矩阵。
| P1 | 输入 3x4 第一个投影矩阵。 |
| P2 | 输入 3x4 第二个投影矩阵。 |
| F | 输出 3x3 基本矩阵。 |
| 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)
| 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 个解决方案的几何解释)。
| 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')
| void cv::sfm::normalizeFundamental | ( | InputArray | F, |
| OutputArray | F_normalized ) |
#include <opencv2/sfm/fundamental.hpp>
标准化基本矩阵。
| F | 输入 3x3 基本矩阵。 |
| F_normalized | 输出 3x3 归一化的基本矩阵。 |
默认情况下,将基本矩阵除以其 L2 范数。
| void cv::sfm::projectionsFromFundamental | ( | InputArray | F, |
| OutputArray | P1, | ||
| OutputArray | P2 ) |
#include <opencv2/sfm/fundamental.hpp>
从基本矩阵获取投影矩阵。
| F | 输入 3x3 基本矩阵。 |
| P1 | 输出 3x4 一个可能的投影矩阵。 |
| P2 | 输出 3x4 另一个可能的投影矩阵。 |
| 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}\)