EUCM鱼眼相机模型详解

EUCM 模型即为extended unified camera model, 主要会涉及到几个坐标系,如下:

a. 相机坐标系: 真实世界坐标中的位置坐标,单位为m, 一般对应在表达为X

b. 椭球面坐标系:是一个中转球面,与对应点的世界坐标相差一个scale的系数;也成为P平面, 对应表达为Xp

c. 图像坐标系:是椭球面上的点在z=1平面上的投影,也称为M平面,其x,y值与Xp一样,只是z值固定为1, 对应表达为m, 也是归一化平面

d. 像素坐标系: 图片中点像素点坐标,左上角为(0,0), 由 M平面 中的点经过内参矩阵K计算而来;对应表达为p(u,v)

模型图像为:

1. EUCM模型的projection公式( 从相机坐标系 ---> 图像坐标系)

其中( x, y, z) 为点X 在世界坐标系下的坐标;\alpha ,\beta 算作是畸变系数;得到的坐标m,  即为 相机坐标系下 点X 对应的在 M平面上,也就是图像坐标系下的坐标

\alpha 越小,代表镜头的畸变程度越小; 当\alpha = 0 时, 公式变成如下:

                                                                                                                 m=\begin{pmatrix} \frac{x}{z} \\ \frac{y}{z} \\ 1 \end{pmatrix} 

也就是针孔相机计算归一化坐标时的情况,去除尺度即可;

2. 图像坐标系到像素坐标系

这个和其他相机模型一样,这里不再多写;

3. 相机坐标系---> 椭球面坐标系( ---> M平面图像坐标系)

该公式表明 从相机坐标X 到椭球面坐标Xp 其实就是经过函数的缩放而已, 然后再由椭球面P上垂直投影到M平面上;

4. 反投影 -->  这里需要注意的是, 反投影只能从像素坐标系到椭球面坐标系,而不能转换到真实的世界坐标系;

其中 m(x,y) 是点在M 归一化平面坐标系下的坐标, 同时,也是椭球面坐标系中点X_{p} 的横纵坐标,因为无论是从 椭球坐标系到M平面, 还是从M平面到椭球坐标系,都只是垂直投影, 因此只有Z坐标轴发生变化; 

 所以重点是这里z(x,y)的求解;求解公式如下:

                                                                                            z= \frac{1-\alpha ^{2}\beta r^{2}}{\alpha \sqrt{1-(\alpha -\gamma )\beta r^{2}}+\gamma }

其中 \gamma =1- \alpha , 因为z是距离值,需要为实数,也就是要求根号下的部分大于0即可; 接下来证明:

\alpha\leq 0.5时, \alpha -\gamma\leq 0, 根号小的部分肯定大于等于0;

当 \alpha > 0.5时, 要向保证根号下的部分大于0, 则要求 r^{2}\leq \frac{1}{(\alpha -\gamma )\beta }

这段公式推导的意义是, 当我们使用EUCM模型时, 如果需要验证从像素坐标系到椭圆坐标系转换结果时,要保证r^{2}的一个范围;

例如在验证三角化之后的重投影误差时, 如果相机的参数中\alpha > 0.5,则需要添加如下的检测:

float mR2range_left = 1.0f / (beta * (2 * alpha - 1));
float im1x, im1y, im1z;
//p3dC1x 相机坐标系下3D点坐标,也就是X
float p3dC1x = p3dC1.at<float>(0);
float p3dC1y = p3dC1.at<float>(1);
float p3dC1z = p3dC1.at<float>(2);
float im1d = sqrt(beta * (p3dC1x * p3dC1x + p3dC1y * p3dC1y) + p3dC1z * p3dC1z);
im1x = p3dC1x / (alpha * im1d + (1 - alpha) * p3dC1z);
im1y = p3dC1y / (alpha * im1d + (1 - alpha) * p3dC1z);
float distance1R2 = im1x * im1x + im1y * im1y;
if (distance1R2 > mR2range_left){
    left_range++;
    return -1;
}

5. Z(x,y)的求解方法

在第三部分中z的求解方法其实是基于P平面上的点Xp 经过缩放函数后等于1, 即:

假设Xp(x, y,z) 则 带入到第三部分的公式后有:

对该公式求解即可得到式37 ;

6.  单应矩阵求解 , 求解单应矩阵进行3D reconstruction

假设世界坐标系中存在一组点, X1,X2,X3,...,Xn 属于一个平面, 该平面的一般表达式Ax+By+Cz+D=0 , 其中\vec{n}=(A,B,C)为平面的法向量;

那么n^{a} 则表示该平面在a相机的相机坐标系下的法向量,可能的值为n^{a}=(A{}', B{}',C{}'); 同时X^{a}表示的是平面上某个点,如X1在a相机的相机坐标系下的坐标; 

那么带入到平面的一般性方程,可以得到n^{a}\cdot X^{a}+D=0, 也即接下来会在论文中用到的n^{a}\cdot X^{a}=d_{a};

理解了这一层,在接下来论文中的公式的推导就会更容易, 这里不详细推导, 只贴出最后证明的结论;

假设有相机a 和 b,世界坐标中某点在相机a 和 b 下分别有 坐标

 以及有 projection functions, 两个相机之间有R t 关系如下:

则推导可得:

其中,

H为3x3矩阵, 可以由 4对处在P平面的匹配点计算得出;

注意: 这里的X_{p}^{a}, X_{p}^{b} 分别代表的就是同一点X1在相机a椭球面坐标系中的坐标, 和在相机b椭球面坐标系中的坐标, 而这两者的关系是符合平面变换的;

7. 雅克比矩阵:

首先说雅克比矩阵, 在slam14讲中有关于雅克比矩阵在BA优化时的公式, p164, 式7.41

e 关于扰动量的导数, 等于e关于P‘ 的导数 × P’ 关于扰动的导数;

因为第二项是固定的,P‘ 为世界坐标[X', Y',Z'], 所以只需要注意e关于P’ 求导即可;

其中e为从世界坐标系到图像坐标系的转换公式, 对于针孔相机模型而言, 为

u = fx*X'/Z' +cx; \\ v=fy*Y'/Z' +cy ;

对EUCM模型为

u=mx*fx + cx  , v=my*fx + cy ;

其中,

先求出m关P(x, y, z) 的导数, 再相乘, 最后结果为

 

参考论文:<< An Enhanced Unified Model>>

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值