kitti數據集座標轉換

參考了以下文章
kitti數據集標定文件解析
更詳細的解釋見文章:
Vision meets Robotics: The KITTI Dataset

1、kitti數據採集平臺

KITTI數據集的數據採集平臺裝配有2個灰度攝像機,2個彩色攝像機,一個Velodyne64線3D激光雷達,4個光學鏡頭,以及1個GPS導航系統。圖示爲傳感器的配置平面圖,爲了生成雙目立體圖像,相同類型的攝像頭相距54cm安裝。由於彩色攝像機的分辨率和對比度不夠好,所以還使用了兩個立體灰度攝像機,它和彩色攝像機相距6cm安裝。見下圖,存在的三個座標系的方向分別爲:

  • 相機:x 軸向右,y 軸向下,z 軸向前
  • Velodyne(激光雷達):x 軸向前,y 軸向左,z軸向上
  • GPS / IMU:x 軸向前,y 軸向左,z 軸向上

在這裏插入圖片描述

在這裏插入圖片描述
作者將所有傳感器都經過仔細的校準和同步.爲了避免隨時間出現誤差,作者會在錄製後每天對傳感器進行校準.即使兩者之間的傳感器設置沒有更改,也有可能會存在數值差異.
2、表示方法

  • S_xx:1x2 矯正前的圖像xx的大小
  • K_xx:3x3 矯正前攝像機xx的校準矩陣
  • D_xx:1x5 矯正前攝像頭xx的失真向量
  • R_xx:3x3 (外部)的旋轉矩陣(從相機0到相機xx)
  • T_xx:3x1 (外部)的平移矢量(從相機0到相機xx)
  • S_rect_xx:1x2 矯正後的圖像xx的大小
  • R_rect_xx:3x3 糾正旋轉矩陣(使圖像平面共面)
  • P_rect_xx:3x4 矯正後的投影矩陣 (內參矩陣,前面第一行爲前面四個數據,依次三行)

在此,xx∈{0,1,2,3}是攝像機索引,其中0表示左側灰度,1表示右側灰度,2表示左側彩色,3表示右側彩色攝像機。把灰度攝像機0看做參考相機。所有相機中心均對齊,即它們位於同一x / y平面上。這很重要,因爲它使我們可以共同校正所有圖像。請注意,變量定義與我們用於扭曲圖像的OpenCV庫兼容。當使用同步和校正後的數據集時,只有帶有rect-下標的變量纔是相關的。

3、kitti 激光雷達、攝像頭數據融合:
要將Velodyne座標中的點x投影到左側的彩色圖像中y:
使用公式:y = P_rect_2 * R0_rect *Tr_velo_to_cam * x
將Velodyne座標中的點投影到右側的彩色圖像中:
使用公式:y = P_rect_3 * R0_rect *Tr_velo_to_cam * x
Tr_velo_to_cam * x :是將Velodyne座標中的點x投影到編號爲0的相機(參考相機)座標系中
R0_rect *Tr_velo_to_cam * x :是將Velodyne座標中的點x投影到編號爲0的相機(參考相機)座標系中,再修正
P_rect_2 * R0_rect *Tr_velo_to_cam * x :是將Velodyne座標中的點x投影到編號爲0的相機(參考相機)座標系中,再修正,然後投影到編號爲2的相機(左彩色相機)
注意:
P_rect_2 (標號爲2的攝像機的內參矩陣,只和相機內部參數有關,比如焦距和光心位置)
R0_rect(相機0的矯正旋轉矩陣)
Tr_velo_to_cam(點雲到相機的外參矩陣)

4、在論文中所述:
修正後的空間三維點雲x =(x,y,z,1)^T投影到第i個攝像機圖像中的點y =(u,v,1)^T的投影爲
在這裏插入圖片描述
其中
在這裏插入圖片描述
而將參考相機座標中的3D點x投影到第i個圖像平面上的點y,還需要考慮校正旋轉矩陣R0_rect,如下式:
在這裏插入圖片描述
其中R0_rect經R0_rect(4,4)= 1擴展爲4×4矩陣.
最後,如果要把激光雷達座標中的點轉換到參考相機座標上,要使用下列公式:
在這裏插入圖片描述
其中Tr_velo_to_cam 爲:
在這裏插入圖片描述

  • R_velo_to_cam爲3x3旋轉矩陣
  • T_velo_to_cam爲3x1平移向量

5、 傳感器標定

(1)calib_cam_to_cam.txt (P_rect_xx)

相機的標定,即爲通過某個已知的目標,求取相機內參矩陣的過程。最常用的標定目標就是棋盤格。

準備好棋盤格照片之後採用matlab 自帶的tools Camera Calibrator進行標定

單目攝像機需要標定的參數雙目都需要標定

雙目攝像機比單目攝像機多標定的參數(R和T)主要是描述兩個攝像機相對位置關係的參數,這些參數在立體校正和對極幾何中用處很大

(2)calib_velo_to_cam.txt

主要是得到點雲到圖像的旋轉平移矩陣:Tr_velo_to_cam = (R | T)

6、 KITTI目標檢測數據集calib文件格式:
如下圖:
在這裏插入圖片描述
The coordinates in the camera coordinate system can be projected in the image by using the 3x4 projection matrix in the calib folder, where for the left color camera for which the images are provided, P2 must be used.

To project a point from Velodyne coordinates into the left color image,
you can use this formula: x = P2 * R0_rect * Tr_velo_to_cam * y
For the right color image: x = P3 * R0_rect * Tr_velo_to_cam * y

Note: All matrices are stored row-major, i.e., the first values correspond to the first row. R0_rect contains a 3x3 matrix which you need to extend to a 4x4 matrix by adding a 1 as the bottom-right element and 0’s elsewhere. Tr_xxx is a 3x4 matrix (R|t), which you need to extend to a 4x4 matrix in the same way!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章