Andre Rochow*, Jonas Marcic*, Svetlana Seliunina, and Sven Behnke
* equal contribution
| Without Motion Compensation | PhenoIMC3D (ours) |
|---|---|
![]() |
![]() |
Official implementation of Iterative Motion Compensation for Canonical 3D Reconstruction From UAV Plant Images Captured in Windy Conditions (accepted to IEEE Robotics and Automation Letters, 2026) by Andre Rochow*, Jonas Marcic*, Svetlana Seliunina, and Sven Behnke.
The method models and compensates unwanted motion in scenes captured by UAVs, such as plant movement caused by downwash. These effects can significantly degrade the quality of 3D reconstruction.
PhenoIMC3D enables:
- motion compensation in dynamic scenes
- extraction of a single sharp canonical 3D representation
- compatibility with various 3D reconstruction methods
PhenoIMC3D can be seamlessly combined with:
- NeRF-based methods
- 3D Gaussian Splatting
- other recent splatting-based methods
To integrate PhenoIMC3D with your reconstruction pipeline, follow the instructions in the Setup and Configuration sections.
Choose and install a 3D reconstruction method of your choice.
We provide examples for:
However, any other reconstruction method can also be used.
git clone https://github.com/AIS-Bonn/PhenoIMC3D.git --recursive
cd PhenoIMC3D/submodules/RAFT
./download_models.shActivate the environment of your selected reconstruction method:
conda activate your_3d_methodInstall required packages (if not already available in your environment):
pip install torch torchvision
pip install scipy
pip install opencv-python
pip install tqdm
pip install natsortWe provide configuration files for integrating PhenoIMC3D with:
- 3D Gaussian Splatting
- Deformable Beta Splatting
You can also define configurations for custom reconstruction methods.
| Placeholder | Description |
|---|---|
${dataset_path} |
Path to the dataset (provided via CLI arguments) |
${model_path} |
Path to the output model/workspace directory |
These placeholders are automatically replaced at runtime.
configs/gaussian_splatting.json
{
"train_cmd": "python /path/to/your/installed/gaussian-splatting/train.py -s ${dataset_path} -m ${model_path} -r 1",
"model_weights": "${model_path}/point_cloud/iteration_30000/point_cloud.ply",
"render_cmd": "python /path/to/your/installed/gaussian-splatting/render.py -m ${model_path} --skip_test",
"img_predictions": "${model_path}/train/ours_30000/renders"
}configs/beta_splatting.json
{
"train_cmd": "python /path/to/your/installed/beta-splatting/train.py -s ${dataset_path} --model_path ${model_path} --resolution 1 --iterations 30000 --disable_viewer",
"model_weights": "${model_path}/point_cloud/iteration_30000/point_cloud.ply",
"render_cmd": "python /path/to/your/installed/beta-splatting/render.py -m ${model_path} --skip_test",
"img_predictions": "${model_path}/train/ours_30000/renders"
}{
"train_cmd": "COMMAND TO RUN TRAINING OF YOUR RECONSTRUCTION METHOD",
"model_weights": "OPTIONAL: PATH TO MODEL CHECKPOINTS",
"render_cmd": "COMMAND TO RUN RENDERING",
"img_predictions": "PATH TO PREDICTED IMAGES"
}To use our dataset, download it via the link above. It contains high-resolution images (8064×6048), so you may want to downscale them before training. A script is provided for this purpose. Note that, due to RAFT, both height and width must be divisible by 8.
python scale_dataset.py --dataset_path /path/to/datset/scene --colmap_binary /path/to/your/colmap/binary --r resolutionIn our paper, we used --r 4, corresponding to a resolution of (2016×1512).
conda activate gaussian_splatting
python train.py \
--config configs/gaussian_splatting.json \
--dataset_path /path/to/dataset/scene \
--model_path output/workspace/model_pathconda activate beta_splatting
python train.py \
--config configs/beta_splatting.json \
--dataset_path /path/to/dataset/scene \
--model_path output/workspace/model_path| Without Motion Compensation | PhenoIMC3D (ours) |
|---|---|
![]() |
![]() |
![]() |
![]() |
For additional results and a quantitative evaluation, please refer to our paper.
If you use this work, please cite:
@article{rochow2026iterative,
title={Iterative Motion Compensation for Canonical 3D Reconstruction From UAV Plant Images Captured in Windy Conditions},
author={Rochow, Andre and Marcic, Jonas and Seliunina, Svetlana and Behnke, Sven},
journal={IEEE Robotics and Automation Letters},
year={2026},
publisher={IEEE}
}




