Reconstruct3D - 三维重建
概述
Reconstruct3D 接口用于从空三结果生成二维和三维模型。通常与 ReconstructAT 配合使用,完成完整的重建流程。该接口支持多种输出格式、分块处理和精细的参数控制。
适用场景
- 从空三结果生成三维模型
- 生成正射影像和数字表面模型
- 大规模数据的分块重建
- 需要特定输出格式
接口调用
命令行调用
reconstruct_full_engine.exe -reconstruct_type 2 -task_json 3d_config.json
参数说明
reconstruct_type
: 固定为2
(表示 Reconstruct3D)task_json
: 配置文件路径
配置参数
必需参数
参数名 | 类型 | 说明 |
---|---|---|
license_id | int | SDK 许可证代码,统一为 9200 |
working_dir | string | 工作目录(必须与空三相同) |
gdal_folder | string | GDAL 数据路径 |
input_image_type | int | 图像类型:1=RGB,2=多光谱,3=红外 |
image_meta_data | JSON Array | 输入图像的元数据信息 |
resolution_level | int | 重建精度:1=高精度,2=中精度,3=低精度 |
可选参数
基础参数
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
reconstruct_mode | int | 0 | 重建模式:0=一般场景,1=环绕场景,2=电力线场景 |
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_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 坐标系 |
coordinate_system_3d | JSON | - | 输出三维结果的坐标系 |
coordinate_system_2d | JSON | - | 输出二维结果的坐标系 |
roi_for_2d | JSON | - | 二维重建的感兴趣区域 |
roi_for_3d | JSON | - | 三维重建的感兴趣区域 |
roi_coordinate_system | JSON | WGS84 | ROI 的坐标系 |
数据结构说明
相机元数据
{
"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
}
}
完整配置示例
基础三维重建
{
"license_id": 9200,
"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
}
高精度重建配置
{
"license_id": 9200,
"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
}
}
大规模数据分块重建
{
"license_id": 9200,
"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 压缩纹理
}
特殊场景配置
环绕物体重建
{
"license_id": 9200,
"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 坐标系
}
}
仅生成正射影像
{
"license_id": 9200,
"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
}
}
输出结果
三维模型输出 (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 点云格式
二维产品输出 (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
性能优化
快速处理
{
"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 提供了丰富的输出选项。建议先用低精度快速验证,再进行高质量重建。