项目作者: eugeniu1994

项目描述 :
Master thesis project realized in partnership with Aalto University and Finnish Geospatial Research Institute of Finland. Stereo Camera-LiDAR calibration. Covers: mono and stereo camera calibration, Camera-LIDAR synchronisation, camera-based and LiDAR-based 3D reconstruction, Camera-LiDAR extrinsic calibration, Occlusion handling.
高级语言: Python
项目地址: git://github.com/eugeniu1994/Stereo-Camera-LiDAR-calibration.git
创建时间: 2021-05-28T12:10:53Z
项目社区:https://github.com/eugeniu1994/Stereo-Camera-LiDAR-calibration

开源协议:Other

下载


Mono,Stereo Camera-LiDAR Calibration README Awesome

A curated list of instructions

This is the Camera-LiDAR calibration master thesis project.
Contains:

  • Mono and Stereo camera calibration
  • Camera-based 3D reconstruction
  • Camera-LiDAR extrinsic calibration
  • Camera-LiDAR occlusion handling
  • Sensors synchronisation and fusion

Use 3D car models

3D car models are available under /car_models_json folder.

Usage

  1. import json
  2. from mpl_toolkits.mplot3d import Axes3D
  3. import glob
  4. import matplotlib.pyplot as plt
  5. #change the path here
  6. files = glob.glob('/car_models_json/*leikesasi.json')
  7. file = files[0]
  8. plt.figure(figsize=(20, 10))
  9. ax = plt.axes(projection='3d')
  10. scale = 5
  11. with open(file) as json_file:
  12. data = json.load(json_file)
  13. print(data.keys()) # (['car_type', 'vertices', 'faces']
  14. vertices = np.array(data['vertices'])
  15. triangles = np.array(data['faces']) - 1
  16. print('vertices -> {}, triangles->{}'.format(np.shape(vertices), np.shape(triangles)))
  17. ax.set_xlim([-15, 15])
  18. ax.set_ylim([-15, 15])
  19. ax.set_zlim([-1, 15])
  20. ax.plot_trisurf(vertices[:, 0], vertices[:, 2], triangles[:], -vertices[:, 1], shade=True,
  21. color='grey', alpha=.2)
  22. plt.show()

Camera-LiDAR extrinsic calibration

  • Data collection, & pointcloud filtering using RANSAC, see cam_lidar_data.py
  • Extract point cloud correspondences - see Fit_Points.py script, collect 3D-2D and 3D-3D data points. Estimate transformation between LiDAR-image pixels and LiDAR-3d stereo points.
  • see synchronization.py for camera-Lidar synchronization and fusion

Mono and Stereo camera calibration & 3D reconstruction

  • Mono camera calibration using chessboard, see MonoChess.py, example how to run main.py Chess_MonoCalibration() function.

  • Mono camera calibration using ChAruco, see MonoCharuo.py, example how to run main.py Charuco_MonoCalibration() function.

  • Stereo camera calibration using chessboard, see StereoChess.py, example how to run main.py Chess_StereoCalibration() function.

  • Stereo camera calibration using ChAruco, see StereoChess.py, example how to run main.py Charuco_MonoCalibration() function.

  • 3D reconstruction using points collected with ChAruco + chessboard, see Charuco_Chess_combine.py script, example to run see combinedChess_and_Charuco() function in the main.py script

Original view

Sensor synchronised, calibrated, fused and occlusion removed

License

[CC0]

CONFIDENTIAL

  1. Copyright (c) 2021 Eugeniu Vezeteu,
  2. Department of Remote Sensing and Photogrammetry,
  3. Finnish Geospatial Research Institute (FGI), National Land Survey of Finland (NLS)
  4. PERMISSION IS HEREBY LIMITED TO FGI'S INTERNAL USE ONLY. THE CODE
  5. MAY BE RE-LICENSED, SHARED, OR TAKEN INTO OTHER USE ONLY WITH
  6. A WRITTEN CONSENT FROM THE HEAD OF THE DEPARTMENT.
  7. The software is provided "as is", without warranty of any kind, express or
  8. implied, including but not limited to the warranties of merchantability,
  9. fitness for a particular purpose and noninfringement. In no event shall the
  10. authors or copyright holders be liable for any claim, damages or other
  11. liability, whether in an action of contract, tort or otherwise, arising from,
  12. out of or in connection with the software or the use or other dealings in the
  13. software.