Skip to main content

Package for plotting outputs Ames Stereo Pipeline processing

Project description

asp_plot

Scripts and notebooks to visualize output from the NASA Ames Stereo Pipeline (ASP).

Motivation

Our objective is to release a modular Python package with a command-line interface (CLI) that can be run automatically on an ASP output directory to prepare a set of standard diagnostic plots, publication-quality output figures, and a pdf report with relevant information, similar to the reports prepared by many commercial SfM software packages (e.g., Agisoft Metashape, Pix4DMapper).

Status

This is a work in progress.

The directory original_code/ contains initial notebooks compiled from recent projects using sample stereo images from the Maxar WorldView, Planet SkySat-C and BlackSky Global constellations.

The functionality of these notebooks is being ported to the asp_plot/ directory, which is the package asp_plot.

Files you will need from ASP processing

During the stereo or parallel_stereo steps at the heart of the Ames Stereo Pipeline, you can add this to the command to ensure that the files needed for plotting are retained, and files that are not required are cleaned up:

--keep-only '.mask .txt .exr .match -L.tif -L_sub.tif -R_sub.tif -D_sub.tif -D.tif -RD.tif -F.tif -PC.tif'

Not all of those files are used in the plotting, but all are useful for re-processing and detailed analyses.

Installation

To get started with asp_plot, find the environment.yml file here, download it locally, and create a conda environment:

$ conda env create -f environment.yml

Then activate the environment:

$ conda activate asp_plot

And finally, install the asp_plot package and CLI tools with pip:

(asp_plot) $ pip install asp-plot

Notebook example usage

Examples of the modular usage of the package can be found in the notebooks/ directory here.

CLI usage: asp_plot

A full report and individual plots can be output via the command-line:

$ asp_plot --directory ./ \
           --bundle_adjust_directory ba \
           --stereo_directory stereo \
           --map_crs EPSG:32604 \
           --reference_dem ref_dem.tif

Before that, we recommend running asp_plot --help for details (and defaults) of all of the command-line flags:

 $ asp_plot --help
Usage: asp_plot [OPTIONS]

Options:
  --directory TEXT                Directory of ASP processing with scenes and
                                  sub-directories for bundle adjustment and
                                  stereo. Default: current directory
  --bundle_adjust_directory TEXT  Directory of bundle adjustment files.
                                  Default: ba
  --stereo_directory TEXT         Directory of stereo files. Default: stereo
  --map_crs TEXT                  Projection for bundle adjustment plots.
                                  Default: EPSG:4326
  --reference_dem TEXT            Reference DEM used in ASP processing. No
                                  default. Must be supplied.
  --report_filename TEXT          PDF file to write out for report into the
                                  processing directory supplied by
                                  --directory. Default: Directory name of ASP
                                  processing
  --report_title TEXT             Title for the report. Default: Directory
                                  name of ASP processing

CLI usage: camera_optimization

The camera_optimization command-line tool is a wrapper for outputting a summary plot after running tools like bundle_adjust and jitter_solve.

At its simplest it can be run like:

$ camera_optimization --original_cameras path/to/original_camera_1,path/to/original_camera_2 \
                      --optimized_cameras path/to/optimized_camera_1,path/to/optimized_camera_2

But, for more meaningful positions we at least recommend specifying a map_crs UTM EPSG code, and a directory to save the output figure to:

$ camera_optimization --original_cameras path/to/original_camera_1,path/to/original_camera_2 \
                      --optimized_cameras path/to/optimized_camera_1,path/to/optimized_camera_2 \
                      --map_crs 32728
                      --save_dir path/to/save_directory/

And there are many more options that can also be modified, by examining camera_optimization --help:

 $ camera_optimization --help
Usage: camera_optimization [OPTIONS]

Options:
  --original_cameras TEXT         Original camera files, supplied as comma
                                  separated list 'path/to/original_camera_1,path/to/original_camera_2'.
                                  No default. Must be supplied.
  --optimized_cameras TEXT        Optimized camera files, supplied as comma
                                  separated list 'path/to/optimized_camera_1,path/to/optimized_camera_2'.
                                  No default. Must be supplied.
  --map_crs TEXT                  UTM EPSG code for map projection. If not
                                  supplied, the map will be plotted in
                                  original camera coordinates of EPSG:4978
                                  (ECEF).
  --title TEXT                    Optional short title to append to figure
                                  output. Default: None
  --trim BOOLEAN                  Trim the beginning and end of the
                                  geodataframes. Default: False
  --near_zero_tolerance FLOAT     If trim is True, the tolerance for near zero
                                  values of the camera position differences to
                                  trim from the beginning and end. Default:
                                  1e-3
  --trim_percentage INTEGER       If trim is ture, the extra percentage of the
                                  camera positions to trim from the beginning
                                  and end. Default: 5
  --shared_scales BOOLEAN         If True, the position and angle difference
                                  scales are shared between for each camera.
                                  Default: False
  --log_scale_positions BOOLEAN   If True, the position difference scales are
                                  log scaled. Default: False
  --log_scale_angles BOOLEAN      If True, the angle difference scales are log
                                  scaled. Default: False
  --upper_magnitude_percentile INTEGER
                                  Percentile to use for the upper limit of the
                                  mapview colorbars. Default: 95
  --figsize TEXT                  Figure size as width,height. Default: 20,15
  --save_dir TEXT                 Directory to save the figure. Default: None,
                                  which does not save the figure.
  --fig_fn TEXT                   Figure filename. Default:
                                  camera_optimization_summary_plot.png.
  --add_basemap BOOLEAN           If True, add a contextily basemap to the
                                  figure, which requires internet connection.
                                  Default: False

Development

Install from source

If you instead want to install the source code for e.g. developing the project:

$ git clone git@github.com:uw-cryo/asp_plot.git
$ cd asp_plot
$ conda env create -f environment.yml
$ conda activate asp_plot
$ pip install -e .
$ python3 setup.py install

Run tests

To ensure the install was successful, tests can be run with:

$ pytest

When you add a new feature, add some test coverage as well.

Package and upload

Update version in pyproject.toml and setup.py, then:

rm -rf dist/
python3 -m pip install --upgrade build
python3 -m build
python3 -m pip install --upgrade twine
python3 -m twine upload dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asp_plot-0.5.0.tar.gz (72.1 MB view details)

Uploaded Source

Built Distribution

asp_plot-0.5.0-py3-none-any.whl (14.2 MB view details)

Uploaded Python 3

File details

Details for the file asp_plot-0.5.0.tar.gz.

File metadata

  • Download URL: asp_plot-0.5.0.tar.gz
  • Upload date:
  • Size: 72.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for asp_plot-0.5.0.tar.gz
Algorithm Hash digest
SHA256 81811bac953276ab41065f254dedea2ef2866bfeb2fe665aa600ceb36af5940d
MD5 a1f59f5a9f4ee9ced7fe63db0637290c
BLAKE2b-256 582906e6f4b34d4aba0c4954c69f656c9341df0c3a1f8639622e562929ebc906

See more details on using hashes here.

Provenance

File details

Details for the file asp_plot-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: asp_plot-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 14.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for asp_plot-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 27c32b98c186ce7215666360df4cafab1b3591399642a7e2429c1c3dd0aec453
MD5 5eb44bcf32ad3f10dfdf27c495962603
BLAKE2b-256 7e2939770184efc0074662517f339f8e64707b49395e32c0bee7da8d10f8187a

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page