E = Kᵀ F K 的数学原理

一、为什么需要从 F 得到 E?

若两台相机的内参矩阵分别是

  • K1:左相机

  • K2​:右相机

则基础矩阵与本质矩阵关系为:

  • F(基础矩阵) 工作在 像素坐标系(image coordinates)

  • E(本质矩阵) 工作在 归一化相机坐标系(camera normalized coordinates)

两者的区别是:

像素坐标需要使用内参矩阵 K 才能转成真实的几何光线方向。

符号 含义 维度
(F) 基础矩阵(像素坐标下 epipolar 几何) 3×3
(E) 本质矩阵(相机归一化坐标系下 epipolar 几何) 3×3
(K) 相机内参矩阵 3×3
(x, x') 像素坐标(齐次) 3×1
(\tilde{x}, \tilde{x}') 归一化坐标(投影到相机坐标系) 3×1

二、核心思想:像素坐标与归一化坐标的关系

像素坐标:

三、E = [T]× R 为什么必须在归一化空间?

通过几何可以得:

这个公式成立的前提是:

  • x1,x 必须表示为 3D 相机坐标系下的方向向量

  • 而不是像素坐标

像素坐标要转换:

E = Kᵀ F K 的更几何化推导(直观图)

cpp 复制代码
像素点 x1  --K^{-1}-->   归一化点 x̂1   --极几何-->   x̂2  --K-->  像素点 x2

极线约束在两个世界中都应该成立:

cpp 复制代码
pixel:           x2ᵀ F x1 = 0
normalized:      x̂2ᵀ E x̂1 = 0

因为

cpp 复制代码
像素坐标 = K * 归一化坐标

四、MATLAB 数值验证

下面的代码会:

  1. 随机生成 R、T

  2. 构造真实的本质矩阵 Etrue = [T]×R

  3. 假设内参 K

  4. 计算 F = K^{-T} Etrue K^{-1}

  5. 再恢复 Eest = Kᵀ F K

  6. 验证 Eest 是否等于 Etrue(在尺度内)

cpp 复制代码
%% 随机生成 R
[U,~,V] = svd(randn(3,3));
R = U*V';
if det(R)<0, R(:,3) = -R(:,3); end

%% 随机平移 T
T = randn(3,1);
T = T / norm(T);
%============================================================
%% 叉乘矩阵
Tx = [0 -T(3) T(2);
      T(3) 0 -T(1);
     -T(2) T(1) 0];

%% 真实本质矩阵
E_true = Tx * R;
%============================================================
%% 相机内参  自己设置的
K = [1000 0 320;
     0 1000 240;
     0    0   1];
%============================================================
%% 根据 E_true 构造 F
F = inv(K)' * E_true * inv(K);

%% 再根据 F 恢复 E
E_est = K' * F * K;

%% 归一化以比较
E_true = E_true / norm(E_true);
E_est  = E_est  / norm(E_est);


disp('真实 E :');
disp(E_true);

disp('恢复 E = K'' F K :');
disp(E_est);

disp('误差 = ');
disp(E_est - E_true);

五、总结

矩阵 坐标系 几何意义
F 像素坐标 两幅图像的极线关系
E 归一化相机坐标 相机相对姿态(R、T)的真正规律
相关推荐
chao1898444 小时前
基于 SPEA2 的多目标优化算法 MATLAB 实现
开发语言·算法·matlab
沪漂阿龙4 小时前
AI大模型面试题:支持向量机是什么?间隔最大化、软间隔、核函数、LinearSVC 全面拆解
人工智能·算法·支持向量机
little~钰5 小时前
倍增算法和ST表
算法
知识领航员6 小时前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景
java·c语言·c++·人工智能·python·算法·github
薛定e的猫咪6 小时前
因果推理研究方向综述笔记
人工智能·笔记·深度学习·算法
如何原谅奋力过但无声7 小时前
【灵神高频面试题合集06-08】反转链表、快慢指针(环形链表/重排链表)、前后指针(删除链表/链表去重)
数据结构·python·算法·leetcode·链表
平行侠7 小时前
037插入排序 - 整理扑克牌的算法
数据结构·算法
ECT-OS-JiuHuaShan7 小时前
彻底定理化:从量子纠缠到量子代谢
数据库·人工智能·学习·算法·生活·量子计算
爱喝雪碧的可乐8 小时前
2026 腾讯广告算法大赛优秀方案启示:行为条件化多模态自回归生成推荐摘要
算法·数据挖掘·回归·推荐系统·推荐算法