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)的真正规律
相关推荐
圣光SG4 小时前
Java操作题练习(七)
java·开发语言·算法
Cx330_FCQ6 小时前
Tmux使用
服务器·git·算法
拳里剑气7 小时前
C++算法:多源BFS
c++·算法·宽度优先·多源bfs
ysa0510308 小时前
【板子】短序列dp(换成维护更小常数维度的dp)
c++·笔记·算法·板子
shwill1238 小时前
PID 算法(三)--- 增量 PID ↔ 单神经元 PID 等价映射
linux·算法
wabs6669 小时前
关于图论【卡码网110.字符串迁移的思考】
数据结构·算法·图论
hanlin039 小时前
刷题笔记:力扣第242、349题(哈希表)
笔记·算法·leetcode
浮沉98710 小时前
二分查找算法例题(二)
算法
only-qi11 小时前
大模型Agent面试攻略:落地工程痛点、评估体系与Agentic RAG核心精讲
人工智能·算法·面试·职场和发展·langchain·rag
Gauss松鼠会12 小时前
【GaussDB】GaussDB锁阻塞源头查询
java·开发语言·前端·数据库·算法·gaussdb·经验总结