相機內外參矩陣:從3D世界坐標到2D像素坐標變換

相機內外參矩陣:從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=?fx?00?sfy?0?u0?v0?1??
參數含義

  • (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]=?r11?r21?r31??r12?r22?r32??r13?r23?r33??tx?ty?tz???
參數含義

  • (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 ?Xc?Yc?Zc?1??=[R0?t1?]?Xw?Yw?Zw?1??Pc?=R?Pw?+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??=Zc?1??Xc?Yc?Zc????{x=Xc?/Zc?y=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??=K?xy1??=?fx?x+sy+u0?fy?y+v0?1??

整合公式(直接投影)

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} Zc??uv1??=K?[Rt]?Xw?Yw?Zw?1??


4. 關鍵坐標變換總結

坐標系符號轉換關系
世界坐標系 (World)PwP_wPw?參考全局坐標
相機坐標系 (Camera)PcP_cPc?Pc=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=fx?x+u0?,v=fy?y+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+k1?r2+k2?r4)+2p1?xy+p2?(r2+2x2)ycorrected?=y(1+k1?r2+k2?r4)+p1?(r2+2y2)+2p2?xy?
其中 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_wZc?p=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…