Sensor Calibration and Ground Imaging with EOIR

STK Premium (Air), STK Premium (Space), or STK Enterprise
You can obtain the necessary licenses for this tutorial by contacting AGI Support at support@agi.com or 1-800-924-7244.

Required Capability Install: This lesson requires an additional capability installation for STK EOIR. The EOIR install is included in the STK Premium software download, but requires a separate install process. Read the Readme.htm found in the STK install folder for installation instructions. You can obtain the necessary install by visiting https://support.agi.com/downloads or calling AGI support.

This lesson requires an internet connection and STK 12.9 or newer to complete in its entirety. If you have an earlier version of STK, you can complete a legacy version of this lesson.

The results of the tutorial may vary depending on the user settings and data enabled (online operations, terrain server, dynamic Earth data, etc.). It is acceptable to have different results.

Capabilities covered

This lesson covers the following STK Capabilities:

  • STK Pro
  • Electro-Optical Infrared Sensor Performance (EOIR)

Problem statement

Engineers and operators need to understand how their on-board cameras will behave within the mission context. They want to simulate what a sensor will see if it looks at a different target under different conditions, which is important. If they own the sensor, field tests are expensive and complicated, results are uncertain, and there are no do-overs. If they don't own the sensor, they may want a better understanding of what kind of results it can achieve or perhaps what kind of threat it might present. Many simulation tools are proprietary, classified, or compartmented. STK's EOIR capability is an available commercial-off-the-shelf (COTS) solution.

Solution

You will use STK's Electro-Optical Infrared (EOIR) capability to create a realistic model of a ground imaging sensor from reference images. First you will reconstruct a specific scene with known location and timing and insert an artificial object into the scene. This will result in a sensor image with the target object overlaid on the reference background image. You will use the image to perform in-scene calibration of the sensor and target models. Once you have an acceptably accurate model, you will then explore the potential performance of the sensor in varying conditions. The conditions will include the impact of various atmospheric models and parameters, as well as illumination conditions, including low light.

External files

This lesson will walk through how to use MATLAB to convert a file. Any utility that converts an image file into a CSV file will work for this study.

However, the converted files are available for download via one of the following methods:

  1. Download the three files from the STK Data Federate, AGI Support - Virtual Training - AGI Training Scenarios - Lesson Specific Files - EOIR Sensor Calibration Ground Imaging directory
  2. Click the links below and download each file:
    1. Airport.bmp
    2. Airport.csv
    3. Airport_v2.csv
    4. Airport.jp2

What you will learn

Upon completion of this tutorial, you will be able to:

  • Create system models such as satellite orbits, EO/IR system specs, and sample target objects.
  • Load custom image texture maps into your STK scenario.
  • Conduct in-scene model calibrations with regard to the resolution and sensitivity.

Creating a new scenario

Create a new scenario with a run time of one day.

  1. Launch STK ().
  2. Click Create a Scenario.
  3. Enter the following in the STK: New Scenario Wizard:
  4. Option Value
    Name Ground_Imaging_EOIR
    Start

    30 Jul 2017 00:00:00.000 UTCG

    Stop + 1 day
  5. Click OK when you finish.
  6. Click Save () when the scenario loads. A folder with the same name as your scenario is created for you.
  7. Verify the scenario name and location shown in the Save As window.
  8. Click Save.

Save often!

Verify that EOIR is installed

Ensure that EOIR is installed on your computer. If you do not have the EOIR Toolbar, check the status of your license and whether you have EOIR installed.

  1. Extend the View menu.
  2. Select Toolbars in the shortcut menu.
  3. Select EOIR in the next shortcut menu.
  4. Locate the EOIR toolbar ( ).

Disabling Terrain Server

You will not be using the streaming terrain for this analysis. Disable it in the scenario properties.

  1. Open Ground_Imaging_EOIR's () properties ().
  2. Select the Basic – Terrain page.
  3. Clear the Use terrain server for analysis check box.
  4. Click OK to accept the changes and close the Properties Browser.

Inserting a satellite

You will use SkySat-C3 (SSCN 41774), a satellite launched by Planet, in your mission to image the ground. Insert this satellite into your scenario from the Standard Object Database.

  1. Select Satellite ( ) in the Insert STK Objects tool.
  2. Select the From Standard Object Database () method.
  3. Click Insert....
  4. Enter 41774 into the Name or ID field.
  5. Click Search.
  6. Select the Skysat-C3 from the AGI’s Standard Object Data Service data source.
  7. Click Insert.
  8. Click Close when done.

Modeling the Boston Logan airport

Insert a Place object and locate it near on of the Boston Logan airport terminals. This will be the "target" for the camera on board Skysat-C3.

  1. Select Place ( ) in the Insert STK Objects tool.
  2. Select the Define Properties () method.
  3. Click Insert....
  4. Select the Basic - Position page.
  5. Enter 42.364 deg for the Latitude.
  6. Enter -71.0244 deg for the Longitude.
  7. Click OK.
  8. Right click on Place1 () in the Object Browser.
  9. Select Rename in the shortcut menu.
  10. Rename Place1 () to Boston.

Setting the scenario animation time

Modify the scenario time to match the “acquired” time of the image. From an external source, you know that during the below specified period, the Sky Sat was overhead and was able to capture an image of the ground.

  1. Open Ground_Imaging_EOIR's () properties ().
  2. Select the Basic - Time page.
  3. Clear the Use Analysis Start Time check box in the Animation section.
  4. Enter 30 Jul 2017 15:32:11.507 UTCG in the Start Time field.
  5. Click OK.
  6. Click Reset () in the Animation toolbar.

You can also update the animation time directly in the Animation toolbar.

Computing Access

Now that the time is set, compute access from SkySat to Boston.

  1. Right-click SKYSAT-C3_41774 () in the Object Browser.
  2. Select Access... ().
  3. Ensure SKYSAT-C3_41774 is selected in the Access for field.
  4. Select Boston () in the Associated Objects list.
  5. Click .

Finding the view angle

Generate an AER report to find the elevation angle at the time above.

  1. Click AER... in the Reports section of the Access () window.
  2. Click Show Step Value.
  3. Enter 1 sec in the Step: field.
  4. Click Enter on your keyboard.
  5. Scroll to the 30 Jul 2017 15:32:11.000 in the Time (UTCG) column.
  6. Make note of the Elevation Angle. It is approximately -77 deg. This is a good angle to view the ground site.
  7. Close the report and the Access Tool when finished.

Modeling an EO/IR sensor

Next you will insert a sensor to model EO/IR capabilities. You will keep the default settings for the sensor, but you will reduce the size of the field of view. You don't have to have every specification to start, you can begin with a general model and refine the settings throughout the analysis.

  1. Select Sensor ( ) in the Insert STK Objects tool.
  2. Select the Define Properties () method.
  3. Click Insert....
  4. Select SKYSAT-C3_41774 in the Select Object list.
  5. Click OK.
  6. Rename Sensor1 ( ) to Default_EOIR_1deg.

Updating the sensor type

Update the sensor's properties to model an EOIR Sensor Type with a 1 deg field of view.

  1. Select the Basic - Definition page in Default_EOIR_1deg's () properties.
  2. Set the Sensor Type to EOIR.
  3. Ensure the Spatial tab is selected on the Basic - Definition page.
  4. Set the following options:
    OptionValure
    InputField-of-View and Number of Pixels
    Field of View - Horizontal Half Angle1 deg
    Field of View - Vertical Half Angle1 deg
  5. Click Apply.

Pointing to Boston

Update the sensor's properties to point to Boston.

  1. Go to the Basic - Pointing page.
  2. Set the Pointing Type to Along Vector.
  3. Click Select... next to the Alignment vector field.
  4. Select SKYSAT-C3_41774/Default_EOIR_1deg () on the left of the Select Alignment Vector window.
  5. Expand () To Vectors on the right.
  6. Select Boston ().
  7. Click OK.
  8. Click OK to close the sensor's Properties Browser.

You didn't simply target the ground object. That's because you want to orient the view so that north is at the top of the image. This is a preference and aligns with the general approach of placing north at the top of a map.

Generating a sensor scene

Create an EOIR sensor scene for this sensor at the animation time you set earlier in the lesson (30 Jul 2017 15:32:11.507 UTCG). Generate an image that represents the sensor output.

  1. Select the Default_EOIR_1deg ( ) in the Object Browser.
  2. Click the EOIR Sensor Scene... ( ) in the EOIR toolbar to generate an image that represents the sensor output. Give STK a moment to generate the scene.
  3. Right-click the sensor scene.
  4. Select Details...
  5. Select Scene Detail – Fine.
  6. Click Apply.
  7. Examine the view. You should now see the default Earth background texture. This 1 km texture map that comes with EOIR is adequate for very broad area applications.

Changing the color map

Change the color map.

  1. Select Color Map – BGRY in the EOIR Scene Visual Details window.
  2. Click Apply. Areas that were varying shades of gray are now red, orange, green, brown, and blue.
  3. Click the different colors in the scene. Note the Material type in the EOIR Scene Visual Details window change depending on which part of the scene you have selected. As you click, you should see various kinds of materials listed in the field including Urban, WaterBody, GrassLands, and more.
  4. Select Color Map – Gray Scale in the EOIR Scene Visual Details window.
  5. Click Apply.

Next, examine the reflectance maps.

Creating the reflectance map

Texture maps, like the reflectance map you will use in this lesson, can come from your own sources or you can create them from within STK. Below, you will walk through a work flow for creating your own maps. The example file will be generated from Bing data, which only has red, green, and blue data. You will use the data you have available and extend it to whichever wavebands you use in this study. Please note, the example file has already been converted and is available on the SDF. The link to the file is in this lesson's External Files section.

To create your own image, follow the below procedure for your area of interest. STK's Bing imagery and the snap frame capability is a good option.

Creating the Stored View

Create a Stored View of Boston.

  1. Right-click Boston () in the Object Browser.
  2. Select Zoom To.
  3. Bring the 3D Graphics window to the front.
  4. Zoom out slightly in the 3D Graphics window, so your view looks something like this:

    It is OK if your airport looks different than the picture above. STK automatically updates ground imagery with the latest Bing imagery available. If you want the same imagery as above, you can load in the image file provided on the SDF above (airport.jp2) to the 3D Graphics display. You can also use your own imagery file. Please review the Working with Imagery Help page.

  5. Click Stored Views () in the 3D Graphics toolbar.
  6. Click New.
  7. Change the View Name of view to Boston.
  8. Click OK.

Outlining a target zone

You need to note the corner latitude and longitude points.

  1. Insert an Area Target () object using the Area Target Wizard ().
  2. Type Target_Area in the Name: field of the Area Target Wizard.
  3. Click Insert Point four (4) times.
  4. Enter the following Latitudes and Longitudes in the Points: list in the following order:
  5. Point Latitude (deg) Longitude (deg)
    Point 1 42.3654 -71.0271
    Point 2 42.3631 -71.0271
    Point 3 42.3631 -71.0232
    Point 4 42.3654 -71.0232
  6. Click OK.

Fixing surface lines

You need to change Ground_Imaging_EOIR's () properties to make Target_Area's () surface lines visible since you're not using terrain server.

  1. Open Ground_Imaging_EOIR's () properties ().
  2. Select the 3D Graphics - Global Attributes page.
  3. Open the On Terrain: pull-down menu in the Surface Lines frame.
  4. Select On.
  5. Click OK to accept the change and to close the Properties Browser.

Cleaning up the 3D Graphics window view

Clear up the 3D Graphics window by disabling any visualized object and removing any annotations or overlays.

  1. Click Properties () in the 3D Graphics window toolbar.
  2. Select the Annotation page when the Properties Browser opens.
  3. In the Time frame, clear the following check boxes:
    • Show Time

    • Show Time Step

  4. Clear the Show check box in the View Reference Frame.
  5. Click OK to accept your changes and to close the Properties Browser.

Snapping the frame

Take a snapshot of your 3D Graphics window view.

  1. Click Snap Frame () in the 3D Graphics window toolbar.

  2. Set the File Name to Airport.bmp.
  3. Save the file in your scenario directory.

Converting the image into a CSV file

Your image has three channels (red, green, and blue). You can copy and modify the following MATLAB code for use to normalize across each channel. The MATLAB script below was used to create Airport.csv. You can create your own CSV file or use the one downloaded earlier.

  1. Open MATLAB.
  2. Copy the following script into MATLAB, replacing C:\ with the location of your BMP file
    a=imread('C:\Airport.bmp');
    b=mean(a,3);
    imagesc(b)
    b=b/max(b(:));
    csvwrite('C:\Airport.csv',b);
  3. Press Enter on your keyboard.
  4. Go to your directory where you saved Airport.csv to confirm that is has been created.

Importing the reflectance map

After downloading the example files, or creating your own, load the file into your scenario for your camera to view.

Opening EOIR Configuration window

Open the EOIR Configuration window.

  1. Click EOIR Configuration () on the EOIR toolbar.
  2. Click Atmosphere and Textures....
  3. Select the Texture Maps page.
  4. Click New Texture Map ().
  5. Set the following:
    OptionValue
    NameReflectance
    TypeReflectance

Loading the texture map file

Load in the texture map file.

  1. Change the Value drop-down menu selection to File.
  2. Click the ellipsis () beside the File: field.
  3. Browse to and select the Airport.csv file.
  4. Click Open.
  5. Set the corner points using the values you noted above or from the table below.
    PointLatitude (deg)Longitude (deg)
    NW Corner42.3654-71.0271
    NE Corner42.3654-71.0232
    SW Corner42.3631-71.0271
    SE Corner42.3631-71.0232
  6. Click OK. Give STK a moment to load the file.
  7. Click OK to close the EOIR Configuration window.

Revisiting the sensor scene

Examine the changes in the EOIR Sensor Scene window. If closed, reopen the EOIR Sensor scene. Otherwise, if it was open, then the scene will automatically update. Examine the changes.

  1. Select the Default_EOIR_1deg ( ) in the Object Browser.
  2. Click the EOIR Sensor Scene ( ) icon in the EOIR toolbar to generate an image that represents the sensor output. Give STK a moment to generate the scene.
  3. Examine the scene. You will see the custom imagery overlaid on the default Earth background:

You can improve EO/IR sensor realism with published specs and some engineering understanding. The following references provide some helpful information about the SkySat imager:

Summarizing some relevant details

Here are some relevant details:

  • The EO/IR sensor has an effective nadir resolution (also called Ground Sample Distance, or GSD) at 450km of 50 cm after super resolution processing. See GSD formula documentation.
  • The optics has a 3.6 m focal length and 35 cm aperture.
  • The effective detector pitch value you get from solving the GSD equation using the values above is 4.0 μm. However, one of the sources gives a value of 6.5 μm. This gives you a range of values to begin with.

Creating a new sensor on the SkySat satellite

You will begin to refine your EO/IR System specs. The system specs can come from open source or published documentation, as you will use here. Over the course of the lesson, you will look at the aperture and focal length, modify the spectral bands, modify the optical and radiometric inputs, and examine the detector pitch.

Inserting a Sensor object

Insert a sensor to model EO/IR capabilities.

  1. Select Sensor ( ) in the Insert STK Objects tool.
  2. Select the Define Properties () method.
  3. Click Insert....
  4. Select SKYSAT-C3_41774 in the Select Object list.
  5. Click OK.
  6. Rename Sensor2 ( ) SkySat_EOIR.

Updating the sensor type

Update the sensor's properties to model an EOIR Sensor Type.

  1. Select the Basic - Definition page in SkySat_EOIR's () properties.
  2. Set the Sensor Type to EOIR.
  3. Ensure the Spatial tab is selected on the Basic - Definition page.
  4. Rename Band1 to PAN.
  5. Click Apply.

Setting the spatial properties

Set the number of pixels to 128 x 128 and detector pitch to 6.5 μm. Even though the SkySat sensor has a much higher pixel count, considering only a subset of its image area will speed up the processing. You can also do this because you will ensure STK points the sensor directly at the desired target and will not need to search a large scene to find it.

  1. Ensure the Spatial tab is selected on the Basic - Definition page.
  2.  Set the Input to Number of Pixels and Detector Pitch.
  3.  Set the following:
    OptionValue
    Number of Pixels - Horizontal128
    Number of Pixels - Vertical128
    Related Detector Parameters - Hoirz Pixel Pitch6.5 um
    Related Detector Parameters - Vertical Pixel Pitch6.5 um

Setting the spectral properties

Set the shortest and longest wavelengths that the sensor responds to.

  1. Select the Spectral tab.
  2.  Set the following:
    OptionValue
    Low0.45 um
    High0.90 um

Setting the optical properties

Set the optical parameters.

  1. Select the Optical tab.
  2.  Set the following:
    OptionValue
    InputFocal Length and Entrance Pupil Diameter
    Effective Focal Length350 cm
    Entrance Pupil Diameter35 cm
  3. Click Apply.

Pointing to Boston

Update the sensor's properties to point to Boston.

  1. Go to the Basic - Pointing page.
  2. Set the Pointing Type to Along Vector.
  3. Click Select... next to the Alignment vector field.
  4. Select SKYSAT-C3_41774/SkySat_EOIR () on the left of the Select Alignment Vector window.
  5. Expand () To Vectors on the right.
  6. Select Boston ().
  7. Click OK.
  8. Click OK to close the sensor's Properties Browser.

Modeling an aircraft object near the airport to image

Now, model a target object, in this case an aircraft parked at the airport. As you can see from the Airport.bmp image, you have two aircraft parked on the tarmac. Load your own aircraft into the scenario, so you can compare it to what the sensor sees in the ground imagery.

Inserting an Aircraft object

Create an aircraft parked at a terminal beside an aircraft image, for comparison.

  1. Select Aircraft ( ) in the Insert STK Objects tool.
  2. Select the Define Properties () method.
  3. Click Insert....
  4. Rename Aircraft1 () to 737.

Setting the aircraft's location

Park the aircraft at a terminal for one day.

  1. Click Insert Point on the Basic - Route page.
  2. Set the following:
    OptionValue
    Route Calculation MethodSpecify Time
    Altitude Reference - ReferenceWGS84
    Latitude42.36384740 deg
    Longitude-71.02423046 deg
    Altitude3 m

    You can also create the first point using 2D or 3D object editing.

  3. Click Copy Point.
  4. Set 31 Jul 2017 00:01:00.000 UTCG as the Time for the second point so it is one day later.
  5. Go to the 3D Graphics - Vector page.
  6. Select the Show check box for Sun Vector.
  7. Click Apply.
  8. Examine the 3D Graphics window to verify the results. In the 3D Graphics window, especially at this angle, you can distinguish your inserted aircraft from the aircraft on the ground. For now, focus the sensor in this direction and examine what it would see in the scene.

Defining the EO/IR shape of the aircraft

EOIR supports custom 3D mesh files, either user-supplied or from the STK install . It’s important to use realistic dimensions for the 3D model you choose, as EOIR will scale the model to match the Max Dimension you enter.

  1. Select the Basic - EOIR Shape page in the Aircraft's Properties ().
  2. Set the following:
    OptionValue
    ShapeCustomMesh
    Max Dimension37 m
    Mesh FileC:\Program Files\AGI\STK 12\EOIR_Databases\PropertyFiles\CustomMeshes\Air\Boeing-737.obj
    MaterialGray Body
    Reflectance25%
  3. Click OK.

Adding the aircraft object to the EOIR configuration

Now that the aircraft is defined, set up the EO/IR sensor so it sees it.

  1. Click the EOIR Configuration () button on the EOIR toolbar.
  2. Select Aircraft/737 () in the list of Available STK Objects.
  3. Click Move () to move Aircraft/737 () to the list of Selected Targets.
  4. Click OK.

Getting the 737 inside the EO/IR sensor frame

The SkySat sensor is already targeted to Boston, so use 3D Object Editing to reposition its coordinates between the 737 aircraft and an adjacent aircraft in the background image. Note, when moving Boston, you can alternatively set the position values on Boston's Basic - Position page. Latitude 42.364 deg, Longitude -71.0244 deg works well.

  1. Bring the 3D Graphics window to the front.
  2. Select Place/Boston in the 3D Object Editor 3D Editing Object drop-down list.
  3. Click Object Edit Start/Accept () to start the editing process.
  4. Press the Shift key on your keyboard.
  5. Left-click near the aircraft to move the Place object to that location.
  6. Click Object Edit Start/Accept () to start the editing process.
  7. Notice in the 3D Graphics window that your aircraft and the aircraft from the image are both in the EO/IR sensor's field-of-view.

Creating a stored view

A stored view makes it easy to get back to the specific time at which you want to render your image.

  1. Set your scenario time to 30 Jul 2017 15:32:11.507 UTCG (if not already set).
  2. Bring the 3D Graphics window to the front.
  3. Click Stored Views () in the 3D Graphics toolbar.
  4. Click New.
  5. Change the View Name to Tarmac.
  6. Click OK.

Generating a sensor scene

Create an EOIR sensor scene. You are now ready to see how well you did!

Generating an image of the sensor output

Generate an image that represents the sensor output.

  1. Select the SkySat_EOIR ( ) in the Object Browser.
  2. Click EOIR Sensor Scene ( ) in the EOIR toolbar to generate an image that represents the radiometric input to the sensor. Give STK a moment to generate the scene.
  3. Right-click the sensor scene.
  4. Select Details...
  5. Select Scene Detail – Fine.
  6. Click OK.
  7. Examine the scene. The 737 aircraft object should now appear within the scene:
  8. Compare the two aircraft in the scene. Although the EOIR target aircraft (737) looks very similar to the aircraft in the image, there are a few differences worth noting.

Exploring the shadows:

EOIR does not render shadows cast from custom 3D mesh objects onto the ground or onto themselves, such as the vertical stabilizer onto the horizontal stabilizer. However, you can see that the proper side of the fuselage is shaded due to the sun’s position and is consistent with other objects in the background image.

  1. Look at the 737's fuselage in the scene.
  2. Notice the proper side of the fuselage is shaded due to the sun’s position. This is consistent with the other objects' shading in the background image.

Exploring the scene contrast

The shaded regions of the EOIR aircraft fuselage show a darker black than almost any other part of the scene. This is especially noticeable between comparable locations on the aircraft fuselage in the background image. There are a couple of potential reasons for this:

  • EOIR does not compute reflections from the sky, which will result in less ambient light and thus starker shadows.
  • The white balance of the background image could be a bit off. One approach to work around this is to convert the image background to a percentile map. Essentially, it will cut out the top 5% brightest and top 5% darkest pixels and rescale the reflectance values accordingly. This is a crude approximation of scaling the image to the dark pixel and light pixel reflectance values, or using the Emperical Line Method (ELM) to calibrate all pixel values. You can do this in MATLAB by recreating the CSV file. You will add a few commands to the end of the code you used above. The additional commands are in bold below. The script in the section below was used to create Airport_v2.csv.

Create the new Airport_v2.csv file. Then load it into your scenario.

Scaling the image

Cut out the top 5% brightest and top 5% darkest pixels and rescale the reflectance values accordingly. The MATLAB script below was used to create Airport_v2.csv. You can create your own CSV file or use the one downloaded earlier.

  1. Open MATLAB.
  2. Copy the below script into MATLAB replacing C:\ with the location of your BMP file
    a=imread('C:\Airport.bmp');
    b=mean(a,3);
    imagesc(b)
    b=b/max(b(:));
    b=b-0.1;
    b(b<0)=0;
    csvwrite('C:\Airport_v2.csv',b);
  3. Press Enter on your keyboard.

Loading the texture map file

Load in the new texture map file.

  1. Return to your STK scenario.
  2. Click the EOIR Configuration () button on the EOIR toolbar.
  3. Click Atmosphere and Textures....
  4. Select the Texture Maps page.
  5. Click the ellipsis () beside the File: field.
  6. Browse to and select the Airport_v2.csv file.
  7. Click Open.
  8. Click OK. Give STK a moment to load the file.
  9. Click OK to close the EOIR Configuration window. Your EOIR scene will look like this. The darkness from the EOIR target aircraft’s shaded fuselage is now much closer to that of the background image.

Changing 737's target reflectance

Besides the shadows, the 737 aircraft itself still appears a little darker than the adjacent aircraft. This could easily be due to the actual reflectance of the real aircraft in the background image, paint color, surface treatments, etc. If your goal is to create an aircraft that matches the imaged aircraft even more closely, you could change the 737’s EOIR Shape Reflectance value to 22%. For more advanced applications, you may want to supply a Spectral Reflectance File. For more information, see the EOIR General Vehicle Shape Properties help page.

  1. Right-click 787 () in the Object Browser.
  2. Select Properties ().
  3. Select the Basic - EOIR Shape page.
  4. Set Reflectance to 22%
  5. Click OK.

Investigating 737's target edge sharpness

The 737 aircraft seems to be slightly sharper or more “in focus” than the rest of the scene, especially at the wings. Part of the reason may be that your EOIR sensor model is using a few idealized parameters. One of these parameters is jitter along the line of sight. It is currently set to 0 milliradians, or a perfectly stable platform. A more appropriate value for a real platform might be 0.1 to 1.0 times the Instantaneous FOV of a single pixel. For 128 x 128 pixels and 6.5 μm pixel pitch, the IFOV is 0.0019 mrad. Set the Line of Sight Jitter to 0.001 mrad, or about 0.5 times the IFOV.

  1. Right-click SkySat_EOIR () in the Object Browser.
  2. Select Properties ().
  3. Go to the Basic - Definition page.
  4. Select the Optical tab.
  5. Set the Line of Sight Jitter to 0.001 mrad.
  6. Click OK.
  7. Examine your sensor scene. The scene now looks very blurred.

Now that you’ve been able to insert a false object into a collected image that is fairly consistent with an actual target, you can declare victory for your model calibration!

Comparing the scene

Compare the sensor scene with the 3D Graphics window.

  1. Compare the EOIR sensor scene above and your simulated 737 aircraft object to the 3D Graphics display. Optionally, you can open the saved Airport.bmp file outside of STK, which would better preserve the original pixilation.
  2. Compare the apparent resolution, or Ground Sample Distance (GSD), between the two images.
  3. Compare the detail in the scene. Is there enough detail in the scene to discern the various 737 variants or a 737 from an Airbus A320?
  4. Examine the scene to determine if the scenario produces a sufficiently accurate model of this sensor's performance. Does this give you confidence in evaluating the sensor performance in other scenes and against other targets?

Verifying the sensor resolution

Earlier in the exercise, you found a potential range of values to use for detector pitch, and thus, GSD. You initially picked the largest value, 6.5 μm, for detector pitch. Now is a good time to revisit that assumption. You can also reference the earlier SkySat sensor parameters and find the detector pitch required to achieve 0.8 m/pixel for the sensor. STK Pro includes the ability to compute GSD geometrically for accesses involving a sensor object when you specify the Sensor Properties – Basic – Resolution values of Focal Length and Detector Pitch.

Updating sensor properties

Update the sensor's focal length and detector pitch.

  1. Right-click SkySat_EOIR () in the Object Browser.
  2. Select Properties ().
  3. Select the Basic - Resolution page.
  4. Set the following: 
    OptionValue
    Focal Length3.5 m
    Detector Pitch6.5 um
  5. Click Apply.

Computing Access

Compute access from SkySat_EOIR to Boston.

  1. Right-click SkySat_EOIR () in the Object Browser.
  2. Select Access... ().
  3. Select Boston () in the Associated Objects list.
  4. Click .

Creating a new report

Create a new report to display constraint data.

  1. Click Report & Graph Manager... in the Access window to open the Report & Graph Manager.
  2. Click Create new report style () in the Styles toolbar.
  3. Name the report GSD.
  4. Press Enter on your keyboard.
  5. Expand () Constraint Data () in the Data Provider list.
  6. Move () the following elements from the Constraint Data Access data providers:
    Data Provider
    Time

    ToElevationAngle

    The elevation angle will change depending on if you compute access from the ground to the satellite versus from the satellite to the ground. When computing FROM SkySat’s sensor TO Boston, use the ToElevationAngle to get elevation of SkySat above Earth’s horizon.

    FromRange
    FromGroundSampleDistance
  7. Click OK.

Analyzing the Ground Sampling Distance (GSD)

Generate a Dynamic Display to analyze the GSD.

  1. Confirm or set the scenario animation time to 30 Jul 2017 15:32:11.507 .
  2. Right-click the GSD () report in the My Styles list.
  3. Select Generate Dynamic Display.
  4. STK computes a GSD of 0.97 m for this shot.
  5. Change Detector Pitch to 5.3 um in SkySat_EOIR's () Basic - Resolution properties page.
  6. Click Apply.
  7. Return to the GSD Dynamic Display. STK now computes a GSD of 0.79 m for this shot. If you refer to the SkySat Sensor parameters linked earlier in the lesson, you find yourself in close range to the values reported by Planet.
  8. Set the following in SkySat_EOIR's () Basic - Definition properties page:
    OptionValue
    Related Detector Parameters - Hoirz Pixel Pitch5.3 um
    Related Detector Parameters - Vertical Pixel Pitch5.3 um
  9. This now represents a more accurate effective detector pitch for this image.

  10. Click OK.

Verifying the GSD computation

In addition to inspecting the pixels in the sensor scene, EOIR also computes a relevant value in its “EOIR Sensor to Target Metrics” data providers. The target is selected by the EOIR configuration toolbar button.

Verifying the target is selected

  1. Click the EOIR Configuration () button on the EOIR toolbar.
  2. Confirm that the 737 () aircraft is listed as an Available STK Objects.
  3. Click OK.

Creating a new report

Create a new report to display GSD data.

  1. Right-click SkySat_EOIR () in the Object Browser.
  2. Select Report & Graph Manager.
  3. Click Create new report style () in the Styles toolbar.
  4. Name the report EOIR metrics.
  5. Press Enter on your keyboard.
  6. Expand () EOIR Sensor to Target Metrics () in the Data Provider list.
  7. Move () the following elements from the EOIR Sensor to Target Metrics data providers:
    Data Provider
    Time
    Range to Target
    Geometric instantaneous field of view footprint
  8. Click OK.

Analyzing the Ground Sampling Distance (GSD)

Generate a Dynamic Display to analyze GSD.

  1. Right-click the EOIR metrics () report in the My Styles list.
  2. Select Generate Dynamic Display.

    EOIR sensor-to-target metrics compute more slowly than many other data providers. Be careful not to create a standard report using the default object time period and time step, as this would require significant computational time. The Dynamic Display computes these values only for the current time step.

  3. STK computes a Geometric Instantaneous field of view footprint of 0.615 at the time of the stored view. Assuming a square pixel, the square root of 0.615 is 0.784 m, in the range of the GSD values reported by Planet.

Examining the impact of atmospheric model

You will next run some stress tests on the system. All of your work up to this point has not used any atmospheric models at all. You can verify this by looking in the EOIR configuration's () Atmosphere Definition page.

EOIR includes a Simple Atmosphere and a MODTRAN Atmosphere model. Both models take the same input parameters: Aerosol models, Visibility, and Humidity. Begin by seeing what impact atmospheric modeling will have on the specific scene you have been recreating. To do this, you should use the most appropriate Aerosol, Visibility, and Humidity models and values for the time and location being imaged. Historical humidity and visibility information for Boston can be found online, for example here, https://www.wunderground.com/history/daily/us/ma/boston/KBOS/date/2017-7-30. The Visibility was 10 miles (16 km) and Humidity was 55%. Boston Logan is on Boston Harbor, so the Urban Aerosol Model is probably most appropriate.

You will generate two more scenes: one using the Simple Atmosphere model and one using MODTRAN Atmosphere model. Then, you will compare these two scenes with the one previously created that did not use an atmospheric model.

Setting the Simple Atmosphere model

Set the atmospheric properties for the generated sensor scene to use the Simple Atmosphere model.

  1. Select SkySat_EOIR () sensor in the Object Browser.
  2. Click the EOIR Configuration () button on the EOIR toolbar.
  3. Click Atmosphere and Textures....
  4. Set the following on the Atmosphere page:
    OptionValue
    Atmosphere ModesSimple Atmosphere
    Aerosol ModelsUrban
    Visibility16.0 km
    Humidity55%
  5. Click OK to close the EOIR Atmosphere, Clouds, and Texture maps window.
  6. Click OK to close the EOIR Configuration window.
  7. Look at your regenerated sensor scene. If you closed your sensor scene, click EOIR Sensor Scene ( ) in the EOIR toolbar to generate an image.

Setting the MODTRAN Atmosphere model

Set the atmospheric properties for the generated sensor scene to use the MODTRAN Atmosphere model.

  1. Select SkySat_EOIR () sensor in the Object Browser.
  2. Click the EOIR Configuration () button on the EOIR toolbar.
  3. Click Atmosphere and Textures....
  4. Set the following on the Atmosphere page:
    OptionValue
    Atmosphere ModesMODTRAN Atmosphere
    Aerosol ModelsUrban
    Visibility16.0 km
    Humidity55%
  5. Click OK to close the EOIR Atmosphere, Clouds, and Texture maps window.
  6. Click OK to close the EOIR Configuration window.
  7. Look at your regenerated sensor scene. Note the increase in processing time when using MODTRAN.

You’ll notice there is only a minor difference in the image quality for these images. This is because the image was taken when SkySat C3 was about 77 deg above the horizon, and relatively little atmosphere was in the way.

Examining other atmospheric settings on your own

On your own, examine the image quality with the other atmospheric settings. Here are some examples to try: 

  1. Try Simple Atmosphere test cases:
    OptionTest Cases ATest Cases BTest Cases CTest Cases D
    Atmosphere ModesSimple AtmosphereSimple AtmosphereSimple AtmosphereSimple Atmosphere
    Aerosol ModelsUrbanUrbanRuralRural
    Visibility5 km, 10 km, 15 km, 30 km10 km5 km, 10 km, 15 km, 30 km10 km
    Humidity55%15%, 50%, 85%55%15%, 50%, 85%
  2. Try MODTRAN Atmosphere test cases:
    OptionTest Cases ATest Cases BTest Cases CTest Cases D
    Atmosphere ModesMODTRAN AtmosphereMODTRAN AtmosphereMODTRAN AtmosphereMODTRAN Atmosphere
    Aerosol ModelsUrbanUrbanRuralRural
    Visibility5 km, 10 km, 15 km, 30 km10 km5 km, 10 km, 15 km, 30 km10 km
    Humidity55%15%, 50%, 85%55%15%, 50%, 85%
  3. Determine if atmospheric conditions change the answers to the above questions about detection or identification.
  4. Examine the image quality with a different elevation angle. You took your images at an elevation angle of about 77 deg. Consider what your scene would look like at a lower elevation angle.

Determining lunar phase

Thus far, you have imaged the aircraft during the daytime. Next you will find some nighttime imaging opportunities under a full Moon.

You will make some modifications to the scenario, including extending the scenario time, adding constraints, modifying the aircraft, and creating stored views.

Updating the scenario time period

  1. Right-click Ground_Imaging_EOIR () in the Object Browser.
  2. Select Properties ().
  3. Set Analysis Period - Stop time to +30 days on the Basic - Time tab. This will let you consider the entire month for desired conditions.
  4. Click OK.

Analytically calculate the lunar phase

Use STK's Analysis Workbench capability to create a new angle. The new angle will calculate the angle between the Moon-Earth vector and the Moon-Sun vector.

  1. Click the Analysis Workbench () icon in the STK Tools toolbar.
  2. Select the Vector Geometry.
  3. Select Primary Central Bodies in the Filter by drop-down list.
  4. Select Moon () in the Objects list.
  5. Click Create New Angle ().
  6. Set the following:
    OptionValue
    TypeBetween Vectors
    NamePhase
    From VectorMoon Earth
    To VectorMoon Sun
  7. Click OK to close the Add Geometry Component window.
  8. Click Closeto close the Analysis Workbench.

Constraining Access

Use Access Constraints to find a good SkySat imaging opportunity with a nearly full Moon above the horizon.

Setting Sun constraints

Set Sun constraints so Access can only occur with a nearly full Moon above the horizon.

  1. Right-click Boston () in the Object Browser.
  2. Select Properties ().
  3. Select the Constraints - Active page.
  4. Click Add new constraints () in the Active Constraints toolbar.
  5. Select Sun Elevation Angle in the Constraint Name list in the Select Constraints to Add dialog box.
  6. Click Add.
  7. Click Close to close the Select Constraints to Add dialog box.
  8. Clear the Min: check box in the Sun Elevation Angle frame in the Constraint Properties section.
  9. Select the Max: check box.
  10. Enter -5 deg in the Max: field. The Sun must be 5 deg or more below the horizon

Setting Lunar constraints

  1. Return to the Constraints - Active page.
  2. Click Add new constraints () in the Active Constraints toolbar.
  3. Select Lunar Elevation Angle in the Constraint Name list in the Select Constraints to Add dialog box.
  4. Click Add.
  5. Click Close to close the Select Constraints to Add dialog box.
  6. Enter 1 deg in the Min: field of the Lunar Elevation Angle frame in the Constraint Properties frame.
  7. Click Apply.

Adding an AWB Angle constraint

You will set a 15 deg max phase angle constraint. First, you need to add the AWB Angle constraint name to the Active Constraints list.

  1. Return to the Constraints - Active page.
  2. Click Add new constraints () in the Active Constraints toolbar.
  3. Clear All Categories.
  4. Select Analysis Workbench (AWB) in the Filter by Category list.
  5. Select AWB Angle in the Constraint Name list in the Select Constraints to Add dialog box.
  6. Click Add.
  7. Click Close to close the Select Constraints to Add dialog box.

Setting a phase angle constraint

Set a 15 deg max phase angle constraint.

  1. Select AWB Angle at the in the Active Constraints list.
  2. Click Select... in the AWB Angle frame in Constraints Properties section.
  3. Select Primary Central Bodies in the Filter by dop-down list. 
  4. Select Moon () in the Objects list.
  5. Select Phase () in the Angles for: Moon list on the right.
  6. Click OK.
  7. Clear Moon Phase Angle - Min.
  8. Enable Max.
  9. Set Max to 15 deg. This constrains the highest allowable phase angle to 15 deg. A phase angle of 0 deg would correspond to a perfectly “full” Moon.
  10. Click Apply.

Computing access elevation angles from Boston

Examine the max elevation angle when Boston and SkySat () have Access.

  1. Right-click Boston () in the Object Browser.
  2. Select Access... ().
  3. Select SKYSAT-C3_41774 () in the Associated Objects list.
  4. Select the Specify Time Period option in the Compute Time Period frame.
  5. Click AER... in the Reports section of the Access () window.
  6. Examine the Max Elevation statistics to find the highest Max Elevation near 88.5 deg on 8 Aug 2017 02:38:09.578 UTCG. This result may differ depending on the placement of the Boston place object.
  7. Right-click the time in the report.
  8. Select Time.
  9. Select Set Animation Time.
  10. Using the 3D window, verify that SkySat C3 is directly overhead, the Sun is below the horizon, and Moon is above the horizon and appears full from Boston.

Creating a stored view

Create a stored view at this animation time called Full Moon Access. Having a stored view makes it easy to get back to the specific time at which you want to render your image.

  1. Bring the 3D Graphics window to the front.
  2. If you are not zoomed in on Boston, Zoom to Boson.
  3. Click Stored Views () in the 3D Graphics toolbar.
  4. Click New.
  5. Change the View Name to Full Moon Access.
  6. Click OK.

Modifying target aircraft properties

Make the aircraft static for the full range of lighting conditions.

  1. Right-click 737() in the Object Browser.
  2. Select Properties ().
  3. Go to the Basic - Route page.
  4. Ensure the Route Calculation Method is set to Specify Time.
  5. Confirm that the first waypoint has a start time at 30 Jul 2017 00:00:00 UTCG.
  6. Set the time of the second waypoint to 30 Aug 2017 03:00:00 UTCG. Recall that you extended the scenario stop time to 30 days, so you are making a similar update here.

Generating a sensor scene

Generate a sensor scene with the new constraints.

  1. Extend the Stored Views () drop-down menu.
  2. Select Full Moon Access.
  3. Select SkySat_EOIR () sensor in the Object Browser.
  4. Click the EOIR Configuration () button on the EOIR toolbar.
  5. Click Atmosphere and Textures....
  6. Select Atmosphere Off.
  7. Click OK to close the EOIR Atmosphere, Clouds, and Texture maps window.
  8. Click OK to close the EOIR Configuration window.
  9. Click EOIR Sensor Scene ( ) in the EOIR toolbar to generate an image. Typically, with a full Moon there is enough light for the human eye to very easily make out distinct shapes and shadows and identify common objects. See how your EOIR sensor does.

It doesn’t look like much, does it? The settings used for this image are the default values: 

  • Noise Equivalent Radiance: 1e-15 @ 100 msec
  • Saturation Equivalent Irradiance: 3e-12 @ 100 msec
  • Dynamic Range: 3000
  • Integration Time: 100 msec

The sensor thus is either not sensitive enough or simply not getting enough photons. You will need to make some adjustments to the sensitivity and integration time to get a usable image.

Modifying sensitivity

Adjust the sensitivity (noise floor, or lowest detectable signal) and dynamic range (ratio of lowest to highest detectable signal) to compensate. To do this, you’ll need to determine the highest and lowest signal values in our scene, essentially the radiance values in the brightest and darkest pixels. Since there isn’t much to see in your sensor scene, tell EOIR to render the Radiometric Input to the sensor — all the information EOIR computes about all the photons — right before it hits your detector array.

Modeling radiometric input

Change the EOIR sensor's Processing Level to Radiometric Input.

  1. Right-click SkySat_EOIR () in the Object Browser.
  2. Select Properties ().
  3. Go to the Basic - Definition page.
  4. Change Processing Level from Sensor Output to Radiometric Input.
  5. Click Apply.

Examining the sensor scene

Examine the sensor scene.

  1. Bring the sensor scene to the front. It is automatically updated.
  2. Right-click anywhere in the scene.
  3. Select Details…
  4. Click the darkest part of the scene, somewhere in the shaded side of the target aircraft fuselage.
  5. Take note of the Inband Radiance value.
  6. Repeat the previous step, but for the brightest part of the scene, somewhere in the moonlit side of the fuselage.

Updating Radiometric properties

Update the EOIR sensor's Radiometric properties based on what you just observed.

  1. Return to SkySat_EOIR's () Basic - Definition Properties () page.
  2. Select the Radiometric tab.
  3. Select Radiance for the Units for Saturation and Sensitivity. This will match the units of the values we just measured.
  4. Set 5.7e-12 for the Sensitivity - EquivalentValue for the 100 msec Integration Time. This is the dark pixel value. This is the lowest detectable signal above the noise floor for a 100 msec integration time.
  5. Set 5.8e-9 for the Dynamic Range - EquivalentValue for the 100 msec Integration Time. This is the bright pixel value. This is the maximum detectable signal before the array is saturated.
  6. Change Processing Level back to Sensor Output.

  7. Click Apply.

Examining the sensor scene

Examine the sensor scene.

  1. Bring the sensor scene to the front. It is automatically updated to something like this:
  2. Examine the image. The image is no longer just static, and you can make out some straight lines and brighter and darker regions. With a little difficulty you may be able to recognize the building and some items on the tarmac. But it’s still not a very useable image.

Getting more photons

If you’ve ever tried to do any astrophotography and image a dim object like a nebula or galaxy, you’ll know there are really only two ways to get more photons: you can increase the aperture or increase the exposure time. Your aperture is fixed at 35 cm based on specifications, but you can change the exposure time.

  1. Return to SkySat_EOIR's () Basic - Definition Properties () page.
  2. Select the Radiometric tab.
  3. Set the Integration Time to 500 msec.
  4. Click Apply.
  5. The sensor scene should update to look something like this:

This is much better! The aircraft fuselage is clearly visible, and the wings are even somewhat discernible.

Adding more realism

So far so good, but see what happens when you add a bit more realism to the simulation. You'll do this by simulating quantization. This is especially important for low-light situations because you may be getting only a very few photons from the scene. This is the analog to digital converter. Before you may have been simulating half a photon, which would let you see artificially exaggerated resolution within the scene. With quantization on, you either get an electron out of your detector array, or you don’t, due to the quantum mechanical nature of photons and electrons.

Simulating quantization

Update the EOIR sensor to simulate quantization.

  1. Return to SkySat_EOIR's () Basic - Definition Properties () page.
  2. Select the Radiometric tab.
  3. Select Simulate Quantization. Turning on Quantization simulates the analog-to-digital conversion at the detector.
  4. Click OK.

Setting the atmosphere model

Set the atmosphere model to represent very good “seeing” conditions. Recall that for the daytime scene, adding an atmospheric model at high elevations had a minimal impact.

  1. Select SkySat_EOIR () sensor in the Object Browser.
  2. Click the EOIR Configuration () button on the EOIR toolbar.
  3. Click Atmosphere and Textures....
  4. Set the following on the Atmosphere page:
    OptionValue
    Atmosphere ModesSimple Atmosphere
    Aerosol ModelsUrban
    Visibility30 km
    Humidity15%
  5. Click OK to close the EOIR Atmosphere, Clouds, and Texture maps window.
  6. Click OK to close the EOIR Configuration window.
  7. Look at your regenerated sensor scene. It should look something like this:

The image quality is noticeably degraded. This is understandable given our low-light and atmospheric settings.

As you can see, through an iterative process you're able to add realism to your scene. You can adjust the scene here further to balance the gray scale through the Radiometric settings. On your own, use the work flow you've learned to tweak the image.

Save your work

  1. When finished, close any reports, graphs, and tools that are still open.
  2. Save () your work.

Conclusion

Using STK's EOIR modeling capabilities, you have been able to create a realistic model of a ground imaging sensor. You began with default settings and iterated to a detailed setup. Using a sample ground image, you performed in-scene calibrations of the sensor and target model. Once set up, you were able to stress test the sensor's capability, such as including poor collection conditions versus nominal conditions and varying lighting conditions.

On your own

On your own, explore the effects of atmospheric conditions on the sensor scene. If you have your own ground image, calculate the GSD by measuring a known object (such as street width) in both pixels and distance, as defined in STK. Use your results to calibrate the EOIR sensor. You examined a nighttime scene with a full moon; now reexamine the scenario but with a new Moon overhead.