Abstract:
A relatively moving surface is illuminated with a laser. Light from the laser is reflected by the surface into an array of photosensitive elements; the reflected light includes a speckle pattern. Sums are calculated for outputs of pixels perpendicular to a first dimension along which motion is to be determined. Motion along the first dimension is then determined based on spatial and temporal gradients of the calculated sums. Sums are also calculated for outputs of pixels perpendicular to a second dimension along which motion is to be determined. Motion along the second dimension is then determined based on spatial and temporal gradients of those sums. The array may be rectangular, or may contain arms separated by a pixel-free region.

Description:
BACKGROUND  
       [0001]     Measuring motion in two or more dimensions is extremely useful in numerous applications. Computer input devices such as mice are but one example. In particular, a computer mouse typically provides input to a computer based on the amount and direction of mouse motion over a work surface (e.g., a desk top). Many existing mice employ an imaging array for determining movement. As the mouse moves across the work surface, small overlapping work surface areas are imaged. Processing algorithms within the mouse firmware then compare these images (or frames). In general, the relative motion of the work surface is calculated by correlating surface features common to overlapping portions of adjacent frames.  
         [0002]     These and other optical motion tracking techniques work well in many circumstances. In some cases, however, there is room for improvement. Some types of surfaces can be difficult to image, or may lack sufficient surface features that are detectable using conventional techniques. For instance, some surfaces have features which are often undetectable unless expensive optics or imaging circuitry is used. Systems able to detect movement of such surfaces (without requiring expensive optics or imaging circuitry) would be advantageous.  
         [0003]     The imaging array used in conventional techniques can also cause difficulties. In particular, conventional imaging techniques require a relatively large array of light-sensitive imaging elements. Although the array size may be small in absolute terms (e.g., approximately 1 mm by 1 mm), that size may consume a substantial portion of an integrated circuit (IC) die. The imaging array is often the most expensive part of the die, and costs could be reduced if smaller arrays could be used. Moreover, the imaging elements (or pixels) of conventional arrays are generally arranged in a single rectangular block that is square or near-square. When designing an integrated circuit for an imager, finding space for such a large single block can sometimes pose challenges. IC design would be simplified if the size of an array could be reduced and/or if there were more freedom with regard to arrangement of the array.  
         [0004]     Another challenge posed by conventional imaging techniques involves the correlation algorithms used to calculate motion. These algorithms can be relatively complex, and may require a substantial amount of processing power. This can also increase cost for imaging ICs. Motion tracking techniques that require fewer and/or simpler computations would provide an advantage over current systems.  
         [0005]     One possible alternative motion tracking technology utilizes a phenomenon known as laser speckle. Speckle, which results when a surface is illuminated with a coherent light source (e.g., a laser), is a granular or mottled pattern observable when a laser beam is diffusely reflected from a surface with a complicated structure. Speckling is caused by the interference between different portions of a laser beam as it is reflected from minute or microscopic surface features. A speckle pattern from a given surface will be random. However, for movements that are small relative to spot size of a laser beam, the change in a speckle pattern as a laser is moved across a surface is non-random.  
         [0006]     As is known in the art, a line of photosensitive pixels can be used to determine one dimensional movement of a beam spot across a surface. As a laser beam is directed at the surface, a spot of light where the beam strikes the surface is reflected (with speckling) into the line of pixels. By measuring the intensity of light received in the pixels at numerous times, the movement of the surface relative to the pixels can be determined. For a line of n pixels having a pixel pitch (or spacing between pixels) of Δx, the spatial gradient SG between two pixels a and b as intensity readings are taken from those pixels at times t1 and t2 is approximated by Equation 1.  
             SG   =       1   2     *         b   ⁢     (     t   ⁢           ⁢   1     )       -     a   ⁡     (     t   ⁢           ⁢   1     )       +     b   ⁡     (     t   ⁢           ⁢   2     )       -     a   ⁡     (     t   ⁢           ⁢   2     )           Δ   ⁢           ⁢   x                 Equation   ⁢           ⁢   1             
 
 In Equation 1, a(t1) and b(t1) are the intensities of light received by pixels a and b at time t1; a(t2) and b(t2) are the intensities of light received by pixels a and b at time t2. The temporal gradient TG of the speckle intensity is approximated by Equation 2.  
             TG   =       1   2     *         a   ⁡     (     t   ⁢           ⁢   2     )       -     a   ⁡     (     t   ⁢           ⁢   1     )       +     b   ⁡     (     t   ⁢           ⁢   2     )       -     b   ⁡     (     t   ⁢           ⁢   1     )           Δ   ⁢           ⁢   t                 Equation   ⁢           ⁢   2             
 
 The quantity Δt is the time interval (i.e., sampling time) between t1 and t2. The velocity V of pixels a and b relative to the surface on which the laser is shined can be approximated by Equation 3.  
             V   =     TG   SG             Equation   ⁢           ⁢   3             
 
 If a similar approximation of V is obtained for all adjacent pixel pairs in the pixel line, those velocities can be combined using Equation 4.  
             V   =         ∑     i   =   1       n   -   1       ⁢       SG   i     *     TG   i             ∑     i   =   1       n   -   1       ⁢       (     SG   i     )     2                 Equation   ⁢           ⁢   4             
 
         [0007]     In Equation 4, i is an index for a pixel pair in the pixel line. The displacement of the surface relative to the pixel line from time t1 to time t2 is simply V*Δt.  
       SUMMARY  
       [0008]     This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.  
         [0009]     In at least some embodiments, a relatively moving surface is illuminated with a laser. Light from the laser is reflected by the surface into an array of photosensitive elements; the reflected light includes a speckle pattern. Based on outputs of pixels in the array, motion of the array relative to the surface is determined in two dimensions. In some embodiments, sums are calculated for outputs of pixels perpendicular to a dimension along which motion is to be determined. Motion along that dimension is then determined based on spatial and temporal gradients of the calculated sums.  
         [0010]     In certain embodiments, the array is square or otherwise rectangular. In other embodiments, the array includes separate arms corresponding to the dimensions along which motion is to be determined, with a space between those arms. In still other embodiments, a computer mouse receiving a speckling-pattern-containing laser reflection determines two dimensional motion based on spatial and temporal gradients in pixel output. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0011]     The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:  
         [0012]      FIG. 1  shows a computer mouse according to at least one exemplary embodiment.  
         [0013]      FIG. 2  is a partially schematic block diagram of an integrated circuit of the mouse in  FIG. 1 .  
         [0014]      FIG. 3  is a partially schematic diagram of an array in the mouse of  FIG. 1 .  
         [0015]      FIG. 4  shows a computer mouse according to at least one other exemplary embodiment.  
         [0016]      FIG. 5  is a partially schematic diagram of an array in the mouse of  FIG. 4 .  
         [0017]      FIGS. 6A and 6B  show arrangements of pixels in arrays according to other embodiments.  
         [0018]      FIGS. 7A and 7B  show an arrangement of pixels according to another embodiment. 
     
    
     DETAILED DESCRIPTION  
       [0019]     Various exemplary embodiments will be described in the context of a laser speckle tracking system used to measure movement of a computer mouse relative to a desk top or other work surface. However, the invention is not limited to implementation in connection with a computer mouse. Indeed, the invention is not limited to implementation in connection with a computer input device.  
         [0020]      FIG. 1  shows a computer mouse  10  according to at least one exemplary embodiment. Computer mouse  10  includes a housing  12  having an opening  14  formed in a bottom face  16 . Bottom face  16  is movable across a work surface  18 . For simplicity, a small space is shown between bottom face  16  and work surface  18  in  FIG. 1 . In practice, however, bottom face  16  may rest flat on surface  18 . Located within mouse  10  is a printed circuit board (PCB)  20 . Positioned on an underside of PCB  20  is a laser  22 . Laser  22  may be a vertical cavity surface emitting laser, an edge emitting laser diode or some other type of coherent light source. Laser  22  directs a beam  24  at a portion of surface  18  visible through opening  14 . Beam  24 , which may include light of a visible wavelength and/or light of a non-visible wavelength, strikes surface  18  and is reflected into an array  26  of a motion sensing integrated circuit (IC)  28 . Because of speckling, the light reaching array  26  has a high frequency pattern of bright and dark regions. Because of this high frequency pattern, the intensity of light falling on different parts of array  26  will usually vary. As mouse  10  moves across surface  18 , changes in the pattern of light received by array  26  are used to calculate the direction and amount of motion in two dimensions.  
         [0021]      FIG. 2  is a partially schematic block diagram of IC  28 . Array  26  of IC  28  includes a plurality of pixels p. Each pixel p is a photodiode or other photosensitive element which has an electrical property that varies in relation to the intensity of received light. For simplicity, only nine pixels are shown in  FIG. 2 . As discussed below, however, array  26  may have many more pixels, and those pixels may be arranged in a variety of different ways. At multiple times, each pixel outputs a signal (e.g., a voltage). The raw pixel output signals are amplified, converted to digital values and otherwise conditioned in processing circuitry  34 . Processing circuitry  34  then forwards data corresponding to the original pixel output signals for storage in RAM  36 . Computational logic  38  then accesses the pixel data stored in RAM  36  and calculates motion based on that data. Because numerous specific circuits for capturing values from a set of photosensitive pixels are known in the art, additional details of IC  28  are not included herein. Notably,  FIG. 2  generally shows basic elements of circuitry for processing, storing and performing computations upon signals obtained from an array. Numerous other elements and variations on the arrangement shown in  FIG. 2  are known to persons skilled in the art. For example, some or all of the operations performed in processing circuitry  34  could be performed within circuit elements contained within each pixel. The herein-described embodiments are directed to various arrangements of pixels and to details of calculations performed within computational logic  38 . Adaptation of known circuits to include these pixel arrangements and perform these calculations are within the routine abilities of persons of ordinary skill in the art once such persons possess the information provided herein.  
         [0022]      FIG. 3  is a partially schematic diagram of array  26  taken from the position indicated in  FIG. 1 . For convenience, pixels in array  26  are labeled p(r,c) in  FIG. 3 , where r and c are (respectively) the indices of the row and column where the pixel is located relative to the x and y axes. In the embodiment of  FIGS. 1 through 3 , array  26  is a q by q array, where q is an integer. The unnumbered squares in  FIG. 3  correspond to an arbitrary number of additional pixels. In other words, and notwithstanding the fact that  FIG. 3  literally shows a ten pixel by ten pixel array, q is not necessarily equal to ten in all embodiments. Indeed, array  26  need not be square. In other words, array  26  could be a q by q′ array, where q≠q′.  
         [0023]     Data based on output from pixels in array  26  is used to calculate motion in two dimensions. Superimposed on array  26  in  FIG. 3  is an arrow indicating the direction in which surface  18  (see  FIG. 1 ) is moving relative to array  26  from time t to time t+Δt. That motion has an x-axis displacement component Dx and a y-axis displacement component Dy. In order to calculate the x-axis displacement Dx, the data based on pixel outputs from each x row are condensed to a single value for time t and a single value for time t+Δt. In particular, the pixel data for each row is summed according to Equations 5 and 6.  
                   Sx   t     ⁡     (   r   )       =       ∑     c   =   1     q     ⁢       pix   t     ⁡     (     r   ,   c     )           ,       for   ⁢           ⁢   r     =   1     ,   2   ,     …   ⁢           ⁢   q             Equation   ⁢           ⁢   5                     Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (   r   )       =       ∑     c   =   1     q     ⁢       pix     t   +     Δ   ⁢           ⁢   t         ⁡     (     r   ,   c     )           ,       for   ⁢           ⁢   r     =   1     ,   2   ,     …   ⁢           ⁢   q             Equation   ⁢           ⁢   6             
 
 In Equation 5, “pix t (r, c)” is data corresponding to the output at time t of the pixel in row r, column c of array  26 . Similarly, “pix t+Δt (r, i)” in Equation 6 is data corresponding to the output at time t+Δt of the pixel in row r, column c of array  26 . The x-axis Dx displacement can then be found from equation 7, with Δx being the pixel pitch in the x direction.  
                 Dx   =     Δ   ⁢           ⁢   x   *         ∑     r   =   1       q   -   1       ⁢       A   ⁡     (   r   )       *     B   ⁡     (   r   )               ∑     r   =   1       q   -   1       ⁢       B   ⁡     (   r   )       2             ,   where     ⁢     
     ⁢       A   ⁡     (   r   )       =         Sx   t     ⁡     (     r   +   1     )       -       Sx   t     ⁡     (   r   )       +       Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (     r   +   1     )       -       Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (   r   )           ⁢     
     ⁢       B   ⁡     (   r   )       =         Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (     r   +   1     )       -       Sx   t     ⁡     (   r   )       +       Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (     r   +   1     )       -       Sx   t     ⁡     (   r   )                   Equation   ⁢           ⁢   7             
  B ( r )= Sx   t+Δt ( r+ 1)− Sx   t ( r+ 1)+ Sx   t+Δt ( r )− Sx   t ( r ) 
 
         [0024]     In order to calculate the y-axis displacement Dy, the pixel data based on pixel outputs from each y column are condensed to a single value for time t and a single value for time t+Δt, as set forth in Equations 8 and 9.  
                   Sy   t     ⁡     (   r   )       =       ∑     c   =   1     q     ⁢       pix   t     ⁡     (     r   ,   c     )           ,       for   ⁢           ⁢   c     =   1     ,   2   ,     …   ⁢           ⁢   q             Equation   ⁢           ⁢   8                     Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (   r   )       =       ∑     c   =   1     q     ⁢       pix     t   +     Δ   ⁢           ⁢   t         ⁡     (     r   ,   c     )           ,       for   ⁢           ⁢   c     =   1     ,   2   ,     …   ⁢           ⁢   q             Equation   ⁢           ⁢   9             
 
 As in Equations 5 and 6, “pix t (r,c)” and “pix t+Δt (r,c)” in Equations 8 and 9 are data corresponding to the outputs (at times t and time t+Δt, respectively) of the pixel in row r, column c. The y-axis displacement Dy can then be found from Equation 10.  
                 Dy   =     Δ   ⁢           ⁢   y   *         ∑     r   =   1       q   -   1       ⁢       A   ⁡     (   c   )       *     B   ⁡     (   c   )               ∑     r   =   1       q   -   1       ⁢       B   ⁡     (   c   )       2             ,   where     ⁢     
     ⁢       A   ⁡     (   c   )       =         Sy   t     ⁡     (     c   +   1     )       -       Sy   t     ⁡     (   c   )       +       Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (     c   +   1     )       -       Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (   c   )           ⁢     
     ⁢       B   ⁡     (   c   )       =         Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (     c   +   1     )       -       Sy   t     ⁡     (     c   +   1     )       +       Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (   c   )       -       Sy   t     ⁡     (   c   )                   Equation   ⁢           ⁢   10             
 
 In Equation 10, Δy is the pixel pitch in the y-axis direction. In many embodiments, Δy=Δx. 
 
         [0025]     In at least some embodiments, mouse  10  simply sums the Dx and Dy displacements over multiple sampling intervals Δt, and then periodically reports (e.g., in a Human Interface Device (or HID) report) the summed x-axis and y-axis displacements. In other embodiments, the total magnitude (s) and the angle of rotation (θ) of the movement vector are calculated using Equations 11 and 12. 
 
 s =√{square root over (( Dx ) 2 +( Dy ) 2 )}  Equation 11 
 
tan(θ)= Dy/Dx   Equation 12 
 
         [0026]     As can be appreciated, the above-described technique permits determination of two-dimensional motion using relatively simple calculations. Although the above technique assumes that Dx and Dy are less than the pixel pitch, acceptable accuracy is expected when calculating movements of up to 1.2 times pixel pitch. Moreover, a motion-less-than-pixel-pitch limitation (if such a limitation is present) could easily be satisfied by using a sufficiently high sampling rate and/or increased pixel size. For example, with an array having a pixel pitch Δx=Δy and a maximum expected speed of motion (in any direction) of V max , Δt could, e.g., be less than approximately 0.5*Δx/V max .  
         [0027]     The embodiment of  FIGS. 1 through 3  employs a conventional rectangular array. In other embodiments, an array of reduced size is used.  FIG. 4  shows a computer mouse  100  according to at least one such embodiment. As with mouse  10  of  FIG. 1 , mouse  100  includes a housing  112  having an opening  114  formed in a bottom face  116 . Located within mouse  100  on PCB  120  is a laser  122  and motion sensing IC  128 . Laser  122 , which is similar to laser  22  of  FIG. 1 , directs a beam  124  onto surface  118 . IC  128  is also similar to IC  28  of  FIGS. 1 and 2 , but includes a modified array  126  and determines motion using a modification of the technique described in connection with  FIG. 3 .  
         [0028]      FIG. 5  is a partially schematic diagram of array  126  taken from the position indicated in  FIG. 4 . Similar to  FIG. 3 , pixels in array  126  are labeled p′(r,c), where r and c are the respective row and column on the x and y axes shown. Unlike the embodiment of  FIG. 3 , however, array  126  is an “L”-shaped array. Specifically, array  126  includes an x-axis arm having dimensions m by n, and a y-axis arm having dimensions M by N. A pixel-free region  144  is located between the x- and y-axis arms. Accordingly, other components of IC  128  (e.g., computational elements, signal processing elements, memory) can be located in region  144 . In at least some embodiments, pixel-free region  144  is at least as large as a square having sides equal to the average pixel pitch in the x- and y-axis arms. As in  FIG. 3 , the unnumbered squares in  FIG. 5  correspond to an arbitrary number of pixels. In other words, and notwithstanding the fact that  FIG. 5  literally shows M=m=10 and N=n=3, these values are not necessarily the same in all embodiments. Moreover, M need not necessarily equal m, and N need not necessarily equal n.  
         [0029]     In order to calculate the x-axis displacement Dx in the embodiment of  FIGS. 4 and 5 , data based on the pixel outputs from each x row are condensed, for times t and t+Δt, according to Equations 13 and 14.  
                   Sx   t     ⁡     (   r   )       =       ∑     c   =   1     n     ⁢       pix   t     ⁡     (     r   ,   c     )           ,       for   ⁢           ⁢   r     =   1     ,   2   ,     …   ⁢           ⁢   m             Equation   ⁢           ⁢   13                     Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (   r   )       =       ∑     c   =   1     n     ⁢       pix     t   +     Δ   ⁢           ⁢   t         ⁡     (     r   ,   c     )           ,       for   ⁢           ⁢   r     =   1     ,   2   ,     …   ⁢           ⁢   m             Equation   ⁢           ⁢   14             
 
 In Equation 13 and 14, “pix t (r, c)” and “pix t+Δt (r, i)” are data corresponding to the outputs (at times t and t+Δt, respectively) of the pixel in row r, column c of array  126 . The x-axis Dx displacement can then be found from Equation 15, with Δx being the pixel pitch in the x-axis direction.  
                 Dx   =     Δ   ⁢           ⁢   x   *         ∑     r   =   1       m   -   1       ⁢       A   ⁡     (   r   )       *     B   ⁡     (   r   )               ∑     r   =   1       m   -   1       ⁢       B   ⁡     (   r   )       2             ,   where     ⁢     
     ⁢       A   ⁡     (   r   )       =         Sx   t     ⁡     (     r   +   1     )       -       Sx   t     ⁡     (   r   )       +       Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (     r   +   1     )       -       Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (   r   )           ⁢     
     ⁢       B   ⁡     (   r   )       =         Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (     r   +   1     )       -       Sx   t     ⁡     (     r   +   1     )       +       Sx   t     ⁡     (   r   )       -       Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (   r   )                   Equation   ⁢           ⁢   15             
 
         [0030]     In order to calculate the y-axis displacement Dy in the embodiment of  FIGS. 4 and 5 , data based on the pixel outputs from each y column are condensed for times t and t+Δt according to Equations 16 and 17.  
                   Sy   t     ⁡     (   c   )       =       ∑     r   =   1     N     ⁢       pix   t     ⁡     (     r   ,   c     )           ,           ⁢       for   ⁢           ⁢   c     =   1     ,   2   ,     …   ⁢           ⁢   M             Equation   ⁢           ⁢   16                     Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (   c   )       =       ∑     r   =   1     N     ⁢       pix     t   +     Δ   ⁢           ⁢   t         ⁡     (     r   ,   c     )           ,           ⁢       for   ⁢           ⁢   c     =   1     ,   2   ,     …   ⁢           ⁢   M             Equation   ⁢           ⁢   17             
 
 As in Equations 13 and 14, “pix t (r,c)” and “pix t+Δt (r,c)” in Equations 16 and 17 are data corresponding to the outputs (at times t and time t+Δt, respectively) of the pixel in row r, column c. The y-axis displacement Dy can then be found from Equation 18.  
                 Dy   =     Δ   ⁢           ⁢   y   *         ∑     c   =   1       M   -   1       ⁢       A   ⁡     (   c   )       *     B   ⁡     (   c   )               ∑     c   =   1       M   -   1       ⁢       B   ⁡     (   c   )       2             ,     
     ⁢   where     ⁢     
     ⁢       A   ⁡     (   c   )       =         Sy   t     ⁡     (     c   +   1     )       -       Sy   t     ⁡     (   c   )       +       Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (     c   +   1     )       -       Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (   c   )           ⁢     
     ⁢       B   ⁡     (   c   )       =         Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (     c   +   1     )       -       Sy   t     ⁡     (     c   +   1     )       +       Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (   c   )       -       Sy   t     ⁡     (   c   )                   Equation   ⁢           ⁢   18             
 
 In Equation 18, Δy is the pixel pitch in the y-axis direction. In many embodiments, Δy=Δx. The total magnitude (s) and the angle of rotation (θ) of the movement vector can also be calculated, using Dx and Dy values from Equations 15 and 18, in the formulae of Equations 11 and 12. 
 
         [0031]     As can be appreciated from  FIG. 5 , the embodiment of  FIGS. 4 and 5  allows additional freedom when designing a motion sensing IC such as IC  128 . For example, and as shown in  FIGS. 6A and 6B , the x- and y-axis arms of an array can be reoriented in many different ways. In  FIGS. 6A and 6B , the x- and y-axis arms still have dimensions m by n and M by N, respectively. However, the relative positioning of these arms is varied. In the examples of  FIGS. 6A and 6B , the x- and y-axis arms are contained within a footprint  251 , which footprint further includes one or more pixel-free regions  244 . In each case, the x-axis arm is offset from an origin of footprint  251  by a number of pixels y 1 . Similarly, the y-axis arms in  FIGS. 6A and 6B  are offset from the origins by a number of pixels x 1 . The quantities M, N, m, n, x 1  and y 1  represent arbitrary values, For example, x 1  in  FIG. 6A  does not necessarily have the same value as x 1  in  FIG. 6B  (or as x 1  in some other pixel arrangement). Indeed, x 1  and/or y 1  could have a value of zero, as in the case of  FIG. 5 .  
         [0032]     Equations 13 through 18 can be generalized as Equations 19 through 24.  
                     Sx   t     ⁡     (   r   )       =       ∑     c   =       y   ⁢           ⁢   1     +   1           y   ⁢           ⁢   1     +   n       ⁢       pix   t     ⁡     (     r   ,   c     )           ,     
     ⁢   for     ⁢           ⁢       r   =   1     ,   2   ,     …   ⁢           ⁢   m               Equation   ⁢           ⁢   19                       Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (   r   )       =       ∑     c   =       y   ⁢           ⁢   1     +   1           y   ⁢           ⁢   1     +   n       ⁢       pix     t   +     Δ   ⁢           ⁢   t         ⁡     (     r   ,   c     )           ,     
     ⁢   for     ⁢     
     ⁢       r   =   1     ,   2   ,     …   ⁢           ⁢   m               Equation   ⁢           ⁢   20                   Dx   =     Δ   ⁢           ⁢   x   *         ∑     r   =   1       m   -   1       ⁢       A   ⁡     (   r   )       *     B   ⁡     (   r   )               ∑     r   =   1       m   -   1       ⁢       B   ⁡     (   r   )       2             ,     
     ⁢   where     ⁢     
     ⁢         A   ⁡     (   r   )       =         Sx   t     ⁡     (     r   +   1     )       -       Sx   t     ⁡     (   r   )       +       Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (     r   +   1     )       -       Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (   r   )           ,     
     ⁢       B   ⁡     (   r   )       =         Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (     r   +   1     )       -       Sx   t     ⁡     (     r   +   1     )       +       Sx     t   +     Δ   ⁢           ⁢   t         ⁡     (   r   )       -       Sx   t     ⁡     (   r   )                     Equation   ⁢           ⁢   21                       Sy   t     ⁡     (   c   )       =       ∑     c   =       x   ⁢           ⁢   1     +   1           x   ⁢           ⁢   1     +   n       ⁢       pix   t     ⁡     (     r   ,   c     )           ,     
     ⁢   for     ⁢     
     ⁢       c   =   1     ,   2   ,     …   ⁢           ⁢   m               Equation   ⁢           ⁢   22                       Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (   c   )       =       ∑     c   =       x   ⁢           ⁢   1     +   1           x   ⁢           ⁢   1     +   n       ⁢       pix     t   +     Δ   ⁢           ⁢   t         ⁡     (     r   ,   c     )           ,     
     ⁢   for     ⁢     
     ⁢       c   =   1     ,   2   ,     …   ⁢           ⁢   m               Equation   ⁢           ⁢   23                   Dy   =     Δ   ⁢           ⁢   y   *         ∑     c   =   1       M   -   1       ⁢       A   ⁡     (   c   )       *     B   ⁡     (   c   )               ∑     c   =   1       M   -   1       ⁢       B   ⁡     (   c   )       2             ,     
     ⁢   where     ⁢     
     ⁢       A   ⁡     (   c   )       =         Sy   t     ⁡     (     c   +   1     )       -       Sy   t     ⁡     (   c   )       +       Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (     c   +   1     )       -       Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (   c   )           ⁢     
     ⁢       B   ⁡     (   c   )       =         Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (     c   +   1     )       -       Sy   t     ⁡     (     c   +   1     )       +       Sy     t   +     Δ   ⁢           ⁢   t         ⁡     (   c   )       -       Sy   t     ⁡     (   c   )                   Equation   ⁢           ⁢   24             
 
 In Equations 19 through 24, x 1  and y 1  are x- and y-axis offsets (such as is shown in  FIGS. 6A and 6B ). The quantities pix t (r,c) and pix t+Δt (r,c) are data corresponding to pixel outputs at times t and t+Δt from the pixel at row r, column c. The quantities Δx and Δy are the pixel pitches in the x- and y-axis directions. If x 1  and y 1  are both zero, Equations 19 through 24 reduce to Equations 13 through 18. If x 1  and y 1  are both zero, and if M=N=m=n, Equations 19 through 24 reduce to Equations 5 through 10. 
 
         [0033]     In still other embodiments, the arms of the array are not orthogonal. As shown in  FIGS. 7A and 7B , an array  300  has pixels arranged in two arms  301  and  303 . Motion relative to array  300  is determined by calculating components along arms  301  and  303 . The component parallel to arm  303  is determined using the pixels cross-hatched in  FIG. 7A . The component parallel to arm  301  is determined using the pixels cross-hatched in  FIG. 7B . Derivation of equations similar to those employed for the embodiments of  FIGS. 1 through 6 B are within the routine ability of persons skilled in the art, once such persons are provided with the description provided herein.  
         [0034]     Although examples of carrying out the invention have been described, those skilled in the art will appreciate that there are numerous variations and permutations of the above described devices that fall within the spirit and scope of the invention as set forth in the appended claims. For example, the arms of an array need not have common pixels. It is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. In the claims, various portions are prefaced with letter or number references for convenience. However, use of such references does not imply a temporal relationship not otherwise required by the language of the claims.