跳到主要内容

ReconstructAT - 空中三角测量

概述

ReconstructAT 接口用于执行空中三角测量(Aerotriangulation),是专业用户进行精细控制的首选接口。该接口提供了详细的参数设置,支持相机分组、POS 导入、控制点导入等高级功能。

适用场景
  • 需要精细控制空三参数
  • 需要检查和优化空三结果
  • 多相机系统重建
  • 需要集成控制点

接口调用

命令行调用

reconstruct_full_engine(.exe) --reconstruct_type 1 --task_json config_task.json

参数说明

  • reconstruct_type: 固定为 1(表示 ReconstructAT)
  • task_json: 参数文件路径

参数详解

必需参数

参数名类型说明
working_dirstring工作目录,保存中间文件和最终结果
gdal_folderstringGDAL 数据路径(SDK 外部数据文件夹)
coordinate_systemJSON输入图像位置的坐标系统
camera_meta_dataJSON Array相机元数据信息,格式查看camera_meta_data
image_meta_dataJSON Array输入图像的元数据信息,格式查看image_meta_data

可选参数

参数名类型默认值说明
input_image_typeint1图像类型:1=RGB,2=多光谱,3=红外

数据结构说明

coordinate_system 对象

字段名类型说明示例值
typeint坐标系类型:0=LocalENU,1=Local,2=Geographic,3=Projected,4=ECEF2
type_namestring坐标系类型名称(可选,辅助说明)"Geographic"
labelstring坐标系名称(可选)"WGS 84"
epsg_codeintEPSG 代码(地理/投影/地心坐标系需填写)4326
wktstringWKT 字符串(可选,替代 epsg_code)"..."
origin_pointarray[3]原点WGS84坐标 [经度, 纬度, 高程](仅 type=0 LocalENU 时需要)[114.12, 22.12, 0]
offsetarray[3]坐标系原点偏移(可选)[0, 0, 0]

相机元数据(Camera Metadata)

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

meta_data 子字段说明:

字段名类型是否必需说明
projection_modelint镜头模型: 0-透视镜头(k1,k2,p1,p2,k3); 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]表示固定住所有参数
透视镜头
"camera_meta_data": [
{
"id": 1,
"meta_data": {
"projection_model": 0,
"camera_name": "common",
"width": 5280,
"height": 3956,
"parameters": [
3713.29,
3713.29,
2647.02,
1969.28,
-0.11257524,
0.01487443,
-0.00008572,
1e-7,
-0.02706411
]
}
}
]
鱼眼镜头
"camera_meta_data": [
{
"id": 1,
"meta_data": {
"camera_name": "fisheye",
"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 Metadata)

字段名类型是否必需说明
idint图像唯一ID
pathstring图像绝对路径
meta_dataobject图像元信息,详见下表
【重要】调用ReconstructAT必须指定meta_data字段

meta_data 子字段说明:

字段名类型是否必需说明
widthint图像宽度(像素)
heightint图像高度(像素)
camera_idint对应相机ID
focal_length_in_35mmdouble35mm等效焦距(毫米)
posarray[3]POS位置 [经度/X, 纬度/Y, 高程/Z],需要真实尺度重建必须指定
pos_sigmaarray[3]POS位置精度,厘米级RTK定位精度:[0.03,0.03,0.06];分米到米级定位精度:[0.5,0.5,1];米级以上定位精度: [2.0,2.0,5.0]
orientationarray[9]3x3旋转矩阵(9个值,行主序,单位向量,世界坐标系到相机坐标系的旋转矩阵)
position_constantbool是否固定位置(true/false),固定位置意味着空三不会优化改变图像的位置,保持输入值
relative_altitudedouble相对飞行高度(米)
dewarp_flagbool畸变校正标志(如来自DJI XMP数据,true表示已去畸变)
mask_pathstring语义分割图,格式tif或png,标签含义见下方

语义标签含义

标签值标签含义
0背景
1水体
2建筑
3植被
4路面
5车辆
6裸地
7硬地
33移动物体
34天空
35电力线
255无效区域

语义图典型使用案例:

  • (1)将标记了无效区域的Mask图路径传入,SDK将在特征提取、稠密点云计算、纹理贴图时忽略无效区域,提升效率,获取更干净的点云/网格数据
  • (2)将标记了水体区域的Mask图路径传入,SDK将对水域区域进行自动修补。
{
"id": 1, // 图像唯一 ID
"path": "path/to/image.jpg", // 图像绝对路径
"group": "camera_1", // 相机组 ID(可选)
"meta_data": { // 图像信息(必需)
"width": 6000, // 图像宽度(像素)
"height": 4000, // 图像高度(像素)
"camera_id": 1, // 对应相机 ID(可选,如果提供了 'pre_calib_param' 参数,将被相机元数据覆盖)
"pos": [lon, lat, alt], // 位置 [经度, 纬度, 高程]
"pos_sigma": [1.0, 1.0, 2.0], // 位置精度(米)
"orientation": [...], // 旋转矩阵(9个值,可选)
"position_constant": false, // 是否固定位置
"relative_altitude": 100.0, // 相对飞行高度(可选)
"focal_length_in_35mm": 24, // 35mm 等效焦距
"pre_calib_param": [...], // 预标定参数(可选,如果提供了 'focal_length_in_35mm' 参数,将被覆盖)
"dewarp_flag": false // 畸变校正标志(可选,来自DJI XMP数据)
}
}

高级参数

更多高级参数请查看 高级参数

完整配置示例

基础空三配置

{
"working_dir": "C:/Projects/AT_Task",
"gdal_folder": "C:/MipMap/SDK/data",
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},
"camera_meta_data": [
{
"id": 1,
"meta_data": {
"camera_name": "DJI FC6310",
"width": 5472,
"height": 3648
}
}
],
"image_meta_data": [
{
"id": 1,
"path": "C:/Images/DJI_0001.JPG",
"meta_data": {
"width": 5472,
"height": 3648,
"camera_id": 1,
"pos": [114.123456, 22.123456, 100.5],
"pos_sigma": [0.03,0.03,0.06]
}
},
{
"id": 2,
"path": "C:/Images/DJI_0002.JPG",
"meta_data": {
"width": 5472,
"height": 3648,
"camera_id": 1,
"pos": [114.123556, 22.123456, 100.8],
"pos_sigma": [0.03,0.03,0.06]
}
}
]
}

多相机组配置

{
"working_dir": "C:/Projects/MultiCamera_AT",
"gdal_folder": "C:/MipMap/SDK/data",
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},
"camera_meta_data": [
{
"id": 1,
"meta_data": {
"camera_name": "Camera_Nadir",
"width": 6000,
"height": 4000
}
},
{
"id": 2,
"meta_data": {
"camera_name": "Camera_Oblique",
"width": 6000,
"height": 4000
}
}
],
"image_meta_data": [
{
"id": 1,
"path": "nadir/IMG_0001.JPG",
"group": "nadir",
"meta_data": {
"width": 6000,
"height": 4000,
"camera_id": 1,
"pos": [114.123456, 22.123456, 200.0],
"pos_sigma": [2.0, 2.0, 5.0]
}
},
{
"id": 2,
"path": "oblique/IMG_0001.JPG",
"group": "oblique_forward",
"meta_data": {
"width": 6000,
"height": 4000,
"camera_id": 2,
"pos": [114.123456, 22.123456, 200.0],
"pos_sigma": [2.0, 2.0, 5.0]
}
}
]
}

错误处理

接口返回整数错误码:

  • 0: 成功
  • 非0: 各种错误情况

详见错误码

下一步


提示:ReconstructAT 提供了最大的灵活性,但也需要更多的参数设置。如果您只需要快速重建,建议使用 ReconstructFull