|
|
Overview
AT_BD is a
class specially designed to handle Aerial Triangulation (AT) computation using
Bundle Block Adjustment, and Bundle Block Adjustment with Self
Calibration. The mathematic model used in the adjustment is Collinearity
condition. This is by far the
most
accurate mathematic model used in AT. All parameters are determined
simultaneously by least squares technique. The mathematic model is
non-linear, however, no approximate values of parameters are required from
users.
Important Note: -
Inside Noobeed, the expected unit of Photo
coordinate is Millimeter and the unit of Ground
coordinate is Meter. -
The Focal length of each photo has to be known before
performing an adjustment, either by setting at
the block level, by using the Lfunction FOCAL to set for the default value, or by input it individually in the photo coordinate
observation file, by giving the focal length next to the Photo number. - In a very rare situation when the calculation does not converge, due to poor estimations of parameters, the user might want to provide a set of approximate parameter (EOP) values in an external file. This is particular useful when doing a camera calibration and the calculation cannot be made converged. - To provide an external approximate value of EOP file, please set L-function "fapprox" to the filename that stores approximate values of EOP. This is an ASCII file and its format can be seen in class function "fapprox". - To let the program determine approximate values of parameters automatically, set the "fapprox" string to a null string, "". - Please note that, almost all the time, the automatic determination of approximate parameters, determined inside the function, are good enough to bring the calculation converged, even in big tilted photos, if the A.T. adjustment is a normal one, i.e. not with self calibration. - Thus, due to an observing fact that A.T. without self calibration is almost always converge, but A.T. with self calibration may or may not converge, we may want to separate a camera calibration process into 2 steps. First perform A.T. as normal, then use the values of the EOP parameters from the result as approximate values for a second AT with self calibration. In this way, we can make sure that the calculation always converges. - We do not recommend to use pixel unit as the unit of the photo coordinate, for this could distort the real world physical model in some case, leading to a divergent of AT solution. Please always try to stay with the true physical unit for both photo coordinate and ground coordinate. |
Noobeed bundle block adjustment program can handle a block of photos that have different values of camera focal length. In fact each individual photo can have its own focal length, or use the default focal length if omitted.
A user can control the number of iterations by setting the maximum number at which the computation terminates. However, computation may stop before reaching the maximum number of iterations, if a preset required accuracy is achieved.
In practice, it is not common that a block adjustment can achieve a good result at the first run, due to human error and large amount of data. There will be always some editing in data files, and it can be done very easy in Noobeed, by putting a slash sign, "/", in front of a record to turn them into a comment record. Individual standard deviation can be always put at the end of an observation at will, though a default value is given when omitted. The results from an adjustment are neat and easy to understand.
Note: - Noobeed does not realy want the user to input photo scale number NUMSCALE0 or flying height Z0, because in the approximation process, the photo scale can be determined using ground control points. Noobeed then uses the photo scale to determine the approximation of flying height (Z0). Therefore if the user wants to feed these information into Noobeed, it is recommended to define Z0 rather than NUMSCALE0, or input nothing and leave the job for Noobeed.
-
Unless the approximation of Z0 is defined, otherwise, it
will works like this. NUMSCALE0 is used for the purpose of estimating the
approximation of Z0, by multiplying with the given focal length (FOCAL). However since Noobeed thinks of Focal
length UNIT as MILLIMETER and Ground coordinate as METER, therefore, the ACTION in Noobeed is *** the NUMSCALE0 will be
divided by 1000 *** so that the Z0 will have a correct unit, i.e. in METER. -
In a situation that photo coordinate and ground
coordinate have the same unit, or the ground coordinate unit is not as three time as the photo coordinate unit, then
this action is irrelevant. However,
still Noobeed will go ahead divide NUMSCALE0 with 1000. Therefore, to get thing correct, the user SHOULD multiply the NUMSCALE0 with a relevant number
(e.g. 1000 in case of the same unit) before entering into Noobeed. For
example, in case of the same unit, if the scale number is 275 then you must
define NUMSCALE0 as 275000. |
Member data
Name |
Data type |
Meaning |
focal |
double |
focal length of photo (this will
help estimate initial values of parameters) |
no_iterate |
int |
no of maximum iteration |
numscale0 |
double |
photo scale number (this will help
estimate initial values of parameters) |
z0 |
double |
flying height (this will help
estimate initial values of parameters) |
fapprox |
String |
file name containing approx.
parameters (EOP) |
sd_gcp |
double |
standard deviation of ground
control coordinate |
sd_xpyp |
double |
standard deviation of photo /
image rectangular coordinate |
Operator
no operator provided
Construction function
{AT_BD} ret = AT_BD()
Example:
->block_3 = AT_BD() |
Lfunction
object.FOCAL() = {double} left-value
object.NO_ITERATE() = {int} left-value
object.NUMSCALE0() = {double} left-value
object.Z0() = {double} left-value
object.FAPPROX() = {String} left-value
object.SD_GCP() = {double} left-value
object.SD_XPYP() = {double} left-value
Example:
->block_3.sd_gcp() = 0.50 ->block_3.sd_xpyp() = 0.030 ->block_3.numscale0() = 50000 |
Class function
|
||||
|
||||