前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >干货 | 鱼眼镜头模型和校正方法详解

干货 | 鱼眼镜头模型和校正方法详解

作者头像
Color Space
发布2024-06-19 13:51:08
1680
发布2024-06-19 13:51:08
举报

适用于传统、广角和鱼眼镜头的通用相机模型和校准方法。

大纲

  • 镜头分类
  • 魚眼镜头
  • 投影模型
  • 成像过程
  • 畸变矫正

镜头分类

相机镜头大致上可以分为变焦镜头和定焦镜头两种。顾名思义,变焦镜头可以在一定范围内变换焦距,随之得到不同大小的视野;而定焦镜头只有一个固定的焦距,视野大小是固定的。鱼眼镜头是定焦镜头中的一种视野范围较大的镜头,视角通常大于180°。如下图所示,在获取更大视野范围的同时,鱼眼镜头成像的畸形变也更大。

变焦镜头

在一定范围之内可以改变焦距、从而得到不同宽度狭窄的视角,不同大小的影像和不同景物范围的照相镜头。

定焦镜头

定焦镜头(prime lens)是指只有一个固定焦距的镜头,只有一个焦段,或者说只有一个视野。

按焦段来划分,分为广角镜头、标准镜头、长焦镜头。

一、标准镜头

视角在40°~45°之间,焦距长度与底片对角线长度基本相等。

二、广角镜头

焦距长度小于底片对角线长度的镜头称为广角镜头。照相机的广角镜头种类繁多,焦距、视角不等,根据不同功能可分为普通广角镜头、超广角镜头、鱼眼镜头等三种。

  • 普通广角镜头:焦距一般大于25mm,视角在90°以内
  • 超广角镜头:焦距在16~25mm之间,视角在90°~180°之间
  • 鱼眼镜头:焦距小于16mm,视角超过180°

三、长焦镜头

长焦镜头也称远焦镜头,这种镜头的焦距比传统镜头长,要比传统镜头的对角线大,可以把远焦处的景物拍得更大而得此名。长焦镜头焦距长短不同,根据它们的不同特点又可分为中长焦镜头、长焦镜头、超长焦镜头三种。

  • 中长焦镜头:焦距一般在150mm以内,视角在20°左右
  • 长焦镜头:焦距一般在150mm到300mm之间,视角在10°左右
  • 超长焦镜头:焦距在300mm以上,视角在8°以内。

四:其他镜头

在此基础上还有一些其他的镜头,如鱼眼镜头,微距镜头,移轴镜头。

a. 鱼眼镜头

鱼眼镜头是一种焦距为16毫米或更短的并视角接近或等于180°的镜头。它是一种极端的广角镜头,“鱼眼镜头”是它的俗称。为使镜头达到最大的阴影视角,这种影镜头的前端镜面很短且呈镜面物体的形状向镜头前部凸出,与鱼的眼睛相似,“鱼眼镜头”因此而得名。

b. 微距镜头

微距镜片是一种用作微距摄影的辅助镜片,主要用于拍摄十分细小的物体,如花卉及昆士兰等。为了对距距离极近的被拍摄物体也能起到很好的辅助作用,微距镜片通常被设计为能够在一定程度上支撑得更长,从而使光学中心能够远程感知元件,同时在镜片组的设计上,也必定注重近距离下的变形与色差等控制。大多微距镜片的焦长都致力于标准镜片,因此并非完全适用于一般的拍摄。

c. 移轴镜头

移轴镜片是指拍摄建筑物时站在地上,为了拍到全貌,相机要稍微向上仰。由于建筑物下部软近上部软远,会拍出“下大上小”的汇聚效果。镜片本身是没有变化的,产生这种现象的原因是透视关係。纠正办法:相机正对于建筑物拍摄。这时可能镜片视角不足,需要换更广角的镜片。对于35毫米相机,等效的方法是用相同焦距但视角更大的镜片,正对标拍,将镜片移到剪取时要保留的位置(实际上是将镜片向相反方向平移)。这种镜片就是“移轴镜片”。

d. 折返镜头

这种类型的镜头一般焦距很长,光束进出之时经过一次或者多次反射,然后到达感光器,这种类型的镜头的宽度会非常大,因此做成非常超长的焦距的镜头,也不会有很长的镜头了。

反射式镜片还有一些独特的地方:①一副光束,而且是较小的光圈,如尼柯尔Reflex 500mm f/8、Reflex 1000mm f/11、Reflex 2000mm f/11。采用一副光束小光圈是减少小镜片体积的需要,但只要一增加小光圈,造成取景系统曝光度很低,并不利于依据裂像式和微棱镜式聚焦指示聚焦,而且不利于曝光控制,只能用改变曝光时间或加上中性灰镜的法令控制曝光,不能使用照相机的程序式曝光和快门优先式自动曝光,也无法对景深进行有效控制。很显然,有一档光束,是折反镜头一不足之处。②成像时景深外的高光点,在画面上不像通常镜子成像那样变成光斑,而是呈现一个个小圆圈,形成美丽的环形散焦,耀眼的眼眸,别有情趣,在实际拍摄中,要巧妙地运用。③拍摄景深小,聚焦要十分细心,并可用三脚架支路照相机,以避免照相机晃动。反射式镜面景深小,可以使景深以外产出独特的效果。还没有不产色差的可贵特点。

鱼眼镜头

鱼眼镜头为什么可以得到比普通眼镜头更大的视野范围呢,我们两个者之间的差别在哪?

其实,我们平时接触的大多数眼镜头都可以近似看做针孔相机模型,该模型下,光束沿直线传播,像与物之间是相似的,或者更严格地用语学语言说,像与物之间是经过了透视变换(Perspective Transform)。在透视变换下,直线经过变换仍然是直线,曲线经过变换仍然是曲线,两直线交点经过变换仍然是两直线相交的点等。正因如此投影变换保持了很多偶然性不变,所以我们看照片是能够与现场景联系起来的,照片与现场景之间存在某些相似的特性。

从某种意义上讲,相机镜片起的作用,就是做了一个学变化,将物体空间可变为图像空间,成像平面就是在图像空间内切一刀,截取一个平面,形成一个拍摄下的图像。

但基于针孔相机模型的镜片存在一个缺陷——线始沿直线传播使得镜片难以捕捉于边缘的物体。如下图所示,针对相同长度的红线箭号,越靠近边缘的经线镜片成像后就可变得越长,而事实上我们底片尺寸是有限,所以极端接近边缘的物体普通的镜片就无法成像记录了。

就在我们想到的水下的鱼。由水的折射率比空气大,光束从空气进入水中,弯曲比射角越大,这个变化的范围也越大。由这个特性,使得在水中向上看的时候,能一眼看到整个水面上的这个半球形空间,整个空间的影像都背焦、弯曲到了大约48°的环形内壁。

在这个形状空间内部,是来自水面上的空间的光线,在这个形状环境,是来自水面上景色的反射。也就是说,在水下向上看,在一个圈之外,只能看到水底景色;所有水面上的景色,都被掩埋在一个圈内,如下图所示。鱼眼镜头也是人们根据这种特性发展的,另外,鱼眼镜头的前面镜片直达很短,且呈拋物状像前部凸出,与鱼的眼睛十分相似,“鱼眼镜头”因此而得名。

投影模型

鱼眼镜头一般是由十几个不同的透镜组成,图所示,在成像的过程中,射入光线通过不同程度的折射,投影到尺寸有限的成像平面上,使得鱼眼镜头与普通镜头相比有了更大的视野范围。

在研究鱼眼相机成像时,可以将上面镜像组简化为一个球面,如下图(b)所示,O_1-X_cY_cZ_c 是相机坐标系,O_2-xy是成像平面。现在实世界有一个点P,入射角为θ,如果按照普通相机的针孔相机模型,入射光束PO_1经过镜子后不改变路线,P、O_1、p'三点共线,p'为P的像点;但对于鱼眼相机,入射光束PO_1经过镜子后会生折射,因此P的像点为p点,极坐标表示为( r , φ)。

为了将整个展会的景观限定在图像平面内,鱼眼相机会按照特定投影函数设计,如图(a)所示,针孔相机和鱼眼相机之间的区域分别如图 1b 所示

根据投影函数的不同,鱼类投影机的设计模型大致可以分为五种:透视投影(即针孔投影模型)、等距投影、视窗投影、正交投影。

最常见的是等距投影模型,即

成像过程与相对于模型

实际的镜头由于各种原因并且不会精确的符合投影模型,为了方便鱼眼相机的标准,一般取关于θ泰勒展开放式前面5个项目近似鱼眼镜头的实物投影函数:

这里θ是入射光束|PO_1|和光轴的夹角,即入射角,r表示相位空间任意点P PP在相位成像平面的像点p距心的距|O_2p|。根据eq3我们能够知道,成像点到心的距r是关于入射角θ的函数,但光束入射后以什么角度射出我们是难以计算的,因鱼眼镜头是由一组透镜子组成

光线入射后的光路非常复杂,会如果不透镜间反射射,可以看到论文的截图中入射光线经过O_1射到点p的光路画的也是一条曲线。

设置 F 是从射光束到归一化图像坐标的映射

其中 r(θ) 包含 (6) 前端五项和\Phi =(\theta, \varphi)^T是射光线的方向。针对真实视角,参数使得 r(θ) 在区域 [0, θ_max] 上单调增;其中 θ_max 是最大视角

因此,在计算 F 的倒数时,我们可以通过通过在数值上求九阶多项式的根,然后在 0 和 θ_max 之间选择实根来求解θ。

假设置相机坐标系下有一个点P(x,y,z),点P(x,y,z)如果按照针孔相机模型投影,则不存在畸变,像点为P_0(a,b)。而假设置f=1(最终可以求得r_d和r的比值与f无关),可求得P_0点坐标y以及入射角θ:

由于畸变的存在,像点到图像中心的距r被压缩成r_d ,实际的像点位置为p'(x',y'),有|Op'|=r_d, |OP_0|=r。结合等距投影数和式(1)有:

因为f=1,且\theta_d的一个项k0可以为1,最终可以得到OpenCV独特的鱼眼相机模型:

由相似三角形原理可以推翻畸形改变点p′的坐姿为:

而畸变前的像点P_0(a,b)和畸形变后像点p'(x',y')到光心O的距距离分为r和r_d。实际情况中我们一般知道国际机场间的点P坐标,如果考虑畸形变,知道国际机场焦距f的情况,根据出角等于入角,畸形变点的像点P_0也很容易得到,所以建议也知道,根据相似三角形原理:

从而可以求得,一般记scale=r_d / r:

最终利用互联网内的图片链接转到像素搜索就获得了最终的图片链接:

畸形变正

畸形变始终之前先简单回溯一下畸形变成像过程。

相机坐标系存在一点P(x,y,z),现在要得到该点在鱼眼相机像平面的投影,需要经过如下步骤:

Step1:根据针孔相机模型成像原理,可以求得未发生畸变时,点P的像点P_0(a,b),极坐标形式表示为(r,φ),以及点P的投影入射角θ

Step2:事实上由于畸变的存在,光线出射角θ_d ≠入射角θ ,事实上的像点为p'(x',y')

Step3:通过相机参数已知,可以根据(x',y')等距投影公式,泰勒展开放式以及相机焦距得θ_d值,所以畸变矾正的本质问题求解于一元高次方程:

其中k_1,k_2,k_3,k_4是畸变参数,由相机校正结果提供。常用的求解一元高次方程的方法有二分法、不动态点迭代法、牛頓迭代法。

Step4:因为r_d = θ_d ,所以点p ′ 的极坐标为( θ_d , φ ),从而得笛卡尔坐标值

依据式(6)可以求得P_0的坐标

Step5:最后根据通讯机内参数p′转换到像素基准系:

—THE END— 下载1:Pytorch常用函数手册 在「OpenCV与AI深度学习」公众号后台回复:Pytorch函数手册,即可下载学习全网第一份Pytorch函数常用手册,包括Tensors介绍、基础函数介绍、数据处理函数、优化函数、CUDA编程、多处理等十四章内容。 下载2:145个OpenCV实例应用代码 在「OpenCV与AI深度学习」公众号后台回复:OpenCV145,即可下载学习145个OpenCV实例应用代码(Python和C++双语言实现)。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV与AI深度学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • —THE END— 下载1:Pytorch常用函数手册 在「OpenCV与AI深度学习」公众号后台回复:Pytorch函数手册,即可下载学习全网第一份Pytorch函数常用手册,包括Tensors介绍、基础函数介绍、数据处理函数、优化函数、CUDA编程、多处理等十四章内容。 下载2:145个OpenCV实例应用代码 在「OpenCV与AI深度学习」公众号后台回复:OpenCV145,即可下载学习145个OpenCV实例应用代码(Python和C++双语言实现)。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档