• 【SLAM与多视图几何】【Fundamental Matrix】F矩阵代数推导详解


    核心图片详解

    在这里插入图片描述
    两个视角同时看到了三维空间点中的X 在两个视角中分别为二维点x、x’。e’ 认为是左边相机光心在右边的投影 l’ 可能是对极直线?不过名称不重要 重要的是e’ 和 x’ 均在直线 l’ 上

    代数推导

    已知三维点为X 三维点在相机二维平面的表示为x 三维点和它对应的二维点必存在对应关系 所以不难理解可以用以下的方式来表示:
    P X = x PX = x PX=x
    我们假设相机光心点为C 那么PC等于多少?C作为相机的光心 而P作为投影矩阵PC的投影当然会有一点特殊 这里认为PC=0也不奇怪。
    假设 P + P^+ P+为P的伪逆矩阵 所以有:
    X = P + x X = P^+x X=P+x
    即使用左边的二维点表示出了三维点的坐标 右边的投影矩阵我们设为P‘
    则用上式的三维点投影到右边的二维平面:
    x ′ = P ′ P + x x' = P'P^+x x=PP+x
    前面说到左边相机的光心坐标我们假设为C 那么C在右侧相机的投影我们可以得出:
    e ′ = P ′ C e' = P'C e=PC
    又因为 e’ x’ 在直线 l’ 上 所以根据点和线的基本关系式可以得出:
    l ′ = ( P ′ C ) × ( P ′ P + x ) l' = (P'C)×(P'P^+x) l=(PC)×(PP+x)
    然后我们把上式和上上式合在一起:
    l ′ = [ e ] × ( P ′ P + x ) l' = [e]_×(P'P^+x) l=[e]×(PP+x)
    其实合不合意义不大
    然后因为 x’ 在直线 l’ 上
    所以根据点和线的基本关系我们可以得出:
    x ′ T l ′ = 0 x'^Tl' = 0 xTl=0
    将上上式代入之前 其实就已经出现F矩阵了 F矩阵其实就是:
    F = [ e ] × ( P ′ P + ) = ( P ′ C ) × ( P ′ P + ) F = [e]_×(P'P^+) = (P'C)×(P'P^+) F=[e]×(PP+)=(PC)×(PP+)
    所以对于对极几何中的两个相机平面对应的点 x x’ 我们可以直接有如下结论:
    x ′ T F x = 0 x'^TFx = 0 xTFx=0

    原文精彩展示

    在这里插入图片描述

    F矩阵的推导过程

    在这里插入图片描述

    结论展示

    原文的例子

    在这里插入图片描述

    P 和 P‘ 涵盖了相机矩阵K和两个相机之间的位姿变换Rt 因为前一帧的相机是基准 所以R为单位阵 t为0 图中的0表示的是三维向量,C中的1为相机光心的齐次表示
    P中K右乘的矩阵的增广的部分其实是光心C的非齐次表示 因此是0 而 P’ 中同样的位置也是相机光心 C’ 的非齐次表示 C‘ 和 C 相差了一个t 因此也变得没那么奇怪了

  • 相关阅读:
    快速幂算法的实现
    HTML大学班级活动网页设计 、大学校园HTML实例网页代码 、本实例适合于初学HTML的同学
    python 替换字符串中 windows非法字符 到对应的 全角合法字符
    Android Kotlin Paging3 Flow完整教程
    postman做接口测试
    1397. 找到所有好字符串(kmp理解 + 数位dp)(好题!!!)
    深入了解“注意力”和“变形金刚” -第1部分
    不可变集合、Lambda表达式、Stream流
    RabbitMQ 面试题及答案整理,最新面试题
    一起Talk Android吧(第三百七十三回:多线程版Timer)
  • 原文地址:https://blog.csdn.net/weixin_45485946/article/details/125493895