Lidar Data Requirements
By organizing LiDAR data into a single JSON file, you can quickly import all required reconstruction data into MipMap Desktop with one click, or merge it with reconstruction parameters and pass it to the MipMap SDK for fully automatic textured model and Gaussian splatting reconstruction.
For easier distinction, the JSON file extension should be changed to .mpl before importing into MipMap Desktop (for example, mipmap_lidar.mpl).
Required data includes:
- ✅ Point Cloud Data: Usually point cloud data in LAS format, with timestamps recorded in the gps_time field at acquisition time
- ✅ Image Data: Image collection, including each image path, timestamp, position and attitude angle (optional), etc.
- ✅ Camera Parameters: Camera focal length, principal point internal parameters, and distortion parameters
LIDAR Reconstruction Parameters
| Parameter Name | Type | Required | Description |
|---|---|---|---|
coordinate_system | JSON | Yes | Coordinate system of image POS, see coordinate_system for details |
camera_meta_data | JSON | Yes | Camera parameters, see camera_meta_data for details |
image_meta_data | JSON | Yes | Image collection, see image_meta_data for details |
lidar_data | JSON | Yes | Lidar data, see lidar_data for details |
coordinate_system Object
| Field Name | Type | Description | Example Value |
|---|---|---|---|
type | int | Coordinate system type: 0=LocalENU, 1=Local, 2=Geographic, 3=Projected, 4=ECEF | 2 |
type_name | string | Coordinate system type name (optional, auxiliary description) | "Geographic" |
label | string | Coordinate system name (optional) | "WGS 84" |
epsg_code | int | EPSG code (required for geographic/projected/geocentric coordinate systems) | 4326 |
wkt | string | WKT string (optional, alternative to epsg_code) | "..." |
origin_point | array[3] | Origin WGS84 coordinates [longitude, latitude, elevation] (required only when type=0 LocalENU) | [114.12, 22.12, 0] |
offset | array[3] | Coordinate system origin offset (optional) | [0, 0, 0] |
Below are the most common WGS84 and CGCS2000 coordinate systems:
{
"type": 2, // 0=LocalENU, 1=Local, 2=Geographic, 3=Projected
"type_name": "Geographic",
"label": "WGS 84", // Coordinate system name
"epsg_code": 4326 // EPSG code
}
{
"type": 3, // 0=LocalENU, 1=Local, 2=Geographic, 3=Projected
"type_name": "Projected",
"label": "WGS 84 / UTM zone 50N", // Coordinate system name
"epsg_code": 32650 // EPSG code
}
{
"type": 2, // 0=LocalENU, 1=Local, 2=Geographic, 3=Projected
"type_name": "Geographic",
"label": "CGCS2000", // Coordinate system name
"epsg_code": 4490 // EPSG code
}
{
"type": 2, // 0=LocalENU, 1=Local, 2=Geographic, 3=Projected
"type_name": "Projected",
"label": "CGCS2000 / 3-degree Gauss-Kruger CM 114E", // Coordinate system name
"epsg_code": 4547 // EPSG code
}
camera_meta_data Object
| Field Name | Type | Required | Description |
|---|---|---|---|
id | int | Yes | Camera unique ID |
meta_data | object | Yes | Camera metadata, see table below |
meta_data sub-field description:
| Field Name | Type | Required | Description |
|---|---|---|---|
projection_model | int | Yes | Lens model: 0-perspective lens (k1,k2,k3,p1,p2); 1-fisheye lens (k1,k2,k3,k4) |
camera_name | string | Yes | Camera name |
width | int | Yes | Sensor width (pixels) |
height | int | Yes | Sensor height (pixels) |
parameters | array | Yes | Camera internal parameter group (perspective camera order: fx, fy, cx, cy, k1, k2, k3, p1, p2; fisheye camera order: fx fy cx cy k1 k2 k3 k4) |
constant_parameters | array | No | Array of parameter indices to fix camera internal parameters during AT solution, specified according to the parameter order in parameters (index starts from 0), e.g., for perspective camera, specifying [0,1,2,3,4,5,6,7,8] means fixing all parameters |
mask_path | string | No | Path to the binary mask image in PNG format. Pixel regions with value 0 are ignored during reconstruction processing (the mask is applied to all images captured by this camera) |
Typical use case for a camera mask: when a fixed camera is mounted on a robot and the lens can capture parts of the robot body, you can use a mask to ignore those pixel regions during reconstruction.
Perspective lens
"camera_meta_data": [
{
"id": 1,
"meta_data": {
"projection_model": 0, // Perspective camera
"camera_name": "common",
"width": 5280,
"height": 3956,
"parameters": [
3713.29, // fx
3713.29, // fy
2647.02, // cx
1969.28, // cy
-0.11257524, // k1
0.01487443, // k2
-0.00008572, // k3
1e-7, // p1
-0.02706411 // p2
]
}
}
]
Fisheye lens
"camera_meta_data": [
{
"id": 1,
"meta_data": {
"camera_name": "fisheye", // Fisheye camera
"projection_model": 1,
"width": 3600,
"height": 3600,
"parameters": [
982.7593599212141, // fx
982.7593599212141, // fy
1747.6373897301492, // cx
1806.4116030074354, // cy
0.03702410479839055, // k1
-0.016007338300982825, // k2
-1.0884582901480562e-05, // k3
-9.773097281093723e-05 // k4
]
}
}
]
image_meta_data Object
| Field Name | Type | Required | Description |
|---|---|---|---|
id | int | Yes | Image unique ID |
path | string | Yes | Image absolute path |
meta_data | object | Yes | Image metadata, see table below |
meta_data sub-field description:
| Field Name | Type | Required | Description |
|---|---|---|---|
width | int | Yes | Image width (pixels) |
height | int | Yes | Image height (pixels) |
camera_id | int | Yes | Corresponding camera ID |
timestamp | double | Yes | Timestamp of image acquisition time; must match the time recorded in the gps_time field of the LAS point cloud. When this attribute is set, trajectory data is not required |
pos | array[3] | Yes | POS position [longitude/X, latitude/Y, elevation/Z] |
pos_sigma | array[3] | Yes | POS position accuracy: centimeter-level RTK [0.03,0.03,0.06]; decimeter-to-meter level [0.5,0.5,1]; meter level and above [2.0,2.0,5.0]. LIDAR data recommends centimeter-level accuracy |
orientation | array[9] | No | 3x3 rotation matrix (9 values, row-major, unit vectors, world to camera). Strongly recommended to specify for fisheye images |
position_constant | bool | No | Whether to fix position (true/false); fixed position means AT will not optimize or change image position, keeping input values |
mask_path | string | No | Path to the binary mask image in PNG format. Pixel regions with value 0 are ignored during reconstruction processing |
Tip: binary mask images are used to mark invalid regions. The SDK ignores invalid regions during reconstruction to improve efficiency and obtain cleaner results.
lidar_data Data
| Field Name | Type | Description |
|---|---|---|
coordinate_system | JSON | Coordinate system definition for lidar data |
laser_meta_data | array | List of lidar point cloud file metadata |
laser_meta_data Sub-fields
| Field Name | Type | Description |
|---|---|---|
id | int | LAS point cloud data ID |
path | string | LAS point cloud file path (supports LAS format) |
Example:
{
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},
"camera_meta_data": [
{
"id": 1,
"meta_data": {
"camera_name": "Left",
"projection_model": 1,
"width": 3600,
"height": 3600,
"parameters": [
982.7593599212141,
982.7593599212141,
1747.6373897301492,
1806.4116030074354,
0.03702410479839055,
-0.016007338300982825,
-1.0884582901480562e-05,
-9.773097281093723e-05
]
}
},
{
"id": 2,
"meta_data": {
"camera_name": "Right",
"projection_model": 1,
"width": 3600,
"height": 3600,
"parameters": [
982.7593599212141,
982.7593599212141,
1747.6373897301492,
1806.4116030074354,
0.03702410479839055,
-0.016007338300982825,
-1.0884582901480562e-05,
-9.773097281093723e-05
]
}
}
],
"image_meta_data":[
{
"id": 1,
"path": "\\left\\2390-195042-472_00395-L.JPG",
"meta_data": {
"width": 3600,
"height": 3600,
"camera_id": 1,
"timestamp": 1.0000,
"pos": [
-2272303.077314121,
5011055.355739306,
3215292.943560472
],
"pos_sigma": [0.03,0.03,0.06],
"orientation": [
0.8929275412022056,
0.43070972182403255,
0.13103259781004117,
-0.4500241512548592,
0.8457917052937085,
0.2865565468519331,
0.012596406230632032,
-0.31484206641207435,
0.9490604847782084
]
}
},
{
"id": 2,
"path": "\\right\\2390-195042-472_00395-R.JPG",
"meta_data": {
"width": 3600,
"height": 3600,
"camera_id": 2,
"timestamp": 2.0000,
"pos": [
-2272303.117693735,
5011055.368901664,
3215292.967908075
],
"pos_sigma": [0.03,0.03,0.06],
"orientation": [
0.8918935649712837,
0.435497387453275,
0.12193397510204676,
-0.4504120798442928,
0.8311302214603127,
0.3261157973874772,
0.040679566039387514,
-0.34578111645476495,
0.9374329802231962
]
}
}
],
"lidar_data": {
"coordinate_system": {
"type": 3,
"epsg_code": 32632
},
"laser_meta_data": [ // Lidar point cloud file list
{
"id": 1, // File ID
"path": "C:/path/to/file1.las" // Point cloud file path
},
{
"id": 2, // File ID
"path": "C:/path/to/file2.las" // Point cloud file path
}
]
}
}