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
しかし、そこから彼は各画像の実際のピクセル座標ですか?
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
しかし、そこから彼は各画像の実際のピクセル座標ですか?
更新: PyKittiバージョン0.2.1は、すべてのカメラの投影行列を公開しています。
私は最近、同じ問題に直面しました。私にとって、問題は、pykittyがすべてのカメラ用にと rect行列を公開していないことでした。 Pykittiについて
> 0.2.1は、P RECTと較正データからR RECTを使用します。以前のバージョンの場合
は、次の2つのオプションがあります(データは各シーケンスのための.xmlキャリブレーション・ファイルである)
:
同種の座標では、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,:]
は、この情報がお役に立てば幸い!
ここに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