This is the command snaphu that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator
PROGRAM:
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.
Use snaphu online using onworks.net services