ISIS Application Documentation
hical | Standard View | TOC | Home |
Performs radiometric calibration of HiRISE channel images
Description
Categories
Groups
History
hical appiles radiometric calibration correction to HiRISE images. This particular version is deemed experimental, thus the beta designation. The radiometric calibration correction is performed on each individual HiRISE channel file (EDR) correcting for drift, instrument offset, dark current, line-dependant gain, gain, flat field and finally, conversion to I/F, DN/uS or DNs. There are 14 different CCDs with 2 channels each for a total of 28 channels. (Note that channels are the basic HiRISE image product where calibration is applied.)
Some of the calibration data are contained within each ISIS HiRISE
cube image as ancillary data. These data are stored in ISIS BLOBs
(seen in the labels as Table objects). There are three primary
BLOB Tables used in the calibration:
The calibration is carried out in a series of modules. These modules provide various contributions to the calibration process. The parameters that govern the behavior of these modules are contained in the program configuration file as specified in the CONF program parameter. The default provided is automatically selected from the ISIS MRO ancillary data that accompany the ISIS release and would normally not need to be explicitly provided by the user.
Each of the calibration modules has their own unique set of keywords that govern is behavior. This is documented in the CONF parameter.
The equation that is applied is described below:
Module Processing Summary: ZeroBufferSmooth - Fills gaps in Buffer Data (ZBS) ZeroBufferFit - Computes non-linear fit of ZeroBufferSmooth (ZBF) ZeroReverse - Process Reverse Clocked data (ZR) ZeroDark - Dark current temperature correction (ZD) ZeroDarkRate - Column-by-column dark current correction (ZDr) GainLineDrift - Time-base line drift correction (GLD) GainChannelNormalize - Normalize gain for summing/TDI (GCN) GainNonLinearity - Line-based non-linearity gain correction (GNL) GainFlatField - Flat field correction (GFF) GainTemperature - Temperature dependant gain correction (GT) GainUnitConversion - DN unit conversion factors (GUC) The general form of the HiRISE calibration equation is: oDN = (iDN - ZBF(ZBS) - ZR - ZD) / GLD * GCN * GNL * GFF * GT / GUC where iDN is the input raw pixel value and oDN is the calibrated output pixel value in 16-bit DN.
Computation of these radiometric components is governed by the PVL ()CONF) configuration file. This file is highly customizable to accommodate as many specialized processing needs as possible. The contents of this file and how it may be used/customized is fully described below in this documentation section.
This important file provides all parameters used in the calibration process. It contains references to calibration matrices (such as flat fields, instrument gains, etc...), label keywords and parameters used in the radiometric calibration process.
This highly flexible configuration file contains numerous module profiles that govern the behavior of each phase in the calibration process. These modules each have parameters that are specific to their function. There are 10 different modules used in the application. However, the configuration file will typically include many other profiles. The user can take advantage of the ability to merge other profiles into one or more of the other main profiles, simply by the content of the labels or observing conditions of the image.
The file must contain a top level Hical object. Within this object are numerous profiles. The keywords that are contained in the Object section of the file are always used in every profile and can be superseded by any subsequent profile loaded after the initial one. Optional profile names are constructed by the combination of the OptionKeywords and ProfileOptions keywords. The OptionKeywords lists keyword groups in the configuration file and/or label that can be used to textually replace the patterns surrounded by the {} in the ProfileOptions keyword. The keywords FILTER, CCD, CHANNEL, TDI and BIN are always generated after the initial module and label are loaded in. After the initial profile is loaded, the FROM file label is loaded using the LabelGroups list to determine which keywords are loaded. Note that the groups must exist or an error is issued. Otherwise, the user can specify any defined keyword in the OptionKeywords list to apply to profile names.
The real power of the configuration file is its use of named Profiles. Profiles are groups of keywords that can be associated to a unique definition. The hical PVL configuration file consists of a single Hical object with numerous named Profile groups. Each of the Profile groups must contain a Name keyword that uniquely identifies it within the Hical object. This allows us to create Profiles that pertain to particular combinations of filter (RED, IR, BG), CCD (RED0-9, IR10/11, or BG12/13), TDI (128, 64, 32, 8), BIN (1, 2, 3, 4, 8, 16) or CHANNEL (0 or 1). These values are determined from the content of the HiRISE label. Combinations of profiles that are added after the initial default are specified in the ProfileOptions keyword. Profile combinations can consist of any combination or use of these defined values. These defined values are specified as or with the Name keyword in Profile groups delimited by curly braces. Given this definition one can specify a particular group of calibration parameters for a specific CCD channel with the pattern {FILTER}{CCD}_{CHANNEL}. Then, one can define a special collection of calibration matrices, keywords or scalars for any one (or none) of the filters. So, for the problematic IR10, you can have a named profile called IR10_1 whose keywords in the profile are loaded when calibrating a IR10_1 channel, thus overriding any defaulted keywords in all profiles. Should named profiles using this option not exist, they are ignored. Also, profiles specified in this manner are loaded in the order specified in the ProfileOptions keyword, thus creating a hierarchy of calibration specification configurations.
OptionKeywords specify replacement patterns that exist in retrieval of all filename references in the configuration file. This includes virtually all files including matrix and CSV files.
Matrices are comma separated values (CSV) files that contain rows and columns as content requires. There is expected content in the CSV matrix file to support 28 HiRISE CCD channels where indicated. Module requirements dictate matrix content, however. There will always be one line for these CSV files since HiRISE detectors are line scan instruments. There will be a minimum of 64 (for summing mode of 16) and a maximum of 1024 (summing mode of 1) samples in these files. The content of these matrix files may also be dependent upon summing mode and the time delay integration (TDI) mode used during image acquisition. TDI allows varying number of line scans, in conjunction with exposure time, to pass over the same point on the surface of Mars to increase the signal-to-noise ration (SNR) as well as resolution. There are 4 selectable modes of TDI: 128, 64, 32 and 8. Coupled with 6 different summing modes (1, 2, 3, 4, 8, and 16), there are at most 24 calibration matrices per set. These matrices are referenced as file paths and patterns of the form:
Flats = $mro/calibration/matrices/A_TDI{TDI}_BIN{BIN}_????.csvHere, {TDI} and {BIN} correspond to the TDI and summing mode used during image acquisition, respectively. Matrix variables are equated to file references using the pattern substituion of keywords enclosed in {} in the configuration file. Matrix file paths are also subjected to pattern replacement in the same fashion as profiles. This will minimize the content management aspect of the configuration file and encourage consistant file naming schemes.
Below is an example of a complete PVL configuration file that demonstrates some of the features described:
# HiRISE Calibration Matricies configuration file # See documentation for the hical application on the content and form of # this file. Object = Hical Program = "hical" Name = "HiMatrices" DefaultProfile = "HiMatrices" /* If you want to rerun hical, you must set PropagateTables to True. Use */ /* this in conjuction with Debug::SkipModule = True option for each module. */ PropagateTables = False /* Define label groups that are loaded for each profile reference */ /* Note all keywords in these groups become available to all profiles. */ /* Thus, you can use them in the OptionKeywords and ProfileOptions keywords */ /* to create very specialized profiles for special needs. */ /* Specify the FPA reference temperature. It is used in several modules so */ /* it is specified at the top level */ LabelGroups = ( "Dimensions", "Instrument", "Archive") /* These keywords are used in ProfileOptions mapping. Note that order and */ /* case matter! WARNING: You can easily break file lookups if these keys */ /* are deleted or modified improperly!!! */ OptionKeywords = ("FILTER", "CCD", "CHANNEL", "TDI", "BIN", "ProductId", "Program", "Module", "OPATH", "CalOptions") /* Additional profile combinations and order load hierarchy. These keywords */ /* are defined when the LabelGroups are loaded. */ /* Kris Becker & Eric Eliason updated 10/24/2008 */ /* ProfileOptions value added: {Module}_{CalOptions} */ ProfileOptions = ("{FILTER}", "TDI{TDI}", "BIN{BIN}", "TDI{TDI}/BIN{BIN}", "{FILTER}{CCD}_{CHANNEL}", "{FILTER}{CCD}_{CHANNEL}/TDI{TDI}/BIN{BIN}", "Debug", "{Module}_{CalOptions}") /* Specify the FPA reference temperature. It is used in several modules so */ /* it is specified at the top level */ FpaReferenceTemperature = 21.0 /* This profile contains parameters pertinent to processing the buffer */ /* pixels for subsequent using in the down-line offset correction, ZeroBufferFit module */ Group = Profile Name = ZeroBufferSmooth Module = ZeroBufferSmooth ZeroBufferSmoothFirstSample = 5 ZeroBufferSmoothLastSample = 11 ZeroBufferSmoothFilterWidth = 201 ZeroBufferSmoothFilterIterations = 2 End_Group /* This profile contains parameters pertinent to processing the down-line offset correction */ /* We do not use this by default because a functional fit misses important bumps and wiggles in */ /* the buffer pixels, which are required to remove similar noise from the image area. */ Group = Profile Name = ZeroBufferFit Module = ZeroBufferFit /* Uncomment to turn off non linear fitting of ZeroBufferSmooth data and pass it thru */ ZeroBufferFitSkipFit = True /* Uncomment to use linear fitting of ZeroBufferSmooth data when non-linear fails */ /* Default is to pass thru filtered ZeroBufferSmooth data */ /* ZeroBufferFitOnFailUseLinear = True */ /* Minimum number of good lines (NLines - (TrimLines/Summing)) to fit */ ZeroBufferFitMinimumLines = 250 /* Maximum number of iterations for the algorithm to converge and */ /* other limits */ MaximumIterations = 100 MaximumLog = 709.0 /* Convergence parameters for Levenberg-Marquardt algorithm */ /* Equation is solved when |dx_i| < AbsoluteError + RelativeError * |x_i| */ /* where dx is the last step and x is the current step for each i-th */ /* value */ AbsoluteError = 1.0E-4 RelativeError = 1.0E-4 /* Filtering of the guestimate buffer */ GuessFilterWidth = 17 GuessFilterIterations = 1 # DumpModuleFile = "{ProductId}_{Module}.log" End_Group /* This profile contains parameters pertinent to processing the offset in the columns */ Group = Profile Name = ZeroReverse Module = ZeroReverse /* Set calibration parameters for hiclean operations. Indexes are all 0-based */ ZeroReverseFirstLine = 1 ZeroReverseLastLine = 19 /* Reverse Clock trigger Statistics profiles */ ReverseClockStatistics = "$mro/calibration/matrices/beta/ReverseClockStatistics.????.conf" RevLisTolerance = 1 RevHisTolerance = 1 RevNulTolerance = 1 End_Group /* Skip reverse clock if the ReverseReadoutNoise is to large */ /* Profile added by Kris Becker & Eric Eliason, 10/25/2008 */ Group = Profile Name = Zz_ReverseReadoutNoise Debug::SkipModule = True End_Group /* This profile contains parameters pertinent to processing dark current. */ /* Required label keywords: Summing, Tdi, FpaPositiveYTemperature, */ /* and FpaNegativeYTemperature, Lines */ /* Also needs LineTime which is computed. */ Group = Profile Name = ZeroDark Module = ZeroDark /* Define the B matrix file reference */ B = "$mro/calibration/matrices/beta/B_TDI{TDI}_BIN{BIN}_hical_????.cub" SkipLines = 1 Slope = "$mro/calibration/matrices/beta/t_slope_CH{CHANNEL}_hical_????.csv" Intercept = "$mro/calibration/matrices/beta/t_intercept_CH{CHANNEL}_hical_????.csv" /* As of version 0020, 9 March 2010, we will be using the following names and formats */ /* We are calling this the DarkCurrent now. The filename will stay the same (with a .csv extension) */ DarkCurrent = "$mro/calibration/matrices/beta/B_TDI{TDI}_BIN{BIN}_hical_????.csv" DarkCurrentColumnName = "{CCD}/{CHANNEL}" /* The slope and intercepts to the temperature-dependent correction to the dark current are given below. */ DarkSlope = "$mro/calibration/matrices/beta/B_Temperature_Slope_hical_????.csv" DarkSlopeColumnName = "CH{CHANNEL}_TDI{TDI}" DarkIntercept = "$mro/calibration/matrices/beta/B_Temperature_Intercept_hical_????.csv" DarkInterceptColumnName = "CH{CHANNEL}_TDI{TDI}" /* Do filtering? */ ZeroDarkFilterWidth = 3 ZeroDarkFilterIterations = 1 End_Group /* This profile contains parameters pertinent to processing dark current based on temperature. */ /* Required label keywords: Summing, Filter, Tdi, Ccd, Channel, FpaPositiveYTemperature, */ /* FpaNegativeYTemperature, Lines */ Group = Profile Name = ZeroDarkRate Module = ZeroDarkRate /* Comment out the following keyword and add it to the ZeroDark profile to use the */ /* new ZeroDarkRate module for dark current correction instead of ZeroDark */ Debug::SkipModule = True /* Define the B matrix file reference */ /* As of version NNNN, 28 February 2021, we have added a new, optional, dark current correction, which */ /* we are calling ZeroDarkRate. The calibration files associated with this new module are called ZeroDarkRate */ DarkRate = "$mro/calibration/matrices/DarkRate_{FILTER}{CCD}_{CHANNEL}_TDI{TDI}_BIN{BIN}_ADC54_hical_????.csv" End_Group /* This profile contains parameters pertinent to processing the nonlinear gain correction */ Group = Profile Name = GainNonLinearity Module = GainNonLinearity /* Define the nonlinearity correction coefficients */ NonLinearityGain = "$mro/calibration/matrices/beta/Gain_NonLinearity_BIN{BIN}_hical_????.csv" NonLinearityGainRowName = "{CCD}_{CHANNEL}" End_Group /* This profile contains parameters pertinent to processing down-line gain correction. */ /* Required label keywords: CpmmNumber, ChannelNumber, Lines */ /* This module has been reactivated as of 2010-01-29 */ Group = Profile Name = GainLineDrift Module = GainLineDrift SkipLines = 1 /* Added "_hical" to filename as of 2008-04-02. This is consistant with */ /* naming convention used for the beta version of hical. */ GainLineCoefficients = "$mro/calibration/matrices/beta/line_correct_{BIN}_hical_????.csv" /* As of version 0020, 9 March 2010, these are more correctly, called the LineGainDrift correction*/ LineGainDrift = "$mro/calibration/matrices/beta/Line_Gain_Drift_BIN{BIN}_hical_????.csv" LineGainDriftColumnHeader = True LineGainDriftRowName = "{CCD}/{CHANNEL}" End_Group /* This profile contains parameters pertinent to processing gain correction. */ /* Required label keywords: CpmmNumber, ChannelNumber, Lines */ Group = Profile Name = GainChannelNormalize Module = GainChannelNormalize /* Define the G matrix file reference */ G = "$mro/calibration/matrices/beta/G_TDI{TDI}_BIN{BIN}_hical_????.cub" /* As of version 0020, 9 March 2010, these coefficients have been renamed to Gains. */ Gains = "$mro/calibration/matrices/beta/Gains_hical_????.csv" GainsRowName = "{BIN}" GainsColumnName = "{CCD}/{CHANNEL}" End_Group /* This profile contains parameters pertinent to processing gain correction. */ /* Required label keywords: CpmmNumber, ChannelNumber, Tdi, Lines */ Group = Profile Name = GainFlatField Module = GainFlatField /* Define the A matrix file reference */ A = "$mro/calibration/matrices/beta/A_TDI{TDI}_BIN{BIN}_hical_????.cub" /* As of version 0020, 9 March 2010, These have the same filename with a .csv extension.*/ /* As of version 0020, 9 March 2010, These coefficients are now called Flats. */ Flats = "$mro/calibration/matrices/beta/A_TDI{TDI}_BIN{BIN}_hical_????.csv" FlatsColumnName = "{CCD}/{CHANNEL}" End_Group /* This profile contains parameters pertinent to processing */ /* temperature-dependant gain correction. Formally in GainFlatField module. */ /* Required label keywords: CpmmNumber, ChannelNumber, Samples */ Group = Profile Name = GainTemperature Module = GainTemperature /* Define temperature-dependant gain correction CSV file */ FpaTemperatureFactorSkipLines = 4 FpaTemperatureFactorHeader = True FpaTemperatureFactorFile = "$mro/calibration/matrices/beta/FpaTemperatureGain_BIN{BIN}.????.csv" /* As of version 0020, 9 March 2010, This is now called the FPAGain. */ FPAGain = "$mro/calibration/matrices/beta/Temperature_Gain_????.csv" FPAGainColumnName = "{CCD}/{CHANNEL}" FPAGainRowName = "{BIN}" End_Group /* This profile contains parameters pertinent to processing I/F conversion. */ /* Required label keywords: ScanExposureDuration */ Group = Profile Name = GainUnitConversion Module = GainUnitConversion /* I/F correction for tdi/bin - currently set at 1.0 for all tdi/bin */h /* combinations. */ GainUnitConversionBinFactor = 1.0 End_Group /* Here are the filter profiles. All keywords that pertain to a filter set */ /* should be specified here. FilterGainCorrection are I/F corrections in */ /* units of DN/s. */ /* Added CalFact, CCD QE, Temp dependence correction 2010-04-28 */ Group = Profile Name = RED FilterGainCorrection = 157510165.0 IoverFbasetemperature = 18.9 QEpercentincreaseperC = 0.0005704 AbsGain_TDI128 = 6.3688 End_Group Group = Profile Name = IR FilterGainCorrection = 56392816.0 IoverFbasetemperature = 18.9 QEpercentincreaseperC = 0.002696 AbsGain_TDI128 = 6.9809 End_Group Group = Profile Name = BG FilterGainCorrection = 114682896.0 IoverFbasetemperature = 18.9 QEpercentincreaseperC = 0.00002295 AbsGain_TDI128 = 6.9738 End_Group Group = Profile Name = IR10_1 # LastGoodLine = 3100 End_Group Group = Profile Name = Debug /** Current disables writting to label history due to bug in keyword formatter in ISIS **/ /* The bug has the following error signature: */ /* terminate called after throwing an instance of 'std::out_of_range' */ /* what(): basic_string::substr */ /* Abort */ /* You must set this to false when this occurs as a workaround and use the */ /* DumpHistoryFile parameter to see the parameter history. */ LogParameterHistory = False /* Uncomment this line to write parameter history to the ProductId log */ DumpHistoryFile = "{OPATH}/{ProductId}.{Program}.log" /* Uncomment this line to dump Module data for every module when using Debug */ /* profiling. */ DumpModuleFile = "{OPATH}/{ProductId}_{Module}.log" End_Group End_Object
The filter profiles each contain a scalar constant of the same name for each of the three filter sets. The ProfileOrder keyword contains the {FILTER} pattern that will select the appropriate filter gleened from the label. Other profiles that satisfy the remaining patterns are excluded but can be added when necessary.
The final resutling matrices, constants and keywords used in the calibration equation are recorded in the RadiometricCalibration group of the output label.
Parameter | Description |
---|---|
Program | This keyword is set to the name of the application and can be used to create unique filenames as described previously. |
Name | The name of the current profile. This keyword is required and is present in the Object keyword section as well as in all other Profile groups. This uniquely identifies the final comingled profile. |
DefaultProfile | This names the default profile that is loaded when none are specifically called for in the application. It can be any profile but is generally the Object profile (Debug might be an interesting alternative). This will cause no other profiles to be added when a generic one is retrieved. |
PropagateTables | Specifies the behavior of the table propagation of the FROM file to the TO file when the file is completed. This has some interesting implications. When False, all Table objects in the FROM file are removed in the TO file, which in effect prevents hical from being able to run again. However, because of debugging capabilities, one may want to select which calibration modules are run. Setting this to True will propagate all Table objects (BLOBs) in the FROM file to the TO file so that hical can be run again to apply other modules. |
LabelGroups | This keyword identifies which Groups in the FROM ISIS cube label are included in profiles. This allows any label keyword in the ISIS label to become available for profiling and filename generation. Its handy for creating very specific profiles for problem images and other debugging purposes. |
OptionKeywords | This keyword selects other keywords in the configuration file or the FROM label groups as defined in the LabelGroups keyword. This list is used to specify additional profiles that can be loaded (via ProfileOptions) and variable substitution within file names (such as B, G and A matrix files). |
ProfileOptions | This keyword contains the load hierachy pattern of modules/profiles that are evaluated each time a module is invoked. All values in this keyword are an additional potential module that will be loaded into the existing module keyword definition set if it exists in the config file (provided by CONF). The values enclosed in {} are presumed to be an existing keyword in the current state of the module keyword set. If the keyword exists, its value is used to search for an additional module that will be loaded into the current module keyword list. If it doesn't exist, it is ignored. |
FpaReferenceTemperature | This specifies the reference temperature, in units of Celsius, used to normalize temperature-dependant radiometric calibration variables. It is specified here since it is used in several modules. |
Debug::SkipModule | This special keyword exists to provide the ability to complete bypass processing of a module. If this configuration keyword resolves to True in any module configuration profile, then the module is not invoked and the resulting contribution is set appropriately such that it does not contribute to the calibration process. This is very useful for debugging and seeing how each module contributes. Be sure to set ProgagateTables to True if you intend to perform subsequent runs of hical. |
OPATH | This keyword is the value of the OPATH parameter entered when the program is executed. It can be used to specify a path where log files are written when that option is invoked. If the user did not specify a value for this keyword, the current path is supplied by default. |
DumpModuleFile | This special keyword exists to provide the ability to dump data from each Module. Each Module implements a data dump that will be written to this file. The file name can be made up of a combination of any label or configuration keyword. The example provided in the config file section uses the ProductId and the name of the Module with a .log extension. This keyword can be included in individual Module Groups or at the top level which will effectively dump all Modules. Note that the GainUnitConversion Module is excluded from this feature as its data are contained entirely in the history report. |
DumpHistoryFile | This special keyword exists to provide the ability to dump the Module history from each Module. Each Module maintains a processing history that will be written to this file. The file name can be made up of a combination of any label or configuration keyword. The example provided in the config file section uses the ProductId and the name of the Program with a .log extension. |
The following tables describe hical module processing overview. A general description of the module processing steps and configuration file parameters for the modules are provided. Note that each module contains a Name and Module parameter that are always the module name (e.g., ZeroBufferSmooth). They are excluded from each module description below due to the redundant nature of the keywords and for brevity unless they are set to something other than the module name.
Note that all module group descriptions are profiles. Not all profiles are modules. Multiple profiles can be loaded to fully define a set of module parameters. The order of potential profiles that are loaded in addition to the one requested directly in hical application is specified by the ProfileOptions keyword as described above.
Parameter | Description |
---|---|
ZeroBufferSmoothFirstSample | Specifies the first (0-based indexed) BufferPixels sample to start the average. |
ZeroBufferSmoothLastSample | Specifies the last (0-based indexed) BufferPixels sample to end the average. |
ZeroBufferSmoothFilterWidth | Specifies the width of the filter to smooth and fill gaps in the resulting BufferPixels averages. [Default: 201] |
ZeroBufferSmoothFIlterIterations | Specifies the number of sequential filters to apply to the averaged buffer pixels before finally filling with a spline. [Default: 2] |
Parameter | Description |
---|---|
ZeroBufferFitSkipFit | This parameter can be used to turn on/off the non-linear fitting process described above. When missing or set to TRUE, the result of the ZeroBufferSmooth module is used. If FALSE, the ZeroBufferFit fitting is applied using the parameters provided. [Default: True, meaning it is currently not used] |
ZeroBufferFitOnFailUseLinear | This parameter can be used to select the behavior of the data produced by the ZeroBufferFit module when the non-linear fitting process has failed (typically due to non-convergence). If set to TRUE, a linear fit to the latter half of the ZeroBufferSmooth (BufferPixel) data is computed. If FALSE or non-existent, the result of the ZeroBufferSmooth module is used as is. |
ZeroBufferFitMinimumLines | Minimum number lines required to apply the non-linear fit processing. The actual number of lines used is the total lines less TrimLines/Summing. If there are not enough lines, then the result of the ZeroBufferSmooth module (filtered BufferPixel data) is simply passed through as is. This results in the same behavior when the ZdSkipFit parameter is invoked. |
MaximumIterations | The maximum number of iterations to allow the equation to converge. |
MaximumLog | Constrains the last term in the equation such that the exponent will not cause an overflow. |
AbsoluteError | Specifies the absolute maximum error to determine convergence. |
RelativeError | Specifies the relative maximum error to determine convergence. |
GuessFilterWidth | The data used to fit the non-linear equation can be optionally filtered before fitting. This controls the width of the filter [Default: 17]. |
GuessFilterIterations | This parameter controls the number of times the fit buffer is filtered prior to non-linear fitting. Set this to 0 to turn off this processing and use the data as is. Note this is in addition to the filtering done in the ZeroBufferSmooth module. [Default: 1]. |
Parameter | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|
ZeroReverseFirstLine | Specifies the first line of the Reverse Clocked region in the input FROM file "HiRISE Ancillary Image" data to average for dark current correction. | ||||||||
ZeroReverseLastLine | Specifies the last line in the Reverse Clocked region in the input FROM file "HiRISE Ancillary Image" data to average for dark current correction. | ||||||||
ReverseClockStatistics |
ReverseClockStatistics
|
||||||||
RevLisTolerance | The maximum number of low instrument saturation (LIS) special pixels that can exist in the Reverse Clocked calibration data region. If more LIS pixels exist in this region, then the RevMeanTrigger value is used in lieu of the processed Reverse Clocked data. This value provides the default (1) for all HiRISE images which can be changed/overridden in subsequently loaded profiles (such as the one loaded in the ReverseClockStatistics file). | ||||||||
RevHisTolerance | The maximum number of high instrument saturation (HIS) special pixels that can exist in the Reverse Clocked calibration data region. If more HIS pixels exist in this region, then the RevMeanTrigger value is used in lieu of the processed Reverse Clocked data. This value provides the default (1) for all HiRISE images which can be changed/overridden in subsequently loaded profiles (such as the one loaded in the ReverseClockStatistics file). | ||||||||
RevNulTolerance | The maximum number of null (NUL) special pixels that can exist in the Reverse Clocked calibration data region. If more NUL pixels exist in this region, then the RevMeanTrigger value is used in lieu of the processed Reverse Clocked data. This value provides the default (1) for all HiRISE images which can be changed/overridden in subsequently loaded profiles (such as the one loaded in the ReverseClockStatistics file). |
Parameter | Description |
---|---|
DarkCurrent | This is the "B-matrix" as generated from the residuals left from the previous calibration steps performed on (some) dark frame (night-side) calibration imaging. |
DarkSlope | Specifies the file pattern containing the slope component (m) of the Temperature profile in the above "y=mx+b" equation. |
DarkIntercept | Specifies the file pattern containing the intercept (b) component of the Temperature profile in the above "y=mx+b" equation. |
ZeroDarkFilterWidth | Width of the smooth filter component for the temperature profile applied after the data has been expanded or contracted to fit the binning mode of the image. |
ZeroDarkFilterIterations | Specifies the number of sequential filters of width ZeroDarkFilterWidth to apply to the resulting temperature profile after expanding or contracting of the data. [Default: 1] |
Parameter | Description |
---|---|
DarkCoeffs | This is the CCD, Channel, TDI, Binning, and ADC dependent coefficients file. |
Parameter | Description |
---|---|
LineGainDrift | Specifies the file pattern containing the 4 line correction parameters (C[1234]) of the gain/line equation as described above. |
LineGainDriftColumnHeader | This parameter specifies whether the LineGainDrift file contains a header line to skip. It is a True/False boolean value. It is needed here to notify the generic CSV parser a column header exists but is not used to resolve the extraction of values from the file. |
LineGainDriftRowName | Specifies the desired row header name contained in the LineGainDrift file from which to extract the applicable 4 parameters. This must be specified to select a specific given row. Its presence in the config file implies a row header exists in the first column of the LineGainDrift file. The value of this parameter is typically specified in the config files as a pattern combination of the CCD and Channel of the image being calibrated. |
Parameter | Description |
---|---|
NonLinearityGain | This is the file pattern containing the GNLc parameter in the above equation. |
NonLinearityGainRowName | Specifies the name of the row in the NonLinearityGain file to extract the coefficient from. The existence of this parameter implies the first column in this file contains a named header for each row. The value of this parameter is typically specifed in the config files as a pattern combination of the CCD and Channel of the image being calibrated. |
Parameter | Description |
---|---|
Gains | This parameter is the file pattern of the "G-matrix" containing the GCNc parameter in the equation above. |
GainsRowName | This parameter specifies the name of the row in the Gains file from which to extract the GCNc parameter. Its existence implies a row header exists in the first column of the file. Its value is a function of the binning mode of the image being calibrated. |
GainsColumnName | This parameter specifies the name of the column in the Gains file from which to extract the GCNc parameter. Its existence implies a column header exists in the first row of the file. Its value is a combination of the CCD and Channel of the image being calibrated. |
Parameter | Description |
---|---|
Flats | This parameter is the file pattern of the "A-matrix" containing the per-sample flatfield correction parameter. |
FlatsColumnName | This parameter specifies the name of the column in the Flats file from which to extract the flat field parameter. Its existence implies a column header exists in the first row of the file. Its value is a combination of the CCD and Channel of the image being calibrated. |
Parameter | Description |
---|---|
FPAGain | This parameter is the file pattern of the FPA factor for the temperature dependent gain coefficient. |
FPAGainColumnName | This parameter specifies the column name pattern of the desired parameter in the FPAGain . The value of this parameter is typically specifed in the config file as a pattern combination of the CCD and Channel of the image being calibrated. |
FPAGainRowName | Specifies the desired row header name contained in the FPAGain file from which to extract the applicable parameter. This must be specified to select a specific given row. Its presence in the config file implies a row header exists in the first column of the FPAGain file. The value of this parameter is typically specifed in the config file as a pattern for the binning/summing node of the image being calibrated. |
Parameter | Description |
---|---|
GainUnitConversionBinFactor | Specifies the factor that takes into account binning of the image data. It is currently set to 1.0. |
FilterGainCorrection | Specifies the filter dependent gain correction factor. Note that these values are found in the BG, RED, and IR profiles and hical relies on the profile options to load the proper parameter at runtime. |
IoverFbasetemperature | Base temperature I/F conversion factor that is filter-dependent. This parameter is found in the filter dependent profiles BG, RED and IR and relies on the profile options to load the proper parameter in at runtime. |
QEpercentincreaseperC | Measurement of quantum efficiency increase per 1C assuming linear with temperature. This parameter is found in the filter dependent profiles BG, RED and IR and relies on the profile options to load the proper parameter in at runtime. |
AbsGain_TDI128 | Normalization of absolute gain to TDI 128. All other TDIs are scaled by this parameter. This parameter is found in the filter dependent profiles BG, RED and IR and relies on the profile options to load the proper parameter in at runtime. |
If run on a non-spiceinited cube, this program requires access to local mission-specific SPICE kernels, in order to find the distance between the sun and the target body. When run on a spiceinited cube, this can be determined using the camera model. Using a spiceinited cube as input has the advantage of not requiring that local mission-specific kernels be available. (See spiceinit web=true.)
Name | Description |
---|---|
FROM | Input cube to calibrate |
CONF | File containing HiRISE calibration and matrix configuration parameters |
TO | Output radiometrically corrected cube file |
Name | Description |
---|---|
PROFILE | Name of specific configuration profile to use |
UNITS | Desired output calibration units |
OPATH | Alternative path to use when logging is invoked |
The name of the cube to which the correction will be applied. The correction will apply to every non-special pixel in the image.
Type | cube |
---|---|
File Mode | input |
Filter | *.cub |
This file is critical to the proper functioning of hical. It contains parameters that are loaded to provide necessary data used in the calibration of HiRISE CCD channels. It is extensively documented in the main documentation section of this application.
Type | filename |
---|---|
File Mode | input |
Default Path | $mro/calibration |
Default | $mro/calibration/hical.????.conf |
Filter | *.conf |
Use this parameter to specify the name of the output cube. If you do not include an extension of ".cub" it will be added automatically.
Type | cube |
---|---|
File Mode | output |
Pixel Type | real |
This is the name of a named Profile group in the hical matrix configuration file that users can choose for specific selection of HiRISE calibration parameters and matrix files.
Note that when using this option, the additional profiles specified in the ProfileOptions key are not applied. This option is primarily to assist in testing and specific application conditions.
Type | string |
---|---|
Internal Default | None |
A feature which calculates the average on each channel and multiplies one side with the ratio of the averages
Type | string | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Default | IOF | ||||||||||||
Option List: |
|
This parameter is used to specify a directory path that is intended to be used in output file specifications. OPATH can be useful for directing specifically where log files are written when that option is invoked. This option is automatically added and available to all profiles and is included in the output specifications of all log files.
The default behavior is to place all log files in the same directory as the output file specifed in the TO parameter.
Type | string |
---|---|
Internal Default | None |
Drew Davidson | 2005-06-27 | Original version |
Drew Davidson | 2005-06-27 | Wrote application test |
Drew Davidson | 2005-08-17 | Added examples |
Kris Becker | 2005-10-03 | Added processing of DarkPixel object data. The median of the 16 dark pixels in subtracted from the original DN. Also added the DARKSTATS output file. |
Kris Becker | 2007-07-02 | Extensively modified to implement latest state of HiRISE calibration. |
Kris Becker | 2008-01-12 | This version is created from hical as a starting point. It has been again extensively modified for maximum flexibility and usefullness. |
Kris Becker | 2008-02-08 | Corrected the DriftCorrect class to properly compute the initial guess of the fit parameters. It was not quite the same as the model. Also added capability to dump individual module data via the configuration file. |
Kris Becker | 2008-03-11 | Added the OPATH parameter and made it available for subsititution in the configuration parameters; Added the ZdSkipFit configuration parameter to skip the non-linear fitting process in the Zd module (when invoked, it will use the result of the Zf module); Added in the percent additional contribution for the FPA temperature/gain correction; Added ZdMinimumLines option to constrain the size of an image that is fitted (properly). |
Kris Becker | 2008-04-01 | Added missing factor (128/tdi/bin^2) to Zgg G-matrix gain module. Explicitly recognize Phobos and Deimos targets as Mars so that I/F can be computed. |
Kris Becker | 2008-04-02 | Fixed removal of HiRISE calibration ancillary BLOBS (tables) so that it only removes these tables and not all others, such as SPICE tables. |
Steven Lambright | 2008-05-12 | Removed references to CubeInfo |
Kris Becker | 2008-05-23 | Added the ZdOnFailUseLinear flag to specify behavior when the non-linear DriftCorrect Zd module fails. |
Kris Becker | 2008-06-11 | Change default Zf filter defaults to 201 width with 2 interations; Add reporting of raw buffer data to Zf module data dump; Added computation of average and standard deviation to difference of raw buffer and post filtering in Zf module; Set Zd default behavior to skip LM fitting and eliminate unnecessary linear fitting in skip mode. |
Kris Becker | 2008-06-13 | Abstracted Buffer pixel processing to DriftBuffer class (Zf); Added robustness to some module dumps (Zf, Zb, Za); Added statistics computations to several modules (Zf, Zz, Zb,Za); Abstracted dark offset processing of Reverse Clocked data to OffsetCorrect class (Zz). |
Jeannie Walldren | 2008-11-05 | Replaced references to DataInterp class with NumericalApproximation. |
Kris Becker | 2008-11-17 | Added additional code to implement Zz module trigger options. This option provides the ability to trigger a constant used in the Reverse Clocked calibration data based upon noise. See the discussion on the Zz module in this program documentation. |
Kris Becker | 2009-09-15 | Change default for OPATH to output (TO) directory; Removed the IOF parameter and replaced it with the UNITS parameter; Added the Zt module which corrects temperature dependant gain previously in the Za module; updated documentation. |
Kris Becker | 2010-04-27 | Added generalized CSV file access; renamed many of the modules names to be better maintainable; moved all module implementations to classes/headers with the same name. |
Kris Becker | 2010-05-20 | Added GainNonLinearity module and support for it. It now requires two loops through each line as a median value in mid-calibration is needed in subsequent application of this new module's contribution. All ancillary file access is using the new generalized CSV format. |
Kris Becker | 2010-05-26 | Corrected sign for temperature gain coefficient. |
Kris Becker | 2010-11-04 | Renamed many of the modules to better reflect their function. Extensively updated the program documentation. |
Kris Becker | 2011-09-18 | Merged hicalbeta changes into hical to make new release |
Stuart Sides | 2021-02-24 | Added ability to get sun distance from the camera. |
Moses Millazo and Jesse Mapel | 2021-06-01 | Added the new ZeroDarkRate module to improve the dark current correction in images with higher average temperatures. use the config file $ISISDATA/mro/calibration/hical.0023_darkrate.conf to enable the new ZeroDarkRate module instead of the old ZeroDark module. |