**Input:** A set of profile maps ,
,
acquired from different viewpoints. Initial estimates for the unknown parameters.

**Output:** Refined estimates for ,
or ,
or
and .

Iterate until convergence,

- 1.
__Transform__the maps , , onto all the other maps for which*l*>*k*using the current estimates of the unknown parameters.- 2.
- For each pair of overlapping maps
and ,
*k*<*l*, construct an__interpolated image__on*S*_{k}from the pixel values of at the intermediate locations hit by the transformed map . For each pixel of , the__corresponding pixel__on is chosen to be . - 3.
- Find compatible matches and compute the
__weighting images__on*S*_{k}. These include- an adaptive weighting based on the statistical distribution of the difference in the direction of the
__surface normal__at the corresponding points; , where is a characteristic function, is an image of the angles between the surface normals, and is a threshold set for at the*r*th iteration. Denote the weighted sample mean and deviation of the values of at the*r*th iteration by and , respectively. The threshold is then updated to

where are constants that are chosen according to an expected accuracy of the surface normal compatibility. - an adaptive weighting based on the statistical distribution of the
__distance__between the corresponding points; [Zhang, 1994]. - a weighting according to a decay function (or zero weights) at locations near
__edges__;

where stands for the binary minimum operation, and are Laplacian images, and . - a weighting image taking into account the
__precision__of the distance between the corresponding points; , where the variance is estimated using the rules of first order error propagation and the scale is selected according to the noise level of the data so that the weights are around one.

- an adaptive weighting based on the statistical distribution of the difference in the direction of the
- 4.
__Update__simultaneously all the parameters by taking one step according to the Levenberg-Marquardt algorithm towards the minimum of the mean of the squares of weighted distances between the corresponding points given by

where the distance image , , and is a unit image on*S*_{k}having ones at all locations.

Remarks:

- For high accuracy, the
__interpolation errors__should be as equal as possible within the overlapping areas. Edge areas are removed or weighted according to a decay function. A bicubic interpolation is used in smooth areas and a bilinear one elsewhere. - Other distance images include
,
where
,
the square of a multi valued image is a unary homogeneous operation, and the function
*h*sums up the components of a multi valued image, e.g., . The corresponding point for on*S*_{k}is chosen to be the one on*S*_{l}which is closest as measured by the Euclidean distance between and . For each , the pixel value of equals the one of which has been defined as the corresponding point by the closest point operation. This distance image is used in the standard__iterative closest point__(ICP) algorithm [Besl and McKay, 1992]. - In
__sequential__registration, the merit function to be minimized is given by

where . The unknown parameters can be updated using a closed form solution based on the__unit quaternions__.