【计算机视觉中的多视图几何系列】深入浅出理解针孔相机模型

温故而知新,可以为师矣!

一、参考资料

《计算机视觉中的多视图几何-第五章》-Richard Hartley, Andrew Zisserman.

二、针孔模型相关介绍

1. 重要概念

在这里插入图片描述

1.1 投影中心/摄像机中心/光心

投影中心称为摄像机中心,也称为光心。投影中心位于一个欧式坐标系的原点。

1.2 图像平面/聚焦平面

平面 Z = f Z=f Z=f 被称为图像平面聚焦平面

1.3 主轴/主射线

摄像机中心到图像平面的垂线称为摄像机的主轴主射线

1.4 主点

主轴与图像平面的交点称为主点

1.5 主平面(摄像机)

过摄像机中心平行于图像平面的平面称为摄像机的主平面

1.6 图像坐标系与摄像机坐标系

在这里插入图片描述

如上图所示,图像坐标系 ( x , y ) T (x,y)^T (x,y)T 和摄像机坐标系 ( x c a m , y c a m ) T (x_{cam},y_{cam})^T (xcam,ycam)T

2. 基本针孔模型

在这里插入图片描述

在针孔摄像机模型下,3维空间坐标为 X = ( X , Y , Z ) T X=(X, Y, Z)^T X=(X,Y,Z)T 的点 X X X 被投影到图像平面上的一点,该点是连接点 X X X 与投影中心的直线与图像平面的交点。根据相似三角形,可以很快地算出点 ( X , Y , Z ) T (X, Y , Z)^T (X,Y,Z)T 被映射到图像平面上点 ( f X / Z , f Y / Z , f ) T (fX/Z, fY/Z, f)^T (fX/Z,fY/Z,f)T 。略去最后一个图像坐标之后,从世界坐标到图像坐标的中心投影是:
( X , Y , Z ) T ↦ ( f X / Z , f Y / Z ) T ( 1 ) (X,Y,Z)^{T}\mapsto(fX/Z,fY/Z)^{T}\quad(1) (X,Y,Z)T(fX/Z,fY/Z)T(1)
这是从3维欧式空间 IR 3 \text{IR}^3 IR3 到 2维欧式空间 IR 2 \text{IR}^2 IR2 的一个映射

3. 投影矩阵

齐次坐标的概念:齐次坐标就是用N+1维去描述一个N维的坐标。

如果用齐次矢量表示世界和图像点,那么中心投影可以简单地表示成齐次坐标之间的线性映射。具体地说, 公式 ( 1 ) 公式(1) 公式(1) 可以写成如下矩阵乘积形式:
[ X Y Z 1 ] ↦ [ f x f y z ] = [ f 0 f 0 1 0 ] [ X Y Z 1 ] ( 2 ) \left.\left[\begin{array}{c}\mathbf{X}\\\mathbf{Y}\\\mathbf{Z}\\\mathbf{1}\end{array}\right.\right]\mapsto\left[\begin{array}{c}f\mathbf{x}\\f\mathbf{y}\\\mathbf{z}\end{array}\right]=\left[\begin{array}{cc}f&&&0\\&f&&0\\&&1&0\end{array}\right]\left[\begin{array}{c}\mathbf{X}\\\mathbf{Y}\\\mathbf{Z}\\\mathbf{1}\end{array}\right]\quad(2) XYZ1 fxfyz = ff1000 XYZ1 (2)
其中 [ f 0 f 0 1 0 ] \left[\begin{array}{cc}f&&&0\\&f&&0\\&&1&0\end{array}\right] ff1000 表示 3 ∗ 4 3*4 34 齐次摄像机投影矩阵,记作 P P P P P P 可以写成 d i a g ( f , f , 1 ) [ I ∣ 0 ] diag(f,f,1)[I|0] diag(f,f,1)[I∣0],其中 d i a g ( f , f , 1 ) diag(f,f,1) diag(f,f,1)对角矩阵,而 [ I ∣ 0 ] [I|0] [I∣0]表示矩阵分块成一个 3 ∗ 3 3*3 33恒等矩阵加上一个零列矢量。那么,中心投影的针孔模型的摄像机投影矩阵可以表示为:
P = d i a g ( f , f , 1 ) [ I ∣ 0 ] P=diag(f,f,1)[I|0] P=diag(f,f,1)[I∣0]

恒等矩阵的概念:恒等矩阵,又称为单位矩阵,是一个方阵,其对角线上的元素为1,其余元素均为0,记作 I I I或者 E E E。恒等矩阵的大小由其维度决定,例如3阶恒等矩阵是一个3x3的矩阵。

恒等矩阵在线性代数中具有很多重要的性质。例如,对于任意矩阵A,恒等矩阵1与A的乘积等于A本身。这是因为恒等矩阵的每个元素与A的对应元素相乘,并将其相加,得到的结果就是A本身。这个性质在矩阵的转置、逆运算等方面都有着重要的应用。

恒等矩阵在深度学习中也具有重要的作用。在神经网络中,恒等矩阵常被用作初始化权重矩阵初始化权重矩阵时,将其设置为恒等矩阵可以使得神经网络的初始状态更稳定。这是因为恒等矩阵具有一定的对称性和平衡性,可以避免梯度消失或梯度爆炸等问题,有助于提高模型的训练效果

恒等矩阵还可以用于矩阵的相似性度量。在图像处理和模式识别中,我们经常需要比较两个矩阵的相似性。通过计算两个矩阵之间的差异,可以得到它们的相似性度量。而恒等矩阵作为一个特殊的矩阵,与其他矩阵相比具有明显的差异,可以用于度量矩阵之间的相似性。

我们现在引入如下记号:世界点 X X X 用4维齐次矢量 ( X , Y , Z , 1 ) (X,Y,Z,1) (X,Y,Z,1)表示;图像点 x x x 被表示成3维齐次矢量的形式。则 公式 ( 2 ) 公式(2) 公式(2) 可以紧凑地写为:
x = P X x=PX x=PX

4. 主点偏置

公式 ( 1 ) 公式(1) 公式(1) 假定图像平面的坐标原点在主点上,因此一般情形的映射为:
( X , Y , Z ) T ↦ ( f X / Z + p x , f Y / Z + p y ) T (X,Y,Z)^{T}\mapsto(fX/Z+p_x,fY/Z+p_y)^{T} \\ (X,Y,Z)T(fX/Z+px,fY/Z+py)T
其中 ( p x , p y ) T (p_x,p_y)^T (px,py)T 是主点的坐标。该方程用齐次坐标可以表示为:
[ X Y Z 1 ] ↦ [ f x + Z p x f y + Z p y z ] = [ f p x 0 f p x 0 1 0 ] [ X Y Z 1 ] ( 3 ) \left.\left[\begin{array}{c}\mathbf{X}\\\mathbf{Y}\\\mathbf{Z}\\\mathbf{1}\end{array}\right.\right]\mapsto\left[\begin{array}{c}f\mathbf{x+Zp_x}\\f\mathbf{y+Zp_y}\\\mathbf{z}\end{array}\right]=\left[\begin{array}{cc}f&&p_x&0\\&f&p_x&0\\&&1&0\end{array}\right]\left[\begin{array}{c}\mathbf{X}\\\mathbf{Y}\\\mathbf{Z}\\\mathbf{1}\end{array}\right]\quad(3) XYZ1 fx+Zpxfy+Zpyz = ffpxpx1000 XYZ1 (3)
若记
K = [ f p x f p x 1 ] ( 4 ) K=\left[\begin{array}{cc}f&&p_x\\&f&p_x\\&&1\end{array}\right]\quad(4) K= ffpxpx1 (4)
公式 ( 3 ) 公式(3) 公式(3) 有一个简洁的形式:
x = K [ I ∣ 0 ] X c a m ( 5 ) x=K[I|0]X_{cam}\quad(5) x=K[I∣0]Xcam(5)
矩阵 K K K 称为摄像机标定矩阵,在 公式 ( 5 ) 公式(5) 公式(5) 中我们记 ( X , Y , Z , 1 ) T (X,Y,Z,1)^T (X,Y,Z,1)T X c a m X_{cam} Xcam 是为了强调摄像机被设定在一个欧式坐标系的原点且主轴沿着 z z z 轴的指向,而点 X c a m X_{cam} Xcam 按此坐标系表示。这样的坐标系可以称为摄像机坐标系

摄像机坐标系的原点为主点 z z z轴方向指向主轴

5. 摄像机旋转与位移

一般,3维空间点采用不同的欧式坐标系表示,称为世界坐标系。摄像机坐标系与世界坐标系通过旋转平移相联系。
在这里插入图片描述

世界坐标系和摄像机坐标系之间的欧式转换

如果 X ~ \widetilde{X} X 是一个3维非齐次矢量,表示世界坐标系中一点的坐标,而 X ~ c a m \widetilde{X}_{cam} X cam 是以摄像机坐标系来表示的同一点,那么我们可以记 X ~ c a m = R ( X ~ − C ~ ) \widetilde{X}_{cam}=R\left(\widetilde{X}-\widetilde{C}\right) X cam=R(X C ) ,其中 C ~ \widetilde{C} C 表示摄像机中心在世界坐标系中的坐标, R R R 是一个 3 ∗ 3 3*3 33 的旋转矩阵,表示摄像机坐标系的方位。这个方程在齐次坐标系下可以写成:
X c a m = [ R − R C ~ 0 T 1 ] [ X Y Z 1 ] = [ R − R C ~ 0 T 1 ] X ( 6 ) X_{cam}=\begin{bmatrix}R&-R\widetilde{C}\\0^{T}&1\end{bmatrix}\begin{bmatrix}X\\Y\\Z\\1\end{bmatrix}=\begin{bmatrix}R&-R\widetilde{C}\\0^{T}&1\end{bmatrix}\mathbf{X}\quad(6) Xcam=[R0TRC 1] XYZ1 =[R0TRC 1]X(6)
把它与 公式 ( 5 ) 公式(5) 公式(5) 结合起来形成公式:
x = K R [ I ∣ − C ~ ] X ( 7 ) x=KR\left[I|-\widetilde{C}\right]X\quad(7) x=KR[IC ]X(7)
其中 X X X 用世界坐标系表示。这是由一个针孔模型给出的一般映射。

6. 摄像机内部参数与外部参数

公式 ( 7 ) 公式(7) 公式(7) 可以看出,一般的针孔摄像机 P = K R [ I ∣ − C ~ ] P=KR\left[I|-\widetilde{C}\right] P=KR[IC ] 有9个自由度:3个来自 K (元素 f , p x , p y ) K(元素 f,p_x, p_y) K(元素f,px,py,3个来自 R R R,3个来自 C ~ \widetilde{C} C 。包含在 K K K 中的参数称为摄像机内部参数摄像机的内部校准。包含在 R R R C ~ \widetilde{C} C 中的参数与摄像机在世界坐标系中的方位和位置有关,并称为外部参数外部校准

为方便起见,通常摄像机中心不明显标出,而把世界坐标系到图像坐标系的变换表示成 X ~ c a m = R X ~ + t \widetilde{X}_{cam}=R\widetilde{X}+t X cam=RX +t。在次情形时摄像机矩阵简化成:
P = k [ R ∣ t ] ( 8 ) P=k[R|t]\quad(8) P=k[Rt](8)
其中根据 公式 ( 7 ) 公式(7) 公式(7) t = − R C ~ t=-R\widetilde{C} t=RC

7. CCD摄像机

对于基本针孔模型,假定图像坐标在两个轴向上有等尺度的欧式坐标。但CCD摄像机的像素可能不是正方形。如果图像坐标以像素来测量,那么需要在每个方向上引入非等量尺度因子。具体地说,如果在 x x x y y y 方向上图像坐标单位距离的像素数分别是 m x m_x mx m y m_y my,那么由世界坐标到像素坐标的变换由 公式 ( 4 ) 公式(4) 公式(4) 左乘一个附加的因子 d i a g ( m x , m y , 1 ) diag(m_x,m_y,1) diag(mx,my,1) 而得到。因此一个CCD摄像机标定矩阵的一般形式是:
K = [ a x x 0 a y y 0 1 ] ( 9 ) K=\left[\begin{array}{cc}a_x&&x_0\\&a_y&y_0\\&&1\end{array}\right]\quad(9) K= axayx0y01 (9)
其中 a x = f m x a_x=fm_x ax=fmx a y = f m y a_y=fm_y ay=fmy 分别把摄像机的焦距换算成 x x x y y y 方向的像素量纲。同理, x ~ 0 = ( x 0 , y 0 ) T \widetilde{x}_0=(x_0,y_0)^T x 0=(x0,y0)T 是用像素量纲表示的主点,它的坐标是 x 0 = m x p x x_0=m_xp_x x0=mxpx y 0 = m y p y y_0=m_yp_y y0=mypy。因此,一个CCD摄像机有10个自由度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/239646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

职场记7:冲破求职迷雾,踏入新的工作环境

上一篇《职场记6:在国企工作,追逐挑战与成就》 工作日的早晨,在炎炎夏日的照射下,城市仿佛变成了一个巨大的蒸笼。街头巷尾,人群涌动,各种人物形象鲜明,构成了一幅生动的夏日画卷。 老人们手持…

spring aop实际开发中怎么用,Spring Boot整合AOP,spring boot加spring mvc一起使用aop,项目中使用aop

前言:本文不介绍 AOP 的基本概念、动态代理方式实现 AOP,以及 Spring 框架去实现 AOP。本文重点介绍 Spring Boot 项目中如何使用 AOP,也就是实际项目开发中如何使用 AOP 去实现相关功能。 如果有需要了解 AOP 的概念、动态代理实现 AOP 的&…

web架构师编辑器内容-改进字体下拉菜单

前面说到我们可以通过面板配置来更新画布上面的一些属性,如果我们有这样一个需求:在右侧面板配置里面需要查看字体的样式效果我们应该怎么做呢? 我们一开始字体的渲染: const fontFamilyArr [{value: "SimSun","…

在数字电路中,为什么说避免输入信号的缓慢变化,对缓慢变化的信号需要使用施密特触发器输入的器件进行驱动?

在数字电路中,避免输入信号的缓慢变化(如按键复位信号)是非常重要的,因为缓慢变化的信号可能会导致数字逻辑电路的不确定状态和错误操作。施密特触发器(Schmitt Trigger)是一种特殊的电路,它可以解决这个问题。 缓慢变化信号的问题: 噪声敏感性:当输入信号缓慢变化时…

vue事件绑定

vue提供了v-on事件绑定指令,用来辅助程序员为DOM元素绑定事件监听,语法格式如下: v-on:指令可以简写为 注意:原生DOM对象有onclick,oninput,onkeyup等原生事件,替换为vue的事件绑定…

设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式,每一种模式的概念、使用场景和优缺点。

文章目录 前言一、3种模式的概念、使用场景和优缺点简单工厂模式(Simple Factory Pattern):工厂方法模式(Factory Method Pattern):抽象工厂模式(Abstract Factory Pattern)&#xf…

PYQT的使用入门

上一章节:VSCode安装PYQT5-CSDN博客 vscode导航栏右键,新建ui文件

<软考高项备考>《论文专题 - 23 整合管理(1) 》

1 论文基础情况 1.1 各过程写作要点 过程定义、作用写作要点、思路制定项目章程制定项目章程是编写一份正式批准项目并授权项目经理在项目活动中使用组织资源的文件的过程。作用:①明确项目与组织战略目标之间的直接联系;②确立项目的正式地位;③展示组织对项目的…

Python高级语法与正则表达式

Python提供了 with 语句的写法,既简单又安全。 文件操作的时候使用with语句可以自动调用关闭文件操作,即使出现异常也会自动关闭文件操作。 # 1、以写的方式打开文件 with open(1.txt, w) as f:# 2、读取文件内容f.write(hello world) 生成器的创建方…

【Netty】编解码器

目录 Java的编解码Netty编解码器概念解码器(Decoder)编码器(Encoder)编码解码器Codec Java的编解码 编码(Encode)称为序列化, 它将对象序列化为字节数组,用于网络传输、数据持久化或者其它用途。 解码(Decode&#x…

Go中的Context是什么?

在 Go 编程语言(通常称为 Golang)中,术语 "上下文 "指的是上下文包及其定义的上下文类型。上下文包用于跨 API 边界和进程间传输截止日期、取消信号和其他请求范围值。 上下文包的主要目的是管理并发或分布式系统中操作的生命周期…

Python量化投资——金融数据最佳实践: 使用qteasy+tushare搭建本地金融数据仓库并定期批量更新【附源码】

用qteasytushare实现金融数据本地化存储及访问 目的什么是qteasy什么是tushare为什么要本地化使用qteasy创建本地数据仓库qteasy支持的几种本地化仓库类型配置本地数据仓库配置tushare 的API token 配置本地数据源 —— 用MySQL数据库作为本地数据源下载金融历史数据 数据的定期…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)

在这篇文章中虽然实现了能够和多客户端建立连接,并且同时和多个客户端进行通信。 基于多反应堆的高并发服务器【C/C/Reactor】(上)-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/135141316?spm1001.2014.3001.5501但是有…

nginx安装letsencrypt证书

1.安装推荐安装letsencrypt证书的客户端工具 官方推荐通过cerbot客户端安装letsencrypt 官方推荐使用snap客户端安装cerbot客户端 apt install snapd snap install --classic certbot 建立certbot软链接:ln -s /snap/bin/certbot /usr/bin/certbot 2.开始安装letse…

速盾网络:高防IP的好处

随着互联网的快速发展,网络安全问题日益突出,越来越多的企业和个人开始关注网络安全防护。其中,高防IP作为一种高效的防御手段,越来越受到用户的青睐。本文将介绍速盾网络高防IP的好处,帮助您了解其优势和应用场景。一…

SuperMap Hi-Fi 3D SDK for Unity基础开发教程

作者:kele 一、背景 众所周知,游戏引擎(Unity)功能强大,可以做出很多炫酷的游戏和动画效果,这部分功能的实现往往不仅仅是靠可视化界面就能够实现的,还需要代码开发。SuperMap Hi-Fi SDKS for …

清风数学建模笔记-插值算法

内容:插值算法 概念: 二.种类 1.牛顿插值法,拉格朗日插值法,两者容易出现龙格现象 2.分段线性插值:与上面两种相比要更好一些,原理是两线之间构成一条直线,在这条直线上插值,除此之外还有分段…

【华为OD题库-104】猴子吃桃-java

题目 题目描述: 孙悟空喜欢吃蟠桃,一天他乘守卫蟠桃园的天兵天将离开了而偷偷的来到王母娘娘的蟠桃园偷吃蟠桃。 已知蟠桃园有棵蟠桃树,第i棵蟠桃树上有Ni个蟠桃,天兵天将将在H(不小于蟠桃树棵数)小时后回来。 孙悟空可以决定他吃蟠桃的速度K…

读算法霸权笔记01_数学杀伤性武器

1. 数学应用助推数据经济,但这些应用的建立是基于不可靠的人类所做的选择 1.1. 房地产危机,大型金融机构倒闭,失业率上升,在幕后运用着神奇公式的数学家们成为这些灾难的帮凶 1.2. 数学逐渐不再关注全球金融市场动态&#xff0c…

【小白专用】HTML相对路径表示方法

一. HTML相对路径(Relative Path) 同一个目录的文件引用 如果源文件和引用文件在同一个目录里,直接写引用文件名即可。 我们现在建一个源文件info.html,在info.html里要引用index.html文件作为超链接。 假设info.html路径是:c:/Inetpub/ww…