ISIS Application Documentation
phocube | Standard View | TOC | Home |
Create photometric and geometric information bands for an image cube
Description
Categories
Groups
Examples
History
Things To Do
This program, phocube, creates backplane bands that contain photometric, geometric, and spacecraft instrument information for an image file. The parameter options range from photometric angles (incidence, emission, and phase) to various azimuth angles, and options based on spatial (latitude, longitude, and resolution) information. This program will not work on Level1 images without a camera model, or on mosaics. The input image pixels are not propagated to the output file unless the user selects the "DN" option. The following is a partial list of how users have made use of band output:
All ISIS applications default to the following geometric reference if a camera model exists:
There are instances where the local emission angle and the local incidence angle will have values over 90 degrees. ISIS allows the computation of emission and incidence angles greater than 90 degrees. This feature allows representation of viewing and illumination conditions where there is actual target body surface data beyond the limb or deep terminator boundary areas. Applications such as photomet that applies photometric functions honor the 90-degree boundary. Applications such as photrim can be applied to the phocube output to replace the angle values above 90 degrees to NULL. There are certain processes that need these data, therefore it is allowed.
This program requires a Level1 file that has a successful "spiceinit" applied to it, or a Level2 image cube file. For every valid input pixel, an output pixel is computed based on either the SPICE information, or the map projected spatial information, or a pre-defined equation.
The parameters "morphologyRank" and "albedoRank" are specifically designed to be used by the ISIS mosaic programs. A mosaic program will automatically compare two pixel values to determine how each pixel is mosaicked into an output file, which depends on whether a morphology-based or an albedo-based product is desired. The program computes a DN value for every input pixel based on the formulas listed below and outputs the value to a backplane band. These backplane bands are used by the ISIS mosaic programs. The following are equations for "morphologyRank" and "albedoRank" options:
- MorphologyRank
- Equation = PixelResolution/cos(EmissionAngle)
- AlbedoRank
- Equation = PixelResolution * [(1/cos(EmissionAngle)) + (1/cos(IncidenceAngle))]
All the options in phocube are applicable if the input file is a Level1
image and has a camera model associated with the file. If the input file
is a map-projected Level2 image, only a few options are appropriate
and available for selection.
The following options are available for Level1 images that contain a camera model:
The BandBin group keywords are updated in the labels of the output cube file. The keyword "Name" within the BandBin group, shown below, is populated with the name of each option selected by the user as bands. These bands can be referenced by their names in applications such as "mapmos" and "qview."
Example: phocube from=EW0131773041G_cal.cub to=EW0131773041G_cal.pho.cub morph=true dn=true Sample of image label: Group = Dimensions Samples = 1024 Lines = 1024 Bands = 7 End_Group Group = BandBin Name = ("750 BW 5", "Phase Angle", "Emission Angle", "Incidence Angle", Latitude, Longitude, Morphology) Number = (7, 7, 7, 7, 7, 7, 7) Center = (748.7, 748.7, 748.7, 748.7, 748.7, 748.7, 748.7) Width = (5.1, 5.1, 5.1, 5.1, 5.1, 5.1, 5.1) End_Group Note: The first band retained the BandBin Name value from the input file. The program has "Phase Angle," "Emission Angle," "Incidence Angle," "Latitude," and "Longitude" options pre-selected.
If the backplane bands generated by phocube are used in the mosaic programs and the mosaic requires the input image pixel, the "DN" parameter name must be set to "true" in phocube. When backplane bands are used in the "fx" or "photomet" program, it is not necessary to propagate the input image to the output file.
Name | Description |
---|---|
FROM | Input cube file |
TO | Output cube file |
SOURCE | Specifies the source of the geometric information |
Name | Description |
---|---|
SPECIALPIXELS | Include special pixels in the ouptut image |
DN | Propagate the input pixel to the output file |
ALLDNS | Propagate all of the input pixel DNs to the output file |
PHASE | Create a phase angle band |
EMISSION | Create an emission angle band |
INCIDENCE | Create an incidence angle band |
LOCALEMISSION | Create a local emission angle band |
LOCALINCIDENCE | Create a local incidence angle band |
LATITUDE | Create a latitude band |
LONGITUDE | Create a longitude band |
PIXELRESOLUTION | Create a pixel resolution band |
LINERESOLUTION | Create a line resolution band |
SAMPLERESOLUTION | Create a sample resolution band |
DETECTORRESOLUTION | Create a detector resolution band |
OBLIQUEDETECTORRESOLUTION | Create an oblique detector resolution band |
NORTHAZIMUTH | Create a north azimuth band |
SUNAZIMUTH | Create a sun azimuth band |
SPACECRAFTAZIMUTH | Create a spacecraft azimuth band |
OFFNADIRANGLE | Create an offNadir angle band |
SLOPE | Create a slope band |
LOCALNORMAL | Create X, Y, and Z back planes from the local normal vector |
ELLIPSOIDNORMAL | Create X, Y, and Z back planes from the ellipsoid normal vector |
SUBSPACECRAFTGROUNDAZIMUTH | Create a sub spacecraft ground azimuth band |
SUBSOLARGROUNDAZIMUTH | Create a sub solar ground azimuth band |
MORPHOLOGYRANK | Create a morphology rank band, used for ranking images based on favorable local emission angles. |
ALBEDORANK | Create an albedo rank band, used for ranking images based on favorable emission and incidence angles. |
RADEC | Create bands for Right Ascension and Declination |
BODYFIXED | Create bands for the X, Y, and Z Body Fixed Coordinates |
LOCALTIME | Create a band with local solar time |
This is the input filename. The input image cube can be a Level1 or Level2 file. For a Level1 image, spiceinit must be successfully applied before running phocube.
Type | cube |
---|---|
File Mode | input |
Filter | *.cub |
This is the output file name. The cube file will contain a band for each of the selected options. The BandBin Group in the image labels of the output cube file will be updated with the "Name" keyword containing the output band names (options) in the order that they are stacked within the cube.
Type | cube |
---|---|
File Mode | output |
Pixel Type | real |
Specifies whether the geometric information will be obtained from the camera model or from the map projection. If this parameter is set to CAMERA, all band options are available for the user to select. If this parameter is set to PROJECTION, then only DN, LATITUDE, LONGITUDE, and PIXELRESOLUTION band options are available and all other options will be greyed out. If the user sets this parameter to CAMERA and the input file does not contain a camera model or SPICE information, then an error message will occur.
Type | string | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
Default | CAMERA | |||||||||
Option List: |
|
Controls the output of the values phocube calculates based on the DN from the first band. If this parameter is true, phocube will always attempt to calculate values for the requested bands. If this parameter is false, and the DN is a special pixel value, phocube will not calculate values, and will instead place ISIS Null values in all requested photometry bands. The DN bands, if requested, will be transfered to the output cube regardless of this setting.
Type | boolean |
---|---|
Default | TRUE |
This parameter specifies whether the input image pixel value (DN) will be propagated to the output file. The DN parameter must be set to "true," if the output product created is expected to contain the input image information.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, all the DN values from all of the bands in the input image, subject to the input cube attribute, will be propagated to the output file. Calculations for the other bands that require a sensor model (e.g., phase) will be based on the first band, again subject to the cube attribute. This doesn't affect the values calculated for those bands when the input image bands are spatially allinged, but it is very import when the bands of the input image are not spatially alligned (e.g., Level 1, Odyssey, Themis IR). Use the input cube attribute to select the band used to calculate the other phocube values (e.g., ThemisIR.cub+9,1-5). The geometry of the first band or the first band in the input attribute, will be used to calculate the phocube values. NOTE: If the DN parameter is also set then ALLDNS will take presidence, and DN will be ignored.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the Phase Angle will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Phase Angle" in the BandBin group, in band sequence of the output file. Phase angles are in degrees.
Type | boolean |
---|---|
Default | TRUE |
If this parameter is true, the Emission Angle will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Emission Angle" in the BandBin group, in band sequence of the output file. Emission angles are in degrees. There are certain cases where the emission angle is over 90 degrees. This is allowed as there are processes that need these data. See main description for details.
Type | boolean |
---|---|
Default | TRUE |
If this parameter is true, the Incidence Angle will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Incidence Angle" in the BandBin group, in band sequence of the output file. Incidence angles are in degrees. There are certain cases where the incidence angle is over 90 degrees. This is allowed as there are processes that need these data. See main description for details.
Type | boolean |
---|---|
Default | TRUE |
If this parameter is true, the Local Emission Angle will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Local Emission Angle" in the BandBin group, in band sequence of the output file. LocalEmissionAngle is in degrees. There are certain cases where the local emission angle is over 90 degrees. This is allowed as there are processes that need these data. See main description for details.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the Local Incidence Angle will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Local Incidence Angle" in the BandBin group, in band sequence of the output file. LocalIncidenceAngle is in degrees. There are certain cases where the local incidence angle is over 90 degrees. This is allowed as there are processes that need these data. See main description for details.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the latitude value will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Latitude" in the BandBin group, in band sequence of the output file. Latitude is in degrees.
Type | boolean |
---|---|
Default | TRUE |
If this parameter is true, the longitude value will be computed for every pixel placed in a band in the output cube. The output cube labels will contain "Longitude" in the BandBin group, in band sequence of the output file. Longitude is in degrees.
Type | boolean |
---|---|
Default | TRUE |
If this parameter is true, the Pixel Resolution will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Pixel Resolution" in the BandBin group, in band sequence of the output file. PixelResolution is in meters.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the Line Resolution will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Line Resolution" in the BandBin group, in band sequence of the output file. LineResolution is in meters.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the Sample Resolution will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Sample Resolution" in the BandBin group, in band sequence of the output file. SampleResolution is in meters.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the Detector Resolution will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Detector Resolution" in the BandBin group, in band sequence of the output file. DetectorResolution is in millimeters.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the Oblique Detector Resolution will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Oblique Detector Resolution" in the BandBin group, in band sequence of the output file. ObliqueDetectorResolution is in millimeters.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the North Azimuth will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "North Azimuth" in the BandBin group, in band sequence of the output file. NorthAzimuth is in degrees.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the Sun Azimuth will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Sun Azimuth" in the BandBin group, in band sequence of the output file. SunAzimuth is in degrees.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the Spacecraft Azimuth will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Spacecraft Azimuth" in the BandBin group, in band sequence of the output file. SpacecraftAzimuth is in degrees.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the Off Nadir Angle will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "OffNadir Angle" in the BandBin group, in band sequence of the output file. OffNadirAngle is in degrees.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the slope will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Slope" in the BandBin group, in band sequence of the output file. The slope is in degrees with 0 degrees being perfectly flat and 90 degrees being sheer vertical.
Note: The slope is measured relative to a sphere and not a more complex datum like the gravity model
If computing slopes, the input image must be a level1 image. To compute slopes for a level2 DEM use slpmap.Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, a local normal will be computed for every pixel based on the shapemodel of the cube, and placed in three bands (X, Y, Z) in the output cube. Meaning if your cube has an ellipsoid shapemodel rather than a DEM, the local normal and the ellipsoid normal will look the same. The output cube labels will contain three "Local Normal (coord)" keywordsin the BandBin group, in band sequence of the output file.
Note: These X, Y, and Z bands are in the body fixed reference frame.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the ellipsoid normal will be computed for every pixel and placed in three bands (X, Y, Z) in the output cube. This normal will always be computed with a triaxial ellipsoid regardless of shapemodel. The output cube labels will contain three "Ellipsoid Normal (coord)" keywords in the BandBin group, in band sequence of the output file.
Note: These X, Y, and Z bands are in the body fixed reference frame.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the Spacecraft Ground Azimuth will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Sub Spacecraft Ground Azimuth" in the BandBin group, in band sequence of the output file. SubSpacecraftGround Azimuth is in degrees.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the SubSolar Ground Azimuth will be computed for every pixel and placed in a band in the output cube. The output cube labels will contain "Sub Solar Ground Azimuth" in the BandBin group, in band sequence of the output file. SubSolarGroundAzimuth is in degrees.
Type | boolean |
---|---|
Default | FALSE |
This band is computed from the pixel resolution
and emission angle using the following formula:
MorphologyRank = PixelResolution / cos(EmissionAngle)
The resulting output band can be used by automos to create a
morphology-based mosaic product. This option uses the
local emission angle if the input file
is initialized (spiceinit) with an elevation model (DEM); otherwise, it
uses the default calculation (from the ellipsoid). All computed cosines are
tested for zero. If the result is zero, then the value is set to a constant
value very close to zero.
Type | boolean |
---|---|
Default | FALSE |
This band is computed from the pixel resolution,
incidence angle and emission angle
using the following formula:
AlbedoRank = PixelResolution * [(1 / cos(EmissionAngle)) + (1 / cos(IncidenceAngle))]
The resulting output band can be used by automos to create an albedo-based
mosaic product. This option always uses the
local emission angle and
local incidence angle if the input file
is initialized (spiceinit) with an elevation model (DEM); otherwise, it
uses the default calculation (from the ellipsoid). All computed cosines are
tested for zero. If the result is zero, then the value is set to a constant
value very close to zero.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the Right Ascension, and the Declination will be calculated for every pixel and each will be placed into their respective bands in the output cube. The output cube labels will contain "Right Ascension" and "Declination" in the BandBin group, in the band sequence of the output file. Right Ascension and Declination are in degrees.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the Body Fixed Coordinates will be calculated for every pixel and the values for X, Y, and Z will each be placed into their own bands in the output cube. The output cube labels will contain "Body Fixed X", "Body Fixed Y", and "Body Fixed Z" in the BandBin group, in the band sequence of the output file. Body Fixed Coordinates are in kilometers.
Type | boolean |
---|---|
Default | FALSE |
If this parameter is true, the Local Solar Time will be calculated for every pixel in the output cube. The output cube label will contain "Local Solar Time" in the BandBin group. Local Solar Time is in hours.
Type | boolean |
---|---|
Default | FALSE |
Create latitude and morphologyRank backplane bands
Example GUI
Screenshot of GUI version of the application. |
Input file
Parameter Name:
FROM
Screenshot of the input cube file. |
Output file band 1 (Latitude)
Parameter Name:
TO
Screenshot of the first band in the output file. This file contains the latitude information with -72.2 degree as the minimum, and 6.27 degree as the maximum value. |
|
Output file band 2 (MorphologyRank)
Parameter Name:
TO
Screenshot of the second band in the output file. This file contains the computed morphologyRank values with 0.0 as the minimum, and 15.0 as the maximum value. The minimum and maximum values were manually selected to brighten the image for visual presentation. The actual range is between 2.8 and 41.5 DN values. |
Unknown | 1999-02-11 | Original version. |
Stuart Sides | 2003-06-04 | Converted to ISIS3, and made it create a cube rather than adding backplanes. |
Stuart Sides | 2003-07-29 | Modified filename parameters to be cube parameters where necessary. |
Stuart Sides | 2005-09-09 | Fixed problem where the program threw an error when it tried to propagate the pixel type from the input file. |
Stuart Sides | 2005-09-09 | Added the bandbin group to the cube labels. |
Jeff Anderson | 2005-09-20 | Fixed a bug with switched samples and lines. |
Elizabeth Miller | 2005-10-05 | Moved into Photometry and Radiometry category. |
Elizabeth Miller | 2006-05-23 | Modified to use ProcessByBrick instead of ProcessByLine to make faster. |
Brendan George | 2006-09-21 | Documentation fixes. |
Steven Lambright | 2008-05-13 | Removed references to CubeInfo. |
Steven Koechle | 2008-08-19 | Added new parameters: PIXELRESOLUTION, LINERESOLUTION, SAMPLERESOLUTION, DETECTORRESOLUTION, NORTHAZIMUTH, SUNAZIMUTH, SPACECRAFTAZIMUTH, OFFNADIRANGLE. |
Steven Lambright | 2009-03-06 | Fixed a bug that occurred when processing band-dependent cubes. |
Kris Becker | 2009-05-29 | Added the propagation of the input cube labels, objects, blobs, etc..., so the pedigree of the input source is retained. |
Sharmila Prasad | 2009-07-17 | Set the defaults for PIXELRESOLUTION, LINERESOLUTION, SAMPLERESOLUTION, DETECTORRESOLUTION, NORTHAZIMUTH, SUNAZIMUTH, SPACECRAFTAZIMUTH, and OFFNADIRANGLE to FALSE. |
Mackenzie Boyd | 2010-10-29 | Added parameters/bands SUBSPACECRAFTGROUNDAZIMUTH and SUBSOLARGROUNDAZIMUTH. |
Travis Addair | 2011-02-10 | Added parameters LOCALINCIDENCE and LOCALEMISSION. |
Kris Becker | 2011-08-08 | Added the option to propagate the input pixel value (DN) as the first band (however, this, by default, will not be invoked as default so as to preserve pre-existing behavior). Ensure the Center, OriginalBand, Name, and Width BandBin keyword values are populated properly and propagated to the output label (should support camera models). Added MORPHOLOGY and ALBEDO backplane options for special mosaic options. |
Janet Barrett | 2012-02-22 | Added the capability to run this program on image files where the camera information is missing. The ability to generate lat/lon bands for image files is highly useful when performing fx operations on the files. Other bands that can be created for a mosaic file include: Dn and PixelResolution. A new parameter, SOURCE, was added so that the user can specify if their image does not contain a camera model. This will result in the appropriate parameter choices being greyed out. If the user does not specify that their file does not contain a camera model, then they will receive an error if they choose to create a band that cannot be created for the file. |
Debbie A. Cook | 2012-07-06 | Updated Spice members to be more compliant with ISIS coding standards. References #972. |
Ella Mae Lee | 2012-11-15 | Improved documentation, fixes #1254. |
Tracie Sucharski | 2012-12-06 | Changed to use TProjection instead of Projection. References #775 |
Tracie Sucharski | 2013-01-10 | Allow input cubes without the BandBin label group. Fixes #929. |
Lynn Weller | 2013-02-25 | Removed links to applications imbedded in text and replaced with italicized application name. Added application links to the "Related Objects and Documents" section of the documentation. Fixes mantis ticket #1525. |
Kimberly Oyama | 2013-11-20 | The error thrown when the input is a projected image was misleading. It has been fixed to be more helpful for the user. Fixes #923. |
Makayla Shepherd | 2015-02-06 | Updated documentation. Fixes #1001. |
Makayla Shepherd | 2015-07-02 | Added Ra/Dec and Body Fixed Coordinates options to help create new camera models and help with mission team operations. References #2277. |
Tyler Wilson | 2016-08-17 | Added an ObliqueDetectorResolution band. This is an improvement over the previous DetectorResolution function (particularly for images taken near the limb of the target). References #476, #4100. |
Kaj Williams | 2017-06-09 | Renamed albedo to albedoRank, and morph (or morphology) to morphRank (or MorphologyRank). Ref #4008. |
Kaitlyn Lee | 2019-02-15 | Allowed RA and DEC to be exported regardless if the pixel is off body. Fixes #4446. |
Kaitlyn Lee | 2020-06-04 | Added SPECIALPIXELS parameter to allow users to skip calculations on special pixels, excluding RA and DEC. This changed merged the two process functions, which were created to speed up the application when copying over DN values. After a few time tests, it doesn't look like the merge causes the application to run longer. Changed the process function to be a lambda function to get rid of global variables. |
Kristin Berry | 2020-06-10 | Added the LOCALTIME parameter to output a band with the local solar time for each pixel. Fixes #3850 |
Kaitlyn Lee | 2020-03-15 | Converted application and tests for Gtest conversion. |
Stuart Sides | 2021-06-01 | Add ALLDNS parameter to propagate all input bands to the output instead of just one band. |
Adam Paquette | 2020-08-23 | Added initial slope and backplane options for the local normal and the ellipsoid normal. |