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 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. 


-       If the approximation of Z0 is possible, it is recommended to define Z0 rather than NUMSCALE0


-       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


Data type




focal length of photo (this will help estimate initial values of parameters)



no of maximum iteration



photo scale number (this will help estimate initial values of parameters)



flying height (this will help estimate initial values of parameters)



file name containing approx. parameters (EOP)



standard deviation of ground control coordinate



standard deviation of photo / image rectangular coordinate



no operator provided


Construction function

{AT_BD} ret  =  AT_BD()


->block_3 = AT_BD()



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


->block_3.sd_gcp() = 0.50

->block_3.sd_xpyp() = 0.030

->block_3.numscale0() = 50000


Class function