张正友标定法
(完整版)张正友相机标定法

0 0 1
设H矩阵中第i列的向量为 hi hi1 hi2 hi3 T
带入到 h1T AT A1h2 0 中有:
hiT B hj vijT b
解得: vij hi1hj1 hi1hj2 hi 2hj1
hi2h j 2
hi3hj1 hi1hj3
0
x0 x'
y0
y'
z0 1
z'
1
R r1 r2 r3
T (t1, t2 , t3 )T
r12 r22 r32 1 r1 • r2 r2 • r3 r3 • r1 0
x
y z
R 0
1
x'
T 1
y' z'
1
图像数字化
O1 在 u, v 中的坐标为 u0, v0
象素在轴上的物理尺寸为 dx, dy
V
Yd
Affine Transformation :
u
u0
xd dx
yd
cot
dx
v
v0
dy
yd sin
齐次坐标形式:
v0
张正友相机标定方法
曲峰
2020/2/16
1 相机畸变
镜头畸变实际上是光学透镜固有的透视失真的总称
枕形畸变:又称鞍形畸变,视野中边缘区域的放大率远大于光轴中心附近 区域放大率。常出现在远摄镜头中。
桶形畸变:同枕形相反,视野中光轴中心附近区域放大率远大于边缘区域。 常出现于广角镜头和鱼眼镜头。
张正友标定法matlab代码

张正友标定法是相机标定中常用的一种方法,通过该方法可以实现相机内外参数的标定。
在使用张正友标定法进行相机标定时,需要编写相应的matlab代码来实现算法。
下面将介绍如何使用matlab实现张正友标定法,并给出相应的matlab代码。
1. 准备标定板图像首先需要准备一组包含标定板的图像,标定板上应具有特定的特征点,例如棋盘格。
这些图像将用于计算相机的内外参数。
2. 读取标定板图像使用matlab的imread函数读取准备好的标定板图像,将图像存储为一个cell数组。
```matlabimages = cell(1,N);for i = 1:Nfilename = ['image',num2str(i),'.jpg'];images{i} = imread(filename);end```3. 提取标定板角点利用matlab的detectCheckerboardPoints函数提取标定板图像中的角点坐标,将提取的角点保存到一个cell数组中。
```matlabimagePoints = cell(1, N);for i = 1:NI = images{i};[imagePoints{i}, boardSize] = detectCheckerboardPoints(I); end```4. 标定相机参数使用matlab的estimateCameraParameters函数对提取的角点进行相机参数标定,得到相机的内外参数。
```matlab[cameraParams, imagesUsed, estimationErrors] = estimateCameraParameters(imagePoints, worldPoints,'EstimateSkew', true, 'EstimateTangentialDistortion', true);```5. 查看标定结果可以利用标定得到的相机参数对新的图像进行矫正,并查看标定结果的精度。
张正友相机标定算法

间的关系可以表示如下:
~ k m K[R
~ t] M
fu , K 0
s fv
0 0
uo
vo
(1)
1
针孔相机成像模型
其中,k是任何非零尺度因子,[ R t]表示摄相
机外参数,其中R是3 3的旋转矩阵,t表示从世
界坐标系到相机坐标系的平移向量,K表示摄像 机内参矩阵,其中 (uo, vo) 是主点坐标,fu和 fv分 别表示x轴和y轴方向的尺度因子,s表示关于两 个坐标系的畸变。
张正友相机标定算法
张正友标定算法
于福翔
针孔相机成像模型
摄像机的基本成像模型是针孔模型。它的成像基础是中心投影。三
维空间中的一点 M (X ,Y, Z)T在图像上的投影点
M 点的连线与图像平面的交点。M~ (X ,Y, Z,t)T 和
m~m(x(,xy, ,yt))TT为分光别心表与示
点 M 和 m 的齐次坐标 。在齐次坐标下,三维点 M 和它的投影点m
张算法的内参限制
我们把单应性矩阵H写成3 3 的3个列向量形式,则H也
可写成:
[h1 h2 h3] K[r1 r2
有:r1 K 1 h1
,
r2
K
1
h2
是一个放缩标量因子,也即k的倒数。
由r1和r2标准正交得:
正交: h1T KT K1h2 0
t] (3)
(4)
单位向量: h1T KT K1h1 h2T KT K1h2 (5)
张正友标定算法
我们将(1)式再简化下:
~
~
k m H M 和 H K[r1 r2 t] (2)
张的算法选取的是平面标定,所以令Z=0,所以R只有r1 和r2即可。H就是单应性矩阵。这里描述的是空间三维点 与相机二维点的之间的关系。因为相机平面中的坐标可 以通过图形处理的方式获取,而空间中点的坐标可以通 过事先做好的棋盘获取。所以每张图片可以计算出一个 单应性举证H。
张正友标定方法

张正友标定方法张正友标定方法是一种常用的相机标定方法,它可以用于计算相机的内部参数和外部参数,从而实现对图像的准确测量和三维重建。
下面将详细介绍张正友标定方法的原理和步骤。
一、原理张正友标定方法基于相机成像原理,通过对已知大小的标定板进行拍摄,从而得到标定板在图像中的像素坐标和实际物理坐标,进而计算出相机的内部参数和外部参数。
其中,内部参数包括相机的焦距、主点坐标和畸变系数,外部参数包括相机的旋转矩阵和平移向量。
二、步骤1. 准备标定板标定板可以是黑白相间的棋盘格或者其他规则的图案,要求图案清晰、对比度高、边缘锐利,同时要求标定板的大小足够大,以便在不同距离和角度下进行拍摄。
2. 拍摄标定板将标定板放置在平面上,保持相机与标定板垂直,同时保持相机位置和姿态不变,拍摄多张标定板的照片,要求标定板在不同位置和角度下都有足够的覆盖面积。
3. 提取角点使用图像处理软件对标定板的照片进行处理,提取出标定板上每个方格的角点坐标,要求角点坐标的提取精度高、稳定性好。
4. 计算内部参数根据相机成像原理,将标定板上每个角点的像素坐标和实际物理坐标进行对应,利用最小二乘法计算出相机的内部参数,包括焦距、主点坐标和畸变系数。
5. 计算外部参数根据标定板在不同位置和角度下的拍摄照片,利用三维重建算法计算出标定板在相机坐标系下的位置和姿态,进而计算出相机的旋转矩阵和平移向量。
6. 验证标定结果将标定结果应用于实际图像中,进行像素坐标和实际物理坐标的转换,计算出图像中物体的实际尺寸和位置,进而验证标定结果的准确性和稳定性。
三、总结张正友标定方法是一种常用的相机标定方法,它可以实现对相机的内部参数和外部参数的准确计算,从而提高图像的测量和三维重建精度。
在实际应用中,需要注意标定板的选择和摆放、角点的提取精度和稳定性等问题,以保证标定结果的准确性和可靠性。
SLAM入门之视觉里程计(6):相机标定张正友经典标定法详解

SLAM ⼊门之视觉⾥程计(6):相机标定张正友经典标定法详解想要从⼆维图像中获取到场景的三维信息,相机的内参数是必须的,在SLAM 中,相机通常是提前标定好的。
张正友于1998年在论⽂:"A Flexible New Technique fro Camera Calibration"提出了基于单平⾯棋盘格的相机标定⽅法。
该⽅法介于传统的标定⽅法和⾃标定⽅法之间,使⽤简单实⽤性强,有以下优点:不需要额外的器材,⼀张打印的棋盘格即可。
标定简单,相机和标定板可以任意放置。
标定的精度⾼。
相机的内参数设P =(X ,Y ,Z )为场景中的⼀点,在针孔相机模型中,其要经过以下⼏个变换,最终变为⼆维图像上的像点p =(µ,ν):1. 将P 从世界坐标系通过刚体变换(旋转和平移)变换到相机坐标系,这个变换过程使⽤的是相机间的相对位姿,也就是相机的外参数。
2. 从相机坐标系,通过透视投影变换到相机的成像平⾯上的像点p =(x ,y )。
3. 将像点p 从成像坐标系,通过缩放和平移变换到像素坐标系上点p =(µ,ν)。
相机将场景中的三维点变换为图像中的⼆维点,也就是各个坐标系变换的组合,可将上⾯的变换过程整理为矩阵相乘的形式:s µν1=α0c x 0βc y1f 0000f 0001R t 0T1X Y Z1=f x 0c x 00f yc y 001Rt 0T1X Y Z1将矩阵K 称为相机的内参数,K =f x0c x 0f yc y 001其中,α,β表⽰图像上单位距离上像素的个数,则f x =αf ,f y =βf 将相机的焦距f 变换为在x,y ⽅向上像素度量表⽰。
另外,为了不失⼀般性,可以在相机的内参矩阵上添加⼀个扭曲参数γ,该参数⽤来表⽰像素坐标系两个坐标轴的扭曲。
则内参数K 变为K =f xγc x 0f yc y 01对于⼤多数标准相机来说,可将扭曲参数γ设为0. Multiple View Geometry in Computer Vision张⽒标定法在上⼀篇博⽂,介绍的单应矩阵表⽰两个平⾯间的映射。
张正友标定法

K2
f
z
K矩阵被称为内参数
单应性映射
X u X Y K [ r r r t ] K [ r r t ]Y s v 1 2 3 1 2 0 1 1 1
单应性(homography): 在计算机视觉中被定义 为一个平面到另一个平面的 投影映射。
Harris角点检测
提取角点坐标
角点坐标检测算法的改进
I. II.
手动框选标定板的四个顶点; 在四边形内根据纵向和横向的方格 个数进行一次均匀分割,解算出初 始角点坐标;
III. 以初始角点为中心,框选出矩形区 域,再在矩形区域内进行Harris角 点检测。
标定实验及结果
标定实验
由于需要拍摄3张以上图像,如果在手机镜头上滴水, 水滴的滑动将影响摄像系统的内参,因此采用在手机 镜头前加一单透镜并保持两者相对位置不变,只改变 标定板的位置进行标定实验。
内外参数求解 令:
B11 B K T K 1 B21 B31 B12 B22 B32 B13 B23 B33
b [B11, B12 , B22 , B13 , B23 , B33 ]
化简
hiT Bhj VijT b
得:
Vij [hi1hj1, hi1hj 2 hi 2hj1, hi 2hj 2 , hi3hj1 hi1hj 3 , hi 3hj 2 hi 2hj 3 , hi 3hj 3 ]T
刚体变换
x=R X +T
x r00 y r 10 z r20 r01 r11 r21 r02 X Tx Y T r12 y r22 Z Tz
张正友标定法示例(含源代码)

张正友标定法⽰例(含源代码)
博主在博客园的第⼀篇博客,以著名的张⼤⽜标定法开始吧!
具体标定原理就不详细说了,资料数不胜数,重点看张正友的原著《A Flexible New Technique for Camera Calibration》,搞明⽩这篇⽂章就⾜够了。
好了,现在主要说⼀下标定过程,并附上博主⾃⼰调⽤Opencv接⼝编写的代码。
1.拍摄棋盘格图⽚,8幅左右合适,⽂献⾥说n=8时,最⼩⼆乘法计算内参有稳定解。
所以我就拍了9幅。
2. 读取棋盘格图像,提取⾓点(注意:都是内⾓点)。
为了提⾼⾓点提取精度,进⼀步进⾏亚像素⾓点的提取,附上亚像素⾓点提取后的棋盘格图像。
3. 开始摄像机标定,opencv1.0 2.0版只有⼀种摄像机标定模型,就是普通的⼩孔成像模型,在cv::空间下。
⽽从opencv3.0开始,新增了⼀种鱼眼相机标定模型,在fisheye::空间下。
两种模型的主要区别在于像与物的投影关系不同,具体的⽂献资料依然是数不胜数,这⾥就不赘述。
根据opencv官⽅⽂档的建议,在畸变程度较⼤的⼴⾓镜头(⽐如:鱼眼镜头)上进⾏摄像机标定和畸变校正,最好是⽤fisheye模型,该模型在图像边缘畸变程度很⼤的地⽅⽐普通相机模型的效果要好。
4. 对标定结果进⾏评价
5.保存标定结果,写⼊txt⽂件,主要是内参(归⼀化焦距,fx,fy; 光⼼坐标cx,cy;以及畸变系数k1,k2k3...)
好了,主要过程介绍完了,附上我放在码云上的源代码连接:。
张正友标定方法

张正友标定方法引言标定(calibration)是计算机视觉领域中重要的任务之一,广泛应用于三维重建、增强现实、机器人导航等领域。
在标定过程中,我们需要确定摄像机的内参和外参,以便把图像坐标转换到真实世界坐标。
张正友标定方法(Zhang’s calibration method)是一种常用的摄像机标定方法,被广泛应用于计算机视觉领域中。
张正友标定方法概述张正友标定方法基于相机投影方程,通过观察已知的图像特征点和世界坐标系下的点对,实现摄像机的内参和外参的估计。
具体步骤如下:1.收集标定板图像:首先需要收集包含已知世界坐标系下特征点的标定板图像。
标定板通常是一个黑白棋盘格,由若干个方格组成。
2.提取特征点:使用图像处理方法(例如角点检测算法)提取每幅标定板图像中的特征点。
特征点通常是棋盘格的角点。
3.计算图像特征点的图像坐标和世界坐标系下的点对:对于每个特征点,我们已知它在图像中的像素坐标,同时已知对应的世界坐标系下的点(通常为平面上的点)。
4.标定摄像机内参:根据图像特征点的像素坐标和世界坐标系下的点对,通过最小二乘法或其他优化方法,估计摄像机的内参矩阵,包括焦距、主点和畸变等参数。
5.标定摄像机外参:对于每个标定板图像,通过求解相机投影方程,估计摄像机的外参矩阵,包括旋转矩阵和平移向量。
6.优化标定结果:通过重投影误差最小化等方法,优化标定结果,提高标定的准确性。
张正友标定方法的优势张正友标定方法相比其他标定方法具有以下优势:1.简单易实现:张正友标定方法的步骤相对简单,只需要一些基本的图像处理和优化算法即可。
在实际应用中,我们可以使用开源的计算机视觉库(如OpenCV)来实现。
2.准确性高:张正友标定方法在提取特征点和估计摄像机参数的过程中引入了一些优化方法,可以提高标定的准确性。
3.鲁棒性强:张正友标定方法对于一些噪声和异常值具有一定的鲁棒性,可以应对一些实际场景中的干扰因素。
使用张正友标定方法的注意事项在使用张正友标定方法时,我们需要注意以下事项:1.标定板的选择:标定板的选择应根据实际应用场景来确定。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
小组成员:张文豪 张智宇 陈宇
一、张正友标定法简介
目 二、张正友标定法数学原理 录 三、张正友标定法程序实现
四、标定实验及结果
张正友标定法 简介
像机标定:
建立摄像机图像像素位置与场景点位置 之间的关系,其途径是根据摄像机模型, 由已知特征点的图像坐标求解摄像机的 模型参数。
➢ 张正友标定法是张正友教授于1998年 在名为“A Flexible New Technique for Camera Calibration”一文中提 出的单平面棋盘格的摄像机标定方法。
➢ 透视投影
像平面 光心
f z
x=RX +
r01 r11
r02 r12
X Y
Tx Ty
z r20 r21 r22 Z Tz
[R,T]矩阵被称为外参数
光轴
K=
x f
y
0
1 0
K1K2
0 0 xc
f
0
yc
0 1 zc
u 1/ dx
v
B
K
T
K
1
B21
B22
B23
B31 B32 B33
b [B11, B12 , B22 , B13, B23, B33 ]
化简 hiT Bhj VijTb 得:
Vij [hi1hj1, hi1hj2 hi2hj1, hi2hj2 , hi3hj1 hi1hj3 , hi3hj2 hi2hj3 , hi3hj3 ]T
0
1 0
0 1/ dy
0
u0 x
v0
y
1 1
K矩阵被称为内参数
K1 K2
➢ 单应性映射
X
u
s
v
K [ r1
r2
r3
t] Y 0
K [ r1
r2
X
t ]Y
1
1
1
sm~ HM~
✓ 单应性(homography): 在计算机视觉中被定义
为一个平面到另一个平面的 投影映射。
标定实验及结果
➢ 标定实验
✓ 由于需要拍摄3张以上图像,如果在手机镜头上滴水, 水滴的滑动将影响摄像系统的内参,因此采用在手机 镜头前加一单透镜并保持两者相对位置不变,只改变 标定板的位置进行标定实验。
➢ 内参解算
➢ 畸变矫正
参数解算
畸变参数计 算
畸变矫正
输出矫正图 像
➢ 角点坐标提取
灰度转换 中值滤波 二值化 边缘膨胀 Harris角点检测 提取角点坐标
➢ 角点坐标检测算法的改进
I. 手动框选标定板的四个顶点; II. 在四边形内根据纵向和横向的方格
个数进行一次均匀分割,解算出初 始角点坐标; III. 以初始角点为中心,框选出矩形区 域,再在矩形区域内进行Harris角 点检测。
张氏标定法具有以下优点: ✓ 器材简便,无需特定的
表示物,一张打印的棋 盘格即可; ✓ 精度高,相对误差可低 于0.3%; ✓ 实验过程简单,相机和 标定板都可以自由放置。
张正友标定法 数学原理
➢ 坐标系
世界坐标系 相机坐标系
Z
0 X
刚体 变换 Y
z
y 0 x
图像坐标系
透视 投影
u
v 0
➢ 刚体变换
/ B11
B11 / (B11B12 B122 )
B12 2 /
u0 v0 / B13 2 /
外参数 r1 K 1h1, r2 K 1h2 ,t K 1h3
张正友标定法 程序实现
➢ 算法流程
标定板图像 输入
角点坐标提 取
构造方程
最大似然参 数优化
最小二乘法 参数估计
H [h1 h2 h3 ] K [r1 r2 t]
✓ 根据旋转矩阵的性质,即r1T r2 0 和 r1 r2 1 ,每幅图象可以获 得两个对内参数矩阵的基本约 束:
h1T K T K 1h2 0 h1T K T K 1h1 h2T K T K 1h2
➢ 内外参数求解
令:
B11 B12 B13
(V11
V12 V22
)T
b
0
✓ 由于摄像机有5个未知内参数,所 以当所摄取得的图象数目大于等 于3时,就可以线性唯一求解出K。
内参数
v0
(B12 B13 B11B23 ) / (B11B12 B122 ) B33 [B132 v0 (B12B13 B11B23 )] /
B11