1、基本原理
相机标定指建立相机图像像素位置与场景点位置之间的关系,根据相机成像模型,由特征点在图像中坐标与世界坐标的对应关系,求解相机模型的参数。相机需要标定的模型参数包括内部参数和外部参数。
针孔相机成像原理其实就是利用投影将真实的三维世界坐标转换到二维的相机坐标上去,其模型示意图如下图所示:
数学公式:
即:
参数意义:
x是相机中的坐标
X为真实的坐标
K为内参矩阵
[R|t]为外参矩阵
R是描述照相机方向的旋转矩阵
t是描述照相机中心位置的三维平移向量
1.1计算单应性矩阵
设三维世界坐标的点为X=[X,Y,Z,1]T,二维相机平面像素坐标为m=[u,v,1]T,所以标定用的棋盘格平面到图像平面的单应性关系为:
我们把K[r1, r2, t]叫做单应性矩阵H,即
1.2计算内参数矩阵
r1和r2正交,可得
代入上式后
1.3计算外参数矩阵
通过Homography求解
2、具体实现
2.1数据准备
这里采用的是8*8的棋盘格,总共拍摄了11张图片
相机:iPhone7P
2.2实验代码
# coding=utf-8
import numpy as np
import cv2
import glob
# 终止标准
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
#w = 7
#h = 7
#准备对象点,如(0,0,0),(1,0,0),(2,0,0)......,(6,5,0)
#objp = np.zeros((w*h,