相机相关:相机模型与畸变模型

这篇具有很好参考价值的文章主要介绍了相机相关:相机模型与畸变模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 写在前面

最近在研究相机模型、标定参数相关的内容,因此针对多种相机模型和畸变模型,以及相机坐标系、世界坐标系等等做了一个系统的归纳总结。网上已经有蛮多相关的介绍,这里是基于一个小白的视角进行的归纳梳理,一来是可以帮助自己以后回顾,二来是希望通过自己的笔记能有机会帮助其他小伙伴~,与网络学习搭子们相互成长与进步(如有问题欢迎评论留言😀)

1.1. 面镜(mirror)与透镜(lens)

面镜用的是镜面反射;
透镜用的是镜面折射

广角相机为了获得更大得FOV(Fields of View),有3中镜头聚光方式:
(1)Dioptric(折射光学的) camera:通过透镜来实现,主要是折射;仅通过折射,比如鱼眼镜头
(2)Catadioptric(反射折射的) camera:使用一个标准相机和一个面镜 shaped mirror — such as a parabolic, hyperbolic, or elliptical mirror,后面介绍的mirror都是如此,其在水平面可以提供360度视野,仰角方向大于100度;
(3)Poly-dioptric camera:通过组合多个相机来重叠相机视野

1.2. 缩略语

Term        

Description

COD

畸变中心(Center of Distortion) - 在传感器上的 ( x , y )表示拟合的最佳对称中心 (unit:pixel)

DM

畸变模型(Distortion Model)

EFL

有效焦距(Effective Focal Length)

Pinhole Model FL

针孔模型焦距(Pinhole Model Focal Length)-图像去畸变后的模型焦距(unit:pixel)

FOV

视野(Field of View)

PP

主点(Principle Point) - 透镜光轴与传感器表面的交点

LPP

透镜主平面(Lens Primary Plane

2. 相机模型

相机将三维世界中的坐标点(单位:米)映射到二维平面(单位:像素)的过程可以用一个几何模型来描述,这个几何模型即相机模型。

3. Pinhole针孔相机模型/透视相机

最简单有效的是针孔相机模型(pinhole camera model),这是最基本且最常用的相机模型,提供了一个简单的方法来描述相机如何将三维世界转化为二维图像。
该模型假定光线通过相机的一个小孔穿过并投影到影像平面(这个平面就是感光元件,如CCD或CMOS)上。

该模型基于几何光学理论,忽视了透镜的畸变效应。针孔相机模型是理想状态下的相机模型,一个重要参数是:焦距,决定了相机的视场角。

大多数商用相机都可以描述为针孔相机,通过透视投影进行建模。

两个三角形(OBP'和OAP相似)的 等比关系!

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

3.1.1. 相机坐标系:

选取O点作为坐标系的原点,以光轴作为Z轴,X,Y轴与成像平面平行,构建一个坐标系

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

3.1.2. 世界坐标系----->像素坐标系

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

3.1.3. 世界坐标系到相机坐标系

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

[R,t]为相机外参矩阵

3.1.4. 相机坐标系到像素坐标系

根据三角形相似关系:

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

整理得到:

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

4. Fisheye鱼眼相机模型

同义词:

Fisheye/omni-directional/spherical/panoramic/catadioptric/wide-angle

包括常用的3种模型:Kannala-brandt, Mei和Scaramuzza/OCam

4.1. 多项式投影模型/Kannala-Brandt模型/KB

这是一种非参数模型,使用多项式系数来描述径向畸变

优点:能够适应各种不同类型的鱼眼镜头,但需要较多的参数来获得精确的矫正。

介绍:仍遵照小孔成像过程来建模图像生成过程。区别在于,光线不再是直线传播,而是经过透镜后有一定的折射,根据不同镜头类型,该折射模型可以建模为不同的函数,如下:

投影模型

函数

perspective projection透视投影

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机
stereographic projection立体投影 相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机
equidistance projection等距投影 相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机
equisolid angle projection等立体角投影 相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机
orthogonal projection正交投影 相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

其中r为像点距离相片中心的距离,θ 为入射光线与主光轴的夹角,  f为镜头焦距。

为了方便鱼眼相机的标定,Kannala 提出了一种鱼眼相机的一般多项式近似模型。r是θ的奇函数,将上述几种投影模型的函数经过泰勒展开后具有相似的结构,发现径向畸变r可以用极角θ的奇次多项式表示,即:

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

在计算时,Kannala 提出取式的前五项即取到的九次方,r的一次项系数可以为1。

通过θ可以得到r,即通过无畸变图像中的点能够计算出鱼眼图像中的畸变点。

总结,KB模型的公式可以表示为:

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

其中 rd是畸变后半径, θ是畸变前半径,而 k1,k2,k3,...是径向畸变系数。

4.1.1. KB模型的去畸变流程

去畸变的步骤大致如下:

  1. 获取相机的标定参数,包括内参和径向畸变的系数 k1​,k2​,k3​,…
  2. 对于图像中的每个像素,计算其在无畸变图像中的位置,并将像素值复制过去。

4.2. Scaramuzza模型/Ocam模型

OCam模型是由Jean-Yves Bouguet和Scaramuzza提出的一种用于鱼眼镜头和广角镜头的畸变矫正模型。

OCam模型使用一种称为多项式投影模型的方法,用多项式系数来描述鱼眼相机的畸变。可以处理高度畸变的镜头,如鱼眼镜头。

OCam模型的主要优点是其精度和范围:它可以处理180度以上的视场,并且在实践中被证明是非常准确的。

4.2.1. Ocam模型

模型基于以下假设:

  • 面镜相机系统是 central 系统,因此,在面镜上存在一个点,每条反射光线都在这个点上相交。这个点被认为是摄像机坐标系 XYZ 的轴原点。
  • 假设相机和面镜的轴被很好的对齐,也就是说,只有很小的旋转偏差被考虑到模型中。(不考虑切向畸变的意思?)
  • 面镜相对于它的轴是旋转对称的。
  • 模型中没有考虑相机的透镜畸变,因为广角相机使用的面镜通常需要大的焦距在面镜上聚焦图像。因此,透镜的失真可以被忽略。如果你使用鱼眼镜头,相机镜头畸变已经被集成在了投影函数f 里面


假设以上假设完全符合,即相机和面镜轴完全对齐。

条件假设:

设p 为图像的像素点,(u,v)是它相对于全向图像中心的像素坐标。设P是它对应的从单有效视点发出的三维向量,(x,y,z)是它相对于坐标轴原点的坐标。
因为相机和面镜轴假设完美对齐,所以x,y分别与u,v成比例:

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

将图像点p映射到其对应的3D向量P的函数。

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

将α包含进函数f,等价写成:

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

且面镜是旋转对称,函数f(u,v)只取决于点到图像中心的距离ρ=√ u2+v2。因此可简化:

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

函数 f ( ρ ) 形式是多项式:

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

需要估计的参数:a1,a2,a3,...

其中a1=0。

World2cam时,θ=arctan(( x2+y2)/ z2),求出入射光的夹角,通过夹角求出在成像平面上,点到图像中心的距离(之前cam2world的反向).即:

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

(ρ为畸变后的极径,θ表示无畸变图像中的极径,a_0,a_1,...为多项式的系数,该公式描述了每个像素点从无畸变图像到畸变图像的映射关系)

反向求得在成像平面上的位置:

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

在之前假设(相机和面镜轴完美对齐)中,实际上仍会存在小误差。对 对准误差 进行建模,并通过仿射变换对artefact进行数字化。

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

上面式子将真实扭曲的坐标(u',v')与理想的未失真的坐标(u,v)联系起来。

总结,Ocam模型的公式可以表示为:

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

(ρ为畸变后的极径,θ表示无畸变图像中的极径,a_0,a_1,...为多项式的系数,该公式描述了每个像素点从无畸变图像到畸变图像的映射关系)

4.2.2. Ocam模型的去畸变流程

去畸变的步骤大致如下:

  1. 获取相机的标定参数(包括内参和多项式系数)。
  2. 根据多项式系数,为每个像素点建立从图像坐标到单有效视点的射线映射。
  3. 使用这个映射去除图像的畸变。

4.2.3. Unified Omnidirectional Camera Model和Central Omnidirectional Camera Model

"Unified Omnidirectional Camera Model"和"Central Omnidirectional Camera Model"都是全向相机模型,用于描述全向相机的成像过程。这两个模型的主要区别在于它们的建模方式和适用范围。

(1)Unified Omnidirectional Camera Model是一种通用的全向相机模型,可以描述包括中心全向相机在内的各种类型的全向相机的成像过程。

这个模型提出了一个统一的框架,可以处理各种镜头畸变,包括径向和切向畸变。它的主要优点是模型简单,但可能无法精确描述某些特定类型的全向相机的成像特性。

(2)Central Omnidirectional Camera Model特指那些有单个投影中心的全向相机,这些相机通常使用特殊的镜头(如鱼眼镜头)来获得360度的视场。

这个模型的主要优点是对于这类相机,它可以提供更精确的描述。然而,它可能不适用于那些没有明确投影中心的全向相机,例如使用镜头阵列的全向相机。

4.3. KB模型和Ocam模型对比

  • KB模型主要用于普通相机,可以处理鱼眼和非鱼眼镜头,而Ocam模型更专门用于鱼眼相机。
  • KB模型包括径向和切向畸变,而Ocam模型只包括径向畸变。
  • Ocam模型的公式中使用了极坐标系,更适用于描述鱼眼相机的畸变特性。

4.4. 更多解释:

(1)什么是全向图像?指通过全向相机获取的图像。全向相机是一种可以获取360度视场的相机,能够捕捉所有方向的景象,而不仅仅是相机面向的那个方向。

在全向图像中,(u,v)常指某个像素想对于图像中心的坐标。图像中心指全向图像的投影中心,即所有光线在投影到图像平面上时相交的点,理想情况下这个点应该位于图像的几何中心。

示例:

(u,v)=(100,200)表示从全向图像的中心点开始,水平向右100和垂直向下的像素200距离.

(2)坐标轴原点和全向图像中心?

(x, y, z)是像素点p对应的三维向量P相对于坐标轴原点的坐标。这个坐标轴原点通常被设定为单有效视点,也就是说,三维空间中的点P就是从原点出发、沿着向量P的方向、距离原点1个单位长度的点。

(u, v)则是像素点p相对于全向图像中心的像素坐标。这个全向图像中心是图像平面上的一个点,它表示的是全向相机的投影中心。在理想情况下,所有的光线都会在这个点上交汇,并在这个点附近形成图像。

在Ocam模型中,图像的像素点p对应的从但有效视点发出的三维向量P通常会被归一化,即长度会被设为1,这样P的坐标(x,y,z)描述了从单有效视点到像素点p的方向。z常设为正值,表示向量P的方向是从单有效视点朝向场景的。

场景是什么?指的是相机所拍摄的三维环境。它可以包括物体、建筑物、人物等等,总的来说,就是相机所能“看到”的所有内容。)

在OCam模型中,由于全向相机被假定为单有效视点模型,因此坐标轴原点和全向图像中心在物理上通常是同一个点,即相机的镜头中心

(3)对准误差是什么?"对准误差"通常指的是设备或系统中的两个或多个部分之间的相对位置或方向的误差。

(4)artefact是什么?在影像处理中通常指的是图像中的非真实的或误导性的特征或对象。这些特征并非来自于被摄物体本身,而是由于影像获取或处理过程中的一些因素产生的。比如,图像压缩过程中可能会出现的方块效应(blocky effect),或者由于摄像头畸变、噪声等产生的异常像素点,都可以被称为"artefact"。

(5)什么是射影几何?

这种投影可以是正交投影(如我们在平面上画出的几何图形),也可以是透视投影(如摄影中的透视效果)。

在射影几何中,点、直线和平面都可以被表示为射影空间中的元素,并且它们之间的交叉、并行和垂直等关系可以被重新定义为射影关系。

4.5. Mei模型

Mei模型是一种全向相机模型,由Mei和Rives在2007年提出。它是基于多项式模型的,但引入了额外的参数来更准确地描述镜头的畸变。Mei模型假设相机有一个明确的投影中心,并且适用于具有广角镜头的相机。这种模型的优点是它可以更准确地描述镜头畸变,尤其是在图像的边缘部分。但是,与其他模型一样,它需要一个标定过程来确定模型的参数。

5. 畸变模型

5.1. 径向畸变

5.1.1. 形成原因:

径向畸变是由于镜头形状引起的畸变,使得图像中的直线在投影到图像平面时呈现出曲线。

径向畸变通常表现为图像中心的物体被放大(称为桶形畸变),或者图像边缘的物体被放大(称为枕形畸变)。

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

径向畸变可以通过多项式模型来修正,其中最常用的模型是以下形式的二次或四次多项式:

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

这里,r_u是未经畸变矫正的像素到图像中心的距离,r_d是经过畸变矫正后的距离,k1和k2是畸变系数。

5.2. 切向畸变

5.2.1. 形成原因:

切向畸变是由于镜头和图像传感器之间的不平行(即镜头未与图像平面完全对齐)导致的。这种畸变使得图像看起来像是被拉伸或挤压。切向畸变可以通过以下形式的模型来修正:

相机相关:相机模型与畸变模型,鱼眼图像校正,深度学习,数码相机

这里,(x_u, y_u)是未经畸变矫正的像素坐标,(x_d, y_d)是经过畸变矫正后的坐标,p1和p2是切向畸变系数。

(小白记录:对于相关公式有部分是取自网络,大概了解即可)文章来源地址https://www.toymoban.com/news/detail-836472.html

到了这里,关于相机相关:相机模型与畸变模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 畸变矫正-深度学习相关论文学习

    目录 DocTr: Document Image Transformer for Geometric Unwarping and Illumination Correction SimFIR: A Simple Framework for Fisheye Image Rectification with Self-supervised Representation Learning Model-Free Distortion Rectification Framework Bridged by Distortion Distribution Map A Deep Ordinal Distortion Estimation Approach for Distortion Rectification Mul

    2024年02月01日
    浏览(41)
  • Python OpenCV 单目相机标定、坐标转换相关代码(包括鱼眼相机)

      本文不讲原理,只关注代码,有很多博客是讲原理的,但是代码最多到畸变矫正就结束了,实际上就是到 OpenCV 官方示例涉及的部分。   在官方示例中使用黑白棋盘格求解了相机的内外参和畸变系数,并对图像做了畸变矫正,但在实际使用时还缺少很多功能,以下是本

    2024年02月02日
    浏览(33)
  • 鱼眼相机成像模型以及基于OpenCV标定鱼眼镜头(C++)

    鱼眼镜头一般是由十几个不同的透镜组合而成的,在成像的过程中,入射光线经过不同程度的折射,投影到尺寸有限的成像平面上,使得鱼眼镜头与普通镜头相比起来拥有了更大的视野范围。下图表示出了鱼眼相机的一般组成结构。最前面的两个镜头发生折射,使入射角减小

    2024年02月09日
    浏览(37)
  • 对图像中边、线、点的检测(支持平面/鱼眼/球面相机)附源码

    前言         图像的线段检测是计算机视觉和遥感技术中的一个基本问题,可广泛应用于三维重建和 SLAM 。虽然许多先进方法在线段检测方面表现出了良好的性能,但对未去畸变原始图像的线         段检测仍然是一个具有挑战性的问题。此外,对于畸变和无畸变的图像都

    2024年02月07日
    浏览(50)
  • 机器视觉【1】相机的成像(畸变)模型

    很久没写文章,简单唠一唠。 不知道巧合还是蜀道同归,部门领导设定了些研究课题,用于公司部门员工的超前发展,该课题是“2D to 3D的三维重建”,这一块刚好是我个人看中的一个大方向,所以就有了这一系列的文章。其实我还发现不少同学是没搞清楚 什么是 机器视觉

    2024年02月03日
    浏览(38)
  • 2.3ORBSLAM3之相机模型与畸变模型

    主要内容: 对于VSLAM来说关于相机投影模型和畸变模型暂时不需要了解过于深入,通常来说在VSLAM领域相机的投影模型主要分为 针孔模型(Pinhole) 和 全向模型(Omni) 两种,相机的畸变模型分为 切向径向畸(RanTan) 和 等距畸变(Equidistant,EQUI) 两种,也是ORBSLAM3中针对针孔相机和鱼眼

    2024年02月11日
    浏览(64)
  • OpenCV开发笔记(七十七):相机标定(二):通过棋盘标定计算相机内参矩阵矫正畸变摄像头图像

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/136616551 各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、

    2024年03月13日
    浏览(45)
  • 【视觉SLAM入门】3. 相机模型,内外参,畸变推导

    本节讨论围绕这个问题展开 机器人如何观测外部世界? quadlargetextcolor{red}{机器人如何观测外部世界?} 机器人如何观测外部世界? 注意: 的研究的目的是为了求出点在世界坐标系下的信息,也就是    P w ;P_w P w ​ 是要求出来的量。 以针孔相机为例,我们来推导内参的

    2024年02月13日
    浏览(57)
  • python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)

    今天的低价单孔摄像机(照相机)会给图像带来很多畸变。畸变主要有两 种:径向畸变和切想畸变。如下图所示,用红色直线将棋盘的两个边标注出来, 但是你会发现棋盘的边界并不和红线重合。所有我们认为应该是直线的也都凸 出来了。 在 3D 相关应用中,必须要先校正这些畸变

    2024年02月06日
    浏览(48)
  • opencv对相机进行畸变矫正,及从矫正后的图像坐标反求原来的对应坐标

    目前有个项目,需要用到热成像相机。但是这个热成像相机它的畸变比较厉害,因此需要用标定板进行标定,从而消除镜头畸变。 同时需要实现用户用鼠标点击校正后的画面后,显示用户点击位置的像素所代表的温度。 另外热成像sdk中还有个功能:选定一个rect,可以返回这

    2024年02月16日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包