2017-07-26 34 views
0

Velodyneポイントから、各カメラのピクセル座標を取得する方法は?Kitti Velodyneポイント座標ピクセル

Y = P RECT(I) R RECT(0) T:我々はKitti Dataset paperの式7である画像上の投影を得ることができるpykitti point_cam0 = data.calib.T_cam0_velo.dot(point_velo)を使用

veloカム x

しかし、そこから彼は各画像の実際のピクセル座標ですか?

答えて

0

更新: PyKittiバージョン0.2.1は、すべてのカメラの投影行列を公開しています。

私は最近、同じ問題に直面しました。私にとって、問題は、pykittyがすべてのカメラ用にと rect行列を公開していないことでした。 Pykittiについて

> 0.2.1は、P RECTと較正データからR RECTを使用します。以前のバージョンの場合

は、次の2つのオプションがあります(データは各シーケンスのための.xmlキャリブレーション・ファイルである)

  1. が手で行列を入力します。あなたは、画像へのベロダインポイントを投影する式7を使用することができ、その後https://github.com/Mi-lo/pykitti/

  • はpykittiのこのフォークを使用してください。注意:

    • 同種の座標では、3Dポイントが4xNの配列として必要です。斑点によって返される点は、4列目の反射率を持つ、Nx4個の配列です。 prepare_velo_points関数を使用してポイントを準備することができます。このポイントは、反射率> 0のポイントのみを保持し、反射率値を1に置き換えて同次座標を取得します。

    • ベロダインは360°です。式7はカメラの後ろにあるの点についても結果を与えます(正面のように投影されますが、縦にミラーリングされます)。これを避けるには、カメラの前にある点だけを投影する必要があります。そのためには、以下の関数project_velo_points_in_imgを使用することができます。これは同次座標の2d点を返しますので、3行目を破棄してください。ここで

    は、私が使用する関数です:

    def prepare_velo_points(pts3d_raw): 
        '''Replaces the reflectance value by 1, and tranposes the array, so 
         points can be directly multiplied by the camera projection matrix''' 
    
        pts3d = pts3d_raw 
        # Reflectance > 0 
        pts3d = pts3d[pts3d[:, 3] > 0 ,:] 
        pts3d[:,3] = 1 
        return pts3d.transpose() 
    
    def project_velo_points_in_img(pts3d, T_cam_velo, Rrect, Prect): 
        '''Project 3D points into 2D image. Expects pts3d as a 4xN 
         numpy array. Returns the 2D projection of the points that 
         are in front of the camera only an the corresponding 3D points.''' 
    
        # 3D points in camera reference frame. 
        pts3d_cam = Rrect.dot(T_cam_velo.dot(pts3d)) 
    
        # Before projecting, keep only points with z>0 
        # (points that are in fronto of the camera). 
        idx = (pts3d_cam[2,:]>=0) 
        pts2d_cam = Prect.dot(pts3d_cam[:,idx]) 
    
        return pts3d[:, idx], pts2d_cam/pts2d_cam[2,:] 
    

    は、この情報がお役に立てば幸い!

  • +1

    ここにpykitti devがあり、私は[version 0.2.1](https://github.com/utiasSTARS/pykitti/tree/0.2.1)をpypiにプッシュしました。これはMiloの[プルリクエスト](https://github.com/utiasSTARS/pykitti/pull/10)を組み込んで、未処理モジュールの投影および整流マトリクスを公開し、オドメトリモジュールに対しても同じことを行います。 – Lee

    関連する問題