This document discusses how a user can configure a DIRSIG4 simulation that will produce polarized imagery.
Notation and Definitions
In this document there are serveral terms used to characterize or quantify the state of polarization. For this document, the word unpolarized implies that the light is not polarized or is randomly polarized. The word polarized implies that the light is at least partially polarized, either linearly or circularly. The term depolarize implies a process that converts light from a current state of polarized towards unpolarized or randomly polarized, however, this process may not remove all polarization.
Stokes Coordinates
Here we will talk about the S-P coordinate system, and how polarization is relative to some coordinate system. Here we can outline how global polarization needs to be translated into local polarization to interact with a surface or to be captured by a camera. Pillage figures from Schott’s book and Mike’s thesis.
-
Define what vertical and horizontal linear polarization mean with some figures that clearly indicate the orientation.
-
Define the convention used to define linear polarization angles with some figures that clearly indicate the orientation.
Core Polarization Support
The DIRSIG code base is written in C++ and is extremly object oriented. The DIRSIG support for polarization is built into the model at the lowest levels of the code. The spectral data storage object can be used to store spectral data of various types.
Stokes Vector Data
In some cases, the spectral data type is a Stokes Vector, which can be used to store fluxes including radiances, irradiance, radiant intensities, etc. A Stokes Vector is a 1 x 4 vector representation of flux that is capabile of of storing data ranging from unpolarized (randomly polarized) data, to linearly polarized data, to circularly polarized data and all combinations in between.
\begin{equation} \vec{S} = \left [ \begin{matrix} S_0 \\ S_1 \\ S_2 \\ S_3 \end{matrix} \right ] \end{equation}
Mueller Matrix Data
In other cases, the spectral data type is a Muller Matrix, which can be used to store the optical properties of surfaces including reflectances and emissivities or the optical properties of participating media including scattering coefficients, extinction coefficients, transmissions, etc. A Mueller Matrix is a 4 x 4 matrix that can applied to a Stokes Vector to impart polarization, change polarization and/or remove polarization (depolarize).
\begin{equation} M = \left [ \begin{matrix} m_{00} & m_{01} & m_{02} & m_{03} \\ m_{10} & m_{11} & m_{12} & m_{13} \\ m_{20} & m_{21} & m_{22} & m_{23} \\ m_{30} & m_{31} & m_{32} & m_{33} \end{matrix} \right ] \end{equation}
Stokes-Mueller Calculus
Stokes-Mueller calculus is a specialization of vector matrix math operations that are employed to perform polarized radiometry calculations. For example, the reflection of an incident Stokes Vector entails multiplying that Stokes Vector by a Mueller Matrix that describes the polarized reflectance characteristics of the surface and yields a reflected Stokes Vector:
\begin{equation} \left [ \begin{matrix} S_0 \\ S_1 \\ S_2 \\ S_3 \end{matrix} \right ] = \left [ \begin{matrix} m_{00} & m_{01} & m_{02} & m_{03} \\ m_{10} & m_{11} & m_{12} & m_{13} \\ m_{20} & m_{21} & m_{22} & m_{23} \\ m_{30} & m_{31} & m_{32} & m_{33} \end{matrix} \right ] \left [ \begin{matrix} S_0 \\ S_1 \\ S_2 \\ S_3 \end{matrix} \right ] \end{equation}
In an effort to optimize both memory usage and computations, the Stokes Vector and Mueller Matrix data types in DIRSIG support either a polarized or unpolarized state. If the radiometric term has any degree of polarization, then the data type is a full Stokes Vector (1 x 4 vector) or Mueller Matrix (4 x 4 matrix). However, if the term is completely unpolarized (randomly polarized) then the term can be represented as a single scalar value.
\begin{equation} \vec{S} = \left [ \begin{matrix} S_0 \\ 0 \\ 0 \\ 0 \end{matrix} \right ] \rightarrow \left [ S_0 \right ] \end{equation}
\begin{equation} M = \left [ \begin{matrix} m_{00} & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{matrix} \right ] \rightarrow \left [ m_{00} \right ] \end{equation}
When working with unpolarized terms, the Stokes-Mueller calculations operations can be simplified in an effort to eliminate math operations. For example, the multiplication of two polarized Mueller Matrix terms involves 16 multiplication and 12 addition operations. However, the multiplication of two unpolarized Mueller Matrix terms is single (scalar) multiplication. If any term in the radiometric chain is unpolarized, then the flux will be completely depolarized by that term.
\begin{equation} \left [ \begin{matrix} S_0 \\ 0 \\ 0 \\ 0 \end{matrix} \right ] = \left [ \begin{matrix} m_{00} & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{matrix} \right ] \left [ \begin{matrix} S_0 \\ S_1 \\ S_2 \\ S_3 \end{matrix} \right ] \end{equation}
By internally tracking if a Mueller Matrix is unpolarized, a significant number of mathermatical operations can be avoided. In the above example featuring an unpolarized Mueller Matrix, the Stokes-Mueller calculus can simply be simplified to simply a scalar product as:
\begin{equation} \left [ m_{00} \right ] \left [ S_0 \right ] = \left [ \begin{matrix} m_{00} & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{matrix} \right ] \left [ \begin{matrix} S_0 \\ S_1 \\ S_2 \\ S_3 \end{matrix} \right ] \end{equation}
This is just one example of how the Stokes-Mueller calculus can be optimized for special cases. Optimizations like these are done at the lowest level of the DIRSIG code and is not something the user needs to worry about. In addition to making polarized DIRSIG simulations maximally efficient, it allows the same exact DIRSIG core to be used for unpolarized simulations.
Fundamentals of a Polarized Simulation
The fundamentals of a robust polarized image chain simulation with DIRSIG require the following components to be correctly configured:
-
The scene should be illuminated with a polarized atmospheric model.
-
Especially in the reflective regions of the spectrum (visible through mid-wave infrared), the skylight reflected in surfaces is polarized due to molecular and aerosol scattering. If the skylight is not polarized, then the source of polarization will be limited to the surface reflectance.
-
-
The scene needs to contain materials with optical properties that are polarized.
-
This means that reflectance and emissivity properties for all the materials need to produce full Mueller Matrix representations. Otherwise, any flux that interacts with that material will be completely depolarized.
-
-
The sensor needs to capture the incident light using some sort of polarized
Scene Illumination
On of the sources of polarization is that the illumination in the scene is polarized. The primary sources of illumination are the sun, the moon and the sky (which arises from scattered sunlight). The solar, lunar and sky radiation loads in the DIRSIG model are handled by the atmosphere sub-model. In most cases, these sub-models use the SSI atmospheric radiation propagation codes. The primary code used by DIRSIG is the MODTRAN (the MODerate resolution TRANsmission) model.
Object Optical Properties
The DIRSIG model currently supports two internal sources of polarization. One source is an implementation of the polarized version of the classic Torrance-Sparrow BRDF model described by Priest and Germer in their paper "Polarimetric BRDF in the Microfacet Model: Theory and Measurements" This parameterized BRDF model relies on user-supplied a spectral complex index of refraction and surface roughness metric. In practice, the surface roughness is usually treated as a spectral property to acheive better fits to measured data. The second source is an implementation of the polarized background BRDF model described in Jim Shell’s PhD thesis Additional polarized BRDF models are being developed and evaluated by other organizations and more models will be incorporated into DIRSIG at a later time.
The DIRSIG4 radiometry model is a significant redesign of the radiometric modeling used in DIRSIG3. Every object in the DIRSIG simulation has a material assigned to it including internal elements like the sun, moon, sky and the bulk atmosphere. Each material has a radiometry solver assigned to it. A radiometry solver is an object that predicts the flux from an element under a specific set of conditions and using a specific set of material properties. The radiometry solver sub-system is defined by an interface to these computational objects. The most common radiometry solver is the "classic" solver which implements the same surface reflected radiance and emitted radiance algorithm that was used in DIRSIG3. The "classic" solver makes assumptions that each material has a surface emissivity description that can be used to compute the reflectance (assuming that Kirchoff’s Law holds and the reflectance can be computed as 1 minus the emissivity). When the user supplies DIRSIG4 with a DIRSIG3 simulation configuration, scene materials are automatically assigned the "classic" solver. To use other radiometry solvers, the user needs to make changed to the material database, and that process will be discussed in later sections.
The next generation radiometry solver is the "generic" radiometry solver which is a very flexible solver with which the user can assign various surface and bulk optical properties (reflectance, emissivity, scattering and extinction properties) to. These optical properties are defined against defined internal interfaces which allows various optical properties to be abstracted and thus allowing the "generic" radiometry solver to use a very flexible set of surface and bulk optical properties.
In the current version of DIRSIG4, the user has a limited set of optical properties to assign to the "generic" radiometry solver (however, DIRSIG3 had only one). The "classic emissivity" property can be used to model the surface emissivity. This property reproduces the unpolarized emissivity and reflectance support that was modeled in DIRSIG3 (including the classic texture methodology) using the same emissivity files that DIRSIG3 utilized. As an alternative, the user can use the "Priest-Germer" or "ShellBackground" BRDF properties to model a polarizing surface reflectance.
To incorporate polarization signatures into the simulation, the user needs to run a simulation that includes polarized illuminates (provided by a polarized atmosphere model), polarizing surface materials and a way to capture the polarized radiation at the sensor. This section will explain how-to configure these components of the modeling chain.
Polarized Instruments
This section will describe the various options for setting up a polarized receiving instrument in DIRSIG.
-
Raw Capture with spectral-polarimetric output
-
Simple Capture with Stokes Vector output
-
Simple Capture with polarization analyzers
Atmospheric Modeling
Start out with an detailed section of why the sky is polarized and why directly transmitted terms are not.
MODTRAN4-P
To correctly model a polarized scenario you will need to have access to the Air Force Research Laboratory’s (AFRL’s) MODTRAN4-P atmospheric radiation transfer model, which was a polarized varient of the MODTRAN4 code base. This model is currently the only way to provide DIRSIG with model-based atmospheric properties that are polarized. However, the MODTRAN-P model is available only to a select beta-testing community. If you were not already a part of this user community, it is unlikely that you will be able to gain access to this modeling tool.
When the polarization modeling is enabled MODTRAN-P, the radiances produced by the MODTRAN model will be spectral Stokes Vectors (S0, S1, S2 and S3) and a polarization angle. The source of polarization within MODTRAN-P is the scattering phase functions which predict scattered radiances that are polarized. By defintion, the directly transmitted terms (direct solar and lunar) are not polarized since they are not scattered. The model can be used to predict polarized path radiances between the sensor and the scene and to predict a polarized sky.
The DIRSIG4 model supports the MODTRAN-P atmospheric model through
a the Classic atmosphere model and the make_adb
utility. The
configuration and use of this utility for polarization will be
discussed later. In DIRSIG4, the atmospheric modeling is handled
by an atmosphere sub-system that is defined by a specific internal
interface. DIRSIG4 has a growing number of unique atmospheric
models that the user can choose from at run-time. At one end of
the spectrum is the "simple atmosphere" model which has harded coded
solar irradiance, lunar irradiance, and sky irradiance curves. This
model is useful for testing purposes because a rigorous atmospheric
database does not to be constructed for each simulation. More
exotic atmospheric models are under development which support
spatially inhomogenous properties but which require more input data
and run-time resources.
The polarized atmospheric databases produced by the DIRSIG4 version
of make_adb
are handled by the "classic atmosphere" model in
DIRSIG4 which implements the same treatment of the atmosphere that
appeared in DIRSIG3. Polarization support will be added to the new
DIRSIG4 atmospheric models as they near completion.
-
Discuss the details of how to make sure MODTRAN4-P is outputting with the right polarization coordinates.
-
Discuss cross-verification of DIRSIG+MODTRAN4-P with Coulson.
6S
We could include a section that points out how 6S can do polarization but we are not supporting it yet.
Material and Optical Properties
I really don’t want this section to become the only detailed document that outlines the various pBRDF models, radiometry solvers, etc. I think this document should have a table of polarize optical property models, a table of preferred radiomety solvers for polarized simulations, etc. and then separate documents should be written for each component. This sort of document organization would help us for the entire documentation effort and not just this document.
The stuff below was pillaged from the old DocBook based documentation …
As we mentioned before, in DIRSIG4 any element (including internally generated elements) that is included in the radiometric model process is assigned a material. Each material is assigned a radiometry solver object which is a computational object that predicts the flux from a specific element under a specific set of conditions. Each radiometry solver can independently utilize a different approach to predicting the observed flux. For example, a different solver might be used on a scene element like water then would be used for an element like a grass field. To emphasize this approach, we point out that the atmosphere is incorporated into DIRSIG4 by a set of internally managed radiometry solvers that interface directly with the atmospheric model. When a ray intersects the sky dome or the Sun disk, the appropriate solver is run to predict the incident flux from that location in the sky or the Sun.
Different radiometry solvers can be assigned and reassigned to materials on-the-fly which provides DIRSIG4 with a very flexible and power radiative transfer engine.
Overview of the available optical properties
At this time, there are only four different optical properties available that can be assigned to a material. They span the three primary properties (reflectance, emissivity and extinction) that can be assigned to a material:
-
The "ClassicEmissivity" property provides a backward compatibility to the emissivity and derived reflectance values used by DIRSIG3. This includes the ability to read the classic DIRSIG3 emissivity files (usually with a
.ems
extension) and to support the classic DIRSIG3 texture methodology. The computed emissivity and reflectances from this object are unpolarized. -
The "ClassicExtinction" property provides a backward compatibility to the extinction and derived transmission values used by DIRSIG3. This includes the ability to read the classic DIRSIG3 extinction files (usually with a
.ext
extension). The computed transmissions from this object are unpolarized. -
The "PriestGermer" property provides reflectance predictions using a parameterized BRDF model. It reads the BRDF model parameters from an external file and computes polarized reflectances that vary as a function of view and illumination geometry.
-
The "ShellBackground" property provides reflectance predictions using a parameterized BRDF model. It reads the BRDF model parameters from an external file and computes polarized reflectances that vary as a function of view and illumination geometry.
Overview of the available radiometry solvers
At this time, there are two different radiometry solvers that can be assigned to each material:
-
The "Classic" radiometry solver in DIRSIG4 was implemented to provide backward compatibility with DIRSIG3. Under the hood, this solver uses a similar ray-traced illumination loading approach that was used in DIRSIG3 for the BRDF (shape factor) calculations. Like the DIRSIG3 solution, this radiometry solver only allows the user to configure the "classic" emissivity and extinction properties and the number of background illumination samples and bounces are fixed.
-
The "Generic" radiometry solver in DIRSIG4 was implemented to be the next generation surface leaving radiance calculation. The "generic" solver was named such because it is very flexible by allowing the user to choose from a suite of optical properties that are used to compute the reflectance, emissivity and transmission properties of the surface. As more optical properties are added to the system, this solver will become an increasingly more powerful tool that users can utilize to model complex materials or mediums. However, unlike the DIRSIG4 "classic" radiometry solver or the DIRSIG3 calculation, the user has control over the amount of hemispherical sampling and the number of bounces used to solve for the flux reflected by the surface on a per-material basis.
To emphasize the flexibility in this radiometry architecture, we should point out that although each material may be using the same radiometry solver, the solver for each material can be configured with a different set of optical properties, input parameters and options.
Configuring the radiometry solvers
Backward Compatibility
The configuration of the radiometry solver and the related optical properties is defined in the material database file. Although the new radiometry architecture provides a high degree of flexibility, we have included a significant amount of backward compatibility to DIRSIG3 input files. For example, the entries of a DIRSIG3 material file contained references to an emissivity file and an optional extinction file for each material (see below):
MATERIAL_ENTRY { NAME = Example Material #1 ID = 1 SPECIFIC_HEAT = 1.0000 THERMAL_CONDUCTIVITY = 0.0000 MASS_DENSITY = 1.0000 SPECULARITY = 0.0 SOLAR_ABSORPTION = 0.1000 THERMAL_EMISSIVITY = 0.1000 EXPOSED_AREA = 0.1700 THICKNESS = 0.1 EMISSIVITY_FILE = 75.ems EDITOR_COLOR = 0.8200, 0.8200, 0.8200 DOUBLE_SIDED = TRUE }
If the user provides DIRSIG4 with a DIRSIG3 material database file
(usually with a .mat
extension), DIRSIG4 will automatically assign
the "classic" radiometry solver using the "ClassicEmissivity" optical
property to all the materials in the scene. If a specific material
entry also referenced an extinction file, then the "ClassicExtinction"
property will be automatically configured for that material.
Accessing New Features
However to use the new Preist-Germer BRDF model and other optical
properties that will be released at a later time, the user will
want to use the new format of the material database file. The
section below shows the format of a MATERIAL_ENTRY
section that
utilizes the new tags associated with a DIRSIG4 material file:
MATERIAL_ENTRY { NAME = Example Material #2 ID = 5 EDITOR_COLOR = 0.8200, 0.8200, 0.8200 SURFACE_PROPERTIES { EMISSIVITY_PROP_NAME = ClassicEmissivity EMISSIVITY_PROP { FILENAME = 90.ems SPECULAR_FRACTION = 0.0 } } RAD_SOLVER_NAME = Generic RAD_SOLVER { INITIAL_SAMPLE_COUNT = 200 MAX_BOUNCES = 2 SAMPLE_DECAY_RATE = 10 } TEMP_SOLVER_NAME = Therm TEMP_SOLVER { SPECIFIC_HEAT = 1.0000 THERMAL_CONDUCTIVITY = 0.0000 MASS_DENSITY = 1.0000 SOLAR_ABSORPTION = 0.1000 THERMAL_EMISSIVITY = 0.1000 EXPOSED_AREA = 0.1700 THICKNESS = 0.1 } }
The same NAME
and ID
tags appear in the new format. The
differences begin with the new SURFACE_PROPERTIES
section which
is where the user assigns radiational/optical properties to the
material. The format of the various optical properties will be
discussed later.
After the SURFACE_PROPERTIES
section is the new tag RAD_SOLVER_NAME
which allows the user to specify which radiometry solver they wish
to use. At this point, the only valid solvers to request are the
"Classic" and the "Generic" radiometry solver. After this tag is
the RAD_SOLVER
section which is parsed by the requested radiometry
solver. In this example, the RAD_SOLVER
section contains variables
and sections specific to the "Generic" radiometry solver. When
other solvers are available, this section will change on a per-solver
basis reflect the options and inputs unique to that solver.
The first three tags in this example RAD_SOLVER
section are options
for this instance of the Generic Radiometry Solver assigned to this
material. The INITIAL_SAMPLE_COUNT
variable defines how many
background rays will be traced by this solver when it is queried
for a first generation surface (directly viewed by the sensor).
The SAMPLE_DECAY_RATE
defines how quickly the number of samples
will decay for subsequent generations from the INITIAL_SAMPLE_COUNT
.
For example, if the initial sample count is 200 for a material
called "grass" then 200 background rays will be traced when it is
viewed by the sensor. If one of these 200 rays hits the same "grass"
material (perhaps on a hill nearby) and the decay rate is 10, then
only 20 rays will be traced from this second generation surface.
On a third generation "grass" surface the sample count would be
only 2 samples, etc. The MAX_BOUNCES
variable is used to place
a "hard stop" on the number of bounces that are modeled. If the
maximum bounce limit is reached the surface will return 0 flux. In
this example, the 2 samples computed for the third generation surface
in this example will not be traced if the maximum bounce count is
set to 2.
Since these variables can be different for each solver/material, it is entirely possible that the first generation surface in an arbitrary radiative transfer chain will be modeled by fewer samples then a second generation surface. In the future, these values may be automatically derived from the optical properties assigned to the solver, but for now they are user-defined.
Configuring the ClassicEmissivity optical property
The SURFACE_PROPERTIES
section in the previous example uses the
"ClassicEmissivity" optical property to model the emissivity and
reflectance of the material it is assigned to. This was performed
by assigning the name ClassicEmissivity
to the EMISSIVITY_PROP_NAME
variable. Once an instance of this object is created, it then
parses the contents of the EMISSIVITY_PROP
section (see below).
Like we mentioned before, when other emissivity optical property
models are created, each one will most likely have a uniquely
formatted EMISSIVITY_PROP
section.
EMISSIVITY_PROP_NAME = ClassicEmissivity EMISSIVITY_PROP { FILENAME = 90.ems SPECULAR_FRACTION = 0.0 }
In this case, we see that the EMISSIVITY_PROP
section for the "ClassicEmissivity" optical property contains two
variables. The FILENAME
variable points to a
classic DIRSIG emissivity file that is compatible with DIRSIG3.
The SPECULAR_FRACTION
variable is analogous
to the SPECULARITY
variable that appeared in
the DIRSIG3 material files.
Configuring the PriestGermer optical property
The Priest-Germer BRDF model is a reflectance optical property and
it is configured for use by the Generic Radiometry Solver for a
specific material by supplying the name "PriestGermer" to the
REFLECTANCE_PROP_NAME
variable (see below):
REFLECTANCE_PROP_NAME = PriestGermer REFLECTANCE_PROP { PARAMETER_FILE = au-0075.TS.brdf ENABLE_DHR = TRUE ENABLE_SHADOWING_FUNCTION = TRUE }
When the "PriestGermer" reflectance property is
specified the REFLECTANCE_PROP
section
will look like the one featured in the above example.
The PARAMETER_FILE
variable points to
a file containing the parameters for the BRDF model. The
ENABLE_DHR
variable is assigned a boolean value
which enables the use of the internal directional-hemispherical
reflectance (DHR) look-up table which is used to compute a
spectral diffuse term. The only depolarizing contribution
comes from the DHR estimation. If the DHR term is turned
off the surface will be only polarize the reflected light.
The ENABLE_SHADOWING_FUNCTION
controls the
internal self-shadowing from the microfacet distribution used
to model the sub-surface.
The format of the BRDF parameter is simple. The first column is wavelength in microns. The second column is the surface roughness parameter. The third and forth columns are the n and k values for the complex index of refraction. The complex indices of refraction for many materials can be found in the CRC handbook. An example parameter file for aluminum:
0.53904 0.300 0.8260 6.2830 0.56354 0.300 1.0180 6.8460 0.61990 0.300 1.3040 7.4790 0.66678 0.300 1.7410 8.2050 0.77487 0.300 2.6250 8.5970
When the ENABLE_DHR
variable is set to TRUE
, an additional file
named $DIRSIG_HOME/lib/data/DHR.500k.t00-90.s001-050.dat
will be
accessed. This file contains normalization factors for the direct
hemispherical reflectance. Since the Priest Germer model interpolates
solely on surface roughness and complex index of refraction, this
normalization factor file is the same for all materials. A copy
of this file comes with the DIRSIG4 distribution; it should not
normally be necessary to customize it. If a custom table is desired,
the format for the normalization file is:
5 # Number of theta values (i.e. columns of data) 4 # Number of sigma values (i.e. rows of data) # list of zenith angles Sigma 0 10 45 75 90 # data table 0.25 0.95 0.8 0.7 0.6 0.5 0.3 0.8 0.77 0.63 0.55 0.43 ... 0.5 0.75 0.71 0.6 0.5 0.4
Configuring the ShellBackground optical property
The Shell-Background BRDF model is a reflectance optical property
and it is configured for use by the Generic Radiometry Solver for
a specific material by supplying the name "ShellBackground" to the
REFLECTANCE_PROP_NAME
variable (see below):
REFLECTANCE_PROP_NAME = ShellBackground REFLECTANCE_PROP { EMISSIVITY_FILE = grass.ems BRDF_FIT_FILE = grass.fit }
The BRDF_FIT_FILE
, described below indicates the file containing
the fit parameters for the BRDF model. The EMISSIVITY_FILE
indicates a DIRSIG emissivity file. The first curve from this file
will be converted to reflectance and used by the model.
The fit file is composed of two section types. The variable names
used in both cases are identical to those in the thesis. The first
section type, SHARED_FIT_PARAMS
, holds the wavelength-independent
parameters.
SHARED_FIT_PARAMS { RHO_0 = 0.075211 P1 = 1.9582E-03 P2 = 9.8206E-02 P3 = -6.6807E-02 P4 = 1.1251E-02 PF1 = 9.4574E-04 PF2 = 2.9314E-03 PF3 = -1.7853E-03 PF4 = 2.4078E-04 A = 0.119524 B = 0.503486 C = 0.002465 D = 0.009992 E = 1.252179 F = 59.918513 }
The second section type, FIT_PARAMS
, holds wavelength-dependent
parameters. Multiple instances of this section may be present in
a fit file. The model interpolates between available measurements
as described by Gartley (dude, write some stuff here!)
FIT_PARAMS { LAMBDA = 0.550 RHO = 0.075211 K0 = 6.8702 K1 = 0.3881 K2 = 29.0824 }
Current Limitations
At this time, you can configure either a reflectance or emissivity property within one "generic" radiometry solver. You can pair either a reflectance or an emissivity property with the extinction property.
Generating Images
Once the user has correctly configured the inputs, running the model is as straight forward as it has been in the past. There are no command line options that enable the polarization because the DIRSIG4 radiometry engine will automatically switch into a polarized propagation mode when polarizing optical elements are encountered. In the future, there will most likely be an option that disables polarization altogether.
Raw Capture Output
The "Raw" capture method allows the model to produce spectral-polarimetric output that can be processed by external sensor models. When this output is requested, the resulting image data cube is essentially 4-dimensional with 2 spatial dimensions, 1 spectral dimension and 1 Stokes dimension. This image format could be called "Stokes interleaved by Band interleaved by Pixel" which means that the data is organized as such:
[Y0,X0,B0,S0], [Y0,X0,B0,S1], ... [Y0,X0,B0,S3], [Y0,X0,B1,S0], [Y0,X0,B1,S1], ... [Y0,X0,B1,S3], ... [Y0,X0,Bn,S0], [Y0,X0,Bn,S1], ... [Y0,X0,Bn,S3], [Y0,X1,B0,S0], [Y0,X1,B0,S1], ... [Y0,X1,B0,S3], [Y0,X1,B1,S0], [Y0,X1,B1,S1], ... [Y0,X1,B1,S3], ..., [Y0,Xn,Bn,S0], [Y0,Xn,Bn,S1], ... [Y0,Xn,Bn,S3], [Y1,X0,B0,S0], [Y1,X0,B0,S1], ... [Y1,X0,B0,S3], [Y1,X0,B1,S0], [Y1,X0,B1,S1], ... [Y1,X0,B1,S3], ... [Yn,Xn,Bn,S0], [Yn,Xn,Bn,S1], ... [Yn,Xn,Bn,S3]
Where Yi
and Xi
are the spatial X,Y pixel locations, Bi
is
the band/wavelength, and Si
is the Stokes Vector index. The image
data file elements are double-precision floating-point (native
double
) that is written in the native endian. An ENVI
compatible
image header file is automatically generated which should aid in
the parsing of this file.
Simple Capture with Stokes Vector Output
This section will explain how to setup the "Simple" capture method with spectral responses but which output Stokes Vector images directly.
Simple Capture with Polarized Analyzers
This section will explain how to setup the "Simple" capture method with spectral responses that also include a polarized analyzer.
Demonstrations and Examples
Polarization1
Basic reflective polarization demo with the chunky bar using the Priest-Germer pBRDF model with aluminum with different surface roughnesses.
Polarization2
A basic emissive polarization demo with the spheres.
Polarization3
An example setup using the Shell Background model with texture.
Polarization4
A four camera "division of aperture" collection setup.
Polarization5
A 2x2 micro-grid array "division of focal plane" collection setup using a data-driven focal plane setup.