Home

User Documentation

Getting Started
Learn More
Explore in Detail
Get Inspired

Contributor Documentation

Getting Started
Learn More
Explore in Detail
Get Inspired

Quick Links

Software Manual
AstroDiscuss
GitHub
API Reference

Documentation Versions


ISIS 2

Documentation
Tutorials
Technical Documents
USGS

ISIS Application Documentation


deltack

Standard View | TOC | Home

Update camera pointing for a single image

Description
Categories
Groups
History


Description

deltack can be used to correct most instances of problems with camera attitude. It adjusts camera orientation in the labels of a single Isis cube (resection). In order for deltack to work properly, the input cube must have been initialized with spiceinit using ATTACH="YES".

BUNDLE Method

Like jigsaw, deltack works on both framing cameras and line scanners using the BUNDLE method. The user must supply a latitude/longitude for at least one sample/line coordinate in the image. Angles 1 and 2 of the camera orientation stored in the cube labels will be adjusted to align the coordinate with the entered latitude/longitude. To solve for all three camera angles, select the TWIST option. A second coordinate point and desired latitude/longitude must be entered if the TWIST option is used. deltack will adjust the camera orientation to align both points with their corresponding latitudes/longitudes with minimal residuals in sample and line.

The camera pointing is updated using an iterative least-squares bundle adjustment. The number of iterations (MAXIT)and tolerance (SIGMA0) for convergence are input parameters to deltack. Solving for two angles only is similar to a translation of the image in sample and line. Solving for the twist as well will result in both a translation and a rotation.

deltack creates a set of two output files for analyzing the results. BUNDLEOUT.TXT provides an overall summary of the resection. It lists the user input parameters selected and tables of statistics for both the image and the point(s). RESIDUALS.CSV provides a table of the measured image coordinates and the final sample, line, and overall residuals in both millimeters and pixels.

DIRECT Method

The DIRECT method can be applied to cameras/instruments that are not supported by jigsaw or the viewing geometry conditions are not supported in BUNDLE. The DIRECT method is particularly useful for the Cassini VIMS (and other (spot) spectrometer type instruments) and for cases where the geometry is partially or completely off the target body. The DIRECT method primarily differs from the BUNDLE method in that it computes a rotation matrix directly from the SAMP1/LINE1 to the LAT1/LON1 surface intercept vectors from the spacecraft position reference in the J2000 coordinate system. Essentially, these are the look direction vectors from those camera coordinates in J2000 which eliminates any peculiarities within the camera coordinate system. And, most importantly, it does not require all sample/line coordinates to map to valid geometric coordinates. It does not, however, support the TWIST option or the two-point scenario as does the BUNDLE method.

This approach works in variable acquistion time instrument systems, such as line scan, pushbroom, pushframe and (spot) spectrometers (as well as framing camera instruments) because the rotation matrix is determined independent of spacecraft position. It also works for situations where the geometry is off the target body because the look vector is always properly set in the ISIS camera model even if it does not intersect the surface. Note, however, in the later case, the LAT1/LON1 position must intersect the target body to obtain a valid sample/line coordinate.

The DIRECT method was designed to correct the pointing for the Cassini VIMS spectrometer but it is designed to be generally applicable to all cameras supported in the ISIS system. The BUNDLE method does not work on the VIMS instrument and likely many other complex camera systems with peculiar geometric configurations, such as (spot) spectrometers. The recommended procedure to determine an update to VIMS pointing is to first determine the geometric coordinate of a commmon feature in a reference image, such as a Cassini ISS observation for example, where the same latitude/longitude coordinate maps to a line/sample in the VIMS image. The VIMS geometric coordinate is expected not match the feature in the ISS image but qview and/or campt must report a valid line/sample coordinate from the latitude/longitude coordinate. The next step is to choose the best sample/line coordinate in the VIMS image that best matches the feature in the ISS image. To correctly update the pointing in the VIMS image, provide the latitude/longitude coordinate from the ISS image in the LAT1/LON1 parameters and the line/sample coordinate of the feature in the VIMS image in the SAMP1/LINE1 parameters to deltack. You may make a copy of the original image prior to running deltack if desired.

A similar procedure to the one described for VIMS will also work to update the pointing of an image where the SPICE ephemeris data does not provide a valid latitude/longitude on the target body. The distinction is that the SAMP1/LINE1 coordinate need not intersect the body. Indeed, this is a common problem encountered typically with older data sets and generally with flyby images where the target is partially or fully in the field of view of the camera. There is an alternative technique for flyby images of this type that does not require a second reference image. The case where this technique is most effective is typically used for framing cameras where the center of the target body is in view and there is at least 1 pixel in the image that maps to the surface where geometric data can be computed. Using campt, provide the sample/line coordinate of any valid geometric point in the image - it does not have to visibly intersect the target body - any sample/line coordinate will suffice. campt reports the sub-spacecraft latitude/longitude coordinate for every valid geometric coordinate - it will always be the same coordinate for framing cameras. If the full disk of the target body is viewable and the image is relative free of noise/artifacts, the center program computes the centroid sample/line coordinate of the target body. If this condition is not met, use qview to manually approximate the center pixel coordinate of the body. Provide the centroid sample/line in the SAMP1/LINE1 coordinate and the SubSpacecraftLatitude/SubSpacecraftLongitude values computed by campt in the LAT1/LON1 parameter to deltack.


Categories


Related Objects and Documents

Applications


Parameter Groups

Files

Name Description
FROM Input camera cube

Options

Name Description
METHODSpecify the method to use to compute the pointing adjustment

Bundle Adjustment Options

Name Description
SIGMA0Standard deviation of unit weight
MAXITSIterations
TWISTSolve for camera twist

Fixed Points

Name Description
SAMP1Sample coordinate, point #1
LINE1Line coordinate, point #1
LAT1Latitude, point #1
LON1Longitude, point #1
RAD1Radius, point #1
SAMP2Sample coordinate, point #2
LINE2Line coordinate, point #2
LAT2Latitude, point #2
LON2Longitude, point #2
RAD2Radius, point #2

Files: FROM

Description

The file specification for the input cube. The cube will have its camera pointing updated.

Type cube
File Mode input
Filter *.cub

Options: METHOD

Description

There are two types of methods that can be used to compute the pointing update: BUNDLE and DIRECT.

Type string
Default BUNDLE
Option List:
Option Brief Description
BUNDLE Use jigsaw bundle adjustment method The BUNDLE method uses jigsaw photogrammetric techniques to adjust the pointing differences from a point to a latitude/longitude coordinate. BUNDLE is also more flexible in that it can also correct for TWIST by providing a second set of SAMP2/LINE2 and LAT2/LON2 parameters.
DIRECT Use direct adjustment method The DIRECT method computes the pointing differences in look directions of the SAMP1/LINE1 point and LAT1/LON1 coordinate. All entries in the InstrumentPointing table object are adjusted by a constant linear rotation. This method does not currently support the TWIST option.

Exclusions

  • SIGMA0
  • MAXITS
  • TWIST
  • LINE2
  • SAMP2
  • LAT2
  • LON2
  • RAD2

Bundle Adjustment Options: SIGMA0

Description

Convergence is reached when the solution parameters change by less than Sigma0. Units: unitless.

Type double
Default 1.0e-10

Bundle Adjustment Options: MAXITS

Description

Maximum number of iterations

Type integer
Default 10

Bundle Adjustment Options: TWIST

Description

In addition to angle1 and angle2, if this parameter is set the program will solve for the camera twist. This requires input of a second fixed coordinate (SAMP2,LINE2) and (LAT2,LON2)

Type boolean
Default False
Inclusions
  • LINE2
  • SAMP2
  • LAT2
  • LON2
  • RAD2

Fixed Points: SAMP1

Description

The sample coordinate for fixed point #1 (LAT1,LON1). Units:: pixels

Type double

Fixed Points: LINE1

Description

The line coordinate for fixed point #1 (LAT1,LON1). Units:: pixels

Type double

Fixed Points: LAT1

Description

Desired planetocentric latitude at the image coordinate (SAMP1,LINE1). Units: degrees.

Type double
Minimum -90.0 (inclusive)
Maximum 90.0 (inclusive)

Fixed Points: LON1

Description

Desired east longitude at the image coordinate (SAMP1,LINE1). Units: degrees

Type double
Minimum 0.0 (inclusive)
Maximum 360.0 (inclusive)

Fixed Points: RAD1

Description

Desired radius at the image coordinate (SAMP1,LINE1). It will be automatically computed using the shape model that was entered in the "spiceinit" application. Units: meters.

Type double
Internal Default Computed
Minimum 0.0 (exclusive)

Fixed Points: SAMP2

Description

The sample coordinate for fixed point #2 (LAT2,LON2). Units: pixels.

Type double
Inclusions
  • TWIST

Fixed Points: LINE2

Description

The line coordinate for fixed point #2 (LAT2,LON2). Units: pixels.

Type double
Inclusions
  • TWIST

Fixed Points: LAT2

Description

Planetocentric latitude at the image coordinate (SAMP2,LINE2). Units: degrees.

Type double
Minimum -90.0 (inclusive)
Maximum 90.0 (inclusive)
Inclusions
  • TWIST

Fixed Points: LON2

Description

Desired east longitude at the image coordinate (SAMP2,LINE2). Units: degrees.

Type double
Minimum 0.0 (inclusive)
Maximum 360.0 (inclusive)
Inclusions
  • TWIST

Fixed Points: RAD2

Description

Radius at the image coordinate (SAMP2,LINE2). It will be automatically computed using the shape model that was initialized in the "spiceinit" application. Units: meters.

Type double
Internal Default Computed
Minimum 0.0 (exclusive)
Inclusions
  • TWIST

History

Jeff Anderson2006-09-06 Original version
Tracie Sucharski2007-05-02 Added inclusion of TWIST to SAMP2,LINE2,LAT2,LON2,RAD2. Without this inclusion, the AML was requiring these parameters even if TWIST was false.
Debbie A. Cook2007-07-12 Added pvl status report for a successful update.
Steven Koechle2007-10-05 Added check to see if cube has existing polygon, if so delete it.
Debbie A. Cook2011-06-06 Updated to current version of BundleAdjust class.
Debbie A. Cook2011-06-07 Changed point type "Ground" to "Fixed".
Debbie A. Cook2011-09-28 Updated documentation in response to Mantis issue #187.
Brent A. Archinal2011-09-30 Updated documentation, mostly to indicate units.
Debbie A. Cook2011-10-04 Added documentation for output files and removed creation of output csv tables because the tables are not useful for only one or two points. The information is already listed in bundleout.txt.
Kimberly Oyama2014-03-28 Added check for history group in input cube. If it's there, add a new entry. If not, add a new history group. Added an app test. Fixes #1350.
Jeannie Backer2014-07-23 Modified to create a bundle settings object for the bundle adjustment.
Ian Humphrey and Makayla Shepherd2015-09-01 Changed code to accommodate changes in Sensor and Camera relationships.
Jeannie Backer2016-04-22 Modified to use the FROM cube labels to set output control net's 'target' instead of the TargetName. Removed check for TargetName since this happens when the ControlNet target is set. References #3892
Jeannie Backer2016-08-18 Removed deprecated parameter from call to BundleSettings::setSolveOptions. References #4162.
Kris Becker2017-08-01 Added new DIRECT method to update the pointing for instrument with special conditions. The DIRECT method is intended for use with instrument camera models that do not work in jigsaw (more specifically, BundleAdjust) such as Cassini VIMS. Added the METHOD parameter to allow user to select which method to apply. The default is METHOD=BUNDLE which chooses pre-existing behavor. Updated documentation to reflect these new changes. Fixes #4868.
Ken Edmundson2018-05-23 Modifed call to bundleAdjustment->solveCholeskyBR() to return a raw pointer to a BundleSolutionInfo object. Am also deleting this pointer because jigsaw.cpp takes ownership from BundleAdjust.