Summary

The BasicPlatform plugin was created to provide backward compatibility in DIRSIG5 for the sensor collection capabilities in DIRSIG4.

Input

The inputs to this plugin are the DIRSIG4 era platform, motion (either a GenericMotion or a FlexMotion description) and a tasks file. This allows the plugin to emulate the sensor collection capabilities in DIRSIG4.

Implementation Details

Spatial and Temporal Sampling

This sensor plugin performs spatial and temporal sampling differently than DIRSIG4 did. Specifically, DIRSIG4 used discrete sampling approaches to separately sample the spatial and temporal dimensions of flux onto a given pixel and DIRSIG5 simultaneously samples the spatial and temporal dimensions with uniformly distributed samples.

In DIRSIG4, the amount of sub-pixel sampling was controlled on a per focal plane basis using rigid N x M sub-pixel sampling. Furthermore, delta sampling vs. adaptive sampling was a choice for the user. In contrast the BasicPlatform plugin uniformly samples the detector area and the number of samples used for each pixel is adaptive and driven by the convergence parameters. In general, the entire spatial response description in the input file is ignored by this plugin.

The DIRSIG4 temporal integration feature included an integration time and an integer number of samples to use across that time window. The temporal sampling approach brute-force resampled the entire detector for each sample, which resulted in a proportional increase in run-time. The DIRSIG5 BasicPlatform plugin ignores the number of temporal samples and instead uniformly distributes the ray times across the integration time window.

Experimental Features

This plugin includes a few experimental features that may become permenant features at some point in the future. Please utilize these features with caution since the feature maybe removed or replaced by a more mature version.

Point Spread Function (PSF)

The user can currently describe the modulation transfer function (MTF) of the optical system via a single Point Spread Function (PSF). Note that a single PSF is provided and hence, this is currently not a position dependent PSF. This feature is enabled by manually editing a DIRSIG4 .platform file and injecting the <psf> XML element in the <focalplane> element (see example below):

           <focalplane ... >
              <spectralresponse ... >
                ...
              </spectralresponse>
              <spatialresponse ... >
                ...
              </spatialresponse>
              <psf>
                <image>psf/airy_psf.png</image>
                <scale>10</scale>
              </psf>
            </capturemethod>
            <detectorarray spatialunits="microns">
              ..
            </detectorarray>
           </focalplane ... >
Important As an unofficial/experimental feature, the <psf> element will get deleted if the user loads and saves the .platform file in the graphical user interface.

The PSF is supplied as a grayscale image file (JPG, PNG, TIFF, etc. via the <image> element) and the user must define the extent of the image in pixels widths (via the <scale> element). In the example above, the Airy disk pattern in the PNG file has an equivalent width of 10 pixels.

The PSF image is used in a 2-step importance sampling scheme to emulate the convolution of the PSF with the pixel area. In general, more samples per pixel are required to faithfully reproduce the impacts of the PSF on the output.

Active Area Mask

The user can supply an "active area mask" for all the pixels in the array via a grayscale image file. The brightness of the pixels are assumed to convey the relative sensitivty across the pixel area. A mask pixel value of 0 translates to zero sensitivity and a mask pixel value of 255 translated to a unity sensitivity. Hence, areas of the pixel can be masked off to model front-side readout electronics or to change the shape of the pixel (e.g. circular, diamond, etc.). The mask is used to overrride the uniform pixel sample with an importance based approach. Therefore, the active area image can contain gray values (values between 0 and 255) that indicate the pixel has reduced sensitivity in that specific area.

The active area mask is supplied via the <activearea> XML element within the <focalplane> element (see example below):

           <focalplane ... >
              <spectralresponse ... >
                ...
              </spectralresponse>
              <spatialresponse ... >
                ...
              </spatialresponse>
              <activearea>
                <image>pixel_mask.png</image>
              </activearea>
            </capturemethod>
            <detectorarray spatialunits="microns">
              ..
            </detectorarray>
           </focalplane ... >
Important As an unofficial/experimental feature, the <activearea> element will get deleted if the user loads and saves the .platform file in the graphical user interface.

The <image> element specifies the name of the 8-bit image file (JPG, PNG, TIFF, etc.) used to drive the pixel sampling.

Note that this pixel area sampling can be combined with the PSF feature described previously.

Usage

The BasicPlatform is implicitly used when the user launches DIRSIG5 with a DIRSIG4 era XML simulation file (.sim). To explicitly use the BasicPlatform plugin in DIRSIG5, the user must use the newer JSON formatted simulation input file (referred to a JSIM file with a .jsim file extension). At this time, these files are hand-crafted (no graphical editor is available). An example is shown below:

[{
    "scene_list" : [
        { "inputs" : "./demo.scene" }
    ],
    "plugin_list" : [
        {
            "name" : "BasicAtmosphere",
            "inputs" : {
                "atmosphere_filename" : "mls_dis4_rural_23k.atm"
            }
        },
        {
            "name" : "BasicPlatform",
            "inputs" : {
                "platform_filename" : "./demo.platform",
                "motion_filename" : "./demo.ppd",
                "tasks_filename" : "./demo.tasks",
                "output_folder" : "output"
                "output_prefix" : "test1_"
            }
        }
    ]
}]

The optional output_folder and output_prefix variables serve the same purpose as (and take presidence over) the respective command-line --output_folder and --output_prefix options.