社群計算機視覺課程文件

相機模型

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

相機模型

針孔相機

Pinhole camera from https://commons.wikimedia.org/wiki/File:Pinhole-camera.svg

最簡單的相機——也許是你自己做過的相機——由一個不透光的盒子組成,其中一面有一個小孔,另一面是一個螢幕或相片膠片。穿過小孔的光線在盒子的後壁上生成一個倒像。這種簡單的相機模型常用於 3D 圖形應用程式。

相機座標軸約定

Blender camera axes conventions 相機座標軸的方向有多種約定。在這裡,我們將遵循 Blender 的約定(參見圖示),即相機沿負 Z 軸方向,相機 X 軸指向左側(從相機視角看),相機 Y 軸指向上方。

針孔相機座標變換

Pinhole transformation 3D 空間中的每個點都對映到 2D 平面上的一個點。為了找到 3D 和 2D 座標之間的對映,我們首先需要知道相機的內參,對於針孔相機而言,這些內參是

  • 焦距,fxf_xfyf_y.
  • 主點座標,cxc_xcyc_y即影像的光學中心。該點是光軸與影像平面的交點。

使用這些內參,我們構建相機矩陣K=(fx0cx0fycy001) K = \begin{pmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \\ \end{pmatrix}

為了將它應用於 3D 空間中的一個點p=[x,y,z] p=[x,y,z],我們將該點乘以相機矩陣K@p K @ p 得到一個新的 3x1 向量[u,v,w] [u,v,w]。這是一個 2D 齊次向量,但其最後一個分量不為 1。為了找到該點在影像平面中的位置,我們必須將前兩個座標除以最後一個座標,以得到點[u/w,v/w][u/w, v/w].

雖然這是相機矩陣的教科書定義,但如果我們使用 Blender 相機約定,它將左右和上下翻轉影像(因為相機前方的點將具有負 Z 值)。一種可能的解決方法是更改相機矩陣中某些元素的符號K=(fx0cx0fycy001) K = \begin{pmatrix} -f_x & 0 & c_x \\ 0 & -f_y & c_y \\ 0 & 0 & 1 \\ \end{pmatrix}

相機變換矩陣

通常,相機不只在原點,我們必須將點從世界座標轉換為相對於相機的座標。為此,我們首先將世界到相機矩陣應用於這些點,然後應用相機矩陣。

更復雜的相機模型

可以建立更復雜的相機模型,模擬真實鏡頭產生的畸變。有關此類模型的討論,請參閱計算機視覺中的多檢視幾何

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.