目录

  • 0、张正友标定法论文
  • 1、张正友标定法
    • 1.0 旋转矩阵的性质
    • 1.1 求解单应性矩阵
    • 1.2 求解内参矩阵
    • 1.3 求解外参矩阵
    • 1.4 求解畸变系数
    • 1.5 非线性优化
  • 2、单应性矩阵有什么用
  • 3、非常感谢您的阅读!

0、张正友标定法论文

本篇博文参考张正友博士的两篇论文:Flexible camera calibration by viewing a plane from unknown orientation和A Flexible New Technique for Camera Calibration

1、张正友标定法

首先,我们学习了相机成像模型,通过那个模型,很容易理解下面的公式。

后面的rir_iri​和ttt是外参矩阵列向量表示形式,这样写的好处是可以利用旋转矩阵的性质来构建一些约束。

1.0 旋转矩阵的性质

①每一行每一列的模,都为1;
②任意两个列向量或者任意两个行向量都是正交的;
③正交矩阵的逆等于正交矩阵的转置。

后面会用到上面旋转矩阵的性质。

1.1 求解单应性矩阵

我们标定时使用的是平面标定板(这里以棋盘格为例),我们将XOYXOYXOY平面设置在标定板平面上, 轴垂直向外,这样对于检测的所有特征点都有
Zw=0Z_w=0Zw​=0的关系。

带入上面那个式子,会有:

因为Zw=0Z_w=0Zw​=0,所以我们消掉了r3r_3r3​。
令A[r1,r2,r3]=HA[r_1,r_2,r_3]=HA[r1​,r2​,r3​]=H,则有,
s[u,v,1]T=H[Xw,Yw,1]Ts[u,v,1]^T=H[X_w,Y_w,1]^Ts[u,v,1]T=H[Xw​,Yw​,1]T
这个HHH就是单应性矩阵,我们把它展开得到,

这样我们已知棋盘格上各个点的3D坐标(棋盘格的尺寸我们已知),以及图像平面上各个对应角点的像素坐标,就可以把hijh_{ij}hij​求解出来。

接着将sss带入前两个方程有,

也就是说,HHH有8个自由度。关于几种矩阵的自由度问题可以看我的这篇博客。
定义h′=[h11,h12,h13,h21,h22,h23,h31,h32,1]h' = [h_{11}, h_{12}, h_{13}, h_{21}, h_{22}, h_{23}, h_{31}, h_{32}, 1]h′=[h11​,h12​,h13​,h21​,h22​,h23​,h31​,h32​,1]

以上X,Y,u,vX,Y,u,vX,Y,u,v都是已知量。因为单应性矩阵有8个自由度,一对匹配点可以构建上面2个约束,所以4对匹配点就可以求解出单应性矩阵,由于噪声影响,现实中经常使用非线性优化的方法求解,比如奇异值分解+LM等。
我们将上式写为Sh′=0Sh'=0Sh′=0 ,系数矩阵STSS^TSSTS最小特征值对应的特征向量就是超定方程组Sh′=0S h'= 0Sh′=0的最小二乘解

1.2 求解内参矩阵

我们上面求得的单应矩阵可能和真实的值存在一个尺度因子,我们增加一个尺度因子 , 有

由1.0节提到的旋转矩阵的性质可得两个约束条件:

于是就有,


通过上面红字推导可知,图片中的公式其实是这样的λ=λ2\lambda=\lambda^2λ=λ2,我们认为它是一个常数尺度因子。就把他记为λ\lambdaλ即可。
因为AAA是内参矩阵,我们可以计算出他的逆矩阵。
A=[αγu00βv0001]A=\left[ \begin{matrix} \alpha & \gamma & u_0 \\ 0 & \beta & v_0 \\ 0 & 0 & 1 \\ \end{matrix} \right] A=⎣⎡​α00​γβ0​u0​v0​1​⎦⎤​

其中,α,β\alpha,\betaα,β表示两方向上的焦距,u0,v0u_0,v_0u0​,v0​表示主点。早期的相机有可能会存在像素本身是平行四边形而非矩形的问题,因此增加一个参数γ\gammaγ来描述,这个参数同样可以认为是传感器的安置不严格与相机主光轴垂直造成的变形的近似,事实与像素坐标系的X,Y轴之间的夹角的正切值成反比,因此当γ\gammaγ=0时,像素为矩形。
令B=A−TA−1B=A^{-T}A^{-1}B=A−TA−1,则有:


因为h1h_1h1​有三个元素嘛,所以有这种表示。
至于为什么我们把BBB矩阵铺成一个向量的时候,只留下了6个元素,其实算一算这个BBB就知道了。

至此,之前的约束方程简化为:

其中,vvv中都是已知量,这又构成了一个Sh=0Sh=0Sh=0的方程。我们知道,每张标定图都可以提供一个上述约束关系(对应一个HHH),而每个方程都会提供两个约束方程。 BBB本身有6个位置元素,因此理论上,三张标定图片就可以解出上述方程。当标定图超过3张时,也可以使用最小二乘法求解对应的超定方程。可以用奇异值分解和LM方法得到BBB.
得到BBB之后,就可以根据BBB与内参矩阵元素的关系解出α,β,γ,u0,v0\alpha,\beta,\gamma,u_0,v_0α,β,γ,u0​,v0​来。

1.3 求解外参矩阵

我们知道(包含尺度因子在里面)
[h1,h2,h3]=A[r1,r2,t][h_1,h_2,h_3] = A[r_1,r_2,t][h1​,h2​,h3​]=A[r1​,r2​,t]
这里面我们已经求解出了H和AH和AH和A,并且根据前面1.0节旋转矩阵的性质,所以有,

这时候就差一个r3r_3r3​,很简单,
r3=r1Xr2r_3=r_1Xr_2r3​=r1​Xr2​(叉乘)。
到此为止,内外参都计算出来了。
由于图像存在噪声,所以我们得到的RRR其实并不一定满足正交的性质,因此使用优化的方法来得到最佳的RRR ,
在作者的原文中是这样说的:


如果感兴趣可以自己去探索。

1.4 求解畸变系数


论文中:

1.5 非线性优化

注意:上面一系列操作都是为了得到各个参数的初值,有了初值,我们就可以利用相机模型+畸变模型对棋盘格上的3d点进行投影,建立重投影误差方程,然后利用非线性优化方法得到各个参数的准确值。
非线性优化方法介绍可以参考我整理的这篇文章。

2、单应性矩阵有什么用

关于单应性矩阵,我推荐阅读一下六哥的公众号文章神奇的单应性矩阵。


3、非常感谢您的阅读!

5、聊聊大名鼎鼎的张正友标定法相关推荐

  1. 工业相机标定(张正友标定法)

    目录 相机标定的概念 a. 相机标定的定义 b. 相机标定的目的 相机标定的过程 a. 标定板选择 b. 标定板摆放及拍摄 c. 标定板角点提取 张正友标定法 a. 反解相机矩阵 b.反解畸变系数 使 ...

  2. 针孔相机标定-基于张正友标定法

    针孔相机标定 前段时间曾经做过一段时间的摄像头标定,这里对以前做的事情做一个总结.首先,介绍一下针孔相机的标定吧,主要还是代码解析和一些细节说明,为了让自己更好的理解相机标定.当时做摄像头标定是为了实 ...

  3. 【三维重建】相机标定:张正友标定法

    系列文章目录 本系列开始于2022.12.25,开始记录三维重建项目课题研究时的学习笔记,其中主要分为以下几部分组成: 一.相机成像及坐标系之间的转换关系 二.相机标定:张正友标定法 三.特征检测与匹 ...

  4. 单目相机标定实现--张正友标定法

    文章目录 一:相机坐标系,像素平面坐标系,世界坐标系,归一化坐标系介绍 1:概述 公式 二:实现 1:整体流程 4:求出每张图像的单应性矩阵并用LMA优化 5:求解理想无畸变情况下的摄像机的内参数和外 ...

  5. 相机模型及张正友标定法

    针孔相机模型 针孔相机模型是实际研究中最常用的模型.针孔是一个中间有一个小孔的假想墙壁,光只能从小孔通过. fff是摄像机焦距,ZZZ是摄像机到物体的距离,XXX是物体长度,是图像平面上的物体长度.由 ...

  6. 基于亚像素的图像测量仪标定算法(满视场棋盘格,张正友标定法)

    图像测量仪对测量的精度极高,能达到0.001毫米,所有的图像边缘分割和摄像头标定,都在亚像素级水平上进行.目前我们能做到1/100个像素的提取.图像测量仪的关键部分在于亚像素分割.亚像素分割算法各种各 ...

  7. matlab圆形标记,toolbox_calib 改进过的张正友标定法,可以用于使用圆形标记点 板的相机 。 matlab 266万源代码下载- www.pudn.com...

    文件名称: toolbox_calib下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 946 KB 上传时间: 2014-02-23 下载次数: 39 提 ...

  8. 张正友标定法:A Flexible New Technique for Camera Calibration

    张正友标定法:A Flexible New Technique for Camera Calibration Abstract MOTIVATIONS BASIC EQUATIONS Notation ...

  9. 标定代码:张正友标定法(matlab工具箱自编程序)(matlab)

    张正友标定法原理 张正友标定法,一般采用二维棋盘格标定板. 标定板制作链接:棋盘格 张正友标定法推导过程

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

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

最新文章

  1. 学习Mongodb(一)
  2. 【转载】关于阿里巴巴的问题
  3. iPhone在华智能机市场份额首次下滑
  4. jQuery07源码 (3803 , 4299) attr() prop() val() addClass()等 : 对元素属性的操作
  5. .NET 6新特性试用 | record struct
  6. 2019淘宝最新类目清单免费提供欢迎点赞
  7. RHadoop的安装与试验
  8. http 高级配置 虚拟主机,https 编译安装
  9. 模拟调节器和数字计算机如何实现PID控制,模拟PID-调节器设计及数字化实现.doc...
  10. (转)高盛报告:人工智能、机器学习和数据将推动未来生产力的发展
  11. STM32MP1开发环境搭建
  12. [Err] 1418 - This function has none of DETERMINIST
  13. html5脑图_使用HTML5技术绘制思维导图
  14. 修改机顶盒设置移动焦点颜色
  15. ERP中各种乱码处理
  16. 下载mrt需要java_MRT(MODIS Reprojection Tool)下载及安装方法
  17. 传播力模型的初步探讨
  18. 你会用turtle画画吗?
  19. 自然数与有理数的双射函数
  20. 为什么不建议程序员做:“外包”?看完本文,相信你可以明白

热门文章

  1. 计算机触摸板设置方法,笔记本触摸板设置教程详解!笔记本触控怎么打开设置...
  2. 计算机网页文档无法复制怎么办,关于电脑浏览器网页不能复制网页文字的恢复教程...
  3. 浅谈能源管理系统在钢铁企业上的应用
  4. Laravel文档梳理2、路由相关
  5. 网易邮箱服务器设置错误,Smtp服务器错误代码(SMTP Error Codes)之——163
  6. 小学英语动词原形固定搭配+番外篇
  7. python 基础-如何调用函数
  8. C语言利用switch的简单计算器
  9. python怎么转换中文_使用Python进行中文繁简转换
  10. 全球顶尖互联网公司谷歌都在使用的Mono-Repo单体仓库