- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
基于附加信息过滤单应矩阵分解。
cv::filterHomographyDecompByVisibleRefpoints 是 OpenCV 库中的一个函数,用于过滤由 decomposeHomographyMat 函数分解得到的可能解。它通过检查参考点在变换前后的可见性来确定哪些解是合理的。这对于处理相机运动和场景结构的估计特别有用。
该函数通过对给定的参考点进行可见性检查,过滤掉那些会导致不合理的场景解释的解。具体来说,它会检查变换后参考点是否仍然位于图像平面内,并且根据旋转和平移方向判断这些点是否能保持可见。这有助于排除由于错误假设或异常值导致的不合理解。
函数原型
void cv::filterHomographyDecompByVisibleRefpoints
(
InputArrayOfArrays rotations,
InputArrayOfArrays normals,
InputArray beforePoints,
InputArray afterPoints,
OutputArray possibleSolutions,
InputArray pointsMask = noArray()
)
参数
- 参数rotations 旋转矩阵的向量。
- 参数normals 平面法向量矩阵的向量。
- 参数beforePoints 单应矩阵应用前的(校正后的)可见参考点向量。
- 参数afterPoints 单应矩阵应用后的(校正后的)可见参考点向量。
- 参数possibleSolutions 过滤后表示可行解集的int索引向量。
- 参数pointsMask 可选的 Mat/Vector,8u 类型,由 findHomography 函数给出的内点掩码。
该函数旨在根据附加信息过滤 decomposeHomographyMat
的输出,如文献 176中所述。方法概要:decomposeHomographyMat
函数返回2个唯一解及其“相反”解,总共4个解。如果我们能够访问单应矩阵变换前后在相机视图中可见的点集,则可以通过验证哪些单应性与所有可见参考点位于相机前方一致来确定哪些是真正的潜在解,哪些是相反解。输入保持不变;过滤后的解集作为现有解集的索引返回。
代码示例
#include <iostream>
#include <opencv2/opencv.hpp>
#include <vector>
using namespace cv