相机自动标定开发记录
2017-06-19 15:12
246 查看
相机自动标定开发记录
一 简介
相机的焦距、传感器尺寸、照片像素尺寸等都属于相机内部参数,内部参数的确定是相机位置、姿态估算过程中的重要环节,直接影响相机位置和姿态的估算误差。为了降低位置、姿态的估算误差,可以首先使用自动标定的方法来提高内部参数的精确度。相机内部参数通常使用矩阵形式表达,称为相机内部参数矩阵(Intrinsic cameral matrix,简称“内部矩阵”,用K表示),相机自动标定的目的是自动计算内部矩阵,内部矩阵是对极几何计算中的基础参数之一,在单目、双目等机器人视觉条件下,进行相机位置、姿态估算和三维重建时,内部矩阵都是必须提前获取的。而内部矩阵的自动标定则能够减少人工操作,甚至可以提高计算精度,在OpenCV中已经作为基础库提供了,在Matlab中也有相关库可以使用,由此,相机自动标定是一个值得尝试的内容。
相机自动标定开发记录
一 简介
二 数学原理
约束1-垂直线
三 实验测试
测试约束1-垂直线
二 数学原理
相机自动标定以内部矩阵K(见简介)与ICA(The image of the absolute conic,称为“绝对二次曲线”,用ω表示)的数学关系为中介,在计算得到ω之后,利用Cholesky factorization可以得到K(可参考[Hartley, 2003] Section A 4.2.1 p582)。ICA与Vanishing point、vanishing line和单应矩阵(Homography,用H表示)有关,因此ICA依靠上述三种条件的约束进行估算。这些约束的数学表示参见[Hartley, 2003]。根据这些约束,可以构建对应的方程(Constraint),下面将逐一介绍。
图1 ICA(表中以ω表示)与Vanishing point, vanishing line和homography的数学关系([Hartley, 2003] Table 8.1 p224)
1 约束1-垂直线
第一种约束利用的是垂直线,大意为“两条互相垂直的直线的灭点可以构建一个约束方程”。令两条互相垂直的直线的灭点分别称为v1和v2,则存在方程vT1ωv2=0。其中,v1是灭点在投影平面(也就是相机拍摄的照片)上,v2与v1相同。根据书[Hartley, 2003]中例子(Fig. 8.22, p226,见下图),计算内部矩阵所使用的是三个灭点,这三个灭点所属的直线互相垂直。虽然书中没有详细介绍计算流程,但可以推断,计算方法是对三个灭点两两组合,得到三种组合方式,每种组合得到一个约束方程,一共得到三个约束。
相机内部矩阵K与相机的成像原理有关,小孔成像是最简单的成像原理,但同时也是最基本的,能够引申出透视投影的相机模型(Projective camera,可参考[Hartley, 2003],p154),这种相机模型可以近似地描述普通相机,我们之前做过类似验证。下图所使用的相机可用透视投影模型描述,而且是焦距有限长的模型(Finit projective camera),这种透视投影模型所建立的相机内部矩阵含有5个未知参数,分别与焦距、镜头畸变、像素中心坐标、传感器单位距离所占据的像素数量有关(可参考[Hartley, 2003],p157)。由于一般的数码相机已经处理好了镜头畸变,而且传感器的像素格为矩形(表示传感器单位距离所占据的像素数量在两个轴向上具有固定比例关系,甚至是直接相等的),因此可以将内部矩阵K中的未知参数数量减少到3个,同时表示IAC的ω矩阵中的未知参数数量也同样降为3个,此时,已经可以用上述的三个约束方程进行求解了。
灭点的计算过程中会经常求解两条直线的交点,其求解方法可参考[Hartley, 2003] (p27),使用直线和点的齐次坐标形式,交点通过两条直线的向量叉乘得到,而直线同样通过在其上的两个点的向量进行叉乘得到。在真实测量中,由于点的选取存在误差,考虑提高精度时,可以通过引入最小二乘估计,我们在这里尚未使用,暂不介绍。
图2 利用垂直线约束进行相机校准([Hartley, 2003] Fig. 8.22, p226)
三 实验测试
1 测试约束1-垂直线
照片见图3。内部矩阵的估算流程如下:首先计算三个灭点,然后建立灭点与ICA之间的关系方程,组成方程组,使用最小二乘法估算ICA,最后使用Cholesky factorization估算K。第一步,计算灭点。将向量叉乘改为矩阵乘法,直线和点均适用齐次坐标表示,直线的齐次坐标可用两点的齐次坐标的叉乘得到,而交点的坐标也同样可用两条直线的坐标的叉乘得到(参考[Hartley, 2003], p27)。本例的计算结果见表2.
图3 垂直线测试
直线方向 | 齐次坐标 |
---|---|
X | 335.1, -220.9, 1 |
Y | 11921.9, -1133.6, 1 |
Z | 3552.3, 8430.9, 1 |
[Hartley, 2003]: Hartley R, Zisserman A. Multiple View Geometry in Computer Vision[M]. Cambridge University Press, 2003.
相关文章推荐
- Vuforia SDK---- AR开发vuforia 相机自动对焦代码实现
- 支持多选的邮件自动补全提示插件 - 【第一次插件开发过程记录】
- 全自动相机标定软件
- Matlab2015 双目相机自动标定
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- CAMCER CALIBRATION/USB_CAM相机标定记录
- MiniOA开发过程记录(33)-自动登录模式
- Vuforia SDK---- AR开发vuforia 相机自动对焦代码实现
- 命令行手工测试日志的自动记录工具开发思路
- Andriod相机开发关于startPreview Failed的错误的特别记录(重要)
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- Java开发: Mybatis insert 插入记录后自动返回主键(Mybatis3.x)
- ios 相机开发 自动对焦
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- DALSA相机开发记录(01)
- JavaWeb开发使用Cookie创建-获取-持久化、自动登录、购物记录、作用路径
- MiniOA开发过程记录(33)-自动登录模式