相机成像模型、内参矩阵、外参矩阵

2023-05-16

相机针孔成像模型

基本的小孔成像过程:

在这里插入图片描述

 X坐标系是针孔所在坐标系,Y坐标系为成像平面坐标系,P为空间一点,小孔成像使得P点在图像平面上呈现了一个倒立的像,俯视图如下:

在这里插入图片描述

 由三角相似关系可以得到:

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

 在这里插入图片描述

 在这里插入图片描述

 初步相机矩阵

相机成像的本质:就是三维空间坐标到二维图像坐标的变换,这是一个投影过程 。相机矩阵就是建立这种三维到二维的投影关系。

 如果我们用[xw yw zw ]来表示一个空间点的坐标,用[x y]来表示对应于成像平面上的一个图像点的坐标(不是像素坐标),那么这两个点肯定是有一种变换关系联系起来的,我们把这个变换关系记为P,空间点:在这里插入图片描述,图像点:在这里插入图片描述则有:在这里插入图片描述
这里面,在这里插入图片描述是一个3X4的矩阵(这是为了满足4X1变换到3X1的要求),该矩阵就被称为相机矩阵(camera matrix ),或者相机投影矩阵(camera projection matrix)。

实际上可以在细化一下该矩阵的表达。这就要再来看看小孔模型。
第一部分说小孔模型时没有使用齐次坐标,现在我们用齐次坐标再来看看小孔模型。
还记得这个表达式吧:在这里插入图片描述把它写成齐次形式:
在这里插入图片描述

左边变为[y1 y2 1]的齐次形式了,右边矩阵的第三行是额外添加的,它是等式成立的配平项。
在此,我们先暂时舍弃比例因子f/x3,只建立[y1 y2 1]与[x1 x2 x3]的关系,可以得到表达式

在这里插入图片描述 

由于舍弃了一个比例因子,等式不再成立,因此使用~来表示二者之间的相似关系。
对于于在这里插入图片描述,可以建立在这里插入图片描述在这里插入图片描述的关系,用矩阵表示如下:

在这里插入图片描述
到此,就建立了在这里插入图片描述在这里插入图片描述的关系
在这里插入图片描述注意,不是等号。其中,在这里插入图片描述就是相机矩阵,或者乘以一个系数f写为在这里插入图片描述

为什么上述关系不使用等号?
因为空间三维点的齐次坐标到二维图像点的坐标不满足一 一映射的条件,空间->图像是1对1的,图像->空间是1对多的,这就意味着远处一个大的物体和近处一个小的物体在图像上投影也许是一样的,上述舍弃的那个比例因子,就是这种缩放平移关系。

相机内参矩阵

说内参矩阵之前,还得再引入像素坐标系的概念。
上述图像点的表示是长度单位,不是像素,由于我们拿到的图像是以像素来衡量的,因此还需要将图像坐标系转化为像素坐标系。
在此直接给出结论:
在这里插入图片描述

 于是之前的相机矩阵又得添加一项:
在这里插入图片描述

述推导中有一个假设前提,就是相机的感光元件是正方形的,感光元件的安装也是通过光轴中心的,但这不可能,于是会出现以下两个问题:
1、感光元件的基本单元不是方的,一个方形物体可能最后成像为一个矩形(甚至会有斜切效果,一般可以不考虑斜切因素);这导致表达式中,dx与dy不相等,
2、感光元件的中心与光轴通过的主点不重合,会使得正常投影的图像发生了一点小小的位移。
这导致表达式中,u0与v0可能并不等于成像传感器长宽尺寸的一半。(理想状态下就是一半)

表达式中,等式右边的前三个矩阵合并,得到下式:
在这里插入图片描述,其中在这里插入图片描述被称为内参矩阵

或者只合并等式右边前两个矩阵,得到下式:
在这里插入图片描述

于是也有习惯将在这里插入图片描述称为内参矩阵(少了一列0),都是一个意思。
内参矩阵的参数含义:
f:焦距,单位毫米,dx:像素x方向宽度,单位毫米,1/dx:x方向1毫米内有多少个像素
f/dx:使用像素来描述x轴方向焦距的长度
f/dy:使用像素来描述y轴方向焦距的长度
u0,v0,主点的实际位置,单位也是像素。

 内参矩阵反应了相机自身的属性,各个相机是一不一样的,需要标定才能知道这些参数。

外参矩阵

外参矩阵是世界坐标系到相机坐标系的变换。既然是变换,我们就能够将其表达为[R t],齐次形式为在这里插入图片描述
但是目前为止好像并没有在相机矩阵中看到外参矩阵。之前的相机矩阵表示如下:
在这里插入图片描述

那是因为,之前的推导中,我们默认世界坐标系和相机坐标系是重合的。在小孔成像模型中,空间一点的坐标被描述为[x y z 1],这个点的坐标系原点在小孔,而相机的坐标中心也在小孔,但是在实际应用过程中,世界坐标系和相机坐标系往往不重合,这样才带来了外参矩阵的概念,下图展示了相机坐标系与世界坐标系不重合时的情况,我们只知道P点在世界坐标系下的坐标,因为要运用小孔成像原理,我们想知道P点在相机坐标系下的坐标,相机外参矩阵就实现了这种变换。

在这里插入图片描述

 还是空间某个点p,其在世界坐标系下表示为[xw,yw,zw,1],在相机坐标系下表示为[xc,yc,zc,1],那么它们具有如下关系:
在这里插入图片描述

 带入到相机矩阵表达式中可以得:
在这里插入图片描述

 合并等式右边2、3两个矩阵:
在这里插入图片描述

一些结论:
外参矩阵是世界坐标系在相机坐标系下的描述(或者位置姿态)
等价于外参矩阵是从世界坐标系到相机坐标系的变换
它确实也确定了相机在世界坐标系下的位置姿态,但相机位置姿态是外参矩阵的逆。
再说细一些:
R的每一个列向量表示世界坐标系的每一个坐标轴在相机坐标系下的指向;
t表示世界坐标系原点在相机坐标系下的表示。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相机成像模型、内参矩阵、外参矩阵 的相关文章

  • sumo之使用netedit绘制路网并进行简单模拟

    1 基本路网的构建 xff08 十字路口 xff09 在下载完成sumo后 xff0c bin目录下有一个可以运行的nete exe xff0c 点击可以进入界面进行路网的编辑 xff0c 编辑生成 net xml文件 点击进去后 xff0
  • sumo之模拟行人

    在前面的文章中介绍了模拟车辆以及交通工具 公共汽车 xff0c 在道路上除了车辆外还有行人参与 在本文中介绍添加行人 详细的方法和参数可以前往官网查看 本部分的模拟路网全部沿用上次公共汽车模拟的环境 xff0c 只需要对部分代码进行修改 首
  • 【开发工具】VScode连接远程服务器+设置免密登录

    文章目录 前言连接远程服务器免密登录注意事项参考资料 前言 本文介绍如何使用VScode搭建自己的远程开发平台 xff0c 以便于我们可以随时拿着自己心爱的PC xff0c 去开发让自己脱发的项目 连接远程服务器 首先 xff0c 我们去官
  • 2.3、Segment Routing基础之IGP Segment 类型详解

    本文将重点介绍IGP Segment 分发场景下常见的几种Segment类型 xff0c 同时为各位介绍了这些Segment类型在在Segment Routing转发过程中的转发动作以及转发特性 本文将对各位理解Segment Routin
  • IDEA日常填坑:Cannot resolve plugin org.apache.maven.plugins:maven-war-plugin

    问题描述 xff1a 我太难了o o xff0c 这个问题竟然困扰了我一个下午加上一个晚上 xff0c 为了解决它 xff0c 估计浏览器都要被我弄崩了吧 xff0c 此前我将所能找到的方法全都试了个遍 xff0c 甚至是将 IDEA 卸载
  • 判断点在多边形内(射线法)

    射线法 用来判断点在多边形的内外 适用于任意多边形 时间复杂度 xff1a O n 从该点引出一条水平射线 xff0c 观察射线与多变形的交点个数 当射线与多边形的交点个数是奇数时 xff0c P在多边形内 偶数时 xff0c P在多边形外
  • 线性判别分析(Linear Discriminant Analysis, LDA)(含类内散度矩阵 类间散度矩阵 全局散度矩阵推导

    LDA算法概述 xff1a 线性判别式分析 Linear Discriminant Analysis LDA xff0c 也叫做Fisher线性判别 Fisher Linear Discriminant FLD xff0c 是模式识别的经典
  • Fuzzy C-Means Clustering(模糊C均值)

    别看了 有错的 我懒得改了 强推https www bilibili com video BV18J411a7yY t 61 591 看完你还不会那我也没办法了 算法原理 模糊c 均值聚类算法 fuzzy c means algorithm
  • Last-Modified / If-Modified-Since / ETag / If-None-Match 的区别

    看一圈全都是 Last Modified和HTTP IF MODIFIED SINCE只判断资源的最后修改时间 xff0c 而ETags和If None Match可以是资源任何的属性 我 好像说了什么又好像什么也没说 修改 资源的任何属性
  • 计算机网络安全(通信机密性、完整性、数字签名、公钥认证、SSL)

    1 提供通信机密性 1 1 RSA RSA有两个互相关联的部分 xff1a 公钥和私钥的选择加密和解密算法 为了生成RSA的公钥和私钥 xff0c Bob执行如下步骤 xff1a 选择两个大素数 p p p 和 q
  • 网卡出现“Windows 仍在设置此设备的类配置。 (代码 56)“

    原因 xff1a vmware惹的祸 1 下载cclean修复注册表 xff08 尝试无效 cclean下载网址 2 键盘按win 43 r xff0c 弹出运行窗口 xff0c 输入 redegit xff0c 进入注册表 xff0c 删
  • datax实现mysql数据同步到oracle

    一 mysql数据同步到oracle 注意 xff1a mysql不区分大小写 xff0c 但是oracle严格区分大小写 xff0c 并且oracle的库名 表名和字段名要用大写 xff0c 如果用的小写需要添加双引号说明 job set
  • 在gazebo仿真环境下对相机和激光雷达的标定

    相机和激光雷达的标定主要是为了得到两者之间的参数 xff0c 包括相机的内参和雷达到相机的外参 这样便可以完成点云到图像的投影 xff0c 从而完成信息融合 实际上gazebo中这些参数都是真值 xff0c 是不需要标定的 xff1a 相机
  • 深度学习模型过拟合问题解决办法

    深度学习模型过拟合问题解决办法 模型过拟合 xff08 如果训练集上精度比测试集上精度高很多 xff0c 说明发生了过拟合 xff09 如上图所示拟合曲线 1 图一的拟合较为简单 xff0c 不能很好的反应出变化关系 xff0c 欠拟合 2
  • strchr()函数

    如果需要对字符串中的单个字符进行查找 xff0c 那么应该使用 strchr 或 strrchr 函数 其中 xff0c strchr 函数原型的一般格式如下 xff1a char strchr const char s int c 它表示
  • MapReduce之Map阶段

    MapReduce阶段分为map xff0c shuffle xff0c reduce map进行数据的映射 xff0c 就是数据结构的转换 xff0c shuffle是一种内存缓冲 xff0c 同时对map后的数据分区 排序 reduce
  • 嵌入式开发常用的三种通信协议串口通信、SPI和IIC

    常用的三种通信协议串口通信 SPI和IIC 文章目录 常用的三种通信协议串口通信 SPI和IIC一 通信分类1 1 同步通信和异步通信1 2 单工通信 半双工通信和全双工通信1 3 串行通信与并行通信 二 串口通信2 1 UART2 2 R
  • HTML 解决css缓存

    span class token operator lt span link rel span class token operator 61 span span class token string 34 stylesheet 34 sp
  • Ubuntu18.04安装Nvidia显卡驱动教程

    0 前期准备 禁用BIOS的secure boot xff0c 即disable它 xff0c 如果不关闭 xff0c 使用第三方源安装显卡驱动会安装后不能使用 1 禁用nouveau 1 创建文件 xff0c 如果没有下载vim编辑器 x
  • VINS之estimator节点小结

    VINS的核心节点 xff0c 包括VIO的初始化过程 紧耦合的非线性化过程 边缘化处理过程 主要流程步骤 1 主函数线程 订阅了四个topic xff0c 分别调用回调函数 xff1b 创建了13个话题发布器 xff1b 开辟了一个VIO

随机推荐

  • 基于布谷鸟搜索算法的函数寻优算法

    文章目录 一 理论基础1 算法原理2 算法流程图 二 Matlab代码三 参考文献 一 理论基础 1 算法原理 布谷鸟采用一种特殊的寄生宿主巢穴的方式孕育繁殖 它将孵育的蛋置入寄生宿主的巢穴 xff0c 让寄生宿主孵化布谷鸟蛋 由于布谷鸟幼
  • 基于逐维反向学习的动态适应布谷鸟算法

    文章目录 一 理论基础1 布谷鸟搜索算法2 DA DOCS算法 xff08 1 xff09 逐维反向学习策略 xff08 2 xff09 动态适应 xff08 3 xff09 DA DOCS算法流程 二 实验与结果分析三 参考文献 一 理论
  • SMPL学习笔记

    文章目录 前言一 SMPL概述1 形状参数 beta 2 姿态参数
  • 多协议BGP-----MPBGP

    MPBGP是在BGP 4 基础上的扩展 xff0c 分为三种 xff1a ipv4 ipv4 ipv6 ipv6 ipv6 ipv4 ipv4 ipv6 本文主要介绍 xff1a ipv6 ipv4 xff08 在 建立ipv6 的BGP邻
  • __asm void MSR_MSP(uint32_t addr) 提示:error:expected '(' after 'asm'

    SYSTEM sys sys c 33 7 error expected 39 39 before 39 void 39 ASM void MSR MSP u32 addr 在STM32中的sys c文件编译报出这个错误时 xff1a AS
  • LTL线性时序逻辑

    https blog csdn net yuniruchujian article details 106213848https www docin com p 506137477 html
  • 强化学习资料

    强化学习资料 莫烦学习资料 莫烦学习资料 https mofanpy com bilibili视频资料 xff1a https www bilibili com video BV13W411Y75P from 61 search amp s
  • apollo学习

    知乎王方浩 https zhuanlan zhihu com p 52521739 csdn https blog csdn net u013914471 type 61 blog bilibili 忠厚老实的老王 https space
  • 求解离散黎卡提矩阵代数方程

    离散代数黎卡提方程求解 1 黎卡提方程 在LQR最优控制中 xff0c 有连续时间最优控制 xff0c 即LQR xff0c 也有离散时间最优控制DLQR xff0c 则在求解中一定会遇到解连续时间黎卡提方程和离散时间黎卡提方程的问题 xf
  • 基于运动学模型的无人机模型预测控制(MPC)-2

    基于无人机自身模型的模型预测控制 无约束情况 1 模型建立 无人机运动学模型 xff1a x
  • 一阶低通滤波器-连续转离散

    一阶低通滤波器 1 一阶连续低通滤波器 y s r
  • 汽车动力学模型

    1 动力学模型 在纵向时 xff0c 可能还会受到纵向空气阻力 xff0c 前轮滚动阻力 xff0c 后轮滚动阻力 xff0c 坡道重力分量等
  • PX4飞控源码及解析

    源码地址 xff1a https github com 987419640 Firmware 解析 xff1a https dev px4 io zh concept architecture html
  • Hadoop:简介和安装

    Hadoop简介 Hadoop项目由多个子项目组成 与其他项目不同 xff0c 这个项目更像一个生态系统 其中 xff0c 核心项目包括HDFS MapReduce框架 YARN和ZooKeeper HDFS是一个符合Hadoop要求的分布
  • centos6.x如何安装docker

    1 curl Lks https yum spaceduck org kernel ml aufs kernel ml aufs repo gt etc yum repos d kernel ml aufs repo 2 yum remov
  • c#开发Windows桌面程序,支持触摸屏

    这是一段由new bing聊天机器人提供的代码 xff0c 我没有测试是否能正常运行 xff0c 请谨慎使用 我是这样提问的 xff1a 我想用c 开发一款Windows桌面程序 xff0c 这个程序支持触摸屏 xff0c 这个程序打开后要
  • 七. (《Java核心技术》读书笔记+重点整理系列)异常处理、断言和日志

    目录 异常分类抛出异常捕获异常断言记录日志调试技巧PS 异常分类
  • IAR for ARM 无法烧写

    一直用的IDE都是Keil xff0c 最近需要用到的一款芯片只有IAR这一种环境可以从Demo里直接用 xff0c 所以用到了IAR xff0c 但发现自己装好了IAR xff08 版本8 32 1 xff09 并破解后 xff0c 编绎
  • ADC采集的数据通过串口进行发送 (2)

    1 xff09 在RIDE板子上调通的基础上 xff0c 硬件替代成CJ 575板 在后面步骤中并开始将代码中的硬件配置部分给对应成CJ 575板子的ARM9芯片的配置 2 xff09 将ADC CHANNEL和ADC CHANNEL MO
  • 相机成像模型、内参矩阵、外参矩阵

    相机针孔成像模型 基本的小孔成像过程 xff1a X坐标系是针孔所在坐标系 xff0c Y坐标系为成像平面坐标系 xff0c P为空间一点 xff0c 小孔成像使得P点在图像平面上呈现了一个倒立的像 xff0c 俯视图如下 xff1a 由三