相機坐標繫到圖像坐標系

相機坐標繫到圖像坐標系是計算機視覺中的重要概念。相機坐標系指的是描述相機位置和姿態的坐標系,而圖像坐標系指的是相機拍攝到的圖像上的坐標系。在許多計算機視覺應用中,需要將3D點投影到2D圖像上,因此需要了解相機坐標繫到圖像坐標系的轉換。

一、坐標系的介紹

在計算機視覺中,我們通常使用右手坐標系。右手坐標系的三個坐標軸用手指表示,x軸用大拇指,y軸用食指,z軸用中指。當大拇指、食指和中指方向分別為x、y、z軸正方向時,拇指和食指的方向的螺旋轉向就是z軸正方向。

相機坐標系是一個右手坐標系。與相機平行且過原點的為z軸,垂直於相機平面的為y軸,與z軸和y軸方向成直角的為x軸。

圖像坐標系是一個左手坐標系,其中x軸從左到右,y軸從上至下,原點在左上角。

二、相機內參和外參

相機內參是相機固有的屬性,包括相機的焦距、主點等參數。用矩陣K描述相機內參:

K = [ f_x   0    c_x ]
    [  0   f_y   c_y ]
    [  0    0     1  ]

其中f_x、f_y是相機的焦距,c_x、c_y是相機的主點。

相機外參指的是相機在3D空間中的位置和朝向。用矩陣R、t描述相機外參:

[R t] = [ r_1 r_2 r_3 t ]
       [  0  0   0  1 ]

其中r_1、r_2、r_3分別是相機的朝向向量,t是相機的位置向量。

三、相機坐標繫到圖像坐標系的轉換

將3D點P通過K、R、t矩陣投影到2D圖像上的過程可以表示為:

p = K * [R t] * P

其中,p表示圖像上的點,P表示3D空間中的點,*表示矩陣乘法。

將p的齊次坐標歸一化後可得到圖像坐標系下的坐標:

[x, y, w] = p
u = x / w
v = y / w

其中,u、v分別是圖像坐標系下的坐標,w是一個常量,通常為1。

四、代碼示例

1. 相機內參、外參定義

import numpy as np

# 相機內參
fx = 500  # 焦距
fy = 500
cx = 320  # 主點
cy = 240  
K = np.array([[fx, 0, cx], [0, fy, cy], [0, 0, 1]])

# 相機外參
R = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])  # 旋轉矩陣
t = np.array([0, 0, 0])  # 平移向量

2. 將3D點P投影到2D圖像中

# 3D點P
P = np.array([1, 2, 3])

# 投影到2D圖像
P_homogeneous = np.hstack((P, 1))
p_homogeneous = K @ np.hstack((R, t.reshape(3,1))) @ P_homogeneous.reshape(4,1)
p = p_homogeneous[:2] / p_homogeneous[2]

print("P: ", P)
print("p: ", p)

3. 將多個3D點P投影到2D圖像中

# 多個3D點P
P_list = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 投影到2D圖像
P_homogeneous = np.hstack((P_list, np.ones((P_list.shape[0], 1))))
p_homogeneous = K @ np.hstack((R, t.reshape(3,1))) @ P_homogeneous.T
p = p_homogeneous[:2] / p_homogeneous[2]

print("P_list: ", P_list)
print("p: ", p.T)

原創文章,作者:EFANF,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/331861.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
EFANF的頭像EFANF
上一篇 2025-01-20 14:10
下一篇 2025-01-20 14:10

相關推薦

  • 如何在Java中拼接OBJ格式的文件並生成完整的圖像

    OBJ格式是一種用於表示3D對象的標準格式,通常由一組頂點、面和紋理映射坐標組成。在本文中,我們將討論如何將多個OBJ文件拼接在一起,生成一個完整的3D模型。 一、讀取OBJ文件 …

    編程 2025-04-29
  • 如何實現圖像粘貼到蒙版

    本文將從多個方面介紹圖像粘貼到蒙版的實現方法。 一、創建蒙版 首先,在HTML中創建一個蒙版元素,用於接收要粘貼的圖片。 <div id=”mask” style=”widt…

    編程 2025-04-29
  • Python圖像黑白反轉用法介紹

    本文將從多個方面詳細闡述Python圖像黑白反轉的方法和技巧。 一、Pillow模塊介紹 Pillow是Python的一個圖像處理模塊,可以進行圖片的裁剪、旋轉、縮放等操作。使用P…

    編程 2025-04-28
  • Matlab二值圖像全面解析

    本文將全面介紹Matlab二值圖像的相關知識,包括二值圖像的基本原理、如何對二值圖像進行處理、如何從二值圖像中提取信息等等。通過本文的學習,你將能夠掌握Matlab二值圖像的基本操…

    編程 2025-04-28
  • Python實現圖像轉化為灰度圖像

    本文將從多個方面詳細闡述如何使用Python將圖像轉化為灰度圖像,包括圖像的概念、灰度圖像的概念、Python庫的使用以及完整的Python代碼實現。 一、圖像與灰度圖像 圖像是指…

    編程 2025-04-28
  • 圖像與信號處理期刊級別

    本文將從多個方面介紹圖像與信號處理期刊級別的相關知識,包括圖像壓縮、人臉識別、關鍵點匹配等等。 一、圖像壓縮 圖像在傳輸和存儲中佔據了大量的空間,因此圖像壓縮成為了很重要的技術。常…

    編程 2025-04-28
  • Python 文件內圖像重命名

    Python作為一門功能強大的編程語言,可以實現很多實用的操作。在基本編程操作中,經常會遇到需要對文件進行操作,而文件中的圖像也需要進行重命名。本文將從多個方面詳細介紹如何使用Py…

    編程 2025-04-27
  • 雙目相機及其應用

    一、雙目相機的基本概念 雙目相機由兩個攝像頭構成,模擬人類兩隻眼睛觀察世界的方式。雙目相機可獲得豐富的深度信息,適用於三維視覺、立體測量、目標檢測等領域。 雙目相機的核心技術是立體…

    編程 2025-04-25
  • 火星坐標系與wgs84關係

    一、火星坐標系簡介 火星坐標系(Mars Geodetic Datum)是指在地球外星球(例如火星)上建立的以該星球自轉軸為Z軸、過赤道與某子午線相交於X、Y軸的右手直角坐標系。而…

    編程 2025-04-24
  • Android相機應用的開發

    一、基本介紹 Android相機應用是移動設備拍攝和錄製視頻的主要途徑,它可以讓用戶使用相機來拍攝照片、錄製視頻、使手機成為一個掃描儀,掃描條形碼等。 Android中使用相機應用…

    編程 2025-04-24

發表回復

登錄後才能評論