Python-OpenCV相机标定、张正友标定法

本文详细介绍了相机标定的重要性、张正友标定法,以及OpenCV中实现相机标定的步骤,包括棋盘格标定、角点检测、相机参数获取等。通过具体代码示例展示了如何使用OpenCV进行相机标定和去畸变处理,以及评估标定结果的方法。

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

一、相机标定介绍:

相机标定是进行视觉测量和定位的基础工作之一,标定参数准确与否直接关系到整个系统的精度,为此根据自己项目中的经验及参考相关的商用视觉软件的做法将相机标定过程中标定图片的获取过程中需要注意的问题总结如下:

标定板拍摄的张数要能覆盖整个测量空间及整个测量视场,把相机图像分成四个象限,应保证拍摄的标定板图像均匀分布在四个象限中,且在每个象限中建议进行不同方向的两次倾斜,下图是一组推荐摆放方式图片。

标定图片的数量通常在10~25张之间,图像数量太少,容易导致标定参数不准确。

圆或者圆环特征的像素数尽量大于20,标定板的成像尺寸应大致占整幅画面的1/4

用辅助光源对标定板进行打光,保证标定板的亮度足够且均匀

标定板成像不能过爆,过爆会导致特征轮廓的提取的偏移,从而导致圆心提取不准确。

标定板特征成像不能出现明显的离焦距,出现离焦时可通过调整调整标定板的距离、光圈的大小和像距(对于定焦镜头,通常说的调焦就是指调整像距)。

标定过程,相机的光圈、焦距不能发生改变,改变需要重新标定。

张正有标定法:
**相机标定的目的:**获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像。
**相机标定的输入:**标定图像上所有内角点的图像坐标,标定板图像上所有内角点的空间三维坐标(一般情况下假定图像位于Z=0平面上)。
**相机标定的输出:**摄像机的内参、外参系数。

二、标定步骤为:

  1. 准备标定图片
  2. 对每一张标定图片,提取角点信息
  3. 对每一张标定图片,进一步提取亚像素角点信息
  4. 在棋盘标定图上绘制找到的内角点(非必须,仅为了显示)
  5. 相机标定
  6. 对标定结果进行评价
  7. 查看标定效果——利用标定结果对棋盘图进行矫正
    下面是对相机模型的简单介绍:

    在这里插入图片描述

三、使用棋盘格标定

OpenCV使用棋盘格板进行标定(如下图),为了标定相机,我们需要输入一系列三维点和它们对应的二维图像点。在黑白相间的棋盘格上,二维图像点很容易通过角点检测找到。而对于真实世界中的三维点呢?由于我们采集中,是将相机放在一个地方,而将棋盘格定标板进行移动变换不同的位置,然后对其进行拍摄。所以我们需要知道(X,Y,Z)的值。但是简单来说,我们定义棋盘格所在平面为XY平面,即Z=0。对于定标板来说,我们可以知道棋盘格的方块尺寸。

四、glob.glob(’*.jpg’):

glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,类似于Windows下的文件搜索,支持通配符操作,,?,[]这三个通配符,代表0个或多个字符,?代表一个字符,[]匹配指定范围内的字符,如[0-9]匹配数字。两个主要方法如下:

1、glob方法

评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值