Code Monkey home page Code Monkey logo

lidar-harmonization's Introduction

Intensity Harmonization for Airborne LiDAR

Pipeline Results

Pytorch implementation of harmonizing a collection of airborne LiDAR scans, where each scan may have unique sensor callibrations or varying acquisition conditions. See the example above, where a collection of unharmonized scans (right) are harmonized (middle, left is ground truth).

Airborne LiDAR Intensity Harmonization
David Jones, Nathan Jacobs

What is LiDAR Harmonization?

LiDAR intensity, while an incredibly useful measurement as a learning or statistical feature, is influenced many factors. Large LiDAR campaigns, such as KY Statewide, require multiple flights across a large timespan. When the campaign is finished, the LiDAR is stitched together. Many times, the intensity of adjacent areas may look completely different, such as in the example below.


problem_def

This presents problems when using intensity as a feature in tasks such as detection or classification. We present a new method based on deep learning to solve this problem by harmonizing LiDAR scans that have overlap with a specified target scan. An example of our method can be seen at the top of this README. Our harmonized version is the middle image, with the initial unharmonized collection being on the right. The ground truth is on the left.

Setup

Environment

Conda is recommended. The environment.yml file contains the required dependencies. Create a new environemnt with conda env create --file environment.yml. The environment name is lidar.

After cloning the directory:

cd harmonization
conda env create -f environment.yml
pip install -e .

to install the src module.

Project Configuration

We also create a project config. Simply run

python config/genconfig.py

Running code

To get started with Dublin, navigate to src/datasets/dublin/data. The following steps download the NYU DublinCity dataset, and then create uncompressed numpy files containing the original pointcloud data as well as added point sources and estimated point normals:

bash get_dublin
cd ../../..   # src
python datasets/tools/laz_to_numpy.py

We have included premapped corruptions for each flight-swath as used in our research as src/datasets/dublin/data/dorf.json and src/datasets/dublin/data/mapping.npy. Confirm that src/datasets/dublin/config.py has the proper options. From the src directory, we can then harmonize dublin using these corruptions by simply running

python run.py

The collection can be visualized by running

python evaluation/visualize_scan

Harmonizing your own LiDAR Collection

Harmonizing your own LiDAR is fairly straightforward. Note: you will need the original swaths in LAZ format. It is recommended to simply make a new data directory src/datasets/<your_dataset_name>/data/laz, where all the LiDAR scans will reside. Copy the base config file from src/datasets/tools/config.py to src/datasets/<your_dataset>/config.py, and simply fill in the appropriate lines. You can then follow the steps outlined in the Running Code section above. You will need to supply your config file in the imports section of run.py and visualize_lidar_collection.py.

Citatation

Please use the following citation

@inproceedings{jones2021harmonize,
  annotation = {remote_sensing,lidar,pointcloud,3d},
  author = {Jones, David and Jacobs, Nathan},
  booktitle = {IEEE International Geoscience and Remote Sensing Symposium (IGARSS)},
  title = {Intensity Harmonization for Airborne {LiDAR}},
  year = {2021}
}

lidar-harmonization's People

Contributors

davidtjones avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

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.