Code Monkey home page Code Monkey logo

lidar_plot_registration's Introduction

forest3d

Binder Build Status Documentation Status Coverage Status

Methods for creating 3D visualizations of forest inventory plots and co-registering stem maps with lidar data.

As this project develops, it will support 3D volumetric representations of trees with the ability to incorporate uncertainty/error into field-based measurements and additional rendering parameters.

In addition to the basic value of providing a stochastic 3D visualization option for forest inventory plots, this workflow is intended to support an optimization to co-register lidar-derived data (e.g., canopy surface model or alpha-hulls of trees) with stem-mapped forest inventory data from the field. This is intended to improve the alignment of field data with remotely-sensed data to support the use of field data as training data for predictive models that rely primarily upon remotely-sensed data such as lidar and high-resolution imagery.

The incorporation of prior beliefs about the distributions of 3D forest parameters (e.g., measurement error in location of plot center, distance of trees from plot center, etc.) will be applied in a Bayesian Inverse Modeling approach to identify the values and distributions of parameters which minimize divergence between simulated forest surfaces and lidar-derived surface(s). The outcome of this optimization will include probabilistic insights about the most likely locations of forest inventory plots within a lidar scene.

Getting Started

Option A: For the non-coder

If you don't want to do any coding yourself and instead just want to view and execute the code we've already written using our Jupyter Notebooks, use this link: Binder and a computing environment will be set up for you in the cloud (for free). This setup process can take several minutes, so be patient. Once that setup is done, you should be able to navigate to the "notebooks" folder of the repository and open and execute the Jupyter Notebooks without having to install anything on your own machine.

Option B: For the coder

Use the conda package manager to reproduce the computing environment we used in developing this repo. Get Anaconda or Miniconda to do so.

  1. Clone this repo onto your local machine:
    git clone https://github.com/d-diaz/Lidar_Plot_Registration.git
  2. Create a conda environment from the environment.yml file included in this repo:
    conda env create --name forest3d --file environment.yml
  3. Activate this new conda environment: source activate forest3d (Linux, OSX) or activate forest3d (Windows)
  4. Start a Jupyter session: jupyter notebook
  5. In your web browser Jupyter session, navigate to the "notebooks" folder in this repo and open up one of the Jupyter Notebooks!

Project Organization

├── LICENSE            <- Open Source AF
├── README.md          <- You're reading it
│
├── data /
│   ├── raw            <- Raw lidar and tree list data
│   ├── interim        <- Intermediate data that has been transformed
│   └── processed      <- Processed data sets used for modeling/analysis
│
├── notebooks /        <- Jupyter notebooks. 
│   ├── 01_Check Data Formats.ipynb  <- For checking whether your treelist is formatted appropriately for modeling
│   ├── 02_Visualize a Single Tree in 3D.ipynb  <- Interactive inspection of how a tree crown is modeled, with widgets
│   └── 03_Visualize a Forest Plot in 3D.ipynb  <- Visualize a list of trees
│
├── forest3d /         <- Source code for use in this project
│   ├── validate_data.py    <- To validate conformance of data with our specs
│   ├── geometry.py    <- To generate 3D geometric models
│   ├── optimize.py    <- To co-register point clouds with geometric models
│   ├── visualize.py   <- To create interactive 3D visualization
│   └── test /         <- Scripts for unit testing
|
├── setup.py           <- Source code installable as python package (`python setup.py develop`)
├── environment.yml    <- Requirements file for reproducing the analysis environment using conda
|                        (`conda create --name forest3d --file environment.yml`)
│
├── docs /             <- Documentation, generated using Sphinx and hosted at Read the Docs
├── references /       <- Relevant references and other explanatory materials 
├── reports /          <- Generated analysis as HTML, PDF, PPT, etc.
│   └── figures /      <- Graphics and figures used in reports
|
├── .gitignore         <- Stuff for git to ignore
└── .travis.yml        <- Settings for running Travis CI

lidar_plot_registration's People

Contributors

d-diaz avatar martinbagaram avatar mikelizh avatar

Stargazers

Chr Kas avatar huiyi su avatar lei avatar RJack avatar  avatar  avatar David Shean avatar Matthew Perry avatar

Watchers

David Shean avatar  avatar  avatar

lidar_plot_registration's Issues

Develop a function to consume a tree list generated by FUSION's CanopyMaxima

The CanopyMaxima function in the FUSON lidar processing software package will produce a CSV file which includes the (x,y) locations of local maxima from a canopy height model, as well as up to 16 different crown radii from that treetop. This could be a good way to initialize the optimization/co-registration process, for example, by starting with a global registration step that focuses on aligning a generic model of the tree list with the location, height, and crown radii generated by CanopyMaxima. Subsequent local registration could then focus on fine-tuning the other crown shape parameters to fit the mesh derived from the lidar point cloud.

Comments on project

You folks look to be in good shape in many ways. You have excellent design documentation, and substantial code. My main concern is the absence of tests, unless I missed where you put them. If you don't have tests yet, START NOW. You'll need to do this anyway, and you'll save yourself a lot of problems with bugs.

Git LFS conflict with Binder

Binder does not have Git LFS and will not download files from repo managed by Git LFS. Remove Git LFS and expunge it from documentation

expand test coverage of validate_data script

Several of the functions in the test suite for checking treelist format were incomplete or failed when running the tests. These are currently commented out in test_validate_data.py script, and can be uncommented, updated, and added to a new pull request once they're fleshed out and working.

Comments on Final

Mostly looks very good. Decent tests, code coverage, folder structure, docs. Some details:

  1. Use named constants instead of numbers or strings (e.g., geometry.py) and statements like required_cols = [
    'stem_x', 'stem_y', 'species', 'dbh', 'top_height', 'cr_ratio'
    ]

Update Interactions in Component Specs

Need to update Interactions section of Component Specs documentation to describe how the specific Use Cases defined in Functional Specs documentation will be accomplished.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.