Summary

The OrthoImage plugin is a sensor plugin that was created to allow users to quickly create orthogonal spectral image cubes of a scene. Unlike a traditional "focal point" or perspective camera geometry model where rays originate from a common point in space, this plugin probes the scene with parallel rays. This plugin was originally developed to simplify the analysis of the spatial and spectral complexity of the scene. However, it was later found to be useful in making quick, low-distortion context images of a scene since the primary inputs are just the ground sampling distance (GSD), the size of the image and the spectral range to be captured.

ortho vs perspective
Figure 1. Perspective vs. Orthographic camera geometry models.

Input

Rather than construct a carefully crafted platform file with a long focal length (to minimize perspective effects), an appropriate platform motion, an appropriate task set and a simplified atmospheric configuration, the plugin dramatically simplifies the simulation configuration. Instead the user defines a streamlined configuration and use it with the desired scene file.

The input configuration for this plugin is a JSON formatted document. An example is shown below:

{
    "bandpass" : {
        "units"   : "microns",
        "minimum" : 0.500,
        "maximum" : 0.800,
        "delta"   : 0.010
    },
    "date_time" : "2009-09-01T12:00:00.0000-05:00",
    "sample_count" : 20,
    "center" : {
        "x" : 655.0,
        "y" : 587.5
    },
    "altitude" : 10000,
    "gsd" : 0.05,
    "size" : {
        "x" : 1024,
        "y" : 1024
    },
    "truth" : ["intersection","sunshadow"],
    "filename" : "tile1_ortho.img"
}
bandpass (required)

The spectral bandpass for the output image to be created. At this time only microns units are supported.

date_time (required)

The date and time of the simulation as an ISO 8601 formatted string.

sample_count (required)

A convenient way to set the number of samples (paths) per pixel to a fixed about. By default, the default convergence setup for the simulation (which can be overridden with the --convergence command-line argument) defines the samples per pixel. This variable will override the default and command-line convergence setup.

gsd (required)

The ground sampling distance (GSD) for the output image to be created. The units are meters.

filename (required)

The name of the output ENVI image file. Note that this plugin supports the --output_folder and --output_prefix command-line options.

size (optional)

The size of the output image file. The default is 1024 x 1024.

center (optional)

The XY location (in the Scene ENU coordinates) for the center of the image. The default is 0,0.

altitude (optional)

The altitude that the scene is being sampled from in meters. The default is 1000.0.

truth (optional)

The list of truth requests to be included in the data cube. These truth values are appended to the output data cube. Note that this plugin supports the --disable_truth_collection command-line option.

flipx and flipy (optional)

The flags to flip the respective X and Y dimensions of the output image. Both default to false.

To use the OrthoImage plugin in DIRSIG5, the user must use the newer JSON formatted simulation input file (referred to a JSIM file with a .jsim file extension). The simulation must also define an atmospheric plugin and an optional ephemeris plugin.

External Configuration

The first option is to capture the plugin configuration in an external JSON file and then supply that filename to the plugin in the inputs section via the input_filename variable:

[{
    "scene_list" : [
        { "inputs" : "./demo.scene" }
    ],
    "plugin_list" : [
        {
            "name" : "BasicAtmosphere",
            "inputs" : {
                "atmosphere_filename" : "uniform.atm"
            }
        },
        {
            "name" : "OrthoImage",
            "inputs" : {
                "input_filename" : "./input.json"
            }
        }
    ]
}]

where input.json contains the JSON configuration like the one shown previously. This approach might be preferred if the same plugin configuration is going to be used across multiple simulations. Perhaps with different scenes or atmospheric plugins.

Internal Configuration

The second option allows the user to make a fully self-contained simulation setup by injecting the plugin configuration directly into the inputs of the plugin:

[{
    "scene_list" : [
        { "inputs" : "./demo.scene" }
    ],
    "plugin_list" : [
        {
            "name": "FourCurveAtmosphere",
             "inputs": {
                "conditions": "mls_rural_10km"
            }
        },
        {
            "name" : "FixedEphemeris",
            "inputs" : {
                 "solar_zenith" : 45.0,
                 "solar_azimuth" : 180.0,
                 "lunar_zenith" : 0.0,
                 "lunar_azimuth" : 0.0,
                 "lunar_fraction" : 0.0
            }
        },
        {
            "name" : "OrthoImage",
            "inputs" : {
                "bandpass" : {
                    "units"   : "microns",
                    "minimum" : 0.500,
                    "maximum" : 0.800,
                    "delta"   : 0.010
                },
                "date_time" : "2009-09-01T12:00:00.0000-05:00",
                "center" : {
                    "x" : 655.0,
                    "y" : 587.5
                },
                "altitude" : 10000,
                "gsd" : 0.05,
                "size" : {
                    "x" : 1024,
                    "y" : 1024
                },
                "filename" : "tile1_ortho.img",
                "truth" : ["intersection","sunshadow"]
            }
        }
    ]
}]

In this example, the FourCurve Atmosphere plugin is used and the default SPICE Ephemeris plugin has been overridden with a Fixed Ephemeris setup.

Output

The output of this plugin is a 3-D spectral image data cube (spatial x spatial x spectral). The units for the data cube are Watts/(cm2 sr micron).