基于2D标靶的摄像机标定方法

简介: 基于2D标靶的摄像机标定方法

1摄像机标定步骤

基于2D标靶的平面标定方法,标定过程分为以下三步:①计算标靶平面与图像平面之间的映射矩阵②求解摄像机参数矩阵3求解左右两摄像机之间的相对位置关系,即求解旋转矩阵和平移矩阵

2 各标定步骤实现方法

计算标靶平面与图像平面之间的映射矩阵,计算映射矩阵时不考虑摄像机的成像模型,只是根据平面标靶坐标点和对应的图像坐标点的数据,利用最小二乘方法计算得到

2.1求解摄像机参数矩阵

由计算得到的标靶平面和图像平面的映射矩阵得到与摄像机内部参数相关的基本方程关系,求解方程得到摄像机内部参数,考虑镜头的畸变模型,将上述解方程获

得的内部参数作为初值,进行非线性优化搜索,从而计算出所有参数的准确值

2.3 求解左右两摄像机之间的相对位置关系

设双目视觉系统左右摄像机的外部参数分别为Rl,Tl,与Rr, Tr,,即Rl, Tl表示左摄像机与世界坐标系的相对位置,Rr, Tr表示右摄像机与世界坐标系的相对位置。因此,对于空间任意一点,如果在世界坐标系、左摄像机坐标系和右摄像机坐标系中的坐标分别为Xw,, Xl , Xr,则有:Xl=RlXw+Tl ;Xr=RrXw+Tr.因此,两台摄像机之间的相对几何关系可以由下式表示R=RrRl-1;T=Tr- RrRl-1Tl

在实际标定过程中,由标定靶对两台摄像机同时进行摄像标定,以分别获得两台摄像机的内、外参数,从而不仅可以标定出摄像机的内部参数,还可以同时标定出双目视觉系统的结构参数。由单摄像机标定过程可以知道,标定靶每变换一个位置就可以得到一组摄像机外参数:Rr,Tr,与Rl, Tl,因此,由公式R=RrRl-1 ;T=Tr- RrRl-1Tl,可以得到一组结构参数R和T

3 cvCalibrateCamera2函数的内部过程


1求出内参数矩阵:

(1)使用cvFindHomography函数计算出每一张图像得到的单应性矩阵;将图像的中心像素坐标作为初始的u0和v0,利用M-TM-1=B求出含有fx和fy的b向量。

(2)对于每一个单应性矩阵H先进行归一化处理,然后利用 和 两个条件列出等式,最后列出2 N(N为图像的个数)个等式。

(3)利用最小一乘原理,采用求SVD奇异值分解和伪逆矩阵的方法(cvSVD和cvSVB kSb函数)求解参数.fx和.fy,最终得到包含4个参数的摄像机内部参数矩阵M.


2对每一幅图像求出外部参数矩阵

(1)先通过己经求出的内参数矩阵和己知的像点坐标(在像素坐标系下),利用(2),(3)两式求出考虑了畸变因素的物理坐标系下的像点坐标xp和yp、

(2)通过 的关系,因为均为己知,利用求单应性矩阵的方法从而

求出旋转向量和平移向量的初始值俐用正交的性质进行推导)。

(3)通过高斯一牛顿迭代法迭代次数为20次)对旋转向量和平移向量进行精炼。每次迭代的时候,先通过投影函数cvProjectPoints2,将所有的物理世界坐标在考虑畸变、内部参数、外部参数的情况下进行 再投影,同时求出图像上关于旋转向量和平移向量部分的雅可比导数矩阵,再通过SVD分解和伪逆矩阵的求解计算出偏差值,与初始值相加以后作为下一次迭代的初始值。


3对所有的参数进行全局的优化

对所有的参数进行全局的优化,同样采用迭代法对所有的参数进行精炼褪代次数为30次),每次迭代的时候,先通过投影函数cvProjectPoints2,将所有的物理世界坐标在考虑畸变、内部参数、外部参数的情况下进行再投影,同时求出图像上关于旋转向量、平移向量、 ,  ,  , 和所有畸变系数k1,k2,p1,p,的雅可比导数矩阵,再通过SVD分解和伪逆矩阵的求解计算出偏差值,与初始值相加以后作为下一次迭代的初始值。


相关文章
|
5天前
|
存储 缓存 Java
createTempFile方法详解
createTempFile方法详解
|
9天前
|
SQL 关系型数据库 数据库连接
ExecuteScalar()方法
ExecuteScalar()方法
|
2月前
|
算法 数据安全/隐私保护
常用的有限元网格生成方法
本文介绍了三种常见的有限元网格生成方法:映射法、四(八)叉树法和Delaunay三角化法。映射法通过坐标变换将物理域映射到规则参数域,适合生成结构化和非结构化网格,但处理复杂区域时较困难。四(八)叉树法基于栅格,通过递归细分逼近边界,适用于非结构化网格,但内部和边界网格的相容剖分较复杂。Delaunay三角化法通过保证外接圆特性生成高质量网格,适用于凸区域,但在凹区域需进行边界恢复。前沿推进法则从边界开始逐步向内生成网格,边界质量好,但数据结构设计和推进规则制定有一定挑战。这些方法各有优缺点,常结合使用以优化网格剖分。
347 1
|
12月前
|
SQL 数据库
SqlCommand.ExecuteNonQuery 方法
SqlCommand的一个类,用于包含update、insert、delete、select的Transact-sql 语句中来修改数据库中的数据,并返回结果。
|
12月前
|
C#
C#中的方法
C#中的方法
58 0
|
12月前
|
C#
C#视频—方法
C#视频—方法
v-for的四种方法
v-for的四种使用方法分别是: 1.使用v-for循环一个简单的数组 2.使用v-for循环一个复杂的数组 3.使用v-for循环对象 4.v-for循环一个迭代的数字
|
Java 开发者
|
Python 容器
强大的 accessor 方法
强大的 accessor 方法
想求问一下,瑜伽的练习方法
沐鸣如果勉强坐得太久,很容易因为身体酸麻涨痛而对瑜伽坐姿练习发生退却之心,所以最初练习以“短时多次”为宜,慢慢就能享受到打坐的乐趣了练习瑜伽坐姿时,要坚持腰背挺直,下颗内收,使头部、颈部和脊椎保持在一条直线上。此外,练习全莲花坐时,注意膝盖不要上浮。>