python计算机视觉 相机标定--张正友棋盘格标定法

目录 

前言

环境

一、实验原理

1.1 相机标定简介

1.2 算法流程

1.3 计算单应性矩阵H

1.4 计算内参数矩阵

1.5 计算外参数矩阵

 1.6 最大似然估计

二、代码实现

三、实验结果与分析

3.1 数据集

3.2 实验结果

总结


前言

此次实验将用张正友棋盘格标定法对相机参数进行标定。”张正友标定法”是指张正友教授1998年提出的单平面棋盘格的摄像机标定方法。文中提出的方法介于传统标定法和自标定法之间,但克服了传统标定法需要的高精度标定物的缺点。相对于自标定而言,提高了精度,便于操作。因此张正友标定法被广泛应用于计算机视觉方面。


环境

win10,python3.8.5,opencv4.5.3,pycharm,用于标定的手机型号:荣耀20


一、实验原理

1.1 相机标定简介

在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。

1.2 算法流程

(1)打印一张棋盘方格图并贴在一个平面上
(2)从不同角度拍摄若干张模板图像
(3)检测出图像中的特征点
(4)由检测到的特征点计算出每幅图像中的平面投影矩阵H
(5)确定出摄像机的参数

1.3 计算单应性矩阵H

单应性:在计算机视觉中被定义为一个平面到另一个平面的投影映射。首先确定,图像平面与标定物棋盘格平面的单应性。

设三维世界坐标的点为 ,二维相机平面像素坐标为,所以标定用的棋盘格平面到图像平面的单应性关系为:s0m=**K**[**R**|**T**]**X**  (其中,K为相机的内参矩阵,R为外部参数矩阵(旋转矩阵),T为平移向量。令:

在这里插入图片描述

设棋盘格位于Z=0的平面,定义旋转矩阵R的第i列为 ri, 则有:


于是空间到图像的映射可改为:H=λK[r1 r2 t]
其中H 是描述Homographic矩阵,可通过最小二乘,从角点世界坐标到图像坐标的关系求解。

1.4 计算内参数矩阵

内参矩阵:

其中,fx,fy为焦距,一般情况下,二者相等,u0、v0为主点坐标(相对于成像平面),s为坐标轴倾斜参数,理想情况下为0。 

根据步骤1中的式子,令 H 为 H = [h1 h2 h3],则 [h1 h2 h3]=λK[r1 r2 t],再根据正交和归一化的约束可以得到等式:

在这里插入图片描述

即每个单应性矩阵能提供两个方程,而内参数矩阵包含5个参数,要求解,至少需要3个单应性矩阵。为了得到三个不同的单应性矩阵,我们使用至少三幅棋盘格平面的图片进行标定。通过改变相机与标定板之间的相对位置来得到三个不同的图片。为了方便计算,我们定义:

B 中的未知量可表示为6D 向量 b,在这里插入图片描述
设H中的第i列为 hi,在这里插入图片描述,根据b的定义,可以推导出公式在这里插入图片描述

  • 17
    点赞
  • 152
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
张正友相机标定是一种用于相机参数标定的方,它是由张正友教授在1998年提出的。这种方使用单平面棋盘来进行标定,介于传统标定和自标定之间,并克服了传统标定需要高精度标定物的缺点。相对于自标定而言,张正友相机标定提高了精度并且更容易操作。在Python中,可以使用OpenCV库来实现张正友相机标定。你可以按照以下步骤来进行标定: 1. 安装所需的环境和工具,如Windows 10操作系统、Python 3.8.5版本、OpenCV 4.5.3、PyCharm等。 2. 准备用于标定棋盘图片。可以使用张正友标定中推荐的棋盘模板或者自定义的棋盘图片。 3. 使用相机拍摄一系列棋盘图片,确保图片覆盖不同的角度和距离。 4. 使用OpenCV库中的函数,加载棋盘图片并提取角点。 5. 根据提取的角点,计算相机的内参和畸变参数。 6. 进行标定结果的评估,如重投影误差等。 通过以上步骤,你可以在Python环境中实现张正友相机标定,并获得相机的参数。这些参数可以用于后续的图像处理计算机视觉任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python计算机视觉 相机标定--张正友棋盘标定](https://blog.csdn.net/m0_47682721/article/details/124696148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值