Patent Description:
Embodiments discussed herein regard devices, systems, and methods for merging three-dimensional (3D) point clouds. Error of the merged 3D point cloud can be bounded by errors of the individual 3D point clouds.

"<NPL>) presents a framework for registration of multi-view cloud point data.

"<NPL>) presents an algorithm for generating and registering predicted images from a digital elevation model DEM used as geographic reference and fitting the parameters of a camera sensor model; tie points are used to determine a refined camera model.

In a first aspect, there is provided a computer-implemented method for registering a first three-dimensional (3D) image to a second 3D image with error propagation, the method comprising: reducing a sum aggregate of discrepancies between respective tie points and associated 3D points in the first and the second 3D images, wherein reducing the sum aggregate of discrepancies includes incorporating ground points associated with the tie points into a representation of the first and second 3D images; adjusting 3D error models of the first and second 3D images based on the reduced discrepancies to generate registered 3D images; and propagating an error of the first or second 3D images to the registered 3D image to generate error of the registered 3D images.

In another aspect, there is provided a non-transitory machine-readable medium including instructions that, when executed by a machine, cause a machine to perform the methods described herein.

In another aspect, there is provided a system comprising: a memory including first and second three-dimensional (3D) images of first and second geographical regions stored thereon; and processing circuitry coupled to the memory, the processing circuitry configured to: reduce a sum aggregate of discrepancies between respective tie points and associated 3D points in the first and the second 3D images, wherein reducing the sum aggregate of discrepancies includes incorporating ground points associated with the tie points into a representation of the first and second 3D images; adjust 3D error models of the first and second 3D images based on the reduced discrepancies to generate registered 3D images; and propagate an error of the first or second 3D images to the registered 3D image to generate error of the registered 3D images.

Discussed herein are methods, systems, and devices for registering a first 3D point cloud (or a portion thereof) to one or more other 3D point clouds (or a portion thereof) to generate a merged 3D point cloud. One or more the first and second 3D point clouds can include an associated error. The associated error can be propagated to the merged 3D point cloud. The error of the 3D point cloud can be used in a downstream application. Example applications include targeting and mensuration. A targeteer (one who performs targeting) can benefit from the error to better inform their targeting location choice. A mensuration of an object can benefit from the error as well.

The merged 3D point clouds can include error that is better than either of the first and second 3D point clouds individually. For example, if the first 3D point cloud includes a lower error (relative to the second 3D point cloud) in the x and y directions and the second 3D point cloud includes a lower error (relative to the first 3D point cloud) in the z direction, the merged 3D point cloud can include error bounded by the first 3D point cloud in the x and y directions and by the second 3D point cloud in the z direction. The merged point cloud can thus inherit the better of the errors between the first and second point clouds for a specified parameter.

Reference will now be made to the FIGS. to describe the methods, systems, and devices for merging 3D point clouds with error propagation.

<FIG> illustrates an example of a system for 3D point set merging. The system can include processing circuitry <NUM> that receives tie points <NUM>, tie point error <NUM>, a first 3D point set <NUM>, a second 3D point set <NUM>, tie points <NUM>, tie point error <NUM>, and first or second point set error <NUM>. The first or second point set error <NUM> includes error for at least one of the first 3D point set <NUM> and the second 3D point set <NUM>. The first or second point set error <NUM> can thus include error for the first 3D point set <NUM>, the second 3D point set <NUM>, or the first 3D point set <NUM> and the second 3D point set <NUM>.

The first 3D point set <NUM> or the second 3D point set <NUM> can include a point cloud, a 3D surface, or the like. The first 3D point set <NUM> and the second 3D point set <NUM> can include (x, y, z) data for respective geographic regions. The geographic regions of the first 3D point set <NUM> and the second 3D point set <NUM> at least partially overlap. One or more of the first point set <NUM> and the second point set <NUM> can include intensity data. Intensity data can include one or more intensity values, such as red, green, blue, yellow, black, white, gray, infrared, thermal, or the like. One or more of the first point set <NUM> and the second the point set <NUM> can include error data. The error data is illustrated as being a separate input in <FIG>, namely the first or second point set error <NUM>. The error data can indicate an accuracy of the corresponding point of the point set.

The tie points <NUM> can associate respective points between the first 3D point set <NUM> and the second 3D point set <NUM>. The tie points <NUM> can indicate a first point (x<NUM>, y<NUM>, z<NUM>) in the first 3D point set <NUM>, a second point (x<NUM>, y<NUM>, z<NUM>) in the second 3D point set <NUM> or an error associated with the tie point <NUM> (shown as separate input tie point error <NUM>). The tie point error <NUM> can indicate how confident one is that the first and second points correspond to the same geographic location. The tie point error <NUM> can include nine entries indicating a covariance (variance or cross-covariance) between three variables. The three variables can be error in the respective directions (x, y, z). A covariance matrix representation of the tie point error <NUM> is provided as <MAT> where the diagonal terms are respective variances in the given directions, and the off-diagonal terms are covariances between the directions.

The first or second point set error <NUM> can sometimes be improved, such as to be more rigorous. Sometimes, the first or second point set error <NUM> can be in a form that is not digestible by the bundle adjustment operation <NUM>. The point set error <NUM> can be conditioned by a condition point set error operation <NUM> to generate an error matrix <NUM>. The condition point set error operation <NUM> can include generating a covariance matrix <NUM> of error parameters of the first 3D point set <NUM> or the second 3D point set <NUM>. The error parameters can include seven parameters. Three of the parameters can include translation in x, y, and z, respectively. Three of the parameters can be for rotation in x, y, and z (roll, pitch, and yaw), respectively. One of the parameters can be for a scale factor between the first 3D point set <NUM> and the second 3D point set <NUM>. An example of the matrix <NUM> produced by the condition point set error operation <NUM> is provided as <MAT> where x is translation in x, y is translation in y, where z is translation in z, ω is roll, ϕ is pitch, x is yaw, and s is scale.

The bundle adjustment operation <NUM> can receive the tie points <NUM>, tie point error <NUM>, first 3D point set <NUM>, second 3D point set <NUM>, and the error matrix <NUM> at input. The bundle adjustment operation <NUM> can produce a merged 3D point set <NUM> and a merged 3D point set error <NUM> as output. The bundle adjustment operation <NUM> can use a least squares estimator (LSE) for registration of the first 3D point set <NUM> and the second 3D point set <NUM>. The operation <NUM> is easily extendable to merging more than two 3D data sets even though the description regards only two 3D data sets at times. The bundle adjustment operation <NUM> can use one or more photogrammetric techniques. The bundle adjustment operation <NUM> can include outlier rejection. The bundle adjustment operation <NUM> can determine error model parameters for the 3D data sets. Application of the error model parameters to the first 3D point set <NUM> and the second 3D point set <NUM>, results in the relative alignment (registration) of the first 3D point set <NUM> and the second 3D point set <NUM>.

<FIG> illustrates an example diagram of an embodiment of the relationship between ground point coordinate estimates V̂j and the corresponding 3D data set observations Ṽij. In <FIG>, three misregistered 3D data sets <NUM>, <NUM>, and <NUM> and a reference frame <NUM> are illustrated. First image observations <NUM>, <NUM>, <NUM> and a first associated ground point <NUM> and second image observations <NUM>, <NUM>, <NUM>, and a second associated ground point <NUM> are illustrated. The ground point <NUM> can be determined using a least squares estimator. The least squares estimator can reduce (e.g., minimize) the discrepancy (across all observations and ground points) across all images. The least squares estimator can propagate an error in one or more of the 3D data sets to an error in a registered 3D data set.

This section establishes some preliminary notational conventions and symbol definitions used for developing the formulations for the bundle adjustment operation <NUM>. The bundle adjustment operation <NUM> can include identifying a ground point that reduces a discrepancy between the ground point and corresponding points in respective images, and then adjusting points in the 3D data sets in a manner that reduces the discrepancy. The term "3D data set" is sometimes referred to as an "image". For convenience, example sizes of vectors and matrices are indicated below the symbol. Thus, the symbol <MAT> denotes a matrix A with N rows and M columns. Column vectors from R<NUM> thus have the annotation <NUM> × <NUM>. Components of a vector V are written as <MAT>. If the vector includes diacritical marks or distinguishing embellishments, these are transferred to the components, as in V = [x y z]T and V' = [x' y' z']T.

Equation modeling of the relationship between points in one 3D space to corresponding points in another 3D space is now described. A common reference space is established across all of the images. The reference space can be constructed to accommodate a simultaneous adjustment of more than two images. Correspondences can be formed between points in the reference space and the measured conjugate point locations in each image. The observation equation can be represented as Equation <NUM>: <MAT>
where V̂ is a reference-space 3D coordinate, Ṽ is the observation of V̂ in an image and the orientation and offset relationship between reference space and image space is taken from the orientation matrix T and offset vector V using Equation <NUM>: <MAT>
where the symbols "c" and "s" denote trigonometric cosine and sine functions, respectively. The quantities <MAT> refer to rotation angles (roll, pitch and yaw) about an image's x, y, and z axes respectively. The scalar s represents an isometric scale correction factor (nominally zero). The above form is conducive to modeling a simultaneous least squares adjustment of all images' offsets and orientations, provided that estimates of reference space coordinates for all conjugate image observations vectors are available. This form is more suitable and flexible than explicitly holding a single image as a reference for at least one of several reasons: (<NUM>) there are reference space ground coordinates that permit the potential use of ground control points, whose a priori covariances are relatively small (e.g., they carry high weighting in the solution); (<NUM>) the above formulation is suitable for a simultaneous adjustment for data that includes small or minimal overlap (mosaics), as well as, many images collected over the same area (stares) or any combination in between; and (<NUM>) allowing all images to adjust simultaneously provides improved geolocation accuracy of the post-adjusted and merged images. parameters.

The symbol V̂ will be referred to as a ground point (akin to tie point ground locations and ground control point locations in a classical photogrammetric image adjustment). The symbol Ṽ will be referred to as a ground point observation (akin to image tie point observation locations in a classical photogrammetric image adjustment).

Unlike the classical photogrammetric treatment, V̂ and Ṽ are both "on the ground" in the sense that they both represent ground coordinates in 3D (in the classical imagery case, the observations are in image space and are thus 2D coordinates). Further, the point may very well not be "on the ground" but could be on a building rooftop, treetop canopy, etc. However, the terminology "ground point" and "ground point observation" will be used.

If j is taken to be the index of an arbitrary ground point and i to be the index of an arbitrary image, the observation equation (Equation <NUM>) can be written as Equation <NUM> <MAT>
where V̂j ≡ [x̂j ŷj ẑj]T as the jth ground point, Vi ≡ [xi yi zi]T as the offset vector between image i and the reference space origin, and where <MAT>
is the orientation matrix between image i and the reference space frame and where si is image i scale correction factor. Thus, Ṽij is the coordinate of the ith image's observation of ground point j.

If a particular ground point is found in two or more images, it can serve as a point which ties the images together (one of the tie points <NUM>). These are generically referred to as tie points. A single tie point is often referred to as a collection of image observations (with coordinates) of the same point on the ground along with the corresponding ground point (with coordinates).

Since the observations over many images i are the measurements containing error, the true ground point coordinates are generally unknown. To facilitate this, an initial estimate of the ground point location can be computed. The initial estimate is provided as Equation <NUM> as the average of the 3D observations <MAT>.

The ground points themselves are treated as derived (but unconstrained) observations and allowed to adjust in performance of the operation <NUM>. There can be an observation of interest whose true ground coordinates are well known. These are classically called ground control points (or GCPs). Since this development can accommodate both GCPs and tie points, the more general terms of "ground point" and "ground point observation" are sometimes used (as contrasted with "tie point ground coordinate" and "tie point observation").

The bundle adjustment operation <NUM> can operate on two or more images taken over a same area (with observations for tie points, sometimes called a stare scenario); two or more images taken in strips (forming a mosaic of data, with <NUM>-way, <NUM>-way, or m-way observations in strip overlap regions); tie points in which the corresponding ground points may appear in two or more images, incorporation of GCPs for features in imagery, providing an absolute registration; accommodation of a full covariance for tie point observations. This is conducive for tie point correlation techniques which are highly asymmetrical (e.g., as long as the asymmetry can be characterized as a measurement covariance).

The relationship between ground point coordinate estimates V̂j and the corresponding image observations Ṽij can be understood as a stare scenario between three misregistered images.

For the development of the LSE formulation (and associated preprocessing) that can be performed by the bundle adjustment operation <NUM>, more definitions are provided in Table <NUM>.

Ground point observations can be indexed by ground point j and image i (as in Ṽij) or by linear indexing, b (as in Ṽb). Use of the subscripting depends upon the context. In the former, it is of interest to characterize the fact that a particular ground point j appears on a particular image i. In the latter, it is of interest to enumerate all observations independent of to which image or to which ground point they refer.

Since some 3D point set data is presented in a "world" space coordinate system (e.g., Universal Transverse Mercator (UTM) map projection) and since the observation Equation <NUM> is image dependent, some coordinate frame definitions and transformations can aid understanding.

If it is assumed that ground point observation locations are specified in world coordinates, it is of interest to transform the ground point observation locations to be "image" relative. Further, it can be of interest to obtain the ground locations and image offsets themselves to be relative to a "local" reference coordinate frame.

A motivation for a local reference coordinate frame can be to remove large values from the coordinates. For example, UTM coordinates can typically be in the hundreds of thousands of meters. This makes interpretation of the coordinates more difficult, for example, when examining a report of updated coordinate locations. A motivation for an image-relative coordinate frame can be so that the interpretation of the orientation angles comprising the Ti matrices can be relative to the center of the data set. This is contrasted with the origin of rotation being far removed from the data set (e.g., coincident with the local reference frame origin in the mosaic scenario).

In both cases, the transformations between coordinate frames simply involve a 3D translation. The mnemonics W, R and I are used to denote the "world", "reference" and "image" coordinate frames, respectively. To facilitate the transformations, the following convention is established. A superscript on a vector denotes the coordinate frame to which it is referred. Thus <MAT> corresponds to the world space coordinates of a particular tie point observation, while <MAT> and <MAT> represent the same tie point observation but referred to the reference frame and image frame, respectively.

Following the above convention, the symbol can <MAT> represent "the location of the origin of frame A coordinatized in frame B". Thus, <MAT> can represent the location of the reference frame in the world coordinate system (e.g., UTM coordinates of the origin of the reference frame). The relationship between an arbitrary vector VR coordinatized in the reference frame and the same vector VW coordinatized in the world frame can be represented by Equation <NUM> <MAT>.

The reference frame can be established as an average of all of the world-space coordinates of tie points. This offset (denoted <MAT>) can be determined using Equation <NUM><MAT>.

For simplicity, it can be assumed that the reference frame origin, referred to by the world frame, can be computed by a process external to the bundle adjustment operation <NUM> (e.g., by the process that assembles the tie points <NUM> for use in the bundle adjustment operation <NUM>).

The image frame (e.g., a frame defined on a per-image basis) can be the world coordinates of the center of an image. Under the assumption that there are bounding coordinates in the image data (specifying the min and max extents of the data in world-frame X, Y and Z), the center of the data can thus be taken to be the respective averages of the min and max extents. Since this image frame refers to world space, the computed offset is denoted <MAT>. If bounding coordinates are not available, value for <MAT> is taken as the average of the tie point locations over the specific image i, as described in Equation <NUM> <MAT>.

The image frame offset in reference space coordinates is taken to be the initial value for V(<NUM>) on a per image basis. Thus, for each image i, an external process can compute reference frame coordinates according to Equation <NUM> <MAT>.

Since the tie point observation values can be input in world coordinates and since the observation equation domain assumes reference frame coordinates, some preprocessing of the input data can help make it consistent with that assumed by the observation equation (Equations <NUM> or <NUM>). The tie point observation coordinates can be converted from world space to reference space. This can be performed for each observation per Equation <NUM>.

Next, since the true ground point coordinates used in Equation <NUM> can be unknown, they can be estimated. The ground point coordinates can be assumed to be coordinatized in the reference frame. The initial estimated values for the ground coordinates of each tie point can be computed as an average of the ground point observations over all images in which it appears as described by Equation <NUM> <MAT>.

Since the true locations of the tie point ground coordinates can be treated as unknown, the a priori covariance can reflect this by treating the errors in the ground coordinates as numerically unconstrained (in units of meters squared) as described by Equation <NUM> <MAT>.

The tie point observation coordinates for use in the observation equation can be converted to image-relative coordinates using Equation <NUM>.

Next, a least squares formulation and solution are discussed. Since the observation equation, Equation <NUM> or <NUM>, is non-linear in the orientation angles that form Ti, the least squares problem becomes a non-linear least squares problem. Equation <NUM> can be linearized. Solving the linearized equation can be a multidimensional root finding problem (in which the root is the vector of solution parameters).

For simplification in notation of the linearization, consider a fixed image and a fixed ground point. Let the unknown error model parameters (offset, orientation, and scale correction) be represented by Equation <NUM>: <MAT>.

The observation equation for ground point observation Ṽ can be written as Equation <NUM> <MAT>
where T is the true image orientation matrix, V is the true image translation vector, V̂ is the true ground point coordinate and Ṽ is the corresponding ground point observation coordinate.

If one wishes to include the ground point coordinates V̂ as additional observations, the solution for X and V̂ can be cast as a root solving problem based on Equation <NUM> <MAT>
where <MAT>.

In vector form, the function, F, can be represented by Equation <NUM> <MAT>.

The function F can be approximated using a first-order Taylor series expansion of F about initial estimates X(<NUM>) and V̂(<NUM>) as in Equation <NUM> <MAT>
where X(<NUM>) is an initial approximation of X, V̂(<NUM>) is an initial approximation of V̂ , the Jacobians <MAT> and <MAT> are the partial derivatives of F evaluated at X(<NUM>) and V̂(<NUM>) respectively, Δ̇ = [Δx Δy Δz Δω Δϕ Δκ Δs]T is a vector of corrections to X, Δ̈ ≡ [Δx̂ Δŷ Δẑ] is a vector of corrections to V̂. The values for X(<NUM>) and V̂(<NUM>) are discussed in Table <NUM>.

The Jacobians can be written as Equations <NUM> and <NUM> <MAT> <MAT>.

Note that the dot symbols are merely notations, following the classical photogrammetric equivalent, and do not intrinsically indicate "rates," as is sometimes denoted in other classical physics contexts.

In matrix notation, Equation <NUM> can be written as <MAT>
or <MAT>.

Since the problem is nonlinear, the estimation of the parameter vector can be iterated (via a multi-dimensional extension of the Newton-Raphson method for root finding, or other technique). The solution can include relinearization at each iteration. The relinearization can be performed about the most recent estimate of the parameter vector. The linearized form of Equation <NUM> at iteration (p) can be represented as in Equation <NUM>. <MAT>
where X(p) is the pth iteration estimate of the parameter vector X, V̂(p) is the pth iteration estimate of V̂, <MAT> is the Jacobian of F with respect to X evaluated at X(p), <MAT> is the Jacobian of F with respect to V̂ evaluated at V̂(p), Δ̇ is a vector of corrections to X for the pth iteration, and Δ̇ is a vector of corrections to V̂ for the pth iteration.

With each iteration, the parameter and ground point vectors can be updated with the most recent correction as in Equations <NUM> and <NUM>. <MAT> <MAT>.

For the initial iteration, initial values for X(<NUM>) and V̂(<NUM>) can be estimated as discussed previously. The system represented by Equation <NUM> is now linear in Δ̇ and Δ̈. A linear solver can be used to solve for the parameters.

For a particular image i and a particular ground point j, Equation <NUM> can be written as Equation <NUM> <MAT>.

The discrepancy vector for the pth iteration is thus be represented as in Equation <NUM> <MAT>
and thus <MAT>.

To accommodate a simultaneous solution of all images and ground points, Equation <NUM> can be extended as <MAT>.

Equation <NUM> can be re-written as Equation <NUM> <MAT>
then the normal equation matrix can be represented as Equation <NUM> or Equation <NUM> <MAT> <MAT>.

It can be less efficient to form B as in Equation <NUM>, for one or more of the following reasons: (<NUM>) B is very sparse; (<NUM>) the quantities Ḃij and B̈ij are nonzero if and only if ground point j is observed on image i. For this reason, the classical development of the normal matrix BT B and right-hand side vector BT E uses summations over the appropriate indexing. These summations are provided in the normal matrix partitioning below.

The foregoing equations form a foundation for the present problem that is sufficient for development of the normal equations, examination of the normal matrix structure and formulation of the normal equation solution.

The normal equation can be written as in Equation <NUM> <MAT>.

The matrices can be partitioned as in Equations <NUM>-<NUM> <MAT> <MAT> <MAT>.

The quantities K̇,K̈, Ċ and C̈ are described in more details elsewhere herein.

Combining Equations <NUM>, <NUM> and <NUM> yields Equation <NUM> <MAT>.

The matrix Z can thus be represented as Equation <NUM> <MAT>.

The matrix N can be written as Equation <NUM> <MAT>
and analogously W can be written as Equation <NUM> <MAT>.

The block entries of Ṅi can be defined as in Equation <NUM> <MAT>.

The subscripts ij on the Ḃij matrices indicate that they are a function of image i and ground point j.

The matrix N̈ can be expanded as in Equation <NUM> <MAT>.

Ẅ can be expanded as in Equation <NUM>: <MAT>.

The block entries of Equation <NUM> can be defined as in Equation <NUM> <MAT>.

The matrix N from Equation <NUM> can be expanded as in Equation <NUM> <MAT>.

The block entries of N from Equation <NUM> can be defined as in Equation <NUM> <MAT>.

In a similar development the right hand side matrix H from Equation <NUM> can be expanded as in Equation <NUM> <MAT>.

The subblocks of N can be defined as in Equations <NUM> and <NUM> <MAT> <MAT>
with the discrepancy vector εij defined as in Equation <NUM> and with
<MAT>
<MAT>.

The values for Ċ(<NUM>) and C̈(<NUM>) are the initial parameter values. The initial values for the translation parameters portion of Ċ(<NUM>) can be taken to be the <MAT> as computed in Equation <NUM>. The initial values for the rotation parameters portion of Ċ(<NUM>) can be taken to be zero.

The initial values of C̈(<NUM>) can be taken to be the values of the ground point coordinates <MAT> as computed in accord with Equation <NUM>.

The solution to the normal equation matrix on iteration (p) can be determined as in Equation <NUM> <MAT>.

At each iteration, the parameters can be updated via Equations <NUM> and Equation <NUM> and the normal matrix can be formed and solved again. The process can continue until the solution converges. Examples of the convergence criterion can be discussed in the following section.

Since the solution is iterated, a convergence criterion can be established. An example of a convergence criterion is to compute the root-mean-square (RMS) of the residuals as in Equation <NUM> <MAT>.

The value in the denominator of Equation <NUM> represents the number of degrees of freedom (e.g., the number of observation equations minus the number of estimated parameters).

Since typically q » <NUM> Equation <NUM> can be estimated as in Equation <NUM> <MAT>.

The condition q » <NUM> can be guaranteed with sufficient redundancy of ground point observations as compared with the number of images (e.g., enough tie points are measured between the images so that the aforementioned condition is satisfied).

Convergence happens when the residuals settle to the same values on consecutive iterations. The convergence criterion can be <MAT>
where δ is a prescribed tolerance.

A rigorous formulation for the standard error of unit weight (to be used in error propagation discussed elsewhere) is provided in Equation <NUM> <MAT>
where ndof is the number of degrees of freedom-the number of observation equations minus the number of error model solution parameters: <MAT>.

Since blundered points can be effectively removed from the solution via deweighting, the number of observations remaining effectively doesn't include the blunders. To be strictly correct, the value for q in Equation <NUM> can be the number of non-blundered observations.

The full form of the matrix Equation <NUM> can be reduced under the assumption that the errors in the ground point locations are uncorrelated. Under this assumption, the error covariance matrix of the ground point locations Σ̈ becomes a block-diagonal matrix of <NUM> × 3matrix blocks. Since it is a sparse matrix, its inverse is easily computed by inverting the <NUM> × <NUM> diagonal blocks. The development in this section reformulates the normal equations taking advantage of this. The result is a reduced normal equation matrix in which the size of the normal matrix is <NUM> × <NUM> instead of (<NUM> + <NUM>n) × (<NUM> + 3n). This gives the obvious advantage that the size of the normal matrix is much smaller and remains invariant with the number of ground points.

The reduced system formation is sometimes referred to as a "ground point folding," since the ground point portion of the reduced normal matrix is incorporated into the image portion. The development of the reduced normal equation begins with the original normal equation from Equation <NUM> and repeated as Equation <NUM> <MAT>.

To facilitate ground point folding into a reduced normal equation matrix, Equation <NUM> can be re-written as Equation <NUM> <MAT>
where <MAT> <MAT> <MAT> <MAT> <MAT>.

Suppose a matrix system ZΔ = H is partitioned into blocks of the appropriate sizes as <MAT>
where the matrices A and D are both square.

Further, assume that matrix D is non-singular and can be represented as a sparse block diagonal matrix. Then <MAT>.

Applying Equation <NUM> to Equation <NUM> provides the reduced normal matrix equation <MAT>.

The reduced normal equation matrix can be written as in Equation <NUM> <MAT>
where M ≡ [Ż - ZZ̈-<NUM>ZT] and C = [Ḣ - ZZ̈-<NUM>Ḧ].

Next it is of interest to examine the form of the components of the reduced system for an efficient implementation. Let Ẑ ≡ ZZ̈-<NUM>ZT. Then <MAT>.

The blocks of Ẑ in Equation <NUM> can be the equivalent Nij as defined in equation <NUM>.

The assumption that errors in the a priori ground points are uncorrelated yields Equation <NUM> <MAT>
where <MAT> is the inverse of the a priori covariance matrix for ground point j. Thus <MAT>.

The general row and column term for Ẑ can then be given by <MAT>
and, by the definition of Zij, Ẑr,c is zero if and only if images r and c have no ground points in common. Also note that Ẑ is block symmetric. Thus, in its formation, only the upper block triangle need be formed, followed by reflection of the upper right triangle to the lower left triangle for completion of the matrix formation.

The matrix M can thus be written as in Equation <NUM> <MAT>.

The reduced matrix M can be formed by first storing the diagonal entries of Z and then subtracting the summed entries of the subtrahend in Equation <NUM> (namely the Ẑr,c defined in Equation <NUM>).

Since the subblocks of the subtrahend are merely summations over the ground point indexes, j, the matrix, M, can be built by iterating over the ground points (assuming the minuend of Equation <NUM> on-diagonals were formed in advance) and subtracting out the contributions for a particular ground point in the appropriate place within M.

The constant column vector C can be formed similarly with some of the same matrices: <MAT>.

After the matrices M and C are built, the solution vector for the adjustable parameters from the reduced system can be computed as <MAT>.

The solution vector can be decomposed into per-image-adjustable vectors Δ̇i for each image i as in Equation <NUM>: <MAT>.

After the solution vector Δ̇ for the image-adjustable parameters is obtained, the solution vector Δ̈ for corrections to the ground point positions can be extracted (or "unfolded") from the reduced system. To formulate the extraction, Equation <NUM> can be used to obtain Equation <NUM> <MAT>.

If <MAT>
represents the correction vector for the ground points then <MAT>
where Δ̇i is the adjustable parameter correction vector for image i. Thus <MAT>
where Ij is as defined as the index set of images upon which ground point j is an observation.

This section provides formulations for extraction of a posteriori error covariances for ground points. If a priori sensor model error estimates are available (and reliable), the errors may be propagated to the space of the registration error models. In this case, the error propagation is a rigorous predicted error for the accuracy of the a posteriori ground point locations.

The a posteriori error covariances of the image parameters are the appropriate subblocks of the inverse of the reduced normal matrix M-<NUM> from Equation <NUM> (after application of the variance of unit weight, as described at the end of this section). For the full normal matrix solution, the a posteriori error covariance can be the inverse of the normal matrix, Z-<NUM>, times the variance of unit weight. For the reduced system, however, the a posteriori error covariances of the ground points can be extracted from M-<NUM> by unfolding. To facilitate this, the full normal matrix can be written as <MAT>.

Denote the inverse matrix blocks as <MAT>.

Note that, Σ̇ and Σ̈ as defined are distinctly different from those defined in previous sections. (The symbols in the present section are a posteriori covariances and those in previous sections are a priori covariances). However, this subtle distinction is not problematic if the appropriate context is adhered.

The a posteriori covariance between ground points r and c can be represented as block element <MAT> of Σ̈. With n as the number of ground points and m as the number of images, <MAT>.

The rth row of Σ̈ involves only <MAT> of the firstZ̈-<NUM> matrix in term two of Equation <NUM>. Similarly, the cth column of Σ̈ involves only <MAT> of the second Z̈-<NUM> matrix in term two. Thus <MAT>
where the delta function can be <MAT>.

Now the form of the (r, c) block of ZT Σ̇Z is derived.

The rth row of G involves only the rth row of ZT and the cth column of G involves only the cth column of Z. Thus <MAT>.

Now Zij = <NUM> if ground point j is not an observation on image i.

Thus <MAT>
where Ij is the index set of images upon which ground point j is an observation. Substituting Equation <NUM> into Equation <NUM> yields <MAT>.

The a posteriori covariance is usually defined by scaling the inverse of the normal matrix by an estimate of the variance of unit weight. An estimate of the variance of unit weight is denoted as [σ(p)]<NUM> and is provided in Equation57. Thus, the above formulation can be used, but instead defining <MAT>.

For a full normal matrix solution, Z-<NUM> is readily available, thus the a posteriori covariance of the error model parameters and ground points can be the right hand side of Equation <NUM>.

The right hand summand of Equation <NUM> includes the factor [σ(p)]<NUM> since it includes Σ̇st. However, the left hand summand does not include the factor. This can be compensated for by a modified form of Equation <NUM> <MAT>.

If the standard error of unit weight σ(p) is deemed to be unreliable (e.g., is much greater than unity) this may be an indicator of improper (or incorrect) a priori error covariance in the process. One can still, however, be able to provide a reliable error estimate from the least squares process by simply forcing the standard error to one (e.g., by setting σ(p) ← <NUM> in Equations <NUM> and <NUM>.

<FIG> illustrates an example of an embodiment of the operation <NUM>. The operation <NUM> can include 3D data set registration with error propagation. The operation <NUM>, as illustrated, includes initializing solution and corrections, at operation <NUM>; computing discrepancies, at operation <NUM>; computing a normal equation solution, at operation <NUM>; updating parameters based on the computed normal equation solution, at operation <NUM>; computing residuals, at operation <NUM>; extracting propagated error, at operation <NUM>; and compensating misregistration of the first 3D point set <NUM> and the second 3D point set <NUM>, at operation <NUM>.

The operation <NUM> can include setting the solution vector X and the correction vector ΔX to the zero vector<NUM>: <MAT> <MAT> <NUM> The solution vector X is set to the fixed-point location for the linearization. If an a priori estimate is available, it is used here in place of the zero vector.

The operation <NUM> can include computing the discrepancy vector for each observation as provided in Equation <NUM>. The operation <NUM> can include building the normal equations matrices and solving for the correction vector as provided in Equation <NUM>. The operation <NUM> can include updating the parameter vector for the current iteration as provided in Equations <NUM> and <NUM>. Details of the operation <NUM> for unfolding of the ground points for the folded normal equation solution is provided via pseudocode below.

The operation <NUM> can include computing the residuals (final discrepancies) as provided in Equation <NUM>. The operation <NUM> can include computing a standard error of unit weight via Equation <NUM>. Note that the standard error can the square root of the left hand side of the Equation <NUM> (e.g., <MAT>).

If the delta between the current and previous standard error of unit weight is less than the convergence criterion in absolute value, the solution nominally converged. To accommodate blunder rejection, the convergence criterion check can be augmented with a check to see if the blunder weights should be used in continuation of the solution ("useBW", indicating to use "blunder-checking weighting"). If convergence occurs and useBW is true, this is an indicator to perform blunder checking, and this time using a normalized residual computation in order to check for blunders on the next iteration.

If useBW is true, blunders can be computed. If there are blunders remaining, the blunder "cycle" number is incremented and the process is repeated with the correction vector reset to a priori values (e.g., go to operation <NUM>). If there are no blunders remaining, a check can be performed to see if the number of post convergence blunder cycles can be set to zero. This check can be performed to effectively force one more solution after all blunders have been eliminated.

If useBW is false and it is currently a first iteration of a blundering solution, useBW can be set to true. This has the effect of forcing the normalized residual blunder iteration for determining the blunders on subsequent iterations. In this case, a solution has converged but normalized blunder residuals have not been computed. Setting useBW to true can forces this to happen on the next solution iteration. The solution can be iterated by going to the operation <NUM>. If there are no more blunders and the number of blunders is not zero, this indicates the "non-blunder iteration" solution has converged.

The operation <NUM> can include providing a report that includes an iteration number, current correction vector ΔX, current iteration estimates of parameters and ground points (e.g., as computed in equations <NUM> and <NUM>), standard error of unit weight (e.g., as provided in Equation <NUM>). The operation <NUM> can include a check for non-convergence by examining the current iteration number with a maximum number of iterations, M. If the number of iterations exceeds the maximum, stop the iteration process. The solution did not converge. An exception can be raised and the operation <NUM> can be complete.

The following is a pseudocode outline for the operation <NUM> for computing the full normal equations solution. This first pseudocode does not include ground point folding.

The names in {braces} allude to method (e.g., function) names in a software implementation. Also, within the development below, ground point indexes, ground point observation indexes and image indexes are assumed to be zero-relative. For efficiency in the implementation, the following elements can be cached in a per-image workspace object, which is updated with each iteration:.

The pseudocode begins by setting the non-linear least squares iteration index (p) to zero. <IMG>
<IMG>
<IMG>
<IMG>.

What follows is pseudocode for the operation <NUM> for building the reduced normal equations system, computing corrections to ground point positions and performing error propagation via extraction of data from the reduced normal matrix. This portion of the pseudocode includes ground point coordinate folding.

As in the full normal solution provided in the previous pseudocode, the same per-image elements are cached in a workspace object and updated with each iteration. The algorithm for the reduced solution can be broken into two major portions: priming and folding. Priming involves storing of weights and the contributions along the diagonal of the full normal equation matrix (and corresponding data for the right hand column vector H). This corresponds to the Z portion of Z. Thus, priming involved formation of the minuends of Equation <NUM> and Equation <NUM>. Folding can include incorporation of the subtrahends of the aforementioned Equations.

To provide an efficient implementation, a ground point workspace can be created. The workspace can include the following elements: <MAT>. These things are indexed by ground point for the ground point workspace. The technique can begin by setting the non-linear least squares iteration index (p) to zero. <IMG>
<IMG>
<IMG>
<IMG>.

After the solution vector Δ̇ is obtained, unfolding the ground point corrections is a matter of employing Equation <NUM>, replicated here for reference:
<IMG>
<IMG>.

The general cross error covariance between ground point indexes r and c can obtained by evaluation of Equation <NUM>.

The full 3n × 3n ground error covariance matrix <MAT> may be obtained by invoking the method for r ∈ {<NUM>,<NUM>, ···, n) and for c ∈ {r, r + <NUM>, ···, n}. Note that the indexing for c starts with r since the full ground covariance matrix is symmetric (i.e., build the upper triangle of <MAT> and "reflect about the diagonal" to obtain the lower symmetric portion).

What follows regards how to perform operation <NUM>. The operation <NUM> proceeds given the outputs of the LSE techniques discussed. The compensation applies the inverse of the observation equation, accommodating the various relative frame offsets to arrive at compensated world space coordinates from misregistered world space coordinates
<MAT>.

The motivation for providing the inputs and outputs in world space coordinates can be that is the native space of the inputs and desired space of the outputs for each element of each image's point cloud.

For an arbitrary misregistered vector <MAT> on image i, the compensation formula can be performed as in Equation <NUM> <MAT>
where Ti is constructed from the solution vector <MAT> and the other symbols in Equation <NUM> are defined elsewhere. Note that the values for <MAT> and <MAT> and <MAT> can be precomputed on a per image basis when applying Equation <NUM> for a time-efficient implementation.

<FIG> illustrates, by way of example, a block diagram of an embodiment of a machine in the example form of a computer system <NUM> within which instructions, for causing the machine to perform any one or more of the methods discussed herein, may be executed. In a networked deployment, the machine may operate in the capacity of a server or a client machine in server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term "machine" shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.

The example computer system <NUM> includes a processor <NUM> (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory <NUM> and a static memory <NUM>, which communicate with each other via a bus <NUM>. The computer system <NUM> may further include a video display unit <NUM> (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system <NUM> also includes an alphanumeric input device <NUM> (e.g., a keyboard), a user interface (UI) navigation device <NUM> (e.g., a mouse), a mass storage unit <NUM>, a signal generation device <NUM> (e.g., a speaker), a network interface device <NUM>, and a radio <NUM> such as Bluetooth, WWAN, WLAN, and NFC, permitting the application of security controls on such protocols.

The mass storage unit <NUM> includes a machine-readable medium <NUM> on which is stored one or more sets of instructions and data structures (e.g., software) <NUM> embodying or utilized by any one or more of the methodologies or functions described herein. The instructions <NUM> may also reside, completely or at least partially, within the main memory <NUM> and/or within the processor <NUM> during execution thereof by the computer system <NUM>, the main memory <NUM> and the processor <NUM> also constituting machine-readable media.

While the machine-readable medium <NUM> is shown in an example embodiment to be a single medium, the term "machine-readable medium" may include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more instructions or data structures. The term "machine-readable medium" shall also be taken to include any tangible medium that is capable of storing, encoding or carrying instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present invention, or that is capable of storing, encoding or carrying data structures utilized by or associated with such instructions. The term "machine-readable medium" shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media. Specific examples of machine-readable media include nonvolatile memory, including by way of example semiconductor memory devices, e.g., Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.

The instructions <NUM> may further be transmitted or received over a communications network <NUM> using a transmission medium. The instructions <NUM> may be transmitted using the network interface device <NUM> and any one of a number of well-known transfer protocols (e.g., HTTP). Examples of communication networks include a local area network ("LAN"), a wide area network ("WAN"), the Internet, mobile telephone networks, Plain Old Telephone (POTS) networks, and wireless data networks (e.g., WiFi and WiMax networks). The term "transmission medium" shall be taken to include any intangible medium that is capable of storing, encoding or carrying instructions for execution by the machine, and includes digital or analog communications signals or other intangible media to facilitate communication of such software.

Claim 1:
A computer-implemented method for registering a first three-dimensional (3D) image (<NUM>) to a second 3D image (<NUM>) with error propagation, the method comprising:
reducing a sum aggregate of discrepancies between respective tie points (<NUM>) and associated 3D points in the first and the second 3D images (<NUM>, <NUM>), wherein reducing the sum aggregate of discrepancies includes incorporating ground points associated with the tie points into a representation of the first and second 3D images;
adjusting 3D error models (<NUM>) of the first and second 3D images (<NUM>, <NUM>) based on the reduced sum aggregate of discrepancies to generate registered 3D images (<NUM>); and
propagating an error (<NUM>) of the first or second 3D images to the registered 3D image (<NUM>) to generate error of the registered 3D images (<NUM>).