Performs pattern-matching between position lists related by simple offsets FINDOFF
The results from this routine are labelled position lists (one for each input list) which may be used to complete image registration using the REGISTER routine. The estimated offsets are reported, but REGISTER should be used to get accurate values.
If NDFNAMES is FALSE then the actual names of the position lists should be given. These may not use
wildcards but may be specified using indirection (other CCDPACK position list processing routines will
write the names of their results file into files suitable for use in this manner) the indirection character
is "
"
.
If the logging system has been initialised using CCDSETUP then the value specified there will be
used. Otherwise, the default is "
CCDPACK.LOG"
. [CCDPACK.LOG]
TERMINAL – Send output to the terminal only
LOGFILE – Send output to the logfile only (see the LOGFILE parameter)
BOTH – Send output to both the terminal and the logfile
NEITHER – Produce no output at all
If the logging system has been initialised using CCDSETUP then the value specified there will be
used. Otherwise, the default is "
BOTH"
. [BOTH]
"
CURRENT_LIST"
. The names will be present in the
extension if the positions were located using a CCDPACK application (such as FINDOBJ).
Using this facility allows the transparent propagation of position lists through processing
chains.
If a global value for this parameter has been set using CCDSETUP then that value will be used. [TRUE]
OUTLIST = FILENAME (Write)
OUTLIST .find
If no image names are given (NDFNAMES is FALSE) then if you want to change the extension of the
files (from "
.find"
to "
.off"
in this case) use:
OUTLIST findoff
Or alternatively you can use an explicit list of names. These may use indirection elements as well as names separated by commas.
If the associating position lists with NDFs option has been chosen, an position list will still be written for each input NDF, but for NDFs which were not matched the output list will be empty (will consist only of comment lines).
Incomplete matching would ideally indicate that one, or more, of the input lists are from positions not coincident with the others, in which case it is perfectly legimate to proceed. However, it is equally possible that they have too few positions and have consequently been rejected. [TRUE]
This parameter should therefore be set TRUE if the frames are quite well aligned in their Current coordinate systems (especially in the case that there are many objects and a small overlap), and FALSE if they are not.
This parameter is ignored if USEWCS is FALSE. [FALSE]
If USESET is false, all Set header information is ignored. If NDFNAMES is false, USESET will be ignored. If the input images have no Set headers, or if they have no CCD_SET frame in their WCS components, the setting of USESET will make no difference.
If a global value for this parameter has been set using CCDSETUP then that value will be used. [FALSE]
This parameter is ignored if NDFNAMES is false. [TRUE]
’
’
error=1
outlist=’
.off’
’
data’
outlist=’
.off’
restrict=true ’
data’
are
already approximately aligned in their Current coordinates. Setting the RESTRICT parameter then tells
FINDOFF to consider only objects in the region which overlaps in the Current coordinates of each pair
of frames. This can save a lot of time if there are many objects and a small overlap, but will result in failure
of the program if the images are not translationally aligned reasonably well in the first place. ’
data’
outlist=’
.off’
restrict minmatch=2 maxdisp=20 minsep=30 Position list formats.
CCDPACK supports data in two formats.
CCDPACK format - the first three columns are interpreted as the following.
Column 1: an integer identifier
Column 2: the X position
Column 3: the Y position
The column one value must be an integer and is used to identify positions. In the output position lists from one run of FINDOFF, lines with the same column-1 value in different files represent the same object. In the input position lists column-1 values are ignored. If additional columns are present they must be numeric, and there must be the same number of them in every line. These have no effect on the calculations, but FINDOFF will propagate them to the corresponding lines in the output list.
EXTERNAL format - positions are specified using just an X and a Y entry and no other entries.
In all cases, the coordinates in position lists are pixel coordinates.
Column 1: the X position
Column 2: the Y position
This format is used by KAPPA applications such as CURSOR.
Comments may be included in a file using the characters "
#"
and "
!"
. Columns may be separated by
the use of commas or spaces.
NDF extension items.
If NDFNAMEs is TRUE then the names of the input position lists will be gotten from the item
"
CURRENT_LIST"
of the CCDPACK extension of the input NDFs. On exit this item will be updated
to contain the name of the appropriate output lists.
Which algorithm you should use depends on the number of points your position lists contain and the
expected size of the overlaps between the datasets. Obviously it is much easier to detect two lists with
most of their positions in common. With small overlaps a serious concern is the likelihood of finding a
‘false’
match. False matches must be more likely the larger the datasets and the smaller the
overlap.
The first algorithm (referred to as SLOW) is more careful and is capable of selecting out positions when small overlaps in the data are present (although a level of false detections will always be present) but the process is inherently slow (scaling as n3log2(n)). The second algorithm (referred to as FAST) is an nn process so is much quicker, but requires much better overlapping.
Because the FAST process takes so little CPU time it is better to try this first (without the SLOW process as a backup), only use the SLOW algorithm when you have small datasets and do not expect large areas (numbers of positions) of overlap.
A third algorithm, referred to as SNGL, is used automatically if one or both of the lists in a pair contains only a single object. In this case object matching is trivial and, of course, may easily be in error. SNGL can only be used if the MINMATCH parameter has been set to 1, which should be done with care. The SNGL algorithm may be useful if there really is only one object, correctly identified, in all the frames. If this is not the case, it should only be used when USEWCS is true and MAXDISP is set to a low value, indicating that the alignment of the images in their Current coordinate systems is already fairly accurate.
The global registration process works by forming a graph with each position list at a node and with
connecting edges of weight the number of matched position-pairs. The edge weights may be
modified by a completeness factor which attempts to assess the quality of the match (this is
based on the ratio of the expected number of matches in the overlap region to the actual
number, random matches shouldn’
t return good statistics when compared with genuine
ones). This still leaves a possibility of false matches disrupting any attempt to register the
datasets so a single "
spanning tree"
is chosen (this is a graph which just visits each node
the minimum number of times required to get complete connectivity, no loops allowed)
which has the highest possible number of matched positions (rejecting edges with few
matched positions/low completenesses where possible). This gives a most likely solution to
the offsets between the position lists, rather than the "
best"
solution which could well
include false matches; compare this solution with a median as opposed to a mean. The
final registration is then used to identify all the objects which are the same in all datasets
(using a relaxation method), resulting in labelled position lists which are output for use by
REGISTER.
"
current"
value is the value assigned on the last run of the application. If the
application has not been run then the "
intrinsic"
defaults, as shown in the parameter help,
apply.
Retaining parameter values has the advantage of allowing you to define the default behaviour of the application but does mean that additional care needs to be taken when re-using the application after a break of sometime. The intrinsic default behaviour of the application may be restored by using the RESET keyword on the command line.
Certain parameters (LOGTO, LOGFILE, NDFNAMES and USESET) have global values. These global values will always take precedence, except when an assignment is made on the command line. Global values may be set and reset using the CCDSETUP and CCDCLEAR commands.