首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基矩阵投影矩阵

基矩阵投影矩阵
EN

Stack Overflow用户
提问于 2013-08-02 14:05:51
回答 2查看 8.8K关注 0票数 3

我得到了两个摄像机之间的基本矩阵。我还把它们的内部参数放在一个3 X 3矩阵中,这是我早些时候通过棋盘得到的。利用基本矩阵,得到了P1P2

P1 = [I | 0]P2 = [ [e']x * F | e']

这些投影矩阵在获得精确的3D位置方面并不真正有用。因为我有内部参数K1K2,所以我将P1P2更改为

P1 = K1 * [I | 0]P2 = K2 * [ [e']x * F | e']

  • 这是获得真实投影矩阵的正确方法吗?它给出了三维世界和图像之间的实际关系?
  • 如果没有,请帮助我理解正确的方式和哪里我做错了。
  • 如果这是正确的方法,我如何验证这些矩阵?
EN

回答 2

Stack Overflow用户

发布于 2013-11-14 22:06:23

一本好的参考书是Hartley和Zisserman的“计算机视觉中的多视图几何”。首先,你的P公式是错误的。如果你想要里面有K的公式,那就是

代码语言:javascript
复制
P = K * [R | t]

代码语言:javascript
复制
P = [ [e']x * F | e']

但不是两者兼而有之。

如果你从8点算法中计算F,那么你只能恢复投影几何,直到三维的同形(即4x4变换)。

要升级到欧氏空间,有两种可能性,都是从计算基本矩阵开始的。

第一种可能性是从F: e=转置(K2)*F*K1中计算本质矩阵。

第二种可能性是直接估计这两种观点的基本矩阵:

  • 通过对每幅图像(“归一化图像坐标”)与K的逆相乘使你的2D点规范化
  • 在这些归一化点上应用(与F相同的)8点算法
  • 通过SVD分解和强迫对角线值,证明了本质矩阵的2个奇异值等于1,最后为0。

一旦你得到了基本矩阵,我们就可以用这种形式来计算投影矩阵。

代码语言:javascript
复制
P = K * [R | t]

由于E的SVD元素(参考前面提到的书),可以找到r和t。然而,您将有4种可能性。它们中只有一个在两个摄像机前面突出点,所以你应该测试一个点(如果你确定的话),以消除4点之间的模糊性。在这种情况下,你将能够把相机和它的方向(投影的R和t)放置在你的3D场景中。

不太明显,确实.

票数 15
EN

Stack Overflow用户

发布于 2021-12-03 13:38:21

只是遇到了这个问题,想要给出一个更直接的答案。

P1 = [I, 0]是你的第一个投影矩阵但它应该是P1 = K1 * [I, 0]时,那么你的“世界”就会被4x4矩阵M = [K1, 0; 0, 1]扭曲。世界上的任何一点X都投射到x1 = P1 * X = (P1 * M) * (M^-1 * X) = P1' * X',其中X'现在是“未扭曲世界”中的点(请注意,X = M * X'又是“扭曲世界”中的点),而P1' = P1 * M = [I, 0] * [K1, 0; 0, 1] = K1 * [I, 0]是非扭曲世界中的投影矩阵。

类似地,P2' = P1 * M是非扭曲世界中的投影矩阵,具有形式P2' = [ [e']x * F | e'] * [K1, 0; 0, 1] = [ [e']x * F * K1 | e']

请注意,P2 = [ [e']x * F | e']只是一个可能的投影矩阵,但是在一般情况下,对于一些实s和一个3向量v,它的形式是P2 = [ [e']x * F + e' * v^T | s * e']。进一步注意,如果您想为某些旋转矩阵P2' ~ K2 * [R, t]找到一个投影矩阵,最好使用基于Damien概述的基本矩阵并在Hartley&Zisserman(2.Ed) Sec中描述的算法。9.6.2.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18018924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档