天天看點

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 軸向上
kitti資料集坐标轉換
kitti資料集坐标轉換

作者将所有傳感器都經過仔細的校準和同步.為了避免随時間出現誤差,作者會在錄制後每天對傳感器進行校準.即使兩者之間的傳感器設定沒有更改,也有可能會存在數值差異.

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的投影為

kitti資料集坐标轉換

其中

kitti資料集坐标轉換

而将參考相機坐标中的3D點x投影到第i個圖像平面上的點y,還需要考慮校正旋轉矩陣R0_rect,如下式:

kitti資料集坐标轉換

其中R0_rect經R0_rect(4,4)= 1擴充為4×4矩陣.

最後,如果要把雷射雷達坐标中的點轉換到參考相機坐标上,要使用下列公式:

kitti資料集坐标轉換

其中Tr_velo_to_cam 為:

kitti資料集坐标轉換
  • 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檔案格式:

如下圖:

kitti資料集坐标轉換

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!

繼續閱讀