Date given: Date due:
Marks:
Objective
ENGO 531
Advanced Photogrammetric and Ranging Techniques
Laboratory Assignment 1 Bundle Adjustment Software Construction
16 September 2020
6 October 2020 at 23.59.59
Late submissions lose 20% per business day
This assignment constitutes 15% of your final grade.
The objective of this lab is to build and test your own photogrammetric bundle adjustment program for frame camera imagery. You will add to and use this program for all subsequent laboratory assignments in this course.
This is an individual assignment. Collaboration between students is anticipated and encouraged. However, each student is to submit their own, original work. We will check for plagiarism.
Programming language
The focus of this laboratory assignment to understand bundle adjustment program organization and methodology. The programming language you choose for the implementation is not important. Thus, the use of interpreted languages such as MATLAB scripts and Python is permitted and encouraged.
Basic program functionality
Your program should be able to read the following inputs from text files:
Interior orientation parameters (IOPs). Only the basic set of IOPs (principal point and principal
distance) are required. For now, these will be treated as constants, but they will be estimated in
a future lab assignment.
Exterior orientation parameters (EOPs). For now, these will be treated approximate values rather
than observed values, but this will change in another future lab assignment.
Ground control points (GCPs). For now, these will be treated as constants, but they will be
considered as observations in a future lab assignment.
Tie points. These are approximate values.
Check points. These are treated as constants but NOT used directly in the bundle adjustment.
They will be used for post‐adjustment accuracy assessment.
Image point coordinates. These are observed values.
ENGO 531 Lab 1 Fall 2020 Page 1 of 3
Other important adjustment data:
o The standard deviations for observation groups: there is only one group now, the image
point coordinates, but this will change in a later lab assignment
o Convergence tolerances. For now, only tolerances for object point coordinates and angles
are required but, again, this will change later.
o Operation mode options of the program. For now, these comprise the following, but at
least one more will be required for a later lab assignment:
1. Observed or unknown EOPs
2. Observed or unknown GCPs
Your program must correlate all the input data. That is, it must identify all the required point matches (e.g. homologies) as described in the lecture notes. Moreover, your program must not only perform the bundle adjustment computations (specified below), but also provide formatted, text‐file output to facilitate the analyses of results. Some examples of this have been provided in the lecture notes, but the exact formatting is left to your own creativity—you certainly don’t need to follow the example in the output file. The main principle you might consider is that the data should be easy to plot from the output file(s).
Numerical program functionality
Your program must perform the least‐squares bundle adjustment solution once all the input data have been read. This entails the following general steps:
Determination of the dimensions of the relevant matrices n, u, r. Note that these, like any other adjustment quantities, should be derived from the input data and not hard coded.
Computation of the partial derivatives and misclosures
Formation of the normal equations by the optimized summation of normal method—this is
mandatory
Iterative solution of the normal equations
Computation of all parameters, residuals, covariance matrices and other relevant quantities.
Test dataset description
A small aerial dataset is provided for testing your program. The test dataset was derived from imagery of the University of Calgary campus. The imagery was captured with a Leica RC 30 metric camera (6 focal length and 9 9 image format) at a nominal scale of 1:5000 and scanned with a resolution of 12 m. All image point coordinates were measured manually in the Irfanview software. Control points and tie points were post‐identified features. The standard deviation of the image point observations was 5 m.
All input data are provided in ASCII text files having the same prefix (engo531_lab1). The format and suffix of each file is given below:
Suffix
Description
Format
Units
PHO
Image (photo) point observations
point_id image_id x y
mm
INT
Interior orientation parameters
camera_id xp yp c
mm
EXT
Exterior orientation parameters
image_id camera_id Xc Yc Zc
m,
CON
Control points
point_id X Y Z
m
TIE
Tie points
point_id X Y Z
m
CZE
Check points
point_id X Y Z
m
ENGO 531 Lab 1 Fall 2020 Page 2 of 3
A file of “configuration” data (convergence tolerances, observation group standard deviations, adjustment modes, etc.—the “other important adjustment data” mentioned above) is NOT provided. The format of this file is left to your creativity.
Adjustment results are also provided in a text file (OUT suffix). These were generated with fixed control points and unknown (i.e., not observed) EOPs.
Submissions
Your bundle adjustment program will be validated and verified. Validation is performed to confirm that the program meets the user needs. That is, does it generate the required outputs? In this regard, both the completeness of the output file and the formatting will be assessed. Verification is performed to confirm that you have built the program correctly. You must make statements, justified with numerical results, that your program has correctly computed the bundle adjustment quantities. The choice of which quantities to analyze and the quality of the presentation are your responsibility. Note that detailed analyses of the results in terms of network quality are NOT required. Your code will be assessed in terms its modularity, documentation and overall design. Modularity is particularly important since you will add functionality to your program for future lab assignments.
In summary, you are required to submit
Formatted bundle adjustment output file
Adjustment configuration input file
Source code
Verification report
Submissions are to be uploaded as a single PDF file to the D2L Dropbox by the specified date and time.
As a final note, writing a bundle adjustment program is a big job, but it can be done in the three weeks allocated to this assignment. The following benchmarks are suggested as a guide to help you monitor progress:
End of week 1: demonstration of basic program functionality—read all input data and correlate all data.
End of week 2: demonstration of program functionality—least‐squares computations implemented
End of week 3: lab completed.
END OF LAB 1
ENGO 531 Lab 1 Fall 2020 Page 3 of 3