針孔相機模型及其標定


針孔相機模型

 

1. 坐標系介紹

在視覺應用中,總共有四個坐標系需要了解,分別是:像素坐標系(p)、圖像坐標系(i)、相機坐標系(c)、世界坐標系(w)。而相機就是將世界坐標系映射到了像素坐標系。

  

 

像素坐標系

圖像在相機內部的儲存形式類似像素坐標系,如下圖所示,其中一個像素的坐標為$(u_{i}, v_{i})$,單位是(像素)

 

 

圖像坐標系

將像素坐標系的中心平移到中心,就得到了圖像坐標系,除了原點位置不同,單位也不同,圖像坐標系的單位是(m或者mm),坐標系如下圖所示:

設圖像坐標系的原點為$O_{i}(u_{0}, v_{0})$,相機感光元件中每個像素點的尺寸為$dx*dy$,兩坐標系之間的關系可表示為

$$\begin{cases}u = \frac{x}{dx} + u_{0}\\v=\frac{y}{dy}+v_{0}\end{cases}$$

將其寫成矩陣形式為:

$$\begin{bmatrix}u \\v \end{bmatrix}=\begin{bmatrix}\frac{1}{dx}&0\\0&\frac{1}{dy}\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}+\begin{bmatrix}u_{0}\\v_{0}\end{bmatrix}$$

將偏移項納入乘積項,轉化為齊次坐標形式:

$$\begin{bmatrix}u\\v\\1 \end{bmatrix}=\begin{bmatrix}\frac{1}{dx}&0&0\\0 &\frac{1}{dy}&0\\0&0&0\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}+\begin{bmatrix}u_{0}\\v_{0}\\1\end{bmatrix}=\begin{bmatrix}\frac{1}{dx}&0&u_{0}\\0&dy&v_{0}\\0&0&1\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}$$

 

 

相機坐標系

相機坐標系的z軸和圖像坐標系的z軸重合,x軸和y軸平行且同方向,相機坐標系原點$O_{c}$和圖像坐標系原點$O_{i}$連線的距離是焦距$f$(注意這里的$f$單位為m或mm),相機坐標系中的一點$B(x_{c},y_{c},z_{c})$成像到圖像坐標系$P(x,y)$,過程如下::

根據三角形相似可得:

$$\frac{f}{z_{c}}=\frac{x}{x_{c}}=\frac{y}{y_{c}}$$

即:

$$x=\frac{fx_{c}}{z_{c}},y=\frac{fy_{c}}{z_{c}} $$

相機坐標系轉化為圖像坐標系的齊次形式為:

$$\begin{bmatrix}x\\y\\1\end{bmatrix}=\begin{bmatrix}\frac{f}{z_{c}}&0&0&0\\0&\frac{f}{z_{c}}&0&0\\0&0&\frac{1}{z_{c}}&0\end{bmatrix}\begin{bmatrix}x_{c}\\y_{c}\\z_{c}\\1\end{bmatrix}$$

圖像的畸變

這是相機坐標系到理想的圖像坐標系的轉化,因為我們默認各個坐標系的變換是線性的。但實際上由於相機鏡頭中的鏡片因為光線的通過產生不規則的折射,總是存在鏡頭畸變的。畸變的引入使得成像模型中的幾何變換關系變為非線性。

圖像的畸變有很多,但通常主要考慮兩種:徑向畸變和切向畸變。

徑向畸變:正中心位置的畸變最小,隨着半徑的增大,畸變增大。徑向畸變可以分為枕形畸變和桶形畸變

 

 

 徑向畸變公式為:

$$\begin{cases}x_{dr}=x(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6})\\y_{dr}=y(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6})\end{cases}$$

其中$(x,y)$為理想坐標,$(x_{dr},y_{dr})$為畸變后的坐標,$r^{2}=x^{2}+y^{2}$

切向畸變:在透鏡與成像平面不平行時就會產生,類似於透視變換。

 

 

 

切向畸變公式為:

 $$\begin{cases}x_{dt}=x+2p_{1}xy+p_{2}(r^{2}+2x^{2})\\y_{dt}=y+p_{1}(r^{2}+2y^{2})+2p_{2}xy\end{cases}$$

將徑向畸變和切向畸變效果疊加,可得:

$$\begin{cases}x_{distorted}=x(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6})+2p_{1}xy+p_{2}(r^{2}+2x^{2})\\y_{distorted}=y(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6})+p_{1}(r^{2}+2y^{2})+2p_{2}xy\end{cases}$$

$(k_{1},k_{2},k_{3},p_{1},p_{2})$這五個為畸變參數,畸變參數的一般順序是k1,k2,p1,p2,k3

 

 

世界坐標系

世界坐標系與相機坐標系坐標軸不一定平行或重合,它們之間可以通過剛體變換互相轉換,也就是只改變物體的空間位置(平移)和朝向(旋轉),而不改變物體的形狀。用旋轉矩陣$R$和平移向量$T$可以表示這種變換,如圖所示:

 

平移矩陣T為:

$$T=\begin{bmatrix}t_{x}\\t_{y}\\t_{z} \end{bmatrix}$$

因此,世界坐標系轉化為相機坐標系的變換為:

$$\begin{bmatrix}x_{c}\\y_{c}\\z_{c} \end{bmatrix}=\begin{bmatrix}x_{w}\\y_{w}\\z_{w}\end{bmatrix}+T\Rightarrow\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}$$

 

 

2. 相機的內參和外參

根據1中幾個坐標系的轉化,可以得到世界坐標系轉化為像素坐標系:

$$\begin{bmatrix}u\\v\\1\end{bmatrix}=\begin{bmatrix}\frac{1}{dx}&0&u_{0}\\0&\frac{1}{dy}&v_{0}\\0&0&1 \end{bmatrix}\begin{bmatrix}\frac{f}{z_{c}} &0&0&0 \\0 & \frac{f}{z_{c}}&0&0\\0&0&\frac{1}{z_{c}}&0 \end{bmatrix}\begin{bmatrix}R&T \\0&1 \end{bmatrix}\begin{bmatrix}x_{w} \\ y_{w} \\z_{w} \\ 1 \end{bmatrix}=\underbrace{\begin{bmatrix}\frac{f_{x}}{z_{c}} & 0&\frac{u_{0}}{z_{c}}&0 \\0&\frac{f_{y}}{z_{c}} & \frac{v_{0}}{z_{c}}&0\\0&0&\frac{1}{z_{c}}&0 \end{bmatrix}}_{intrinsics}\underbrace{\begin{bmatrix}R & T \\0 & 1 \end{bmatrix}}_{extrinsics}\begin{bmatrix}x_{w}\\y_{w} \\z_{w} \\1 \end{bmatrix}$$

 注意這里的fx和fy單位是像素。公式中的內參不含畸變參數。

 

 

相機標定

相機標定的目的就是要得到相機內參(包含畸變參數)和外參。最重要的還是內參(包含畸變參數),因為外參跟攝像機和拍攝物體的相對位置有關,所以不同圖像的外參都不一樣。

有了相機內參(包含畸變參數)后,我們就可以對相機拍攝的圖像進行畸變校正。

 

參考資料:

https://blog.csdn.net/qq_36342854/article/details/88933308

https://blog.csdn.net/baidu_38172402/article/details/81949447

https://blog.csdn.net/heiheiya/article/details/96151958

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM