cloudvec, cloudvec2 - Cloud Motion Vectors generation, feature-tracking with cross-correlation.

SYNOPSIS

cloudvec  [ parameter=value ]  [ inputfile_1 inputfile_2 inputfile_3 outputfile ]
cloudvec2  [ parameter=value ]  [ inputfile_1 inputfile_2 inputfile_3 outputfile ]
Parameters are: variablesbox_size, max_offsetgrid_space, check_rangefeature_range, percent_within, min_strength, min_distancemax_wind_speed,min_vec_space, valid_length, valid_angle, valid_QI, knot_units, occlude_levels, levels_only,scale_factor.

DESCRIPTION

cloudvec (and cloudvec2) generates cloud motion vectors using spectral techniques (cross-correlation) to track image features found in the inputfile triplet. Output vectors are stored with appropriate units, either knots or meters/second. A sequence of three images serves as the input. All three input images must be registered to the same background master area (ie. same dimensions and geographic location). cloudvec is based on imcorr, with the added feature that three input images (two successive image pairs ) are processed, in sequence, for mutual validation of output vectors.

cloudvec correlates neighborhoods from the reference image (inputfile_2) with slightly larger corresponding neighborhoods in the search images (inputfile_1) and  (inputfile_3) and saves mutually validated average velocity vectors in the outfile. Vectors are relevent to the motion of features in the reference (inputfile_2) input image relative to the two search images (inputfile_1, inputfile_3).

cloudvec2 differs from cloudvec in that the reference image is set to inputfile_1 for the first pair of input datasets, to inputfile_2 for the second pair of input datasets, always generating vectors for features tracked forward in time, while cloudvec maintains inputfile_2 as the reference file throughout processing, to emphasize tracking individual features forwards and backwards in time. This difference permits cloudvec2 to reuse the second input-dataset-pair's validation vectors, for subsequent processing. cloudvec2 always checks inputfile_1 for the presence of reuseable input vectors, stored as variables vec_reuse_north and vec_reuse_east, inherited from an earlier cloudvec2 processing involving the first pair of input datasets (the preceding time-interval). With reuseability of vectors, processing time is cut in half, gaining significant performance and time to increase vector coverage. To take advantage of this reusability, inputfile_1 must contain variables  vec_reuse_north and vec_reuse_east, i.e.  it should essentially be the output dataset generated by cloudvec2 from the vector-generation of the previous time-interval processing. cloudvec2 writes out vec_reuse_north and vec_reuse_east variables containing vectors for the second pair of input datasets (images).

The correlation neighborhoods are specified by the box_size and max_offset parameters. The reference neighborhood is the inner box; the search neighborhood is the outer box:

                     <- box size width + 2*max sample offset ->
                    +------------------------------------------+
           ^        |                                          |
           |        |          <-- box size width -->          |
           |        |         +----------------------+         |
           |        |         |          ^           |         |
           |        |         |          |           |         |
 box size height +  |         |          |           |         |
 2*max line offset  |         |   box size height    |         |
           |        |         |          |           |         |
           |        |         |          |           |         |
           |        |         |          v           |         |
           |        |         +----------------------+         |
           |        |                                          |
           v        |                                          |
                    +------------------------------------------+
The cloud motion vectors which comprise the cloudvec output product are described by values in the output variables:
latvalues, lonvalues, vec_north, vec_east, corr-strength, level.

These values indicate that the (latvalues, lonvalues) point of the reference image (and its neighborhood) was moving in a direction described by the vector [vec_east, vec_north] (knots or m/s). Values provided by the level array are the average data values for the specified position, for example the average temperature if an IR brightness temperature channel is used for the cross-correlations. level values permit screening of vectors which result from feature occlusion rather than feature motion, for example when moving high level clouds occlude low level clouds. This screening is enabled with the occlude_levels parameter, but requires that multiple-level masked cloud-height  input data is used for the cross-correlations. The correlation strength values in Corr-strength are computed as variable:          (peak corr - base corr)/sqrt(corr variance) -2.
cloudvec ignores offset vectors where corr-strength is less than the user-specified parameter min_strength. Also, cloudvec can optionally ignore reference neighborhoods containing less than a specified percentage of feature data.

Note that output variables vec_north, vec_east, corr-strength, level are saved as 2-dimensional variables if more than one input variable was
specified for vector generation. To access vectors for any of the individual input variables, it is necessary to burst these 2-dimensional variables first.
If only one input variable is specified, vec_north, vec_east, corr-strength, level are saved as 1-dimensional output variables.

Two optional parameters max_wind_speed and min_vec_space, are provided, which permit automated determination of box_size, max_offset, and grid_space parameter defaults, based upon expected coverage of the output vectors. max_wind_speed determines the desired largest detectable speed, in knots, thereby determining the largest required offset for feature searching. min_vec_space determines the desired minimum separation distance, in km, between all adjacent vectors, thereby determining the density of output vectors.

If  valid_QI=0.0 (default) is selected, validation of output vectors is parametrized by length and orientation thresholds specified by the parameters valid_length, valid_angle. These specify tolerances for deviation of corresponding vectors derived from the successive image pairs. Vectors whose differences exceed the specified length and orientation (angle) thresholds fail the validation test, and are excluded from the output. These tests are the difference tests:
                                                         | length1 - length2 | <= valid_length  ,                   | angle1 - angle2 | <= valid_angle  .
 

If  valid_QI>0.0  is selected, validation of output vectors is parametrized by the quality indicator (QI) threshold specified with the parameter  valid_QI.This value specifies tolerances for the QI corresponding to vectors composited from the successive image pairs. Vectors whose QI do not exceed the specified QI  threshold fail the validation test, and are excluded from the output. This test is defined using three separate tests, for directional quality, speed quality, and vector quality, always included in the output dataset as variables dir_quality, speed_quality, vec_quality, along with the final QI_quality:

                  dir_quality       = 1. -  (  tanh( |  angle1 - angle2   | / ( 10.+ 20.*exp(-( length1 + length2 )/20.)) ) )^2   ,
                  speed_quality = 1. -  (  tanh( | length1 - length2 | / ( 0.1*( length1 + length2 ) + 1.0 ) ) )^2   ,
                  vec_quality     = 1. -  (  tanh( | length1 - length2 | / ( 0.1*(  sqrt(length1^2 + length2^2)  ) + 1.0 ) ) )^2   ,

                  QI_quality = (vec_quality + dir_quality + speed_quality) / 3.     .

These quality tests are adpated from  (disregarding spatial and forecast tests) :

 Holmlund K.,  1998: The Utilization of Statistical Properties of Satellite-Derived
Atmospheric Motion Vectors to Derive Quality Indicators, Weather Forecasting, 13, 1093-1104.

 

 
 
 

Validated output vectors are comprised of time-weight averaged validated vector pairs.

PARAMETERS

variables
Input image variable names, which must exist in all three input datasets. Each input variable will result in a set of vectors specific to that variable. The complete set of vectors with components [vec_east, vec_north] are stored in two 2-dimensional output datasets named vec_east, vec_north, with the second dimension corresponding to the input variables.
There is no default.
box_size
The number of lines and samples in the reference neighborhood correlation box. The answer is two numbers between 8 and 256. The default depends on min_vec_space. Powers of two are recommended.
max_offset
The maximum posible line and sample offsets between the reference and the search images.
The answer is two numbers between 0 and 256. The default depends on max_wind_speed.
grid_space
The line and sample steps between the centers of correlation boxes. The answer is two numbers between 0 and 256. The default is the box_size.
max_wind_speed
             OPTIONAL. The maximum detectable cloud-motion speed, in knots. This value affects the default max_offset
             value, which however remains adjustable. The default is max_wind_speed=200 knots.
min_vec_space
             OPTIONAL. The minimum acceptable spacing, in km, between generated vectors' positions. This value affects the
             default box_size and grid_space values, which however remain adjustable. The default is min_vec_spacing=160 km.
check_range
Indicates whether or not to check reference neighborhoods for a minimum percentage of feature data. Valid responses are yes or no. The default is check_range=no.
feature_range
The minimum and maximum values defining the range of feature data. There is no default.
percent_within
Ignore reference neighborhoods where the percentage of feature data is less than this value. The answer must be in the range [0, 100]. The default is percent_within=10.
min_strength
Minimum correlation strength. All offset vectors with correlation strength less than this value are ignored. The default is min_strength=2.
min_distance
Minimum offset vector length in pixels. All offset vectors with length less than this value are ignored. The default is min_distance=0, which means don't ignore any offset vectors, no matter how short.
levels_only
             OPTIONAL. Disables generation  of  vectors,  permitting level  values  to  be extracted from image reference boxes

             without the usual feature detection computations.  This feature is useful as an optimization, when levels asso-
             ciated with different variables are needed, but vectors  have   already   been   precomputed.
             The  default  is levels_only=no.

knot_units
             Allows for output vectors' speed units selection from knots and meters per second (m/s).
             knot_units=no disables knot output units and selects the alternative m/s.
             The default is knot_units=yes.
 

valid_length
Maximum tolerance for vector magnitude (speed) difference when validating vectors. The default is valid_length=20.0 km/h
valid_angle
Maximum tolerance for vector direction difference (angle between vectors) when validating vectors. The default is valid_angle=20.0 degrees.
 
valid_QI
Minimum tolerance for vector quality (quality indicator, QI) QI_quality  when validating vectors. Valid QI values are in the range 0.0 to 1.0 .
The default is valid_QI=0.0 .
occlude_levels

             Enables/disable screening of duplicate vectors between cloud  levels.  This  feature  is recommended only when
             using cloud-top altitude data as input,  otherwise  the screening  may be incorrect. This feature is irrelevent
             when only one input variable is specified.  The default is  occlude_levels=no.

scale_factor
             Scale factor for  rescaling output vector magnitudes, to enhance displaying of vectors. The default is scale_factor=1.0.
 
 

EXAMPLE

In the following example, variable ch1_cloud is the input variable for a sequence consisting of three consecutive images. The single validated output vector is written to g8.97140.xxxx.test.
% cloudvec


in/out files   : char(255) ?  g8.97140.0102.test g8.97140.0132.test g8.97140.0202.test g8.97140.xxxx.test


variable       : char(255) ? ch1_cloud


box_size       : int (  2) ? [32 32]


max_offset     : int (  2) ? [16 16]


grid_space     : int (  2) ? [32 32]
check_range    : char(  3) ? [no]
min_strength   : real      ? [2] 0
min_distance   : real      ? [0]
valid_length   : real      ? [20] 60
valid_angle    : real      ? [30] 50
valid_QI       : real      ? [0]
knot_units     : char(  3) ? [yes]
occlude_levels : char(  3) ? [no] 


Reference box: 32 x 32


Searching box: 64 x 64


Maximum offset: 16.00 16.00


Nominal offset: 16.00 16.00


g8.97140.0102.test: loading ch1_cloud [300 x 200]...


g8.97140.0132.test: loading ch1_cloud [300 x 200]...


Reference boxes with line offset 16


Reference boxes with line offset 48


Reference boxes with line offset 80


Reference boxes with line offset 112


Reference boxes with line offset 144


g8.97140.0202.test: loading ch1_cloud [300 x 200]...


Reference boxes with line offset 16


Reference boxes with line offset 48


Reference boxes with line offset 80


Reference boxes with line offset 112


Reference boxes with line offset 144


g8.97140.xxxx.test: saving 1 points ...
%

SEE ALSO

imcorr, cloudproducts, burst

Last Update: $Date: 2000/11/20 19:02:03 $