pointreg
Automatically register control measures to their point's reference
The main purpose of "pointreg" is to apply a chosen pattern matching algorithm (DEFFILE) to subpixel (or, less commonly, whole pixel) register individual control point coordinates (measures) that have been collected between images and stored within an input control network.
"Pointreg" requires that for every serial number (SN) that exists in the input control network, there is an existing cube file and its associated filename is included within the input list (FROMLIST).
Most often the input control point network (CNET) contains A priori sample and line positions based on the original SPICE of the images. For creating an initial control network, refer to applications such as "autoseed", "seedgrid" and/or "qnet".
Due to many factors, often including inaccuracies with the camera pointing, the control point's initial measure coordinates between images are not registered to one another with subpixel -- or even whole pixel -- accuracy.
The input control network contains certain fields that are evaluated by "pointreg" (POINTS, MEASURES) in order to know whether or not to work on a control point and the associated measures. "Pointreg" in turn adds or updates fields in the output control network that reflect the successes and failures of the pattern matching for each measure.
For every control point within the input network, there are control measures. For each control point there is always one and only one associated reference measure, either set explicitly or chosen at runtime implicitly. Explicit references are chosen and defined as such either manually by users ("qnet") or automatically with an interest operator ("cnetref"). Implicit references are determined when no explicit reference is set for a point. In such a case, the control point will provide its first valid (Ignore=False) measure to act as the reference.
Once "pointreg" has a reference measure for a point, it attempts to register every other measure in the point to that reference location. An implicit reference will then be made explicit, and if any of the registrations succeed, the reference will also be made valid.
With every successful subpixel registration for each control measure, the sample and line values within the output control network are updated with the resulting subpixel coordinates. Note that the reference measure coordinates are "fixed" while the coordinates of the remaining measures are adjusted based on the pattern matching output. The a priori sample and line fields are assigned the original starting input pixel coordinates. Applications such as "qnet", will report the sample and line shift as a result of "pointreg". "Pointreg" will also update the control network with the pattern match coefficient results such as minimum and maximum "pixel z-score" and "goodness of fit".
With every failed subpixel registration for each control measure, the non-reference measure is set to ignored (Ignore=True). If all the measures within a control point are ignored (Ignore=True), then the entire control point is set to ignored (Ignore=True) at the control point level.
Pointreg requires SPICE data and an associated control network, so you may need to run the following ISIS programs on your images beforehand. See Bundle Adjustment for more info.
- spiceinit
- footprintint
- findimageoverlaps
- autoseed
Categories
Related Objects and Documents
Applications
Documents
History
Jacob Danton | 2006-01-11 | Original Version |
Brendan George | 2006-10-02 | Modified call to get current time to use Time class, instead of Application class |
Steven Lambright | 2007-07-23 | Fixed typos, changed category to Control Networks and removed example |
Steven Lambright | 2008-06-23 | Fixed memory leak, progress, updated to work with AutoReg change |
Steven Koechle | 2008-11-13 | Added option to process ignored points (new parameters PROCESSIGNORED and PROCESSVALID), Added FlatFile output parameter. Renamed IGNORED parameter to OUTPUTIGNORED Renamed UNMEASURED parameter to OUTPUTUNMEASURED. |
Steven Koechle | 2008-11-13 | Fixed pointreg to modify ChooserName and DateTime of measures it alters |
Jeannie Walldren | 2008-11-14 | Changed PROCESSIGNORED parameter name to REGISTERIGNOREDONLY. Removed PROCESSVALID parameter since "valid" points are only processed if REGISTERIGNOREDONLY is false. Changed extension filters for CNET, TEMPLATE and TO from (*.txt *.lis *.lst) to *.net, *.def, and *.net, respectively. Fixed bug in program so ignored control points only are included in the output when the OUTPUTIGNORED parameter is selected. And valid points are always included in the output. |
Jeannie Walldren | 2008-11-17 | Added examples to xml file. Fixed bug so that, when registering ignored points, any unmeasured ControlMeasure is omitted if OUTPUTUNMEASURED=no. Added appTest cases for new parameters. |
Steven Koechle | 2008-11-18 | Added PointId to the FlatFile output |
Jeff Anderson | 2008-12-04 | Modified to allow control points to have measures which can't be registered to not be ignored. The point is not ignored so long as at least two measures can be registered. |
Jeannie Walldren | 2008-12-22 | Modified to set successfully registered measures to Ignore=False and Ignore=True otherwise. |
Jeannie Walldren | 2008-12-23 | Modified code that sets point's "Ignore" Keyword to "True" only if it is neither a ground point nor a held point. Modified app test truth files to reflect changes. |
Jeannie Walldren | 2008-12-24 | Modified flatfile parameter to output the lines and samples of the original and registered measurements, rather than the original and reference measurements. Modified app test truth files to reflect changes. |
Steven Lambright | 2009-02-13 | This program now uses CubeManager to more properly balance memory usage and run time. This program should run faster because it is leaving more cubes in memory instead of opening and closing them each time. |
Travis Addair | 2009-08-10 | Auto registration parameters are now placed into the print file. |
Jeannie Walldren | 2010-03-18 | Added REGISTERNEWONLY parameter to allow user to choose to keep previously registered points unchanged. If checked, this will only process new points that do not have ChooserName = "Application pointreg". |
Travis Addair | 2010-04-13 | Template now defaults to a def file containing all keywords with their default values (except for ValidMinimum and ValidMaximum). |
Travis Addair | 2010-04-23 | Parameter REGISTERNEWONLY will now only process new points that have MeasureType = Estimated |
Travis Addair | 2010-04-29 | Groups PointsToRegister and MeasuresToRegister have been condensed into WhatToRegister with radio buttons allowing the user to specify whether to process non-ignored, ignored, or all Control Points, and estimated or all Control Measures. |
Travis Addair | 2010-05-25 | Added a validity test for ensuring newly registered measure has a computable lat-lon position. |
Travis Addair | 2010-11-02 | Binary Control Network conversion |
Steven Lambright | 2011-03-24 | Added ClearCache calls to free up the large amount of cube data in memory and increased the number of simultaneous open cubes to 500. This program should have a much smaller memory footprint. |
Travis Addair | 2011-04-13 | Changed optional Control Network keywords SampleResidual, LineResidual, MinimumPixelZScore, MaximumPixelZScore, and GoodnessOfFit to output nothing in the flat file if not existant, as opposed to 0 or Isis::Null. |
Debbie A. Cook | 2011-06-07 | Changed point types "Ground" to "Fixed" and "Tie" to "Free". |
Travis Addair | 2011-12-14 | Added Validation options and Back-Registration test to detect and remove false positive registrations from the network. |
Travis Addair | 2012-01-05 | Added new columns to flatfile including Filename, SubPixelCorrelation, Eccentricity, AverageResidual, and renamed GoodnessOfFit to WholePixelCorrelation. |
Travis Addair | 2012-04-06 | Added RESTOLERANCE option enabling users to skip validation for registrations whose measurements differ in resolution greater than the specified tolerance. |
Tracie Sucharski | 2014-01-02 | Fixed bug which caused pointreg to crash on Mac OSX platforms because of too many open files. Fixes #1946. |
Parameters
Input
Type | filename |
---|---|
File Mode | input |
Filter | *.txt *.lis *.lst *.list |
Type | filename |
---|---|
File Mode | input |
Filter | *.net |
Type | filename |
---|---|
File Mode | input |
Filter | *.def |
Output
Type | filename |
---|---|
File Mode | output |
Filter | *.net |
Type | filename |
---|---|
File Mode | output |
Internal Default | None |
Filter | *.txt *.csv |
Type | boolean |
---|---|
Default | True |
Type | boolean |
---|---|
Default | True |
WhatToRegister
Type | string | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Default | NONIGNORED | ||||||||||||
Option List: |
|
Type | string | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
Default | ALL | |||||||||
Option List: |
|
Validation
Type | string | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Default | SKIP | ||||||||||||
Option List: |
|
Type | boolean |
---|---|
Default | True |
Type | integer |
---|---|
Internal Default | WindowSize |
Differences in image resolution can often lead to poor registrations. Because validation is itself a registration process, it can also lead to poor validations. When considering a registration to be validated, if the two measurements differ in image resolution by more than this tolerance (in meters per pixel), then the validation will be skipped. By default, this value is set to 5.0 meters per pixel.
Note that skipped registrations will be reported to the FALSEPOSITIVES report, but will not be reverted when the REVERT option is enabled.
Type | double |
---|---|
Default | 5.0 |
It should be noted that any shifting of measures that occurs during validation is for testing purposes only. The previous registration will never be overridden by the results of these tests.
Type | double |
---|---|
Default | 1.0 |
Type | filename |
---|---|
File Mode | output |
Internal Default | None |
Filter | *.txt *.csv |
Example 1
Default registration settings include ignored and unmeasured points in the output control net.
Command Line
pointreg
fromlist=fileList.lis
cnet=controlNet.net
deffile=autoRegTemplate.def
onet=outputIgnoredAndUnmeasured.net
flatfile=outputIgnoredAndUnmeasured.txt
GUI Screenshot
Example GUI
pointreg GUIScreen shot of GUI with parameters filled in to perform point registration that includes ignored control points and unmeasured control measures in the output but does not register the ignored points.
Data Files
Links open in a new window.View Input File List | Input text file containing a list of all files in the control network. All cubes in this list should be located in the same directory that the application is run in. |
---|---|
View Entire Input ControlNet | Input text file containing the initial control network. There are 10 control points, one is passed in as an ignored point and two are unmeasured. |
View Auto Registration Template | Input auto registration template file in PVL format containing the registration algorithm information to be used to register the points. |
View resulting ControlNet | Output control network file containing the registered information. Notice that all ignored points and unmeasured control measures are kept in this network. |
View resulting flat file | Output flat file containing the data collected from the pointreg application. |
View resulting application log. | This log is output to the screeen and contains a count of the following: "ignore" points upon completion; validated, registered, unregistered and unmeasured ControlMeasures; successful and failed registrations; PatternChip and SurfaceModel statistics. |
Example 2
Register "ignored" points in a control network and include ignored and unmeasured points in the output control net.
Command Line
pointreg
fromlist=fileList.lis
cnet=controlNet.net
deffile=autoRegTemplate.def
onet=outputIgnoredAndUnmeasuredRegIgnored.net
flatfile=outputIgnoredAndUnmeasuredRegIgnored.txt
points=ignored
GUI Screenshot
Example GUI
pointreg GUIScreen shot of GUI with parameters filled in to perform ignored point registration that includes ignored control points and unmeasured control measures in the output but does not register the "valid" points.
Data Files
Links open in a new window.View Input File List | Input text file containing a list of all files in the control network. All cubes in this list should be located in the same directory that the application is run in. |
---|---|
View Entire Input ControlNet | Input text file containing the initial control network. There are 10 control points, one is passed in as an ignored point and two are unmeasured. |
View Auto Registration Template | Input auto registration template file in PVL format containing the registration algorithm information to be used to register the points. |
View resulting ControlNet | Output control network file containing the registered information. Notice that all ignored points and unmeasured control measures are kept in this network. |
View resulting flat file | Output flat file containing the data collected from the pointreg application. |
View resulting application log. | This log is output to the screeen and contains a count of the following: "ignore" points upon completion; validated, registered, unregistered and unmeasured ControlMeasures; successful and failed registrations; PatternChip and SurfaceModel statistics. |
Example 3
Register "valid" points in a control network and omit ignored points and unmeasured measures from the output control net.
Command Line
pointreg
fromlist=fileList.lis
cnet=controlNet.net
deffile=autoRegTemplate.def
onet=discardIgnoredAndUnmeasured.net
flatfile=discardIgnoredAndUnmeasured.txt
outputignored=no
outputfailed=no
GUI Screenshot
Example GUI
pointreg GUIScreen shot of GUI with parameters filled in to perform point registration that omits ignored control points and unmeasured control measures from the output.
Data Files
Links open in a new window.View Input File List | Input text file containing a list of all files in the control network. All cubes in this list should be located in the same directory that the application is run in. |
---|---|
View Entire Input ControlNet | Input text file containing the initial control network. There are 10 control points, one is passed in as an ignored point and two are unmeasured. |
View Auto Registration Template | Input auto registration template file in PVL format containing the registration algorithm information to be used to register the points. |
View resulting ControlNet | Output control network file containing the registered information. Notice that all ignored points and unmeasured control measures are omitted from this network. |
View resulting flat file | Output flat file containing the data collected from the pointreg application. |
View resulting application log. | This log is output to the screeen and contains a count of the following: "ignore" points upon completion; validated, registered, unregistered and unmeasured ControlMeasures; successful and failed registrations; PatternChip and SurfaceModel statistics. |
Example 4
Register "ignored" points in a control network and omit ignored points and failed measures the output control net.
Command Line
pointreg
fromlist=fileList.lis
cnet=controlNet.net
deffile=autoRegTemplate.def
onet=discardIgnoredAndUnmeasuredRegIgnored.net
flatfile=discardIgnoredAndUnmeasuredRegIgnored.txt
outputignored=no
outputfailed=no
points=ignored
GUI Screenshot
Example GUI
pointreg GUIScreen shot of GUI with parameters filled in to perform ignored point registration that omits ignored control points and unmeasured control measures from the output.
Data Files
Links open in a new window.View Input File List | Input text file containing a list of all files in the control network. All cubes in this list should be located in the same directory that the application is run in. |
---|---|
View Entire Input ControlNet | Input text file containing the initial control network. There are 10 control points, one is passed in as an ignored point and two are unmeasured. |
View Auto Registration Template | Input auto registration template file in PVL format containing the registration algorithm information to be used to register the points. |
View resulting ControlNet | Output control network file containing the registered information. Notice that all ignored points and unmeasured control measures are omitted from this network. |
View resulting flat file | Output flat file containing the data collected from the pointreg application. |
View resulting application log. | This log is output to the screeen and contains a count of the following: "ignore" points upon completion; validated, registered, unregistered and unmeasured ControlMeasures; successful and failed registrations; PatternChip and SurfaceModel statistics. |
Example 5
Register new "candidate" measures in a control network only and leave previously processed as they are in the output control net.
Command Line
pointreg
fromlist=fileList2.lis
cnet=controlNet2.net
deffile=autoRegTemplate.def
onet=registerNewOnly.net
flatfile=registerNewOnly.txt
measures=candidates
GUI Screenshot
Example GUI
pointreg GUIScreen shot of GUI with parameters filled in to perform new measure registration only.
Data Files
Links open in a new window.View Input File List | Input text file containing a list of all files in the control network. All cubes in this list should be located in the same directory that the application is run in. |
---|---|
View Entire Input ControlNet | Input text file containing the initial control network. There are 10 control points, each with the first as reference, the second previously run through pointreg, and the third added with cnetadd. |
View Auto Registration Template | Input auto registration template file in PVL format containing the registration algorithm information to be used to register the points. |
View resulting ControlNet | Output control network file containing the registered information. Notice that all middle points have not been changed, but the third points have now been registered by pointreg. |
View resulting flat file | Output flat file containing the data collected from the pointreg application. |
View resulting application log. | This log is output to the screeen and contains a count of the following: "ignore" points upon completion; validated, registered, unregistered and unmeasured ControlMeasures; successful and failed registrations; PatternChip and SurfaceModel statistics. |