一般的針孔相機模型如下:
三維坐標點經過透視投影變換,轉換到乙個影象平面坐標點。
而相機透鏡還存在一定的畸變,包括橫向畸變和切向畸變。
因此,針孔相機模型又被擴充套件為以下模型:
首先,世界坐標被轉換為相機坐標,由x,y,z到x,y,z;
然後,歸一化,z=1處,x,y的投影坐標x`,y`;
接下來,對投影坐標,進行畸變處理;
最後,由相機坐標轉換到影象坐標。
在使用廣角鏡頭或魚眼相機時,原始影象存在畸變比較嚴重。
在影象識別的很多應用場景中,消除影象的畸變是影象預處理的首要問題。
通過相機標定,很容易拿到相機的內部引數,包括焦距、光心和畸變係數。
以上過程,就是透鏡畸變前後影象坐標變換的公式。具體步驟如下:
1. 由影象坐標系反變換到相機坐標系中
2. 然後,校正反變換r-1,一般無校正變換的相機,預設為單位矩陣
3. 歸一化,並進行相機透鏡畸變處理
4. 由相機坐標轉換到影象坐標。
由此,得到由針孔模型到透鏡畸變畸變模型相互變換的對應關係u mapx, v mapy
initundistortrectifymap
函式就是完成了以上工作。
opencv中,remap與undistortion都是消除畸變的函式,undistortion在設定了一些引數後呼叫了remap函式,二者的演算法實質是一樣的。由目標影象的坐標,找到對應的原始影象坐標,然後將其值複製到目標影象。大致思路是如此,由於影象大小和變換,需要插值或近似的方法,如最鄰近法、線性插值等
影象視角變換
如影象由前向視角frontview轉換為俯視角birdview。
一般來講,相機向下傾斜時,相機前向視角frontview的視角範圍比較大,而俯視birdview需要的視角比較小(涉及地面的視角部分)。
針孔模型下,在前向視角影象中,擷取涉及地面的部分,並通過透視變換,轉換為俯視視角。地面的乙個矩形區域,在前向檢視中會大致是乙個三角形或梯形的形狀,而在俯檢視中,仍是乙個矩形影象,且能保留線性、平行性特徵。
如下,乙個前向廣角檢視,轉換為俯檢視。
前向檢視:
俯檢視:
轉換方法:
首先,通過標定獲取相機的外部引數,世界坐標系中相機的位置position和傾角(相對於x,y,z坐標軸的角度),即m=r|t。並假定地面的z坐標為z=0.
然後,獲取俯檢視內的三維地面坐標。z=0,地面區域的實際大小與俯檢視的大小成一定比例,即俯檢視中乙個畫素的位置(u`,v`),在地面坐標上,也有對應的位置(x`, y`, 0)。
然後,通過相機模型,將每個地面位置坐標(x`,y`, 0)轉換為前向檢視中的坐標(u, v)。
此時,前向檢視像與俯檢視像有乙個對應關係(u,v) (u`,v`)。
通過對應關係,每個俯檢視的畫素都在前向檢視像中有對應的位置,兩者的畫素值相等(使用最鄰近法或線性插值等)。俯檢視前方的部分邊緣模糊比較嚴重,這是在原圖中取樣範圍小的原因。
**:
攝像機成像 畸變模型
成像的過程實質上是幾個座標系的轉換。首先空間中的一點由世界座標系轉換到攝像機座標系,然後再將其投影到成像平面 攝像機的ccd 最後再將成像平面上的資料轉換到影象平面 最後生成的影象 圖1 1 世界空間內的乙個點在影象上成像的過程稱為投影成像過程,這中間轉換過程構成的矩陣m稱為投影矩陣。攝像機的畸變引...
攝像機成像 畸變模型
成像的過程實質上是幾個座標系的轉換。首先空間中的一點由世界座標系轉換到攝像機座標系,然後再將其投影到成像平面 攝像機的ccd 最後再將成像平面上的資料轉換到影象平面 最後生成的影象 圖1 1 世界空間內的乙個點在影象上成像的過程稱為投影成像過程,這中間轉換過程構成的矩陣m稱為投影矩陣。攝像機的畸變引...
攝像機成像 畸變模型
原創 2013年07月22日 17 37 42 成像的過程實質上是幾個座標系的轉換。首先空間中的一點由世界座標系轉換到攝像機座標系,然後再將其投影到成像平面 攝像機的ccd 最後再將成像平面上的資料轉換到影象平面 最後生成的影象 圖1 1 世界空間內的乙個點在影象上成像的過程稱為投影成像過程,這中間...