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.
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.
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!
- Features
- Installation
- Try RGPR in five minutes
- Documentation
- Open source and collaboration
- Reproducibility
- Citation
- License
- Get involved
RGPR aims to make your data accessible regardless of the software originally used to acquire it.
- 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.
- Sensors & Software file format (*.dt1, *.hd).
- R internal format (*.rds).
- ASCII (*.txt):
- SEG-Y file format (*.sgy)
If your GPR format is not currently supported, contributions are welcome.
When possible, provide:
- a small example dataset;
- information about the file format;
- information about the acquisition system;
- an example of the expected result.
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.
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.
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, ...)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.
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.
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.
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")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.
The documentation contains tutorials and examples covering the main RGPR workflow.
Read the RGPR documentation β
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.
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.
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
@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
RGPR is free and open-source software released under the GNU General Public License.
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.
RGPR is built openly, for everyone working with GPR data.
