鱼眼相机相关知识及其标定矫正

首先列一下参考资料:

广角超广角鱼眼
焦距24~3813~20<16
视角60~8494 ~118120 ~225

根据鱼眼投影圆与成像面的几何关系分类

鱼眼相机
圆形相机
桶形相机
全画幅相机

在这里插入图片描述
圆形鱼眼图
在这里插入图片描述
鼓型鱼眼图
在这里插入图片描述
全帧鱼眼图
在这里插入图片描述
鱼眼镜头模型分类

r=f.sin a
r=f.a
r=2f.sina/2
r=2f.tana/2
鱼眼镜头模型
正交投影模型
等距投影模型
等角投影模型
体视投影模型

其中r是在成像平面上,对象到光轴的距离
f是镜头的焦距
a是入射光线与光轴的夹角

鱼眼镜头模型优缺点比较:

优点缺点
正交投影模型映射关系简单,图像中心畸变小边缘图像失真严重,仅适用视角小于180°的场景
等距投影模型适用于视角大于180°场景,价格亲民
等角投影模型图像不失真映射关系较为复杂
体视投影模型对视角接近180°的图像压缩较小成像面积小,畸变较大,价格昂贵

鱼眼相机畸变分类:

相机畸变
径向畸变
切向畸变
枕型畸变
桶型畸变
薄透镜畸变
离心畸变

参考文档

径向畸变公式:
δ x r = x ( k 1 r 2 + k 2 r 4 + k 3 r 6 + . . . ) \delta_{xr} = x(k_1r^2+k_2r^4+k_3r^6+...) δxr=x(k1r2+k2r4+k3r6+...)
δ y r = y ( k 1 r 2 + k 2 r 4 + k 3 r 6 + . . . ) \delta_{yr} = y(k_1r^2+k_2r^4+k_3r^6+...) δyr=y(k1r2+k2r4+k3r6+...)

薄透镜畸变公式:
δ x p = s 1 ( x 2 + y 2 ) \delta_{xp} =s_1(x^2+y^2) δxp=s1(x2+y2)
δ y p = s 2 ( x 2 + y 2 ) \delta_{yp}=s_2(x^2+y^2) δyp=s2(x2+y2)
离心畸变公式:
δ x t = p 1 ( 3 x 2 + y 2 ) + 2 p 2 x y \delta_{xt} =p_1(3x^2+y^2)+2p_2xy δxt=p1(3x2+y2)+2p2xy
δ y t = 2 p 1 x y + P 2 ( x 2 + 3 y 2 ) \delta_{yt} =2p_1xy+P_2(x^2+3y^2) δyt=2p1xy+P2(x2+3y2)

在这里插入图片描述s为薄透镜畸变参数,p为离心畸变参数。

鱼眼相机畸变矫正

所谓的鱼眼相机,工程上视角超过140°的相机镜头,而鱼眼相机拍摄的图片因为广角更大,可以理解为全景图片。
鱼眼相机矫正就是将全景图片进行转换成一张平面图片。效果图如下:
在这里插入图片描述

鱼眼相机原理

之所以叫鱼眼,是因为仿生鱼眼。
在这里插入图片描述
当鱼眼靠近水面时。视角可以接近180°这种现象在光学原理中属于全反射和光路可逆。
在这里插入图片描述
人类借鉴鱼类仰视水面智商半球空域的视觉与案例
在这里插入图片描述成像系统模型
在这里插入图片描述
鱼眼镜头成像畸变理论
在传统光学原理中,受到高斯原理成像视角限制,能成像的空间大小极为有限。
在这里插入图片描述
为了突破成像限制,鱼眼相机引入畸变。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

标定方法:
  1. 固定内外径法
  2. 径向展开法
  3. 改良版双经度法
  4. 经纬映射法
  5. opencv法

拍摄天或者地的时候,径向展开法效果最好,opecnv方法处理结果也不错。
固定内外径法改良版双经度法、经纬映射在使用范围上有一定的限制
opencv法是我用的效果最好,使用范围最广的一种方法。

相机标定是计算相机的外部和内部参数的过程。一旦标定了相机,就可以使用图像信息从2维的图像构建出3维图像。
鱼眼相机的涉及到三个坐标系,分别是世界坐标系,相机坐标系和图像坐标系。
在这里插入图片描述
其中外参包括旋转矩阵R,平移矩阵T,相机坐标系的原点在光学中心,x轴和y轴定义了图像平面。

在这里插入图片描述

在这里插入图片描述

  • 10
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
相机畸变矫正是修正相机拍摄图像中的畸变问题,使图像更符合人所见的真实场景。Python提供了一些库和方法可以进行相机畸变矫正。 一种常用的方法是通过相机标定矫正参数来进行畸变矫正。为了进行相机标定,可以使用OpenCV库中的`cv2.calibrateCamera`函数,它可以根据一组已知的特征点和对应的畸变图像,计算出相机的内部和外部参数。接着,可以使用`cv2.undistort`函数对图像进行畸变矫正。 另一种常用的方法是使用球面映射法进行畸变矫正。这种方法将图像映射到一个球面上,然后再将球面投射成平面图像。这可以通过使用OpenCV库中的`cv2.fisheye.undistortImage`函数来实现。这个函数可以根据相机标定参数,对图像进行畸变矫正。 在进行相机畸变矫正之前,需要先进行相机标定。可以使用OpenCV库提供的相机标定工具进行标定标定过程中需要使用特殊的标定板,以及一组已知的特征点和对应的畸变图像。根据标定结果,可以得到相机的内部和外部参数,进而进行畸变矫正。 总结起来,Python提供了多种方法和库来进行相机畸变矫正,其中包括使用相机标定参数进行矫正和使用球面映射法进行矫正。具体方法的选择可根据实际需求和具体场景来确定。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Philtell

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值