最清晰的张正友标定法

2024-05-04 00:18
文章标签 标定 清晰 张正友

本文主要是介绍最清晰的张正友标定法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 此处“张正友标定”又称“张氏标定”,是指张正友教授于1998年提出的单平面棋盘格的摄像机标定方法。张氏标定法已经作为工具箱或封装好的函数被广泛应用。张氏标定的原文为“A Flexible New Technique forCamera Calibration”。此文中所提到的方法,为相机标定提供了很大便利,并且具有很高的精度。从此标定可以不需要特殊的标定物,只需要一张打印出来的棋盘格。So great! 这样的方法让人肃然起敬。所以玉米的这篇博客的题目是:致敬“张氏标定”。

         当然,此博的内容也是围绕着“张氏标定”进行的,在这里,玉米主要介绍一下,“张氏标定”的数学思路。因为标定在整个基于标定摄像机的三维重建的几何过程占有最重要最核心的地位。如下图:


         从图中明显可以看出,标定得到的内参、外参和畸变系数,是双目视觉进行图片矫正,摄像机校正和3D恢复的基础。没有好的标定,双目视觉系统就无法完成3D重建。

        既然标定对双目视觉如此重要,我们有必要对数学的深层含义多加理解。以张氏标定为例,让我们挖开工具箱,看看其数学本质吧。因为张教授的论文中对标定方法的讲述是循序渐进的,所以玉米在这里将按照张教授论文中的顺序,为大家讲述一下,张氏标定的脉络。

1、标定平面到图像平面的单应性

        因为张氏标定是一种基于平面棋盘格的标定,所以想要搞懂张氏标定,首先应该从两个平面的单应性(homography)映射开始着手。

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

        由上两篇博文中讲到的摄像机模型,肯容易得到:


         其中m的齐次坐标表示图像平面的像素坐标(u,v,1),M的齐次坐标表示世界坐标系的坐标点(X,Y,Z,1)。A[R t]即是上面一篇博客推出的P。R表示旋转矩阵、t表示平移矩阵、S表示尺度因子。A表示摄像机的内参数,具体表达式如下:

α=f/dx,β=f/dy,因为像素不是规规矩矩的正方形,γ代表像素点在x,y方向上尺度的偏差。

         这里还有一个“梗儿”,就是S。它只是为了方便运算,对于齐次坐标,尺度因子不会改变坐标值的。

因为标定物是平面,所以我们可以把世界坐标系构造在Z=0的平面上。然后进行单应性计算。令Z=0可以将上式转换为如下形式:


         既然,此变化属于单应性变化。那么我们可以给A[r1 r2 t]一个名字:单应性矩阵。并记H= A[r1 r2 t]。

         那么现在就有:

         大家可以分析一下,H是一个三3*3的矩阵,并且有一个元素是作为齐次坐标。因此,H有8个未知量待解。

(x,y)作为标定物的坐标,可以由设计者人为控制,是已知量。(u,v)是像素坐标,我们可以直接通过摄像机获得。对于一组对应的(x,y)-à(u,v)我们可以获得两组方程。

        现在有8个未知量需要求解,所以我们至少需要八个方程。所以需要四个对应点。四点即可算出,图像平面到世界平面的单应性矩阵H。

        这也是张氏标定采用四个角点的棋盘格作为标定物的一个原因。

        在这里,我们可以将单应性矩阵写成三个列向量的形式,即:


2、利用约束条件求解内参矩阵A

        从上面可知,应用4个点我们可以获得单应性矩阵H。但是,H是内参阵和外参阵的合体。我们想要最终分别获得内参和外参。所以需要想个办法,先把内参求出来。然后外参也就随之解出了。我们可以仔细的“观摩”一下下面的式子。

       从中可以得出下面两个约束条件,这两个约束条件都是围绕着旋转向量来的。

       1、r1,r2正交 得:r1r2=0。这个很容易理解,因为r1,r2分别是绕x,y轴旋转的。应用高中立体几何中的两垂直平面上(两个旋转向量分别位于y-z和x-z平面)直线的垂直关系即可轻松推出。

        2、旋转向量的模为1,即|r1|=|r2|=1。这个也很容易理解,因为旋转不改变尺度嘛。如果不信可以回到上一篇博客,找到个方向的旋转矩阵化行列式算一下。

        通过上面的式子可以将r1,r2代换为h1,h2与A的组合进行表达。即       r1=h1A-1,r2=h2A-1.根据两约束条件,可以得到下面两个式子:


        大家从上面两个式子是不是看出一点端倪了。式子中,h1,h2是通过单应性求解出来的那么未知量就仅仅剩下,内参矩阵A了。内参阵A包含5个参数:α,β,u0,v0,γ。那么如果我们想完全解出这五个未知量,则需要3个单应性矩阵。3个单应性矩阵在2个约束下可以产生6个方程。这样可以解出全部的五个内参了。大家想一下,我们怎样才能获得三个不同的单应性矩阵呢?答案就是,用三幅标定物平面的照片。我们可以通过改变摄像机与标定板间的相对位置来获得三张不同的照片。(当然也可以用两张照片,但这样的话就要舍弃掉一个内参了γ=0)

       到这里,大家应该就明白我们在张氏标定法时为什么要不断变换标定板的方位了吧。当然这只是一个原因。第二个原因,玉米会在讲极大似然时讲到。

       下面在对我们得到的方程做一些数学上的变化,这些变化都是简单的运算变化了,相信大家动动笔,一算就可以算出。这些变化都是为了运算方便的,所以也没什么物理意义。

首先令:

        很容易发现B是一个对称阵,所以B的有效元素只剩下六个(因为有三对对称的元素是相等的,所以只要解得下面的6个元素就可以得到完整的B了),让这六个元素构成向量b。


        接下来在做一步纯数学化简:

        可以计算得:

         利用约束条件可以得到下面,方程组:

          这个方程组的本质和前面那两个用h和A组成的约束条件方程组是一样的。在此重复一遍解释:如果我们想完全解出这五个未知量,则需要3个单应性矩阵。3个单应性矩阵在2个约束下可以产生6个方程。这样可以解出全部的五个内参了。大家想一下,我们怎样才能获得三个不同的单应性矩阵呢?答案就是,用三幅标定物平面的照片。我们可以通过改变摄像机与标定板间的相对位置来获得三张不同的照片。(当然也可以用两张照片,但这样的话就要舍弃掉一个内参了γ=0)

       通过至少含一个棋盘格的三幅图像,应用上述公式我们就可以估算出B了。得到B后,我们通过cholesky分解 ,就可以轻松地得到摄像机的内参阵A。

3、基于内参阵估算外参阵

       通过上面的运算,我们已经获得了摄像机的内参阵。那么对于外参阵,我们很容易通过下面的公式解得:

       对上面公式进行化简,可以得到:



        至此,玉米已经将张氏标定的主体数学框架已经讲完了。介于篇幅关系(怕太长大机会读的昏昏欲睡,哈哈)。但其实我们做了这么多推导,仅仅是为后面的极大似然参数估计提供初值。但当然这个初值也是不可或缺的,因为没有这个初值,就无法估计出更为准确的参数。玉米将张氏标定中用于提高标定精度的极大似然算法,放到下一篇博客中进行讲解。

 

还是老话:玉米才疏学浅,讲解之中难免有纰漏,请大家谅解,并指正。

这篇关于最清晰的张正友标定法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/957960

相关文章

笔记本电脑屏幕模糊?6招恢复屏幕清晰!

在数字化时代的浪潮中,笔记本电脑已成为我们生活、学习和工作中不可或缺的一部分。然而,当那曾经清晰明亮的屏幕逐渐变得模糊不清时,无疑给我们的使用体验蒙上了一层阴影。屏幕模糊不仅影响视觉舒适度,更可能对我们的工作效率和眼睛健康构成威胁。 遇到笔记本电脑屏幕模糊的情况时我们应该如何解决?本文将与大家分享6个简单易懂的解决方法。 方法一:调整Windows分辨率 电脑屏幕模糊显示不清晰怎

ABB机器人教程:工具载荷与有效载荷数据自动标定操作方法

目录 概述 工具载荷自动标定前的准备工作 进入载荷识别服务例行程序 工具载荷识别与标定操作 有效载荷识别与标定操作要点 4轴码垛类型机器人载荷数据标定说明 概述 在使用ABB机器人前需要正确标定一些关键数据,其中就包含载荷数据。理论上讲,安装在机器人上的所有设备均需标定其载荷数据。如果没有标定或没有准确标定载荷数据,会导致机器人机械结构过载,这样不仅机器人无法发挥其最大能力,而

Matlab 单目相机标定(内置函数,棋盘格)

文章目录 一、简介二、实现代码三、实现效果参考资料 一、简介 具体的标定原理可以参阅之前的博客Matlab 单目相机标定(内置函数),这里实现对棋盘格数据的标定过程。 二、实现代码 getCameraCorners.m function [camCorners, usedImIdx, imCheckerboard] = getCameraCorners(cali

面对.faust勒索病毒:提供一系列清晰、有针对性的应对策略

导言: 在数字化浪潮的推动下,网络安全已成为全球性的重要议题。近年来,.faust勒索病毒以其独特的加密技术和狡猾的传播方式,给全球网络安全带来了前所未有的挑战。本文91数据恢复旨在探讨.faust勒索病毒的新特点,并提出一系列创新性的应对策略,以期为未来网络安全防护提供新的思路。 当面对被勒索病毒攻击导致的数据文件加密问题时,您可添加我们的技术服务号(sjhf91)。我们将为您提供专业、快速的

手把手教你实现条纹结构光三维重建(3)——相机投影仪标定

我们都知道,投影仪其实就是个反向相机,如果我们了解双目标定的原理,那么相机和投影仪的标定就不难,关键是我们怎么得到投影仪在图像特征点(比如棋盘格角点)上的像素位置。 投影仪也类似于一个cmos,图像有像素位置(u,v),那么通过我们上一讲的条纹解码,给图像添加水平方向和垂直方向的投影,就可以通过解码,得到图像对应的投影相位值,此相位值就是投影的像素坐标(xp,yp)。如下图所示,具体的原理可以参

Boosting和AdaBoost的可视化的清晰的解释

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶” 作者:Maël Fabien 编译:ronghuaiyang 前戏 可视化的方法,清楚的解释了Boosting和AdaBoost。 最近,在Kaggle竞赛和其他预测分析任务中,boosting技术正在兴起。我将尽可能清楚地解释boost和AdaBoost的概念。 在本文中,我们将讨论: 快速回顾baggingbagging的限制

雷达标定与解析

融合雷达与解析雷达数据的相关代码。感谢开源社区的贡献。以下代码继承了很多人的工作。 如果是单雷达: 直接进行标定,所以就是接收相关的话题然后发布。 lidar_calibration_params.yaml: calibration:在这个接口里面x_offset: 0.0y_offset: 0.0z_offset: 0.4roll_offset: -0.074pitch_offset: 0ya

双目立体视觉 I:标定和校正

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶” 作者:Ali Yasin Eser 编译:ronghuaiyang 导读 双目立体校正和标定。 大家好!今天我们将讨论什么是立体摄像机,以及我们如何将它用于计算机视觉。通过使用这里的代码:https://github.com/aliyasineser/stereoDepth,我将解释我们如何为立体摄像机校准摄像机并计算视差图。我不

[Mysql] 的基础知识和sql 语句.教你速成(上)——逻辑清晰,涵盖完整

目录 前言 上篇的内容概况 下篇的内容概况  数据库的分类 关系型数据库 常见的关系型数据库系统 非关系型数据库 1. 键值对数据库(Key-Value Stores) 特点: 常见的键值对数据库: 2. 文档数据库(Document Stores) 特点: 常见的文档数据库: 3. 列族数据库(Column-Family Stores) 特点: 常见的列族

计算机图形学之图像变换与标定

一.齐次坐标的定义 1.齐次坐标定义 2.齐次坐标的理解 二.最小二乘法 1.最小二乘法 2.最小二乘计算仿射矩阵 三.图像变换 1.关于图像变换的总结 2.旋转矩阵推导 3.刚体变换与仿射变换实现 4.利用SVD求解刚体变换矩阵 5.计算两个点集间的刚体变换 6.奇异值分解的推理 7.3D点云配准之刚体变换 四.标定 1.九点标定 2.opencv九点标定 五.