OptimizeAT - Control Point Constrained AT Optimization
Overview
The OptimizeAT interface is used to optimize aerial triangulation results using control points. This interface is called after completing tie point measurement, improving the absolute accuracy of AT by introducing ground control points (GCP).
Use Cases
- Surveying projects requiring high absolute accuracy
- Projects with ground control point data
- Need to verify and improve AT accuracy
- Engineering surveying and professional mapping
Workflow
Interface Call
Command Line Call
reconstruct_full_engine.exe -reconstruct_type 3 -task_json optimize_config.json
Parameter Description
reconstruct_type
: Fixed as3
(indicates OptimizeAT)task_json
: Configuration file path
Configuration Parameters
OptimizeAT uses the same parameters as ReconstructAT, with additional control point parameters:
Required Parameters
All required parameters from ReconstructAT, plus:
Parameter | Type | Description |
---|---|---|
control_point | JSON | Control point group information |
Control Point Data Structure
ControlPointGroup
{
"coordinate_system": { // Control point coordinate system
"type": 3, // Usually projected coordinate system
"epsg_code": 32650 // e.g., UTM Zone 50N
},
"points": [ // Control point list
// Array of ControlPoint objects
]
}
ControlPoint
{
"id": "GCP001", // Control point name
"coordinate": [x, y, z], // Control point coordinates
"usage": 0, // 0=control point, 1=check point, 2=disabled
"observations": [ // Image observations
{
"id": 1, // Image ID
"uv": [1234.5, 2345.6] // Pixel coordinates
}
]
}
Complete Configuration Examples
Basic Control Point Optimization
{
"license_id": 9200,
"working_dir": "C:/Projects/AT_Optimize",
"gdal_folder": "C:/MipMap/SDK/data",
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},
"camera_meta_data": [...], // Same as ReconstructAT
"image_meta_data": [...], // Same as ReconstructAT
"control_point": {
"coordinate_system": {
"type": 3,
"epsg_code": 32650 // UTM Zone 50N
},
"points": [
{
"id": "GCP001",
"coordinate": [500123.456, 2500123.456, 123.456],
"usage": 0,
"observations": [
{
"id": 1,
"uv": [2736.5, 1824.3]
},
{
"id": 5,
"uv": [1892.7, 2104.8]
}
]
},
{
"id": "GCP002",
"coordinate": [500223.456, 2500223.456, 125.678],
"usage": 0,
"observations": [
{
"id": 3,
"uv": [3104.2, 1567.9]
},
{
"id": 7,
"uv": [2345.6, 1890.2]
}
]
},
{
"id": "CHECK001",
"coordinate": [500323.456, 2500323.456, 127.890],
"usage": 1, // Check point
"observations": [
{
"id": 2,
"uv": [1567.8, 2345.6]
}
]
}
]
}
}
High-Precision Surveying Project Configuration
{
"license_id": 9200,
"working_dir": "C:/Projects/HighPrecision_AT",
"gdal_folder": "C:/MipMap/SDK/data",
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},
"camera_meta_data": [...],
"image_meta_data": [
{
"id": 1,
"path": "IMG_0001.JPG",
"meta_data": {
"pos": [114.123, 22.123, 150.0],
"pos_sigma": [0.05, 0.05, 0.10], // RTK high precision
"position_constant": false // Allow optimization
}
}
],
"control_point": {
"coordinate_system": {
"type": 3,
"epsg_code": 4978 // ECEF for high precision
},
"points": [
// Multiple evenly distributed control points
{
"id": "GCP_NW",
"coordinate": [...],
"usage": 0,
"observations": [...]
},
{
"id": "GCP_NE",
"coordinate": [...],
"usage": 0,
"observations": [...]
},
{
"id": "GCP_SW",
"coordinate": [...],
"usage": 0,
"observations": [...]
},
{
"id": "GCP_SE",
"coordinate": [...],
"usage": 0,
"observations": [...]
},
{
"id": "GCP_CENTER",
"coordinate": [...],
"usage": 0,
"observations": [...]
}
]
}
}
Control Point Placement Principles
1. Quantity Requirements
- Minimum: 3 control points (required for solution)
- Recommended: 5-8 control points + 2-3 check points
- Large area: At least 1 control point per 50-100 images
2. Distribution Requirements
Ideal control point distribution:
+-----+-----+-----+
| GCP | GCP | GCP |
+-----+-----+-----+
| GCP | CHK | GCP | GCP: Control Point
+-----+-----+-----+ CHK: Check Point
| GCP | GCP | GCP |
+-----+-----+-----+
3. Elevation Distribution
- Place control points at different elevation levels
- Avoid all control points on the same plane
- Pay special attention to elevation changes in mountainous projects
Measurement Accuracy Requirements
Pixel Accuracy
- Ideal: < 1 pixel
- Acceptable: < 2 pixels
- Needs improvement: > 3 pixels
Multi-View Observations
- Each control point visible in at least 2 images
- Ideally 3-5 images
- Viewing angle difference > 15°
Coordinate System Considerations
1. Coordinate System Consistency
{
// Image positions usually in WGS84
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},
// Control points usually in local projected coordinate system
"control_point": {
"coordinate_system": {
"type": 3,
"epsg_code": 32650 // Choose based on project location
}
}
}
2. Common Coordinate Systems
Region | EPSG | Description |
---|---|---|
China | 4490 | CGCS2000 Geographic |
China | 4547-4554 | CGCS2000 Gauss Projection |
Global | 32601-32660 | UTM Northern Hemisphere |
Global | 32701-32760 | UTM Southern Hemisphere |
Quality Assessment
1. Optimization Report Interpretation
After optimization, check the accuracy report in logs:
[INFO] Control Point Residuals:
GCP001: 0.023m (X), 0.015m (Y), 0.041m (Z)
GCP002: 0.019m (X), 0.022m (Y), 0.038m (Z)
[INFO] Check Point Errors:
CHECK001: 0.045m (X), 0.052m (Y), 0.068m (Z)
[INFO] RMS Error: 0.048m
2. Accuracy Standards
Project Type | Horizontal Accuracy | Vertical Accuracy |
---|---|---|
Topographic Mapping | < 0.05m | < 0.10m |
Engineering Survey | < 0.10m | < 0.15m |
General Applications | < 0.30m | < 0.50m |
Best Practices
1. Control Point Collection
- Use high-precision equipment like RTK/Total Station
- Choose stable, easily identifiable features
- Record detailed point descriptions and photos
2. Measurement Process
- Load images in AT result viewer
- Find corresponding features for control points
- Precisely mark pixel positions
- Check multi-view consistency
3. Iterative Optimization
# First optimization
reconstruct_full_engine.exe -reconstruct_type 3 -task_json optimize_v1.json
# Check results, adjust anomalous points
# Second optimization
reconstruct_full_engine.exe -reconstruct_type 3 -task_json optimize_v2.json
4. Common Issue Handling
Large Residuals
- Check measurement accuracy
- Verify control point coordinates
- Consider setting the point as check point
Systematic Bias
- Check coordinate system settings
- Verify control point coordinate system
- Consider camera calibration issues
Output Results
Optimized AT results are saved in the same location:
milestones/mvs_optimized.xml
- Optimized internal formatproducts/AT/block_exchange_optimized.xml
- Optimized exchange formatlog/optimization_report.txt
- Optimization report
Example: Complete Workflow
import subprocess
import json
# 1. Execute initial AT
at_config = {
"license_id": 9200,
"working_dir": "C:/Project",
# ... other parameters
}
with open("at_config.json", "w") as f:
json.dump(at_config, f)
subprocess.run(["reconstruct_full_engine.exe", "-reconstruct_type", "1", "-task_json", "at_config.json"])
# 2. Perform control point measurement (usually done in external software)
# 3. Prepare optimization configuration
optimize_config = at_config.copy()
optimize_config["control_point"] = {
"coordinate_system": {"type": 3, "epsg_code": 32650},
"points": [
# Control point data
]
}
with open("optimize_config.json", "w") as f:
json.dump(optimize_config, f)
# 4. Execute optimization
subprocess.run(["reconstruct_full_engine.exe", "-reconstruct_type", "3", "-task_json", "optimize_config.json"])
# 5. Use optimized results for 3D reconstruction
# ...
Next Steps
- Use optimized AT results for Reconstruct3D
- Learn about large-scale data tiling processing
- Check Basic Concepts to understand control point usage
Tip: Control points are key to ensuring mapping accuracy. Proper control point placement and precise measurement are the foundation for obtaining high-accuracy results.