All Projects → stgl → scarplet

stgl / scarplet

Licence: MIT License
Topographic edge detection of fault scarps and other landforms in digital elevation data

Programming Languages

python
139335 projects - #7 most used programming language
TeX
3793 projects

Projects that are alternatives of or similar to scarplet

imgalign
Webapplication for image stitching and aligning
Stars: ✭ 162 (+1057.14%)
Mutual labels:  template-matching, feature-detection
kafbox
A Matlab benchmarking toolbox for kernel adaptive filtering
Stars: ✭ 70 (+400%)
Mutual labels:  signal-processing
template-matching-android
Augmented Reality Template Matching for >= Android 4.0 using OpenCV
Stars: ✭ 15 (+7.14%)
Mutual labels:  template-matching
ezSIFT
ezSIFT: An easy-to-use standalone SIFT library written in C/C++
Stars: ✭ 80 (+471.43%)
Mutual labels:  feature-detection
audiowmark
Audio Watermarking
Stars: ✭ 101 (+621.43%)
Mutual labels:  signal-processing
OpenCV-Anime-Face-Detector
Using OpenCV to detect and mark face and eye features in videos and images. Anime and manga faces are also detected.
Stars: ✭ 20 (+42.86%)
Mutual labels:  feature-detection
Audio Signal Processing
Audio or speech signal processing guide.
Stars: ✭ 45 (+221.43%)
Mutual labels:  signal-processing
GNSS Compare
A novel framework for processing raw GNSS measurements on an Android smartphone
Stars: ✭ 49 (+250%)
Mutual labels:  signal-processing
Python-Adaptive-Signal-Processing-Handbook
Python adaptive signal processing tutorials
Stars: ✭ 80 (+471.43%)
Mutual labels:  signal-processing
RS-MET
Codebase for RS-MET products (Robin Schmidt's Music Engineering Tools)
Stars: ✭ 32 (+128.57%)
Mutual labels:  signal-processing
SP Lib
Signal processing method and algorithm library
Stars: ✭ 93 (+564.29%)
Mutual labels:  signal-processing
juceSynths
Collection of JUCE synthesisers utilising the Maximilian library.
Stars: ✭ 78 (+457.14%)
Mutual labels:  signal-processing
iirj
An efficient IIR filter library written in JAVA
Stars: ✭ 95 (+578.57%)
Mutual labels:  signal-processing
control
Control in C++
Stars: ✭ 17 (+21.43%)
Mutual labels:  signal-processing
Pruned-DFT-s-FBMC Python
Simulates pruned DFT spread FBMC and compares the performance to OFDM, SC-FDMA and conventional FBMC. The included classes (QAM, DoublySelectiveChannel, OFDM, FBMC) can be reused in other projects.
Stars: ✭ 22 (+57.14%)
Mutual labels:  signal-processing
MTG-Card-Reader-Web
MTG-Card-Reader 2.0, built as a webpage.
Stars: ✭ 21 (+50%)
Mutual labels:  feature-detection
kalman-clib
Microcontroller targeted C library for Kalman filtering
Stars: ✭ 43 (+207.14%)
Mutual labels:  signal-processing
RTspice
A real-time netlist based audio circuit plugin
Stars: ✭ 51 (+264.29%)
Mutual labels:  signal-processing
vor-python-decoder
Decodes VOR signal from WAV file to get the bearing to your position
Stars: ✭ 33 (+135.71%)
Mutual labels:  signal-processing
jtk
The Mines Java Toolkit
Stars: ✭ 53 (+278.57%)
Mutual labels:  signal-processing

scarplet

Build Status Documentation Status DOI

scarplet is a Python package for applying template matching techniques to digital elevation data, in particular for detecting and measuring the maturity of fault scarps and other landforms [0, 1].

It is intended for earth scientists who want to apply diffusion dating methods to or extract landforms from large datasets. The scarplet API can be used to estimate the height and relative age of a landform or identify DEM pixels based on their fit to a landform template.

It was designed with two main goals:

  • Allow contributors to define template functions for their problem area of interest
  • Make it straightforward to apply these methods to large datasets by parallelizing/distrbuting computation using multiprocessing, dask, or other tools [2]

Getting started

Installation

scarplet can be installed using conda or pip. It is developed for Python 3.4+ and currently works on Linux and Mac OS X.

It is best to use a virtual environment for the install because the GDAL dependency can be tricky:

conda create -n scarplet_env
conda activate scarplet_env
conda install scarplet -c conda-forge

The main dependencies are numpy, scipy, numexpr, pyfftw (which requires LibFFTW3) and rasterio/GDAL.

Examples

Example notebooks can be found in the docs folder or website and sample datasets can be loaded using the datasets submodule.

Detecting fault scarps

This example uses a scarp template based on a diffusion model of scarp degradation [0] to identify scarp-like landforms along the San Andreas Fault near Wallace Creek, CA.

import numpy as np
import scarplet as sl
from scarplet.datasets import load_carrizo
from scarplet.WindowedTemplate import Scarp

params = {'scale': 100,
          'age': 10,
          'ang_min': -10 * np.pi / 2,
          'ang_max': 10 * np.pi / 2
         }

data = load_carrizo()
res = sl.match(data, Scarp, **params)

sl.plot_results(data, res)

Fault scarp results

Extracting confined river channels

To illustrate template function flexibility, this example uses a Channel template similar to the Ricker wavelet [3] to extract part of a channel network. This is example uses a moderate resolution SRTM data tile. In general, for high resolution data like lidar, there are more robust alternatives for channel network extraction or channel head identification [4, 5].

import numpy as np
import scarplet as sl
from scarplet.datasets import load_grandcanyon
from scarplet.WindowedTemplate import Channel 

params = {'scale': 10,
          'age': 0.1,
          'ang_min': -np.pi / 2,
          'ang_max': np.pi / 2
         }

data = load_grandcanyon()
res = sl.match(data, Channel, **params)

sl.plot_results(data, res)

Channel results

There are also example notebooks and an API reference in the documentation.

Documentation

Read the documentation for example use cases, an API reference, and more. They are hosted at scarplet.readthedocs.io.

Contributing

Bug reports

Bug reports are much appreciated. Please open an issue with the bug label, and provide a minimal example illustrating the problem.

Suggestions

Feel free to suggest new features in an issue with the new-feature label.

Pull requests

Don't hestitate to file an issue; I would be happy to discuss extensions or help to build a new feature.

If you would like to add a feature or fix a bug, please fork the repository, create a feature branch, and submit a PR and reference any relevant issues. There are nice guides to contributing with GitHub here and here. Please include tests where appropriate and check that the test suite passes (a Travis build or pytest scarplet/tests) before submitting.

Support and questions

Please open an issue with your question.

References

[0] Hanks, T.C., 2000. The age of scarplike landforms from diffusion‐equation analysis. Quaternary Geochronology, 4, pp. 313-338. doi

[1] Hilley, G.E., DeLong, S., Prentice, C., Blisniuk, K. and Arrowsmith, J.R., 2010. Morphologic dating of fault scarps using airborne laser swath mapping (ALSM) data. Geophysical Research Letters, 37(4). doi

[2] Sare, R, Hilley, G. E., and DeLong, S. B., 2019, Regional scale detection of fault scarps and other tectonic landforms: Examples from Northern California, Journal of Geophysical Research: Solid Earth. doi

[3] Lashermes, B., Foufoula‐Georgiou, E., and Dietrich, W. E., 2007, Channel network extraction from high resolution topography using wavelets. Geophysical Research Letters, 34(23). doi

[4] Passalacqua, P., Tarolli, P., and Foufoula‐Georgiou, E., 2010, Testing space‐scale methodologies for automatic geomorphic feature extraction from lidar in a complex mountainous landscape. Water Resources Research, 46(11). doi

[5] Clubb, F. J., Mudd, S. M., Milodowski, D. T., Hurst, M. D., and Slater, L. J., 2014, Objective extraction of channel heads from high‐resolution topographic data. Water Resources Research, 50(5). doi

License

This work is licensed under the MIT License (see LICENSE).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].