GithubHelp home page GithubHelp logo

zakbnou / hylite_with_add-ons Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hifexplo/hylite

0.0 0.0 0.0 48.43 MB

Hylite is an open-source toolbox for spectral geology. This is my personal spin on it

License: MIT License

Python 100.00%

hylite_with_add-ons's Introduction

hylite

hylite is an open-source python package for preprocessing imagery from a variety of hyperspectral sensors and fusing the results with high-resolution point-cloud data to generate seamless and radiometrically corrected hyperclouds. A variety of analysis techniques are also implemented, including multi-feature gaussian minimum wavelength mapping, dimensionality reduction and spectral angle mapping. Reference spectra from spectral libraries, ground or laboratory measurements can also be integrated and used to perform supervised classifications using machine learning techniques.


Tutorial:

Try hylite here! These example notebooks can alse be downloaded.

Binder

Documentation:

Detailed documentation for hylite can be found at: https://hifexplo.github.io/hylite/hylite.html


A key design feature of hylite is polymorphism between different spectral data types, such that spectral libraries, images and point clouds can be easily analysed and integrated. Pre-processing workflows for each of these data types have also been implemented.

hylite also includes a variety of tools for visualising different hyperspectral datasets and associated derivatives. For example, minimum wavelength maps can be easily calculated and visualised for spectral libraries, laboratory scans and outdoor scenes.


workflow image

Preprocessing and correction workflows implemented in hylite for different data types.


hypercloud image

Example visualisations of minimum wavelength maps calculated for (a) imagery of rock samples acquired using a core-scanner and (b) a hypercloud of an open-pit mine.


Release notes

Version 1.2

New features:

  • projection of push-broom data using hylite.project.Pushbroom
  • HyCollection class for easily loading / saving large numbers of data files
  • Completely rewritten HyLibrary class for easily merging, resampling and splitting spectral libraries
  • Added align_to_cloud_manual function for locating cameras with manually chosen tiepoints

Improvements:

  • Completely re-written minimum wavelength mapping code for improved performance (thanks Numba!)
  • Simplified structure for topographic and atmospheric corrections for cleaner code and increased flexibility
  • Many improvements to plotting functions
  • Greatly simplified input output code by wrapping specific funtions in generic io.load and io.save
  • Removed GDAL as a required dependency (SPy will be used instead if GDAl can't be found). Note that SPy can have unpredictable behaviour for non-reflectance files (outside of 0 - 1 range), so it is worth installing GDAL if you can
  • Increased performance of get_hull_corrected and rasterize functions using Numba
  • Significantly expanded penetration of test functions (though more work is needed here still)

Installation

  1. Create and activate a new python environment (anacona users only)
conda create -n hylite
conda activate hylite

2 Install hylite with pip.

pip install hylite

Installation (from GitHub)

  1. Create and activate a new python environment (anacona users only)
conda create -n hylite
conda activate hylite
  1. Download and unzip hylite from GitHub (or clone it using git clone https://github.com/samthiele/hylite.git)

  2. Navigate into the hylite directory using terminal and install it using pip:

pip install .

Optional dependencies:

A variety of other python packages might be needed depending on how you use hylite. These include:

  • GDAL: needed if working with georeferenced images (e.g. geotiffs, some envi files).
  • jupyter: recommended as coding interface when using hylite for exploratory data analysis.

Testing installation

Check hylite is installed by opening a python console and running:

import hylite

A better test of the installation can be performed by downloading the test data included in this repository, launching python or a jupyter notebook and running the following code:

import hylite
from hylite import io

lib = io.load( 'test_data/library.csv' )
lib.quick_plot()

image = io.load( 'test_data/image.hdr' )
image.quick_plot(hylite.RGB)

cloud = io.load( 'test_data/hypercloud.ply' )
cloud.quick_plot(cloud.header.get_camera(0), hylite.RGB)

Other test functionality is included in the tests directory.

Next steps

  1. Download and try the example notebooks / tutorials here.
  2. Find and adapt the one closest to what you need.
  3. Happy processing! :D

Citing hylite

If you use hylite for your work then please cite:

Thiele, S. T., Lorenz, S., et al., (2021). Multi-scale, multi-sensor data
integration for automated 3-D geological mapping. Ore Geology Reviews. DOI: j.oregeorev.2021.104252

https://doi.org/10.1016/j.oregeorev.2021.104252

For the illumination correction methods, please see:

Thiele, S. T., Lorenz S., Kirsch, M., Gloaguen, R., (2021). A novel and open-source illumination correction 
for hyperspectral digital outcrop models. Transactions on Geoscience and Remote Sensing. DOI: 10.1109/TGRS.2021.3098725

https://doi.org/10.1109/TGRS.2021.3098725

And for details related to projection and correction of pushbroom UAV hyperspectral data please see:

Thiele, S. T., Bnoulkacem, Z., Lorenz, S., Bordenave, A., Menegoni, N., Madriz, Y., ... & Kenter, J. (2022). 
Mineralogical Mapping with Accurately Corrected Shortwave Infrared Hyperspectral Data Acquired Obliquely from UAVs. 
Remote Sensing, 14(1), 5. DOI: 10.3390/rs14010005

https://doi.org/10.3390/rs14010005

Contributing to hylite

Cool additions are welcomed! Please feel free to submit pull requests through GitHub or get in touch with us directly if you have any questions. Bug reports are also welcomed (though do try to be specific).


This is a fork for personal use only. Be carefull No guarantee of it working.

hylite_with_add-ons's People

Contributors

samthiele avatar hifexplo avatar sandralorenz268 avatar zakbnou 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.