Provided by: snaphu_1.4.2-2_amd64 bug

NAME

       snaphu - phase unwrapping algorithm for SAR interferometry

SYNOPSIS

       snaphu [options] [infile] [linelength] [options]

DESCRIPTION

       snaphu  is  a statistical-cost network-flow algorithm for phase unwrapping.  Given an input interferogram
       and other observable data, snaphu attempts  to  compute  congruent  phase-unwrapped  solutions  that  are
       maximally  probable  in  an  approximate  a posteriori sense.  The algorithm's solver routine is based on
       network optimization.  By default, snaphu assumes that its input is  a  synthetic  aperture  radar  (SAR)
       interferogram  measuring  surface  topography.   Deformation measurements are assumed if the -d option is
       given.  Smooth, generic data are assumed if the -s option is given.

       This man page documents only snaphu's syntax and usage.  Its theoretical foundations are discussed in the
       references cited below.

       The most common input parameters may be given on the command line, while many  other  twiddle  parameters
       are  handled  via  the -f option and configuration files.  At the very least, the name of a wrapped-phase
       input file and its line length must be specified.   Range  should  increase  towards  the  right  in  the
       interferogram, and the flat-earth phase ramp should be removed from the input interferogram before snaphu
       is run.  For deformation interferograms, phase variations due to topography should be removed as well.

       Except  for  the  input  file  name  and the line length, all input parameters take default values if not
       specified.  However, these parameters should be customized whenever possible since the  accuracy  of  the
       solution depends on how well the statistics of the estimation problem are modeled.  To avoid poor-quality
       solutions,  users  are  strongly  encouraged  to  provide  their  best  estimates of the relevant problem
       parameters.  Parameters are set in the order in which they are given on the  command  line,  so  multiple
       configuration files or options may be given, with later values overriding earlier ones.

       Allowable  file  formats  are detailed below.  The default format for the input file is COMPLEX_DATA, but
       any of the described formats may be used.  If either of the ALT_LINE_DATA or ALT_SAMPLE_DATA formats  are
       used,  the  magnitude  and  phase  (in  radians)  of  the interferogram should be in the first and second
       channels of the file, respectively.  If the FLOAT_DATA format is used, the input file should contain only
       the phase of the interferogram (in radians); the magnitude may be passed with the -m option.

OPTIONS

       -a ampfile
              Read brightness data from the file ampfile.  The file should contain the amplitudes  (not  powers)
              of  the  two  individual  SAR  images  forming  the  interferogram  if the formats ALT_SAMPLE_DATA
              (default) or ALT_LINE_DATA are used.  It should contain an average of  those  two  images  if  the
              FLOAT_DATA  format  is  used.   If  (1)  the  amplitudes  of  both  images  are available, (2) the
              interferogram magnitude is also available, and (3) the -c option is not  used,  then  a  coherence
              estimate  is  automatically  formed  from  the  available data.  The number of looks used for this
              estimate can be set in a configuration file.  If no amplitude or power data  are  specified,  then
              the  magnitude  of  the  input  interferogram  is  used as the average amplitude, and no coherence
              estimate is formed.  Note that the magnitude of the interferogram is  not  equal  to  the  average
              amplitude  of  the  SAR images.  The amplitude data should be in the same system of units used for
              the input interferogram, and also coregistered to it.

       -A pwrfile
              Similar to the -a option, except the data in the specified file is assumed to represent the powers
              of the two individual SAR images.

       -b Bperp
              For topography mode, use Bperp (decimal value, in  meters)  as  the  value  of  the  perpendicular
              component of the interferometric baseline.  The sign is defined such that Bperp is negative if the
              unwrapped  phase  increases  with  the  elevation.   By  default, repeat-pass or ping-pong mode is
              assumed; for single-antenna-transmit data, the value of Bperp should be halved,  or  the  transmit
              mode should be set accordingly in a configuration file (see the -f option).  The baseline value is
              only used in topography mode.

       -c corrfile
              Read  correlation  data  from the file corrfile.  The correlation data should be the same size as,
              and registered to, the input interferogram.  Consequently, a raw correlation estimate may need  to
              be upsampled if it incorporates more looks than the interferogram.  If the -c option is not given,
              a  coherence estimate is formed from the available data if possible.  Otherwise, a uniform default
              coherence  is  assumed  for  the  entire  interferogram.   If  the  ALT_LINE_DATA   (default)   or
              ALT_SAMPLE_DATA formats are used, the correlation data should be in the second data channel of the
              file;  the  first  channel  is  ignored.  The FLOAT_DATA format may also be used.  The correlation
              values should be between zero and one, inclusive.

       -d     Run in deformation mode.  The problem statistics and resulting cost functions  are  based  on  the
              assumption that the true unwrapped phase represents surface displacement rather than elevation.

       -e estimatefile
              Flatten  using  the unwrapped phase estimate in the file estimatefile.  The estimate is subtracted
              from the input interferogram before unwrapping, and is inserted back into the solution just before
              the output is written.  The estimate also affects the cost functions  used,  since  subtracting  a
              constant  from  a  random variable shifts the probability density function of the random variable.
              If the formats ALT_LINE_DATA (default) or ALT_SAMPLE_DATA are used,  the  unwrapped  estimate  (in
              radians)  should  be  in  the  second data channel of the file; the first channel is ignored.  The
              FLOAT_DATA format may also be used.

       -f configfile
              Read configuration parameters from file configfile.  The file is parsed line by line for key-value
              pairs.  Template configuration files are included with the snaphu  source  code:  snaphu.conf.full
              contains  all  valid  key-value  pairs;  snaphu.conf.brief contains the most important parameters.
              Lines not beginning with alphanumeric characters are  treated  as  comment  lines.   Command  line
              options  specified  after  -f will override parameters specified in the configfile and vice versa.
              The -f option may be given multiple times with different configuration files, with  parameters  in
              later-specified files overriding those in earlier ones.

       -g maskfile
              Grow  a  connected  component  mask  for  the  unwrapped  solution  and write the mask to the file
              maskfile.  A connected component is a region of pixels in the solution that is  believed  to  have
              been unwrapped in a relative, internally self-consistent manner according to the statistical costs
              used.   Regions that are smaller than a preselected threshold are masked out.  Parameters for this
              option can be set in the configuration file.  The connected component file is composed of unsigned
              characters, with all pixels of the same value belonging to the same connected component  and  zero
              corresponding to masked pixels.

       -G maskfile
              Grow  a connected component mask (see the -g option) for the input data array, assuming that it is
              already unwrapped, and write the mask to  the  file  maskfile.   Statistical  cost  functions  are
              computed for forming the mask, but a new unwrapped solution is not computed.

       -h     Print a help message summarizing command-line options and exit.

       -i     Run  in  initialize-only  mode.  Normally, snaphu uses either an approximate minimum spanning tree
              (MST) algorithm or a minimum cost flow (MCF) algorithm for generating the  initialization  to  its
              iterative,  modified network-simplex solver.  If -i is given, the initialization is written to the
              output and the program exits without running the iterative solver.

       -l logfile
              Log all runtime parameters and some other environment information into the  specified  file.   The
              log file is a text file in the same format as a configuration file.

       -m magfile
              Read  interferogram  magnitude  data from the specified file.  This option is useful mainly if the
              wrapped-phase input file is given as a set of real phase values rather than complex  interferogram
              values.  The interferogram magnitude is used to form a coherence estimate if appropriate amplitude
              data  are  given as well.  The default file format is FLOAT_DATA.  If the formats ALT_LINE_DATA or
              ALT_SAMPLE_DATA are used, the magnitude should be in the first  data  channel  of  the  file;  the
              second channel is ignored.  If the COMPLEX_DATA format is used, the phase information is ignored.

       -n     Run  in  no-statistical-costs  mode.   If  the  -i  or  -p  options are given, snaphu will not use
              statistical costs.  Information from a weight file (-w option) will still be used if given.

       -o outfile
              Write the unwrapped output to file called outfile.  If the file formats ALT_LINE_DATA (default) or
              ALT_SAMPLE_DATA are used, the unwrapped phase is written into the second data channel,  while  the
              interferogram  magnitude  is  written  into  the first channel.  The format FLOAT_DATA may also be
              used.

       -p value
              Run in Lp-norm mode with p=value, where value is a nonnegative decimal.   Instead  of  statistical
              cost  functions, the program uses Lp cost functions with statistically based weights (unless -n is
              also given).  Solutions are still always congruent.  Moreover, congruence is enforced  within  the
              solver  routine,  not  as  a  post-optimization  processing step.  Therefore, if p=2, for example,
              least-squares cost functions are used, but the solution will probably be more  accurate  than  one
              generated from a transform-based least-squares algorithm.

       -q     Run in quantify-only mode.  The input data are assumed to be unwrapped already, and the total cost
              of  this  solution  is calculated and printed.  The unwrapped phase is wrapped assuming congruence
              for the cost calculation.  Round-off errors may limit the precision of the quantified  cost.   See
              the -u option for allowable file formats.

       -s     Run in smooth-solution mode.  The problem statistics and resulting cost functions are based on the
              assumption  that  the  true  unwrapped phase represents a generic surface with no discontinuities.
              This is the same as deformation mode with the DEFOMAX parameter set to zero.

       -t     Run in topography mode.  The problem statistics and resulting cost  functions  are  based  on  the
              assumption that the true unwrapped phase represents surface elevation.  This is the default.

       -u     Assume  that  the  input  file  is  unwrapped  rather than wrapped.  The algorithm makes iterative
              improvements to this solution instead of using an initialization routine.  The input file  may  be
              in  the  formats ALT_LINE_DATA (default) or ALT_SAMPLE_DATA; the interferogram magnitude should be
              in the first data channel and the unwrapped phase should be  in  the  second  data  channel.   The
              format FLOAT_DATA may also be used.

       -v     Run  in  verbose  mode.   Extra information on the algorithm's progress is printed to the standard
              output.

       -w weightfile
              Read external, scalar weights from file weightfile.  The weights, which should be  positive  short
              integers,  are  applied  to whichever cost functions are used.  There is one weight value for each
              arc in the network, so weightfile should  be  the  concatenation  of  raster  horizontal-flow  and
              vertical-flow arc weights.  Thus, for an N row by M column interferogram, weightfile would consist
              of  a rasterized (N-1) by M array followed by a rasterized N by (M-1) array of short integer data.
              This option is not well tested.

       --aa ampfile1 ampfile2
              Amplitude data are read from the files specified.  The data from the  two  individual  SAR  images
              forming  the  interferogram  are  assumed  to be separately stored in files ampfile1 and ampfile2.
              These files should be in the format FLOAT_DATA.  This option is similar to the -a option.

       --AA pwrfile1 pwrfile2
              Similar to the --aa option, but power data are read from the specified files.

       --assemble dirname
              Assemble the tile-mode temporary files in the specified  directory.   Most  configuration  options
              (from  the  command line and any configuration files) must be specified.  This option is useful if
              the user wishes to modify tile-assembly parameters without unwrapping the  individual  tiles  over
              again.

       --copyright, --info
              Print the software copyright notice and bug report info, then exit.

       --costinfile costfile
              Read statistical cost arrays from file costfile.  This file should be in the format written by the
              --costoutfile  option.   The  cost  file  does  not  control  whether  snaphu  runs in topography,
              deformation, or smooth-solution mode; the latter two must be specified explicitly even if costfile
              was generated while running in those modes.

       --costoutfile costfile
              Write statistical cost arrays to file costfile.  This option can be  used  with  the  --costinfile
              option to save the time of generating statistical costs if the same costs are used multiple times.

       --debug, --dumpall
              Dump all sorts of intermediate arrays to files.

       --mst  Use a minimum spanning tree (MST) algorithm for the initialization.  This is the default.

       --mcf  Use  a  minimum  cost flow (MCF) algorithm for the initialization.  The cs2 solver by Goldberg and
              Cherkassky is used.  The modified network-simplex solver in L1 mode  may  give  different  results
              than the cs2 solver, though in principle both should be L1 optimal.

       --nproc n
              Use n parallel processes when in tile mode.  The program forks a new process for each tile so that
              tiles  can  be  unwrapped in parallel; at most n processes will run concurrently.  Forking is done
              before data is read.  The standard output streams of child processes are directed to log files  in
              the temporary tile directory.

       --piece firstrow firstcol nrow ncol
              Read  and  unwrap only a subset or part of the input interferogram.  The read piece is the nrow by
              ncol rectangle whose upper left corner is the pixel at row firstrow and column  firstcol  (indexed
              from  1).  All input files (such as amplitude, coherence, etc.) are assumed to be the same size as
              the input phase file.  All output files are nrow by ncol.

       --tile ntilerow ntilecol rowovrlp colovrlp
              Unwrap the interferogram in tile mode.  The interferogram is partitioned into ntilerow by ntilecol
              tiles, each of which is unwrapped independently.  Tiles overlap by rowovrlp and colovrlp pixels in
              the row and column directions.  The tiles are then segmented into reliable regions  based  on  the
              cost functions, and the regions are reassembled.  The program creates a subdirectory for temporary
              files  in  the  directory  of the eventual output file.  This option is currently enabled only for
              statistical cost functions.

FILE FORMATS

       The formats of input files may be specified in a configuration file.  All of these formats  are  composed
       of  raster,  single-precision  (float,  real*4, or complex*8) floating-point data types in the platform's
       native byte order.  Data are read line by line (across then down).  Regardless of the  file  format,  all
       input data arrays should have the same number of samples in width and depth and should be coregistered to
       one  another.   Note  that weight files and cost files have their own formats.  The allowable formats for
       other data files are described below.

       COMPLEX_DATA
              Alternating floats correspond to the real (in-phase)  and  imaginary  (quadrature)  components  of
              complex data samples.  The specified line length should be the number of complex samples (pairs of
              real and imaginary samples) per line.

       ALT_LINE_DATA
              Alternating lines (rows) of data correspond to lines of purely real data from two separate arrays.
              The  first  array  is  often  the  magnitude of the interferogram, and the second may be unwrapped
              phase, coherence, etc.  This is also sometimes called hgt or line-interleaved format.

       ALT_SAMPLE_DATA
              Alternating samples correspond to purely real samples from two separate arrays.   This  format  is
              sometimes used for the amplitudes of the two SAR images.

       FLOAT_DATA
              The file contains data for only one channel or array, and the data are purely real.

EXAMPLES

       Unwrap  a  wrapped  topographic  interferogram  called  ``wrappedfile'' whose line length is 1024 complex
       samples (output will be written to a file whose name is compiled into the program):

            snaphu wrappedfile 1024

       Unwrap the same file as above, but  use  brightness  information  from  the  file  ``ampfile,''  set  the
       perpendicular  baseline  to  -165  m at midswath, and place the output in a file called ``unwrappedfile''
       (coherence data are generated automatically if ``wrappedfile''  contains  complex  data  and  ``ampfile''
       contains amplitude data from both SAR images):

            snaphu wrappedfile 1024 -a ampfile \
                 -b -165 -o unwrappedfile

       Unwrap the interferogram as above, but read correlation information from the file ``corrfile'' instead of
       generating it from the interferogram and amplitude data:

            snaphu wrappedfile 1024 -a ampfile -c corrfile \
                 -b -165 -o unwrappedfile

       The  following  is equivalent to the previous example, but input parameters are read from a configuration
       file, and verbose output is displayed:

            cat > configfile
            # This is a comment line which will be ignored
            AMPFILE      ampfile
            CORRFILE     corrfile
            BPERP        -165
            OUTFILE      unwrappedfile
            <Ctrl-D>

            snaphu -v -f configfile wrappedfile 1024

       Unwrap the same interferogram, but use only the MST initialization (with scalar statistical weights)  and
       write the output to ``mstfile'':

            snaphu -f configfile -i wrappedfile 1024 -o mstfile

       Read the unwrapped data in ``mstfile'' and use that as the initialization to the modified network-simplex
       solver:

            snaphu -f configfile -u mstfile 1024 -o unwrappedfile

       Note  that  in  the previous two examples, the output file name in the configuration file is overrided by
       the one given on the command line.  The previous two commands together are in principle equivalent to the
       preceding one, although round-off errors in flow-to-phase conversions may cause minor differences

       Unwrap the interferogram as above, but use the MCF algorithm for initialization:

            snaphu -f configfile wrappedfile 1024 --mcf

       Unwrap the interferogram once again, but first flatten it with the unwrapped data  in  ``estfile,''  then
       reinsert the subtracted phase after unwrapping:

            snaphu -f configfile wrappedfile 1024 -e estfile

       The  following assumes that the wrapped input interferogram measures deformation, not topography.  Unwrap
       the interferogram with the given correlation data:

            snaphu -d wrappedfile 1024 -c corrfile

       Unwrap the input interferogram by minimizing the unweighted congruent L2 norm:

            snaphu -p 2 -n wrappedfile 1024

       Unwrap the interferogram as a three-by-four set of tiles that overlap by 30 pixels,  with  the  specified
       configuration file, using two processors:

            snaphu wrappedfile 1024 -f configfile \
                 --tile 3 4 30 30 --nproc 2

HINTS AND TIPS

       The  program  may print a warning message about costs being clipped to avoid overflow.  If too many costs
       are clipped, the value of COSTSCALE may need to be decreased in a configuration file (via the -f option).
       If the program prints a warning message about an unexpected increase in the total solution cost, this  is
       an indication that too many costs are clipped.  It is usually okay if just a few costs are clipped.

       In  topography  mode, if the unwrapped result contains too many discontinuities, try increasing the value
       of LAYMINEI or decreasing the  value  of  LAYCONST.   The  former  determines  the  normalized  intensity
       threshold  for  layover,  and  the  latter  is  the  relative layover probability.  If there are too many
       discontinuities running in azimuth, try decreasing the value of AZDZFACTOR, which affects  the  ratio  of
       azimuth  to  range  costs.   If  the  baseline  is  not known, take a guess at it and be sure its sign is
       correct.  Specify the SAR imaging geometry parameters as well as possible.  The defaults assume ERS  data
       with five looks taken in azimuth.

       In  deformation mode, if the unwrapped result contains too many discontinuities, try increasing the value
       of DEFOTHRESHFACTOR or decreasing the value of DEFOCONST.  If the surface displacement varies slowly  and
       true  discontinuities  are  not expected at all, DEFOMAX_CYCLE can be set to zero.  This behavior is also
       invoked with the -s option.  The resulting cost functions will be similar to correlation-weighted L2 cost
       functions, though the former are not necessarily centered on the wrapped gradients.  Congruence is  still
       enforced during rather than after optimization.

       The program can be run in initialize-only (-i) mode for quick down-and-dirty MST or MCF solutions.

SIGNALS

       Once  the  iterative solver has started, snaphu traps the interrupt (INT) and hangup (HUP) signals.  Upon
       receiving an interrupt, for example if the user types Ctrl-C, the program  finishes  a  minor  iteration,
       dumps  its  current  solution  to  the output, and exits.  If a second interrupt is given after the first
       (caught) interrupt, the program exits immediately.  If a hangup signal is received, the program dumps its
       current solution then continues to execute normally.

EXIT STATUS

       Upon successful termination, the program exits with code 0.  Errors result in exit code 1.

FILES

       The following files may be useful for reference, but are not required.  They are included in the  program
       source distribution and may be installed somewhere on the system.

       snaphu.conf.full
              Template configuration file setting all valid input parameters (though some may be commented out).

       snaphu.conf.brief
              General-purpose  template configuration file setting the most important or commonly modified input
              parameters.

       In addition to parameters read from configuration files specified on the command line, default parameters
       may be read from a system-wide configuration file if such a file is named when the program is compiled.

BUGS

       The -w option has not been tested exhaustively.

       Extreme shadow discontinuities (i.e., abrupt elevation drops in increasing range  due  to  cliffs  facing
       away from the radar) are not modeled that well in the cost functions for topography mode.

       Abrupt  changes  in surface reflectivity, such as those of coastlines between bright land and dark water,
       might be misinterpreted as layover and assigned inappropriate costs.

       The algorithm's behavior may be unpredictable if the costs are badly scaled and  excessively  clipped  to
       fit into their short-integer data types.

       There  is  no  error  checking  that ensures that the network node potentials (incost and outcost) do not
       overflow their long-integer data types.

       Automatic flow clipping is built into the MST initialization, but it can give  erratic  results  and  may
       loop infinitely for certain input data sets.  It is consequently turned off by default.

       Dedicated programs for specific Lp objective functions may work better than snaphu in Lp mode.  Note that
       snaphu  enforces  congruence  as  part  of  the  problem formulation, however, not as a post-optimization
       processing step.

REFERENCES

       C. W. Chen and H. A. Zebker, ``Two-dimensional phase unwrapping with use of statistical models  for  cost
       functions in nonlinear optimization,'' Journal of the Optical Society of America A, 18, 338-351 (2001).

       C. W. Chen and H. A. Zebker, ``Network approaches to two-dimensional phase unwrapping: intractability and
       two new algorithms,'' Journal of the Optical Society of America A, 17, 401-414 (2000).

       C.  W.  Chen  and H. A. Zebker, ``Phase unwrapping for large SAR interferograms: Statistical segmentation
       and generalized network models,'' IEEE Transactions on  Geoscience  and  Remote  Sensing,  40,  1709-1719
       (2002).

                                                                                                       snaphu(1)