python计算机视觉- 相机模型与参数标定

相机投影模型

针孔相机模型

针孔照相机模型是计算机视觉中广泛使用的照相机模型。该照相机从一个小孔采集射到暗箱内部的光线,在针孔照相机模型中,在光线投影到图像平面之前,从唯一一个点经过,即照相机中心C。如下图所示:
在这里插入图片描述
在这里插入图片描述
x = f X Z x=\frac{fX}{Z} x=ZfX以及 y = f Y Z y=\frac{fY}{Z} y=ZfY可推出:
在这里插入图片描述

像主点偏移

在这里插入图片描述

内参矩阵

在这里插入图片描述

畸变现象

  • 图像径向畸变
    透镜质量原因
    光线在远离透镜中心的地方比靠近中心的地方更加弯曲
  • 桶状畸变
    在这里插入图片描述
  • 枕形畸变
    在这里插入图片描述

畸变矫正

在这里插入图片描述

外参矩阵

在这里插入图片描述

两类参数

  • 相机内部参数/内方位元素: 焦距、像主点坐标、畸
    变参数
  • 相机外部参数/外方位元素: 旋转、平移

在这里插入图片描述

相机标定

  • 同步标定内部参数和外部参数,一般包括两种策
    略:
  1. 光学标定: 利用已知的几何信息(如定长棋盘格)实
    现参数求解。
  2. 自标定: 在静态场景中利用 structure from
    motion估算参数。

线性回归 (最小二乘)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 优点:
    所有的相机参数集中在一个矩阵中,便于求解
    通过矩阵可以直接描述世界坐标中的三维点,到二维图像平面中点的映射关系。
  • 缺点:
    无法直接得知具体的内参数和外参数
    求解出的11个未知量,比待标定参数(9个)更多。带来了参数不独立/相关的问题
    对噪声/误差敏感
    高精度的标定板难以制作

非线性优化

用概率的视角去看最小二乘问题
• 特征点投影方程:
在这里插入图片描述
• 给定{(ui,vi)},标定参数矩阵 M 的似然函数为:
在这里插入图片描述
• 给定{(ui,vi)},标定参数矩阵 M 似然函数的对数为:
在这里插入图片描述
相应求解策略: 牛顿方法、高斯-牛顿方法、Levenberg-Marquardt算法等

标定过程

  1. 打印一张棋盘格A4纸张(黑白间距已知),并贴在一个平板上
  2. 针对棋盘格拍摄若干张图片(一般10-20张)
  3. 在图片中检测特征点(Harris角点)
  4. 根据角点位置信息及图像中的坐标,求解Homographic矩阵
  5. 利用解析解估算方法计算出5个内部参数,以及6个外部参数
  6. 根据极大似然估计策略,设计优化目标并实现参数的refinement

相机标定优点:
• 仅需要平面标定板,拍摄若干张图片
• 标定板中的模式十分灵活,可以是棋盘格,也可以是其他几何结构已知的图形
• 实验结果表明具有很好的标定精度
• 具有很强的灵活性

实验过程

具体代码:

import cv2
import numpy as np
import glob

# 找棋盘格角点
# 阈值
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
#棋盘格模板规格
w = 11  #内角点个数,内角点是和其他格子连着的点
h = 8

# 世界坐标系中的棋盘格点,例如(0,0,0), (1,0,0), (2,0,0) ....,(8,5,0),去掉Z坐标,记为二维矩阵
objp = np.zeros((w*h,3), np.float32)
objp[:,:2] = np.mgrid[0:w,0:h].T.reshape(-1,2)
# 储存棋盘格角点的世界坐标和图像坐标对
objpoints =
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值