GRDHISTEQ(1gmt) | GMT | GRDHISTEQ(1gmt) |
grdhisteq - Perform histogram equalization for a grid
grdhisteq in_grdfile [ -Gout_grdfile ]
[ -Cn_cells ] [ -D[file] ] [
-N[norm] ] [ -Q ]
-Rregion
-V[level]
Note: No space is allowed between the option flag and the associated arguments.
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 or 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; using the CPT 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.
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. (more ...)
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
gmt, gmt.conf, grd2cpt, grdgradient, grdimage, grdmath, grdview, makecpt
2019, P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
May 21, 2019 | 5.4.5 |