计算机视觉学习6_棋盘格_相机模型与参数标定

为什么要进行相机参数标定

在拍摄中,相机可能会出现畸变,用软件的方法校正生成的图像,避免拍摄出的图像产生桶形和枕形畸变
在这里插入图片描述
不同的镜头的在生产和组装过程中的畸变程度各不相同,通过相机标定可以校正这种镜头畸变,生成矫正后的图像。

相机内参矩阵原理

针孔相机模型
在这里插入图片描述

设P=(X,Y,Z)为场景中的一点,在针孔相机模型中,其要经过以下几个变换,最终变为二维图像上的像点p=(μ,ν)

1、将P从世界坐标系通过刚体变换(旋转和平移)变换到相机坐标系,这个变换过程使用的是相机间的相对位姿,也就是相机的外参数。
2、从相机坐标系,通过透视投影变换到相机的成像平面上的像点p=(x,y)
3、将像点p从成像坐标系,通过缩放和平移变换到像素坐标系上点p=(μ,ν)

相机将场景中的三维点变换为图像中的二维点,也就是各个坐标系变换的组合,可将上面的变换过程整理为矩阵相乘的形式
在这里插入图片描述
矩阵K称为相机的内参数矩阵
在这里插入图片描述
对于大多数标准相机来说,可将扭曲参数γ设为0.
像主点(光心):光线坐标轴和图像平面的交点

相机标定方法——Recap: 相机标定

因为相机拍摄的照片会损失三维的信息。
因此如果要对相机进行标定,我们首先要恢复照片的三维信息
在过去,通常采用制造三个相互垂直的平面
标定工具需要有极高的精度,包括不同平面的角度、特征点的物理距离等。因此制作标定工具十分困难。

在这里插入图片描述

张正友标定法

使用棋盘格标定的方法,将照片中的三维信息压缩为二维(Z=0)

在张氏标定法中,用于标定的棋盘格是三维场景中的一个平面Π,其在成像平面的像是另一个平面π,知道了两个平面的对应点的坐标,就可以求解得到两个平面的单应矩阵H
其中,标定的棋盘格是特制的,其角点的坐标是已知的;图像中的角点,可以通过角点提取算法得到(如Harris角点),这样就可以得到棋盘平面Π和图像平面π的单应矩阵H。

方法步骤:
1、检测每张图片中的棋盘图案的角点;
2、利用解析解估算方法计算出5个内部参数,以及6个外部参数
3、通过基于极大似然准则的优化解,提高A,R,t矩阵的精度。

相机模型

在这里插入图片描述
s: 世界坐标系到图像坐标系的尺度因子
A: 相机内参矩阵
(u0,v0): 像主点坐标
α, β: 焦距与像素横纵比的融合
γ: 径向畸变参数

令棋盘格平面为Z=0的平面。
注意,s对于齐次坐标来说,不会改变齐次坐标值。
定义旋转矩阵R的第i列为 ri, 则有
在这里插入图片描述

计算单应性矩阵H

H表示的是成像平面和标定棋盘平面之间的单应矩阵(Homographic矩阵)
可通过最小二乘,从角点世界坐标到图像坐标的关系求解
在这里插入图片描述
在这里插入图片描述
H是一个齐次矩阵,所以有8个未知数,至少需要8个方程,每对对应点能提供两个方程,所以至少需要四个对应点,就可以算出世界平面到图像平面的单应性矩阵H。

计算内参数矩阵

由于旋转矩阵是个正交矩阵,r1和r2正交
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
代入可得:
在这里插入图片描述

即每个单应性矩阵能提供两个方程,而内参数矩阵包含5个参数,要求解,至少需要3个单应性矩阵。为了得到三个不同的单应性矩阵,我们使用至少三幅棋盘格平面的图片进行标定。通过改变相机与标定板之间的相对位置来得到三个不同的图片。
为了方便计算,定义如下:
在这里插入图片描述
可以看到,B是一个对称阵,所以B的有效元素为六个,让这六个元素写成向量b,即
在这里插入图片描述
令hi为单应矩阵H的第i个行向量,则有
在这里插入图片描述

根据b的定义,可以推导出如下公式

在这里插入图片描述
有了上边的等式,再来看从一幅标定板图像得到的等式
在这里插入图片描述推出在这里插入图片描述
如果有n组观察图像,则V 是 2n x 6 的矩阵

在这里插入图片描述
根据最小二乘定义,V b = 0 的解是 VTV 最小特征值对应的特征向量。
因此, 可以直接估算出 b,后续可以通过b求解内参

当观测平面 n ≥ 3 时,可以得到b的唯一解
当 n = 2时, 一般可令畸变参数γ = 0
当 n = 1时, 仅能估算出α 与 β, 此时一般可假定像主点坐标 u0 与 v0 为0

对于方程Vb=0可以使用SVD求得其最小二乘解。对V^TV进行SVD分解,其最小特征值对应的特征向量就是Vb=0的最小二乘解,从而求得矩阵B。由于这里得到的B的估计值是在相差一个常量因子下得到的,所以有:
在这里插入图片描述
在这里插入图片描述

计算外部参数

在这里插入图片描述在这里插入图片描述
基于极大似然准则的优化解这里不做介绍

实验(matlab实现)

设备:华为荣耀V9
matlab实现参考:https://blog.csdn.net/JennyBi/article/details/85764988#%E7%9B%B8%E6%9C%BA%E6%A0%87%E5%AE%9A%E7%9A%84%E5%8E%9F%E7%90%86

实验结果
Camera Intrinsics 相机内部参数
IntrinsicMatrix: [3x3 double] 内参矩阵

FocalLength: [3.2069e+03 3.2136e+03] 焦距
PrincipalPoint: [1.9719e+03 1.4998e+03] 主点, 投影中心
Skew: 0 倾斜参数

Lens Distortion 镜头扭曲
RadialDistortion: [0.0441 -0.2188] 径向失真
TangentialDistortion: [0 0 ]切线失真

Camera Extrinsics 相机外部参数
RotationMatrices: [3x3x19 double] 旋转矩阵
TranslationVectors: [19x3 double] 平移向量

Accuracy of Estimation 估计准确度
MeanReprojectionError: 1.6714 平均投影错误
ReprojectionErrors: [35x2x19 double] 重投影错误
ReprojectedPoints: [35x2x19 double] 重投影点

Calibration Settings 校准设置
NumPatterns: 19
WorldPoints: [35x2 double]
WorldUnits: ‘mm’
EstimateSkew: 0
NumRadialDistortionCoefficients: 2
EstimateTangentialDistortion: 0

在这里插入图片描述
在这里插入图片描述
show original 原始图像
在这里插入图片描述
show undistorted 矫正图像
在这里插入图片描述

参考博客:
https://www.cnblogs.com/wangguchangqing/p/8335131.html#autoid-0-0-0
https://blog.csdn.net/u010128736/article/details/52860364

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
相机标定计算机视觉中的一个重要技术,用于确定相机的内部参数和外部参数,以便准确地测量物体的三维位置和姿态。相机标定的关键技术包括以下几个方面: 1. 图像特征提取:在标定过程中需要利用图像中的特征点进行匹配,从而计算相机的内部参数和外部参数。常用的特征点包括角点、边缘和斑点等。 2. 相机模型相机模型是描述相机成像过程的数学模型,包括针孔相机模型、透视相机模型和鱼眼相机模型等。在相机标定过程中需要选择合适的相机模型,并根据实际情况调整模型参数。 3. 标定板:标定板是一个平面物体,通常为黑白相间的棋盘,用于提供特征点,从而进行相机标定标定板需要具有一定的尺寸和形状,以便在不同角度下都能提供足够的特征点。 4. 标定方法:常用的相机标定方法包括张正友标定法、Tsai标定法和棋盘标定法等。这些方法在标定板的布置、特征点提取和参数优化等方面略有不同,可以根据实际情况选择合适的方法。 针对相机标定中的一些问题,还可以采用一些改进方法: 1. 自动化标定:传统的相机标定需要手动测量标定板的尺寸和形状,比较繁琐。近年来,出现了一些自动化标定的方法,比如基于深度学习标定方法,可以自动识别和测量标定板上的特征点。 2. 多相机标定:在某些应用中,需要同时标定多个相机,以便进行多视角的三维重建或者目标跟踪等任务。多相机标定需要考虑相机之间的相对位置和姿态,可以利用多视角几何的相关知识进行标定。 3. 精度提升:相机标定的精度对于计算机视觉任务的准确性和稳定性非常重要。一些精度提升的方法包括使用高精度的标定板、增加标定板的角点数量、采用更准确的相机模型等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值