Ground Penetrating Radar
GRORADAR™ by Gary R. Olhoeft, PhD
Home ] Up ] Tutorial ] Links ] Reading ] Bibliography ] Educational Software ] GRORADAR Ground Penetrating Radar Gary R. Olhoeft ]


History

     Gary Olhoeft started developing software to digitize, process, model and display ground penetrating data in 1977 while with the U.S. Geological Survey.  A number of special purpose codes were written to run on a variety of computer systems over the years. In 1996, to improve the ability to teach and demonstrate the principles of ground penetrating radar, he started consolidating, modifying and extending these codes into an integrated software package, now called GRORADAR™.  Portions of the code are extensively corrected, modified and extended (1996-1998), and partially derived from code in:
     Powers, M.H. and Olhoeft, G.R., 1995, GPRMODV2: One-Dimensional Full Waveform Forward Modeling of  Dispersive Ground Penetrating Radar Data Version 2.0: USGS Open File Report 95-58, 41p. + floppy disk.
     Powers, M.H., Duke, S.K., Huffman III, A.C. and Olhoeft, G.R., 1992, GPRMODEL: one-dimensional full waveform forward modeling of ground penetrating radar data: USGS Open File Report 92-532, 22p. + floppy
     Duke, S.K., 1990, Calibration of ground penetrating radar and calculation of attenuation and dielectric permittivity versus depth: MSc Thesis, Dept. of Geophysics, Colorado School of  Mines, Golden, 236 p.

     The GRORADAR™ code is now more than 16,000 lines of C supported by an extended graphics library of 6,000 lines of C and 6,000 lines of assembly language code.  It is compiled with the Intel 386/486 C Code Builder kit 1.1a and the Phar Lap 386ASM assembler version 8.0 to run as a 32-bit application in protected mode under the IGC X-AM DOS extender.

VERSION AND FEATURE HISTORY

GPRMODVn
Version 2.1 differs from version 2.0 in the following ways:
- draw_reflection() subroutine has been corrected by changing 2. to 4.
- in readfile(), a check has been added on import_field(0) to prevent program from bombing when field data file is not present
- in import_field() num_bytes, num_scans, ntotmscans, maxscansinmem, and abs_last have changed from type int to type long
- v2.0 has been changed to v2.1 in various places
Version 2.2 differs from version 2.1 in the following ways:
- in display_gpr_data() the 'o' key outputs the cursor scan to a separate binary file on disk (in the .TRN format).
- in make_eps_bw() the PostScript file format has been corrected such that other commercial packages can now read the .eps file.
- v2.1 has been changed to v2.2 in various places

********************************************************************
GPRMODVn version 1.x and 2.x are public domain and not subject to copyright.
All of the following additions and changes to later versions are copyrighted:
© Copyright 1997-1999 by Gary R. Olhoeft. All Rights Reserved.
********************************************************************


Version 3.0 has extensive changes by Gary R. Olhoeft, including:
640x480 & 800x600 & 1024x768 notebook graphics
repeat (remember) file selection & path
sample/time/depth scale
read 8-way multiplex *.DZT files and marks
display polarization components
ignore *.DT1 trace count error
display horizontal traverse amplitude (near-field effects)
replaces velocity-hyperbola routine
adds antenna pattern to velocity-hyperbola plot
corrected RICKER-dispersion problem
corrected fieldview-gprmodv interface

Version 4.0 adds
hist_equalize()
hist_equalize_horz()
spot_remover()
cross_spot_remover()
x_spot_remover()
edge_crisper()
Laplacian()
fit_to_screen()
gspline()
replaces lateral_corr() routine with rubber_sheet() spline
and interpolation of missing scans (instead of repetition)
time_cal()
derivative()
pick()
count()
median()
mean()
stddev()
Heapsort()
gain_cal()
smooth_data()
graph_setup_gain()
modifications for old SIR-3/7/8 marks
changed keys_to_use() to user_message() to send user messages

Version 5.0 adds
tracking of global/malloc/heap problems and correction
heapdump()
malloc_char()
malloc_unsigned_char()
malloc_short()
malloc_unsigned_short()
malloc_int()
malloc_unsigned_int()
malloc_float()
malloc_double()
free_track()

Version 6.0 adds
EDM rubbersheeting & topographic correction
more annontation and cleaning
plot rotation (portrait or landscape)
better EPS output
SET LASERJET and SET PLOTROTATE environment variables

Changed name to: GPR_DISP.C

Version 1.0 adds
ability to read 8- or 16-bit GSSI data, TC, RG, etc...
ability to store and retrieve mark locations
ability to adjust .EPS output page parameters
ability to adjust LaserJet page orientation & HPGL conversion
labeling of trace locations with distance & EDM information
labeling of model plots with scan location
save & display processing history
more robust .TC processing with FFT

Version 2.0 adds
cleanup display plotting
simplifies data entry
corrects location labeling
corrects scan ticks
plots both scan & meter ticks
+z U/D choice
change most often used subroutines to defines trading size for speed
adjust total scan and viewport size in 'f' and 'v'
continuous model change in both wavelet and Cole-Cole-BHS models
ability to adjust HPGL plotfile parameters
ability to adjust spot removers
added Sobel xy and diagonal edge detection
added range image texture enhancement
enhanced Laplacian edge enhancement
added hyperbola_migration()
added progress indicator
made time_cal FFT interactive
added range-gain display and edit to display_gpr
added suggestions
improve & correct initialization
extensive cleaning

Version 3.0 adds
initialization cleanup
draw scatterer radius during hyperbola fit
change colors for better contrast and visibility
fix cursor & label problem after rubbersheeting large files
fix *.DT1 gain on re-reading file
improve histogram stretch operation
improve speed of migration
indicate near field location
better EPS and PLT hardcopy
Microsoft Word HPGL BW compatibility option
memory/malloc available on problem and exit
fixed marker editing problems
added mark clear function
rezero updates markers in image
choice of gain, wavelet, or power spectra of wavelet in wiggle plot
fixed problem with .dt1 fixed spacing w/ or w/o markers

1/28/98 received trademark on GPR_DISP
2/12/98 found "GPR_DISP" on 2 web sites
2/13/98 merged with data acquisition GRORADAR.c (first used May 1997)
consolidated merged program under name GRORADAR
2/17/98 received trademark for GRORADAR

GRORADAR™ Version 3.0 adds:
merged programs
added data acquisition mode
keep original record in memory when possible
reordered menus
fixed main menu leftovers on exit
fixed F8 power spectra erase & scale problems
improved histogram contrast stretch
discuss video game character requirements
plot AVO along hyperbola track

GRORADAR Version 4.0 adds
added framebuffer modes to libhpgl.lib
added embedded license tracking for copyright violation
AVO on/off toggle in velocity hyperbola mode
save model scan for comparison
bring in one trace from each of two field data files
auto save model parameters whenever hardcopy file created
easy retrace from model back to field data display
fix reading in partial file (for files larger than memory)
fix RI with wavelet off doesn't clean screen right
fix after F to get field data, bottom message wrong
allow up to 256 MB RAM under DOS (F8 boot to DOS on Win95 startup)
allow up to 256 MB RAM under Win95 DOS box (but slower graphics)
add Cole-Cole equations
add list of assumptions

The CD-ROM demonstration version of GRORADAR™ Version 4.0 was distributed to attendees of  GPR'98, the 7th International Conference on Ground Penetrating Radar, May, 1998, Lawrence, Kansas.

GRORADAR Version 5.0 adds
EPS or HPGL vector plot choice
Dispersion model explanation and demonstration as in GPR'98 talk
main menu added information display
turn virtual memory on up to 4GB
better numerical error trapping
better heap error tracking
fixed malloc bugs
fixed cause of periodic modeling crash (array index)
re-worked globals
re-optimized

GRORADAR Version 9.98 adds
changed version numbering
improved data acquisition interface
added comments and comment.log to data acquisition module
fixed malloc bugs in data acquisition
added multiple .RGn files at different SIR-8 sensitivity settings
added new processing features to correct for timezero drift
added wavelet layer tracking
added wavelet amplitude normalization to direct wave
added .AMP output file with tracking information
added better marker finder

GRORADAR Version 10.98 adds
added .CM output file with evenly spaced tracking
model startup options for 2, 3, 4 layers
metal plate calibration on surface for wavelet reflection (F5)
asphalt thickness determination

GRORADAR Version 11.98 adds
fixed BHS bug in water content
automatic waveform model fitting for pavement thickness
create http://www.g-p-r.com support site
added 1600x1200 vector support (image support and hardcopy coming)

GRORADAR Version 12.98 adds
vertical interval constraints on wavelet layer tracking
automatic pavement thickness with statistics over horizontal interval
help files work in 800x600 laptop mode
added more help
started breaking up code into libraries for better optimization
fixed large format PostScript problems (tested to 17x22-inch paper using GhostScript GSview)

GRORADAR Version 01.99 adds
improved various user interfaces
improved stacking
added automatic pavement thickness over entire dataset with output to *.THK file
added better and faster automatic pavement thickness algorithm
added environment variable to correct time base

GRORADAR(tm) Version 2.99 adds
better timecal in data acquisition
fixed read model file bug for correct coupling ratio
changed so doesn't exit after save model
restored ability to read in model files from cmd line
used tab to skip intro screens and go to main menu
fixed bugs in image processing functions for Sobel edge detection
added Prewitt and extended Prewitt edge detection
improved Laplace edge detection algorithm
added extended menus for more image processing functions
changed security feature to revert to demo mode on failure

(CURRENT VERSION)
GRORADAR(tm) Version 3.99 adds
reads Mala RAMAC GPR data format
added Roberts edge detection
fixed heap over-run bug in data acquisition

COMING IN THE FUTURE
(if you have preferences, requirements, or want to request a feature, email me)

more graphics output formats
more ways to deal with RFI noise
more educational material in help files
add BHS mixing explanation
use process_history to reprocess file
allow first marker to be located other than at zero traverse
allow fixed spacing traces from any system (manual override)
undo or backup
store marking spacing & EDM with marks
AVO smooth and statistics
auto- and cross-correlate traces
velocity analysis
color hardcopy on inkjet printers
breakup code into libraries for better compiler optimization
periodic remaining memory indicator
display file header at any time
file editing
processing of field wavelet in full waveform model
out-of-plane hyperbola fitting ala BORDEN3D (Olhoeft GPR'94)
beyond end of data hyperbola fitting ala BORDEN3D
more expert suggestion help
better display & model parameter editing
power spectra of both model & field data
parameter tracking in process_history
automatic reprocessing from process_history
statistical and adaptive signal processing
variogram images ala Olhoeft (1992) SAGEEP paper
3D lengths/angles of connectivity ala Bemidji & Dunes (Huffman, 1992)
2D modeling ala Lockport & Steubenville
2D far field modeling ala Powers (1995)
2D near field modeling ala Kirkendall (1998)
3D modeling ala BORDEN3D (Olhoeft, 1994)
3D plotting & animation ala BORDEN4D
1D full waveform inversion
properties inversion
variant migration algorithms


This web site is supported by sales of
GRORADAR™ data acquisition, processing, modeling and display software.
Send mail to golhoeft@g-p-r.com with questions or comments about this web site.
Copyright © 1998-2000 Gary R. Olhoeft. All rights reserved.  Last modified: June 01, 2000.
All trademarks are owned by their respective companies. Copyright & Fair Use  Electronic Frontier Foundation
Please don't copy and redistribute anything without requesting permission.
Do freely make hyperlinks to these web pages through http://www.g-p-r.com