Manual
manual
User Manual:
Open the PDF directly: View PDF .
Page Count: 31
Download | ![]() |
Open PDF In Browser | View PDF |
DBAT — The Damped Bundle Adjustment Toolbox for Matlab v0.7.6.1 Niclas Börlin1 and Pierre Grussenmeyer2 1 Department of Computing Science, Umeå University, Sweden, niclas.borlin@cs.umu.se 2 ICube Laboratory UMR 7357, Photogrammetry and Geomatics Group, INSA Strasbourg, France, pierre.grussenmeyer@insa-strasbourg.fr Oct 25, 2018 With contributions from: • Arnaud Durand, ICube-SERTIT, University of Strasbourg, France. • Jan Hieronymus, TU Berlin, Germany. • Jean-François Hullo, EDF, France. • Fabio Menna, Fondazione Bruno Kessler, Trento, Italy. • Arnadi Murtiyoso, ICube, INSA Strasbourg, France. • Kostas Naskou, University of Nottingham, UK. • Erica Nocerino, Fondazione Bruno Kessler, Trento, Italy. • Deni Suwardhi, Bandung Institute of Technology, Indonesia. 1 Contents 1 Introduction 1.1 Purpose . . . 1.2 Contents . . . 1.2.1 Code 1.2.2 Data . 1.3 Legal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Installation 3 Usage 3.1 Demos . . . . . . . . . . . 3.1.1 Plotting . . . . . . 3.1.2 Camera calibration 3.1.3 Bundle adjustment 3.1.4 Error detection . . 3.2 Using your own data . . . 3.2.1 Photoscan . . . . . 3.2.2 PhotoModeler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 3 4 5 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 7 12 14 15 15 15 A Appendices A.1 Enabling text export from PhotoModeler A.2 Camera model . . . . . . . . . . . . . . A.3 Result file with missing observations . . A.4 Result file with single-ray observations . A.5 Result file with missing datum . . . . . A.6 Successful result file example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 19 19 19 19 20 22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . 1 Introduction 1.1 Purpose This purpose of the Damped Bundle Adjustment toolbox is to be a high-level toolbox for photogrammetry in general and bundle adjustment in particular. It is the hope of the authors that the high-level nature of the code will inspire algorithm development. The code is written in Matlab and is verified to work with Matlab version 8.6 (release R2015b). The intention is that at least the computation routines will be Octavecompatible. This has however not been tested yet. 1.2 Contents 1.2.1 Code The toolbox currently includes routines for (Matlab function names within parentheses): • File handling: – Reading PhotoModeler-style text export files (loadpm), and 2D/3D point table exports files (loadpm2dtbl and loadpm3dtbl, respectively). – Reading PhotoScan native (.psz) files (loadpsz). – Writing PhotoModeler-style text result files (bundle_result_file). • Post-processing: – Post-processing of PhotoScan projects (ps_postproc). Includes object point filtering on low ray count and low intersection angles. For selfcalibration post-processing, see the help text for ps_postproc. – As of version 0.7.0.0, DBAT supports both lens distortion models used by Photomodeler and Photoscan. • Photogrammetric calculations, including: – Spatial resection (resect). – Forward intersection (forwintersect). – Absolute orientation (rigidbody). – Relative orientation based on the Nistér 5-point algorithm (Stewénius et al., 2006) will be added in the future. • Bundle adjustment – Bundle adjustment proper (bundle), with or without self-calibration, using either Classical Gauss-Markov, Gauss-Newton-Armijo, Levenberg-Marquardt, or Levenberg-Marquardt-Powell damping schemes (Börlin and Grussenmeyer, 2013a, 2014, 2016). 3 – Posterior covariance calculations (bundle_cov) from the bundle result. • Analysis of camera networks, including: – Detection of structural rank deficiency (Matlab’s dmperm, sprank). Useful as a sanity check on input data. Structural rank deficiency is typically caused by trying to estimate a parameter with too few direct observations. – Null-space analysis if the normal matrix is singular using spnrank (Foster, 2009). This might, e.g. be caused by insufficient datum specification. The result of the analysis, including suggestions for what parameters may be impossible to estimate are written by to the report file by (bundle_result_file). • Various plotting functions, including: – Plot image covered by measurements (plotcoverage). – Plot camera network (plotnetwork), either static (as-loaded) or as an illustration of the bundle iterations. – Plot .psz project (loadplotpsz). – Plot of the iteration trace of parameters estimated by bundle (plotparams). – Plots of quality statistics from the bundle result (plotimagestats, plotopstats). • Demo functions using the above functions. The demo functions are detailed in Section 3.1. The available demos are listed by executing the command help dbatdemos. This manual does not contain detailed information about how to use each function. More information may be found by typing helpat the Matlab prompt, studying the source code of the demo functions, and reading the source code of each file directly. 1.2.2 Data The toolbox contains several datasets, including datasets for the Börlin and Grussenmeyer (2016); Murtiyoso et al. (2017) papers. • PhotoModeler export files or PhotoScan projects. • Images. To reduce the size of the distribution package, only low resolution images are included in the package1 . The corresponding high resolution images can be downloaded from http://www.cs.umu.se/~niclas/dbat_images. Further instructions are found in README.txt files in the respective image directories. The simplest way to access the data sets is through the demos, described in Section 3.1. 1 No images are included in the StPierre data set. 4 1.3 Legal The licence detail are described in the LICENSE.txt file included in the distribution. In summary: • You use the code at your own risk. • You may use the code for any purpose, including commercial, as long as you give due credit. Specifically, if you use the code, or derivatives thereof, for scientific publications, you should refer to on or more of the papers Börlin and Grussenmeyer (2013a,b, 2014, 2016); Börlin et al. (2018) that the code is based on. • You may modify and redistribute the code as long as the licensing details are also redistributed. 2 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Installation (from INSTALL.txt) == INSTALLATION == You can either install DBAT by downloading the source code or (if you use a git client) by cloning the repository. === Download === 1) Download the package file dbat-master.zip (from the main page) or dbat-x.y.z.w.zip/dbat-x.y.z.w.tar.gz (from the releases page) of https://github.com/niclasborlin/dbat/ 2) Unpack the file into a directory, e.g. c:\dbat or ~/dbat. === Clone === At the unix/windows command line, write: git clone https://github.com/niclasborlin/dbat.git to clone the repository into the directory ’dbat’. Use git clone https://github.com/niclasborlin/dbat.git to clone the repository to another directory. If you use a graphical git client, e.g., tortoisegit (https://tortoisegit.org), select Git Clone... and enter https://github.com/niclasborlin/dbat.git or git@github.com:niclasborlin/dbat.git as the URL. ==== Download high-resolution images ==== To reduce the size of the repository and hence download times, only low-resolution images are included in the repository. High-resolution images can be downloaded from http://www.cs.umu.se/~niclas/dbat_images/. 5 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # For further details, consult the README.txt files in the respective image directories. == TESTING THE INSTALLATION == 1) Start Matlab. Inside Matlab, do the following initialization: 1.1) cd c:\dbat % (change to where you unpacked the files) 1.2) dbatSetup % will set the necessary paths, etc. 2) To test the demos, do ’help dbatdemos’ or consult the manual. == UPDATING THE INSTALLATION== === Git === If you cloned the archive, updating to the latest release is a simple as (replace ~/dbat and c:\dbat with where you cloned the repository): cd ~/dbat git pull at the command line. In TortoiseGit, right-click on the folder c:\dbat, select Git Sync... followed by Pull. === Download === If you downloaded the code, repeat the download process under INSTALLATION. Most of the time it should be ok to unzip the new version on top of the old. However, we suggest you unzip the new version into a new directory, e.g. dbat-x-y-z-w, where x-y-z-w is the version number. 6 Roma data (computed by Photomodeler) 5 0 −5 −10 20 30 25 10 20 0 15 10 −10 5 0 −20 Figure 1: The figure generated by the loadplotdemo demo. 3 3.1 Usage Demos Hint: You may wish to use the command close all between the demos to close all windows. A summary of the demos is found in Table 1. 3.1.1 Plotting The loadplotdemo function load and plots the content of a PhotoModeler text export file. Two examples are included in the toolbox: ROMA and C AM. ROMA loadplotdemo(’roma’) loads a modified PhotoModeler text export file of the 60-camera, 26000-point project used in Börlin and Grussenmeyer (2013a). The camera network, as computed by PhotoModeler, is plotted with camera 1 aligned to the cardinal axes. The result should look like Figure 1. The figure is a standard Matlab 3D figure and may e.g. be rotated or zoomed using the camera toolbar. C AM loadplotdemo(’cam’) demo loads a modified PhotoModeler text export file of a 21-camera, 100-point camera calibration project. The camera network, as computed by PhotoModeler, is plotted and should look like Figure 2. The figure is a standard Matlab 3D figure and may e.g. be rotated or zoomed using the camera toolbar. 3.1.2 Camera calibration The camcaldemo demo loads the camera calibration export file from Section 3.1.1 and runs a camera calibration. The EXIF focal length is used as the initial value. The other values are set to “default” values, e.g. the principal point at the center of the sensor and all lens distortion parameters equal to zero. The initial value for the EO parameters are computed by spatial resection (Haralick et al., 1994; McGlone et al., 7 Camera calibration data set (computed by Photomodeler) 2 1.5 1 0.5 0 2 1.5 2 1.5 1 1 0.5 0.5 0 0 −0.5 −0.5 Figure 2: The figure generated by the loadplotdemo2 demo. 2004, Chap. 11.1.3.4) using the control points defined for the PhotoModeler calibration sheet. The initial OP coordinates are subsequently computed by forward intersection. The bundle adjustment is run with Gauss-Newton-Armijo damping (Börlin and Grussenmeyer, 2013a). The result is given in a number of plot windows and a Photomodeler-style result text file. The result plots are of two kinds: Plots that show the evolution of the iterations and plots that show the quality of the input or output data. The former plots may be useful to understand how the bundle adjustment works but also to “debug” a difficult network that has convergence difficulties. The latter plots give information about the quality of the result and may also provide clues on how to improve a network when the bundle did converge. Evolution plots The evolution plots are collected in figures 3–7. Figure 3 shows a snapshot of the 3D trace figure at the beginning and end of the iterations. As default, the evolution is presented iteration by iteration with intervening presses of the return key. The figure window is interactive and may be rotated, zoomed, etc. In this example, it is clear in Figure 3b that one camera station had poorer initial values than the rest. Figures 4–6 contain three plots showing the evolution of the internal orientation (IO), external orientation (EO), and object point (OP), respectively, during the iterations. The IO plot is split into a focal/principal point panel and a radial and tangential distortion panel, where the radial distortion parameters are scaled to provide more information. The EO plot contains a camera center panel and an ω-φ-κ Euler angle panel. The EO and OP plots are interactive. Lines in the plots or legends may be selected and all corresponding lines will be highlighted. In the top panel of Figure 5, the motion of one camera stands out. Clicking that line reveals that it belongs to camera station 21, which can be further investigated to decide if it should be excluded from the calibration. The final evolution plot, shown in Figure 7, illustrates the evolution of the norm of the total residual and the damping behaviour, if any, during the bundle iterations. In this example, the Gauss-Newton-Armijo linesearch damping is active during the first two iterations. For further details on the damping, see Börlin and Grussenmeyer (2013a). 8 Initial network 2 1.5 1 0.5 0 2 1.5 1.5 1 1 0.5 0.5 0 0 −0.5 −0.5 (a) Initial network configuration. Damping: gna. Iteration 9 of 9 2 1.5 1 0.5 0 2 1.5 1.5 1 1 0.5 0.5 0 0 -0.5 -0.5 (b) Network configuration after convergence, with camera center trace lines. Figure 3: 3D network evolution during the iterations. Only the EO and OP parameters are illustrated. In this example, the variation of the OP coordinates is barely visible. 9 Focal length, principal point (gna) 10 f px py 5 0 Radial distortion 20 10 3 K1 10 5 K2 10 6 K3 0 -20 Tangential distortion 500 10 5 P1 10 5 P2 0 -500 Affine distortion 100 10 4 B1 B2 50 0 0 1 2 3 4 5 6 7 8 9 Iteration count Figure 4: Evolution of IO parameters during the iteration sequence. Camera center (gna) 3 2 1 0 -1 0 1 2 3 4 5 6 7 8 9 7 8 9 Euler angles [degrees] 200 100 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 C18 C19 C20 C21 0 -100 -200 0 1 2 3 4 5 6 Iteration count Figure 5: Evolution of EO parameters during the iteration sequence. 10 Object points (gna) 1.2 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 P15 P16 P17 P18 P19 P20 P21 P22 P23 P24 P25 P26 P27 P28 P29 P30 P31 P32 P33 P34 1 0.8 0.6 0.4 0.2 0 -0.2 0 1 2 3 4 5 6 7 8 9 Iteration count Figure 6: Evolution of OP coordinates during the iteration sequence. Residual norm (gna) 10 5 10 4 10 3 10 2 10 1 0 1 2 3 4 5 6 7 8 9 Step length (alpha) 1 0.8 0.6 0.4 0.2 0 1 2 3 4 5 6 7 8 9 Iteration count Figure 7: Residual evolution and damping behaviour during the iterations. 11 Coverage for all images Image 1 Image 2 Image 3 Image 4 Image 5 Image 6 Image 7 Image 8 Image 9 Image 10 Image 11 Image 12 Image 13 Image 14 Image 15 Image 16 Image 17 Image 18 Image 19 Image 20 Image 21 Rect hull Convex hull Radial hull 2000 1500 1000 500 0 -500 0 500 1000 1500 2000 Rectangular/convex hull/radial coverage = 92% / 87% / 92%. Figure 8: Plots of input/output statistics: Image coverage. Quality plots The quality plots a gathered in figures 8–10. Per-image quality statistics is shown in Figure 9. The statistics presented for each image are the image coverage (rectangular coverage, convex hull coverage, and radial coverage); the number of measured points; the average (RMS) point residual; and the standard deviations for the EO parameters for the camera stations. In this example, the data does not give any obvious support to exclude the suspected image 21 from the calibration. The image coverage is detailed in a separate Figure 8. The plotted data is selectable. All observations from a specific image, including their convex hull, will be highlighted when a point or line is selected. Finally, the per-OP quality statistics in Figure 10 show the number of observations per OP; the maximum ray intersection angle; the average (RMS) point residual; and the OP coordinate standard deviation. The presentation may be zoomed to show only a subset of the OPs by activating the “zoom” function of the figure window. Result file The result file is modelled after the PhotoModeler result file. The result file is listed in Appendix A.6. 3.1.3 Bundle adjustment ROMA The romabundledemo function loads the project from Section 3.1.1 and present essentially the same plots and the camcaldemo. This demo uses the PhotoModeler file as input to the bundle adjustment that runs a few iterations until convergence. The same result file and result plots as camcaldemo are essentially generated. Since the project is larger (60 cams/26 000 points) than the previous example (20 cams/100 points), the computation will take a bit longer. Computation time was around 12 Image coverage (percent) 100 Rectangular Convex Radial 50 0 Point count 100 50 0 Camera ray angles 50 0 RMS point residuals (-- = global RMS) 0.4 0.2 Degrees Project units 0 5 0 2 -4 Spatial standard deviations (camera station) ×10 X Y Z Total Rotational standard deviations (camera station) ×10 -3 omega phi kappa Total 1 0 5 10 15 20 Image number Figure 9: Plots of input/output statistics: Image statistics. Point count 20 10 0 Maximum intersection angles 50 0 RMS point residuals (-- = global RMS) 1 0.5 0 ×10 -4 OP standard deviations X Y Z Total 1001 1004 0 52 1 2 Project units 2 OP id Figure 10: Plots of input/output statistics: Object point statistics. 13 one minute running on a HP compaq dc7800 with an Intel Core2 Quad CPU Q9300 @ 2.50GHz under 64-bit Ubuntu 12.04 (kernel 3.5.0-45). P RAGUE ’16 The prague2016_pm function displays six projects that compare the result of the bundle adjustment procedure in DBAT and the results of PhotoModeler (Börlin and Grussenmeyer, 2016). Similarily, the prague2016_ps function displays the results of a comparison between DBAT and PhotoScan. The v0.5.1.6 release includes a fix to a bug the distributed the image observation weights incorrectly. The result is slightly different estimation results than in Börlin and Grussenmeyer (2016). However, the conclusions remain valid. H AMBURG ’17 The stpierrebundledemo_ps function runs a self-calibration bundle on a Photoscan project included in the StPierre data set. 3.1.4 Error detection Three demos are included to illustrate the error detection capabilities of sprank (dmperm) and spnrank. All are modelled from =camcaldemo=. Missing observations The camcaldemo_missing_obs demo contains a data file where the image observations of two object points (id 13 and 60, respectively) have been deleted. With no observations of either point, the rank deficiency detected by sprank is six. In the generated result file (Section A.3), the X/Y/Z coordinates of both points number 12 and 59 (with id 13 and 60, respectively) are indeed listed as suspicious. Single-ray observations The camcaldemo_1ray demo contains a data file that contains only one observation of object point with id 88. Since two observations (one 2D point) is present but three parameter (one 3D point) is to be estimated, the rank deficiency is one, the rank deficiency detected by sprank is one. The generated result file (Section A.4) lists one coordinate of point 87 (with id 88) as suspicious. Missing datum The camcaldemo_no_datum demo contains a demo where no datum has been specified. As in the previous problems, the result is a numerical problem with a singular (rank deficient) normal matrix. However, in this case the problem is manifested by that many or all parameters are linearly dependent of each other. This will not be detected by sprank. In such a case, the null-space of the normal matrix will carry information about what parameters are linearly dependent, i.e. what parameters are part of the problem. However, when the normal matrix is large, computing the null-space of the normal matrix in the conventional way using the Matlab function null will be intractable. Instead, the spnrank (Foster, 2009) function is used to estimate the rank deficiency of the normal matrix, i.e. the dimension of the null-space. Given the dimension of the null-space, a basis for the null-space is found using Matlab’s eigs function. For this demo, the generated result file (Section A.5) lists many 14 EO parameters as suspicious. The cause of the problem is less straight-forward to determine from the list. However, the listed rank deficiency of seven should be a strong hint of a datum problem. 3.2 Using your own data 3.2.1 Photoscan DBAT can read native Photoscan Archive (.psz) files. DBAT cannot read Photoscan Project (.psx) files. If you have a .psx project, use the Save as... menu in Photoscan and save the project as a Photoscan Archive (.psz). DBAT has been tested with Photoscan file versions up to 1.4.0, Photoscan program version 1.4.4. The ps_postproc function can be used to post-process a Photoscan project. loadplotpsz may be useful to visualize the project, as computed by Photoscan. Known limitations DBAT cannot handle all Photoscan coordinate systems. If you get strange results, you may have to convert to Local Coordinates. loadplotpsz may be useful for debugging the input. 3.2.2 PhotoModeler This section describes how to import you own data using PhotoModeler text export files. If you have another type of input file, you may be able to write your own loader. Otherwise, if you have a text file you wish to import, feel free to mail the file to the the toolbox authors and request an import function. Althought we cannot guarantee anything, we may adhere to the request, time permitting. Export from PhotoModeler To import a PhotoModeler project into the toolbox, the following steps are valid in PhotoModeler Scanner 2012: 1. Export the project using the Export Text File menu command. If the command is not available, follow the instructions in Appendix A.1. 2. After export, open the Project/Cameras... dialog and select the camera that was used in your project. 3. Open the generated text file in a text editor. (a) On the 2nd line (usually reading 0.00005 20), append the width and height in pixels of your images, e.g. to 0.000500 20 5616 3744. (b) Inspect the 4th line. For instance, the original data in roma.txt was (some trailing zeros removed): 24.3581 18.1143 12.0 35.96404 24.0 0.00022 -0.0 0.0 0.0 0.0 The values correspond to the following camera parameters: focal pp_x pp_y format_w format_h K1 K2 K3 P1 P2. 15 Demo loadplotdemo romabundledemo romabundledemo_selfcal camcaldemo camcaldemo_missing_obs camcaldemo_1ray camcaldemo_no_datum prague2016_pm(’c1’) prague2016_pm(’c2’) prague2016_pm(’s1’) prague2016_pm(’s2’) prague2016_pm(’s4’) prague2016_ps(’s5’) ps_postproc(”) stpierrebundledemo_ps Description Load and plot Bundle adjustment Bundle adjustment Camera calibration Exact singular normal matrix Exact singular normal matrix Numerically singular normal matrix Camera calibration Camera calibration Bundle adjustment Bundle adjustment Bundle adjustment Photoscan post-processing Photoscan post-processing Photoscan post-processing Datum Relative dependent orientation Relative dependent orientation Hard-coded control pts Hard-coded control pts Hard-coded control pts Missing Hard-coded fixed control points Hard-coded weighted control points Fixed ctrl pts from text file Weighted ctrl pts from text file Weighted ctrl pts from text file Weighted ctrl pts from psz file Weighted ctrl pts from psz file Weighted ctrl pts from psz file Table 1: Summary of demos. Self-calibration no yes yes yes yes yes yes yes no no no no no yes Notice that most of the significant digits of K1–K3 were lost in the text export. (c) Update the parameter values on the 4th line with values from the camera dialog for each parameter with a larger number of significant digits in the dialog. This usually means all parameters except format_w. In the roma.txt test case, the 4th line was modified to: 24.3581 18.1143 12 35.96404 24 2.174e-4 -1.518e-7 0 0 0. Loading into Matlab 1. In Matlab, run step 2 from Section 2 if not already done. 2. Call loadplotdemo with the name of your text export file as first parameter. A figure with your camera network, aligned with the first camera and rotated to have +Z ’up’, should now have been generated. Using the bundle adjustment of DBAT Modify either of the demo functions to match what you want to do. If you run into any problems, send us an email. The interesting results may either be in the plots or in the result file. 17 References N. Börlin and P. Grussenmeyer. Bundle adjustment with and without damping. Photogrammetric Record, 28(144):396–415, Dec. 2013a. doi: 10.1111/phor.12037. N. Börlin and P. Grussenmeyer. Experiments with metadata-derived initial values and linesearch bundle adjustment in architectural photogrammetry. ISPRS Annals of the Photogrammetry, Remote Sensing, and Spatial Information Sciences, II-5/W1:43– 48, Sept. 2013b. N. Börlin and P. Grussenmeyer. Camera calibration using the damped bundle adjustment toolbox. ISPRS Annals of the Photogrammetry, Remote Sensing, and Spatial Information Sciences, II(5):89–96, June 2014. N. Börlin and P. Grussenmeyer. External verification of the bundle adjustment in photogrammetric software using the damped bundle adjustment toolbox. International Archives of Photogrammetry, Remote Sensing, and Spatial Information Sciences, XLI-B5:7–14, July 2016. N. Börlin, A. Murtiyoso, P. Grussenmeyer, F. Menna, and E. Nocerino. Modular bundle adjustment for photogrammeric computations. International Archives of Photogrammetry, Remote Sensing, and Spatial Information Sciences, XLII(2):?, June 2018. Paper accepted for the ISPRS TC II mid-term symposium in Riva del Garda, Italy, Jun 3-7, 2018. L. Foster. Calculating the rank of sparse matrices using spnrank. http://www.math.sjsu.edu/singular/matrices/software/SJsingular/Doc/spnrank.pdf, Apr. 2009. R. M. Haralick, C.-N. Lee, K. Ottenberg, and M. Nölle. Review and analysis of solutions of the three point perspective pose estimation problem. Int J Comp Vis, 13(3): 331–356, 1994. C. McGlone, E. Mikhail, and J. Bethel, editors. Manual of Photogrammetry. ASPRS, 5th edition, July 2004. ISBN 1-57083-071-1. A. Murtiyoso, P. Grussenmeyer, and N. Börlin. Reprocessing close range terrestrial and UAV photogrammetric projects with the DBAT toolbox for independent verification and quality control. ISPRS - International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, XLII-2/W8: 171–177, 2017. doi: 10.5194/isprs-archives-XLII-2-W8-171-2017. URL https: //www.int-arch-photogramm-remote-sens-spatial-inf-sci. net/XLII-2-W8/171/2017/. H. Stewénius, C. Engels, and D. Nistér. Recent developments on direct relative orientation. ISPRS J Photogramm, 60(4):284–294, June 2006. 18 A Appendices A.1 Enabling text export from PhotoModeler Some versions of PhotoModeler do not have the text file export option enabled by default. In that case, the following steps worked in PhotoModeler Scanner 2012: 1. Right-click on the main window toolbar, select Customize toolbar.... 2. In the Commands tab, select the File category. 3. Drag the Export Text File... command to a toolbar of your choice. 4. Now you should be able to export your project as a text file by clicking on the Export Text File button. A.2 Camera model Currently, the only supported camera model is the omega-phi-kappa Euler angle camera model (McGlone et al., 2004, Ch. 2.1.2.3). A.3 Result file with missing observations Damped Bundle Adjustment Toolbox result file Project Name: Bundle Soln PhotoModeler Calibration Project Problems and suggestions: Project Problems: Structural rank: 417 (deficiency: 6) DMPERM suggests the following parameters have problems: OX-12/13 OY-12/13 OZ-12/13 OX-59/60 OY-59/60 OZ-59/60 Numerical rank: not tested. Problems related to the processing: (1) Bundle failed with code -4 (see below for details). . . . A.4 Result file with single-ray observations Damped Bundle Adjustment Toolbox result file Project Name: Bundle Soln PhotoModeler Calibration Project Problems and suggestions: Project Problems: Structural rank: 422 (deficiency: 1) DMPERM suggests the following parameters have problems: OZ-87/88 Numerical rank: not tested. Problems related to the processing: (1) Bundle failed with code -4 (see below for details). . . . 19 A.5 Result file with missing datum Damped Bundle Adjustment Toolbox result file Project Name: Bundle Soln PhotoModeler Calibration Project Problems and suggestions: Project Problems: Structural rank: ok. Numerical rank: 428 (deficiency: 7) Null-space suggest the following parameters are part of the problem: Vector 1 (eigenvalue 1.36254e-18): (EX-21, -0.156) (EX-9, -0.13) (EX-13, -0.12) (EX-10, -0.119) (EX-11, -0.115) (EX-12, -0.108) (EX-14, -0.104) Vector 2 (eigenvalue -1.60532e-17): (EX-21, 0.207) (EY-21, 0.195) (EY-1, 0.192) (EY-2, 0.178) (EX-13, 0.167) (EY-15, 0.166) (EY-3, 0.166) (EY-4, 0.163) (EY-16, 0.161) (EX-14, 0.157) (EX-15, 0.151) (EX-11, 0.149) (EY-18, 0.147) (EX-12, 0.146) (EX-16, 0.145) (EY-20, 0.133) (EY-17, 0.128) Vector 3 (eigenvalue 5.21745e-17): (om-21, -0.16) (EX-3, -0.155) (EX-4, -0.151) (EX-5, -0.147) (EX-6, -0.136) (EZ-7, 0.132) (om-13, -0.129) (EX-1, -0.129) (om-15, -0.127) (om-16, -0.125) (EZ-8, 0.125) (om-14, -0.125) (EZ-9, 0.122) (EX-2, -0.117) (om-11, -0.116) (EZ-10, 0.116) (om-12, -0.114) (om-18, -0.113) (om-20, -0.113) (EZ-11, 0.111) (EX-7, -0.111) (EZ-12, 0.11) (om-19, -0.109) (om-9, -0.108) (EZ-5, 0.107) (om-1, -0.106) (om-17, -0.106) (om-2, -0.105) (om-10, -0.105) Vector 4 (eigenvalue -5.5516e-17): (EZ-21, -0.174) (EX-5, -0.13) 20 (EX-7, -0.129) (EX-8, -0.12) (EX-6, -0.119) (EY-9, -0.114) (EY-11, -0.111) Vector 5 (eigenvalue -1.45759e-16): (EY-7, 0.158) (EY-5, 0.154) (EY-8, 0.153) (EY-9, 0.151) (om-4, -0.147) (EY-19, 0.147) (om-3, -0.144) (EY-6, 0.143) (EY-10, 0.143) (EY-17, 0.133) (EZ-3, -0.132) (EZ-4, -0.129) (om-17, -0.126) (om-19, -0.126) (om-18, -0.125) (om-1, -0.124) (om-9, -0.124) (om-2, -0.124) (EY-18, 0.121) (om-10, -0.121) (EY-20, 0.12) (om-20, -0.12) (om-5, -0.12) (EZ-2, -0.118) (EZ-1, -0.118) (om-6, -0.116) (ph-9, -0.114) (ph-7, -0.113) (ph-11, -0.112) (EY-11, 0.112) (ph-12, -0.111) (ph-8, -0.11) (ph-10, -0.109) (ph-5, -0.108) (om-11, -0.108) (EY-12, 0.107) (EZ-5, -0.106) (ph-13, -0.106) (om-7, -0.104) (ph-19, -0.104) (om-12, -0.104) (ph-14, -0.104) Vector 6 (eigenvalue -1.54875e-16): (om-21, 0.185) (ph-9, -0.174) (EZ-21, 0.174) (ph-10, -0.169) (ph-11, -0.167) (ph-7, -0.167) (ph-8, -0.165) (ph-12, -0.164) (EX-9, -0.152) (EX-7, -0.151) (EX-8, -0.151) (EY-11, -0.148) (EY-12, -0.146) (EX-10, -0.146) (EZ-15, 0.142) (EZ-16, 0.137) (EY-13, -0.136) (ph-5, -0.135) (EY-14, -0.133) 21 (EZ-13, 0.127) (ph-13, -0.127) (EZ-14, 0.126) (ph-14, -0.124) (ph-6, -0.123) (ph-19, -0.12) (EY-21, -0.117) Vector 7 (eigenvalue 1.9046e-16): (ph-1, 0.194) (ph-2, 0.194) (ph-15, 0.173) (EX-2, 0.173) (om-5, -0.173) (ph-16, 0.169) (ph-4, 0.169) (EX-1, 0.168) (ph-3, 0.164) (om-8, -0.163) (om-7, -0.16) (om-6, -0.16) (ph-21, 0.157) (EY-21, -0.138) (EY-5, 0.138) (EY-6, 0.132) (om-3, -0.127) (ph-20, 0.126) (om-4, -0.125) Problems related to the processing: (1) Bundle failed with code -2 (see below for details). . . . A.6 Successful result file example Damped Bundle Adjustment Toolbox result file Project Name: Bundle Soln PhotoModeler Calibration Project Problems and suggestions: Project Problems: Structural rank: ok. Numerical rank: ok. Problems related to the processing: (1) One or more of the camera parameter has a high correlation (see below). Information from last bundle Last Bundle Run: 25-Oct-2018 20:55:37 DBAT version: 0.7.6.1 (2018-10-25) MATLAB version: 8.6.0.267246 (R2015b) Host system: GLNXA64 Host name: slartibartfast Status: OK Sigma0: 1.6148 Sigma0 (pixels): 0.16148 Processing options: Orientation: on Global optimization: on Calibration: on Constraints: off Maximum # of iterations: 20 Convergence tolerance: 1e-06 Termination criteria: relative Singular test: on Chirality veto: off Damping: gna Camera unit (cu): mm Object space unit (ou): m Initial value comment: Camera calibration from EXIF value Total error: 22 Number of stages: 1 Number of iterations: 9 First error: 30882.3 Last error: 98.556 Execution time (s): 0.78 Lens distortion models: Backward (Photogrammetry) model 3 Cameras: Calibration: yes (Xp Yp f K1 K2 K3 P1 P2 aspect) Camera1 Lens distortion model: Backward (Photogrammetry) model 3 Focal Length: Value: 7.457 mm Deviation: 0.00105 mm Xp - principal point x: Value: 3.61546 mm Deviation: 0.00082 mm Yp - principal point y: Value: 2.61329 mm Deviation: 0.00098 mm Fw - format width: Value: 7.25301 mm Fh - format height: Value: 5.43764 mm K1 - radial distortion 1: Value: 0.00458861 mm^(-3) Deviation: 2.21e-05 mm^(-3) Significance: p=1.00 K2 - radial distortion 2: Value: -4.51351e-05 mm^(-5) Deviation: 2.65e-06 mm^(-5) Significance: p=1.00 Correlations over 95%: K3:-97.9%. K3 - radial distortion 3: Value: -2.05253e-06 mm^(-7) Deviation: 1.01e-07 mm^(-7) Significance: p=1.00 Correlations over 95%: K2:-97.9%. P1 - decentering distortion 1: Value: -6.12803e-05 mm^(-3) Deviation: 3.52e-06 mm^(-3) Significance: p=1.00 P2 - decentering distortion 2: Value: -4.41172e-05 mm^(-3) Deviation: 3.94e-06 mm^(-3) Significance: p=1.00 B1 - aspect ratio: Value: 0.000389598 Deviation: 2.08e-05 Significance: p=1.00 B2 - skew: Value: 0 Iw - image width: Value: 2272 px Ih - image height: Value: 1704 px Xr - X resolution: Value: 313.371 px/mm Yr - Y resolution: Value: 313.371 px/mm Pw - pixel width: Value: 0.00319235 mm Ph - pixel height: Value: 0.0031911 mm Rated angle of view (h,v,d): (52, 40, 63) deg Largest distortion: 0.37 mm (116.4 px, 8.2% of half-diagonal) Precisions / Standard Deviations: 23 Photograph Standard Deviations: Photo 1: P8250021.JPG Omega: Value: -39.413082 deg Deviation: 0.0085 deg Phi: Value: -1.183179 deg Deviation: 0.00761 deg Kappa: Value: -179.838467 deg Deviation: 0.00275 deg Xc: Value: 0.454947 ou Deviation: 0.000155 ou Yc: Value: 1.793849 ou Deviation: 0.000179 ou Zc: Value: 1.468066 ou Deviation: 0.000207 ou Photo 2: P8250022.JPG Omega: Value: -39.734523 deg Deviation: 0.00816 deg Phi: Value: -1.813688 deg Deviation: 0.00886 deg Kappa: Value: -90.123062 deg Deviation: 0.00289 deg Xc: Value: 0.470305 ou Deviation: 0.000186 ou Yc: Value: 2.026401 ou Deviation: 0.000219 ou Zc: Value: 1.639148 ou Deviation: 0.000232 ou Photo 3: P8250023.JPG Omega: Value: -27.227000 deg Deviation: 0.0105 deg Phi: Value: -28.559177 deg Deviation: 0.00753 deg Kappa: Value: -141.839170 deg Deviation: 0.00538 deg Xc: Value: -0.644442 ou Deviation: 0.000188 ou Yc: Value: 1.466578 ou Deviation: 0.000179 ou Zc: Value: 1.580187 ou Deviation: 0.000243 ou Photo 4: P8250024.JPG Omega: Value: -28.556794 deg Deviation: 0.00881 deg Phi: Value: -30.289704 deg Deviation: 0.00923 deg Kappa: Value: -49.786720 deg Deviation: 0.00467 deg 24 Xc: Value: -0.643144 ou Deviation: 0.000198 ou Yc: Value: 1.490295 ou Deviation: 0.000202 ou Zc: Value: 1.637492 ou Deviation: 0.000246 ou Photo 5: P8250025.JPG Omega: Value: 4.385418 deg Deviation: 0.00943 deg Phi: Value: -34.659929 deg Deviation: 0.00863 deg Kappa: Value: -87.134063 deg Deviation: 0.00519 deg Xc: Value: -0.671014 ou Deviation: 0.000158 ou Yc: Value: 0.417412 ou Deviation: 0.000144 ou Zc: Value: 1.409244 ou Deviation: 0.000193 ou Photo 6: P8250026.JPG Omega: Value: 2.063986 deg Deviation: 0.0103 deg Phi: Value: -33.988460 deg Deviation: 0.00823 deg Kappa: Value: 1.485869 deg Deviation: 0.00587 deg Xc: Value: -0.712797 ou Deviation: 0.000177 ou Yc: Value: 0.476083 ou Deviation: 0.000155 ou Zc: Value: 1.465130 ou Deviation: 0.000203 ou Photo 7: P8250027.JPG Omega: Value: 27.342174 deg Deviation: 0.00854 deg Phi: Value: -28.292503 deg Deviation: 0.00875 deg Kappa: Value: -44.210389 deg Deviation: 0.00445 deg Xc: Value: -0.534821 ou Deviation: 0.000154 ou Yc: Value: -0.349595 ou Deviation: 0.000157 ou Zc: Value: 1.402489 ou Deviation: 0.000212 ou Photo 8: P8250028.JPG Omega: 25 Value: 26.875970 deg Deviation: 0.0107 deg Phi: Value: -28.129516 deg Deviation: 0.00757 deg Kappa: Value: 44.840805 deg Deviation: 0.00553 deg Xc: Value: -0.718081 ou Deviation: 0.000218 ou Yc: Value: -0.466107 ou Deviation: 0.000204 ou Zc: Value: 1.715475 ou Deviation: 0.000264 ou Photo 9: P8250029.JPG Omega: Value: 30.383673 deg Deviation: 0.00856 deg Phi: Value: 0.193844 deg Deviation: 0.00776 deg Kappa: Value: 0.084838 deg Deviation: 0.00248 deg Xc: Value: 0.524897 ou Deviation: 0.000161 ou Yc: Value: -0.543737 ou Deviation: 0.000167 ou Zc: Value: 1.533003 ou Deviation: 0.000208 ou Photo 10: P8250030.JPG Omega: Value: 30.975069 deg Deviation: 0.0085 deg Phi: Value: 1.702984 deg Deviation: 0.00879 deg Kappa: Value: 89.537060 deg Deviation: 0.00264 deg Xc: Value: 0.554430 ou Deviation: 0.000176 ou Yc: Value: -0.592328 ou Deviation: 0.000194 ou Zc: Value: 1.617413 ou Deviation: 0.000216 ou Photo 11: P8250031.JPG Omega: Value: 27.620051 deg Deviation: 0.0106 deg Phi: Value: 30.742857 deg Deviation: 0.00756 deg Kappa: Value: 42.343765 deg Deviation: 0.00584 deg Xc: Value: 1.770052 ou Deviation: 0.000191 ou 26 Yc: Value: -0.425243 ou Deviation: 0.00018 ou Zc: Value: 1.551302 ou Deviation: 0.000241 ou Photo 12: P8250032.JPG Omega: Value: 24.647784 deg Deviation: 0.00901 deg Phi: Value: 30.199261 deg Deviation: 0.00965 deg Kappa: Value: 133.199858 deg Deviation: 0.00493 deg Xc: Value: 1.864503 ou Deviation: 0.000201 ou Yc: Value: -0.480191 ou Deviation: 0.000202 ou Zc: Value: 1.614517 ou Deviation: 0.000255 ou Photo 13: P8250033.JPG Omega: Value: 0.519301 deg Deviation: 0.00941 deg Phi: Value: 33.141786 deg Deviation: 0.00865 deg Kappa: Value: 88.708362 deg Deviation: 0.00499 deg Xc: Value: 1.630951 ou Deviation: 0.000165 ou Yc: Value: 0.497645 ou Deviation: 0.000151 ou Zc: Value: 1.470402 ou Deviation: 0.000199 ou Photo 14: P8250034.JPG Omega: Value: -1.707201 deg Deviation: 0.0105 deg Phi: Value: 33.605390 deg Deviation: 0.00835 deg Kappa: Value: 180.179674 deg Deviation: 0.00585 deg Xc: Value: 1.795963 ou Deviation: 0.000196 ou Yc: Value: 0.525690 ou Deviation: 0.000177 ou Zc: Value: 1.598647 ou Deviation: 0.000218 ou Photo 15: P8250035.JPG Omega: Value: -30.757132 deg Deviation: 0.00869 deg Phi: 27 Value: 28.161929 deg Deviation: 0.00893 deg Kappa: Value: 138.427120 deg Deviation: 0.00462 deg Xc: Value: 1.671692 ou Deviation: 0.000177 ou Yc: Value: 1.554494 ou Deviation: 0.000178 ou Zc: Value: 1.500046 ou Deviation: 0.000239 ou Photo 16: P8250036.JPG Omega: Value: -29.841912 deg Deviation: 0.0105 deg Phi: Value: 26.976407 deg Deviation: 0.00757 deg Kappa: Value: -134.657860 deg Deviation: 0.00543 deg Xc: Value: 1.693214 ou Deviation: 0.000204 ou Yc: Value: 1.619159 ou Deviation: 0.000189 ou Zc: Value: 1.590375 ou Deviation: 0.000252 ou Photo 17: P8250037.JPG Omega: Value: -8.536369 deg Deviation: 0.00979 deg Phi: Value: -0.515819 deg Deviation: 0.00956 deg Kappa: Value: 179.396590 deg Deviation: 0.00198 deg Xc: Value: 0.424677 ou Deviation: 0.000287 ou Yc: Value: 0.824641 ou Deviation: 0.000288 ou Zc: Value: 1.971217 ou Deviation: 0.000246 ou Photo 18: P8250038.JPG Omega: Value: -4.760952 deg Deviation: 0.00959 deg Phi: Value: 0.661695 deg Deviation: 0.00919 deg Kappa: Value: 88.788380 deg Deviation: 0.00189 deg Xc: Value: 0.483059 ou Deviation: 0.000268 ou Yc: Value: 0.925982 ou Deviation: 0.000284 ou 28 Zc: Value: 1.885017 ou Deviation: 0.000229 ou Photo 19: P8250039.JPG Omega: Value: -4.415305 deg Deviation: 0.00923 deg Phi: Value: -0.416632 deg Deviation: 0.00926 deg Kappa: Value: 88.245577 deg Deviation: 0.00186 deg Xc: Value: 0.462946 ou Deviation: 0.000275 ou Yc: Value: 0.578695 ou Deviation: 0.000271 ou Zc: Value: 1.874858 ou Deviation: 0.00021 ou Photo 20: P8250040.JPG Omega: Value: -7.619745 deg Deviation: 0.00935 deg Phi: Value: -1.571494 deg Deviation: 0.0103 deg Kappa: Value: -180.050126 deg Deviation: 0.00199 deg Xc: Value: 0.701429 ou Deviation: 0.000319 ou Yc: Value: 0.784042 ou Deviation: 0.000278 ou Zc: Value: 1.925303 ou Deviation: 0.00024 ou Photo 21: P8250041.JPG Omega: Value: -8.708623 deg Deviation: 0.00925 deg Phi: Value: 1.058407 deg Deviation: 0.0102 deg Kappa: Value: -182.614638 deg Deviation: 0.00203 deg Xc: Value: 0.269149 ou Deviation: 0.000314 ou Yc: Value: 0.822761 ou Deviation: 0.000266 ou Zc: Value: 1.904844 ou Deviation: 0.000243 ou Quality Photographs Total number: 21 Numbers used: 21 Cameras Total number: 1 Camera1: Calibration: yes 29 Number of photos using camera: 21 Photo point coverage: Rectangular: 41%-83% (61% average, 92% union) Convex hull: 31%-62% (46% average, 87% union) Radial: 60%-92% (73% average, 92% union) Photo Coverage References points outside calibrated region: none Point Measurements Number of control pts: 4 Number of check pts: 0 Number of object pts: 96 CP ray count: 21-21 (21.0 avg) 4 points with 21 rays. CCP ray count: OP ray count: 16-21 (20.7 avg) 1 points with 16 rays. 1 points with 17 rays. 2 points with 18 rays. 3 points with 19 rays. 5 points with 20 rays. 84 points with 21 rays. Point Marking Residuals Overall point RMS: 0.216 pixels Mark point residuals: Maximum: 0.955 pixels (OP 1003 on photo 5) Object point residuals (RMS over all images of a point): Minimum: 0.095 pixels (OP 65 over 21 images) Maximum: 0.553 pixels (OP 1004 over 21 images) Photo residuals (RMS over all points in an image): Minimum: 0.153 pixels (photo 4 over 97 points) Maximum: 0.281 pixels (photo 11 over 100 points) Point Precision Total standard deviation (RMS of X/Y/Z std): Minimum: 8.2e-05 (OP 49) Maximum: 0.00011 (OP 90) Maximum X standard deviation: 5e-05 (OP 90) Maximum Y standard deviation: 5.3e-05 (OP 90) Maximum Z standard deviation: 8.5e-05 (OP 90) Points with high correlations Points with correlation above 95%: 0 Points with correlation above 99%: 0 Point Angles CP Minimum: 83.4 degrees (CP 1003) Maximum: 85.8 degrees (CP 1002) Average: 84.7 degrees CCP Minimum: Maximum: Average: OP Minimum: 79.6 degrees (OP 90) Maximum: 90.0 degrees (OP 59) Average: 86.5 degrees Smallest angles (ID, angle [deg], vis in cameras) 90: 79.61 ( 1 2 3 5 8 9 11 13 8: 81.00 ( 1 2 3 4 5 7 9 10 92: 81.15 ( 1 2 3 4 5 7 8 9 Ctrl measurements Prior id, x, y, z, stdx, stdy, 1001, 0.000, 1.000, 0.000, 0, 0, 1002, 1.000, 1.000, 0.000, 0, 0, 1003, 0.000, 0.000, 0.000, 0, 0, 1004, 1.000, 0.000, 0.000, 0, 0, Posterior id, x, y, z, stdx, stdy, 30 14 11 10 15 12 11 16 13 13 17 14 14 stdz, label 0, 0, 0, 0, stdz, rays, label 18 15 15 19 17 16 20 18 17 21) 19 18 20 19 1001, 0.000, 1.000, 0.000, 1002, 1.000, 1.000, 0.000, 1003, 0.000, 0.000, 0.000, 1004, 1.000, 0.000, 0.000, Diff (pos=abs diff, std=rel diff) id, x, y, z, 1001, 0.000, 0.000, 0.000, 1002, 0.000, 0.000, 0.000, 1003, 0.000, 0.000, 0.000, 1004, 0.000, 0.000, 0.000, Ctrl point delta Max: 0.000 ou (, pt 1001) Max X,Y,Z X: 0.000 ou (, pt 1001) Y: 0.000 ou (, pt 1001) Z: 0.000 ou (, pt 1001) RMS: 0.000 ou (from 4 items) Check measurements none 31 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, xy, 0.000, 0.000, 0.000, 0.000, xyz, 0.000, 0.000, 0.000, 0.000, stdx, 0.0%, 0.0%, 0.0%, 0.0%, 21, 21, 21, 21, stdy, 0.0%, 0.0%, 0.0%, 0.0%, stdz, rays, label 0.0%, 21, 0.0%, 21, 0.0%, 21, 0.0%, 21,
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.5 Linearized : No Page Count : 31 Page Mode : UseOutlines Author : Title : Subject : Creator : LaTeX with hyperref package Producer : pdfTeX-1.40.18 Create Date : 2018:10:25 21:02:46+02:00 Modify Date : 2018:10:25 21:02:46+02:00 Trapped : False PTEX Fullbanner : This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) kpathsea version 6.2.3EXIF Metadata provided by EXIF.tools