【SLAM与多视图几何】【Fundamental Matrix】F矩阵代数推导详解
核心图片详解
两个视角同时看到了三维空间点中的X 在两个视角中分别为二维点x、x'。e' 认为是左边相机光心在右边的投影 l' 可能是对极直线?不过名称不重要 重要的是e' 和 x' 均在直线 l' 上
代数推导
已知三维点为X 三维点在相机二维平面的表示为x 三维点和它对应的二维点必存在对应关系 所以不难理解可以用以下的方式来表示:
\[PX = x
\]
我们假设相机光心点为C 那么PC等于多少?C作为相机的光心 而P作为投影矩阵PC的投影当然会有一点特殊 这里认为PC=0也不奇怪。
假设\(P^+\)为P的伪逆矩阵 所以有:
\[X = P^+x
\]
即使用左边的二维点表示出了三维点的坐标 右边的投影矩阵我们设为P‘
则用上式的三维点投影到右边的二维平面:
\[x' = P'P^+x
\]
前面说到左边相机的光心坐标我们假设为C 那么C在右侧相机的投影我们可以得出:
\[e' = P'C
\]
又因为 e’ x' 在直线 l' 上 所以根据点和线的基本关系式可以得出:
\[l' = (P'C)×(P'P^+x)
\]
然后我们把上式和上上式合在一起:
\[l' = [e]_×(P'P^+x)
\]
其实合不合意义不大
然后因为 x' 在直线 l' 上
所以根据点和线的基本关系我们可以得出:
\[x'^Tl' = 0
\]
将上上式代入之前 其实就已经出现F矩阵了 F矩阵其实就是:
\[F = [e]_×(P'P^+) = (P'C)×(P'P^+)
\]
所以对于对极几何中的两个相机平面对应的点 x x' 我们可以直接有如下结论:
\[x'^TFx = 0
\]
原文精彩展示
F矩阵的推导过程
结论展示
原文的例子
P 和 P‘ 涵盖了相机矩阵K和两个相机之间的位姿变换Rt 因为前一帧的相机是基准 所以R为单位阵 t为0 图中的0表示的是三维向量,C中的1为相机光心的齐次表示
P中K右乘的矩阵的增广的部分其实是光心C的非齐次表示 因此是0 而 P' 中同样的位置也是相机光心 C’ 的非齐次表示 C‘ 和 C 相差了一个t 因此也变得没那么奇怪了