相機參數的格式與作用

在計算機視覺中,相機標定是非常重要的一步,主要目的是從圖像中恢復出物體的三維信息。為了做到這一點,我們需要了解和使用一系列的數學工具,這些工具描述了相機的成像過程,包括相機的內參、外參、畸變系數、投影矩陣和矯正矩陣。
本文主要講解相機參數的格式與作用,相機標定可參考這篇博文相機標定


一、相機內參(Camera Intrinsics)

1.1 內參的定義

相機內參指的是描述相機光學成像系統內部幾何關系的參數。它主要涉及如何將三維空間中的點投影到二維圖像平面。具體來說,相機內參矩陣包含了相機的焦距、主點以及畸變系數等信息。

1.2 內參矩陣的固定格式

在進行開發時相機內參一般用如下格式表示cameraMatrix
cv::Mat_<double>(3, 3)
內參矩陣通常采用3x3的矩陣表示,格式如下:

K=[fxscx0fycy001]K = \begin{bmatrix} f_x & s & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} K=?fx?00?sfy?0?cx?cy?1??

其中:

  • fxf_xfx?fyf_yfy? 分別是相機在x和y方向的焦距,單位為像素,這兩個參數反映了圖像傳感器上每毫米對應的像素數量。通常情況下,焦距在水平方向和垂直方向可能不相等。
  • cxc_xcx?cyc_ycy? 是圖像的主點坐標,通常是圖像的中心點。如果圖像的分辨率為 W×HW \times HW×H,那么 cx=W/2c_x = W/2cx?=W/2cy=H/2c_y = H/2cy?=H/2
  • sss 是切向畸變系數,通常在大部分相機中是零,除非相機鏡頭存在較嚴重的切向畸變。

該矩陣通過將三維世界坐標系中的點轉換為圖像坐標系中的點。

1.3 內參矩陣的作用
  1. 將三維坐標轉化為二維坐標:內參矩陣的作用就是將世界坐標系中的三維點 X,Y,ZX, Y, ZX,Y,Z 投影到相機的二維圖像坐標系中。

  2. 校正畸變:內參矩陣中的一些參數,如焦距和主點,可以用來去畸變或者校正圖像中的幾何誤差。

  3. 計算圖像尺寸和焦距:內參矩陣的 fxf_xfx?fyf_yfy? 值可用于計算圖像中物體的實際物理尺寸或距離。


二、相機畸變系數(Distortion Coefficients)

2.1 畸變的定義

相機的畸變主要由光學鏡頭的特性引起。最常見的畸變有兩種:

  1. 徑向畸變:主要發生在圖像的四周,造成圖像的拉伸或壓縮,通常表現為桶形畸變或枕形畸變。
  2. 切向畸變:通常是由相機鏡頭和圖像平面之間的非理想對準引起的,表現為圖像的傾斜或彎曲。
    在這里插入圖片描述
    在這里插入圖片描述
2.2 畸變系數的固定格式

開發中一般用如下代碼表示distCoeffs
cv::Mat_<double>(1, 5)
在標準的針孔相機模型中,畸變系數由以下五個參數表示:

D=[k1,k2,p1,p2,k3]D = [k_1, k_2, p_1, p_2, k_3] D=[k1?,k2?,p1?,p2?,k3?]

  • k1,k2,k3k_1, k_2, k_3k1?,k2?,k3? 是徑向畸變系數,描述圖像的徑向畸變。
  • p1,p2p_1, p_2p1?,p2? 是切向畸變系數,描述圖像的切向畸變。
2.3 畸變系數的作用
  1. 去畸變:畸變系數用于矯正圖像中的畸變,特別是在使用廣角鏡頭時,畸變非常明顯。
  2. 提高計算機視覺算法的精度:去除畸變后,圖像會更加接近真實的物理結構,進而提高目標識別、三維重建等算法的精度。

三、相機外參(Camera Extrinsics)

3.1 外參的定義

相機外參是描述相機與世界坐標系之間關系的參數。它通過旋轉矩陣(RRR)和位移向量(TTT)來表示。旋轉矩陣描述了相機坐標系與世界坐標系之間的旋轉關系,而位移向量描述了兩者之間的平移關系。

3.2 外參矩陣的格式

相機外參矩陣通常由一個 3×33 \times 33×3 的旋轉矩陣 RRR 和一個 3×13 \times 13×1 的平移向量 TTT 組成。外參矩陣通常是一個 3×43 \times 43×4 的矩陣:

[R∣T]=[R11R12R13TxR21R22R23TyR31R32R33Tz][R | 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???

其中:

  • RRR 是一個 3×33 \times 33×3 的旋轉矩陣,表示相機坐標系相對于世界坐標系的旋轉。
  • TTT 是一個 3×13 \times 13×1 的平移向量,表示相機坐標系原點相對于世界坐標系原點的平移。
3.3 外參矩陣的作用
  1. 將世界坐標系的三維點轉化為相機坐標系的三維點:外參矩陣用于表示相機的位置和姿態,幫助我們將三維物體的坐標從世界坐標系轉換到相機坐標系。

  2. 多視角對齊:在多視角計算中,相機的外參矩陣非常重要,尤其是在立體視覺和三維重建中,外參矩陣幫助我們理解相機之間的相對位置和角度。


四、投影矩陣(Projection Matrix)

4.1 投影矩陣的定義

投影矩陣是將三維世界坐標系中的點轉換為二維圖像坐標系中的點的矩陣。它綜合了相機的內參和外參信息,通過對三維點進行線性變換,將其投影到圖像平面。

4.2 投影矩陣的格式

投影矩陣通常由內參矩陣 KKK 和外參矩陣 [R∣T][R | T][RT] 組成,形式如下:

P=K[R∣T]P = K [R | T] P=K[RT]

其中:

  • KKK 是內參矩陣,描述了相機的內部幾何參數。
  • [R∣T][R | T][RT] 是外參矩陣,描述了相機在世界坐標系中的旋轉和平移。

通過這個矩陣,我們可以將三維世界坐標系中的點 X,Y,ZX, Y, ZX,Y,Z 投影到二維圖像坐標系 x,yx, yx,y

4.3 投影矩陣的作用
  1. 三維點到二維圖像點的映射:投影矩陣能夠將相機坐標系下的三維點 X,Y,ZX, Y, ZX,Y,Z 映射為圖像平面上的二維點 x,yx, yx,y,并將這些點用于后續的圖像處理、目標檢測等任務。

  2. 計算視差和三維重建:在立體視覺和三維重建中,投影矩陣幫助我們從不同視角的圖像中恢復物體的三維結構。


五、矯正矩陣(Rectification Matrix)

5.1 矯正矩陣的定義

矯正矩陣用于去除立體視覺系統中由于相機不同視角引起的幾何誤差。通常在立體匹配和深度估計中,矯正矩陣將左右圖像對齊到相同的圖像平面,消除由視角差異造成的幾何失真。

5.2 矯正矩陣的格式

在立體相機系統中,左右相機的矯正矩陣由旋轉矩陣 R1,R2R_1, R_2R1?,R2? 和投影矩陣 P1,P2P_1, P_2P1?,P2? 組成,用來調整圖像,使得圖像上的同名點在同一掃描線中。矯正矩陣的格式通常為:

[R1∣T1]=Rectification?Matrix?for?the?left?camera[R_1 | T_1] = \text{Rectification Matrix for the left camera} [R1?T1?]=Rectification?Matrix?for?the?left?camera

[R2∣T2]=Rectification?Matrix?for?the?right?camera[R_2 | T_2] = \text{Rectification Matrix for the right camera} [R2?T2?]=Rectification?Matrix?for?the?right?camera

5.3 矯正矩陣的作用

  1. 去除視差誤差:矯正矩陣消除了由于相機視角差異引起的幾何畸變,使得圖像對齊,從而進行精確的視差計算。

  2. 提高深度估計精度:在深度估計過程中,矯正矩陣使得左右圖像的對應點對齊,有助于提高深度圖的精度。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91892.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91892.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91892.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【jvm|基本原理】第四天

摘要&#xff1a;本文簡單分析了Java虛擬機的核心運行機制。首先介紹了基本數據類型在32位和64位虛擬機中的存儲差異&#xff0c;說明slot槽設計以空間換時間的優化思路。其次詳細解析了對象在堆內存中的存儲結構&#xff0c;包括對象頭、對象數據和對齊填充機制。然后探討了方…

Git高級操作與最佳實踐詳解

前言 熟練掌握Git的高級操作可以顯著提高開發效率&#xff0c;優化工作流程&#xff0c;解決復雜問題。本文將詳細介紹Git的高級操作技巧與最佳實踐&#xff0c;幫助開發者更加高效地管理代碼和協作開發。 1. 提交歷史管理 1.1 修改最近的提交 # 修改最近的提交信息 git co…

ElasticSearch:商品SKU+SPU實現join查詢,設計及優化

文章目錄一、SPUSKU1、商品SPU和SKU2、SPU和SKU的關系3、實現SPUSKU父子嵌套查詢1. **嵌套對象&#xff08;Nested Objects&#xff09;**2. **父子關系&#xff08;Parent-Child&#xff09;**3. **應用層關聯&#xff08;Application-Side Join&#xff09;**&#xff08;推薦…

Objective-c 初階 —— Runtime(方法交換 消息傳遞)

一、消息傳遞1、什么是消息[a func1];我們會把這種用方括號來調函數的方式稱為發消息。對于這個例子&#xff0c;就相當于我們給 a 這個對象發了個 func1 的消息&#xff08;個人認為指令更好理解&#xff09;。2、什么是 selectorselector 就是一個函數區分器。它只會給這個方…

【計算機網絡架構】樹型架構簡介

引言在當今數字化時代&#xff0c;網絡架構如同復雜的神經系統&#xff0c;支撐著各種信息的流通與交互。從個人日常的網絡瀏覽、在線購物&#xff0c;到企業的遠程辦公、數據存儲&#xff0c;再到國家層面的政務信息化、智慧城市建設&#xff0c;網絡架構都扮演著不可或缺的角…

llama-factory快速開始

llama-factory快速開始 文章目錄llama-factory快速開始前言一、環境配置1.1 訓練順利運行需要包含4個必備條件1.2 llama-factory下載1.3 環境下載1.4 硬件環境校驗二、啟動前言 https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md這是GitHub中文介紹文檔&#…

408數據結構強化(自用)

常用代碼片段&#xff08;持續更新&#xff09;折半查找void SearchBinary(int A[];int x){int low 0, high n-1, mid;while(low<high){mid (lowhigh)/2;if(A[mid]x) break;else if(A[mid] < x) low mid 1;else high mid - 1;}順序表逆置void Reverse(SqList &…

linux cpu頻率和AVS調壓等級

1&#xff0c;linux常見的cpu頻率對應的電壓等級對應參數表如下:頻率&#xff08;GHz&#xff09;電壓&#xff08;V&#xff09;1.61.41.41.21.21.01.00.82&#xff0c;avs調壓的幾種方式linux內核宏解釋Linux內核中&#xff0c;AVS調壓的實現依賴于一些宏定義和配置選項&…

Input輸入和Screen相關

知識點using System.Collections; using System.Collections.Generic; using UnityEngine;public class Lesson11 : MonoBehaviour {// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){#region 注意&#xff0c…

如何在CSDN變現?如何賺錢?如何漲粉?如何找到優質大V博主合作伙伴?

&#x1f525; 2025最新 如何在CSDN變現&#xff1f;如何賺錢&#xff1f;如何跟對人&#xff1f;如何找到優質博主合作伙伴&#xff1f; 大家好&#xff0c;我是貓頭虎&#xff0c;今天??想和大家聊聊在CSDN平臺變現的問題。這也是絕大多數伙伴非常關心的一個話題——其實&…

OpenCV特征點提取算法orb、surf、sift對比

下面是 OpenCV 中三種常用特征點提取算法&#xff1a;ORB、SURF 和 SIFT 的詳細對比&#xff0c;從 算法原理、性能、使用限制 和 適用場景 多維度進行總結&#xff0c;幫助大家在實際項目中合理選擇。一覽表&#xff1a;ORB vs. SURF vs. SIFT屬性/算法ORBSURFSIFT全稱Oriente…

LeafletJS 與 React:構建現代地圖應用

引言 LeafletJS 是一個輕量、靈活的 JavaScript 地圖庫&#xff0c;廣泛用于創建交互式 Web 地圖&#xff0c;而 React 作為現代前端框架&#xff0c;以其組件化、狀態管理和虛擬 DOM 特性&#xff0c;成為構建動態用戶界面的首選工具。將 LeafletJS 與 React 結合&#xff0c…

前后端數據交互,關于表單數據傳輸問題

表單提交var formData new FormData(); // 添加每個事故ID作為單獨的參數 accidentIds.forEach(id > formData.append(accidentIds, id)); formData.append(status, statusText); $.messager.confirm(確認, 確定要將事故記錄標記為 statusText 嗎&#xff1f;, function …

新書推介 | 吉林大學出版教材《汽車智能輔助駕駛系統技術》,國產仿真工具鏈GCKontrol-GCAir教學應用

近日&#xff0c;吉林大學出版了由高鎮海教授、孫天駿副教授主編的新教材《汽車智能輔助駕駛系統技術》&#xff0c;本書系統地介紹了汽車智能輔助駕駛系統的發展需求、物理架構、功能算法、技術原理以及應用場景。在教材第17章《仿真測試》&#xff0c;應用國產化GCKontrol-GC…

從 0 到 1 玩轉 XSS - haozi 靶場:環境搭建 + 全關卡漏洞解析

文章目錄前言靶場地址0X00 直接注入0X01 閉合標簽10X02 閉合標簽20X03 繞過特殊符號10X04 繞過特殊符號20X05 繞過注釋符0X06 繞過更多符號0X07 繞過更多符號20X08 繞過閉合符號0X09 繞過URL匹配0X0A 繞過URL過濾0X0B 繞過大寫轉換10X0C 繞過大寫轉換20X0D 繞過注釋0X0E 古英語…

TF卡格式化

cmd 輸入diskpart,在新打開的窗口輸入list disk&#xff0c;然后select disk [磁盤號]&#xff0c;clean&#xff0c;回車變成未分區的。再選中磁盤&#xff0c;選中之后create partition [分區名] 回車&#xff0c;list partition&#xff0c;查看分區&#xff0c;輸入active&…

Python爬蟲實戰:研究sqlparse庫相關技術

1. 引言 1.1 研究背景與意義 在當今數據驅動的時代,SQL 作為關系型數據庫的標準查詢語言,被廣泛應用于各種數據處理和分析場景。隨著數據庫應用的不斷發展,SQL 代碼的規模和復雜度也在不斷增加,這給 SQL 代碼的編寫、維護和優化帶來了挑戰。 研究表明,低效的 SQL 查詢是…

全球天氣預報5天(經緯度版)免費API接口教程

本文全面介紹由接口盒子免費API提供的全球天氣預報API&#xff0c;支持通過經緯度坐標獲取任意地區未來5天的詳細天氣預報數據。 一、接口核心功能 ?全球覆蓋?&#xff1a;支持全球任意經緯度坐標點的天氣預報?高精度預報?&#xff1a;提供每3小時為間隔的精細化預報&…

5 基于STM32單片機的絕緣檢測系統設計(STM32代碼編寫+手機APP設計+PCB設計+Proteus仿真)

系列文章目錄 文章目錄 系列文章目錄前言1 1 資料獲取與演示視頻1.1 資料介紹1.2 資料獲取1.3 演示視頻 2 系統框架3 硬件3.1 主控制器3.2 顯示屏3.3 WIFI模塊3.4 DHT11溫濕度傳感器3.5 可調電位器 4 設計PCB4.1 安裝下載立創EDA專業版4.2 畫原理圖4.3 擺放元器件&#xff0c;設…

CPP學習之list使用及模擬實現

一、list簡介及用法 1. list簡介 list是可以在常數范圍內任意位置進行插入、刪除、修改操作的有順序性的容器&#xff0c;而且支持雙向迭代&#xff0c;其底層是雙鏈表結構&#xff0c;邏輯上連續但物理空間上不連續&#xff0c;只能通過指針來進行元素訪問&#xff0c;無法使用…