相机标定(三) —— 畸变校正

一、前言

根据针孔模型,物体和成像之间参数会满足相似三角形的关系。但现实中会存在装配误差和透视失真等原因,导致这种关系无法成立,使理想成像与实际成像存在误差,这种误差即称为畸变。
畸变分为径向畸变,切向畸变和薄棱镜畸变。

二、畸变

2.1 径向畸变

径向畸变字面意思是图像坐标产生径向位置的误差,是由镜头形状缺陷造成的。
径向畸变效果可以分为枕型畸变、桶形畸变,示意图如下所示。

根据opencv给出的r=0处的泰勒展开公式:
在这里插入图片描述
其中,Xdr,Ydr为畸变后像素坐标,x,y为理想坐标,k1,k2,k3为径向畸变参数。

2.2 切向畸变

切向畸变一般是由透镜和芯片的安装位置误差引起的,导致透镜和成像平面不平行。
在这里插入图片描述
公式如下:
在这里插入图片描述
其中Xdt,Ydt为畸变后像素坐标,x,y为理想坐标,p1,p2为切向畸变参数。

2.3 薄棱镜畸变

是由镜头设计缺陷和加工误差导致的,高价位镜头可以忽略。
在这里插入图片描述
其中s1,s2为畸变参数

三、校正

上述公式均为由理想位置求畸变坐标,但实际情况是我们已知畸变位置,需要通过以上公式进行反推,求解k1,k2,k3,p1,p2。
将以上公式相加得到最终公式,其中在实际应用中只需考虑前两阶参数。

参考文章:
相机标定的来龙去脉(详解标定原理、畸变矫正原理、使用经验)

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
鱼眼相机畸变矫正是修正鱼眼相机拍摄图像中的畸变问题,使图像更符合人眼所见的真实场景。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>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值