相机标定(Camera Calibration)-学习笔记

文章目录

  • 相机标定(Camera Calibration)-学习笔记
  • 一、简介
  • 二、原理
    • 1. 坐标系 *coordinates*
    • 2. 相机参数 *camera matrix*
      • 2.1 外参数矩阵
      • 2.2 内参数矩阵
      • 2.3 畸变矩阵
        • 2.3.1 径向畸变
        • 2.3.2 切向畸变
      • 2.4 小结
  • 三、相机标定方法
    • 1. 张正友相机标定
  • 四、参考文章

一、简介

在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这个求解参数的过程就称之为相机标定。其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。[百度百科]

相机标定是求解相机参数的过程,可以理解为求世界坐标到像素坐标的映射的过程。相机参数可以用来校正镜头畸变、用真实世界单位测量目标的大小或确定场景中相机的位置。一般用于机器视觉等应用中,以检测和测量物体;还用于机器人技术、导航系统和 3-D 场景重建。用到相机的项目,往往第一步就是进行相机标定。

二、原理

1. 坐标系 coordinates

相机标定简单地说就是坐标系的转换

  • 世界坐标系: 也称为测量坐标系,三维直角坐标系。代表物体在真实世界里的三维坐标,坐标系用Xw,Yw,Zw表示。以其为基准可以描述相机和待测物体的空间位置。世界坐标系的位置可以根据实际情况自由确定。
  • 相机坐标系: 三维直角坐标系。原点位于镜头光心处(透镜的中心),水平轴Xc与垂直轴Yc分别于图像坐标系的X轴和Y轴平行,Z轴为相机光轴,坐标系用Xc,Yc,Zc表示。相机坐标系的原点与图像坐标系的原点之间的距离为f(也就是焦距)。
  • 图像坐标系: 像素在图像中的位置,二维直角坐标系。一般像素坐标系的左上角的顶点就是远点,水平向右是u,垂直向下是v轴。坐标系用u,v表示。像素坐标系和图像坐标系是平移关系。
  • 像素坐标系: 前三个坐标系的单位是毫米,而最后一个坐标系的单位是像素。

2. 相机参数 camera matrix

针孔相机参数用称为相机矩阵的 4×3 矩阵表示。 该矩阵将 3-D 世界场景映射到图像平面。 校准算法使用外部和内部参数计算相机矩阵。 外参数表示相机在 3-D 场景中的位置。 内参数代表相机的光学中心和焦距。

相机参数 介绍
内参数矩阵 (Intrinsics) 从 3-D 世界坐标系到 3-D 相机坐标系的刚性变换
外参数矩阵 (Extrinsics) 从 3-D 相机坐标到 2-D 图像坐标的投影变换
畸变矩阵 (Distortion coefficients) 像素点产生一定的偏移和变形


使用外部参数将世界点转换为相机坐标。 使用内在参数将相机坐标映射到图像平面。


2.1 外参数矩阵

外参数由旋转 R 和平移 t 组成。 相机坐标系的原点位于其光学中心,其 x 轴和 y 轴定义图像平面。

2.2 内参数矩阵

内在参数包括焦距、光学中心(也称为主点)和偏斜系数。 相机固有矩阵 K 定义为:

项目 含义
[ c x , c y ] [c_x , c_y] [cx​,cy​] 光学中心,以像素为单位
( f x , f y ) (f_x, f_y) (fx​,fy​) ( F / p x , F / p y ) (F/p_x,F/p_y) (F/px​,F/py​)以像素为单位的焦距
F F F 以世界单位表示的焦距,通常以毫米表示
( p x , p y ) (p_x, p_y) (px​,py​) 以世界单位表示的像素大小
s s s s = f x t a n α s=f_x tan\alpha s=fx​tanα偏斜系数,如果图像轴不垂直,则该系数不为零。

2.3 畸变矩阵

畸变包括径向畸变(Radial Distortion)和切向畸变(Tangential Distortion)。

2.3.1 径向畸变

2.3.2 切向畸变


项目 含义
x , y x,y x,y 未失真的像素位置。 x 和 y 在归一化图像坐标中。 归一化图像坐标是通过转换到光学中心并除以以像素为单位的焦距从像素坐标计算得出的。 因此,x 和 y 是无量纲的。
k 1 , k 2 , k 3 k_1, k_2,k_3 k1​,k2​,k3​ 镜头的径向畸变系数
p 1 , p 2 p_1,p_2 p1​,p2​ 镜头的切向畸变系数
( p x , p y ) (p_x, p_y) (px​,py​) 以世界单位表示的像素大小
r r r r 2 = x 2 + y 2 r^2=x^2+y^2 r2=x2+y2

2.4 小结

世界坐标系中的点需要经过两步运算转换到像素坐标:

  • 从世界坐标系到相机坐标系
  • 从相机坐标系投影到像素坐标系

这个过程可以描述为:

三、相机标定方法

相机标定主要是为了求得相机的内参矩阵和畸变矩阵,为后面的相机姿态估计做准备。

1. 张正友相机标定

张氏标定法是张正友博士在1999年发表在国际顶级会议ICCV上的论文《Flexible Camera Calibration By Viewing a Plane From Unknown Orientations》中,提出的一种利用平面棋盘格进行相机标定的实用方法。该方法介于摄影标定法和自标定法之间,既克服了摄影标定法需要的高精度三维标定物(贵,操作麻烦)的缺点,又解决了自标定法鲁棒性差的难题。

实现方法:MATLAB相机标定工具箱
https://blog.csdn.net/heroacool/article/details/51023921

四、参考文章

https://blog.csdn.net/qq_44804542/article/details/122161755
https://blog.csdn.net/weixin_45860565/article/details/119302447
https://blog.csdn.net/weixin_45860565/article/details/119302447
https://ww2.mathworks.cn/help/vision/ug/camera-calibration.html
https://baike.baidu.com/item/%E7%9B%B8%E6%9C%BA%E6%A0%87%E5%AE%9A/6912991?fr=aladdin
https://blog.csdn.net/qq_43742590/article/details/104109103
https://zhuanlan.zhihu.com/p/423473576
https://zhuanlan.zhihu.com/p/94244568

1. 相机标定原理(学习笔记)相关推荐

  1. 相机标定 calib3d 学习笔记

    opencv给的官方代码利用xml读取文件,不如简单的读取txt文本的格式,便于编辑.这份代码有三个要注意的地方. 1.txt文件要标好照片 2.Size board_size = Size(7, 8 ...

  2. MOOC人工智能原理学习笔记1

    人工智能原理学习笔记1 The Foundations of AI: Philosophy Mathematics Economics Neuroscience Psychology Computer ...

  3. 自控原理学习笔记-反馈控制系统的动态模型(4)-频率特性函数Nyquist图及Bode图

    自控原理学习笔记 自控原理学习笔记专栏 文章目录 1.频率特性函数 1.1 图形表示方法: 1.2 零极点位置和暂态增益图 1.2.1 复轨迹曲线 1.2.3 例子 1.3 计算系统响应 2.开环频率 ...

  4. 自控原理学习笔记-系统稳定性分析(2)-环路分析及Nyquist-Bode判据

    自控原理学习笔记 自控原理学习笔记专栏 文章目录 3. 环路分析 3.1环路分析基本思想: 3.2 稳定程度的性能指标(相对稳定) 3.3 环路整形 4.Nyquist判据 4.1 与幅角原理关系 4 ...

  5. Golang底层原理学习笔记(一)

    LCY~~Golang底层原理学习笔记 1 源码调试 go源代码地址:GitHub - golang/go: The Go programming language 1.1 源码编译 现在的go语言大 ...

  6. [编译原理学习笔记2-2] 程序语言的语法描述

    [编译原理学习笔记2-2] 程序语言的语法描述 文章目录 [编译原理学习笔记2-2] 程序语言的语法描述 [2.3.1] 上下文无关文法 [2.3.2] 语法分析树与二义性 [2.3.3] 形式语言鸟 ...

  7. 自控原理学习笔记-反馈控制系统的动态模型(1)

    自控原理学习笔记 1.导论 2.反馈控制系统的动态模型(1) 3.反馈控制系统的动态模型(2) 3.反馈控制系统的动态模型(3) 4.反馈控制系统的动态模型(4) 5.反馈控制系统的动态模型(5) 文 ...

  8. Spring5底层原理 学习笔记(二)AOP篇

    文章目录 AOP实现之ajc编译器 AOP实现之agent类加载 AOP实现之动态代理 jdk动态代理 演示 模拟实现动态代理 动态生成代理类需要使用到asm的api,这里就不展开了 Jdk对于反射调 ...

  9. 编译原理学习笔记20——符号表

    编译原理学习笔记20--符号表 20.1 符号表的组织与操作 20.2 符号表的内容 20.3 利用符号表分析名字的作用域 20.1 符号表的组织与操作 符号表 符号表的作用与组织 符号表的整理和查找 ...

  10. 操作系统原理学习笔记(二十一)-对换

    文章首发及后续更新:https://mwhls.top/1350.html 新的更新内容请到mwhls.top查看. 无图/无目录/格式错误/更多相关请到上方的文章首发页面查看. 操作系统原理学习笔记 ...

最新文章

  1. android 带记忆功能的播放器源码,Android实现阅读进度记忆功能
  2. C++字节序反转的实现算法(附完整源码)
  3. dataGridView 行头那一块儿空白是否可见的设置
  4. maven springboot 除去指定的jar包_SpringBoot的运行机制
  5. mysql数据库优化语句_mysql数据库优化语句
  6. Bailian4121 股票买卖【最值】
  7. C语言中的面向对象2
  8. 有关文档流的一些注意事项
  9. Java编程:排序算法——归并排序
  10. CSS3知识点总结---transitionend
  11. 精益思想,从哪里开始?
  12. matlab正太分布的反函数,怎样用matlab求标准正态分布函数的反函数函数值
  13. postgresql 客户端启动配置
  14. python xlwt生成Excel
  15. 21秋期末考试组织行为学10068k2
  16. VC++调用libcurl的VC库使用详解
  17. SDU程序设计思维实践题目总结
  18. 数商云采购管理系统支付结算功能详解,实现建筑工程企业采购业务智能化管理
  19. android中出现javax.net.ssl.SSLPeerUnverifiedException
  20. javaee图书管理系统mysql,图书管理系统设计与实现—看这篇就够了

热门文章

  1. js运算符之三目运算符
  2. PIL处理图片 指定以CMYK模式
  3. 在登录界面中:Form表单中action和onsubmit事件的执行顺序!
  4. http请求,get请求和post请求体以及响应体
  5. centos命令失效_CentOS 7 常见命令、问题及解决方式
  6. 深度学习(预训练网络resnet18)
  7. 青村茶舍||“生态甲鱼”文旅推介直播活动
  8. 计算机一级wps模拟软件,2017计算机一级WPS仿真练习题及答案
  9. qml在部分windows7上文字显示模糊的问题
  10. 千锋逆战1903班Days11上课代码以及笔记