相机标定和双目相机标定标定原理推导及效果展示

article/2025/10/22 5:53:53

文章目录

  • 前言
  • 一、相机标定
    • 1.相机的四个坐标系
    • 2.相机的畸变
  • 二、张正友标定法
    • 1.求解内参矩阵与外参矩阵的积
    • 2.求解内参矩阵
    • 3.求解外参矩阵
    • 4.标定相机的畸变参数
    • 5.双目标定
    • 6.极线矫正(立体校正)
  • 三、视差图与深度图


前言

  参考了一些大佬的文章,整理了一下相机标定和双目标定的原理和推导。


一、相机标定

  摄像机成像就是空间场景投影至二维图像平面的空间变换过程。摄像机标定的要解决两个问题:首先确定三维空间点与像素平面像素点间的转换关系,即求解相机内外参;然后确定相机成像过程中的畸变系数,用于图像矫正,因此摄像机标定的参数包括:相机内部参数,外部参数以及畸变参数。
  另外仅仅利用单目相机标定的结果,是无法直接从像素坐标转化到物理坐标的,因为透视投影丢失了一个维度的坐标,所以测距其实需要双目相机。

1.相机的四个坐标系

  相机成像系统中,共包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。
在这里插入图片描述
  在一些其他文章中均有说明这四个坐标系分别是什么意思,推荐大家看一下这几位博主的文章,非常有收获。
立体视觉入门指南(1):坐标系与相机参数
相机标定之张正友标定法数学原理详解(含python源码)
相机标定、双目相机标定(原理)、三维重建效果展示
在这里插入图片描述世界坐标系:Xw、Yw、Zw。
相机坐标系: Xc、Yc、Zc。
图像坐标系:x、y。
像素坐标系:u、v。
  其中,相机坐标系的Z轴与光轴重合,且垂直于图像坐标系平面并通过图像坐标系的原点,相机坐标系与图像坐标系之间的距离为焦距f。像素坐标系平面u-v和图像坐标系平面x-y重合,但像素坐标系原点位于图中左上角。

  世界坐标系到像素坐标系转换的全过程:
在这里插入图片描述
这里要说明一下几个问题:
1、外参R、T ,也就是世界坐标系到相机坐标系,要6个自由度,除了旋转还要进行平移。
在这里插入图片描述
2、s为比例因子(s不为0),f为有效焦距(光心到图像平面的距离)。相机坐标系转图像坐标系就是等比例缩放的过程。
3、a= f/dX、ay= f/dY,称为u、v轴的尺度因子,M1称为相机的内部参数矩阵,M2称为相机的外部参数矩阵,M称为投影矩阵。

2.相机的畸变

  相机拍摄的图片还存在一定的畸变,畸变包括桶形畸变和枕形畸变。在我的这篇文章中有解释和畸变矫正opencv-python光学畸变校准
径向畸变公式(3阶)如下:
在这里插入图片描述
切向畸变公式如下:
在这里插入图片描述
  相机标定的第二个目的就是获得相机的畸变参数,如上式中的K1,K2,K3,P1,P2 等,进而对拍摄的图片进行去畸变处理。

二、张正友标定法

原文我已经帮大家下载好了,直接获取就可以了。链接:https://pan.baidu.com/s/1wp-GmVuc3CTyRXYX1V7aBQ
提取码:8owo

  张正友标定法标定相机的内外参数的思路如下:
1)求解内参矩阵与外参矩阵的积;
2)求解内参矩阵;
3)求解外参矩阵。

1.求解内参矩阵与外参矩阵的积

  张正友标定法将世界坐标系固定于棋盘格上,则棋盘格上任一点的物理坐标 W=0 ,因此,原单点无畸变的成像模型可以化为下式。其中, R1,R2为旋转矩阵R的前两列。为了简便,将内参矩阵记为 A。
在这里插入图片描述
注:对于不同的图片,内参矩阵A为定值;对于同一张图片,内参矩阵A,外参矩阵(R1 R2 T)为定值;对于同一张图片上的单点,内参矩阵A,外参矩阵(R1 R2 T) ,尺度因子s为定值。
我们将内参矩阵A和外参矩阵(R1 R2 T)的积记为矩阵H,H即为单应矩阵,则有:
在这里插入图片描述
在这里插入图片描述

  尺度因子 s可以消掉,这里的H是齐次矩阵,有8个独立未知元素。每一个标定板角点可以提供两个约束方程的对应关系。因此,当一张图片上的标定板角点数量等于4时,即可求得该图片对应的矩阵 。
  以上只是理论推导,在真实的应用场景中,我们计算的点对中都会包含噪声。比如点的位置偏差几个像素,甚至出现特征点对误匹配的现象,如果只使用4个点对来计算单应矩阵,那会出现很大的误差。因此,为了使得计算更精确,一般都会使用远大于4个点对来计算单应矩阵。另外上述方程组采用直接线性解法通常很难得到最优解,所以实际使用中一般会用其他优化方法,如奇异值分解、Levenberg-Marquarat(LM)算法。

2.求解内参矩阵

  求出来的单应矩阵H是内参矩阵和外参矩阵的混合体,而我们想要最终分别获得内参和外参,所以需要先求内参或者先求外参。先求内参是因为更容易,因为每张图片的内参都是固定的,而外参是变化的。最后求得如下,具体可以参考大佬的推导相机标定之张正友标定法数学原理详解(含python源码)
在这里插入图片描述
最后可根据对应关系求出结果。
在这里插入图片描述

3.求解外参矩阵

  上面我们已经求导了单应矩阵H和内参矩阵A,自然就可以求得每一张图片对应的外参矩阵(R1 R2 T)。
注:这里值得指出,完整的外参矩阵为在这里插入图片描述
但是,由于张正友标定板将世界坐标系的原点选取在棋盘格上,则棋盘格上任一点的物理坐标W=0 ,将旋转矩阵的R的第三列 R3消掉,因此,R3在坐标转化中并没有作用。但是 要使得 R3满足旋转矩阵R的性质,即列与列之间单位正交,因此可以通过向量 R1,R2的叉乘,即R1 X R2 = R3 ,计算得到R3。

4.标定相机的畸变参数

畸变后的像素坐标为u^v^
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此处也是参考了大佬的推导,建议大家都看一下,非常推荐!

5.双目标定

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

在这里插入图片描述
通过 P = R X Pl + T可以推出:
在这里插入图片描述
  需要说明的是,无论是Rl、Rr、Tl、Tr,这些在我们单目标定的时候都已经获得过了,opencv单目标定函数中,除了返回我们相机内参、畸变系数外,相机相对于标定物的旋转、平移矩阵也一并返回了,我们可以直接可以用。

6.极线矫正(立体校正)

  之前写的文章里面有介绍极线矫正opencv-python立体匹配(极线校正)
   立体校正的目的就是,利用立体标定所获得的参数将实际非共面行对准的两幅图像,校正成共面行对准。
在这里插入图片描述

三、视差图与深度图

引用大佬的文章立体匹配入门指南(8):视差图、深度图、点云
在这里插入图片描述

在这里插入图片描述
通过三角形相似可得出:

在这里插入图片描述

在这里插入图片描述
其中,Z为深度,d为视差,b为基线长度,f为焦距(像素单位),xr和xl分别为左右视图主点的列坐标。
注:视差图中存的是视差d,深度图中存的是深度Z。


http://chatgpt.dhexx.cn/article/KK7RwUal.shtml

相关文章

视觉基础之相机标定

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 基于视觉的图像处理,通常要在实验前进行相机的标定,以获取相应的参数。为方便查阅,遂将常用到的三种相机标定总结如下。 相机内参标定…

照相机标定

一.相机标定的原理 1.1 相机如何成像: 相机成像系统中,共包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。 1.1.1 世界坐标系: 世界坐标系(world coordinate),也称为测量坐…

Opencv——相机标定

相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像。 相机标定的输入:标定图像上所有…

为什么需要对相机标定?

以下内容来自系统教程如何搞定单目/鱼眼/双目/阵列 相机标定? 点击领取相机标定资料和代码 为什么需要对相机标定? 我们所处的世界是三维的,而相机拍摄的照片却是二维的,丢失了其中距离/深度的信息。从数学上可以简单理解为&…

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

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

相机标定目的及原理

相机标定的目的: 相机标定的目的有两个,一个就是矫正由于镜头畸变造成的图片的变形,例如,现实中的直线,拍摄成图像后会外凸或内凹,进行相机标定后可以对这种情况进行校正;另一个是根据获得得图像…

Python之OpenCV相机标定方法

本文结合OpenCV官方样例,对官方样例中的代码进行修改,使其能够正常运行,并对自己采集的数据进行实验和讲解。 一、准备 OpenCV使用棋盘格板进行标定,如下图所示。为了标定相机,我们需要输入一系列三维点和它们对应的…

相机标定,内参数与外参数

相机标定 简介 所谓的相机标定就是将外界世界的坐标信息转化为计算机(自带相机/摄像头)可以理解的“距离”,将世界坐标系转换到相机坐标系。我们可以理解为从一个坐标系转换到另一个坐标系所需要的转换关系就是相机标定。 简单滴说&#x…

相机标定——张氏标定法

目录 前言动机为什么要进行相机标定什么是张氏标定法 张氏标定法的原理透镜成像原理世界坐标系到相机坐标系的转换相机坐标系到图像坐标系的转换图像坐标系到像素坐标系单应性矩阵内参求解外参求解Matlab实操 前言 动机 前段时间在整机械臂的手眼标定,也就是标定3D…

相机标定系列(三)利用matlab进行相机标定

相机标定系列(三)利用matlab进行相机标定 文章目录 相机标定系列(三)利用matlab进行相机标定前言一、棋盘格图像的采集二、单目相机标定三、双目相机标定 前言 matlab的应用程序中含有对双目相机和单目相机的标定工具箱&#xff…

机器视觉——相机标定

1 机器视觉为什么要做相机标定 机器视觉是采用相机成像来实现对三维场景的测量、定位、重建等过程。是一个利用二维图像进行三维反推的过程,我们所处的世界是三维的,而图像或者照片是二维的,可以把相机认为是一个函数,输入量是一…

相机标定篇——相机标定

认为相机标定是三维重建的核心,研究生期间主要方向为结构光三维重建 必要的数学知识 线性方程求解 Gauss消元法;LU分解;Cholesky分解 最小二乘问题-线性方法 特征值分解;奇异值分解;超定线性方程;最小二乘…

【相机标定】相机内参

相机标定 相机在计算机视觉方面的一些应用一般需要相机标定。我们总是听到标定这个词,那么具体标定的是什么呢?相机的拍摄是一个三维到二维(透视投影)的过程,这个过程可以用数学模型去表述,标定便是计算这…

什么是相机标定

1. 相机标定的定义及作用 相机标定是指借助标定板来计算单个或多个相机的内参、外参和镜头畸变参数。 作用: 将畸变的图像恢复为正常的图像,为后续进行拼接、SLAM等奠定基础。 多相机标定可以将所有相机输出变换到同一个坐标系。 相机标定是三维视觉…

相机标定究竟在标定什么?

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 相机标定可以说是计算机视觉/机器视觉的基础,但是初学者不易上手,本文将给读者整理一遍相机标定的逻辑,并在文末回答评论区提出的问题…

相机标定(Camera calibration)

简介 摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵 P P P 的过程,下面相关的部分主要参考UIUC的计算机视觉的课件(网址Spring 2016 CS543 / ECE549 Computer vision)。 …

相机参数标定(camera calibration)及标定结果如何使用

重要更新:本文的第二次更新已发布。为了不破坏现有内容的结构,故重新开始新的一篇文章。同时本文的一些内容也会涵盖进去。 欢迎关注。 《第二更,相机参数标定基础:从小孔成像开始到单双目标定》 关于实践部分,可参…

相机标定详解

内参、外参、畸变参数三种参数与相机的标定方法与相机坐标系的理解 相机标定(Camera calibration)原理、步骤 相机标定详解 最近做项目要用到标定,因为是小白,很多东西都不懂,于是查了一堆的博客,但没有…

相机标定-机器视觉基础(理论推导、Halcon和OpenCV相机标定)

相机标定是获得目标工件精准坐标信息的基础。首先,必须进行相机内参标定,构建一个模型消除图像畸变;其次,需要对相机和机器人的映射关系进行手眼标定,构建一个模型将图像坐标系上的点映射到世界坐标系。主要分为背景知…

计算机视觉——相机标定

相机标定 1. 相机标定1.1相机内外参数(重点)1.2 为什么要做相机标定 2. 相机标定的意义3. 相机成像模型3.1 像素坐标系3.2 图像坐标系3.3 相机坐标系3.4 世界坐标系 4.坐标系转换4.1 世界坐标到相机坐标4.2 相机坐标到图像坐标4.3 像素坐标到世界坐标的变…