Skip to content

LiDAR激光雷达数据

通过将LiDAR数据整理到一个JSON文件里,可以快捷地将重建所需数据一键导入 MipMap Desktop 软件,也可以和重建参数合并输入到 MipMap SDK 进行全自动纹理模型和高斯泼溅模型重建。

为了易于区分,JSON文件的后缀需要修改为 .mpl 后导入MipMap Desktop。(如mipmap_lidar.mpl)

数据包括:

  • 点云数据:通常为LAS格式的点云数据,点云需要在gps_time字段记录了采集时刻的时间戳
  • 图像数据:图像集,包括每张图像的路径、时间戳、位置和姿态角(可选)等数据
  • 相机参数:相机的焦距、主点内参数,以及畸变参数

LiDAR数据字段

字段名类型是否必需说明
coordinate_systemsJSON坐标系组,详见coordinate_systems
camera_meta_dataJSON相机参数,详见camera_meta_data
image_meta_dataJSON图像集合,详见image_meta_data
lidar_dataJSON激光雷达数据,详见lidar_data

coordinate_systems

coordinate_systems是一个坐标系数组,存储每一组坐标系和其ID

字段名类型是否必需说明
coordinate_systemJSON坐标系对象,详见coordinate_system
idint坐标系ID

如下为包含一组局部坐标系和一组WGS84坐标系的coordinate_systems示例:

json
"coordinate_systems": [
  {
    "id": 0,
    "coordinate_system": {
      "type": 1,
      "type_name": "Local"
    }
  },
  {
    "id": 1,
    "coordinate_system": {
      "type": 2,
      "type_name": "Geographic",
      "label": "WGS 84",
      "epsg_code": 4326
    }
  }
]

camera_meta_data

字段名类型是否必需说明
idint相机唯一ID
meta_dataobject相机元信息,详见下表

meta_data 子字段说明:

字段名类型是否必需说明
projection_modelint镜头模型: 0-透视镜头(k1,k2,k3,p1,p2); 1-鱼眼镜头(k1,k2,k3,k4)
camera_namestring相机名称
widthint传感器宽度(像素)
heightint传感器高度(像素)
parametersarray相机内参数组(透视相机顺序为 fx, fy, cx, cy, k1, k2, p1, p2, k3;鱼眼相机顺序为 fx fy cx cy k1 k2 k3 k4)
constant_parametersarray空三解算时固定相机内参的序号数组,按照parameters中的参数顺序,指定需要固定的参数索引集合(索引从0开始),如透视相机指定[0,1,2,3,4,5,6,7,8]表示固定住所有参数
mask_pathstring二值掩膜图的路径,PNG格式,值为0的像素区域将在重建处理中被忽略(掩膜图将应用于所有该相机采集的图像)

TIP

相机的掩膜图使用的典型场景:在机器人上安装固定相机,相机镜头如果会拍摄到机器人自身,则可以通过掩膜图将机器人出现的像素区域在重建中忽略掉

json
透视镜头
"camera_meta_data": [
  {
    "id": 1,
    "meta_data": {
      "projection_model": 0,    // 透视相机
      "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,            // p1
        1e-7,                   // p2
        -0.02706411             // k3
      ]
    }
  }
]
鱼眼镜头
"camera_meta_data": [
  {
    "id": 1,
    "meta_data": {
      "camera_name": "fisheye",         // 鱼眼相机
      "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

字段名类型是否必需说明
idint图像唯一ID
pathstring图像绝对路径
meta_dataobject图像元信息,详见下表
crs_idint图像所属坐标系的ID,默认0
source_idint图像所属采集源的id,默认0

TIP

crs_id可以用来区分POS为不同坐标系的图像组,如空中一般用wgs84或cgcs2000的坐标系,地面则用local坐标系比较常见。

source_id用来区分不同采集源的图像,如空中的无人机图像和地面的手持设备采集的图像,给它们设置不一样的source_id是非常必要的。

不同坐标系的数据源必须设置不同的源。

典型的使用场景:空地融合

meta_data 子字段说明:

字段名类型是否必需说明
widthint图像宽度(像素)
heightint图像高度(像素)
camera_idint对应相机ID
timestampdouble图像采集时刻的时间戳,手持激光设备采集的图像必须存在时间戳,且必须和LAS点云在gps time字段里记录的时间一致,其他采集源的图像可以不写时间戳字段
posarray[3]POS位置 [经度/X, 纬度/Y, 高程/Z],手持激光设备采集的图像必须写入pos,且必须和对应LAS点云的坐标系一致
pos_sigmaarray[3]POS位置精度,厘米级RTK定位精度:[0.03,0.03,0.06];分米到米级定位精度:[0.5,0.5,1];米级以上定位精度: [2.0,2.0,5.0],LIDAR数据建议用厘米级精度
orientationarray[9]3x3旋转矩阵(9个值,行主序,单位向量,世界坐标系到相机坐标系的旋转矩阵),若为鱼眼图,则强烈建议指定
position_constantbool是否固定位置(true/false),固定位置意味着空三不会优化改变图像的位置,保持输入值
mask_pathstring二值掩膜图的路径,PNG格式,值为0的像素区域将在重建处理中被忽略

【提示】二值掩膜图用来标记无效区域,SDK将在重建时忽略无效区域,提升效率并获取更干净的成果

lidar_data

字段名类型说明
laser_meta_dataarray激光雷达点云文件元数据列表

laser_meta_data

字段名类型说明
idintLAS点云数据ID
pathstringLAS点云文件路径(.las格式)
source_idintLAS点云数据的source_id,请注意和配套的图像使用同一个源,默认0
crs_idintLAS点云坐标系的ID,默认0

示例:

json
{
  "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",
        "crs_id": 0,
        "source_id": 0,
        "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",
        "crs_id": 0,
        "source_id": 0,
        "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
        ]
        }
    },
    {
        "id": 2,
        "path": "\\DJI_0001.JPG",
        "crs_id": 1,
        "source_id": 1,
        "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": {
    "laser_meta_data": [            // 激光雷达点云文件列表
      {
        "id": 1,                    // 文件ID
        "path": "C:/path/to/file1.las", // 点云文件路径
        "source_id": 0,
        "crs_id": 0
      },
      {
        "id": 2,                    // 文件ID
        "path": "C:/path/to/file2.las", // 点云文件路径
        "source_id": 0,
        "crs_id": 0
      }
    ]
  },
  "coordinate_systems": [
    {
      "id": 0,
      "coordinate_system": {
        "type": 1,
        "type_name": "Local"
      }
    },
    {
      "id": 1,
      "coordinate_system": {
        "type": 2,
        "type_name": "Geographic",
        "label": "WGS 84",
        "epsg_code": 4326
      }
    }
  ]
}

MipMap Desktop Documentation