Provided by: gmt-common_5.2.1+dfsg-3build1_all 

NAME
grdhisteq - Perform histogram equalization for a grid
SYNOPSIS
grdhisteq in_grdfile [ out_grdfile ] [ n_cells ] [ [file] ] [ [norm] ] [ ] region [level]
Note: No space is allowed between the option flag and the associated arguments.
DESCRIPTION
grdhisteq allows the user to find the data values which divide a given grid file into patches of equal
area. One common use of grdhisteq is in a kind of histogram equalization of an image. In this
application, the user might have a grid of flat topography with a mountain in the middle. Ordinary gray
shading of this file (using grdimage/grdview) with a linear mapping from topography to graytone will
result in most of the image being very dark gray, with the mountain being almost white. One could use
grdhisteq to write to stdout or file an ASCII list of those data values which divide the range of the
data into n_cells segments, each of which has an equal area in the image. Using awk or makecpt one can
take this output and build a CPT file; using the CPT file with grdimage will result in an image with all
levels of gray occurring equally. Alternatively, see grd2cpt.
The second common use of grdhisteq is in writing a grid with statistics based on some kind of cumulative
distribution function. In this application, the output has relative highs and lows in the same (x,y)
locations as the input file, but the values are changed to reflect their place in some cumulative
distribution. One example would be to find the lowest 10% of the data: Take a grid, run grdhisteq and
make a grid using n_cells = 10, and then contour the result to trace the 1 contour. This will enclose the
lowest 10% of the data, regardless of their original values. Another example is in equalizing the output
of grdgradient. For shading purposes it is desired that the data have a smooth distribution, such as a
Gaussian. If you run grdhisteq on output from grdgradient and make a grid file output with the Gaussian
option, you will have a grid whose values are distributed according to a Gaussian distribution with zero
mean and unit variance. The locations of these values will correspond to the locations of the input;
that is, the most negative output value will be in the (x,y) location of the most negative input value,
and so on.
REQUIRED ARGUMENTS
in_grdfile
2-D grid file to be equalized. (See GRID FILE FORMATS below).
OPTIONAL ARGUMENTS
-Cn_cells
Sets how many cells (or divisions) of data range to make [16].
-D Dump level information to file, or standard output if no file is provided.
-Gout_grdfile
Name of output 2-D grid file. Used with -N only. (See GRID FILE FORMATS below).
-N[norm]
Gaussian output. Use with -G to make an output grid with standard normal scores. Append norm to
force the scores to fall in the <-1,+1> range [Default is standard normal scores].
-Q Use quadratic intensity scaling. [Default is linear].
-R[unit]xmin/xmax/ymin/ymax[r] (more ...)
Specify the region of interest. Using the -R option will select a subsection of in_grdfile grid.
If this subsection exceeds the boundaries of the grid, only the common region will be extracted.
-V[level] (more ...)
Select verbosity level [c].
-^ or just -
Print a short message about the syntax of the command, then exits (NOTE: on Windows use just -).
-+ or just +
Print an extensive usage (help) message, including the explanation of any module-specific option
(but not the GMT common options), then exits.
-? or no arguments
Print a complete usage (help) message, including the explanation of options, then exits.
--version
Print GMT version and exit.
--show-datadir
Print full path to GMT share directory and exit.
GRID FILE FORMATS
By default GMT writes out grid as single precision floats in a COARDS-complaint netCDF file format.
However, GMT is able to produce grid files in many other commonly used grid file formats and also
facilitates so called "packing" of grids, writing out floating point data as 1- or 2-byte integers. To
specify the precision, scale and offset, the user should add the suffix =id[/scale/offset[/nan]], where
id is a two-letter identifier of the grid type and precision, and scale and offset are optional scale
factor and offset to be applied to all grid values, and nan is the value used to indicate missing data.
In case the two characters id is not provided, as in =/scale than a id=nf is assumed. When reading
grids, the format is generally automatically recognized. If not, the same suffix can be added to input
grid file names. See grdconvert and Section grid-file-format of the GMT Technical Reference and Cookbook
for more information.
When reading a netCDF file that contains multiple grids, GMT will read, by default, the first
2-dimensional grid that can find in that file. To coax GMT into reading another multi-dimensional
variable in the grid file, append ?varname to the file name, where varname is the name of the variable.
Note that you may need to escape the special meaning of ? in your shell program by putting a backslash in
front of it, or by placing the filename and suffix between quotes or double quotes. The ?varname suffix
can also be used for output grids to specify a variable name different from the default: "z". See
grdconvert and Sections modifiers-for-CF and grid-file-format of the GMT Technical Reference and Cookbook
for more information, particularly on how to read splices of 3-, 4-, or 5-dimensional grids.
EXAMPLES
To find the height intervals that divide the file heights.nc into 16 divisions of equal area:
gmt grdhisteq heights.nc -C16 -D > levels.d
To make the poorly distributed intensities in the file raw_intens.nc suitable for use with grdimage or
grdview, run
gmt grdhisteq raw_intens.nc -Gsmooth_intens.nc -N -V
RESTRICTIONS
If you use grdhisteq to make a Gaussian output for gradient shading in grdimage or grdview, you should be
aware of the following: the output will be in the range [-x, x], where x is based on the number of data
in the input grid (nx * ny) and the cumulative Gaussian distribution function F(x). That is, let N = nx *
ny. Then x will be adjusted so that F(x) = (N - 1 + 0.5)/N. Since about 68% of the values from a standard
normal distribution fall within +/- 1, this will be true of the output grid. But if N is very large, it
is possible for x to be greater than 4. Therefore, with the grdview program clipping gradients to the
range [-1, 1], you will get correct shading of 68% of your data, while 16% of them will be clipped to -1
and 16% of them clipped to +1. If this makes too much of the image too light or too dark, you should take
the output of grdhisteq and rescale it using grdmath and multiplying by something less than 1.0, to
shrink the range of the values, thus bringing more than 68% of the image into the range [-1, 1].
Alternatively, supply a normalization factor with -N.
SEE ALSO
gmt, gmt.conf, grd2cpt, grdgradient, grdimage, grdmath, grdview, makecpt
COPYRIGHT
2015, P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
5.2.1 January 28, 2016 GRDHISTEQ(1gmt)