EPnP算法

相机坐标系用\(F^c\),世界坐标系用\(F^w\)表示,任何一点可以用四个控制点\(p_i^w\)表示
\begin{equation}
p_i^w=\sum_{j=1}^4\alpha_{ij}c_j^w, \quad with \sum_{j=1}^4\alpha_{ij}=1
\end{equation}
对于相机坐标系同样成立
\begin{equation}
p_i^c=\sum_{j=1}^4\alpha_{ij}c_j^c, \quad with \sum_{j=1}^4\alpha_{ij}=1
\end{equation}
对于上面的公式,首先需要说明的是\(\alpha_{ij}\)确实存在。因为\(c_j^w\)或\(c_j^c\)构成的方程组是欠定的,所以一定存在解。
理论上来说,控制点可以随便选择,这里选择控制点为参考点的中心,其他的点在PCA得到的主轴上单位长度处,从而提高算法的稳定性。

控制点在相机坐标系的坐标

根据投影方程得到世界坐标系中参考点坐标和相机坐标系中参考点的约束关系:
\begin{equation}
\forall i, \quad \omega_i
\left[
\begin{array}{c}
\mathbf{u_i} \
1
\end{array}
\right]
=Ap_i^c=A\sum_{j=1}^4\alpha_{ij}c_j^c
\end{equation}
写成矩阵的形式为:
\begin{equation}
\forall i,\quad \omega_i
\left[
\begin{array}{c}
u_i \
v_i \
1
\end{array}
\right]
=\left[
\begin{array}{ccc}
f_u & 0 & u_c\
0 & f_v & v_c\
0 & 0 & 1
\end{array}
\right]
\sum_{j=1}^4\alpha_{ij}
\left[
\begin{array}{c}
x_j^c\
y_j^c\
z_j^c
\end{array}
\right]
\end{equation}
将等式的第三列代入第一二列,得到
\begin{equation}
\sum_{j=1}^4\alpha_{ij}f_ux^c_j+\alpha_{ij}(u_c-u_i)z^c_j=0
\end{equation}
\begin{equation}
\sum_{j=1}^4\alpha_{ij}f_v y^c_j+\alpha_{ij}(v_c-v_i)z^c_j=0
\end{equation}
因此,可以得到下面的线性方程组:
\begin{equation}
\rm{Mx= 0}, \quad with\quad \rm{x=[c_1^{cT},c_2^{cT},c_3^{cT},c_4^{cT}]^T}
\end{equation}
上面的方程中,四个控制点总共12个未知变量,\(\rm{M}\)为\(2n\times 12\)的矩阵。因此,\(\rm{x}\)属于\(\rm{M}\)的右零空间,\(\rm{v_i}\)为矩阵\(\rm{M}\)的右奇异向量,可以通过求解\(\rm{M^TM}\)的零空间特征值得到。
\begin{equation}
\rm{x}=\sum _{i=1}^{N}\beta_i \rm{v}_i
\end{equation}
[说明]使用\(\rm{M^TM}\)比使用\(\rm{M}\)计算量更少,因为\(\rm{M^TM}\)是求解是常数复杂度,而\(\rm{M}\)是\(O(n^3)\)的复杂度,但是计算\(\rm{M^TM}\)的复杂度是\(O(n)\)的。

选择合适的线性组合

上面求解的\(\rm{x}\)中,需要确定\(\beta_i\),也就是确定合适的线性组合。根据参考点的位置不同,矩阵\(\rm{M^TM}\)的零空间维数可能为\(N=1\rightarrow4\)维。求解\(\beta\)的策略是控制点在坐标系\(\mathcal{F}^w\)和\(\mathcal{F}^c\)中,两两之间的距离是相同,而\(\rm{x}\)的\(3k+1-3k\)分量表示分别表示不同的控制点在相机坐标系中的坐标,总共有\(C_4^2=6\)个约束。
如果\(N=1\),则根据约束有
\begin{equation}
\Vert \beta \rm{v}^{[i]}-\beta \rm{v}^{[j]}\Vert^2=\Vert c_i^w - c_j^w\Vert^2
\end{equation}
所以
\[\beta=\frac{\sum_{[i,j]\in [1;4]}\Vert \rm{v}^{[i]} - \rm{v}^{[j]}\Vert\cdot \Vert \rm{c}^w_i - \rm{c}^w_j\Vert}{\sum_{[i,j]\in [1;4]}\Vert \rm{v}^{[i]} - \rm{v}^{[j]}\Vert^2}\]
如果\(N=2\),
\begin{equation}
\Vert \beta_1 \rm{v}^{[i]}_1 + \beta_2 \rm{v}^{[i]}_2-(\beta_1 \rm{v}^{[j]}_1+\beta_2\rm{v}^{[j]}_2)\Vert^2=\Vert c_i^w - c_j^w\Vert^2
\end{equation}
由于\(\beta_1\)和\(\beta_2\)只以二次项出现在方程中,记\(\rm{\beta}=[\beta_1^2,\beta_1\beta_2, \beta_2^2]^T\), \(\rho\)的每一项为\(\Vert c_i^w - c_j^w\Vert^2\),得到相面的方程
\begin{equation}
L\beta = \rho
\end{equation}
其中\(L\)是由\(\rm{v}_1\)和\(\rm{v}_2\)构成的\(6\times 3\)的矩阵。
上面的方程可以通过\(\beta = (L^TL)^{-1}L^T\rho\)得到,然后通过选择合适的符号从\(\beta_1^2,\beta_1\beta_2,\beta_2^2\)使得所有的\(p_i^c\)有正的\(z\)坐标。

如果\(N=3\)则和\(N=2\)差不多,唯一的区别在于使用的是\(L\)的逆,而不是伪逆,此时的\(L\)为\(6\times 6\)的矩阵。

G-N优化

前面的步骤可以得到目标点在相机坐标系中的闭式解,作为G-N优化的初始值,优化的变量为\(\beta=[\beta_1, \cdots,\beta_N]^T\),目标函数为
\begin{equation}
Error(\beta)=\sum_{(i,j) s.t. i<j}(\Vert c_i^c - c_j^c \Vert ^2-\Vert c_i^w - c_j^w\Vert ^2)
\end{equation}
该优化过程和参考点的数目无关,优化步骤和时间是常数。

计算R,t

前面的两步计算不同维数的零空间的误差,选择误差最小维数对应的\(\beta\),从而得到\(\rm{x}\),恢复出控制点在相机坐标系中的坐标并根据质心坐标系数得到参考点在相机坐标系的坐标。剩下的工作就是已知一组点云在两个坐标系中的坐标,求两个坐标系的位姿变换。
步骤如下:
(1)求中心点,\(p_c^c=\frac{\sum{p_c^i}}{N}\),\(p_w^c=\frac{\sum{p_w^i}}{N}\);
(2)去中心,\(q_c^i=p_c^i- p_c^c,q_w^i=p_w^i-p_w^c\);
(3)计算\(H\)矩阵,\(H = \sum_{i=1}^{N}q_c^i q_w^{iT}\)
(4)对\(H\)进行SVD,\(H=U \Lambda V^T\);
(5)计算\(X=VU^T\),如果\(det(x)=1\),则\(R=X\),\(t=P_c^c- RP_w^c\)。否则\(R(2,\cdot)=-R(2,\cdot)\)

EPnP算法的更多相关文章

  1. Gaze Estimation学习笔记(1)-Appearance-Based Gaze Estimation in the Wild

    目录 前言 简介 论文概述 论文主要内容 MPIIGaze数据集 引入CNN的新Gaze Estimation方法 人脸对齐与3D头部姿态判断 归一化 使用CNN进行视线检测 论文作者进行的实验及结果 ...

  2. ORB-SLAM2-tracking线程

    tracking线程 Tracking线程的主要工作是从图像中提取ORB特征,根据上一帧进行姿态估计或者进行通过全局重定位初始化位姿,然后跟踪已经重建的局部地图,优化位姿,再根据一些规则确定新的关键帧 ...

  3. [转]【视觉 SLAM-2】 视觉SLAM- ORB 源码详解 2

    转载地址:https://blog.csdn.net/kyjl888/article/details/72942209 1 ORB-SLAM2源码详解 by 吴博 2 https://github.c ...

  4. ORB-SLAM3论文阅读:ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

    简介 ORB-SLAM3是第一个能在单目.双目.RGBD鱼眼相机和针孔相机模型下运行视觉.视觉-惯导以及多地图SLAM的系统.其贡献主要包括两方面:提出了完全依赖于最大后验估计的紧耦合视觉-惯导SLA ...

  5. CGA裁剪算法之线段裁剪算法

    CGA裁剪算法之线段裁剪算法 常用的线段裁剪算法有三种:[1]Cohen_SutherLand裁剪算法,[2]中点分割裁剪算法,[3]参数化方法. 1. Cohen_SutherLand裁剪算法 为了 ...

  6. ORB-SLAM(十一)EPnP

    EPnP在ORB-SLAM中主要用于Tracking线程中的重定位Relocalization模块,需要通过当前关键帧Bow与候选帧匹配上的3D地图点,迅速建立当前相机的初始姿态. PnP问题解决了已 ...

  7. B树——算法导论(25)

    B树 1. 简介 在之前我们学习了红黑树,今天再学习一种树--B树.它与红黑树有许多类似的地方,比如都是平衡搜索树,但它们在功能和结构上却有较大的差别. 从功能上看,B树是为磁盘或其他存储设备设计的, ...

  8. 分布式系列文章——Paxos算法原理与推导

    Paxos算法在分布式领域具有非常重要的地位.但是Paxos算法有两个比较明显的缺点:1.难以理解 2.工程实现更难. 网上有很多讲解Paxos算法的文章,但是质量参差不齐.看了很多关于Paxos的资 ...

  9. 【Machine Learning】KNN算法虹膜图片识别

    K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

随机推荐

  1. poj 1755 半平面交+不等式

    Triathlon Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6461   Accepted: 1643 Descrip ...

  2. Chinese-Text-Classification:Tensorflow CNN 模型实现的中文文本分类器[不分词版]

    从现在的结果来看,分词的版本准确率稍微高一点. 训练过程: 模型评估: 实验三,准备换一下数据集,用这里的数据集来跑这个模型:https://zhuanlan.zhihu.com/p/30736422 ...

  3. curl_multi实现并发

    普通请求 curl_normal.php <?php $srart_time = microtime(TRUE); $chArr=[]; //创建多个cURL资源 for($i=0; $i< ...

  4. 利用maven打jar包(项目来自GitHub)

    1.首先去GitHub上clone一个项目.(前提,maven项目) 2.切换到项目根目录. 3.执行mvn package. 第一次操作失败: 分析错误原因(javac):maven无法找到jdk, ...

  5. Centos Git1.7.1升级到Git2.2.1

    安装需求: ># yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc ># ...

  6. redis锁处理并发问题

    redis锁处理并发问题 redis锁处理高并发问题十分常见,使用的时候常见有几种错误,和对应的解决办法. set方式 setnx方式 setnx+getset方式 set方式 加锁:redis中se ...

  7. 软件测试assert

    之前实习做过一段时间测试,现做个总结: 实习测试的是一款CM系统(case 系统),来记录IT部门处理的维修,服务,反馈,预定服务等case:b/s架构,人少小项目,实习时间短,去了已经快完工,主要测 ...

  8. 微信小程序--试水

    应公司需求,接手小程序,在此之前我是一点也没有接触过,对此,拿过小程序文档和官方案例就一顿恶补,在此期间也看过一些小程序建立模型的视频,终于对小程序知晓一二,拿过项目开始研究.好了废话不多说,总结一下 ...

  9. Sublime Text3时间戳查看转换插件的开发

    平常配置表中,经常需要用到时间配置,比如活动开始结束.从可读性上,我们喜欢2017-04-27 17:00:00,从程序角度,我们喜欢用1493283600.前者是包含时区概念的,而后者市区无关,所以 ...

  10. JAVA 面试基础

    经典的Java基础面试题________________________________________________________________________________________ ...