攝像頭標定的主要目的就是在真實世界和我們像素世界中建立一個映射關係,這樣我們就可以利用像素之間的距離得到真實世界的距離了。是不是很神奇呢?下面就跟作者來了解一下吧!
一. 四大座標系
在講解攝像頭標定原理的時候(這裏先不涉及畸變),通常會涉及到四大座標系,如下圖所示:
其實本圖中只涉及到了三個座標系:
- 世界座標系:用來描述真實世界中點的座標的。標定中主要用於確定攝像頭位姿。
- 攝像頭座標系:以攝像頭爲視角的座標系。
- 圖片座標系:以圖片中點爲原點的2D座標系。
還剩下一個座標系,那就是像素座標系,這個座標系和圖片座標系的區別在於:像素座標系符合計算機處理圖片的方式,原點在左上角,單位是像素。
二. 世界座標系到攝像頭座標系
各個座標系之間的轉換不是一蹴而就的,比如在這裏我們得現在世界座標系中確立攝像頭的位姿。途徑就是將世界座標系轉換爲相機座標系,在之前的文章中已經介紹過利用線性代數進行的轉換,所以這裏直接給出轉換方程:
這個轉換矩陣非常容易理解,你世界座標系轉換到相機的座標系只要做兩部就行了——首先平移,然後旋轉。這個轉換矩陣中就包含這兩個操作。
不過,這個R可不是之前那麼簡單地繞某一個軸旋轉的矩陣了,它是繞着各個軸旋轉的產物。因此這個R中其實含有複雜的9個未知量。
三. 真實世界點在圖像座標系中的位置
當我們從世界座標系中轉換到攝像機座標系的時候,我們就可以把目光放到真實世界點在圖像座標系下的位置了。
首先我們來看一張被引用很多次的圖片:
- 其中P就是真實世界中的點,是他在攝像機座標系下的座標。
- p則是圖像座標系下的點,是他在圖像座標系下的座標。
- 右側的數學推導,實際上利用了各個座標之間的相似三角形關係推導出來的。
- 由於在二維圖像座標系下沒有對應的座標,所以引入了焦距f進行推理。
另外,這個推導還有一個比較重要的地方,那就是最後的結論中含有這個未知量。從推導上看,這個未知量是有明確意義的,那就是P點到距離在Z軸上的分量。然而實際在運算的時候,這個是被當作一個scale factor,也是一個要去計算的未知量。
四. 圖像和像素座標系的轉換
之前已經介紹了圖像和像素座標系的區別了,他們就是:
- 座標原點不同。
- 單位不同。
這兩個都可以分別用平移和縮放來解決:
五. 從真實世界到像素世界
把之前的結論都連起來就可以獲得真實世界座標到像素世界座標的映射了:
此時的f已經不是單純的焦距了,也是一個普通的未知量。
從圖中可以看出,相機外參矩陣和內參矩陣的乘積就是投影矩陣,利用這個矩陣就可以把真實世界的座標映射到像素座標系中。