针孔相机模型和相机内参矩阵K

从相机内参矩阵K到FOV:原理推导与代码实现 本文深入解析相机内参矩阵K与视场角FOV的转换关系,通过几何原理推导和Python代码实现,帮助读者掌握从K矩阵计算FOV及反向推导的方法。文章结合实战案例,详细介绍了参数单位一致性检查、非理想情况处理等常见问题解决方案,并探讨了FOV在三维重建中的关键作用。 阅读详情
AI摘要

本文详细介绍了针孔相机模型的成像原理,从空间点到成像平面的几何关系,再到像素坐标系的转换。通过数学公式阐述了空间点与像素坐标之间的联系,包括内参矩阵的作用,并提及了相机内参矩阵(K)在图像处理中的重要性。

在这里插入图片描述

上图为针孔相机模型的成像原理图。

设 O−x−y−zO-x-y-zO−x−y−z 为相机坐标系,OOO 为相机的光心(同样也是针孔模型中的针孔)。现实世界的空间点 PPP ,经过光心 OOO 投影之后,落在了物理成像平面 O′−x′−y′O^{\prime}-x^{\prime}-y^{\prime}O′−x′−y′ 上,成像点为 P′P'P′ 。

设空间点 PPP 的坐标为 [X,Y,Z]T[X, Y, Z]^{T}[X,Y,Z]T,P′P'P′ 的坐标为 [X′,Y′,Z′]T[X', Y', Z']^{T}[X′,Y′,Z′]T,并且设物理成像平面到光心的距离(即焦距)为 fff 。那么由三角形相似关系有:

Zf=−XX′=−YY′(1) \frac{Z}{f}=-\frac{X}{X^{\prime}}=-\frac{Y}{Y^{\prime}} \tag{1} fZ​=−X′X​=−Y′Y​(1)

其中负号表示成的像是倒立的。为了简化模型,我们可以把成像平面对称到相机前方,和三维空间点一起放在摄像机坐标系的同一侧(如下图所示)。

在这里插入图片描述

简化之后去掉负号,便可以得到:

Zf=XX′=YY′(2) \frac{Z}{f}=\frac{X}{X^{\prime}}=\frac{Y}{Y^{\prime}} \tag{2} fZ​=X′X​=Y′Y​(2)

整理之后,有:

X′=fXZY′=fYZ(3) \begin{aligned} &X^{\prime}=f \frac{X}{Z} \\ &Y^{\prime}=f \frac{Y}{Z} \end{aligned} \tag{3} ​X′=fZX​Y′=fZY​​(3)

上面公式表示的是空间中的点 PPP 和它在成像平面对应的点 P′P'P′ 之间的几何关系。当时在相机中,图片是由一个个像素表示的,因此还需要在成像平面上进行采样和量化。下图是成像平面坐标系和像素平面坐标系的图示,两者有以下区别:

  • 单位不一样:成像平面坐标系的单位是米,像素坐标系的单位是像素
  • 坐标系原点的位置不一样:成像平面坐标系的原点在中心,像素坐标系的原点在左上方

在这里插入图片描述

因此,为了将成像平面上的点转换到像素坐标系上,需要进行单位之间转换的缩放和原点的平移。

假设成像平面坐标系为 O′−x′−y′O^{\prime}-x^{\prime}-y^{\prime}O′−x′−y′ ,像素坐标系为 o−u−vo-u-vo−u−v。假设成像平面坐标系转换到像素坐标系 uuu 轴上缩放了 α\alphaα 倍,转换到像素坐标系 vvv 轴上缩放了 β\betaβ 倍,原点平移了 [cx,cy]T\left[c_{x}, c_{y}\right]^{T}[cx​,cy​]T(单位:像素)。那么 P′P'P′ 的坐标与像素坐标 [u,v]T[u, v]^{T}[u,v]T 的关系为:

{u=αX′+cxv=βY′+cy(4) \left\{\begin{array}{l} u=\alpha X^{\prime}+c_{x} \\ v=\beta Y^{\prime}+c_{y} \end{array}\right. \tag{4} {u=αX′+cx​v=βY′+cy​​(4)

将 (3) 式代入 (4) 中,并将 αf\alpha fαf 记为 fxf_xfx​,βf\beta fβf 记为 fyf_yfy​,可得:

{u=fxXZ+cxv=fyYZ+cy(5) \left\{\begin{array}{l} u=f_{x} \frac{X}{Z}+c_{x} \\ v=f_{y} \frac{Y}{Z}+c_{y} \end{array}\right. \tag{5} {u=fx​ZX​+cx​v=fy​ZY​+cy​​(5)

其中,fff 的单位是米, α\alphaα 、 β\betaβ 的单位是像素/米,所以 fxf_xfx​ 和 fyf_yfy​ 的单位为像素。

为了使得公式更加简洁,可以将该式写成矩阵形式,不过左侧需要用到齐次坐标:

(uv1)=1Z(fx0cx0fycy001)(XYZ)≜1ZKP(6) \left(\begin{array}{l} u \\ v \\ 1 \end{array}\right)=\frac{1}{Z}\left(\begin{array}{ccc} f_{x} & 0 & c_{x} \\ 0 & f_{y} & c_{y} \\ 0 & 0 & 1 \end{array}\right)\left(\begin{array}{c} X \\ Y \\ Z \end{array}\right) \triangleq \frac{1}{Z} \boldsymbol{K} \boldsymbol{P} \tag{6} ⎝⎛​uv1​⎠⎞​=Z1​⎝⎛​fx​00​0fy​0​cx​cy​1​⎠⎞​⎝⎛​XYZ​⎠⎞​≜Z1​KP(6)

按照传统习惯,可以将 ZZZ 移到等式左边,则有:

Z(uv1)=(fx0cx0fycy001)(XYZ)≜KP(7) Z\left(\begin{array}{l} u \\ v \\ 1 \end{array}\right)=\left(\begin{array}{ccc} f_{x} & 0 & c_{x} \\ 0 & f_{y} & c_{y} \\ 0 & 0 & 1 \end{array}\right)\left(\begin{array}{l} X \\ Y \\ Z \end{array}\right) \triangleq \boldsymbol{K} \boldsymbol{P} \tag{7} Z⎝⎛​uv1​⎠⎞​=⎝⎛​fx​00​0fy​0​cx​cy​1​⎠⎞​⎝⎛​XYZ​⎠⎞​≜KP(7)

上式中,中间的量组成的矩阵 K\boldsymbol{K}K 被称为相机的内参矩阵(Camera Intrinsics)。

参考文献:视觉SLAM十四讲

【相机标定】相机内参 本文详细分析了相机拍照的数学模型并推导了相机内参 阅读详情

相关推荐

相机内参模型Mei/omni-directional详解

Mei相机模型

j879159541的博客 8045

摄像机内参矩阵K、基础矩阵F

一.摄像机内参矩阵 摄像机内参矩阵描述的是物体的点与图像点之间的关系。可以将内参矩阵K表示为3*3的矩阵: 内参矩阵K包括5个未知参数。一般情况下,摄像机倾斜因子s=0。因此K就只有4个未知参数了,表示焦距在图像坐标系u轴方向的位置,表示焦距在图像坐标系v轴方向的位置,表示光心在图像坐标系u轴方向的位置,表示光心在图像坐标系v轴方向的位置。 二.基础矩阵 基础矩阵是一个3*3矩阵,表示的是对立图像中对立像点之间的对应关系。用两个摄像机从不同的位置拍摄同一物体,那么两个摄像机的成像平面上会出现一些

摄影爱好者 5846

相机内参_相机标定(张正友标定算法)解读与实战一

“世界坐标系、相机坐标系 、归一化平面坐标系、 像平面坐标系、 像素坐标系。”关于相机模型的文章太多了,要搞清楚,首先要弄清楚这5个坐标系,以及他们之间的转换关系。我这里开始由世界坐标系一步一步推导到像素坐标系进行讲解。01—针孔相机模型世界坐标系到相机坐标系实际上是两个三维坐标系之间的转换关系,属于刚体变换,也就是说只有旋转R和平移t变换。旋转矩阵R是正交矩阵的单位矩阵,并且R的转置...

weixin_33264203的博客 982

关于相机内参与外参的浅读

学习人脸3D重建的第一天,在首次接触3D相关的内容,必须要搞清楚相机的成像原理,如何将真实三维空间中的三维点与显示器、屏幕和图像等二维成像的平面映射,以及了解该过程的推导方式和相关坐标系的换算,如像素坐标,图像坐标,相机坐标以及世界坐标这四种关系的变换。

tunm 6346

单目相机针孔模型(小孔成像)

单目针孔模型:世界三维点,通过外参 R/t 变换到相机坐标系,再经过内参 K 投影到像素平面;单张图像缺少深度\(Z_c\),存在尺度不确定性;镜头存在畸变,标定后可以去畸变。

雪的季节 398

C# 视觉量检测系列(三):相机标定 —— 从针孔模型到张正友标定法的完整推导

摘要: 相机标定是视觉量检测的核心基础,通过建立像素坐标与物理坐标的精确映射关系,解决镜头畸变、像素尺寸偏差等问题。文章重点解析针孔相机模型(内参矩阵、投影变换)和镜头畸变类型(径向/切向),并详细介绍张正友标定法的原理与步骤:利用棋盘格标定板求解单应性矩阵,通过绝对二次曲线约束优化内参矩阵,最终结合非线性优化消除畸变误差。标定精度直接影响测量结果的可靠性,是工业视觉检测中不可或缺的关键环节。

逆流而上的技术学习,真诚携手共进之陪伴的博客 311

视觉slam系列3-相机

视觉slam系列3-相机 针孔相机模型 我们直接贴出公式 K表示相机的内参矩阵,是由相机出厂就设置好的。自己确定相机的内参称之为标定。 转换到世界坐标系,更有 T为它的外参矩阵,若对Pc归一化,则可以在等式坐标消除Z参数。 ...

jianzhuozhu的博客 248

FPGA控制DDR读写(AXI4总线接口)

FPGA控制DDR读写

qq_42712308的博客 1万+

针孔相机模型

简介1. 介绍2. 应用场景2.1 场景一2.2 场景二3. 研究内容3.1 主要研究内容3.2 位置表示的传递性 1. 介绍   SLAM的英文名称是simultaneous localization and mapping或Concurrent Mapping and Localization,中文名称是即时定位与地图构建或并发建图与定位。   SLAM就是一项技术,这个技术可以帮助一个运动的.....................

sinoai 4897

AD9371实战:如何用ZCU106搭建JESD204B TX时钟链(含关键参数计算)

本文详细解析了如何基于Xilinx ZCU106开发板为AD9371搭建JESD204B TX时钟链。文章从系统需求出发,逐步推导出从IQ采样率到GTH线速率的关键参数计算公式,并提供了在Vivado中配置GTH收发器(包括QPLL选择、分频比设置)的实战步骤与调试技巧,旨在帮助硬件工程师快速实现稳定可靠的JESD204B高速数据传输链路。

weixin_29164843的博客 293

Cadence Virtuoso实战:3分钟搞定反相器参数化设计(附CDF配置避坑指南)

本文详细介绍了如何在Cadence Virtuoso中利用CDF参数传递功能实现反相器的参数化设计,包括PMOS和NMOS的基础搭建、CDF配置技巧及常见报错解决方案。通过实战案例和避坑指南,帮助工程师快速掌握高效设计方法,提升集成电路设计效率。

weixin_28292761的博客 336

全自动泊车系统研究之鱼眼睛相机的标定矫正

一 、全自动泊车研究之鱼眼摄像头标定介绍相机模型(针孔相机模型)畸变模型(进行矫正) 全自动泊车项目代码:链接: link. 本部分鱼眼相机的标定代码在 https://github.com/jiangyanpeng/AutoParking /AutoParking/Script下的calibration.cpp 介绍 最近在整理毕业论文,正好回忆下关于全自动泊车的项目,这是关于基于视觉的全自动泊车的demo,采用4个鱼眼摄像头采集图像。 整个软件设计架构包括:预处理模块,360度环视图,车位线的检测以及

weixin_43396158的博客 1358

Stata:手动安装ivreghdfe包的完整指南与常见问题解决

本文提供了Stata中手动安装ivreghdfe包的完整指南,包括准备工作、详细安装步骤及常见问题解决方案。ivreghdfe作为处理高维固定效应模型的强大工具,依赖ftools、reghdfe和ivreg2三个核心组件,手动安装可避免版本冲突问题。文章还分享了进阶使用技巧,如并行计算加速和保存固定效应估计值,助力用户高效完成工具变量回归分析。

weixin_29251131的博客 929

视觉slam14讲学习笔记-第5讲-相机与图像

没讲啥,讲了个针孔相机模型,相机内外参矩阵,还有空间点投影到相机成像平面的过程。

Linskual的博客 517

深入解析USBlyzer抓包工具:从设备描述符到数据交互实战

本文深入解析了USBlyzer抓包工具在USB协议分析中的应用。从设备描述符的抓取与解读,到设置地址、配置描述符的实战分析,再到数据交互阶段的抓包技巧,文章通过具体案例详细展示了如何使用USBlyzer透视USB总线通信,是排查设备驱动问题、逆向分析通信协议和学习USB规范的实用指南。

weixin_29171087的博客 741

PX4开发环境搭建(Ubuntu1804+QGC+Qt Creator )

文章目录前言一、安装环境二、PX4环境搭建1. 在虚拟机中安装Ubuntu2. 安装PX4环境(1)下载PX4源码:(2) 安装工具链(3) jMAVSim仿真(4) 编译验证三、安装QGC四、安装Qt Creator 前言 在这之前作者完全没接触过PX4,安装过程遇到了很多坑,而且每安装下载一个东西都要等好久,出现问题又要重新开始,前后折腾了四天才弄好,希望此文对大家有所帮助。 一、安装环境 ...

Beyonderwei的博客 9023

针孔相机+鱼眼相机成像原理

核心是利用 KB 方程转换 入射角。

m0_53127772的博客 253

菱Q系列串行通信模块QJ71C24N:概述与特点

该模块支持多种串行通信协议,包括RS-232、RS-422和RS-485等,并提供了可靠的数据传输和高效的通信性能。菱Q系列串行通信模块QJ71C24N是一款功能强大的模块,具有多种通信协议支持、高速数据传输、多点通信能力和简化配置与使用等特点。简化配置和使用:QJ71C24N模块具有简单易用的配置工具和用户界面,使得用户能够快速进行模块的设置和调整。高速数据传输:QJ71C24N模块提供了高速的数据传输能力,可实现快速的数据交换和通信。本文将介绍QJ71C24N模块的概述和特点,并提供相应的源代码示例。

IunScala的博客 1931

一些基础知识--相机与图像

相机将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素),这个映射过程可以用一个几何模型表示。接下来讲讲几何模型中最简单的针孔模型。 针孔相机模型 图1 针孔相机模型 设相机坐标系为o-x-y-z,习惯上z轴朝前,y轴朝下,x轴朝右。o为光心,也就是针孔模型中的针孔。 接下来给这个针孔模型做个解释:现实三维世界中一点P,经过小孔O投影后,落到物理成像平面上上,成像点为,设P点的坐标为,坐标为,设光心O到物体成像平面的距离为焦距f,根据相似三角形可得公式(1): 图2 相似三角

wh22141334的博客 738

第 2 章:PassThrough 直通滤波

通过设置某个维度(如 x、y、z 或 rgb)的取值范围,仅保留该范围内的点,从而达到**点云裁剪(裁边)**或过滤异常值的目的。所有在该范围之外的点会被移除(可选是否保留);点云中包含背景、地面或传感器噪声,需要过滤;通过 z 轴过滤,只保留桌面上方的物体;多轴组合过滤(如同时过滤 x、y、z);可用于地面剔除、车载点云预处理等场景。不支持一次过滤多个字段,可多次调用;仅处理某一层或某一区域的点云数据。原始点云中包含地面、墙面、背景等;在区域裁剪、前景提取中广泛使用;设定一个轴(如z轴);

yumeiguo的博客 337

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【智能驾驶:视觉感知后处理 阅读笔记】Day4: 相机成像模型与畸变

本文系统介绍了相机成像模型与畸变校正原理。首先解释针孔相机模型作为基础理论,通过小孔成像和相似三角形描述3D到2D的映射关系。然后分析真实相机的畸变类型,包括径向畸变(桶形/枕形)和切向畸变,并给出校正公式。针对特殊应用的鱼眼相机,详细对比了5种投影模型(透视、体视、等距、等积、正交)的特点及应用场景,指出车载鱼眼多采用计算简单的等距投影。最后强调相机标定的核心是获取内参矩阵和畸变系数,这是所有计算机视觉算法的重要前提。全文通过数学模型、对比表格和示意图,帮助读者理解从理想模型到真实成像的完整过程。

u012739527的博客 1056

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

从零搞懂相机模型 K 内参矩阵与H单应矩阵(图像拼接系列 · 第 1 篇)

这篇文章深入浅出地讲解了相机模型的基础知识,重点围绕3D点到2D像素的投影过程展开。首先介绍了四个关键坐标系:世界、相机、成像平面和像素坐标系。然后详细解析了世界到相机的转换(外参R,t)、针孔投影模型(透视除法)、成像平面到像素的转换(内参fx,fy,cx,cy),最终形成内参矩阵K。文章特别强调了纯旋转拼接场景下的单应矩阵H=KRK⁻¹推导过程,为后续图像拼接、SLAM等应用打下理论基础。所有公式都配有直观的几何解释和工程实现说明。

男儿何不带吴钩 收取关山五十州 652

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

针孔相机成像模型

针孔相机内参完整核心原理(通俗闭环版)

yumao1的专栏 352

从理想模型到真实成像:针孔与畸变模型的原理与实战解析

本文深入解析了相机模型中的针孔模型与畸变模型原理,包括径向畸变和切向畸变的成因及矫正方法。通过实战代码演示了从理想投影到实际成像的完整流程,帮助读者掌握相机标定和图像去畸变技术,提升计算机视觉应用的精度。

weixin_34079177的博客 323
上一篇: VINS-Mono论文学习笔记(一)系统总览
下一篇: 2D-2D:对极几何与本质矩阵F
威士忌燕麦拿铁
博客等级 码龄10年 5443粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值