Home » Tutorials » Historical Airphoto Processing (HAP)
This tutorial outlines how to process historical airphoto data in CATALYST Professional. Historical data can be used to create high-quality ortho-mosaics and elevation models using stereo overlap in the data. The CATALYST Historical Airphoto Processing (HAP) workflow enables users to convert historical imagery into a GIS-ready layer to perform further analysis, such as change detection and feature extraction.
Tutorial data: The tutorial uses historical data over Saint John, New Brunswick, Canada, from 1967. You can download this data here: HAP_Tutorial
You must ensure that your metadata file contains at least the fields listed below to execute the HAP process.
Image basename
Focal length of camera
Dimensions of physical photo (height, width)
Flight altitude or scale
Scene-center coordinates (latitude, longitude)
The flying altitude can be calculated from any of the following combinations of information if it's not available. [Focal length, paper length, image ground length] OR [Focal length, image scale]
You can find a template and sample of the metadata in the CATALYST Professional install folder: C:\PCI Geomatics\CATALYST Professional\etc\HAP_Metadata_Example.txt C:\PCI Geomatics\CATALYST Professional\etc\HAP_Condensed_Metadata_Example.txt
The metadata file is 43 columns of tab-delimited text (.txt). Of the fields in the file, the following must contain information you specify:
Metadata Field
Details
Roll number Photo number or Image basename
The Roll number Photo number or image basename must be identical to the corresponding file name on disk; however, do not include the file name extension in the metadata.
Focal length of camera (FOCAL_LENS)
Focal length of the camera in millimetres.
Dimensions of physical photo (HEIGHT_mm & WIDTH_mm)
The dimensions (height and width) of the physical printed photo in millimetres. Alternatively, if you are working with film, the dimensions of the photo frame on the physical roll of film.
Flight altitude or scale (ALTITUDE / SCALE)
Approximate altitude of flight in feet. If both fields are provided, HAP uses the flight altitude by default. If you do not know the altitude, you can enter a value for SCALE and enter ALTITUDE as NULL. When you enter only the scale, the altitude is calculated by HAP. Conversely, when you enter only the altitude, the scale is calculated by HAP. When you enter both, only the altitude is read by HAP.
Must be provided in longitude and latitude (decimal degrees). The coordinates must be referenced to the WGS84 datum (D000). If the coordinates are not referenced in the WGS84 datum, you must apply a datum shift to the points. West and south coordinates must be accompanied by a negative sign (−)
2.2. Ingesting airphotos
To ingest the imagery:
Open Historical Airphoto Processing from the CATALYST toolbar.
In the HAP window, click Ingest.
In the Raw images folder field, enter the path to the project's images folder
In the Raw images metadata field, enter the path to the project's metadata file
Leave the Fiducial options as corner
Enter the path to the top folder as the Ingested images output folder
Click Run
In OrthoEngine, load the created fid.prj project (found in Ingest folder), and open up the Project Overview window. Load the data to verify the scale and rotation of the images. Images can be rotated using the rotate icon in the tool. You can also change the image orientation in OrthoEngine by clicking Tools > Collection Viewer > North up.
This step is optional as it just allows the images to be viewed and aligned geographically in Focus. This view is also available in the Project Overview window in OrthoEngine
In the HAP window, select Nominal georeferencing
Specify the fiducial project made in the previous section
Enter the DEM found in the Reference folder as the Reference DTM
Create a folder in the project directory for the nominal georeferencing output.
Ground Control Points (GCPs) are essential for improving the accuracy of aerial imagery and helping to georeference aerial imagery. They serve as fixed reference locations with ground coordinates, anchoring and aligning the images to real-world positions. You want to ensure you collect as many GCPs as possible, as this helps increase the georeferencing accuracy.
In OrthoEngine, open the fiducial project
Navigate to the GCP/TP Collection processing step and select Display project overview
Locate the corner images (top-left: 67009-88, top-right: 67009-92, bottom-right: 67009-24, bottom-left: 67009-19). These will be the images in which you collect the GCPs
Select Collect GCPs manually in OrthoEngine
Choose Geocoded image as the ground control source
Enter the path to the reference image in the Filename field
Choose all 3 bands
Click Load & close
Add the DEM file to its corresponding field
On the image window, select and open the image(s) from which you want to collect GCPs (e.g the corner images noted earlier)
Locate corresponding points on the reference image to use as a GCP
Click the point on the images and click Use Point on both windows
On the GCP collection window, click Extract Elevation, and then Accept
Repeat for each GCP and image
Once you have collected the GCPs, save the OrthoEngine project and close the open windows
3.2 TP Collection
Tie Points (TPs), similar to GCPs, also help improve the model. However, in this case, they align the images to themselves by identifying a reference point between them. They can be used to apply GCPs to areas where there are none
In the GCP/TP Collection processing step, select Automatically collect tie points
Choose FFTP: Fast Fourier Transform Phase as the Matching method. This method is best suited for HAP data and is one of our newer TP collection algorithms. You can learn more about the methods in the automatic tie points help document.
Select DEM as the Input elevation parameter and navigate to the project's reference DEM
Change the processing step to Ortho Generation and select Schedule Ortho Generation
Select all images and move them to the Images to Process pane
Create an ortho folder and use it as the location for the new file. Then double-click on one of the images in the Images To Process pane - the generated orthos will all now point to the folder
Under Ortho Generation Options, select DEM file and put in the DTM that was created earlier
Click Generate Orthos
Load the orthos into Focus and ensure everything looks good
8. Generating Mosaic
Change the processing step to Mosaic and open the tool
In the wizard, ensure all the images are in the source file list and click Next
Define the output mosaic file
Generate a mosaic preview and perform any necessary colour-balancing
Finally, click Generate Mosaic
Alternatively, you can do this using Python:
Open mosprep.py (found in the Scripts folder) in an IDE and edit the parameters appropriately - see the MOSPREP help document
Once you have all the parameters set, save and run the script
Once the script has run and created the .XML file in your mosaic output folder,
Close the OrthoEngine windows, open the Mosaic Tool and drag in the .XML file
Review the images and perform any colour-balancing or cutline editing as needed
Open mosdef.py and edit the parameters appropriately - see the MOSDEF help document
Save and run the script
Finally, open mosrun.py, edit the parameters (see the MOSRUN help document), save and run the script to create the mosaic
Open the resulting mosaic and review it against the reference image and other reference files
Manage Cookie Consent
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behaviour or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional
Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes.The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behaviour or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional
Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes.The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.