Content-type: text/html Manpage of PSLAM

PSLAM

Section: PSLAM stereo pipeline (1)
Updated: 25th May 2000
Index Return to Main Contents
 

NAME

pslam - stereo match a pair of images using sheet growing adaptive least squares

 

SYNOPSIS

pslam [ -verbose ][ -usage ][ -argf <argument file> ][ -growth_protection <retrys> ][ -nice <0-20> ][ -slots ][ -slotinfo ][ -compressed_images ][ -geometry_feedback precision limit ][ -lbuf ][ -conjugate_point ][ -disparity_vector ][ -blimit_ratio fail_percent ][ -ncc ][ -min_match_rate match_rate ][ -no_patch_shuffling ][ -auto_patch [ -precstat_limits ] | [ -ld_limit lower path dilation limit ][ -ud_limit upper patch dilation limit ]][ -auto_foveate ][ -trust_seeds ][ -pass_all_seeds ][ -save_rejected_seeds ][ -seed_scale seedpoint scaling factor [ -show_match_count ]] -conjugate_point|-disparity_vector ][ -output_scale output point scaling factor ][ -ref_output_offset X offset Y offset ][ -nref_output_offset X offset Y offset ][ -grid <start_x> <n_x> <step_x> <start_y> <step_y> <inc_y> <patch radius> ][ -initial_distortion <s11> <s12> <s21> <s22> ][ -termination_remapping <dx> <dy> <ds11> <ds12> <ds21> <ds22> ][ -pthresh <precision threshold> ][ -maxiter <iterations> ][ -image_names <left [compressed] byte HIPS image> <right [compressed] byte HIPS image> ][ -clean_queue ][ -shortest_cleaned_queue queuesize ][[ -d_mag_thresh disparity magnitude threshold ][ -d_angle_thresh disparity angle threshold ]] | [[ -gdc global disparity radius ][ -gd_m_thresh global disparity magnitude (%) threshold ][ -gd_a_thresh global disparity angular threshold ]][ -cache_mode lines in MVM image cache [ -done_cache_mode ]][ -prior_q_limit maximum seeds inserted into priority queues ][ -n_priority_queues number of priority queues ][ -queue_focus_migratary ][ -queue_focus_sedentary ][ -sl ][ -image_names ref_image, nref_image ][ -swapfile swapfile name [ -checkperiod matches ] ][ -restart swapfile name ] < <ASCII list of seedpoints> > <ASCII list of matches> >& <status log>
 

SIGNALS



SIGUSR2 (psrp server process interation request)

 

DESCRIPTION

pslam is a area correlation stereo matching algorithm which matches similar texture in a pair of images, generating a dense disparity map. The algorithm identifies conjugate points using the adaptive least squares method described by Gruen [Gruen, 1985]. These are then used to intiate the growth of a dense sheet of conjugate points using the sheet growing technique proposed by Otto and Chau [Otto and Chau, 1989] together with the Gruen ALSC technique. Because of the limited convergence radius of the ALSC algorithm, sheet growing is initiated by supllying a small number of seed points. These may be either manually measured or generated automatically using the cascade(1) pyramidal autoseeding harness. The format of the seed points is

left_y, left_x, right_y, right_x

It should be noted that the conjugate point co-ordinates now conform to the line and sample convention used by the O'Neill-Dowman SPOT-1 camera model spot1m(1) The earlier gruens(1) algorithm uses a reversed co-ordinate set:

left_x, left_y, right_x right_y

The output produced by the stereo matcher is a list of conjugate points. The form of the output line is

left_y, left_x, right_y, right_x, s11, s12, s21, s22, iters, rg, prec

left_y and left_x are the co-ordinates of the conjugate point in the left [reference] image. right_Y and right_x are the co-ordinates of the conjugate point in the right [non-reference] image if the matcher is working in absolute mode. In disparity mode, they are the x and y disparities between the two images. The next four fields, s11, s12, s21, s22 give the local shaping information, that is a measure of the right image distortion about the conjugate point. iter gives the number of iterations to convergence, rg gives the radiometric gain between the two images and prec gives the Kendall-tau precision associatd with the match.

 

OPTIONS

-verbose Be verbose and tell the user what is happening. Log output goes to stdout

-usage prints a usage string and then exits. ,br

-slots prints pups(3) library dependencies in short format for this program and then exits.

-slotinfo prints pups(3) library dependencies in long format for this program and then exits.

-version prints current program version number then then exits.

-argf <argument file> reads the command tail from and argument file. The data format for the argument file is:

# ... optional comment ...
-argflag <parameter list>

# ... optional comment ...
-argflag <parameter list>

-nice <nice level> sets the scheduling level of the program. As this code is CPU intensive nice 10 to nice 19 is recommended to avoid falling foul of the system administrator or be heckled by other users!

-growth_protection <retrys> causes the system to retry an sbrk(3) call up to retrys times. This option permits the program to wait until the core that it requires is available rather than simply exiting if sbrk(3) fails.

-min_match_rate match_rate tells pslam(1) to impose a minimum match rate. If no theshold is specified a default minimum match rate of 50 points per second is used. Otherwise, a match rate of match_rate points per second is used. If the current patch radius exceed the nominal radius and the match rate falls below match_rate points per second, the queue focus is switched to the next priority queue. If all queues are empty, or have match rates below the user enforced limit, pslam(1) exits. Note if the host running pslam(1) supports a /proc filesystem, match_rate is scaled to take load average into account when computing the minimum match rate threshold.

-no_patch_shuffling disables patch shuffling which is used by both Kendall-tau and cross corrleation correlators to estimate the degree of random correlation between patches. Defaults to TRUE, but certain forms of imagery (e.g. SAR amplitude imagery) may be processed faster if patch shuffling is disabled.

-blimit_ratio fail_percent tells pslam(1) the percentage of pixels within a pair patches to be matched which can have the no_data value and matching still occur. This option is intended to stop spurious matching off the edge of large scale objects captured in vision cells. Defaults to 10%.

-ncc specifies that cross corellation and opposed to Kendall-tau correlation should be used to compare image patches.

-geometry_feedback precision_limit tells pslam(1) to use skewness (misclosure) data (from the camera model) to compute precision. This is used to set up the following precion measure: if (skewness > prec_limit) then prec = 1.0; if (skewness < prec_limit) then prec = skewness/prec_limit.

-conjugate_point | -disparity_mode selects whether the matcher operates in absolute or disparity mode. In absolute mode right_y and right_x are the co-ordinates of the conjugate point in the right hand image. In disparity mode they are the y and x disparities relative to the left hand image.

-auto_patch Enables automatic patch dilation. With this option enabled the size of the patch correlated is adaptively adjusted using the precision parameter. This permits the algorithm to cope with areas of the imagery to be matched containing noise.

-precstat_limits tells pslam(1) to use the cumulative mean precision and its average deviation to control patch resizing. If the current precision is greater than the cumulative mean by two average deviations the size of the patch is incremented; if it is less than the cumulative mean by two standard deviations, the patch size is decremented. This option and the -ld_limit and -ud_limit options are mutually exclusive.

-ld_limit Sets the precision value below which the correlation patch size is reduced (dilated down). Defaults to (0.35). Note this command option is only accepted if -auto_patch is selected.

-ud_limit Sets the precision above which the correlation patch is increased in size (dilated up). Defaults to 0.60. Note this command option is only accepted if -auto_patch is selected.

-auto_foveate Tells the alogrithm to automatically foveate (stretch) the correlated image patches. The magnitude of the stretch is a function of the predicted precsions measure. This option is used in conjunction with the -auto_patch option to enhance the performance of the algorithm in noisy regions of the imagery.

-trust_seeds tells pslam(1) to trust seed points. If the seed points are trusted, the stereo matcher will insert them into the priority queue without testing whether they match first. The default is not to trust seed points.

-grid <start_x> <nx> <step x> <start_y> <ny> <step_y> determines the size, position and density of the conjugate point sheet generated. start_x and start_y are the co-ordinates of the start of the match grid, nx and ny are the [maximum] number of conjugates in the match grid and step_x and step_y are the number of pixels between successive conjugate points in the match grid. It is recommended that nx and ny of 4 or 8 is used with this version of the algorithm. The values assigned to the other parameters is left to the discretion of the programmer.

-initial_distortion <s11> <s12> <s21> <s22> is used to assign an intial values to the matrix elements of the shaping matrix. This may be useful if the mean distortion expected between the left and right images is known. The inbuilt defaults are s11=1.0, s12=0.0, s21=0.0, s22=1.0. It is recommended that these defaults are not changed.

-maxiter <iterations> set the maximum number of iterations. Points taking more iterations than this to relax are assumed to be in error and are discarded. Current default value is 20.

-termination remapping <dx> <dy> <ds11> <ds12> <ds21> <ds22> is used to set the termination value associated with each of the distortion parameters. The defaults are 0.1, 0.1, 0.01, 0.01, 0.01, 0.01 respectively. If all distortion parameters fall under these thresholds then the conjugate point is assumed to be located.

-pthresh <precision threshold> sets the precision threshold parameter. This uses the Kendall tau measure and therefore lies between 0.0 [no matches accepted] to 1.0 [every match accepted]. The default value for this parameter is 0.75. A value of precision threshold between 0.6 and 0.8 is recommended.

-compressed_images uses the pups(3) utilities to transparently de-compress a HIPS files compressed using compress(1) before they are loaded.

-write_rejected_seeds <file name> saves rejected seeds to the file file_name for subsequent analysis.

-seed_scale <seedpoint scaling factor> tells pslam(1) to scale input seeds using the seedpoint scaling factor given. This option is intended to be used by stereomatching harnesses such as the cascade(1)/cheops(1) autoseeder and the itg(1) automated stereo DTM production harness. Defaults to 1 (do not scale input seeds).

-show_match_count tells pslam(1) to output the number of points matched. This option is intended to be used in conjunction with automatic stereomatching harnesses such as the cascade(1)/cheops(1) autoseeder and the itg(1) automated stereo DTM production harness. Defaults to FALSE (do not print number of points matched).

-clean_queue tells the algorithm to invoke a queue cleaning thread. This searches the priority queue for points which are surrounded by 4 neighbours (and therefore cannot be grown from) and deletes them releasing queue memory for points which can be grown from.

-shortest_cleaned_queue queuesize specifies the queue size above which the queue cleaner thread become active. Note this option is only accepted if the -clean_queue option is selected. Defaults to 500.

-gdc gd radius sets the size of the neighbourhood for computing the local disparity constraint. Default to 2 (neighbourhood contains 25 disparities).

-gd_m_thresh global disparity magnitude theshold specifies by how many percent a disparity vector can vary in length from that of its neighbours within a region of radius gdc radius and still be considered to be a correct match.

-B -gd_a_thresh global disparity angular threshold specifies the maximum amount (in degrees) the direction of a disparity vector can vary from that of its neighbours within a region of radius gdc radius and still be considered to be a correct match.

-d_mag_thresh disparity magnitude threshold specifies how much the magnitude of the disprity vector of a relaxed point can differ from that of its predictor point and still be considered to be a correct match. Default range 0.5 - 2.0. This option only takes effect if global disparity constraint is disabled

-d_angle_thresh disparity angular threshold specifies how much the angle of the disparity vector of a relaxed point can differ from that of its predictor and still be considered a correct match. Defaults to 2.5 degrees. This option only takes effect if global disparity constraint is disabled

-cache_mode lines in MVM image cache specifies the number of lines which are cached into the process address space when operating in MVM paged mode. This option has been added to permit the stereomatching of large images on small memory machines. Defaults to FALSE (no caching).

-done_cache_mode tells pslam(1) to cache the done array (which records points which are matched). This option is intended to facilitate efficient memory management when matching very large images.

-prior_q_limit maximum seeds specifies the maximum number of seeds to be inserted onto each of the priority queues. Defaults to 50.

-n_priority_queues number of priority queues specifies the number of priority queues to be used. Uising multiple priority queues improves the throughput of the algorithm when memory resources are limited. For a 32Mb machine matching SPOT-1 PA images on a 4 pixel grid, 8-16 priority queues gives an adequate throughput when the algorithm is being operated in MVM cached mode. Defaults to 1.

-queue_focus_migratory Permits the correlation focus to wander over multiple queues as dictated by the best first sheet growing strategy. Note this option is mutually exclusive to -queue_focus_sedentary.

-queue_focus_sedentary Keeps the correlation focus within the current queue until the queue has emptied. This should limit the memory resources required for matching even further. Formally this is very similar to the geometric parallelism introduced by Holden et al at UCL in their Transputer implementation of the UCL prototypical stereo-matcher. Note this option is mutually exclusive to -queue_focus_migratory.

-sl sets sample and line mode for output conjugate data (as the UCL gruens(1) algorithm. Defaults to line and sample (as spot1m(1).

-gdc global disparity radius in match grid units global disparity limit in degrees tells pslam(1) to checked matched points using a simple global disparity contraint which contrains the directions nad magnitudes of all disparity vectors in the contraint tile (of radius global disparity radius to be within global disparity limit degrees of each other. At present this contraint makes use of the fact that the first entries in the global disparity checking array are liable to be correct (because of the best first nature of the sheet growing process). This may still allow some blunder to be propagated to the camera model and hence to the Kriger.
The disparity angular constraint is set via the -gd_a_thresh angle threshold (in degrees) flag, and the (percent magnitude) threshold via the -gd_s_thresh magnitude threshold (percent) flag. These default to 5 degrees and 50% respectively, and are only valid command tail options if the -gdc flag has been previously set.

-output_scale scale factor tells pslam(1) to scale output stereo points by the factor scale factor. Defaults to 1.0.

-ref_output_offset X offset, Y offset tells pslam(1) to offset the X and Y co-ordinates (in the reference image) by X offset and Y offset respectively. Defaults to [0.0] (no offset).

-nref_output_offset X offset, Y offset tells pslam(1) to offset the X and Y co-ordinates (in the non reference image) by X offset and Y offset respectively. Defaults to [0.0] (no offset).

-image_names ref_image, nref_image specifies the images which are to be matched.

-statefile statefile name tells pslam(1) to checkpoint itself. The state of the computation is written to the file statefile name. Checkpointing enables a computation to be recovered if the machine on which it is running crashes. It may also be used if the computation is migrated to a machine with more resources.

-checkperiod matches tells pslam(1) how many matches to process before the statefile is updated. Defaults to 8192 matches. This option has no effect unless the -statefile option has been specified.

-restart statefile name tells pslam(1) to restart a computation whose state is stored in statefile.

 

COMPILATION OPTIONS

-DUSE_GEOMTRY_FEEDBACK tells compiler to use precision measure which is based on skewness (misclosure) read from camera model

-DDEBUG tell compiler to switch on debugging code.

-DDUMP_PATCHES tell compiler to enable patch dumping code. This dumps the patches associated with each image to HIPS byte files for subsequent analysis

-DNO_NET tell compiler not to compile network [TCP/IP] specific code from pups(3) libraries.

 

LIBRARIES

pslam(1) makes use of the pups(3) libraries.

 

SIGNALS

SIGUSR2 is used to support PSRP event handling

 

PSRP INTERACTIVITY

Supports interactive querying while running using Process Status Request Protocol [PSRP], see psrp(1).

 

BUGS

Linear distortion model does not cope well with large variations in relief.

 

COPYRIGHT

Program: (C) 2000 M.A. O'Neill, Laser-Scan Ltd, Cambridge.

Libraries: (C) 1985-2000 M.A. O'Neill

 

PROGRAMMER

M.A. O'Neill, Digital Vision.

 

SEE ALSO

cheops(1), cascade(1), Xstereotool(1), Xhips(1), gruens(1), pups(3)


 

Index

NAME
SYNOPSIS
SIGNALS
DESCRIPTION
OPTIONS
COMPILATION OPTIONS
LIBRARIES
SIGNALS
PSRP INTERACTIVITY
BUGS
COPYRIGHT
PROGRAMMER
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 10:23:07 GMT, May 07, 2001