相机内外参矩阵:从3D世界坐标到2D像素坐标变换

  • 介绍
      • **1. 内参矩阵(Intrinsic Matrix, K)**
      • **2. 外参矩阵(Extrinsic Matrix, [R|t])**
      • **3. 完整投影过程(世界坐标 → 像素坐标)**
        • **步骤1:世界坐标 → 相机坐标(外参变换)**
        • **步骤2:相机坐标 → 归一化图像坐标(透视投影)**
        • **步骤3:归一化坐标 → 像素坐标(内参变换)**
        • **整合公式(直接投影)**
      • **4. 关键坐标变换总结**
      • **5. 畸变参数(补充)**
      • **6. 示例(OpenCV 模型)**
      • **总结**

介绍

相机参数矩阵描述了三维世界到二维图像的投影关系,分为内参矩阵(Intrinsic Matrix)和外参矩阵(Extrinsic Matrix)。以下是详细解释和坐标变换公式:


1. 内参矩阵(Intrinsic Matrix, K)

作用:将相机坐标系下的3D点投影到图像像素坐标系(2D),描述相机自身的几何和光学特性。
公式
K=[fxsu00fyv0001]K = \begin{bmatrix} f_x & s & u_0 \\ 0 & f_y & v_0 \\ 0 & 0 & 1 \end{bmatrix} K=fx00sfy0u0v01
参数含义

  • (f_x, f_y):焦距(单位为像素),分别表示x和y方向的缩放因子(受传感器尺寸和镜头焦距影响)。
  • (u_0, v_0):主点坐标(Principal Point),即光轴与图像平面的交点(通常接近图像中心)。
  • (s):轴倾斜参数(Skew),描述图像坐标轴的倾斜程度(现代相机通常为0)。

2. 外参矩阵(Extrinsic Matrix, [R|t])

作用:将世界坐标系下的3D点变换到相机坐标系,描述相机在空间中的位置和姿态(旋转+平移)。
公式
外参=[R∣t]=[r11r12r13txr21r22r23tyr31r32r33tz]\text{外参} = [R \mid t] = \begin{bmatrix} r_{11} & r_{12} & r_{13} & t_x \\ r_{21} & r_{22} & r_{23} & t_y \\ r_{31} & r_{32} & r_{33} & t_z \end{bmatrix} 外参=[Rt]=r11r21r31r12r22r32r13r23r33txtytz
参数含义

  • (R):3×3旋转矩阵(正交矩阵),表示相机相对于世界坐标系的朝向。
  • (t):3×1平移向量,表示相机光心在世界坐标系中的位置。

3. 完整投影过程(世界坐标 → 像素坐标)

设一个3D点在世界坐标系中的齐次坐标为 Pw=[Xw,Yw,Zw,1]TP_w = [X_w, Y_w, Z_w, 1]^TPw=[Xw,Yw,Zw,1]T,其投影到像素坐标 p=[u,v,1]Tp = [u, v, 1]^Tp=[u,v,1]T 的流程如下:

步骤1:世界坐标 → 相机坐标(外参变换)

[XcYcZc1]=[Rt01][XwYwZw1]或Pc=R⋅Pw+t\begin{bmatrix} X_c \\ Y_c \\ Z_c \\ 1 \end{bmatrix} = \begin{bmatrix} R & t \\ 0 & 1 \end{bmatrix} \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} \quad \text{或} \quad P_c = R \cdot P_w + t XcYcZc1=[R0t1]XwYwZw1Pc=RPw+t

步骤2:相机坐标 → 归一化图像坐标(透视投影)

[xy1]=1Zc[XcYcZc]⇒{x=Xc/Zcy=Yc/Zc\begin{bmatrix} x \\ y \\ 1 \end{bmatrix} = \frac{1}{Z_c} \begin{bmatrix} X_c \\ Y_c \\ Z_c \end{bmatrix} \quad \Rightarrow \quad \begin{cases} x = X_c / Z_c \\ y = Y_c / Z_c \end{cases} xy1=Zc1XcYcZc{x=Xc/Zcy=Yc/Zc

步骤3:归一化坐标 → 像素坐标(内参变换)

[uv1]=K[xy1]=[fxx+sy+u0fyy+v01]\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = K \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} = \begin{bmatrix} f_x x + s y + u_0 \\ f_y y + v_0 \\ 1 \end{bmatrix} uv1=Kxy1=fxx+sy+u0fyy+v01

整合公式(直接投影)

Zc[uv1]=K⋅[R∣t][XwYwZw1]Z_c \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = K \cdot [R \mid t] \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} Zcuv1=K[Rt]XwYwZw1


4. 关键坐标变换总结

坐标系符号转换关系
世界坐标系 (World)PwP_wPw参考全局坐标
相机坐标系 (Camera)PcP_cPcPc=RPw+tP_c = R P_w + tPc=RPw+t
归一化坐标系 (Normalized)(x,y)(x,y)(x,y)x=Xc/Zc,y=Yc/Zcx = X_c/Z_c, y = Y_c/Z_cx=Xc/Zc,y=Yc/Zc
像素坐标系 (Pixel)(u,v)(u,v)(u,v)u=fxx+u0,v=fyy+v0u = f_x x + u_0, v = f_y y + v_0u=fxx+u0,v=fyy+v0

5. 畸变参数(补充)

实际相机还需考虑镜头畸变(径向畸变、切向畸变),使用以下模型修正归一化坐标 (x,y)(x, y)(x,y)
{xcorrected=x(1+k1r2+k2r4)+2p1xy+p2(r2+2x2)ycorrected=y(1+k1r2+k2r4)+p1(r2+2y2)+2p2xy\begin{cases} x_{\text{corrected}} = x (1 + k_1 r^2 + k_2 r^4) + 2 p_1 x y + p_2 (r^2 + 2x^2) \\ y_{\text{corrected}} = y (1 + k_1 r^2 + k_2 r^4) + p_1 (r^2 + 2y^2) + 2 p_2 x y \end{cases} {xcorrected=x(1+k1r2+k2r4)+2p1xy+p2(r2+2x2)ycorrected=y(1+k1r2+k2r4)+p1(r2+2y2)+2p2xy
其中 r2=x2+y2r^2 = x^2 + y^2r2=x2+y2,参数 k1,k2k_1, k_2k1,k2 为径向畸变系数,p1,p2p_1, p_2p1,p2 为切向畸变系数。


6. 示例(OpenCV 模型)

在OpenCV中,投影过程定义为:

u = f_x * (X_c / Z_c) + u_0
v = f_y * (Y_c / Z_c) + v_0

外参通过 solvePnP 求解,内参和畸变参数通过 calibrateCamera 标定。


总结

  • 内参矩阵 KKK:相机自身属性(焦距、主点、倾斜)。
  • 外参 [R∣t][R \mid t][Rt]:相机在世界中的位置和姿态。
  • 投影公式Zcp=K[R∣t]PwZ_c p = K [R \mid t] P_wZcp=K[Rt]Pw
  • 畸变模型:修正非线性误差,提升精度。

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

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

相关文章

哈希指针与数据结构:构建可信数字世界的基石

一、哈希指针的核心原理哈希指针是一种创新型数据结构,融合了传统指针的定位功能与密码学哈希的验证能力:双重功能:既存储数据地址,又包含该数据的哈希值,实现数据定位与完整性验证的统一。抗篡改机制:数据…

java实现一个方法,isTure则程序继续往下,为false则return的链式写法

以下是实现链式条件检查的Java方法,采用函数式风格设计。代码包含一个Chainable类,支持连续的check方法和多个终止操作(如then, orElse等),满足在条件为false时中断链式调用并返回默认值的需求:import java…

数据结构学习之堆

本篇我们将学习新的数据结构——二叉树。 作者的个人gitee:楼田莉子 (riko-lou-tian) - Gitee.com 目录 树的概念 树形结构 非树形结构 树的相关术语 树的表示 树在实际生活上的应用 二叉树 慢二叉树 完全二叉树 二叉树的储存结构 二叉树的存储结构 顺序结构…

【csdn问答社区分析】前端开发热点问题全解析

前端时间我在csdn问答社区的前端部分"视察”了一圈发现了大家的问题主要集中在以下方面一、框架与组件库使用问题 Vue相关问题 组件化开发:如avue-crud组件自定义样式不生效、el-select大数据分页懒加载、element-plus表格动态列校验等。功能实现:包…

Pycharm2025 安装教程 免费分享 没任何套路

Pycharm 安装也是很简单的,简单过一下流程,如果需要的可以转存下载到自己电脑上。我用夸克网盘分享了「pycharm2025」,复制链接浏览器打开转存后即可下载。链接:https://pan.quark.cn/s/4bb74a939332备注:附带2023-202…

Javaweb————什么是超文本传输协议?

🏍️🏍️🏍️引言:什么是协议? 协议是一种约定,规定好一种信息的格式,如果发送方按照这种请求格式发送信息,那么接 收端就要按照这样的格式解析数据,否则就会出错,这就是协议 常用协…

UniappDay03

1.热门推荐-准备工作// 用defineProps获取页面参数,query const query defineProps<{type: string }>() const currHot hotMap.find((v) > v.type query.type) // 动态设置标题 uni.setNavigationBarTitle({ title: currHot!.title }) </script>2.获取热门推…

基于动态增强的 LLM 置信度方法研究

基于动态增强的 LLM 置信度方法研究 一、引言(Introduction) 大型语言模型(LLM)的性能提升高度依赖于对模型内部表征的精准调控 —— 表征工程通过优化模型中间层隐藏状态的传递规律,能够在不改变模型参数的前提下显著提升任务适应性(Wei et al., 2022)。当前主流方法中…

ComfyUI中运行Wan 2.1工作流,电影级视频,兼容Mac Windows

魔当(LM Downloader)是一个大模型应用下载工具 &#xff0c;目前 魔当 已经支持ComfyUI下载Wan 2.1视频模型。 魔当下载地址 https://seemts.com/ 先看生成效果 原始图片&#xff0c;你可以保存到自己电脑上测试 生成视频&#xff1a; 推荐提示词&#xff1a; A futurist…

CentOS 7 Linux 用 yum 安装 Docker,含 Docker 镜像无法拉取问题(即 docker pull 失败)的解决方案

CentOS 7 Linux 用 yum 安装 Docker,含 Docker 镜像无法拉取问题(即 docker pull 失败)的解决方案 本文对应的讲解视频链接:https://www.bilibili.com/video/BV1C48wzqE6T/ 文章目录 CentOS 7 Linux 用 yum 安装 Docker,含 Docker 镜像无法拉取问题(即 docker pull 失败…

XML的简略知识点

文章目录1. 基本概念2. 基本语法3. 示例4. 相关技术5. 应用场景XML&#xff08;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言&#xff0c;核心特点是可扩展性和自我描述性。以下是其核心知识点&#xff1a; 1. 基本概念 用途&#xff1a;主要用于数据的存储…

RustDesk 完整部署教程:支持 Web 管理后台和网页客户端远程,保姆级教学来了!

RustDesk API本项目使用 Go 实现了 RustDesk 的 API&#xff0c;并包含了 Web Admin 和 Web 客户端。RustDesk是一个远程桌面软件&#xff0c;提供了自托管的解决方案&#xff0c;官方API是收费的&#xff0c;这次咱们用到的是Github开源的第三方API源码。✅特性PC端API支持 …

​​GOFLY LIVE CHAT:Golang製オープンソース・ライブチャットシステム​

以下是为日本技术受众优化的日语版介绍文章&#xff0c;采用IT行业惯用术语和简洁表达&#xff1a; ​​GOFLY LIVE CHAT&#xff1a;Golang製オープンソース・ライブチャットシステム​​ ​​現代的なカスタマーサポートのための高性能ソリューション​​ GOFLY LIVE CHATは…

ISIS GR实验案例

一、实验拓扑路由器R1和R2都为双主控设备&#xff0c;主用板和备用板间形成备份关系。路由器间通过IS-IS协议实现网络互连&#xff0c;并提供GR机制。要求当R1通过GR方式重启IS-IS进程或者进行主备倒换时转发不中断。1、基础配置AR1 system sysname AR1 int g 0/0/0 ip add 10.…

智慧农业病虫害识别准确率↑32%:陌讯多模态融合算法实战解析

原创声明本文为原创技术解析&#xff0c;核心技术参数与架构设计引用自《陌讯技术白皮书》&#xff0c;禁止未经授权的转载与篡改。一、行业痛点&#xff1a;智慧农业的识别困境智慧农业中&#xff0c;作物病虫害的精准识别是实现精准植保的核心&#xff0c;但田间复杂环境始终…

# JsSIP 从入门到实战:构建你的第一个 Web 电话

前言 欢迎来到实时通信&#xff08;Real-Time Communication, RTC&#xff09;的世界&#xff01;如果你是一名 JavaScript 开发者&#xff0c;渴望让你的 Web 应用拥有语音通话、视频聊天甚至即时消息的能力&#xff0c;那么你来对地方了。这本书是为你量身打造的指南&#x…

【RHCSA 问答题】第 12 章 安装和更新软件包

目录什么是 RPM&#xff1f;dnf 是什么&#xff0c;它和 rpm 有什么联系和区别&#xff1f;如何设置禁止直接远程登录 root 账户&#xff1f;RHEL 中如何做才能启用对第三方存储库的支持&#xff1f;怎么理解 RHEL9 中的应用流(Application Streams)和模块(Modules)&#xff1f…

GEO优化实战:如何在DeepSeek、豆包等AI平台抢占推荐位?

在当今竞争激烈的 AI 领域&#xff0c;GEO 优化在抢占 AI 平台推荐位上的重要性日益凸显。各大平台都在为优质内容和企业争取更好的展示机会&#xff0c;与此同时&#xff0c;一个现象引发了众人关注&#xff1a;众多企业大力推荐天津诚智未来公司&#xff0c;这背后究竟隐藏着…

机器学习——随机森林算法分类问题案例解析(sklearn)

1. 集成学习&#xff1a;三个臭皮匠&#xff0c;如何赛过诸葛亮&#xff1f;我们之前学习的线性回归、决策树等算法&#xff0c;就像是团队里的某一位“专家”。这位专家可能在某个领域很擅长&#xff0c;但单凭他一人&#xff0c;要解决复杂多变的问题&#xff0c;总会遇到瓶颈…

Mermaid流程图

手动画流程图太复杂了&#xff0c;用极少的字符生成图表是人生的梦想。 Mermaid Chart - Create complex, visual diagrams with text. A smarter way of creating diagrams. Linux开始菜单流程图 flowchartA(["StartMenu"]) --> B["/usr/share/applicati…