Skip To Content

Preprocessing historical images

Scanning film in preparation for ortho mapping

Following are general recommendations for scanning aerial film to use in ortho mapping:

  • Use a photogrammetric-grade scanner that maintains sub-pixel geometric accuracy across the entire image.
  • You can scan entire film rolls (recommended) or individual frames (if necessary).
  • Ensure the scan area includes the camera fiducials.
  • Try to obtain the camera calibration certificates (calibration report) that define the lens distortion parameters and the coordinates of the fiducials relative to the focal center of the lens. If these are not available, you can use estimates, but using the calibration can increase accuracy.
  • When scanning, especially if your source images are single frames, note the flight direction by comparing sequential images. Ensure the +X direction of the scanned image files is toward the direction of flight.
  • The recommended file format is tiled TIFF with internal tile size of 256x256 or 512x512 pixels.
  • A recommended scan resolution is approximately 15–20 microns per pixel (1700 to 1300dpi). This should yield adequate resolution without creating excessively large files.
  • Make note of the pixel size (microns) in your scanned files for later input into ArcGIS.
  • Optimize compression to reduce file sizes using internal JPEG compression:
    • Compression quality level can be set between 80 and 97.
    • Compression quality level 80 provides approximately 5x compression for panchromatic data.
    • For color imagery, use JPEG_YCbCr color space with quality level 80 to yield approximately 8x compression.
  • Generate pyramids (reduced-resolution versions) of each file to improve performance. If you are unsure if pyramids already exist, check the file Properties in the Catalog pane. If pyramids are needed, create them using Bilinear (average) resampling; do not use Nearest Neighbor. Pyramids can be created using the Batch Build Pyramids tool or using GDAL command line tools (The GDALaddo command will build overviews; you can download GDAL or use the version built into ArcGIS). If you're using OptimizeRasters, the image will already have overviews included.
  • There is no need to generate statistics on every image file as a preprocessing step. This may take a long time for a large image collection, and dynamic range adjustment (DRA) can be used to enhance visibility on-the-fly. After processing in ortho mapping, if you need to apply color correction, you can calculate statistics at that time.

Optimizing for large, high-resolution imagery collections

If you have a very large collection of images that were scanned at a high resolution, processing may be slow due to file size. In this case, consider creating a lower resolution copy of your imagery and completing the ortho mapping workflow to generate approximate orientation data. In ArcGIS Pro 2.7 and later, you can export a table with photogrammetric parameters after block adjustment. You can then use this data to create a new workspace and substitute the higher resolution images for final processing (note this will require that you repeat the interior orientation step in the new workspace).

Dodging images

Scanned aerial imagery can include significant trends in brightness and contrast caused by light fall off, haze and vignetting effects of the camera lens. This can be especially noticeable in small scale imagery. Fully capturing the content of the imagery requires a scanner with a large dynamic range beyond that achievable with 8 bits per channel. Some scanners scan the imagery at higher dynamic range (e.g.,12 or 14 bits per pixel). These images can be stored at 16 bits per channel, but become very large in size. This can be resolved by scanners dodging the images. In this process the images are scanned at full dynamic range, but the localized changes in contrast and brightness are digitally removed, enabling the images with full information content to be stored at 8 bits per channel.

Interior and exterior orientation

This section covers the orientation data requirements for successful ortho mapping and options for handling missing data.

The data required to photogrammetrically process historical imagery in ArcGIS includes the following:

  • Images scanned as described above
  • Scan resolution
  • Image acquisition height and or photo scale
  • Camera calibration report to determine sensor coordinates, focal length, and distortion parameters
  • Ground control points

In ArcGIS, initial information regarding the camera and the images are stored in a Cameras table and a Frames table, respectively.

You can create ArcGIS table data structures for these tables, but it may be easier to use a spreadsheet saved in *.csv format, then ingest that into ortho mapping.

Frames and Cameras tables can be created separately or may be combined into one single table. For scanned aerial imagery, it is typical to use separate frames and cameras tables. There are two advantages of using separate tables:

  • A single Cameras table may be created to support multiple cameras. In an organization with large collections of film, a single Cameras table for interior orientation may be used for many different ortho mapping projects using the CameraID field.
  • Listing camera parameters in a single table results in duplication of the interior orientation data for every frame of the project, so using a separate Cameras table avoids this duplication.

If you already have internal and external orientation data in a digital format, you can use the Build Frames and Cameras Tables geoprocessing tool to help ingest and format this information.

Creating a Cameras table

Collect the data listed here to eventually build a table populated with parameters listed in the Cameras table schema.

The parameters required for the Cameras table should be available in a camera calibration report. Pay close attention to units (mm vs. microns, for example) since some values may need to be re-scaled for ArcGIS Pro.

If you do not have a calibration report for your camera(s), advice is provided below for estimating or calculating some of the values.

Note:

You should create field names in your table that match the schema exactly. For example, CameraID or cameraid will be recognized, but Camera_ID will not.

Required parameters

Field nameRequirements

ObjectID

Must be a unique value for each record in the table. (This is not currently shown in the Cameras table schema, but this field is required.)

FocalLength

If an accurate value is not available from the calibration report, the focal length may be printed in the margin of each film frame (see screenshots).

Note:

Be sure to use the proper units; ArcGIS Pro requires microns (screenshots are in mm).

Screenshots of focal length printed in margins of film frames

If this value is not known, you can continue and test results using 152400 microns to represent a 6-inch lens, which was most commonly used. The typical focal lengths for film cameras were 3.5, 6, 8.25 and 12 inches.

CameraID

This is a user-defined identifier to link a specific camera in the Cameras table to photo records in the Frames table. (A Cameras table can define interior orientation for more than one camera.)

Note:

The CameraID cannot be all numbers; this field must include a non-numeric character.

PixelSize

The size of a scanned pixel from the film, measured in microns. This should be rounded to the nearest half, such as 10, 12.5, 15. You can estimate this by dividing the size of the film (9" film is 230,000 microns) by the number of pixels in your image file, then round to the nearest whole or half number.

Additional recommended parameters

ParametersRequirements

Principal point of autocollimation (PPA) (field names are PrincipalX and PrincipalY)

This is the distance (x,y) from the center of the fiducial location to the point where a ray passing through the center of the lens would intersect the film.Note that some camera calibrations include PPA and PPS. ArcGIS uses the PPA values, not the PPS value.

When interpreting the values on the calibration report, take into consideration the x and y axis used. ArcGIS assumes the photogrammetric convention of X being in the direction of flight, and values are entered in microns.

If unknown, use (0,0).

Radial and tangential distortion parameters

For best accuracy, lens distortion from a camera calibration report can be entered. If the distortion is less than the scan resolution, it is not necessary to enter these parameters.

If distortion is unknown, use DistortionType=DistortionModel, and enter (0;0;0;0) for Radial and (0;0) for Tangential.

Distortion may be described in one of two formats—as a polynomial distortion model (sometimes called Konrady coefficients) or measurements in a distortion table. See the Cameras table schema for more information.

Fiducial coordinates (microns) in camera coordinate system

Aerial film cameras typically have either 4 or 8 fiducials. The camera calibration should provide the coordinates of the fiducials in the camera coordinate system (mm or microns).Knowing these coordinates and relating them to the measured location of the fiducials on each image enables the system to accurately determine the position of the image in relation to the camera.

As with entering the PPA, check the coordinate system used in the camera calibration and ensure that X is in direction of flight. If not, adjust the coordinates appropriately. Also check that the units are correct.

In ArcGIS Pro 2.6+, these values are not mandatory. There is an interface to train ArcGIS Pro where to find the fiducials. See Measuring fiducials. In previous versions, these parameters are required.

Note that other fields, including A0, A1, A2, B0, B1, and B2, are not required for scanned aerial film workflows if the pixel size is supplied.

Creating a Frames table

Collect the data listed here to eventually build a table populated with parameters listed in the Frames table schema. Since some of these parameters may not be known, advice on how to use estimated values is included here.

Note:

You should create field names in your table that match the schema exactly. For example, PerspectiveX or perspectivex will be recognized, but Perspective_X will not.

Required parameters

Field name(s)Requirements

ObjectID

Must be included with a unique value for each record in the table

Raster

The image filename, including extension and full path for each image

CameraID

The ID of the camera that acquired the image. Must match a CameraID value in the Cameras table

PerspectiveX, PerspectiveY

The location of each photo center in a projected coordinate system (cannot be lat/long).

Note:

This can be an estimate; it does not have to be highly accurate as long as the relative position of neighboring photos is correct. See Sources for interior and exterior orientation parameters (below) for advice on creating estimated values.

PerspectiveZ

Orthometric height estimate for camera elevation above sea level.

If you don’t have information regarding the flight altitude, it can be estimated from film scale and focal length using this diagram:

diagram for estimating flight altitude from film scale and focal length

Alternatively, you can enter a value for H (height above ground) into the Frames table for PerspectiveZ and enter 0 for DEM to enable block adjustment, but remember that you must update the DEM later. See Using the Image Collection below.

Omega, Phi, Kappa

Photogrammetric orientation angles. These are typically not known, in which case you can enter 0 for Omega and Phi, and the software will calculate them during the block adjustment process. If possible, an estimate for the Kappa value for image rotation should be included. In some cases, the course over ground (COG)of the aircraft is known or can be computed. In such cases, Kappa can be entered as (90 degrees - COG).

Note:

The Frames table will not load properly unless these three field names and values are included.

Additional recommended parameters

Field name(s)Requirements

FCS

Film coordinate system to indicate image rotation.

It is not necessary to specify this since the software will autodetect it, but if you have a large number of images, entering the correct value for this parameter can speed up processing.

The default assumption is that the aircraft flight direction proceeds toward the +X axis of the image file on disk (left to right along the rows of the image file). This is represented as FCS value = 1. See the Cameras table schema for a discussion of FCS values 1 through 4.

SRS

A spatial reference system or coordinate system can be entered in the table using an EPSG code or WKID.

Note:

This must be a projected coordinate system (GCS lat/long is not supported). Do not use Web Mercator, which is is not a truly Cartesian system with fixed scale.

If this is not in the table, ArcGIS Pro will prompt you for this.

Sources for interior and exterior orientation parameters

Documentation for historical film photo projects is often very limited. Following are guidelines for working with some of the most common sources of orientation parameters.

Digital table with (x,y) location for the center of each image

If you have a digital table with (x,y) location for the center of each image, you should make a copy and then reformat the data to ensure all required parameters are included with field names exactly as listed above, that all parameters are expressed in the proper units (meters, microns, etc.), and that the proper origin and direction were used to define orientation angles.

Photo index plot or photo laydown

If your best available data is a photo index plot (also called a photo laydown) showing a low-resolution image of the photos in an approximate mosaic, do the following:

  1. Scan this mosaic image.
  2. Georeference the scanned file in your desired coordinate system.
  3. Create a point feature class in the same coordinate system.
  4. Create one feature point for the estimated center of each photo.
  5. Enter the photo ID (a reference to the image file name) into the attribute table of the point feature class.
  6. After creating this table with XY locations and filenames, edit the table to enter the other required parameters (see above).

Printed flight report with flight lines, strips, or runs

If you have a copy of a printed flight report where the project is described by flight lines (also possibly labeled as strips or runs), this is the recommended workflow to create estimates for the (x,y) location of each image:

  1. Create a table of image file names in a spreadsheet.
  2. Identify the first and last photo of each strip.
  3. Estimate the offset in ground units from one photo to next and use the spreadsheet to calculate estimated X or Y coordinates along each flight line (e.g., for north/south flight lines, this would be the Y coordinates along the line). Overlap along flight lines (forward overlap) is usually 60% or greater. Ground distance (GD) between successive photos along a flight line can be determined using the following formula:

    GD = (100 - Forward Overlap %)/100 * (230/100) * Photo Scale

  4. Estimate the spacing between flight lines to calculate approximate X or Y coordinates (e.g. for north/south flight lines, this would be the X coordinates for each line). This is easier if flight lines are oriented north/south or east/west; otherwise, these estimated calculations are somewhat more complicated. Standard overlap between flight lines is usually 15 - 20%. Ground distance (GD) between flight lines can be determined using the following formula:

    GD = (100 - Lateral Overlap %)/100 * (230/100) * Photo Scale

  5. After creating this table with XY locations and filenames, edit the table to enter the other required parameters (see above).

No information about the photos

If you have a small number of photos with no information about the flight, but you can visually determine the approximate image positions using an Esri basemap, it may be fastest and easiest to use the georeferencing tools to get started. ArcGIS Pro 2.6 added the capability to begin with simple georeferenced images and then proceed into the ortho mapping workflow:

  1. In ArcGIS Pro, open a blank map and set it to your desired projection for the project. (Do not use GCS = Lat/Long or Web Mercator).
  2. Select one image and add the image to the map. The image will not appear in the correct location.
  3. Select the image in the Contents pane, then click Georeference on the Imagery tab.
  4. Navigate the map to the approximate location and proper scale for that image, and on the Georeference tab, select Fit to Display. If necessary, you can also use the Rotate tool to rotate the image or use the Scale tool to graphically change the scale.

    screenshot of the Georeference tab options

  5. Repeat until the image is in approximately the correct location and scale, then click Save to save the approximate georeferencing information in an ancillary file called image_filename.aux.xml. (Do not use Save As, which will create a new output file).
    Tip:

    The georeferencing tools allow you to rotate images and add manual control points to improve the image alignment on the map, but this is not necessary.

  6. Repeat for all remaining images.
  7. Create a Frames table and a Cameras table.
    1. Download Frames and Cameras tables templates.
    2. Update the Frames table template for your project:
      1. In the Raster column, insert a list of the full path locations of all image files.
      2. Leave the Omega, Phi, Kappa and Perspective X,Y,Z values as zero.
      3. In the SRS field, insert the EPSG code for your coordinate system.
      4. In the CameraID field, enter a unique name for your camera. (use the same name in the Cameras table. Note there can be more than one Camera if you have film from different cameras).
      5. Make sure the fixed values are repeated for every raster.
    3. Update the Cameras table template for your project:
      1. In the CameraID field, enter the name for your camera used in the Frames table.
      2. Estimate the PixelSize in microns by dividing the size of the film (9" film is 23 cm or 230000 microns) by the number of pixels in your image file.
      3. Leave PrincipalX and PrincipalY as 0.
      4. Enter a value for FocalLength in microns if you have this information (perhaps from film annotations on the image edge); otherwise leave the value of 152400, which assumes a common 6" focal length lens.
      5. If you have a camera report with fiducial locations, enter values (microns) in the FilmFiducials column. Otherwise, delete this column.

    Save and close both Cameras and Frames tables. Proceed to the ortho mapping workflow and enter these tables when prompted.

Alternative workflow using the frame camera raster type

If you attempt the workflow above but have difficulty creating the proper tables and workspace, you may want to consider using your tables to create a mosaic dataset using the frame camera raster type. If you are able to create a mosaic dataset with the images at approximately the correct scale and location, you can return to the ortho mapping interface and create a new workspace using Import existing image collection (do not select This image collection has been adjusted) and proceed through the rest of the workflow.