Colorize lidar point clouds with 360° camera imagery and export a self-contained E57 (point cloud + 360° panoramas in one file). Windows desktop app.
The app is packaged as a single Windows .exe (~1.4 GB) with all heavy dependencies already
bundled inside — CUDA runtime, GPU libraries, ffmpeg and the neural models. Nothing to install:
just download and run.
➡ Download ColorizeA2.exe (Google Drive)
No Python and no CUDA toolkit installation is required — but you do need an NVIDIA GPU (see Requirements).
A2 Colorizer takes a lidar scan (point cloud + trajectory) plus a 360° camera recording and paints the real photographic color onto every point. It can also package the cloud together with the 360° panoramas into a single E57 file.
- Heavily tailored to scans produced by Share Studio (expected files:
*.bag,trajectory.txt,*_uncolorized.las). - Verified with Insta360 X4 and DJI Osmo 360 cameras.
- Windows 10/11 (64-bit)
- NVIDIA GPU with CUDA cores — the coloring runs on the GPU. The CUDA runtime is bundled, so no separate CUDA install is needed, but a CUDA-capable NVIDIA card is required.
- The stitched 360° video (equirectangular
.mp4) exported from the camera's own stitching app.
- Time synchronization between the camera and the lidar is automatic — it correlates the IMU (gyro) data of the camera with the lidar's IMU. No clapper, no manual time offset.
- Angular extrinsics (camera ↔ lidar rotation) are determined automatically: a rough estimate from the IMU, then refined during processing by aligning cloud edges to image edges.
- Linear extrinsics (the lever arm — the camera's offset from the lidar) are entered approximately by hand (your rig's measurements).
Matches the screenshot above.
| Field | What it is / what to enter |
|---|---|
| video (.mp4) | The stitched 360° equirectangular video from the camera. The source of color. |
| camera IMU (.osv / .insv) | The raw camera file — .insv for Insta360, .osv for DJI Osmo. Used for time synchronization. |
| bag (.bag) | The lidar bag from Share Studio (point cloud + lidar IMU). Used for time sync and for automatic rotation calibration. |
| LAS | The point cloud to colorize (the black-and-white *_uncolorized.las). |
| trajectory | trajectory.txt from Share Studio — the SLAM path (positions/orientations over time). |
| extrinsics (.json) | Camera ↔ lidar calibration. Leave empty and tick determine extrinsics to compute it automatically (saved next to the output). |
| output | Where to save the colored .las. |
| Field | What it is / what to enter |
|---|---|
| determine extrinsics | Tick to auto-compute the camera ↔ lidar rotation (needs the bag). If unticked, you must supply an extrinsics .json. |
| lever arm — back / up / right (cm) | The approximate position of the camera relative to the lidar. Enter your rig's measured offsets. |
| Field | What it is / what to enter |
|---|---|
| fps | How many video frames per second to sample for coloring. Higher = denser color voting, slower. |
| res | Video decode resolution (Full or half). |
| nadir | Nadir mask angle (degrees). Hides a cone straight down under the camera (operator / monopod). Larger = hides more. |
| votes | How many frames vote for each point's color (consensus — removes ghosting). |
| range | Maximum distance (m) at which a point still gets colored. |
| cut L / cut R | Crop columns from the left / right of each frame (degrees) — a quick way to cut operators walking beside the rig. |
| remove people | Automatically detect and hide operators (person segmentation) so they don't paint onto the cloud (and are masked out of the panoramas). |
- COLORIZE — run the colorization → colored
.las. - Abort — stop, keeping the partial result.
- Create E57 — build a single
.e57with the cloud + 360° panoramas placed along the trajectory. Works even without a colored cloud — it can build the E57 straight from the black-and-white cloud (the panoramas carry the color), which is faster. With remove people on, operators are masked out of the panoramas too. - Exit — close.
- Fill in video, camera IMU, bag, LAS, trajectory.
- Tick determine extrinsics and enter the approximate lever arm.
- COLORIZE → colored
.las. - (optional) Create E57 → a shareable
.e57with the cloud + panoramas.
- Telegram: https://t.me/a2blog
- YouTube: https://youtube.com/@a2-lab
- Instagram: https://instagram.com/a2_proekt