Skip to content

Latest commit

Β 

History

1,101 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Open-source GPR processing in R

Read Β· Process Β· Visualise Β· Analyse Β· Interpret

RGPR is a free and open-source R package for reading, processing, visualising and analysing ground-penetrating radar (GPR) data.

Work with data from different GPR systems, build your own processing workflows, automate repetitive tasks and keep your entire workflow in code.

No proprietary processing software required. No black box. Your data, your workflow, your code.

Documentation GitHub stars


Why RGPR?

GPR processing often involves many small steps: filtering, gain, background removal, time-zero correction, migration, coordinate correction and more.

With graphical software, these steps can be difficult to reproduce or automate.

With RGPR, the workflow is simply R code:

library(RGPR)

gpr <- readGPR("profile.DT1")

gpr <- gpr |>
  dcshift() |>
  dewow() |>
  gain(type = "agc") |>
  fFilter(type = "bandpass")

plot(gpr)

The same workflow can be:

  • reproduced on another dataset;
  • automated for many profiles;
  • shared with colleagues;
  • modified when your processing needs change;
  • tracked in Git;
  • combined with the rest of the R ecosystem.

Open source means control

RGPR is open source. You can inspect how processing is performed, modify existing functions, add your own methods and contribute improvements to the project.

If you have any questions, comments or suggestions, feel free to contact me (in English, French or German): emanuel.huber@pm.me

I am developing this package on my free time as a gift to the GPR community. Any support will be appreciated!

Buy me a coffee with Paypal

Table of content


Features

πŸ“‚ Read GPR data

RGPR aims to make your data accessible regardless of the software originally used to acquire it.

Supported file formats (read only):

  • Sensors & Software file format (*.dt1, *.hd, *.gps).
  • MALA file format (*.rd3, *.rd7, *.rad, *.cor).
  • ImpulseRadar file format (*.iprb, *.iprh, *.cor, *.time, *.mrk).
  • GSSI file format (*.dzt, *.dzx).
  • Geomatrix Earth Science Ltd file format (Utsi Electronics format) for the GroundVue 3, 7, 100, 250 and 400 as well as for the TriVue devices (*.dat, *.hdr, *.gpt, *.gps).
  • Radar Systems, Inc. Zond file format (*.sgy). WARNING: it is not a version of the SEG-Y file format.
  • IDS file format (*.dt, *.gec).
  • Transient Technologies file format (*.sgpr).
  • US Radar file format (*.RA1, *.RA2 or *.RAD)
  • SEG-Y file format developed by the Society of Exploration Geophysicists (SEG) for storing geophysical data (*.sgy), also used by Easy Radar USA
  • Geotech OKO file format (*.GPR, *.GPR2).
  • SEG-2 Pullan, S.E., 1990, Recommended standard for seismic (/radar) files in the personal computer environment: Geophysics, 55, no. 9, 1260–1271(*.sg2). Also used by US Radar with extensions *.RA1, *.RA2, *. RAD.
  • GPRmax: hdf5 file format with extension *.out (not well tested)
  • 3dradar: the manufacturer does not want to reveal the binary file format *.3dra. Workaround: export the GPR data in binary VOL format (*.vol) with the examiner software -> still experimental
  • R internal format (*.rds).
  • serialized Python object (*.pkl).
  • ENVI band sequential file format (*.dat, *.hdr).
  • ASCII (*.txt):
    • either 3-column format (x, t, amplitude)
    • or matrix-format (without header/rownames)
  • Terra Zond binary file format (*.trz) -> we are working on it

See tutorial Import GPR data.

Supported export file formats

  • Sensors & Software file format (*.dt1, *.hd).
  • R internal format (*.rds).
  • ASCII (*.txt):
  • SEG-Y file format (*.sgy)

Format currently not supported

If your GPR format is not currently supported, contributions are welcome.

When possible, provide:

  1. a small example dataset;
  2. information about the file format;
  3. information about the acquisition system;
  4. an example of the expected result.

πŸ“‘ Process radargrams

A broad collection of processing tools is available:

  • time-zero correction
  • first-break estimation
  • DC-shift correction
  • dewow
  • background removal
  • trace averaging
  • frequency filtering
  • f-k filtering
  • median filtering
  • gain functions
  • eigenimage filtering
  • phase rotation
  • convolution
  • deconvolution
  • resampling

Processing functions can be combined into workflows and applied repeatedly to multiple datasets.


πŸš€ Build reproducible processing pipelines

Instead of manually repeating the same processing steps, define them once:

pipeline <- list(
  dcshift,
  dewow,
  function(x) gain(x, type = "agc"),
  function(x) fFilter(x, type = "bandpass")
)

processed <- papply(gpr, pipeline)

Your processing recipe becomes part of your project rather than a sequence of clicks that has to be remembered.


πŸ“ Velocity analysis and migration

Tools are available for:

  • CMP/WARR analysis
  • velocity estimation
  • NMO correction
  • Kirchhoff migration
  • topographic migration
  • hyperbola fitting
plot(gpr)

# Estimate or select velocity

gpr_mig <- migration(gpr, ...)

πŸ—ΊοΈ Work with spatial GPR surveys

Combine individual profiles into spatial surveys using GPRsurvey.

Work with:

  • trace coordinates;
  • GPS information;
  • coordinate reference systems;
  • survey geometry;
  • profile positions;
  • spatial interpolation;
  • time/depth slices.

🧊 Explore GPR data in 3D

Combine spatially distributed GPR profiles and create 3D representations of your data.

cube <- interpSlices(SU, dx = 0.05, dy = 0.05, dz = 0.05, h = 6)

plot(cube)

Explore GPR volumes, time/depth slices and interpreted features in 3D.


✏️ Interpret your data

Delineate and analyse features directly from GPR profiles.

Use interpretations to:

  • trace reflections;
  • identify horizons;
  • extract coordinates;
  • analyse interpreted features;
  • visualise interpretations in 2D and 3D.

Installation

You must first install R. Then, in R console, enter the following:

Install the development version from GitHub:

install.packages("remotes")

remotes::install_github("emanuelhuber/RGPR")

Try RGPR in five minutes

RGPR includes example GPR datasets so that you can start without finding your own data. In R console, enter the following:

library(RGPR)

data(frenkeLine00)

plot(frenkeLine00)

Apply a simple processing workflow:

gpr <- frenkeLine00 |>
  dcshift() |>
  dewow()

plot(gpr)

From there, explore filtering, gain, migration, spatial positioning, interpolation and interpretation.


Documentation

The documentation contains tutorials and examples covering the main RGPR workflow.

Read the RGPR documentation β†’

Getting started

Spatial GPR

Advanced processing

Open source and collaboration

RGPR is developed openly and welcomes contributions from the GPR community.

Contributions can include:

  • bug reports;
  • new file-format readers;
  • processing algorithms;
  • performance improvements;
  • tests;
  • documentation;
  • examples;
  • datasets;
  • tutorials;
  • translations.

You don't need to be an expert R developer to contribute.

A small example dataset, a bug report or an improvement to the documentation can be just as valuable as a new algorithm.


Reproducibility

A major advantage of using RGPR is that your processing workflow can live alongside your data and analysis code.

For example:

my-gpr-project/
β”‚
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ raw/
β”‚   └── processed/
β”‚
β”œβ”€β”€ R/
β”‚   └── processing.R
β”‚
β”œβ”€β”€ figures/
β”‚
β”œβ”€β”€ results/
β”‚
└── README.md

Your processing is no longer hidden inside a software project file.

It is code that can be inspected, version-controlled, shared and rerun.


Citation

How to cite

E. Huber and G. Hans (2018) RGPR β€” An open-source package to process and visualize GPR data. 17th International Conference on Ground Penetrating Radar (GPR), Switzerland, Rapperswil, 18-21 June 2018, pp. 1-4. doi: 10.1109/ICGPR.2018.8441658

PDF Poster

Bibtex format

@INPROCEEDINGS{huber&hans:2018,
author    = {Emanuel Huber and Guillaume Hans},
booktitle = {2018 17th International Conference on Ground Penetrating Radar (GPR)},
title     = {RGPR β€” An open-source package to process and visualize GPR data},
year      = {2018},
pages     = {1--4},
doi       = {10.1109/ICGPR.2018.8441658},
ISSN      = {2474-3844}}

My current affiliation:

Emanuel Huber,
GEOTEST AG
Bernstrasse 165
3052 Zollikofen 
Switzerland

License

RGPR is free and open-source software released under the GNU General Public License.


Get involved

Have an idea?

Found a bug?

Need support for another GPR format?

Want to contribute?

Open an issue, start a discussion or submit a pull request.

GitHub β†’

RGPR is built openly, for everyone working with GPR data.

About

Ground-penetrating radar (GPR) data processing and visualisation: a free and open-source software package (R language)

Topics

Resources

Contributing

Stars

227 stars

Watchers

21 watching

Forks

Releases

Packages

Used by

Contributors

Languages