Skip to content

Tree Crown Image Segmentation through Clustering with RGB, Hyperspectral and LiDAR as inputs

License

Notifications You must be signed in to change notification settings

rachit-ranjan16/CrownSeg

Repository files navigation

Crown Segmentation

Segment Tree Crowns from RGB, Hyperspectral and LiDAR Images using Clustering techniques

Dataset

NIST DSE Plant Identification with NEON Remote Sensing Data

  • Training Inputs(GeoTIFF Format)
    • 37 RGB Images (320,320,3)
    • 43 Hyperspectral Images (80,80,420)
    • 43 LiDAR Images (80,80)
    • 43 LiDAR PointCloud 3D Maps (20665,20665,20665)
  • Training Outputs
    • ShapeFiles highlighting Tree Crowns for 70% of the input data
  • hyper_bands.csv containing noisy bands for hyperspectral images

Download Link
Modify ~/utils/datapaths.py accordingly as per extraction/unzip tool used.

The code expects Dataset to be extracted as ~/ECODSEdataset/ECODSEdataset/

Observations and Inferences

- Most RGB Images either show a blur or tilt or both along with not matching with their hyperspectral and lidar counterparts
    - RGB Images Not Used
- Higher bands seem to have noisy information attributing to poor sensor calibration
    - Smoothed out using convolutions
    - End noise clipped out
- Three LiDAR Elevation Maps have missing data
    - Shape of (77,80) instead of (80,80)
    - Not used to create composite masks with ndvi information
    - Clustering outputs available along with NDVI

Prerequisites

- Ubuntu 18.04 LTS Recommended
    - Default Python3 installation  
    - Pip3 Installation
        - sudo apt-get -y -q install python3-pip
- GDAL Installation(Ubuntu instructions only)
    - sudo apt-get -y -q install gdal-bin
    - sudo apt-get -y -q install python3-numpy
    - sudo apt-get -y -q install python3-gdal
- Install Requirements
    - pip3 install -r requirements.txt

Additional Information

NDVI Reference Range

NDVI Vegetation Type
-1 Water
-0.1 - 0.1 Rock/Dirt
0.2 - 0.4 Shrubs/Grasslands
>0.4 Trees/Rainforests

AppConfig

All Parameters used are present in ~/appConfig.ini and can be modified as per need

Outputs

All Outputs are stored in ~/OUT/ following a similar filename pattern structure to the dataset

Methodology

  • Convert all GeoTIFF Files into easy to access and modify matlab files (.mat)
    • python3 utils/convert_to_mat.py --help
      • python3 utils/convert_to_mat.py --file-type=rgb
      • python3 utils/convert_to_mat.py --file-type=lidar
      • python3 utils/convert_to_mat.py --file-type=hyper
  • View Images
    • Hyperspectral Image Bands
      • python3 utils/display_bands --help
        • python3 utils/display_bands --image-id=23 -x=40 -y=25
      • Add --trim-wavelengths=False until noisy bands have been purged from the hyperspectral images(executed in the following instruction)
  • Hyperspectral Image Dimensionality Reduction
    • Purge Noisy Bands and Smooth out intensities in the higher bands for all pixels in all images
      • python3 utils/reduce_dimensionality.py --help
        • python3 utils/reduce_dimensionality.py
  • Create Normalized Difference Vegetation Index(NDVI) for each hyperspectral image
    • python3 utils/calculate_ndvi.py
  • Convert created NDVI from .tif to .mat format
    • python3 utils/convert_to_mat.py --file-type=ndvi
  • Threshold NDVI for Rainforests/Trees to a binary image and use as a mask over LiDAR CHM to further segment LiDAR into tree or no tree - assists in differentiating further between trees and other artifacts
    • python3 utils/create_ndvi_lidar_mask.py
  • Execute Clustering Algorithms on Images(store output labels in .mat files)
    • python3 clustering.py
      • K Means
      • Gaussian Mixture Model
      • Fuzzy C Means
      • Self Organizing Maps
      • Spectral Clustering
  • Put the composite NDVI + LiDAR CHM as a mask over the cluster labels ensuring everything except crowns is soft thresholded to zero
    • python3 mask_clusters.py

Future Work

  • Being FCM, SOM and Spectral Clustering to working shape
  • Convert ShapeFile Training Outputs to Image and then a matrix for comparison with
  • Performance Evaluation
    • Compare Output Labels with available shapefile outputs using Jaccard's Coefficient to fine tune clustering algorithms' hyperparameters

About

Tree Crown Image Segmentation through Clustering with RGB, Hyperspectral and LiDAR as inputs

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages