uw-cryo / skysat_stereo

Tools and libraries for processing Planet SkySat imagery, including camera model refinement, stereo reconstruction, and orthomosaic production
MIT License
62 stars 16 forks source link

DOI

skysat_stereo

Tools and libraries for processing Planet SkySat imagery, including camera model refinement, stereo reconstruction, and orthomosaic production

Introduction

Planet operates a constellation of 19 SkySat-C SmallSats, which can acquire very-high-resolution (0.7 m to 0.9 m) triplet stereo and continuous video imagery with short revisit times. This provides an excellent opportunity to derive on-demand, high-resolution Digital Elevation Models (DEMs) for any point on the Earth's surface, with broad applications for Earth science research. However, the quality of these DEMs is currently limited by the geolocation accuracy of the default SkySat camera models, and few existing photogrammetry tools can process the SkySat images.

Purpose

We developed automated workflows to refine the SkySat camera models and produce accurate DEMs and orthomosaics. For additional details on the workflow and evaluation of output products, please see the corresponding open-access publication in the ISPRS Journal of Photogrammetry and Remote Sensing. This repository contains all tools and libraries as a supplement to the published manuscript.

This project is under active development and we welcome contributions (information for contributors forthcoming) and preliminary feedback from early visitors (you) :)

Contents

skysat_stereo - libraries used throughout the processing workflow

scripts - command line utilities for the SkySat processing workflow.

  1. skysat_overlap.py - identifies overlapping scenes
  2. skysat_preprocess.py - prepares subset of video scenes, generates frame camera models
  3. ba_skysat.py - bundle adjustment and camera refinement
  4. skysat_stereo_cli.py - stereo reconstruction
  5. skysat_dem_mos.py - generates DEM composites with relative accuracy and count metrics
  6. skysat_pc_cam.py - point clouds gridding, DEM co-registration, export updated frame and RPC camera models
  7. skysat_orthorectify.py - orthorectify individual scenes and produce orthoimage mosaics
  8. plot_disparity.py - visualize DEM, disparity map, stereo triangulation intersection error map
  9. skysat_triplet_pipeline.py - wrapper script for end to end triplet stereo processing workflow
  10. skysat_video_pipeline.py - wrapper script for end to end video stereo processing workflow

    notebooks - notebooks used during analysis and figure preparation

Input products supported

  1. Triplet stereo or bi-stereo collections at L1B level. These images should be non-georeferenced and should have an accompanying RPC metadata with them. To make sure if you have the rpc information, do a gdalinfo in one of the images, and you should see RPC information printed out.
  2. Video collections at L1A level. These images should be non-georeferenced, and should have a frame_index.csv file accompanying them, which contain the ground footprint and satellite attitude/ephemris data.

While ordering data from Planet, please make sure the correct data level is specified :)

At this stage, we do not support the L1A full frame triplet stereo products, but we have developed an internal workflow logic, and are in the process of writing actual code for it. Thanks for your patience and interest :)

Sample output products

SkySat Triplet Stereo

triplet_product Figure 1: Orthoimage mosaic and DEM composite generated from a SkySat triplet stereo collection over Mt. Rainier, WA, USA. These final products were derived from L1B imagery that is © Planet, 2019 (Planet Team, 2017).

triplet_accuracy Figure 2: Relative and absolute accuracy before (using Planet RPCs) and after the skysat_stereo correction workflow.

SkySat Video

video_samples Figure 3: Sample products from SkySat video collection over Mt. St. Helen's crater (after skysat_stereo correction workflow). These final products were derived from L1A imagery that is © Planet, 2019 (Planet Team, 2017).

Dependencies

Installation

Please see the install instructions.

Notes:

License

This project is licensed under the terms of the MIT License.

Citation

If you use this code and/or derived products in a scientific publication, please cite:

Funding and Acknowledgments

References