Patent Publication Number: US-10769801-B2

Title: Fast multi-spectral image registration by modeling platform motion

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of U.S. patent application Ser. No. 15/482,212 filed Apr. 7, 2017 entitled “FAST MULTI-SPECTRAL IMAGE REGISTRATION BY MODELING PLATFORM MOTION”, which claims the benefit of U.S. Provisional Patent Application No. 62/321,008 filed Apr. 11, 2016, the contents of which are hereby incorporated by reference in their entirety. 
    
    
     STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT 
     This invention was made with government support under a Contract awarded by an agency. The government has certain rights in the invention. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present disclosure relates to imagery, and more particularly to registration of multiple images such as used in multi-modality and multi-spectral imagery. 
     2. Description of Related Art 
     Registration between the different bands of multi-spectral imagery, e.g., acquired by an airborne or space sensor, is particularly challenging as the bands that are spectrally far apart do not correlate very well across the image. For example, bands deep in the IR region have both a reflective and an emissive component whereas the bands in the visual region are purely reflective. 
     Simple phase correlation to obtain the warp is not very effective in these instances. Similarly, registering images acquired using different modalities such as LiDAR, narrow band spectral, and broad band visual photographic imagery present the same issues. 
     Conventional methods and systems have generally been considered satisfactory for their intended purpose. However, there is still a need in the art for improved image registration for multi-modal and multi-spectral images. The present disclosure provides a solution for this need. 
     SUMMARY OF THE INVENTION 
     A method of predicting warps for image registration includes receiving warp data for a first band pair in an N-band system. The method includes fitting a warp model to the warp data to produce an offset profile for the first band pair, predicting a respective offset profile for at least one other band pair in the N-band system, and using the predicted respective offset profile to generate a warp for the at least one other band pair. The method also includes registering images of the at least one other band pair using the warp for the at least one other band pair. 
     Fitting a warp model to the warp data can include producing a slope profile for the first band pair, wherein the method includes predicting a respective slope profile for the at least one other band pair in the N-band system, and wherein using the predicted offset profile to generate a warp includes using both the predicted offset and slope profiles to generate the warp. 
     Predicting a respective offset profile can include shifting and scaling the offset profile for the first band pair. Predicting a respective offset profile can include estimating stick spacing for the N-bands of a focal plane array (FPA). Shifting and scaling values of the offset profile for the first band pair can be derived from the stick spacing of the bands in the first band pair and the bands in the at least one other band pair. The shifting and scaling values for predicting the at least one other band pair, d and e, from the first band pair, f and g, can be given as 
                 Δ   ⁢           ⁢     y     de   ⁡     (   fg   )           =         y   d     +     y   e     -     y   f     -     y   g       2       ,     
     ⁢       r     de   ⁡     (   fg   )         =         y   e     -     y   d           y   g     -     y   f           ,         
respectively, where {y d , y e , y f , y g } denote spatial locations of bands {d, e, f, g} respectively along a y direction in a focal plane array. Predicting a respective offset profile for the at least one other band pair, d and e, can include shifting and scaling the offset profile for the first band pair, f and g.
 
 ĉ   de(fg) ( y )= ĉ   fg ( y−Δy   de(fg) ) r   de(fg) ,
 
where ĉ fg (⋅) denotes offset profile estimated for first band pair f and g. Using the predicted respective offset profile to generate a warp for the at least one other band pair includes using a respective optical distortion profile for each respective band pair.
 
     A method of predicting warps for image registration includes receiving warp data for m band pairs in an N-band system, wherein m≤(N−1) and m&gt;1, fitting respective warp models to the warp data for each respective one of the m band pairs to produce respective offset profiles for the m band pairs, predicting m respective offset profiles for at least one band pair in the N-band system, combining all the m predicted offset profiles into a single optimal offset profile for the at least one band pair of the N-band system, using the optimal offset profile to generate a warp for the at least one band pair, and registering images of the at least one band pair using the warp for the at least one band pair. 
     Using the predicted respective offset profile to generate a warp for the at least one other band pair can include using a respective optical distortion profile for the at least one other band pair. Predicting a respective offset profile can include estimating stick spacing for the N-bands of a focal plane array (FPA). The m offset profiles predicted for the at least one band pair of the N-band system can include an estimation of uncertainty of each prediction. Combining the m predictions into an optimal offset profile can take into account the uncertainty of each prediction. The optimal offset profile predicted can be obtained as a weighted sum of individual m predictions, wherein weights are inversely proportional to respective uncertainty and normalized to sum to one. 
     These and other features of the systems and methods of the subject disclosure will become more readily apparent to those skilled in the art from the following detailed description of the preferred embodiments taken in conjunction with the drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       So that those skilled in the art to which the subject disclosure appertains will readily understand how to make and use the devices and methods of the subject disclosure without undue experimentation, preferred embodiments thereof will be described in detail herein below with reference to certain figures, wherein: 
         FIG. 1  is a schematic view of an exemplary embodiment of a focal plane array (FPA) constructed in accordance with the present disclosure, showing stick spacing for three different sticks or bands of the FPA; 
         FIGS. 2A-2D  are a set of graphs showing spline basis functions in accordance with an exemplary embodiment of the present disclosure; 
         FIG. 3  is a data flow diagram of an exemplary embodiment of a method for generating calibration parameters in accordance with the present disclosure; 
         FIG. 4  is a data flow diagram of an exemplary embodiment of a method of predicting warp for all band pairings using image correlation data from a single band pair in accordance with the present disclosure; 
         FIG. 5  is a data flow diagram of an exemplary embodiment of a method of generating warp, e.g., optimal warp, using image correlation data from all band pairs in accordance with the present disclosure; and 
         FIG. 6  is a data flow diagram of an exemplary embodiment of a method of generating registered bands to a reference image from pairwise warps generated by the exemplary embodiments of  FIG. 4 or 5 . 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Reference will now be made to the drawings wherein like reference numerals identify similar structural features or aspects of the subject disclosure. For purposes of explanation and illustration, and not limitation, a partial view of an exemplary embodiment of a focal plane array (FPA) in accordance with the disclosure is shown in  FIG. 1  and is designated generally by reference character  100 . Other embodiments of systems and methods in accordance with the disclosure, or aspects thereof, are provided in  FIGS. 2A-6 , as will be described. The systems and methods described herein can be used for multi-modal/multi-spectral image registration. 
     1 Introduction 
     Push broom scanner systems acquire imagery by scanning the target area using platform motion. The focal plane array (FPA) used to acquire the imagery comprises a series of linear sensor arrays (sticks), one for each spectral band, which are aligned with each other along the length of the array but displaced from each other in the orthogonal direction.  FIG. 1  shows an example arrangement of the sticks for a 3 band system. The spacing of the sticks in the y direction may be non-uniform and the alignment in the x direction need not be perfect. The push broom system generally positions the FPA for imaging such that the x direction is more or less perpendicular to the direction of motion of the platform and y aligns with the motion direction. The 2-d imagery of the target area is then acquired by reading out the full length of the sensor sticks at regular time intervals (line time) as the platform moves forward in time. The image for each band is put together 1 line at a time until the scanning stops. 
     Since the sensor sticks are physically displaced from each other along the y direction, the images for each band are also displaced from each other along the y direction. To fully exploit this multi-spectral data, the images from each of the bands needs to be registered to each other to enable the measurement of the different spectral bands at the same physical location of the target. If the motion of the platform was held constant during the acquisition time, it would be a simple matter of finding a fixed displacement between the band images. In practice however, the platform motion cannot be controlled precisely and both the speed and direction of motion as well as the orientation of the FPA is in a constant state of flux. This variability in motion is more severe for airborne platforms and less variable for spaceborne platforms. 
     The variable motion introduces a time-varying displacement both in the x and y directions between the different bands and is referred to as a warp between the images. This warp can be estimated by image processing techniques known to people skilled in the art. One method of estimating the warp involves laying down a regular grid of tie-points (spacing determined by the expected variability of the motion) in the reference image and then finding the corresponding tie-point in the other image by correlating the image content in the neighborhood of the tie-point. Such a process is computationally very intensive and can take a significant amount of processing time for large images and highly variable motion, which requires a fine grid spacing for the tie-points. For a N band multi-spectral system, usually one of the bands is deemed as reference and all the other bands are registered to this reference band. This requires N−1 band pairings that need to be correlated increasing the computational burden by a factor of N−1. 
     Alternatively, the warp may be obtained by employing a model for the imaging system (sensor model) and using it in conjunction with the motion and orientation data of the platform and a measurement of the terrain. However, this method is also very computationally intensive as the models involved are highly non-linear and do not have closed form solutions requiring iterative optimization. The accuracy of estimating the warp in this manner also suffers from not accounting for the height of the man-made objects on top of the terrain and the inherent noise in the measurement of the motion, orientation, and terrain data. In practice, the accuracy of the warp obtained solely from a sensor model is not good enough and people have to revert to image correlation methods as a final step to obtain the desired accuracy. 
     Another shortcoming of the conventional image correlation methods is that all available information is not leveraged to reduce the noise in the estimated warp. Image correlation treats each pair of bands in isolation when in reality they are all linked together by a common platform motion. In a N band system, there are N(N−1)/2 pairs of bands that can be made and the warp data from all of these band pairings can be optimally combined to obtain a superior warp. 
     The idea we want to leverage is that the warp between any two bands gives us information about the relative motion of the platform at the time instances the two bands are acquired. We can use the warp data from one or more of the band pairings to populate a model of the platform motion. The relative warp between any other band pairing can then be obtained from the platform motion model. The method can be employed to trade-off computational speed and accuracy of the registration in varying degrees depending on the application requirements. So if computational speed is a concern, we could perform correlation on a single band pair and use it to infer the platform motion. The warps between all the other bands can then be synthesized from the inferred platform motion. If registration accuracy is paramount, then warp data of up to N(N−1)/2 pairs of bands obtained via image correlation may be used to fit the platform motion. The subsequent warp derived from the fitted platform motion is optimal and leverages all available information. In this manner, speed and accuracy can be traded to varying degrees by choosing anywhere between 1 and N(N−1)/2 band pairings to compute the raw warp data. 
     The motion of the platform occurs in a 6 dimensional space, 3 degrees of freedom for position and 3 degrees of freedom for orientation. However, not all of these degrees of freedom can be estimated from the image that is constrained to be on the 2-d surface of the terrain. Furthermore, image correlation between the bands only gives us information about the relative motion between the bands and no information about the absolute positioning of the platform or its orientation. The original motion space is therefore over parameterized for our purposes. The proposed solution has two components: first, a compact representation of the motion that most efficiently encodes the warp between any band pairing, and second, a transformation in this compact parameter space that allows us to compute the warp between any band pairing given the parameters of the some other band pairing. The compact representation of the motion for modeling the warp has another advantage in that it allows us to reduce the noise in the warp estimated by image correlation by utilizing a priori information of the projection geometry. 
     For the first component of the solution, we propose a separable spline warp model that encodes the relative motion between any band pairing compactly in a 4-d space, which represents a reduction of 2 degrees of freedom from the original motion representation. This is covered in Section 2. Section 3 then covers the parameter transformation of the spline warp model that allows us to predict the warp for any band pairing given the warp parameters for a particular band pairing. 
     2 Separable Spline Warp Model 
     In this Section, we formulate a model for the warp between a pair of bands. One of the bands will be designated as the reference band and the other band will be designated as the warped band. In the interest of simplifying notation, we omit the particular band numbers for which the warp is being computed as the treatment remains the same for any band pairing. 
     Let {x w , y w } denote the coordinates in the warped band that correspond to the coordinates {x, y} in the reference band. Let
 
 d   x ( x,y )= x   w ( x,y )− x   (1)
 
 d   y ( x,y )= y   w ( x,y )− y   (2)
 
denote the space varying displacement (warp) between the warped and the reference band. We assume the images of the reference and warped bands are acquired by two sensor sticks displaced from each other spatially in the y direction. The sensor sticks are mounted on a moving platform and the images are obtained by scanning the sticks in time as the platform moves. The platform motion may not be perfectly uniform in time and this causes a time-dependent warping between the bands. Given the rigid geometry in the x direction (fast-scan), we expect the warping to be linear in this direction unless there is uncorrected optical distortion. The linear warping in x will be time dependent but the optical distortion will be constant in time.
 
     Let s x (⋅) and c x (⋅) denote the slope and offset as a function of time for the linear mapping of the warp in the x component. Similarly, let s y (⋅) and c y (⋅) denote the slope and offset for the y component of the warp in time. Let o x (⋅) and o y (⋅) denote the relative optical distortion between the warped and the reference band along the sensor array for the x and y component respectively. We model the space varying translation between the bands as follows
 
 d   x ( x,y )= s   x ( y ) x+c   x ( y )+ o   x ( x )
 
 d   y ( x,y )= s   y ( y ) x+c   y ( y )+ o   y ( x ).  (3)
 
Note that this is nothing but a Taylor series expansion of the warp d(x, y) along the x direction with the zeroth and first order coefficients as functions of y (time) and the higher order coefficients constant in time.
 
     In the subsequent treatment, we will use v={x, y} as an index for x or y. Since the equations are similar for the translations in x and Y, this makes for compact notation. Assuming the platform motion is more or less steady, the slope and offset, s v (⋅) and c v (⋅), will be smooth functions of time, y. We choose to model them as B-splines and they can written as a summation of a set of basis functions as 
                         s   v     ⁡     (   y   )       =       ∑     j   =   1       n   s       ⁢       s   vj     ⁢       B     j   ,   k     s     ⁡     (   y   )             ,           (   4   )                     c   v     ⁡     (   y   )       =       ∑     j   =   1       n   c       ⁢       c   vj     ⁢       B     j   ,   k     c     ⁡     (   y   )             ,           (   5   )               
where n s  and n c  are the number of basis functions that are chosen for the slope and offset functions respectively. The number of knots and the spline order k determines the number of basis functions. See Sec. 2.1 for generating the set of basis functions B j,k (⋅), j=1, . . . , n given the order and knot locations.
 
     The optical distortion can either be modeled as a B-spline or a polynomial 
                         o   v     ⁡     (   x   )       =         ∑     j   =   1       n   o       ⁢       o   vj     ⁢       B     j   ,   k     o     ⁡     (   x   )       ⁢           ⁢   or   ⁢           ⁢       o   v     ⁡     (   x   )           =       ∑     j   =   1       n   o       ⁢       o   vj     ⁢     x     e   j               ,           (   6   )               
where n o  denotes the number of basis functions and e j , j=1, . . . , n o , denotes the n o  exponents chosen for the polynomial basis. In the subsequent treatment, we will use B j,k   o (⋅) to denote either for the spline basis or the polynomial basis.
 
2.1 Recursive Generation of B-Spline Basis Functions
 
     To generate the B-spline functions, the number and location of the knots need to be specified along with the order of the spline. Let the knots sequence be denoted as t 1 ≤t 2 ≤ . . . ≤t n , where n is the number of knots. Let k denote the order of the spline where k=1 denotes the 0 th  order spline. The B-spline basis functions for any order k is generated recursively from the previous order basis functions. The knots sequence is augmented for each order k as follows 
                       t     (   k   )       =         {       t   l     ,   …   ⁢           ,     t   1         ︸       k   ⁢           ⁢   times         ,     t   2     ,   …   ⁢           ,     t     n   -   1       ,               t   n     ,   …   ⁢           ,     t   n       }     ︸       k   ⁢           ⁢   times       .             (   7   )               
The recursion of the B-spline at any order k&gt;1 is given as
 
                         B     j   ,   k       ⁡     (   x   )       =           x   -     t   j     (   k   )             t     j   +   k   -   1       (   k   )       -     t   j     (   k   )           ⁢       B       j   -   1     ,     k   -   1         ⁡     (   x   )         +           t     j   +   k       (   k   )       -   x         t     j   +   k       (   k   )       -     t     j   +   1       (   k   )           ⁢       B     j   ,     k   -   1         ⁡     (   x   )             ,     
     ⁢     j   =   1     ,   …   ⁢           ,     n   +   k   -   2     ,     k   &gt;   1     ,           (   8   )               
and is initialized at k=1 as
 
                       B     j   ,   1       ⁡     (   x   )       =     {           1             t   j     ≤   x   &lt;     t     j   +   1         ,     j   =   1     ,   …   ⁢           ,     n   -   2               1             t   j     ≤   x   ≤     t     j   +   1         ,     j   =     n   -   1                 0       otherwise         ,               (   9   )                 FIGS. 2A-2D  show the spline basis functions starting at k=1 and ending at k=4 to obtain the cubic spline. The knots are non-uniformly spaced at [0, 0.25, 0.4, 0.8, 1] and are shown as black dotted lines.
 
2.2 Warping Model Parameter Estimation
 
     The unknown spline coefficients for slope, offset, and optical distortion need to estimated. This is achieved by fitting the warping model Eq. (3) to the warping data obtained by the image correlation algorithm at a discrete set of tie points. Let {x i , y i }, i=1, . . . , m denote a set of m grid points at which the warp has been estimated. To facilitate the estimation of the unknown coefficient, we rewrite Eq. (3) in vector-matrix notation 
                           ⁢       d   =   Ap     ,     
     ⁢           ⁢   where             (   10   )               A   =     [               B     1   ,   k     s     ⁡     (     y   1     )       ⁢     x   1           …             B       n   s     ,   k     s     ⁡     (     y   1     )       ⁢     x   1               B     1   ,   k     c     ⁡     (     y   1     )           …           B       n   c     ,   k     c     ⁡     (     y   1     )               B     1   ,   k     o     ⁡     (     x   1     )           …           B       n   o     ,   k     o     ⁡     (     x   1     )               ⋮       ⋱       ⋮       ⋮       ⋱       ⋮       ⋮       ⋱       ⋮                 B     1   ,   k     s     ⁡     (     y   m     )       ⁢     x   m           …             B       n   s     ,   k     s     ⁡     (     y   m     )       ⁢     x   m               B     1   ,   k     c     ⁡     (     y   m     )           …           B       n   c     ,   k     c     ⁡     (     y   m     )               B     1   ,   k     o     ⁡     (     x   1     )           …           B       n   o     ,   k     o     ⁡     (     x   ,     )             ]             (   11   )               
is a m×n p  matrix, where n p =n s +n c +n o , and
 
                     p   =     [           s     x   ⁢           ⁢   1             s     y   ⁢           ⁢   1               ⋮       ⋮             s     xn   s             s     yn   s                 c     x   ⁢           ⁢   1             c     y   ⁢           ⁢   1               ⋮       ⋮             c     xn   c             c     yn   c                 o     x   ⁢           ⁢   1             o     y   ⁢           ⁢   1               ⋮       ⋮             o     xn   o             o     yn   o             ]       ,     d   =     [             d   x     ⁡     (       x   1     ,     y   1       )               d   y     ⁡     (       x   1     ,     y   1       )               ⋮       ⋮               d   x     ⁡     (       x   m     ,     y   m       )               d   y     ⁡     (       x   m     ,     y   m       )             ]       ,           (   12   )               
are n p ×2 and m×2 matrices respectively. The matrix P has all the spline coefficients, the matrix d has all the data, and the matrix A is constructed based on the model structure. The spline basis functions have a compact local support and this makes the matrix A to be sparse. Note that bold case letters will be used to represent matrices. Subscripts on matrices will be used to identify rows (first index) and columns (second index) with * denoting all indices. For example, A i*  denotes the i th  row and A *j  denotes the j th  column of matrix A. The first and second columns of p and d matrices contain the model coefficients and data for x and y respectively. Hence we will also use p *v  or d *v  with v taking values {x,y} to denote the column vectors corresponding to x and Y.
 
2.2.1 Least Squares Estimation of Spline Coefficients
 
     Equation (10) compactly represents the warp model evaluated at the tie point grid where warping data is available either through image registration or some other means. In general, there will be noise in the data either due to measurement process or model mismatch. We would like to adjust the unknown spline coefficient to minimize the mean square error between the model predictions and the data. The least-squares estimate can be obtained in closed form and is given as
 
 {circumflex over (p)} =( A   t   A ) −1   A   t   d.   (13)
 
Note that the {circumflex over ( )} notation indicates that the underlying quantity has been estimated.
 
2.2.2 Weighted Least Squares Estimation of Spline Coefficients
 
     The solution of Eq. (13) assumes that the noise is uniformly distributed across all the m data points and that the two components in x and y are independent. However, depending on how the data values are obtained for the warping, the noise may be quite variable between the data points and also coupled between the two components. Let W(i) denote the 2×2 weighting matrix for data point i based on the confidence we have on the estimate for that point. The inverse of the noise covariance matrix can be chosen as the weighting matrix. The weighted mean square error across all m data points in vector-matrix notation is given as 
                     C   =       ∑     i   =   1     m     ⁢           ⁢         (         A   ⁡     (   i   )       ⁢     p   →       -     d     i   *     t       )     t     ⁢     W   ⁡     (   i   )       ⁢     (         A   ⁡     (   i   )       ⁢     p   →       -     d     i   *     t       )           ,     
     ⁢   where           (   14   )                 A   ⁡     (   i   )       =     [           A     i   *           0           0         A     i   *             ]             (   15   )               
is a 2×2n p  matrix and
 
                     p   →     =     [           p     *   x                 p     *   y             ]             (   16   )               
is a 2n p ×1 vector containing the spline coefficient for both components. The spline coefficients that minimize the mean square error C is obtained by differentiating Eq. (14) with respect to  p  and setting it equal to zero
 
                             ∂   C       ∂     p   →                  p   →     =       p   →     ^         =   0     ⁢     
     ⁢         ∑     i   =   1     m     ⁢           ⁢     2   ⁢       A   t     ⁡     (   i   )       ⁢     W   ⁡     (   i   )       ⁢     (         A   ⁡     (   i   )       ⁢       p   →     ^       -     d     i   *     t       )         =   0     ⁢     
     ⁢         ∑     i   =   1     m     ⁢           ⁢         A   t     ⁡     (   i   )       ⁢     W   ⁡     (   i   )       ⁢     A   ⁡     (   i   )       ⁢       p   →     ^         =       ∑     i   =   1     m     ⁢           ⁢         A   t     ⁡     (   i   )       ⁢     W   ⁡     (   i   )       ⁢     d     i   *     t           ⁢     
     ⁢         p   →     ^     =         (       ∑     i   =   1     m     ⁢           ⁢         A   t     ⁡     (   i   )       ⁢     W   ⁡     (   i   )       ⁢     A   ⁡     (   i   )           )       -   1       ⁢     (       ∑     i   =   1     m     ⁢           ⁢         A   t     ⁡     (   i   )       ⁢     W   ⁡     (   i   )       ⁢     d     i   *     t         )                 (   17   )               
2.2.3 Special Case for Uncorrelated Components
 
     If the x and y components are uncorrelated (weighting matrices W(i) are diagonal), then Eq. (17) can be simplified since the spline coefficient for x and y can be estimated independently. Let 
                       W   x     =     [           W   11     (   1   )                       0                       ⋱                       0                     W   11     (   m   )             ]       ,       W   y     =     [           W   22     (   1   )                       0                       ⋱                       0                       W   22     (   m   )       ,           ]               (   18   )               
be the m×m diagonal weighting matrices for x and y components respectively. Then the weighted least-squares solution for the two components is given as
 
 {circumflex over (p)}   *     v   =( A   t   W   x   A ) −1   A   t   W   v   d   *     v     ,v={x,y}   (19)
 
Note that until now we have assumed the basis functions are the same for x and y components. This restriction can be easily relaxed by using a different matrix A for the x and y components. For the coupled solution given by Eq. (17), the matrix A(i) can be modified as
 
                       A   ⁡     (   i   )       =     [           A     xi   *           0           0         A     y     i   *               ]       ,           (   20   )               
where A x  and A y  denotes the A matrix formed from the basis functions for x and y respectively.
 
2.2.4 Numerical Computation Considerations
 
     The warping model matrix A can end up being badly scaled and ill-conditioned leading to a host of numerical issues in the solution of the model spline coefficients. The problem arises because the range of x and y may be large and quite different from each other. The large range of x makes the basis functions for the optical distortion model given by Eq. (6) to have a very large dynamic range if the polynomial model is chosen. With finite precision, the matrices will become rank deficient making it difficult to fit the data correctly. To overcome this problem, it is advisable to first normalize the range of the x and y between 0 and 1. The warping model is then fitted in the normalized domain and the results scaled back to the original domain for subsequent processing. 
     Also note the solutions in Eqs. (13), (17), and (19), require a matrix inverse. Although they have been written in that form, it is not advisable to compute the explicit inverse both from a numerical accuracy perspective nor performance considerations. Instead, it is better to take the inverted matrix to the other side of the equation and solve the resulting set of linear equations using Gaussian elimination. 
     2.3 Warp Model Evaluation 
     Once the spline coefficients are estimated using eqs. (13) or (17) or (19), the slope, offset, and optical distortion profiles can be computed using eqs. (4), (5), and (6), as 
                           s   ^     v     ⁡     (   y   )       =       ∑     j   =   1       n   s       ⁢           ⁢         s   ^     vj     ⁢       B     j   ,   k     s     ⁡     (   y   )             ,           (   21   )                       c   ^     v     ⁡     (   y   )       =       ∑     j   =   1       n   c       ⁢           ⁢         c   ^     vj     ⁢       B     j   ,   k     c     ⁡     (   y   )             ,           (   22   )                       o   ^     v     ⁡     (   x   )       =       ∑     j   =   1       n   o       ⁢           ⁢         o   ^     vj     ⁢       B     j   ,   k     o     ⁡     (   x   )             ,           (   23   )               
The estimated warp can then be evaluated at any spatial location (x, y) in the image as
 
 {circumflex over (d)}   v ( x,y )= ŝ   v ( y ) x+ĉ   v ( y )+ ô   v ( x )  (24)
 
     To produce a de-warped band that is registered to the reference band, an image resampling routine will evaluate the warp using eq. (24) at each pixel location of the reference image to determine the location of the corresponding pixel in the warped band and then use the interpolated pixel value of the warped band at this location to fill in the values for the de-warped band at the reference pixel location. 
     2.4 Uncertainty of the Slope and Offset Profiles 
     The covariance matrix (uncertainty) of the parameter vector {circumflex over (p)} *     v    including the slope, offset, and optical distortion, spline coefficients for the case of uncorrelated x and y components can be computed as
 
{circumflex over (Σ)} v =( A   t   W   v   A ) −1 .  (25)
 
Note that the spline and offset coefficients covariance matrices are contained as sub-matrices of {circumflex over (Σ)} v . The covariance of the slope spline coefficients is given as
 
{circumflex over (Σ)} sv ={circumflex over (Σ)} v1:n     s     ,1:n     s   ,  (26)
 
where we have used the colon notation in the subscript to denote the range of row and column indices to extract from the overall covariance. So for example, the subscript notation in eq. (26) means that the matrix spanning rows indices {1, . . . , n s } and column indices {1, . . . , n s } within the matrix {circumflex over (Σ)} v  is extracted. Similarly, the covariance of the offset spline coefficients is given as
 
{circumflex over (Σ)} cv ={circumflex over (Σ)} vn     s     +1:n     s     +n     c     ,n     s     +1:n     s     +n     c   .  (27)
 
The variance (uncertainty) of the slope profile at a particular time instance y is given as
 
{circumflex over (σ)} sv   2 ( y )= B   s ( y ){circumflex over (Σ)} sv   B   s   t ( y )  (28)
 
where
 
 B   s ( y )=└ B   1,k   s ( y ) . . .  B   n     s     ,k   s ( y )┘  (29)
 
A similar expression applies for the offset profile
 
{circumflex over (σ)} cv   2 ( y )= B   c ( y ){circumflex over (Σ)} cv   B   c   t ( y )  (30)
 
where
 
 B   c ( y )=└ B   1,k   c ( y ) . . .  B   n     c     ,k   c   k ( y ).┘  (31)
 
     3 Warp Model Parameter Transformation Between Band Pairings 
     In this Section, we derive a transformation between the slope and offset profiles obtained from one pair of bands to another pair of bands. This will allow us to predict the slope and offset profiles for an arbitrary pairing of bands given the slope and offset profiles for a particular band pairing. For notational simplicity, we will omit the subscripts associated with the x and y component as the expressions are the same for both of them. The transformation for the slope and offset profile is also similar so all the equations below are written only for the slope profile. The expressions for the offset profile can be obtained by simply substituting c for s in the expressions, i.e., this substitution explains how to obtain the corresponding expressions of the offset profile from the expressions of the slope profile. 
     Since we are transforming from one band pairing to another, we will need to explicitly specify the bands that are being used in the notation. So all the quantities derived in previous Sections will have a subscript denoting the band pairing used to estimate them. For example, ŝ fg (⋅) denotes the slope profile estimated for the warp between bands f and g using image correlation data as given by eq. (21). When we predict the slope profile for a new pair of bands d and e using the slope profile estimated from bands f and g, we will use the subscript notation ŝ de(fg) (⋅). 
     The slope and offset profiles encode the relative motion at the time instances the two bands are measured. In this sense, they are derivatives of the platform motion profile. So the slope and offset profiles should just scale by the ratio of the time difference between the two band pairings. The profiles will also be shifted in time between the two band pairings. The shift will be equal to the time difference between the time spacing of the two band pairings. Taking these two factors into account, the predicted slope profile of band pairing {d,e} from the slope profile estimated for band pairing {f, g} given as
 
 ŝ   de(fg) ( y )= ŝ   fg ( y−Δy   de(fg) ) r   de(fg) ,  (32)
 
where the time shift is
 
                       Δ   ⁢           ⁢     y     de   ⁡     (   fg   )           =         y   d     +     y   e     -     y   f     -     y   g       2       ,           (   33   )               
and the scaling is
 
                       r     de   ⁡     (   fg   )         =         y   e     -     y   d           y   g     -     y   f           ,           (   34   )               
and {y d , y e , y f , y g } denote the spatial locations of the bands {d, e, f, g} respectively along the Y direction in the FPA (example shown in  FIG. 1 ). The uncertainty of the predicted slope profile is given as
 
{circumflex over (σ)} de(fg)   2 ( y )={circumflex over (σ)} fg   2 ( y−Δy   de(fg)   2 ,  (35)
 
where {circumflex over (σ)} fg   2 (⋅) denotes the variance of the slope profile for band pairing {f,g} estimated from image correlation data as given by eq. (28).
 
3.1 Optimal Estimation of Slope and Offset Profile from Multiple Predictions
 
     If image correlation is performed between multiple band pairings to improve the registration performance, we will have multiple predictions of the slope and offset profile for each band pairing. These predictions can be optimally combined given the uncertainty associated with each prediction to obtain an optimal estimate of the profile, which combines the information from all the available data. 
     There are N(N−1)/2 band pairs in a N band system and we can choose to do image correlation between any of those combinations. Let M be the number of band pairs chosen for image correlation. Let P be the set of all band pairs on which image correlation is performed. Then the optimal estimate of the slope profile for a particular band pair {d,e} is obtained as weighted sum of all the individual M predictions 
                           s   _     de     ⁡     (   y   )       =         (       ∑       {     f   ,   g     }     ∈   P       ⁢           ⁢         σ   ^       de   ⁡     (   fg   )         -   2       ⁡     (   y   )         )       -   1       ⁢       ∑       {     f   ,   g     }     ∈   P       ⁢           ⁢           σ   ^       de   ⁡     (   fg   )         -   2       ⁡     (   y   )       ⁢         s   ^       de   ⁡     (   fg   )         ⁡     (   y   )               ,           (   36   )               
where the uncertainty associated with each prediction is used as weight and we have used the  −  notation to denote the optimal smoothing and distinguish it from the estimated quantities.
 
     To illustrate this process, we will use the example of a 3 band system as shown in  FIG. 1 . In this case, we perform 3 image correlations between band pairs {1,2}, {1,3}, and {2,3}. From the image correlation warp data, we obtain slope profiles for the 3 band pairs ŝ 12 (⋅), ŝ 13 (⋅), and ŝ 23 (⋅) along with their associated uncertainty as covered in Sec. 2. Now if we consider a particular band pair, e.g. {1,3}, we can obtain 3 independent estimates of the slope profiles ŝ 13(12) (⋅), ŝ 13(13) (⋅), and ŝ 13(23) (⋅) and their associated uncertainty using eqs. (32) and (35). Note that ŝ 13(13) (⋅)=ŝ 13 (⋅). The final optimal estimate of the slope profile for band pair {1,3} is given as 
     
       
         
           
             
               
                 
                   
                     
                       
                         s 
                         _ 
                       
                       13 
                     
                     ⁡ 
                     
                       ( 
                       y 
                       ) 
                     
                   
                   = 
                   
                     
                       
                         
                           
                             
                               σ 
                               ^ 
                             
                             13 
                             
                               - 
                               2 
                             
                           
                           ⁡ 
                           
                             ( 
                             y 
                             ) 
                           
                         
                         ⁢ 
                         
                           
                             
                               s 
                               ^ 
                             
                             13 
                           
                           ⁡ 
                           
                             ( 
                             y 
                             ) 
                           
                         
                       
                       + 
                       
                         
                           
                             
                               σ 
                               ^ 
                             
                             
                               13 
                               ⁢ 
                               
                                 ( 
                                 23 
                                 ) 
                               
                             
                             
                               - 
                               2 
                             
                           
                           ⁡ 
                           
                             ( 
                             y 
                             ) 
                           
                         
                         ⁢ 
                         
                           
                             
                               s 
                               ^ 
                             
                             
                               13 
                               ⁢ 
                               
                                 ( 
                                 23 
                                 ) 
                               
                             
                           
                           ⁡ 
                           
                             ( 
                             y 
                             ) 
                           
                         
                       
                       + 
                       
                         
                           
                             
                               σ 
                               ^ 
                             
                             
                               13 
                               ⁢ 
                               
                                 ( 
                                 12 
                                 ) 
                               
                             
                             
                               - 
                               2 
                             
                           
                           ⁡ 
                           
                             ( 
                             y 
                             ) 
                           
                         
                         ⁢ 
                         
                           
                             
                               s 
                               ^ 
                             
                             
                               13 
                               ⁢ 
                               
                                 ( 
                                 12 
                                 ) 
                               
                             
                           
                           ⁡ 
                           
                             ( 
                             y 
                             ) 
                           
                         
                       
                     
                     
                       
                         
                           
                             σ 
                             ^ 
                           
                           13 
                           
                             - 
                             2 
                           
                         
                         ⁡ 
                         
                           ( 
                           y 
                           ) 
                         
                       
                       + 
                       
                         
                           
                             σ 
                             ^ 
                           
                           
                             13 
                             ⁢ 
                             
                               ( 
                               23 
                               ) 
                             
                           
                           
                             - 
                             2 
                           
                         
                         ⁡ 
                         
                           ( 
                           y 
                           ) 
                         
                       
                       + 
                       
                         
                           
                             σ 
                             ^ 
                           
                           
                             13 
                             ⁢ 
                             
                               ( 
                               12 
                               ) 
                             
                           
                           
                             - 
                             2 
                           
                         
                         ⁡ 
                         
                           ( 
                           y 
                           ) 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   37 
                   ) 
                 
               
             
           
         
       
     
     4 Different Configurations for Warp Estimation 
     To enable the algorithm to be able to generate a warp for any band pairing from data for a limited set of band pairs, it first needs to be calibrated. This calibration is performed offline using a set of images that have been acquired for calibration purposes and need be done only once for a particular scanner system. It requires image correlation between all sets of band pairs to learn the model parameters that do not vary with time.  FIG. 3  shows the data flow during calibration for a 3 band system. The 3 sets of band pairs {1,2}, {2,3}, and {1,3}, are correlated  12  to generate warp data  13 ,  14 ,  15 , respectively. This data will generally be noisy especially in areas where there is little edge information in the image to correlate against. The noisy warp data is then fitted using the warp model  16  and the slope, offset, and optical distortion profiles  18 ,  30 ,  32 ,  24 ,  26 , and  28  are generated. This is described above in Sec. 2. The optical distortion profiles  24 ,  26 , and  28  between the band pairs are static and stored for future use. The slope and offset profiles  18 ,  30 , and  32  should be scaled and shifted versions of one another as seen in eq. (32). By correlating these profiles against one another, the time shift between them can be estimated. The time shift is a function of the stick spacing as seen in eq. (33). Using the 3 time shifts, the 3 stick positions  22  {y 1 , y 2 , y 3 } can be estimated 20. Note that we can only solve for the relative spacing between the sticks so y 1  can be set to zero without loss of generality and the other stick positions {y 2 , y 3 } can be solved for in a least squares sense from the 3 time shift measurements. 
       FIG. 4  shows the on-line data flow for computing the warps between all pairs of a 3 band system using data from just a single image correlation. This configuration would be used if computational speed is very important and reduced accuracy can be tolerated. Note that the process for  FIG. 4  is run every time a new image is acquired (on-line) whereas the process for  FIG. 3  need run only once (off-line) on a previously collected image data set to estimate the calibration parameters subsequently used in the on-line process. In this case, band pair {1,2} of the acquired image is fed to the image correlation routine  120  to generate the noisy warp data  140 . The warp model  160  is fitted to this data to generate the slope, offset, and optical distortion profiles  180  and  240 . The profiles can then be used in eq. (24) to generate  42  the warp  44  at any location for band pair {1,2}. The slope and offset profiles  180  from band pair {1,2} are used to predict  34  the slope and offset profiles  36  for band pairs {2,3} and {1,3} using the calibrated stick spacing  22 , shown in  FIG. 3 . Equation (32) is used to do the prediction. The predicted slope and offset profiles  36  along with the calibrated optical distortion profiles  38 , i.e. calibrated optical distortions  26  and  28  from  FIG. 3 , are then used to compute  40 , using eq. (24), the warps  46  and  48  for band pairs {2,3} and {1,3}, respectively, at any location. 
       FIG. 5  shows the data flow for computing the warps  44 ,  46 , and  48  between all pairs of a 3 band system by leveraging all available information. In this case, the image correlation is done between all band pairs and this data is used to optimally predict the parameters of the warp model. This configuration would be used if accuracy is important and computational speed is of secondary consideration. Similarly to  FIG. 4 , this is an on-line process that is performed every time a new image is acquired. The slope, offset, and optical distortion profiles  180 ,  300 ,  320 ,  240 ,  260 , and  280  are first estimated by fitting the warp model  16  to the data generated by the image correlation process  12  for each band pair ({1,2}, {2,3}, and {1,3}), of the acquired image. The estimation process is the same as shown in  FIG. 3  but it is performed on the newly acquired image. All of the 3 slope and offset profiles  180 ,  300 , and  320  are used to predict  340  slope and offset profile for each band pair using eq. (32). This provides 3 predictions for each band pair, which are optimally combined using eq. (36) to produce a single smoothed estimate  360  of the slope and offset. 
     The optical distortion profiles  240 ,  260 , and  280  for each band pair may also optionally be smoothed  50  using the calibrated optical distortion profile  380  (a collection of calibrated optical distortions  24 ,  26 , and  28  from  FIG. 3 ) for each respective band pair. In the final step, the smoothed slope and offset profiles  360  along with the (smoothed) optical distortion profile  52  for each band pair is used to evaluate  400  the warp  440 ,  460  and  480  for that band pair.  FIG. 6  shows the data flow for a registration application that uses the generated warps for the example 3 band system. In this case, band 1 is considered as the reference band and the warped bands 2 and 3 are resampled  54  using the warps between band pairs {1,2} and {1,3} respectively. The dewarped bands 2 and 3 are now spatially registered to the reference band 1. 
     Although we have described the various applications of the proposed method for an example 3 band system, those skilled in the art will now appreciate how to apply these methods to a N band system. Furthermore, the two applications that have been illustrated are at the two extremes of the computational speed versus accuracy trade-off spectrum. It is straightforward to trade-off speed and accuracy to a different amount for a N band system by either increasing or decreasing the number of image correlations that are performed. 
     Those skilled in the art will readily appreciate that a system for registering images can include a module configured to implement machine readable instructions to perform one or more of the method embodiments described above. 
     As will be appreciated by those skilled in the art, aspects of the present embodiments may be embodied as a system, method or computer program product. Accordingly, aspects of the present embodiments may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. 
     Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
     A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. 
     Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing. 
     Computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). 
     Aspects of the present disclosure are described above with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the embodiments. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. 
     The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in a flowchart and/or block diagram block or blocks 
     The methods and systems of the present disclosure, as described above and shown in the drawings, provide for imagery with superior properties including improved multi-band/multi-spectral image registration. While the apparatus and methods of the subject disclosure have been shown and described with reference to preferred embodiments, those skilled in the art will readily appreciate that changes and/or modifications may be made thereto without departing from the scope of the subject disclosure.