使用opencv进行相机标定(python)

本文介绍了使用opencv进行相机标定的过程,包括相机标定的必要性、步骤、成像原理、消除径向畸变的方法,以及opencv中张正友相机标定算法的实现。通过提取棋盘格角点,利用calibrateCamera()函数计算内参、畸变系数,最终实现图像矫正。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言
今天介绍一个比较复杂的话题——照相机标定
为社么会复杂呢?因为解释起来比较麻烦,会涉及到很多数学公式。
本文将运用张正友相机标定的数学原理,并给出标定流程。OpenCV中已经封装好了一系列函数,我们使用这些函数可以实现张正友相机标定。那么首先说明一下什么是相机标定?
一个摄像机可以大致分为三个部分:镜头 、感光元件(CCD和CMOS)、处理电路。当光线透过镜头,会在感光元件上形成一个物体的“像”。(小孔成像原理)然后经过一系列处理就变成了电子版的图片。当然这种变换过程中会产生一定的误差(就好像透过猫眼看人会是一个曲面)。所以为了消除或者矫正这些误差,就出现了标定技术(就是将图片还原成正常人眼看到的图像)。

相机标定步骤

  1. 准备一张打印好的棋盘格,对棋盘格进行不同角度的拍摄,10-20张图片为宜;
  2. 对每张图片提取角点信息;
  3. 在图片中画出提取出的角点;
  4. 相机标定;
  5. 对标定结果评价,计算误差;
  6. 使用标定结果对原图片进行矫正;

一 、摄像机标定成像原理
1.四个坐标系
世界坐标系、相机坐标系、像素坐标系、成像平面坐标系。
我们可以把现实生活遇到的任何事物用坐标系表示出来,也可以用坐标系表示整个世界,于是便建立起了世界坐标系。想象一下,摄像机拍摄的是一张二维图片,因此整个摄像机可以用一个坐标系去标识它获取到的某个物体的位置,这是相机坐标系。像素坐标系就是相片的坐标系。成像平面坐标系类似于像素坐标系。
原本我们期望的拍摄效果:是每个坐标系中的像素都相互对应,类似于一种一元一次方程,但由于镜头或者其他关系,现在这条“直线”弯了,得到的图像也会出现“弯曲”,因此我们需要把它矫正。

2.相机参数
相机都有不同的内部参数、外部参数;

内部参数:有一个参数矩阵(fx,fy,cx,cy)和一个畸变系数(三个径向k1,k2,k3;两个切向p1,p2);内部参数是唯一的,就是一部相机只有一组内部参数。
相机将场景中的三维点变换为图像中的二维点,也就是各个坐标系变换的组合,可将变换过程整理为矩阵相乘的形式:
在这里插入图片描述在这里插入图片描述
其中,α,β表示图像上单位距离上像素的个数,则fx=αf,fy=βf

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值