**phohillier** implements a photometric correction based upon a paper
titled "Multispectral Photometry of the Moon and Absolute Calibration of
Clementine UV/Vis Camera" by Hillier, Burratti and Hill, published in Icarus
141, 205-225 (1999). The equation for I/F photometric correction from
this source is:

I/F = (mu0/(mu+mu0)*F(phase)
where:
mu0 = cos(incidence)
mu = cos(emission)
F(phase) = b0*e(-b1*phase) + a0 + a1*phase + a2*phase^2 +
a3*phase^3 + a4*phase^4

The equation described there utilizes the Lommel-Seeliger function to
account for scattering dependance on incidence and emission angles. Lunar
Reflectance approximately follows this function and this is the dependence
expected for signly scattered light. Thus is should be a good
approximation for dark objects such as the Moon where singly scattered
light dominates reflectance. The phase function is a fourth order
polynomial with an exponential term to better account for opposition
surge.

This application provides features that allow multiband cubes to be
photometrically corrected with a properly formatted PVL input file much
like that of ISIS program **photomet**. This application restricts
much of the options available to the more sophiscated photomet
application. Below is an example input parameter file for this
application:

Object = NormalizationModel
Group = Algorithm
Name = Albedo
PhotoModel = Hillier
Incref=30.0
Emaref=0.0
Pharef=30.0
EndGroup
EndObject
Object = PhotometricModel
HillierUnits = Degrees
Group = Algorithm
Name = Hillier
FilterName = "Filter1"
BandBinCenter = 100.1
B0 = 0.0432753
B1 = 0.0644091
A0 = -0.0207532
A1 = 0.00165219
A2 = -3.94007e-05
A3 = 4.19325e-07
A4 = -1.69163e-09
EndGroup
Group = Algorithm
Name = Hillier
FilterName = "Filter2"
BandBinCenter = 112.5
B0 = 0.0332283
B1 = 0.00667452
A0 = -0.0258405
A1 = -9.04379e-05
A2 = 7.59709e-06
A3 = -1.06395e-07
A4 = 5.18268e-10
EndGroup
Group = Algorithm
Name = Hillier
FilterName = "Filter8"
BandBinCenter = 545.3
BandBinCenterTolerance = 1.0E-2
B0 = 0.0347020
B1 = 0.0211712
A0 = -0.0244440
A1 = 0.000388924
A2 = 4.72860e-07
A3 = -5.00731e-08
A4 = 3.07309e-10
EndGroup
EndObject

The NormalizationModel object will (currently) always apply an Albedo
normalization. The value of the Name parameter is ignored here. Also
ignored is the value if PhotoModel as it is always "Hillier". The Incref,
Emaref and Pharef are the incidence, emission and phase angles to be used
as the photometric standard. It will be used to normalize the photometric
correction parameter to these angles. The equation used to create the
photometrically corrected I/F dn is:

odn = idn * (phostd / ph)
where phostd is the Hillier photometry at the given Incref,
Emaref and Pharef angles
ph is the photometric correction for the
incidence, emission and phase at each pixel

In the above example, parameters B0-B1 and A0-A4 are the parameters for
the Hillier equation. Additional parameters area needed in order to apply
a specific set of parameters in an Algorithm group to selected bands. The
set of parameters, B0-B1, A0-A4, within an Algorithm group are applied to
a band if (ABS(Center-BandBinCenter) <= ABS(BandBinCenterTolerance)).
The "Center" parameter in the above equality comes from the Center keyword
in the BandBin group of the input cube file specified in the FROM
parameter. This keyword must exist in the input cube or an error is
generated and the program aborts. BandBinCenter and
BandBinCenterTolerance are contained in each Algorithm group. Only
BandBinCenter is required. If BandBinCenterTolerance is not present in an
Algorithm group a value of 1.0E-6 is used. All input bands in the FROM
file must be matched to at least one of the Algorithm parameters otherwise
an error is generated and the application is aborted.

The parameter HillierUnits is provided to specify if the phase angle is in
units of degrees or radians. It does not have to exist in any group or
even in the top Object section. If it does not exist, "Radians" is the
default.

An additional feature of the PVL structure is that any keyword that exists
in the Object section of the PhotometricModel Object is propagated to each
Algorithm group when it is read in unless the keyword already exists in
the Algorithm group. If a keyword exists in both the PhotometricModel
object and an Algorithm group, the keyword in the Algorithm group has
precedence.

Below is an example of a small PVL file that will process all bands that
have a center wavelength of 100.0 to 900.0 (units do not matter as long as
the PVL ALgorithm groups contain the same units as the BandBin Center
keyword in the input cube file). The units of phase is provided in
Radians for this particular example and is overridden from the keyword in
the PhotometricModel object:

Object = NormalizationModel
Group = Algorithm
Name = Albedo
PhotoModel = Hillier
Incref=30.0
Emaref=0.0
Pharef=30.0
EndGroup
EndObject
Object = PhotometricModel
HillierUnits = Degrees
Group = Algorithm
Name = Hillier
FilterName = "AllFilters"
BandBinCenter = 500.0
BandBinCenterTolerance = 400.0
HillierUnits = Radians
B0 = 0.0347020
B1 = 0.0211712
A0 = -0.0244440
A1 = 0.000388924
A2 = 4.72860e-07
A3 = -5.00731e-08
A4 = 3.07309e-10
EndGroup
EndObject

Additional consequences of the photometric correction processing is any
incidence angle greater than i90 degrees is set to the ISIS special Null
pixel value. And, of course, any ISIS special pixel encountered on input
is propagated to the output TO file without modification.