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 在世界坐标系下的坐标; 算作是畸变系数;得到的坐标m,  即为 相机坐标系下 点X 对应的在 M平面上,也就是图像坐标系下的坐标

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

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

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

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

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

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

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

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

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

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

时, , 根号小的部分肯定大于等于0;

当 时, 要向保证根号下的部分大于0, 则要求 

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

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

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 属于一个平面, 该平面的一般表达式 , 其中为平面的法向量;

那么 则表示该平面在a相机的相机坐标系下的法向量,可能的值为; 同时表示的是平面上某个点,如X1在a相机的相机坐标系下的坐标;

那么带入到平面的一般性方程,可以得到, 也即接下来会在论文中用到的;

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

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

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

则推导可得:

其中,

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

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

7. 雅克比矩阵:

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

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

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

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

对EUCM模型为

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

其中,

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

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

EUCM鱼眼相机模型详解相关推荐

  1. OpenCV中的鱼眼相机模型详解

    针孔相机.鱼眼相机模型推导: 一.针孔相机模型 空间的三维物体要成像到相机的 CMOS/CCD 上面,形成了图像.图像上的每个点对应空间上的一个点. 将世界坐标系上的一点 (x,y,z)映射到CMOS ...

  2. 一文尽览 | 计算机视觉中的鱼眼相机模型及环视感知任务汇总!

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心技术交流群 后台回复[ECCV2022]获取ECCV2022所有自动驾驶方向论文! 论文 ...

  3. 九七的视觉工程 | 普通单目相机成像过程及相机内参详解

    相机成像过程及相机内参详解 一.定义介绍   本节以小孔成像模型为例,详细介绍了普通单目相机的成像过程,相机内参及内参矩阵的详细含义.本节所述的成像原理与大部分相机成像原理类似,读懂此节可满足大部分与 ...

  4. 使用pickle保存机器学习模型详解及实战(pickle、joblib)

    使用pickle保存机器学习模型详解及实战 pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议. "Pickling"是将Python对象层次结构转换为字节 ...

  5. Transformer 模型详解

    Transformer 是 Google 的团队在 2017 年提出的一种 NLP 经典模型,现在比较火热的 Bert 也是基于 Transformer.Transformer 模型使用了 Self- ...

  6. TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344 作者简介:汪剑,现在在出门问问负责推荐与个性化。曾在微软雅虎工作,

    TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344  作者简介:汪剑,现在在出门问问负责推荐与个性化.曾在微软雅虎工作,从事 ...

  7. TensorFlow Wide And Deep 模型详解与应用

    Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右发布的一类用于分类和回归的模型,并应用到了 Google Play 的应用推荐中 [1].wide and dee ...

  8. 数学建模——智能优化之模拟退火模型详解Python代码

    数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...

  9. 数学建模——智能优化之粒子群模型详解Python代码

    数学建模--智能优化之粒子群模型详解Python代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplo ...

最新文章

  1. hdu1027 Ignatius and the Princess II (全排列 amp; STL中的神器)
  2. python编程到底难不难_养成下面几个编程习惯,学习python并不难!
  3. Elasticsearch SQL介绍及实例
  4. java获取classpath以外的路径
  5. 阿里工程师养了只“二哈”,专治讨厌的骚扰电话
  6. 用Python玩转统计数据:取样、计算相关性、拆分训练模型和测试
  7. shiro 解决 跨域(仅端口不同) 登陆 问题
  8. PostgreSQL11.7逻辑复制的搭建
  9. 【Docker 命令】- images命令
  10. #IB TWS编程手记——03-关于IB合约的一二三
  11. 华为铁三角:铁三角模式诞生背景与思考
  12. 文本生成图像Text-To-Image评估指标IS、FID、VSS、R-precision
  13. PHOTOSHOP 小技巧
  14. 电脑CPU型号是什么意思?
  15. Postgresql杂谈 16—Postgresql中的锁机制
  16. 苹果更新提示:已接入无线局域网却提示需要接入
  17. js 第1步:随机生成json对象,格式为:“[[{“text“:XXXX},{“text“:XXXX}],[{“text“:XXXX},{“text“:XXXX},{“text“:XXXX}]]“
  18. 使用软路由实现智能Qos(海蜘蛛)
  19. 电视摇控器c语言程序,单片机红外电视遥控器C51程序代码
  20. [eStore]Archtecture

热门文章

  1. 2017百度之星资格赛:1001. 度度熊保护村庄(floyd最小环)
  2. bzoj 4895: 项链分赃(增强版)
  3. C++ STL 使用assign对list中的元素进行重置
  4. 指定范围内每个数的所有真约数
  5. python机器学习库sklearn——BIRCH聚类
  6. -分类数组-创建//修改(添加/改变原有/合并/删除)分类数组(categorical)
  7. 【2016北京集训测试赛(八)】 直径 (虚树+树的直径)
  8. Spring @AutoWired实现原理
  9. 一个故事理解什么是接口回调
  10. 利用CPUID 汇编指令(转载)