Skip to content

Official implementation of 4D Cloud Scattering Tomography paper ICCV21

License

Notifications You must be signed in to change notification settings

ronenroi/4D-Cloud-Scattering-Tomography

 
 

Repository files navigation

4D Cloud Scattering Tomography

arXiv

Abstract

We derive computed tomography (CT) of a time-varying volumetric scattering object, using a small number of moving cameras. We focus on passive tomography of dynamic clouds, as clouds have a major effect on the Earth's climate. State of the art scattering CT assumes a static object. Existing 4D CT methods rely on a linear image formation model and often on significant priors. In this paper, the angular and temporal sampling rates needed for a proper recovery are discussed. Spatiotemporal CT is achieved using gradient-based optimization, which accounts for the correlation time of the dynamic object content. We demonstrate this in physics-based simulations and on experimental real-world data. 4DcloudScatteringTomography

Description

This repository contains the official implementation of 4D Cloud Scattering Tomography, which is implemented ontop of Pyshdom3.0 package [1]. Our framework recovers 4D cloud microphysics fields, using a small number of moving cameras. We exploits the natural temporal evolution of clouds for weighing the gradients of the different time steps during the recovery process. For more details see our paper [2] and supplementary material [3]. 4DcloudScatteringTomography_video

 

Installation

Installation using using anaconda package management

Start a clean virtual environment

conda create -n pyshdom python=3
source activate pyshdom

Install required packages

conda install anaconda dill tensorflow tensorboard pillow joblib

Install pyshdom distribution with (either install or develop flag)

python setup.py develop

 

Data

We used cloud field data that were generated by Eshkol Eytan. Download here the data and place it in 4D-Cloud-Scattering-Tomography/synthetic_cloud_fields/WIZ_Clouds/BOMEX2.   For AirMSPI raw data please download the files from here and place in 4D-Cloud-Scattering-Tomography/AirMSPI/21views.

Main scripts

Scripts are devided into three categories: generate, render and optimize. For more information please read here.

To generate Mie scattering tables for cloud simulation and AirMSPI wavelengths

python scripts/generate_mie_tables.py  \
    --start_reff 1.0 --end_reff 25.0 --num_reff 50 --start_veff 0.01 --end_veff 0.2 --num veff 50 \
    --radius_cutoff 65.0 --wavelength 0.66 0.865

Simulations

Prapare the data of Cloud1 simulations by running the following notebooks (set n_satellite 2 or 3)

4D_cloud_scattering_tomography/CVPR/Cloud_1_Rendering_Dynamic_Scene.ipynb
4D_cloud_scattering_tomography/CVPR/Cloud_1_Rendering_Dynamic_Scene_Multispectral.ipynb
4D_cloud_scattering_tomography/CVPR/Cloud_1_Rendering_Dynamic_Scene_Single_Platform.ipynb

and for Cloud2

4D_cloud_scattering_tomography/CVPR/Cloud_2_Rendering_Dynamic_Scene.ipynb
4D_cloud_scattering_tomography/CVPR/Cloud_2_Rendering_Dynamic_Scene_Single_Platform.ipynb

Results reproducing

python 4D_cloud_scattering_tomography/scripts/optimize_dynamic_extinction_lbfgs.py --input_dir PATH_TO_DATA --add_rayleigh --use_forward_cloud_velocity --use_forward_grid --init Homogeneous --extinction 1 --space_carve_agreement 0.5 --log LOG_DIR  --radiance_threshold 0.03 --n_jobs 72 --maxiter 100 --reg_const 1 --use_cross_validation -1 --num_mediums -1 --sigma 20

For microphysics estimation (LWC and Reff) use

python 4D_cloud_scattering_tomography/scripts/optimize_dynamic_microphysics_lbfgs.py --input_dir PATH_TO_DATA --add_rayleigh --use_forward_cloud_velocity --use_forward_grid --const_veff --const_reff --one_dim_reff --init Homogeneous --n_jobs 72 --log LOG_DIR --maxiter 100 --use_cross_validation -1 --num_mediums -1 --reg_const 1 --sigma 20 --lwc 0.06 --reff 6

Set different values of sigma for 4D recovery. Manually choose space_carve_agreement and radiance_threshold values according to the generated data (single platform or 2 or 3 satellites). Static recovery can be obtained by setting sigma=0, num_mediums=1 and reg_const=0.

 

AirMSPI

Data preparation and preprocessing: Download here the data and place it in AirMSPI/21views. Then process and generate the data with the following notebook

4D-Cloud-Scattering-Tomography/AirMSPI/develop_AirMSPI_load.ipynb

Results reproducing for 4D recovery

python4D-Cloud-Scattering-Tomography/scripts/optimize_dynamic_extinction_AirMSPI_lbfgs.py --input_dir 4D-Cloud-Scattering-Tomography/experiments/AirMSPI/dynamic_medium/monochromatic --add_rayleigh --init Homogeneous --space_carve_agreement 0.9 --radiance_threshold -0.03 --ext 1 --nx 80 --ny 80 --nz 80 --log LOG_DIR --n_jobs 72 --maxiter 200 --reg_const 1 --use_cross_validation -1 --num_mediums -1 --sigma 60

and for static 3D results

python4D-Cloud-Scattering-Tomography/scripts/optimize_dynamic_extinction_AirMSPI_lbfgs.py --input_dir 4D-Cloud-Scattering-Tomography/experiments/AirMSPI/dynamic_medium/monochromatic --add_rayleigh --init Homogeneous --space_carve_agreement 0.9 --radiance_threshold -0.03 --ext 1 --nx 80 --ny 80 --nz 80 --log LOG_DIR --n_jobs 72 --maxiter 200 --reg_const 0 --use_cross_validation -1 --num_mediums 1 --sigma 0

For cross validation comparison set use_cross_validation as the index of the left out image.
 

Results from paper

A video of the paper's results visualisation can be found here. The official results can be downloaded from this link.

Citation

If you make use of our work, please cite our paper:

@InProceedings{Ronen_2021_ICCV,
    author    = {Ronen, Roi and Schechner, Yoav Y. and Eytan, Eshkol},
    title     = {4D Cloud Scattering Tomography},
    booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
    month     = {October},
    year      = {2021},
    pages     = {5520-5529}
}

Thanks to Eshkol Eytan for the cloud simulation data. If you use it please cite:

@article{eytan2021revisiting,
  title={Revisiting adiabatic fraction estimations in cumulus clouds: high-resolution simulations with a passive tracer},
  author={Eytan, Eshkol and Koren, Ilan and Altaratz, Orit and Pinsky, Mark and Khain, Alexander},
  journal={Atmospheric Chemistry and Physics},
  volume={21},
  number={21},
  pages={16203--16217},
  year={2021},
  publisher={Copernicus GmbH}
}

If you use this package in an academic publication please acknowledge the appropriate publications (see LICENSE file).

About

Official implementation of 4D Cloud Scattering Tomography paper ICCV21

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 70.9%
  • Fortran 15.3%
  • Python 10.8%
  • MATLAB 2.8%
  • Makefile 0.2%