Point Cloud

What Is a Point Cloud?

A point cloud is a collection of data points in 3D space, where each point represents the X-, Y-, and Z-coordinates of a location on a real-world object’s surface, and the points collectively map the entire surface. Point clouds are commonly produced by lidar scanners, stereo cameras, and time-of-flight cameras.

Based on the type of data, point clouds can be classified into two categories:

Organized point clouds

  • Organized into rows and columns like in image data
  • Format: M x N x C, where M is the number of rows, N number of columns and C number of channels
  • Sensors like stereo cameras and time of flight cameras typically create organized point clouds
  • Contain information about the relationship between adjacent points

Unorganized point clouds

  • Not organized into rows and columns
  • Format: MxC, where M is the number of points in the point cloud and C number of channels
  • Typical lidar sensors produce unorganized point clouds
  • An unorganized point cloud can be converted to an organized point cloud by projecting onto a sphere (such as by using MATLAB pcorganize function for the conversion)

Point cloud processing is used for perception and navigation in robotics and autonomous systems. It can also be used in augmented reality (AR) and virtual reality (VR) applications. MATLAB® provides tools and reference applications that support point cloud processing, particularly through Lidar Toolbox™ and Computer Vision Toolbox™.

Common Workflows and Tasks with MATLAB

Read, write, and stream point clouds
MATLAB provides readers for popular file formats like pcd, ply, pcap, las/laz, and ibeo data container. You can also stream live lidar data from Velodyne and Ouster lidar sensors.

Create synthetic lidar data
Create synthetic lidar data that imitates actual lidar sensors and test your workflow before deploying in real-world systems.

Preprocess data
Apply preprocessing algorithms like downsample, median filter, transform, extract features from, and align 3D point clouds

Calibrate lidar cameras
Find the transformation between camera and lidar in your system. You can then use this transformation to project lidar data onto camera data and vice versa.

Perform object detection and semantic segmentation
Detect objects or segment point clouds using deep learning algorithms.

Build maps and localize vehicles
Perform registration, map building, and SLAM using series of point clouds.

Deploy on CPUs and GPUs
You can deploy lidar processing workflows on your target hardware as C/C++ or CUDA codes

Stream live lidar data from Velodyne sensors

Live streaming lidar data from Velodyne sensors. Connect to lidar sensors and stream live lidar data into MATLAB.

Lidar Camera Calibrator app. Estimate the rigid transformation between a 3D lidar and a camera.

Lidar Camera Calibrator app. Estimate the rigid transformation between a 3D lidar and a camera.

Object tracking on point cloud data sequence. Detect, classify, and track vehicles by using sequential lidar data captured by a lidar sensor mounted on an ego vehicle.

Semantic segmentation of point clouds using SqueezeSegV2

Semantic segmentation of point clouds using SqueezeSegV2. Organized lidar data is semantically segmented into car (red), truck (purple), and background (black).(See MATLAB example)

See also: 3D image processing, affine transformation, digital image processing, image analysis, image processing and computer vision, image reconstruction, image registration, image segmentation, image thresholding, image transform, object detection, RANSAC, stereo vision, SLAM (simultaneous localization and mapping), drone mapping

Design, analyze, and test lidar processing systems using Lidar Toolbox.