相机参数标定
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。一、原理
1.透视投影模型
普通相机的成像模型采用小孔成像,初中的物理知识告诉我们,物体经小孔后,在成像平面成倒立的像。为了更好的进行理论阐述,一般默认采用虚拟成像平面(virtual image plane)进行分析。
将小孔成像模型简化成几何表达的形式如下
在理想情况下,根据简单的相似三角形几何知识,可以推出3D目标点在相机坐标系下的坐标与图像像素坐标之间的关系, 如公式1-1:
f是焦距,X、Y、Z是3D点在相机坐标系坐标,u,v是图像坐标;写成齐次坐标为:
λ为尺度因子,同一条投影线上的点都满足上述关系,只是λ不同而已;在不换sensor情况下,想增大物体分辨率,其实只要把相机靠近一点就行。
主点偏移
在实际情况中,图像坐标系往往在图片的左上角,光轴过图像中心,因此图像坐标系和相机坐标系不重合。两个坐标系之间存在一个平移运动。
考虑主点偏移后,图像坐标和3D在相机坐标系坐标的关系为:
主点偏移后,透视投影模型的的齐次坐标表达为:
2.外参矩阵
相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像。
相机标定的输入:标定图像上所有内角点的图像坐标,标定板图像上所有内角点的空间三维坐标(一般情况下假定图像位于Z=0平面上)。
相机标定的输出:摄像机的内参、外参系数。
二、相机标定
相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像。
相机标定的输入:标定图像上所有内角点的图像坐标,标定板图像上所有内角点的空间三维坐标(一般情况下假定图像位于Z=0平面上)。
相机标定的输出:摄像机的内参、外参系数。
图片
准备的棋盘格:
准备了六张图片:
代码:
import cv2
import numpy as np
import glob
# 找棋盘格角点
# 阈值
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
#棋盘格模板规格
w = 9 #内角点个数,内角点是和其他格子连着的点
h = 9
# 世界坐标系中的棋盘格点,例如(0,0,0),