Rigorous photogrammetric pipeline for wind turbine 3D height estimation via satellite imagery.
Project description
🌪️ Academic Wind Turbine Height Estimator
A rigorous photogrammetric deep learning pipeline designed to automatically detect wind turbines and invert their physical 3D heights from single-view optical satellite imagery.
🌟 Core Architectural Breakthroughs
Developed for metrology-grade accuracy, this architecture resolves standard optical illusion issues prevalent in conventional remote sensing estimations.
- Rigorous Geometric Inversion (Case 1-3): Implements a comprehensive spatial projection model. Computes true physical height by evaluating the azimuthal divergence between solar illumination and satellite observation vectors, effectively resolving direct shadow and collinear occlusion scenarios.
- Dynamic GSD Resolution: Features an Auto-Sense + Manual Fallback mechanism. Extracts Ground Sample Distance directly from GeoTIFF spatial metadata (
rasterio.res), with CLI overrides for non-georeferenced imagery. - Robust Inference Pipeline: Deploys a custom Center-Distance NMS to suppress overlapping bounding boxes on rotary blades, coupled with an Exception Suppression module to maintain pipeline continuity during keypoint occlusion.
📄 Metadata Requirements (XML Parsing)
The system features a generalized XML parser designed to be compatible with various satellite platforms (e.g., Gaofen, Ziyuan). To utilize the automatic geometry extraction, your metadata .xml file must contain tags matching any of the following conventions (case-insensitive):
| Geometric Parameter | Accepted XML Tag Names (Fuzzy Matching) |
|---|---|
| Solar Elevation | <SunElevation>, <SolarElevation> |
| Solar Azimuth | <SunAzimuth>, <SolarAzimuth> |
| Satellite Elevation | <SatelliteElevation>, <ViewingElevation> |
| Satellite Azimuth | <SatelliteAzimuth>, <ViewingAzimuth> |
If these tags are entirely missing, the system will execute with a safe default (Nadir viewing) unless manually overridden via CLI.
🚀 Quick Start & CLI Execution
1. Environment Initialization
pip install -r requirements.txt
2. Execution Protocols
Execute the inference pipeline via CLI based on your spatial data availability.
Option A: Standard GeoTIFF (Auto-GSD & Auto-Geometry)
Bash
python main.py --tiff data/demo.tif --xml data/demo.xml
Option B: Non-Georeferenced Imagery (Manual GSD Injection)
Bash
python main.py --tiff data/demo.tif --xml data/demo.xml --gsd 0.8
Option C: Missing Metadata (Full Geometric Override)
Note: Use the following protocol for explicit parameter injection if the XML lacks the required tags.
Bash
python main.py --tiff data/demo.tif --xml data/demo.xml \
--sun_ele 60.5 --sun_azi 120.0 \
--sat_ele 85.0 --sat_azi 0.0 \
--gsd 0.8
📊 Output Artifacts
Upon successful execution, verified artifacts are generated in the output/ directory:
final_heights.csv: Contains extracted Geocoordinates (Lon/Lat) and Calculated Physical Height (m).
visualizations/: Radiometrically normalized image chips featuring topological measurement vectors for academic verification.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wind_turbine_academic_zt-1.0.0.tar.gz.
File metadata
- Download URL: wind_turbine_academic_zt-1.0.0.tar.gz
- Upload date:
- Size: 9.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b8da4f9c8f457eaa88c372125e6c4cf8ffddc90b67babc9d69fcd13c8d290eb
|
|
| MD5 |
2a2d363137251252cc46a24473f61674
|
|
| BLAKE2b-256 |
f390894d64a4605a3bb0cad8e7d2ce36f47c32e166feaec2e18d20841d76d2d9
|
File details
Details for the file wind_turbine_academic_zt-1.0.0-py3-none-any.whl.
File metadata
- Download URL: wind_turbine_academic_zt-1.0.0-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61ed541cc80d590ebf0309cba48bf5bba63c45f803316763077244e7f6ae598b
|
|
| MD5 |
cf25cda950464aff2d8294bf2fe140cd
|
|
| BLAKE2b-256 |
896e0733d1ae20fc262010bfee5e54444e6e323289c1cb2ec7aca5defa69565e
|