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

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

理论基础

1999年,微软研究院的张正友提出了基于移动平面模板的相机标定方法。此方法是介于传统标定方法和自标定方法之间的一种方法,传统标定方法虽然精度高设备有较高的要求,其操作过程也比较繁琐,自标定方法的精度不高,张正友标定算法克服了这两者的缺点同时又兼备二者的优点,因此对办公、家庭的场合使用的桌面视觉系统(DVS)很适合。

设三维世界中坐标的点为:和二维相机平面坐标的点为:

为方便运算,模板被定义在世界坐标系中与X-y平面平行(即Z=0)的平面上,为模板平面上点的齐次坐标,   为模板平面上点投影到图像平面上对应点的齐次坐标。  为相机内参矩阵。旋转和平移矩阵记为分别为R、t,缩放因子标量记为s。

根据旋转矩阵的性质,对于每副图像,可以得到约束条件:

        (a)

根据矩阵知识,当所取图像数目大于等于3时含有5个未知的内参数的矩阵A可以被唯一求解。

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

   (b)

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

式(b)改写成:

最后根据内参数的限制条件式(a):

矩阵V是2x6矩阵,即每张照片可以建立两个方程组,包含六个未知数。根据线性代数知识可知,要求解所有未知数至少需要六个方程组,因此这样至少需要三张照片才能解出所有未知数。b解出后就可以解出相机内参矩阵A,然后解得每张图像的外部参数R、t:

其中

极大似然估计与径向畸变处理

(1)极大似然估计

当初始参数已经解出后,每张图像的控制点根据求解的参数再还原回出三维世界坐标,再通过建立非线性最小化模型优化解得值与真实值的差异,也即:

利用这个模型结合LM优化算法,就可以得到最优化的参数。

(2)径向畸变的处理

这个模型建立到此还为考虑过镜头的畸变问题,但一般情况下的相机都会存在一定程度的径向畸。这里我们只考虑二次畸变。

设(u , v)为理想的像素坐标,为实际的像素坐标。对应地,(x, y)和为理想和实际的图像坐标。于是有:

其中k1与k2为径向畸变系数。对于中心点畸变同样适用。然后由 我们得到下式:

已知,n副图的m个点,通过最小二乘法求解这个线性方程组的解。一旦k1、k2得到后,就可以利用上式替代通过处理式极大似然公式中的来优化其他参数。通过反复替换这两个过程,直到满意为止。

除此之外,求解出的畸变系数还可以通过极大似然估计来优化,其公式为:

张正友标定算法的实现

首先,对于张正友算法的标定点选取,一般是选择能均匀分布于整个图像的一些点。对于相机的标定精度而言,选取的点越多,反应图像的信息越完整,因而得到的结果越好。但是随着点数的增加,其运算量增加,同时增加点数带来精度提高的效果随着点数增加而逐渐减弱。因此,通常情况下张正友算法选取均匀分布于图像上的十个点。本次试验中共取用了同一摄像机从不同角度拍摄的六幅图像,从每幅图像中取十个特征点来进行摄像机标定(这十个点的世界坐标相同)。图中显示了这六幅图,每幅图的大小为384×512。

具体流程是:

1)把被取的十个点的世界坐标(齐次坐标)进行转置。

2)对单应性矩阵求解并优化。

3)把六幅图的单应矩阵求解出来后求解出6向量(B矩阵)。因为每个单应矩阵可以得到两个方程,通过循环对矩阵y赋值后,再对y进行正交分解即可得到6向量。进而得到相机的内参矩阵。

4)先求解出相机的外参,然后对畸变系数进行求解,得到相机坐标(Xc, Yc, Zc)。

5)调用函数对内参和畸变系数进行优化,并显示优化后的结果。然后根据优化后的结果求解外参矩阵。

6)从旋转矩阵中分解出独立变量(三个坐标的转角),再得到平移矩阵,最后把它们和内参、畸变系数一起优化进行最终优化。

******************

作者:hao_09

时间:2015/8/13

文章地址:http://blog.csdn.net/lsh_2013/article/details/47617909

******************

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 11:45:33

张正友标定算法理论及算法实现的相关文章

张正友标定算法原理详解

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

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

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

张正友相机标定算法解读

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

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

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

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

使用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

张正友平面定标法

图像坐标系与物理坐标系 在数字图像处理中,一副二维图片由一个二维矩阵表征.矩阵元素所在的位置即为该点坐标,矩阵元素的大小即为像素值的大小.但是,图像坐标系是离散的且没有物理尺寸,无法和现实世界建立联系.因此,我们引入物理坐标系. 如上图,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