前言

panoramic images(全景图像)以及Fisheye图像都不满足中心透视投影(Central perspective projection),不能使用collinearity equation(共线性方程)


中心透视投影

其中中心透视投影数学模型建立的假设是:

物体点入射线和光轴的夹角和在像平面上的成像点和光轴的夹角相同,如上图所示


鱼眼透视投影

鱼眼图像希望在有限的平面内获取更大的视角(几乎接近90度),然而按照中心透视投影的假设来说,在像平面上的像点会位于无穷远的地方,因此,我们需要修改投影模型,采用折射的方法将入射线沿光轴方向折射得到像点。鱼眼透镜系统的透镜类型和配置实现的。


鱼眼投影模型

位于头顶的鱼眼图像实际上监控着位于其下方的整个半球中的场景,需要将物体坐标投影到相机坐标系下(这里我觉得是对应着我之前的一篇博客中所说的4种图像坐标系,从世界坐标系变换到相机坐标系下),这不过不同的是这里的变换增加了投影中心的坐标(也是在物体坐标系下的),没有了平移量,得到了如下的转换公式:
XC=r11⋅(X−X0)+r21⋅(Y−Y0)+r31⋅(Z−Z0)YC=r12⋅(X−X0)+r22⋅(Y−Y0)+r32⋅(Z−Z0)ZC=r13⋅(X−X0)+r23⋅(Y−Y0)+r33⋅(Z−Z0)\begin{array}{l} X_{C}=r_{11} \cdot\left(X-X_{0}\right)+r_{21} \cdot\left(Y-Y_{0}\right)+r_{31} \cdot\left(Z-Z_{0}\right) \\ Y_{C}=r_{12} \cdot\left(X-X_{0}\right)+r_{22} \cdot\left(Y-Y_{0}\right)+r_{32} \cdot\left(Z-Z_{0}\right) \\ Z_{C}=r_{13} \cdot\left(X-X_{0}\right)+r_{23} \cdot\left(Y-Y_{0}\right)+r_{33} \cdot\left(Z-Z_{0}\right) \end{array} XC​=r11​⋅(X−X0​)+r21​⋅(Y−Y0​)+r31​⋅(Z−Z0​)YC​=r12​⋅(X−X0​)+r22​⋅(Y−Y0​)+r32​⋅(Z−Z0​)ZC​=r13​⋅(X−X0​)+r23​⋅(Y−Y0​)+r33​⋅(Z−Z0​)​
其中(XC,YC,ZC)(X_C,Y_C,Z_C)(XC​,YC​,ZC​)为相机坐标系中的物体点坐标,(X,Y,Z)(X,Y,Z)(X,Y,Z)为物体坐标系下的物体点坐标,(X0,Y0,Z0)(X_0,Y_0,Z_0)(X0​,Y0​,Z0​)是在物体坐标系下的投影中心坐标,ri,jr_{i,j}ri,j​为旋转矩阵的元素。
投影过程

从上图中将90°的物体点的入射线,映射到了圆形像的边缘位置,由上面定义的鱼眼模型,对应的映射关系为:
αr=90∘Rwhere r=x′2+y′2\begin{aligned} &\frac{\alpha}{r}=\frac{90^{\circ}}{R}&\text { where } &r=\sqrt{x'^{2}+y'^{2}} \end{aligned} ​rα​=R90∘​​ where ​r=x′2+y′2​​
其中α\alphaα是物体点的入射角,rrr是像点的半径,RRR是图像的半径,像点位置P=(x′,y′)P=(x',y')P=(x′,y′),由于物体点P和像点P’都在一个3维y=kxy=kxy=kx的平面上,因此P’和P在各自的Z平面上,和坐标原点(O′,OCO',O_CO′,OC​)之间的连线夹角相同,因此有:
x′y′=XCYC\frac{x^{\prime}}{y^{\prime}}=\frac{X_{C}}{Y_{C}}y′x′​=YC​XC​​,这里由相机坐标系到鱼眼图像坐标系下的变换公式为:

论文中给出的公式为:

x′=2⋅Rπ⋅atan⁡[(XC)2+(YC)2ZC](YCXC)2+1+dx+xhy′=2⋅Rπ⋅atan⁡[(XC)2+(YC)2ZC](XCYC)2+1+dy+yh\begin{aligned} &x^{\prime}=\frac{\frac{2 \cdot \mathrm{R}}{\pi} \cdot \operatorname{atan}\left[\frac{\sqrt{\left(\mathrm{X}_{\mathrm{C}}\right)^{2}+\left(\mathrm{Y}_{\mathrm{C}}\right)^{2}}}{\mathrm{Z}_{\mathrm{C}}}\right]}{\sqrt{\left(\frac{\mathrm{Y}_{\mathrm{C}}}{\mathrm{X}_{\mathrm{C}}}\right)^{2}+1}}+\mathrm{d} \mathrm{x}+\mathrm{x}_{\mathrm{h}}\\ &y^{\prime}=\frac{\frac{2 \cdot \mathrm{R}}{\pi} \cdot \operatorname{atan}\left[\frac{\sqrt{\left(\mathrm{X}_{\mathrm{C}}\right)^{2}+\left(\mathrm{Y}_{\mathrm{C}}\right)^{2}}}{\mathrm{Z}_{\mathrm{C}}}\right]}{\sqrt{\left(\frac{\mathrm{X}_{\mathrm{C}}}{\mathrm{Y}_{\mathrm{C}}}\right)^{2}+1}}+\mathrm{d} \mathrm{y}+\mathrm{y}_{\mathrm{h}}\\ \end{aligned} ​x′=(XC​YC​​)2+1​π2⋅R​⋅atan[ZC​(XC​)2+(YC​)2​​]​+dx+xh​y′=(YC​XC​​)2+1​π2⋅R​⋅atan[ZC​(XC​)2+(YC​)2​​]​+dy+yh​​
跟推导的公式相比来说查了后面加上的项,其中dy,dx\mathrm{d} \mathrm{y},\mathrm{d} \mathrm{x}dy,dx为失真多项式,他们是为了对镜头失真进行建模设计的,xh,yh\mathrm{x}_{\mathrm{h}},\mathrm{y} _{\mathrm{h}}xh​,yh​是主点的坐标( coordinates of the principle point ),这一项我也不是很清楚。

参考文献

E. Schwalbe, “Geometric modelling and calibration of fisheye lens camera systems,” Proc. 2nd Panoramic Photogrammetry Workshop, Int. Archives of Photogrammetry and Remote Sensing, vol. 36, no. Part 5, 2005

中心透视投影和鱼眼投影的区别(Central perspective projection vs. fisheye projection)相关推荐

  1. 地理坐标系与投影坐标系区别与联系

    地理坐标系与投影坐标系区别 空间参考中主要包含大地水准面.地球椭球体.投影坐标系等几部分内容.地图投影就是把地球表面的任意点,利用一定数学法则,转换到地图平面上的理论和方法,一般有两种坐标系来进行表示 ...

  2. 虚拟现实、增强现实与全息投影的区别

    通俗而泛泛地说: 虚拟现实(VR): 能够让人感觉进入了一个并不存在的人工制造的环境之中. "这是哪儿,我怎么到了这里?" 增强现实(AR):能够让人感觉在所处的环境中增加了一些并 ...

  3. 三分钟掌握数据中心“容灾和备份的区别”

    前言: 数据中心运行突发故障(如:天灾不可避免的灾难)是无法预测的,计算机里的数据就像扫雷游戏一样,十面埋伏充满雷区,随时都有可能Game Over,容灾备份就是数据安全的最后防线,但是你可以避免由数 ...

  4. 【科普】数据中心“容灾”和“备份”的区别

    数据中心运行突发故障(如:天灾不可避免的灾难)是无法预测的,计算机里的数据就像扫雷游戏一样,十面埋伏充满雷区,随时都有可能Game Over,容灾备份就是数据安全的最后防线,但是你可以避免由数据中心发 ...

  5. 托管型呼叫中心与自建型呼叫中心的区别

    呼叫中心从建设模式来说,目前主要分为自建.托管以及外包三种方式.这三种方式在本质上没有区别,系统功能也基本一致,都是IVR.CTI.ACD等模块构成.唯一的区 别方式就是客户群体和业务范围,就先锋音讯 ...

  6. 地理坐标系与投影坐标系的区别以及投影变换与定义投影的区别

    本文仅为arcgis转换经纬度和投影坐标教程,mapgis版本详见<转换经纬度和投影坐标excel导入arcgisl>,还有<新建或更改矢量坐标系> 在"数据管理&q ...

  7. 地理坐标系,投影坐标系区别

    目录 1. 地球的三级逼近 1.1 大地水准面 1.2 旋转椭球体 1.3 参考椭球体 2. 地理坐标系(大地坐标系) 2.1 大地基准面 2.2 地理坐标系 3. 投影坐标系 参考 1. 地球的三级 ...

  8. 高斯-克吕格(Gauss-Kruger)投影与UTM投影的区别

    高斯-克吕格(Gauss-Kruger)投影与UTM投影(Universal Transverse Mercator,通用横轴墨卡托投影)都是横轴墨卡托投影的变种,目前一些国外的软件或国外进口仪器的配 ...

  9. 数据中心“容灾和备份的区别” 。

    转自:微点阅读(www.weidianyuedu.com)微点阅读 - 范文大全 - 免费学习知识的网站 大数据时代数据量激增,数据的的安全性和业务连续性成为了企业运营和发展的命脉.但许多企业仍在采取 ...

最新文章

  1. 计算机视觉面试常见问题(含解答)
  2. 多线程 空值线程数_【开发者成长】深入理解多线程编程
  3. 【数据结构与算法】之深入解析“环形链表II”的求解思路与算法示例
  4. C#/WPF程序开机自动启动
  5. 阿里每天究竟要抵御多少攻击
  6. jsp页面div上下滑动_H5单页面手势滑屏切换原理
  7. 自动化测试--封装getDriver的方法
  8. 机器视觉LED光源的选择及其性能优势
  9. python源码解读_Python源码剖析[16] —— Pyc文件解析
  10. 如何裁剪动态图片?教你三步快速裁剪GIF
  11. PHP call_user_func_array回调函数 call_user_func_array函数详解
  12. jmeter基础之MD5加密
  13. 重拾C语言-摄氏度与华氏度相互转换
  14. 计算机安全的最后一道防线,网络安全的第一道防线是(图文)
  15. A deep-learning framework for multi-levelpeptide–protein interaction prediction文章梳理
  16. Android自定义安全键盘
  17. 如何构建一个在线绘图工具:Feakin 是如何设计与构建的?
  18. DolphinDB 助力 WILLIAM O’NEIL 笑傲股市
  19. regsvr32 命令注册COM组件报错模块已加载,但是对DLL的调用失败,错误代码0x80004005
  20. youtobe和youtobeGo在不同国家码下的预置

热门文章

  1. Linux 网络文件共享服务详细介绍
  2. 案例分享:Qt+RV1126+PLC医疗血浆采集仪(中英文输入、西门子PLC、数据库存储,各种数据统计,数值监测,电子秤操作,记录查询,全局报警等等)
  3. PythonGUI 使用Tkinter写一个简单时间间隔计算器
  4. AR的昨天、今天和明天
  5. Anaconda3 安装 爬虫库 selenium(windows环境)
  6. 初步探究Android App API接口测试--实战
  7. SpringBoot 中实现配置和使用定时器_张童瑶的博客
  8. 一文搞定Pandas中的数据合并
  9. mysql如何重复数据合并_mysql合并重复数据
  10. shell脚本模拟键盘输入完成程序交互(定时重启docker部署的项目样例)