US2007109267A1PendingUtilityA1

Speckle-based two-dimensional motion tracking

Assignee: MICROSOFT CORPPriority: Nov 14, 2005Filed: Nov 14, 2005Published: May 17, 2007
Est. expiryNov 14, 2025(expired)· nominal 20-yr term from priority
G06F 3/0317
42
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

Reflected laser light having a speckle pattern is received in a pixel array. Pixel outputs are combined into series representing pixel intensities along particular dimensions at times t and t+Δt. Centroids for each series can be identified, and vectors determined for movement of centroids from time t to time t+Δt. Crossing points may alternatively be identified for data within each series relative to a reference value for that series, and vectors determined for movement of crossing points from time t to time t+Δt. A probability analysis may be used to extract a magnitude and direction of array displacement from a distribution of movement vectors. A series of data values corresponding to time t+Δt may alternatively be correlated to advanced and delayed versions of a series of data values corresponding to time t. The highest correlation is then used to determine movement.

Claims

exact text as granted — not AI-modified
1 . A motion tracking device, comprising: 
 a laser positioned to direct a beam at a surface moving relative to the device;    an array of photosensitive pixels positioned to receive light from the beam after the light reflects from the surface; and    a processor configured to perform steps that include 
 (a) calculating a series of data values representing a range of pixel intensities along a first dimension at a time t,  
 (b) calculating a series of data values representing a range of pixel intensities along a second dimension at the time t,  
 (c) calculating a series of data values representing a range of pixel intensities along the first dimension at a time t+Δt,  
 (d) calculating a series of data values representing a range of pixel intensities along the second dimension at the time t+Δt,  
 (e) determining motion along the first dimension using data from the series calculated in steps (a) and (c), and  
 (f) determining motion along the second dimension using data from the series calculated in steps (b) and (d).  
   
   
   
       2 . The device of  claim 1 , wherein step (e) includes the steps of 
 (e1) calculating centroids for portions of the data in the series calculated in step (a),    (e2) calculating centroids for portions of the data in the series calculated in step (c), and    (e3) determining motion vectors from the centroids calculated in step (e1) to the centroids calculated in step (e2),    and wherein step (f) includes the steps of    (f1) calculating centroids for portions of the data in the series calculated in step (b),    (f2) calculating centroids for portions of the data in the series calculated in step (d), and    (f3) determining motion vectors from the centroids calculated in step (f1) to the centroids calculated in step (f2).    
   
   
       3 . The device of  claim 2 , wherein step (e) includes the steps of 
 (e4) performing a probability analysis on the motion vectors determined in step (e3), and    (e5) determining motion along the first dimension based on the probability analysis of step (e4),    and wherein step (f) includes the steps of    (f4) performing a probability analysis on the motion vectors determined in step (f3), and    (f5) determining motion along the second dimension based on the probability analysis of step (f4).    
   
   
       4 . The device of  claim 1 , wherein step (e) includes the steps of 
 (e1) calculating a reference value based on the series of data values calculated in step (a),    (e2) calculating crossing points for the series of data values calculated in step (a) relative to the reference value calculated in step (e1),    (e3) calculating a reference value based on the series of data values calculated in step (c), and    (e4) calculating crossing points for the series of data values calculated in step (c) relative to the reference value calculated in step (e3),    and wherein step (f) includes the steps of    (f1) calculating a reference value based on the series of data values calculated in step (b),    (f2) calculating crossing points for the series of data values calculated in step (b) relative to the reference value calculated in step (f1),    (f3) calculating a reference value based on the series of data values calculated in step (d), and    (f4) calculating crossing points for the series of data values calculated in step (d) relative to the reference value calculated in step (f3).    
   
   
       5 . The device of  claim 4 , wherein step (e) includes the steps of 
 (e5) determining motion vectors from crossing points calculated in step (e2) to crossing points calculated in step (e4),    (e6) performing a probability analysis on the motion vectors determined in step (e5), and    (e7) determining motion along the first dimension based on the probability analysis of step (e6),    and wherein step (f) includes the steps of    (f5) determining motion vectors from crossing points calculated in step (f2) to crossing points calculated in step (f4),    (f6) performing a probability analysis on the motion vectors determined in step (f5), and    (f7) determining motion along the second dimension based on the probability analysis of step (f6).    
   
   
       6 . The device of  claim 1 , wherein step (e) includes the steps of 
 (e1) calculating, for each of multiple different values of delay and advancement, a series of data values based on the data values in the series calculated in step (a),    (e2) comparing the series calculated in step (c) with each of the series calculated in step (e1), and    (e3) determining motion along the first dimension based on the comparisons of step (e2),    and wherein step (f) includes the steps of    (f1) calculating, for each of multiple different values of delay and advancement, a series of data values based on the data values in the series calculated in step (b),    (f2) comparing the series calculated in step (d) with each of the series calculated in step (f1), and    (f3) determining motion along the second dimension based on the comparisons of step (f2).    
   
   
       7 . The device of  claim 6 , wherein 
 step (e2) includes calculating a correlation coefficient for each comparison of the series calculated in step (c) with a series calculated in step (e1),    step (e3) includes identifying a value of delay or advancement corresponding to a highest of the correlation coefficients calculated in step (e2),    step (f2) includes calculating a correlation coefficient for each comparison of the series calculated in step (d) with a series calculated in step (f1), and    step (f3) includes identifying a value of delay or advancement corresponding to a highest of the correlation coefficients calculated in step (f2).    
   
   
       8 . The device of  claim 1 , wherein 
 step (a) includes the step of (a1) summing, for each of a first plurality of locations along the first dimension, data corresponding to pixel outputs from a subset of the pixels in the array corresponding to that location,    step (a) further includes the step of (a2) filtering sums generated in step (a1),    step (b) includes the step of (b1) summing, for each of a second plurality of locations along the second dimension, data corresponding to pixel outputs from a subset of the pixels in the array corresponding to that location,    step (b) further includes the step of (b2) filtering sums generated in step (b 1),    step (c) includes the step of (c1) summing, for each of the first plurality of locations along the first dimension, data corresponding to pixel outputs from the subset of the pixels in the array corresponding to that location,    step (c) further includes the step of (c2) filtering sums generated in step (c1), step (d) includes the step of (d1) summing, for each of the second plurality of locations along the second dimension, data corresponding to pixel outputs from the subset of the pixels in the array corresponding to that location, and    step (d) further includes the step of (d2) filtering sums generated in step (d1).    
   
   
       9 . The device of  claim 8 , wherein 
 step (a) further includes the step of (a3) adding data values by interpolation of the sums filtered in step (a2),    step (b) further includes the step of (b3) adding data values by interpolation of the sums filtered in step (b2),    step (c) further includes the step of (c3) adding data values by interpolation of the sums filtered in step (c2), and    step (d) further includes the step of (d3) adding data values by interpolation of the sums filtered in step (d2).    
   
   
       10 . The device of  claim 1 , wherein 
 step (a) includes the step of (al) summing, for each of a first plurality of locations along the first dimension, data corresponding to pixel outputs from a subset of the pixels in the array corresponding to that location,    step (a) further includes the step of (a2) adding data values to the series of step (a1) by interpolation,    step (b) includes the step of (b1) summing, for each of a second plurality of locations along the second dimension, data corresponding to pixel outputs from a subset of the pixels in the array corresponding to that location,    step (b) further includes the step of (b2) adding data values to the series of step (b1) by interpolation, step (c) includes the step of (c1) summing, for each of the first plurality of locations along the first dimension, data corresponding to pixel outputs from the subset of the pixels in the array corresponding to that location,    step (c) further includes the step of (c2) adding data values to the series of step (c1) by interpolation,    step (d) includes the step of (d1) summing, for each of the second plurality of locations along the second dimension, data corresponding to pixel outputs from the subset of the pixels in the array corresponding to that location, and    step (d) further includes the step of (d2) adding data values to the series of step (d1) by interpolation.    
   
   
       11 . A motion tracking device, comprising: 
 a laser positioned to direct a beam at a surface moving relative to the device;    an array of photosensitive pixels positioned to receive light from the beam after the light reflects from the surface, the array including 
 a first arm including a first sub-array, the first sub-array having a size of m pixels in a direction generally parallel to a first dimension and n pixels in a direction generally perpendicular to the first dimension, where m and n is each greater than 1,  
 a second arm including a second sub-array, the second sub-array having a size of M pixels in a direction generally parallel to a second dimension and N pixels in a direction generally perpendicular to the second dimension, where M and N is each greater than 1, and  
 a pixel-free region between the first and second arms, the pixel-free region being larger than a square having sides equal to the average pixel pitch within the first and second arms; and  
   a processor configured to calculate movement in the first and second dimensions based on data generated from output of the pixels in the first and second sub-arrays.    
   
   
       12 . The device of  claim 11 , wherein the device is a computer mouse, and further comprises 
 a housing, the housing including an outer surface configured for contact with and movement across the surface, the housing further including a tracking region in the outer surface through which light may be transmitted from the laser to a work surface, and wherein the processor is configured to perform steps that include    (a) calculating a series of data values representing a range of pixel intensities in the first sub-array along the first dimension at a time t,    (b) calculating a series of data values representing a range of pixel intensities in the second sub-array along the second dimension at the time t,    (c) calculating a series of data values representing a range of pixel intensities in the first sub-array along the first dimension at a time t+Δt,    (d) calculating a series of data values representing a range of pixel intensities in the second sub-array along the second dimension at the time t+Δt,    (e) determining motion along the first dimension using data from the series calculated in steps (a) and (c), and    (f) determining motion along the second dimension using data from the series calculated in steps (b) and (d).    
   
   
       13 . The device of  claim 12 , wherein 
 step (a) includes the step of summing, for each of m locations along the first dimension, data corresponding to pixel outputs at time t from a subset of n pixels in the first sub-array corresponding to that location, thereby generating m first dimension time t sums,    step (b) includes the step of summing, for each of M locations along the second dimension, data corresponding to pixel outputs at time t from a subset of N pixels in the second sub-array corresponding to that location, thereby generating M second dimension time t sums,    step (c) includes the step of summing, for each of the m locations along the first dimension, data corresponding to pixel outputs at time t+Δt from the subset of n pixels corresponding to that location, thereby generating m first dimension time t+Δt sums, and    step (d) includes the step of summing, for each of the M locations along the second dimension, data corresponding to pixel outputs at time t+Δt from the subset of N pixels corresponding to that location, thereby generating M second dimension time t+Δt sums.    
   
   
       14 . The device of  claim 13 , wherein 
 step (a) includes the steps of filtering and interpolating the m first dimension time t sums,    step (b) includes the steps of filtering and interpolating the M second dimension time t sums,    step (c) includes the steps of filtering and interpolating the m first dimension time t+Δt sums, and    step (d) includes the steps of filtering and interpolating the M second dimension time t+Δt sums.    
   
   
       15 . The device of  claim 12 , wherein step (e) includes the steps of 
 (e1) calculating centroids for portions of the data in the series calculated in step (a),    (e2) calculating centroids for portions of the data in the series calculated in step (c), and    (e3) determining motion vectors from the centroids calculated in step (e1) to the centroids calculated in step (e2),    and wherein step (f) includes the steps of    (f1) calculating centroids for portions of the data in the series calculated in step (b),    (f2) calculating centroids for portions of the data in the series calculated in step (d), and    (f3) determining motion vectors from the centroids calculated in step (f1) to the centroids calculated in step (f2).    
   
   
       16 . The device of  claim 12 , wherein step (e) includes the steps of 
 (e1) calculating a reference value based on the series of data values calculated in step (a),    (e2) calculating crossing points for the series of data values calculated in step (a) relative to the reference value calculated in step (e1),    (e3) calculating a reference value based on the series of data values calculated in step (c), and    (e4) calculating crossing points for the series of data values calculated in step (c) relative to the reference value calculated in step (e3),    and wherein step (f) includes the steps of    (f1) calculating a reference value based on the series of data values calculated in step (b),    (f2) calculating crossing points for the series of data values calculated in step (b) relative to the reference value calculated in step (f1),    (f3) calculating a reference value based on the series of data values calculated in step (d), and    (f4) calculating crossing points for the series of data values calculated in step (d) relative to the reference value calculated in step (f3).    
   
   
       17 . The device of  claim 12 , wherein step (e) includes the steps of 
 (e 1) calculating, for each of multiple different values of delay and advancement, a series of data values based on the data values in the series calculated in step (a),    (e2) comparing the series calculated in step (c) with each of the series calculated in step (e1), and    (e3) determining motion along the first dimension based on the comparisons of step (e2),    and wherein step (f) includes the steps of    (f1) calculating, for each of multiple different values of delay and advancement, a series of data values based on the data values in the series calculated in step (b),    (f2) comparing the series calculated in step (d) with each of the series calculated in step (f1), and    (f3) determining motion along the second dimension based on the comparisons of step (f2).    
   
   
       18 . The device of  claim 11 , wherein the processor comprises means for determining motion along the first and second dimensions between times t and t+Δt based on centroids of data corresponding to pixel outputs at times t and t+Δt.  
   
   
       19 . The device of  claim 11 , wherein the processor comprises means for determining motion along the first and second dimensions between times t and t+Δt based on crossing points of data corresponding to pixel outputs at times t and t+Δt.  
   
   
       20 . The device of  claim 11 , wherein the processor comprises means for determining motion along the first and second dimensions between times t and t+Δt based on correlating data corresponding to pixel outputs at time t+Δt with advanced and delayed versions of data corresponding to pixel outputs at time t.

Join the waitlist — get patent alerts

Track US2007109267A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.