欧式结构的恢复
基础矩阵进行欧式恢复
将M1设为世界坐标,已知其他相机相对M1的R T矩阵,通过R T矩阵和M1的到其他的相机坐标系就是所谓的运动。
这是一个反对称矩阵的结论。
WT=W-1
—————————————————————————————————————————————
备注:
从上图可以知道
- W,U,R全部都是正定的因此VT=WUTR是正确的
- E是一个奇异值为(k,k,0)的矩阵,在不考虑尺度的情况下它的奇异值是(1,1,0)
—————————————————————————————————————————————
这里面已知R的行列式为1,因此R是正定矩阵(当然也是正交矩阵),上述方法不能保证R是正定的。由于当UWVT为负定时它的行列式为负,当UWVT为正定时它的行列式为正。因此乘完行列式后就能保证R是正定的。
————————————————————————————————————————————
备注:
A负定,则-A正定,则|-A|>0,所以[(-1)n]|A|>0这里面n=3因此负定的行列式一定是负的
————————————————————————————————————————————
上述证明参考:
本质矩阵的几何意义及其性质和分解 - 知乎 (zhihu.com) *主要*
—————————————————————————————————————————————
备注:
旋转矩阵的伴随性:
证明中的U是一个正交矩阵可以看成旋转矩阵
参考:
证明:
参考:
(103条消息) 旋转矩阵是正交矩阵与伴随性质的证明_skycrygg的博客-CSDN博客
—————————————————————————————————————————————
z坐标为正代表物点在相机前面
旋转平移是因为我们以一个相机坐标系作为世界坐标系,因此和真实的有偏差
缩放是因为我们本身的E,F和真实的E,F相差一个比例系数
单应矩阵进行欧式恢复
H求解RT的方法:
- Faugeras SVD-based decomposition(orb_slam)
- Zhang SVD-based decomposition
- Analytical decomposition(opencv)
仿射结构的恢复
由于场景深度小于其与相机的距离,因此可以认为场景的景深为0(也就是物体上所有点都处于同一平面上),因为可以认为所有点到相机的距离相等这里设为z0
本人猜测:在像素点数据中心化和世界坐标原点当成3d质心时,直接将A当作运动了而没考虑b
注意这里面一旦有一个点无法被相机观测得到(比如x11,第一个点没有被第一个相加观测得到)就会造成测量不精准
从上图可以M和S的求解不唯一
H原本有9个未知,但是我们不关心尺度,因此都除以第8个后,就是8个未知量了
- 没有数据中心化,并且没有将世界坐标的原点取在3D质心的情况下(否则只剩下A了),一个相机的投影矩阵有8个未知数。
- n个点每个点两个方程,m张图片(m台相机),因此是2*m*n个方程
- 只有2*m*n>=8m+3n-8(歧义是求不出来的)才能解出方程,这是设计系统时要满足的原则,比如我有10个相机(m=10),求出来n>=4.2,因此要选5对点以上
透视结构恢复
- 2*m*n:n个点每个点两个方程,m张图片(m台相机),因此是2*m*n个方程
- 11:5个内参,6个外参
- 15:4*4,这里我们还是不关心尺度,因此所有元素都可以除以第16个元素,使得第16个元素为1
代数方法
第一个相机可以看成规范化摄像机
注意:x,x',X,X*都是齐次向量
求出的M2是真实的M2乘以一个矩阵H-1得到的(我们把它即为H-11,紧接着我们求M3的时候得到的H2是可以将M2*H-11变成[I0]的H2,这样H1会对H2产生影响,接下来H1和H2都会对H3产生影响,等等等这就造成了误差的累积
- 首先通过特征提取提取出图像上的像素点定位精度为亚像素级(实际上也受探测尺度影响,探测的尺度越大,定位精度相对更低),然后假设它所对应的三维点的世界坐标为Xj(j为第j个三维点),同时假设它的投影矩阵为Mi(i为第i个图像),然后求像素点,这里假设为xij和MiXj的距离。将所有距离加和,使用LM算法对加和的结果进行优化以求出最佳的Mi和Xj
- 其中,D代表真实值和重构点的距离,如果一个点没有被一个相机观测得到就不用去找它真实的像点也就不用参与加和,也不会影响其他项的加和。
PnP(P3P适合于特征点少的情况,不大常用,常用的方法使用EPnP和UPnP)
对上图做出解释:
。
<OA(->),OB(->)>和<Oa(->),Ob(->)>是一个角
步骤2的解释:
以AB为例,A和B的世界坐标已知,则两者的距离就是AB的长度
步骤2中方程求解如下:
吴消法:
上式中解中最主要的部分如下:
(13)式中x是4次方因此整个方程组有4组解,从而求出x,y根据求出v,然后根据
求出OC,然后根据
求出OA,OC。
求出唯一解的方法:以上方法有4个解,从而有4组RT,我们可以再使用一点D,根据D的像素坐标世界坐标内参,然后分别带入这4组RT计算重投影误差,从而得到最佳的RT。该方法不太精准,我们可以后续可以使用RANSAC优化,方法是:取多个点,每4个点通过上面的步骤得到一对RT,然后让其他的点对这个RT进行投票(如果一个点利用了该RT得到的重投影误差小于某个值,那么就投这个RT一票),得票数最多的那个RT就是合适的RT
ABC三点坐标的求解:
步骤4的解释:
相机坐标系下的坐标和世界坐标系下的坐标相差一个RT,采用坐标对齐的算法求解RT,具体的算法有Kabsch algorithm,和OpenCV所用的四元数的算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具