Reconstruct3D - 三维重建
概述
Reconstruct3D 接口用于从空三结果生成二维和三维模型。通常与 ReconstructAT 配合使用,完成完整的重建流程。该接口支持多种输出格式、分块处理和精细的参数控制。
适用场景
- 从空三结果生成三维模型
- 生成正射影像和数字表面模型
- 大规模数据的分块重建
- 需要特定输出格式
接口调用
命令行调用
reconstruct_full_engine.exe -reconstruct_type 2 -task_json 3d_config.json
参数说明
reconstruct_type: 固定为2(表示 Reconstruct3D)task_json: 配置文件路径
配置参数
必需参数
| 参数名 | 类型 | 说明 |
|---|---|---|
working_dir | string | 工作目录(必须与空三相同) |
gdal_folder | string | GDAL 数据路径 |
image_meta_data | JSON Array | 输入图像的元数据信息,格式查看image_meta_data |
可选参数
基础参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
input_image_type | int | 0 | 图像类型:1=RGB,2=多光谱,3=红外 |
resolution_level | int | 1 | 重建精度:1=高精度,2=中精度,3=低精度 |
pipeline_mode | int | 0 | 重建管线:0=纯视觉重建 1=纯激光雷达点云重建,2=视觉&激光融合重建 |
reconstruct_mode | int | 0 | 重建模式:0=一般场景,1=环绕场景,2=电力线场景 |
coordinate_system_3d | JSON | - | 输出三维结果的坐标系,格式查看coordinate_system |
coordinate_system_2d | JSON | - | 输出二维结果的坐标系 |
min_avali_memory_size | double | 0 | 最小可用内存(GB),用于控制分块数量 |
fast_mode | bool | false | 快速模式,提高效率但降低细节 |
keep_undistort_images | bool | false | 是否保留去畸变图像 |
输出格式控制
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
generate_osgb | bool | false | 生成 OSGB 格式三维模型 |
generate_3d_tiles | bool | false | 生成 3D Tiles (b3dm) 格式 |
generate_las | bool | false | 生成 LAS 格式点云 |
generate_pc_ply | bool | false | 生成 PLY 格式点云 |
generate_pc_osgb | bool | false | 生成 OSGB 格式点云 LOD |
generate_pc_pnts | bool | false | 生成 pnts 格式点云 LOD |
generate_gs_ply | bool | false | 生成 ply 格式高斯泼溅成果 |
generate_obj | bool | false | 生成 OBJ 格式纹理网格 |
generate_ply | bool | false | 生成 PLY 格式纹理网格 |
generate_geotiff | bool | false | 生成 GeoTIFF 格式正射影像 |
generate_tile_2D | bool | false | 对正射影像进行瓦片切分 |
generate_2D_from_3D_model | bool | false | 从三维模型生成二维正射影像 |
高级参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
use_draco_compression | bool | true | 3D Tiles 是否使用 Draco 压缩 |
tex_image_type_3dtiles | int | 0 | 3D Tiles 纹理格式:0=JPEG,1=WebP |
use_gcj02 | bool | false | 是否将正射影像瓦片转换为 GCJ02 坐标系 |
roi_for_2d | JSON | - | 二维重建的感兴趣区域 |
roi_for_3d | JSON | - | 三维重建的感兴趣区域 |
roi_coordinate_system | JSON | WGS84 | ROI 的坐标系 |
LIDAR重建参数(pipeline_mode=1或2时)
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
lidar_data | JSON | - | 激光雷达数据配置 |
lidar_data字段说明
| 字段名 | 类型 | 说明 |
|---|---|---|
coordinate_system | JSON | 激光雷达数据的坐标系定义,LAS和轨迹文件必须使用相同坐标系 |
laser_meta_data | array | 激光雷达点云文件元数据列表 |
trajectory_meta_data | array | 激光雷达轨迹数据列表 |
laser_meta_data 子字段
| 字段名 | 类型 | 说明 |
|---|---|---|
id | int | LAS点云数据ID |
path | string | LAS点云文件路径(支持LAS格式) |
trajectory_id | int | 关联的轨迹ID |
trajectory_meta_data 子字段
| 字段名 | 类型 | 说明 |
|---|---|---|
id | int | 轨迹数据ID |
trajectory_points | array | 轨迹点数据列表 |
trajectory_points 子字段
| 字段名 | 类型 | 说明 |
|---|---|---|
pos | array | 位置坐标 [经度/X, 纬度/Y, 高程/Z] |
time | double | 时间戳(秒),必须和LAS点云的时间戳一致 |
数据结构说明
相机元数据
{
"id": 1, // 相机唯一 ID
"meta_data": {
"camera_name": "Camera-1", // 相机名称
"projection_model": 0, // 投影模型(可选)
"width": 4000, // 传感器宽度(像素)
"height": 3000, // 传感器高度(像素)
"parameters": [ // 相机内参(10元素数组)
// fx, fy, cx, cy, k1, k2, p1, p2, k3,placeholder_param
]
}
}
ROI(感兴趣区域)
{
"boundary": [ // 2D 多边形边界(逆时针)
[x1, y1],
[x2, y2],
[x3, y3]
// ...
],
"min_z": 100.0, // 最小高程(可选)
"max_z": 500.0 // 最大高程(可选)
}
输出坐标系设置
{
"coordinate_system_3d": {
"type": 3, // 投影坐标系
"epsg_code": 32650 // UTM Zone 50N
},
"coordinate_system_2d": {
"type": 2, // 地理坐标系
"epsg_code": 4326 // WGS84
}
}
Lidar数据配置
配置结构
{
"lidar_data": {
"coordinate_system": {
"type": 3,
"type_name": "Projected",
"label": "WGS 84 / UTM zone 32N",
"epsg_code": 32632
},
"laser_meta_data": [ // 激光雷达点云文件列表
{
"id": 1, // 文件ID
"path": "C:/path/to/file.las", // 点云文件路径
"trajectory_id": 1 // 对应的轨迹ID
}
],
"trajectory_meta_data": [ // 激光雷达轨迹数据
{
"id": 1, // 轨迹ID
"trajectory_points": [ // 轨迹点列表
{
"pos": [ // 位置坐标 [X, Y, Z]
-2272285.667,
5011024.157,
3215249.921
],
"time": 284833.06453 // 时间戳
}
]
}
]
}
}
完整配置示例
基础三维重建
{
"working_dir": "C:/Projects/3D_Task",
"gdal_folder": "C:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 2,
"image_meta_data": [
{
"id": 1,
"path": "C:/Images/DJI_0001.JPG"
},
{
"id": 2,
"path": "C:/Images/DJI_0002.JPG"
}
],
"generate_osgb": true,
"generate_3d_tiles": true,
"generate_las": true,
"generate_geotiff": true
}
高精度重建配置
{
"working_dir": "C:/Projects/HighQuality_3D",
"gdal_folder": "C:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 1, // 最高精度
"reconstruct_mode": 0, // 一般场景
"image_meta_data": [...],
"generate_osgb": true,
"generate_3d_tiles": true,
"generate_obj": true,
"generate_geotiff": true,
"generate_tile_2D": true,
"coordinate_system_3d": {
"type": 3,
"epsg_code": 32650 // UTM 50N
},
"coordinate_system_2d": {
"type": 2,
"epsg_code": 4326 // WGS84
}
}
大规模数据分块重建
{
"working_dir": "C:/Projects/LargeScale_3D",
"gdal_folder": "C:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 2,
"min_avali_memory_size": 16.0, // 限制每块使用最大 16GB 内存
"image_meta_data": [...],
"roi_for_3d": {
"boundary": [
[114.12, 22.12],
[114.13, 22.12],
[114.13, 22.13],
[114.12, 22.13]
],
"min_z": 0,
"max_z": 500
},
"generate_3d_tiles": true,
"use_draco_compression": true,
"tex_image_type_3dtiles": 1 // 使用 WebP 压缩纹理
}
特殊场景配置
环绕物体重建
{
"working_dir": "C:/Projects/Object_3D",
"gdal_folder": "C:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 1,
"reconstruct_mode": 1, // 环绕场景模式
"image_meta_data": [...],
"generate_obj": true,
"generate_ply": true,
"coordinate_system_3d": {
"type": 1 // Local 坐标系
}
}
仅生成正射影像
{
"working_dir": "C:/Projects/Ortho_Only",
"gdal_folder": "C:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 2,
"image_meta_data": [...],
"generate_geotiff": true,
"generate_tile_2D": true,
"generate_2D_from_3D_model": true,
"roi_for_2d": {
"boundary": [...] // 指定正射影像范围
},
"coordinate_system_2d": {
"type": 3,
"epsg_code": 32650
}
}
激光雷达数据重建
{
"working_dir": "C:/Projects/Lidar_3D",
"gdal_folder": "C:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 1,
"pipeline_mode": 1,
"camera_meta_data": [...],
"image_meta_data": [...],
"generate_3d_tiles": true,
"generate_las": true,
"generate_osgb": true,
"generata_gs_ply": false,
"lidar_data": {
"coordinate_system": {
"type": 3,
"type_name": "Projected",
"label": "WGS 84 / UTM zone 32N",
"epsg_code": 32632
},
"laser_meta_data": [
{
"id": 1,
"path": "C:/LidarData/scan_001.las",
"trajectory_id": 1
},
{
"id": 2,
"path": "C:/LidarData/scan_002.las",
"trajectory_id": 2
}
],
"trajectory_meta_data": [
{
"id": 1,
"trajectory_points": [
{
"pos": [-2272285.667, 5011024.157, 3215249.921],
"time": 284833.06453
},
{
"pos": [-2272285.767, 5011024.257, 3215249.921],
"time": 284833.07453
}
]
}
]
},
"coordinate_system": {
"type": 3,
"type_name": "Projected",
"label": "WGS 84 / UTM zone 32N",
"epsg_code": 32632
}
}
输出结果
三维模型输出 (products/3D/)
model-osgb/- OSGB 格式模型和 LODmodel-b3dm/- 3D Tiles 格式(含 tileset.json)model-obj/- OBJ 格式模型和纹理point-las/- LAS 格式点云point-ply/- PLY 格式点云point-osgb/- OSGB 格式点云 LODpoint-pnts/- 3D Tiles 点云格式point-gs-ply/- 3DGS-PLY点云格式
二维产品输出 (products/2D/)
geotiffs/- GeoTIFF 格式正射影像和 DSMdom_tiles/- 正射影像瓦片dsm_tiles/- 数字表面模型瓦片
中间结果 (milestones/)
undistorted/- 去畸变图像(如果保留)depth_maps/- 深度图mesh/- 中间网格数据
分辨率等级说明
| 等级 | 说明 | 相对处理时间 | 适用场景 |
|---|---|---|---|
| 1 | 超高精度 | 3-5x | 专业测绘、文物保护 |
| 2 | 高精度 | 1x | 一般工程应用 |
| 3 | 快速预览 | 0.2-0.3x | 快速验证、预览 |
精度与效率平衡
- resolution_level=1:最高几何细节和纹理清晰度
- resolution_level=2:平衡质量和效率,推荐大多数应用
- resolution_level=3:快速处理,适合初步验证
最佳实践
1. 内存管理
对于大规模数据:
{
"min_avali_memory_size": 24.0, // 根据可用内存设置
"resolution_level": 2 // 考虑降低精度
}
2. 输出格式选择
- Web 展示:使用 3D Tiles + Draco 压缩
- GIS 分析:生成 GeoTIFF 和 LAS
- 专业软件:使用 OSGB 格式
- 编辑处理:导出 OBJ 或 PLY
3. 坐标系设置
- 三维模型通常使用投影坐标系(如 UTM)
- 正射影像可根据需求选择地理或投影坐标系
- Web 应用考虑使用 WGS84
4. ROI 使用
- 使用空三生成的 ROI 作为基础
- 可根据需求调整范围
- 分别设置 2D 和 3D 的 ROI
5. 激光雷达数据融合
- 数据格式:支持 LAS/LAZ 格式点云文件
- 坐标系一致性:LAS文件和轨迹文件必须使用相同坐标系,与图像坐标系可以不同
- 轨迹数据:提供精确的激光雷达轨迹信息以提高重建精度
- 文件关联:通过
trajectory_id将点云文件与轨迹数据关联 - 时间同步:轨迹点的时间戳应与LAS点云的时间戳同步
性能优化
快速处理
{
"resolution_level": 3,
"fast_mode": true,
"generate_3d_tiles": true, // 仅生成必要格式
"use_draco_compression": true
}
高质量输出
{
"resolution_level": 1,
"fast_mode": false,
"keep_undistort_images": true, // 保留中间结果供检查
"generate_obj": true, // 生成高质量网格
"generate_geotiff": true
}
常见问题
Q: 提示"找不到空三结果"
A: 确保:
working_dir与 ReconstructAT 使用的相同- 空三已成功完成
- milestones 目录包含 mvs.xml 文件
Q: 内存不足错误
A:
- 设置
min_avali_memory_size限制内存使用 - 降低
resolution_level - 使用 DivideTiles 进行预分块
Q: 输出坐标不正确
A:
- 检查
coordinate_system_3d/2d设置 - 确认 ROI 坐标系与数据匹配
- 验证 GDAL 数据路径正确
下一步
提示:Reconstruct3D 提供了丰富的输出选项。建议先用低精度快速验证,再进行高质量重建。