张正友相机标定算法解读

张正友标定算法解读

一直以来想写篇相机标定方面的东西,最近组会上也要讲标定方面东西,所以顺便写了。无论是OpenCV还是matlab标定箱,都是以张正友棋盘标定算法为核心实现的,这篇PAMI的文章《A Flexible New Technique for Camera Calibration》影响力极大,张正友是浙江大学的机械系出身,貌似现在是微软的终身教授了。我就简单的介绍下算法的核心原理,公式的推理可能有点多。

一 基本问题描述:空间平面的三维点与相机平面二维点的映射。

假设空间平面中三维点:(齐次坐标,世界坐标系)。

相机平面二维点:(齐次坐标,相机坐标系)。

那么空间中的点是如何映射到相机平面上去呢?我们用一个等式来表示两者之间关系:

(1)

注:A为相机内参矩阵,R,t分别为旋转和平移矩阵,s为一个放缩因子标量。

我们把等式(1)再简化下:

(2)

因为张正友算法选取的是平面标定,所以令z=0,所以平移向量只有r1,r2即可。H就是我们常说的单应性矩阵,在这里描述的是空间中平面三维点和相机平面二维点之间的关系。因为相机平面中点的坐标可以通过图像处理的方式(哈里斯角点,再基于梯度搜索的方式精确控制点位置)获取,而空间平面中三维点可以通过事先做好的棋盘获取。所以也就是说每张图片都可以计算出一个H矩阵。

二 内参限制

我们把H矩阵(3*3)写成3个列向量形式,那么我们把H矩阵又可写成:

(3)

注:lamda是个放缩因子标量,也是s的倒数。

那么现在我们要用一个关键性的条件:r1和r2标准正交。

正交:(4)

单位向量(模相等): (5)

这个两个等式是非常优美的,因为它完美的与绝对二次曲线理论联系起来了,这里就不展开了。

三 相机内参的求解

我们令:

(6)

我们可知B矩阵是个对称矩阵,所以可以写成一个6维向量形式:

(7)

我们把H矩阵的列向量形式为:

(8)

那么根据等式(8)我们把等式(4)改写成:

(9)

(10)

最后根据内参数限制条件(等式(4)(5)):

(11)

即,(12)

V矩阵是2*6矩阵,也就是说每张照片可建立起两个方程组,6个未知数。根据线性代数知识可知,解6个未知数需至少6个方程组,所以也就是说我们至少需要三张照片就求解未知数。b矩阵的解出,相机内参矩阵A也就求解出,从而每张图像的R,t也就根据等式(1)迎刃而解。

四 参数优化

因为初始的参数已经求解,所以我们将每张图像的控制点根据求解的参数重投影回三维空间,最小化与真实值的差异,其实就是建立非线性最小化模型:

(13)

这里用的是Levenberg-Marquardt迭代算法。

至此,整个流程走完,至于相机畸变系数的求解本文也不具体展开了。

时间: 2024-11-01 09:51:09

张正友相机标定算法解读的相关文章

张正友相机标定Opencv实现以及标定流程&&标定结果评价&&图像矫正流程解析(附标定程序和棋盘图)

使用Opencv实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么需要标定,标定需要的输入和输出分别是哪些? 相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像. 相机标定的输入:标定图像上所有内角点的图像坐标,标定板图像上所有内角点的空间三维坐标(一般情况下假定图像位于Z=0平面上). 相机标定的输出:摄像机的内参.外参系数. 这三个基础的问题就决定了使用Openc

OpenCV实现张正友相机标定源代码

本源代码基于VC++和opencv Opencv2.4.13.6版本开发,实现张正友相机标定源代码,资源包括完整源代码和12张棋盘图片,完美运行.Opencv2.4.13.6安装包下载地址:http://www.211xun.com/download_page_1261_cn.html 点击下载 原文地址:https://www.cnblogs.com/211xun/p/10499995.html

SLAM入门之视觉里程计(6):相机标定 张正友经典标定法详解

想要从二维图像中获取到场景的三维信息,相机的内参数是必须的,在SLAM中,相机通常是提前标定好的.张正友于1998年在论文:"A Flexible New Technique fro Camera Calibration"提出了基于单平面棋盘格的相机标定方法.该方法介于传统的标定方法和自标定方法之间,使用简单实用性强,有以下优点: 不需要额外的器材,一张打印的棋盘格即可. 标定简单,相机和标定板可以任意放置. 标定的精度高. 相机的内参数 设\(P=(X,Y,Z)\)为场景中的一点,在

张正友标定算法解读(转)

一直以来想写篇相机标定方面的东西,最近组会上也要讲标定方面东西,所以顺便写了.无论是OpenCV还是matlab标定箱,都是以张正友棋盘标定算法为核心实现的,这篇PAMI的文章<<A Flexible New Technique for Camera Calibration>>影响力极大,张正友是zju的机械系出身,貌似现在是微软的终身教授了,有点牛的.我就简单的介绍下算法的核心原理,公式的推理可能有点多... 一 基本问题描述:空间平面的三维点与相机平面二维点的映射 假设空间平面

张正友标定算法理论及算法实现

张正友标定算法理论及算法实现 理论基础 1999年,微软研究院的张正友提出了基于移动平面模板的相机标定方法.此方法是介于传统标定方法和自标定方法之间的一种方法,传统标定方法虽然精度高设备有较高的要求,其操作过程也比较繁琐,自标定方法的精度不高,张正友标定算法克服了这两者的缺点同时又兼备二者的优点,因此对办公.家庭的场合使用的桌面视觉系统(DVS)很适合. 设三维世界中坐标的点为:和二维相机平面坐标的点为: 为方便运算,模板被定义在世界坐标系中与X-y平面平行(即Z=0)的平面上,为模板平面上点的

张正友标定算法原理详解

原文见http://blog.csdn.net/u010128736/ 一.背景   ”张正友标定”是指张正友教授1998年提出的单平面棋盘格的摄像机标定方法[1].文中提出的方法介于传统标定法和自标定法之间,但克服了传统标定法需要的高精度标定物的缺点,而仅需使用一个打印出来的棋盘格就可以.同时也相对于自标定而言,提高了精度,便于操作.因此张氏标定法被广泛应用于计算机视觉方面.二.计算内参和外参的初值 原文地址:https://www.cnblogs.com/excellentlhw/p/106

张正友平面定标法

图像坐标系与物理坐标系 在数字图像处理中,一副二维图片由一个二维矩阵表征.矩阵元素所在的位置即为该点坐标,矩阵元素的大小即为像素值的大小.但是,图像坐标系是离散的且没有物理尺寸,无法和现实世界建立联系.因此,我们引入物理坐标系. 如上图,u和v是图像坐标系的轴,O0为其原点.物理坐标系以图像坐标系的O1(u0,v0)为原点,x,y轴分别平行于u,v轴.设dx,dy为单位像素在x和y方向上的尺寸.其中,u0,v0,dx,dy为相机的内参.由上述可得,物理坐标系中的坐标(u,v)有: u = x/d

[图像]张正友论文翻译(1)

张正友大牛的文章没有人翻译,这篇神文看的我真是纠结啊,英语渣,翻译了一些,供大家参考,希望大家多多包涵,指出我的不足和错误,谢谢. 张正友论文原文 原文链接: 2000.11 A flexible new technique for camera calibration 5.pdf 我的译文   from: http://blog.csdn.net/humanking7/article/details/46689293

[图像]张正友论文翻译(2)

张正友论文原文 原文链接: 2000.11 A flexible new technique for camera calibration 5.pdf 我的译文 备注 后面的翻译省略了不少,希望不会影响到大家的阅读. from: http://blog.csdn.net/humanking7/article/details/46689329