Skip to content


Rebecca Leggett edited this page Aug 30, 2019 · 1 revision


Project Management

Development References

Open RFCs

Archived RFCs

Instrument Workflows

Planning & Design



General Image Processing



Mission Specific ISIS3 Processing

Programming in ISIS3

Demonstration Material


Interactive Programs

Clone this wiki locally

Working with Mars Reconnaissance Orbiter HiRISE Data



The Mars Reconnaissance Orbiter Mission

Instrument Overview

HiRISE has acquired more than 20,000 images of the martian surface in unprecedented detail.

HiRISE operates in visible wavelengths with a telescope that will produce images at resolutions never before possible in planetary exploration. These high resolution images will enable scientists to resolve 1-meter (about 3-foot) sized objects on Mars and to study the morphology (surface structure) in a much more comprehensive manner than ever before.

From an altitude of approximately 300 kilometers above Mars, HiRISE will return surface images comprised of pixels representing 30 centimeters of the martian surface.

These high-resolution images provide unprecedented views of layered materials, gullies, channels, and other science targets, as well as possible future landing sites.


A comparison between the resolution of a camera aboard
Mars Global Surveyor and the HiRISE camera on 
Mars Reconnaissance Orbiter. Credit: NASA/JPL 

Technical Details

This telescopic camera has a primary mirror diameter of 50 centimeters and a field of view of 1.15°. At its focal plane, the instrument holds an array of 14 electronic detectors, each covered by a filter in one of three wavelength bands: 400 to 600 nanometers (blue-green), 550 to 850 nanometers (red), or 800 to 1000 nanometers (near-infrared). Ten red detectors are positioned in a line totaling 20,028 pixels across to cover the whole width of the field of view. Typical red images are 20,000 pixels wide by 40,000 lines high. Two each of the blue-green and near-infrared detectors lie across the central 20% of the field. Pixel size in images taken from an altitude of 300 kilometers will be 30 centimeters across, about a factor of two better than the highest-resolution down-track imaging possible from any earlier Mars orbiter and a factor of five better than any extended imaging to date. Generally, at least three pixels are needed to show the shape of a feature, so the smallest resolvable features in the images will be about a meter across for an object with reasonable contrast to its surroundings. The instrument uses a technology called time delay integration to accomplish a high signal-to-noise ratio for unprecedented image quality.

The Principal Investigator (lead scientist) for HiRISE is Alfred McEwen from the Lunar and Planetary Laboratory at the University of Arizona .


This image is one half (vertically) of a HiRISE observation
scaled down to approximately 1/50th of its original resolution.
It is of a small area inside Eberswalde crater in
Margaritifer Sinus. Taken on November 8, 2006, the image is a 
composite of all 10 red detectors and the 2 blue-green detectors.


This is a full resolution sub-area of the image on the right
(indicated by the red outline). One pixel represents 25.6 cm 
on the surface of Mars.

References & Related Resources

Cartographic Processing HiRISE Data

Level 0 Processing

  1. Data Acquisition
  2. Ingestion
  3. SPICE
  4. Raw Camera Geometry

Level 1 Processing

  1. Radiometric Calibration
  2. Channel Stitching
  3. Noise Removal

Level 2 Processing

  1. Overview
  2. Map Projection
  3. Tone Match
  4. Mosaic

Batch Processing

The ingestion, SPICE initialization, calibration, merging, and normalization must be run for each channel image. This would be incredibly tedious to run each application for every file! Luckily, batch processing is easy to do in ISIS3. Using the Isis -batchlist command line option , a set of CCD images for a single observation can easily be processed through level 1 processing.

The commands shown below create file lists to use as inputs to the applications and run those applications using the batchlist option:

1. create a single column list of images without the file extension
    ls *.IMG | sed s/.IMG// > cube.lis

2. run hi2isis on the list of files, adding the input/output extensions 
   in the command line
    hi2isis from=\$1.IMG to=\$1.cub -batchlist=cube.lis

3. apply spiceinit to the hi2isis output cube files
    spiceinit from=\$1.cub -batchlist=cube.lis

4. apply hical with the appropriate input/output file extensions
    hical from=\$1.cub to=\$ -batchlist=cube.lis

5. create a list of one of the channels without file extensions
    ls *_0.IMG | sed s/_0.IMG// > cube2.lis

6. stitch together the channels specifying each appropriate extension 
    in the command line
    histitch from1=\$1_0 from2=\$1_1 to=\$1 -batchlist=cube2.lis

7. normalize, tone-match across the channels (if necessary)
    cubenorm from=\$1 to=\$1.norm.cub -batch=cube2.lis

Related ISIS3 Applications & Documentation

See the following ISIS3 documentation for information about the applications
you will need to use to perform this procedure:

  • Isis Command Line Usage : how to run ISIS3 programs on the command line
  • hi2isis : converts a HiRISE EDR to ISIS3 cube format
  • spiceinit : adds SPICE information to the input cube
  • hical : radiometrically calibrates HiRISE channel images
  • histitch : combines two HiRISE channel images to form a single CCD image
  • cubenorm : normalizes values in a image

Exporting ISIS3 Data

Overview for exporting ISIS3 data

Exporting large HiRISE images

HiRISE mosaics are very large and our export application isis2std does not handle large PNG or JPEG images. You will need to decrease the size of the image to export by either cropping or reducing.

Related ISIS3 Applications

See the following ISIS3 documentation for information about the applications you will need to use to perform this procedure:

  • reduce : scale down a cube
  • crop : pull a region out of a cube

Create a HiRISE Anaglyph

See: HiRISE Anaglyphs

HiRISE-to-HiRISE Geometric Control

Two HiRISE observation of red filter images will be geometrically controlled by shifting one observation set relative to a master observation. A collection of tiepoints that links all the images is needed to accomplish this task. A few tiepoints will be constrained heavily to tack down the control points when the bundle adjustment is performed. After the camera pointing has been updated the images will be projected, tone matched, and mosaicked together.

Collect tiepoints for each observations

1.  Generate normalized cube files for each observation by running steps 1 to 7
    See steps under Batch Processing (above section)

2.  Create a list of all the normalized cube files for both observations
     ls  *norm.cub > normalized.lis

3.  Add footprint polygons to the image labels of each normalized cube file
     footprintinit from=\$1 linc=100 sinc=50 incre=true -batch=normalized.lis

4.  Add camera statistics information to the image labels of each normalized cube file
     camstats from=\$1 linc=100 sinc=50 attach=true -batch=normalized.lis

5.  Create separate lists of the normalized cubes for each observation
     ls PSP_004339_1890*norm.cub > set1.lis
     ls PSP_00568*norm.cub > set2.lis

6.  Find image overlaps and record the information to an output file for each 
    observation separately
     findimageoverlaps froml=set1.lis over=set1_overlaps.txt
     findimageoverlaps froml=set2.lis over=set2_overlaps.txt

7.  Automatically seed tiepoints along the overlaps, run separately to avoid 
     seeding too many points in the overlap areas between the two sets
     autoseed fromlist=set1.lis deffile=hirise_ccd_sets_seed.def 
     errors=hirise_set1_autoseed.err networkid=Hirise_set1 
     pointid=hirise_set1_\?\?\?\? description="HiRise set1 images autoseed
     with hirise_ccd_sets_seed.def"
     autoseed''' fromlist=set2.lis deffile=hirise_ccd_sets_seed.def
     overlaplist=set2_overlaps.txt onet=hirise_set
     errors=hirise_set2_autoseed.err networkid=Hirise_set2
     pointid=hirise_set2_\?\?\?\? description="HiRise set2 images autoseed 
     with hirise_ccd_sets_seed.def"

8.  Merge the two output networks produced by the autoseed program
     cnetmerge inputtype=cnets
     networkid=HiRiseSets description="Hirise merge set1 and set2 networks"

9.  Perform automatic sub-pixel registration between the measures for each 
     control point.  A registration template is required that defines what 
     the tolerances should be for the program pointreg.  The input list 
     should contain all the images included in the two control networks that 
     were merged previously in step 8
     pointreg fromlist=all_norm.lis
     flatfile=hirise_autoseed_merged_sets_ptreg.txt points=all

For more information see Automatic seeding of tiepoints and
Pattern Matching

Evaluate the results of automatic seeding and registration

Display the result with qmos to see the distribution of control points and the point types (blue=successful, red=failed)

 Under file, select "Open Cube List"
 Select the file list, and then press "Open"
 Click on the "Control Net" button
 Select the control network file (output of pointreg), and press "Open"

The example below shows the footprint plot with the tiepoints in the control network. Additional work is required to convert some ignored tiepoints to valid tiepoints with qnet or pointreg.

HiRISE control network plot

After fixing critical tiepoints that link the images together with qnet or pointreg, the result should look like the example below:

HiRISE control network plot, after fixing critical tiepoints

Note: The ignored points and measures were deleted in the plot above

Add and register control measures between the two observations to link them together

 1.  Remove all the ignored points and measures before adding additional 
     measures. The input network should be the output from qnet or 
     pointreg in the previous step.

 2.  Add new control measures in order to link the two observations 
      cnetadd fromlist=all_norm.lis addlist=all_norm.lis
      log=hirise_autoseed_merged_sets_ptregedit_add.log polygon=yes

 3.  Automatically register the new measures to the reference measures
     which were set in the previous steps.  The registration template
     must be modified to allow for the offset between the two sets.
     In most cases, the search area needs to be increased and some of
     the other settings may need to be adjusted also.

     IMPORTANT: set "measures=candidates"  

      pointreg fromlist=all_norm.lis points=all measures=candidates

 4.  Remove all ignored measures from the control network.

 5.  Check the network for missing links, single measures, no control 
     points, or problems with the latitude and longitude.
      cnetcheck fromlist=all_norm.lis prefix=cknet1_

 6.  Check the output results and fix any problems reported. If the 
     network is good, continue to the next step.

See Automatic Registration for additional information.

Use qnet to constrain tiepoints

We will be adjusting all the images relative to one image instead of to actual ground coordinates. Use the interactive program qnet to constrain a set of tiepoints to a specified geographic location. The amount of movement allowed will be defined by setting the apriori latitude, longitude, and radius values by some amount. In our example, the apriori sigma values for (lat, lon, radius) will be set to (1.0, 1.0, and 100.0) for the selected tiepoints. Make sure the latitude, longitude values are obtained from the same image.


  • click for more information on the interactive program.

 Select "Open control network cube list"
 Select "all_norm.lis"
 Select ""

 In the "Control Network Navigator" window go to the drop-down menu 
  next to "Points", and select "Cubes"

 Select both "RED5" cubes, ''hold down "Ctrl" button while selecting the 
  files (PSP_004339_1890_RED5_norm.cub and PSP_005684_1890_RED5_norm.cub)

 Click on "View Cubes" button 

The two images should be displayed in the qnet window. The image shows green cross-hair where there are valid control points, magenta for constrained points, and yellow for ignored points. Do not use yellow points to constain control points. Select 3 points, one at top, center, and bottom of the same image to constrain the latitude and logitude coordinates. Make sure
the left image in the "Qnet Tool" or editor window has the "RED5" image displayed on the left. A DEM is required in order to constrain the points, the file must have been run through demprep .

Find the location where the DEM is stored before going to the next step. The dems are normally stored in $ISIS3DATA/base/dems directory.

 Go to "File" and select "Open ground source"
 Select "$base/dems/molaMarsPlanetaryRadius0005.cub"

 Go to "File" and select "Open radius source"
 Select "$base/dems/molaMarsPlanetaryRadius0005.cub"

 In the qnet window, select the "Control point editor" button (the last 
 button with two arrow points)

 Click on the uppermost green crosshair in the qnet window for one of 
 the RED5 images.  The point will be displayed in the editor window.

 Next, Select "Points" in the control network navigator window

 In the editor window:
  Select "Constrained" using the drop-down menu next to "Free"
  Click "Save Measure" in the editor window
  Click "Save Point" in the editor window
  Click "Floppy disk icon" to save the changes to the file 
     (Do not skip this step)

 In the control navigator window:
  Click "Set Apriori/Sigmas"
  Enter Latitude Sigma=1.0 Longitude Sigma=1.0, and Radius Sigma=100.0
  Click "Set Apriori"
  Click "Save network" Point should change color from green to magenta

REPEAT previous STEPS for center and bottom points.
Save the control network file.

Bundle adjustment

After constraining at least 3 tiepoints, run the bundle adjustment program jigsaw . Do not check "update" and "error propagation" until an acceptable solution is reached . After each run check the output file showing the residuals to determine if there are bad measures in the control network.

Sample of jigsaw GUI showing parameter names:


Our settings are very basic since our primary purpose is to shift one observation to match another, and we are not actually including accurate ground points. For advanced users, the steps and parameters used may be adjusted to fit your particular needs.

Command line entry:

jigsaw fromlist=all_norm.lis \ \
radius=yes sigma0=1.0e-6 maxits=10 point_radius_sigma=1000 \
camera_angles_sigma=3 file_prefix=jig1

Check the output files:
 sort -k8,8nr jig1_residuals.csv|more 
 (The residuals should be less than 5 pixels, check large residuals 
  using qnet, or create a list of pointid's and delete with cnetedit)

 egrep -a cub jig1_bundleout.txt |more

The last 3 columns next to the filenames should be small

Final run:
 jigsaw fromlist=all_norm.lis update=yes \ \
 radius=yes sigma0=1.0e-6 maxits=10 point_radius_sigma=1000 \
 camera_angles_sigma=3 file_prefix=jig1 errorpro=yes

For additional information on Jigsaw, refer to a discussion PowerPoint as presented in June 26, 2012 at the Planetary Data Workshop: Jigsaw_demo.pdf

Map projection and mosaic

The final step is to project the images, tone match the set, and mosaic the files together. A map template is needed in order to project the images. Our map template contains the following parameter settings: 
Group = Mapping
   TargetName         = Mars
   ProjectionName     = Equirectangular
   CenterLongitude    = 0.0
   CenterLatitude     = 0.0
   #EquatorialRadius   = 3396190.0 <meters>
   #PolarRadius        = 3376200.0 <meters>
   LatitudeType       = Planetocentric
   LongitudeDirection = PositiveEast
   LongitudeDomain    = 180
   PixelResolution    = .5 <meters/pixel>

Create Level2 images:

ls *norm.cub > lev1.lis
cam2map from=\$1 to=lev2_\$1 -batch=lev1.lis

Tone match images:

ls lev2_*norm.cub > lev2.lis
ls lev2_PSP_004339_1890_RED5_norm.cub > hold.lis
equalizer fromlist=lev2.lis holdlist=hold.lis outstats=stats.txt


ls lev2*equ.cub > lev2equ.lis
automos froml=lev2equi.lis mosaic=hirise_set_mosaic.cub

Final mosaic of two observations:

HiRISE mosaic of two observations

Related ISIS3 Applications

See the following ISIS3 documentation for information about the applications you will need to use to perform this procedure:

  • footprintinit : Add footprint polygons to image labels
  • camstats : Add camera statistics to image labels
  • findimageoverlaps : Find overlaps between a set of images
  • autoseed : Automatically create a network file by seeding tiepoints
  • cnetmerge : Merge different control network files
  • pointreg : Sub-pixel register control measures for a control point
  • qmos : Display image footprints and control point networks
  • qnet : Interactive program to collect and modify control measures and ground points
  • cnetedit : Delete control points and measures from a control network
  • cnetadd : Add control measures to an existing control network
  • cnetcheck : Check control network file before running jigsaw
  • jigsaw : Bundle adjustment program to update camera pointing information
  • cam2map : Map project level 1 images
  • equalizer : Tone match a set of images
  • automos : Create a mosaic

HiRISE_equalizer_automos.png View (61.8 KB) Ian Humphrey, 2016-05-31 04:44 PM

HiRISE_jigsaw2.png View (186 KB) Ian Humphrey, 2016-05-31 04:45 PM

HiRISE_jigsaw1.png View (78 KB) Ian Humphrey, 2016-05-31 04:45 PM

Hirise_qmos_demo2.png View (228 KB) Ian Humphrey, 2016-05-31 04:45 PM

Hirise_qmos_demo1.png View (242 KB) Ian Humphrey, 2016-05-31 04:45 PM

Jigsaw_demo.pdf (8.24 MB) Ian Humphrey, 2016-05-31 04:48 PM