# Patent

## Title
Methods and apparatus for multi-frequency camera

## Abstract

In exemplary implementations of this invention, a multi-frequency ToF camera mitigates the effect of multi-path interference (MPI), and can calculate an accurate depth map despite MPI. A light source in the multi-frequency camera emits light in a temporal sequence of different frequencies. For example, the light source can emit a sequence of ten equidistant frequencies f=10 MHz, 20 MHz, 30 MHz, . . . , 100 MHz. At each frequency, a lock-in sensor within the ToF camera captures 4 frames. From these 4 frames, one or more processors compute, for each pixel in the sensor, a single complex number. The processors stack all of such complex quantities (one such complex number per pixel per frequency) and solve for the depth and intensity, using a spectral estimation technique.

## Background
RELATED APPLICATIONS
This application is a non-provisional of, and claims the benefit of the filing date of, U.S. Provisional Application No. 61/824,601, filed May 17, 2013, the entire disclosure of which is herein incorporated by reference.


STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT
This invention was made with government support under Grant No. IIS-115680 awarded by the National Science Foundation and under Grant No. N66001-10-1-4041 awarded by the Space & Naval Warfare Systems Center. The government has certain rights in the invention.


FIELD OF THE TECHNOLOGY
The present invention relates generally to cameras.
SUMMARY
In conventional time-of-flight (ToF) cameras, multipath interference can corrupt a depth measurement. Multipath interference (MPI) arises when light from the ToF camera travels along different paths with different path lengths and then strikes a single pixel in the lock-in sensor. The phases of light for the different path lengths are different. A conventional ToF camera integrates the light from the different paths, and thus computes an inaccurate phase and an inaccurate depth.
In exemplary implementations of this invention, a multi-frequency ToF camera mitigates the effect of MPI. Even when light with different path lengths strikes single pixels, the multi-frequency ToF camera can calculate an accurate depth map, at least if the path lengths are along single-bounce paths.
In exemplary implementations of this invention, a light source in the multi-frequency camera emits modulated light in a temporal sequence of different frequencies. For example, the light source can emit a sequence of ten equidistant frequencies f=10 MHz, 20 MHz, 30 MHz, . . . , 100 MHz. At each frequency, a lock-in sensor within the ToF camera captures 4 frames. From these 4 frames, one or more processors compute, for each pixel in the lock-in sensor, a single complex number. Thus, the processors compute one such complex quantity per pixel per frequency. The processors then stack all of such complex quantities (one such complex number per pixel per frequency) and solve for the depth and intensity.
In an illustrative embodiment of this invention, a multi-frequency camera emits modulated light in a temporal sequence of m different frequencies: x1, x2, . . . , xm. First, it emits frequency x1, then it emits frequency x2, and so on. The frequencies are evenly spaced (in frequency): e.g., 10 MHz, 20 MHz and so on. For each respective frequency in the sequence, a lock-in sensor captures multiple frames (e.g., four frames). From these multiple frames, one or more processors compute a single complex number per pixel for that respective frequency, which complex number can be expressed as a phasor. For example, for a single pixel at a single frequency, one or more processors may compute a complex quantity s[m], which is a sum of the terms for the respective path lengths:

s[m]=α1ejmφ1+α2ejmφ2+α3ejmφ3+ . . . +αKejmφK 

where α1, α2, . . . , αK are the amplitudes for the respective path lengths, φ1, φ2, . . . , φK are the phases for the respective path lengths, and m is the frequency at which these particular measurements were taken.

In some implementations of this invention, one or more processors perform computations (such as the formula immediately above) that take into account a set of K path-lengths for each respective pixel in the light sensor, which sets of K path-lengths may vary from pixel to pixel. In some other implementations, a single set of K path-lengths is used for all of the pixels in the light sensor.
In most scenarios, the measurements taken during the frequency sweep are noisy. One or more processors start with data from these noisy measurements, and calculate the phase values and amplitudes (or coefficients of reflection) for a set of path lengths: e.g., the phase and amplitude for the first path, the phase and amplitude for the second path, and so on. To do so, one or more processors execute an algorithm that computes a high resolution estimation of frequency components of a signal.
For example, the algorithm may employ any of the following spectral estimation techniques: (a) matrix pencils; (b) Prony's Method; (c) MUSIC (multiple signal characterization), including spectral MUSIC and root MUSIC; (d) subspace rotation invariance methods, including ESPRIT (estimation of signal parameters by rotational invariance techniques), (e) maximum likelihood methods, including IQML (iterative quadratic maximum likelihood), UML (unconditional maximum likelihood), and CML (conditional maximum likelihood); (f) any other parametric method of spectral estimation; or (g) any other method of line spectral estimation.
Furthermore, the one or more processors may use the computed phases to calculate the path lengths, and thus to calculate a depth map of a scene.
The description of the present invention in the Summary and Abstract sections hereof is just a summary. It is intended only to give a general introduction to some illustrative implementations of this invention. It does not describe all of the details of this invention. This invention may be implemented in many other ways. Likewise, the description of this invention in the Field of the Technology section is not limiting; instead it identifies, in a general, non-exclusive manner, a field of technology to which exemplary implementations of this invention generally relate.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1A is a conceptual diagram that shows an example of ToF depth measurement, with a single-bounce path.
FIG. 1B is a conceptual diagram that shows an example of ToF depth measurement, in which multi-path interference (MPI) occurs.
FIG. 2A is a conceptual diagram of an example in which MPI occurs in a scene with a specular reflector.
FIG. 2B is a conceptual diagram of an example in which MPI occurs in a scene with a translucent sheet in the foreground of the scene.
FIG. 2C is a conceptual diagram of an example in which MPI occurs in a scene with a corner.
FIG. 3 shows hardware elements used in a multi-frequency ToF camera.
FIG. 4 shows an example of a multi-frequency ToF camera taking depth measurements of a scene.
FIG. 5A is a conceptual diagram that shows complex quantities computed from measurements taken during a frequency sweep.
FIG. 5B is a conceptual diagram that shows decomposition of global components, even when there are more than two light path lengths.
FIG. 6A shows a first plot of intensity versus time.
FIG. 6B shows a second plot of intensity versus time.
FIG. 7 shows an algorithm used to compute a high resolution estimation of frequency components of a signal.



The above Figures show some illustrative implementations of this invention, or provide information that relates to those implementations. However, this invention may be implemented in many other ways. The above Figures do not show all of the details of this invention.
DETAILED DESCRIPTION
A conventional approach in time-of-flight (ToF) cameras uses amplitude-modulated continuous wave illumination of a scene. Homodyne detection records the phase of the reflected modulation signal and computes depths based on the resultant path length. Unfortunately, when multiple reflections are detected by a single pixel, as in the case of global light transport and multi-path interference, the calculated phase is incorrect.
In exemplary implementations of this invention, spectral estimation techniques are used to decompose such “mixed pixels” into direct and global components. By using frequency diversity, more accurate range maps can be reconstructed. Further, the technique generalizes to decompose the global components into arbitrarily higher order inter-reflections and scattering.
Conventional ToF ranging has a severe systematic error: it assumes that the light travels directly between the camera and the object, as in FIG. 1A. However, because the ToF camera illuminates the entire scene, multiple paths can contribute to a measurement. This multi-path interference (MPI) corrupts the depth measurement, which comprises a nonlinear combination of the components. This is possible even for simple two-object scenes, such as the scene shown in FIG. 1B. For the scene shown in FIG. 1B, a conventional ToF camera would measure direct and indirect signals simultaneously to produce a phase measurement that yields an incorrect depth with a converted distance somewhere between the two objects. In such and similar scenarios, the camera measures a nonlinear mixture of rays. Within the time-of-flight community, this challenge is referred to as “multi-path” or “multi-return” interference.
FIG. 1A is a conceptual diagram that shows an example of ToF depth measurement, with a single-bounce path. A light source 101 emits an amplitude modulated near-infrared (NIR) signal 103. The signal 103 comprises a continuous wave illumination strobed at a high frequency. This light signal 103 illuminates a scene 105, and is reflected back to the ToF camera. The reflected light 107 is captured by a lock-in sensor 109 in the ToF camera.
A conventional ToF camera is an active sensor that can provide range maps at framerates over 100 fps. This conventional ToF camera can measure both phase and amplitude: a phase shift represents the round-trip travel time of light, while the amplitude represents the strength of the modulated signal. A calculation (Eqn. 1 below) converts the phase measurement to a distance. In the single-path example shown in FIG. 1A, phase measurement would produce a correct measurement of depth, even for a conventional ToF camera.
FIG. 1B is a conceptual diagram that shows an example of ToF depth measurement, in which multi-path interference (MPI) occurs. In this example, MPI would cause a conventional ToF camera to produce an incorrect phase measurement and an incorrect measurement of depth. A light source 111 emits light that illuminates a scene 115 and reflects back to a lock-in sensor 119 in a ToF camera. The light travels in multiple paths, including a first path consisting of path segments 125, 127, 129, and a second path consisting of path segments 121, 123. The first path reflects off both surface 112 and surface 115; whereas the second path reflects off only surface 115. The reflected light in path segments 123 and 129 have different phases. A conventional ToF camera would integrate the light from those two paths, resulting in an incorrect phase measurement and incorrect calculated range.
FIGS. 2A, 2B, 2C show examples of ToF camera taking range measurements of these three common scene types. In FIGS. 2B and 2C, MPI would cause a conventional ToF camera to take incorrect phase measurements and thus incorrect range measurements.
However, in exemplary implementations of this invention, a multi-frequency ToF camera may be used to mitigate the effect of MPI. The multi-frequency ToF camera emits a sequence of different frequencies and computes depth maps at these different frequencies, and can accurately estimate depth even in the presence of MPI. For example, the multi-frequency camera may correctly determine depth even in the examples shown in FIGS. 2B and 2C, where MPI is present.
FIG. 2A is a conceptual diagram of an example in which MPI occurs in a scene with a specular reflector. In the example shown in FIG. 2A, light travels from a light source 201 to a scene and then back to a light sensor 207. The light travels in multiple paths, including a first path and a second path. The first path includes path segments 221 and 223, and reflects off only an opaque object 205 in the scene. The second path includes path segments 225, 227 and 229, and bounces off both the opaque object 205 and a specular reflector 203 in the scene.
FIG. 2B is a conceptual diagram of an example in which MPI occurs in a scene with a translucent sheet in the foreground of the scene. In the example shown in FIG. 2B, light travels from a light source 231 to a scene and then back to a light sensor 237. The light travels in multiple paths, including a first path and a second path. The first path includes path segments 241 and 243, and reflects off only a translucent sheet 233 in the foreground of a scene. The second path includes path segments 241, 245 and 247, and bounces off both an opaque object 235 and the translucent sheet 233.
FIG. 2C is a conceptual diagram of an example in which MPI occurs in a scene with a corner. In the example shown in FIG. 2C, light travels from a light source 251 to a scene and then back to a light sensor 257. The light travels in multiple paths, including a first path and a second path. The first path includes path segments 261 and 263, and reflects off only a first wall 253. The second path includes path segments 266, 267 and 268, and bounces off both a second wall 255 and the first wall 253.
In the examples shown in FIGS. 2A, 2B and 2C, at least some of the pixels each, respectively, receive light that travels on more than one path (i.e., at least some of the pixels are so-called “mixed pixels”). For example, a single pixel (such as 209, 239, or 259) can receive light that travels on multiple paths with different path lengths.
In exemplary implementations of this invention, a multi-frequency ToF camera sequentially emits light at different frequencies: first, it emits light at a first frequency, then it emits light at a second frequency, and so on. For example, the different frequencies in the sequence may be uniformly spaced (in frequency). A lock-in sensor in the multi-frequency ToF camera captures data at the different frequencies. This approach increases the dimensionality of the measurement, and can be used to mitigate the effects of MPI.
In exemplary implementations of this invention, multi-spectral estimation is to construct accurate depth maps, even in the present of MPI. The frequency is varied, in a temporal sequence of different frequencies. One of more processors perform an algorithm that can decompose global and direct light to mitigate MPI for accurate depth maps. Further, the algorithm can be used to separate individual global components (e.g., separate multiple components illuminating a single pixel).
In exemplary implementations of this invention, one or more processors perform algorithms: (a) to mitigate MPI by using spectral estimation; (b) to unmix component phases and compute corresponding amplitudes; (c) to perform per-pixel unmixing of a measured range image; (d) to acquire depth maps at different frequencies, (e) to disentangle phases and amplitudes; and (f) to consider only the direct component. These algorithms can be used to increase the accuracy of time of flight range maps, as compared to conventional ToF cameras.
A ToF camera measures depth by emitting an amplitude modulated intensity at frequency fm: A(t)=A0 cos(2πfmt). The reflected signal is shifted by a phase that depends upon the total propagation distance: s(t)=A cos(2πfmt+Φ). This signal is correlated with a reference, and the phase difference Φ is proportional to the depth d (with c as the speed of light),




  
    
      
        d
        =
        
          
            c
            ⁢
            
              
            
            ⁢
            Φ
          
          
            4
            ⁢
            π
            ⁢
            
              
            
            ⁢
            
              f
              m
            
          
        
      
    
    
      
        (
        1
        )
      
    
  




In exemplary implementations of this invention, the ToF camera illuminates the entire scene, and a pixel can record contributions from both direct and global light. (For example, in the scene shown in FIG. 4, a semi-transparent object is located at Plane 1 and an opaque object is located at Plane 2. The sensor will record a phasor that is a sum of each component, one from the semi-transparent object in Plane 1, and the other from the opaque object at Plane 2).
In the example shown in FIG. 3, MPI is present: although the addition is linear in the complex plane, the measured phase Φ, is a nonlinear combination of the component amplitudes and phases. Thus, the calculated depth (Eqn. 1) will yield an incorrect value d★, such that d1<d★<d2. In general, higher order bounces can contribute to d★ as well.
In exemplary implementations of this invention, a light sensor observes a sum of K-complex exponential functions at equidistant frequency spacings. (That is, the functions have different frequencies that are uniformly spaced in frequency.) Mathematically, this amounts to sampling or observing a continuous function based on the canonical variable xε,




  
    
      
        
          
            s
            ⁡
            
              (
              x
              )
            
          
          =
          
            
              ∑
              
                k
                =
                0
              
              
                K
                -
                1
              
            
            ⁢
            
              
                α
                k
              
              ⁢
              
                e
                
                  
                    +
                    j
                  
                  ⁢
                  
                    
                  
                  ⁢
                  
                    φ
                    k
                  
                  ⁢
                  x
                
              
            
          
        
        ,
        
          ∀
          
            x
            ∈
            R
          
        
      
    
    
      
        (
        2
        )
      
    
  




at instants xm=m, mε so that s[m]=s(x)|x=xm.

The frequencies at which the values of s(x) are observed are equidistant (in frequency) but not necessarily integer valued. For example, the frequencies may be, but are not necessarily, integer values of Hertz or radians/second.
Each sample taken at a single pixel for a particular frequency m may be described as:




  
    s
    ⁡
    
      [
      m
      ]
    
  
  =
  
    
      ∑
      
        k
        =
        0
      
      
        K
        -
        1
      
    
    ⁢
    
      
        α
        k
      
      ⁢
      
        e
        
          j
          ⁢
          
            
          
          ⁢
          
            φ
            k
          
          ⁢
          m
        
      
    
  




where αk and φk represent the amplitude and phase, respectively, for path length k.

In vector-matrix notation, s(N×1)=V(N×K)αK×1 with,




  
    [
    
      
        
          
            s
            ⁡
            
              (
              
                x
                1
              
              )
            
          
        
      
      
        
          ⋮
        
      
      
        
          
            s
            ⁡
            
              (
              
                x
                N
              
              )
            
          
        
      
    
    ]
  
  =
  
    
      [
      
        
          
            
              e
              
                
                  +
                  
                    jφ
                    1
                  
                
                ⁢
                
                  x
                  1
                
              
            
          
          
            ...
          
          
            
              e
              
                
                  +
                  j
                
                ⁢
                
                  
                
                ⁢
                
                  φ
                  K
                
                ⁢
                
                  x
                  1
                
              
            
          
        
        
          
            ⋮
          
          
            ⋱
          
          
            ⋮
          
        
        
          
            
              e
              
                
                  +
                  
                    jφ
                    1
                  
                
                ⁢
                
                  x
                  N
                
              
            
          
          
            ...
          
          
            
              e
              
                
                  +
                  j
                
                ⁢
                
                  
                
                ⁢
                
                  φ
                  K
                
                ⁢
                
                  x
                  N
                
              
            
          
        
      
      ]
    
    ⁡
    
      [
      
        
          
            
              α
              1
            
          
        
        
          
            ⋮
          
        
        
          
            
              α
              K
            
          
        
      
      ]
    
  




where x1, x2, . . . , xm are frequencies, α1, α2, . . . , αm are amplitudes for respective path lengths, φ1, φ2, . . . , φm are phases for respective path lengths, and V is the Vandermonde matrix which encodes the phase information.

In exemplary implementations of this invention, given measurements s[m], in mε, one or more processors estimate the 2K parameters {αk,φk}k=0K−1,

α=[α0,α1, . . . αK−1]T and φ=[φ0,φ1, . . . ,φK−1]T 

Noiseless case:
These parameters (α, φ) can, in the noiseless case, be accurately estimated as follows:
Let p be a sequence in l2 or, ∥p∥l22=Σk|p|<∞ and let * denote the discrete convolution operator such that (p*q) [m]=Σk p[k]q[m−k]. Define the Z-transform of the sequence {p}m by the polynomial:

∀zε, {circumflex over (P)}(z)Σm=0Kpmz−m=Πk=0K−1(1−μkz−1)

where μk=ejφk.

Observe that:




  
    
      (
      
        p
        *
        s
      
      )
    
    ⁡
    
      [
      m
      ]
    
  
  =
  
    
      0
      ⇔
      
        
          
            ∑
            
              l
              =
              0
            
            
              l
              =
              K
            
          
          ⁢
          
            (
            
              
                p
                ⁡
                
                  [
                  l
                  ]
                
              
              ⁢
              
                e
                
                  
                    -
                    j
                  
                  ⁢
                  
                    
                  
                  ⁢
                  
                    φ
                    k
                  
                  ⁢
                  l
                
              
            
            )
          
        
        
          }
          
            
              P
              ^
            
            ⁡
            
              (
              
                μ
                k
              
              )
            
          
        
      
    
    =
    0
  




This is because




  
    
      (
      
        
          p
          *
        
        ⁢
        s
      
      )
    
    m
  
  =
  
    
      ∑
      
        k
        =
        0
      
      
        K
        -
        1
      
    
    ⁢
    
      
        ∑
        
          l
          =
          0
        
        
          l
          =
          K
        
      
      ⁢
      
        
          (
          
            
              p
              ⁡
              
                [
                l
                ]
              
            
            ⁢
            
              e
              
                
                  -
                  
                    jφ
                    k
                  
                
                ⁢
                l
              
            
          
          )
        
        ⁢
        
          
            (
            
              
                α
                k
              
              ⁢
              
                e
                
                  
                    jφ
                    k
                  
                  ⁢
                  m
                
              
            
            )
          
          .
        
      
    
  




Consequently, the filter p encodes the phases φ in roots of the polynomial {circumflex over (P)}(z). Once the μk's have been identified, one or more processors compute α which is done by computing the pseudo-inverse of V by α=V†s. From the implementation perspective, the filter p can be easily computed by considering the null-space of the Toeplitz matrix constructed using the measurements s. The representation s(x)=Σk=0K−1αke+jφkx is an exact Fourier series decomposition when φk=kφ0=2πk, in which case Parseval's equality applies: ∥s∥L2[−π,π]2=∥α∥l22. However, the family of non-harmonic functions {ejφkx}k is neither orthogonal nor a basis. It is desirable that {ejφkx}k forms a Riesz basis.
Noisy Case:
While the above method for estimating {α, φ} is exact for the noiseless setting (whenever φj≠φk, ∀j≠k), one of the bottlenecks in the noisy setting is that the inverses of V and V† are highly unstable because of ill-conditioned Vandermonde matrices.
One way of circumventing this problem is to use the composite mapping property (CMP). CMP employs model priors and signal properties to force a structure onto the measurements. In implementing p*s=0Sp=0, a Toeplitz (or Hankel) matrix linked with s can be computed. Indeed, in case of oversampling, the matrix is rank-constrained with the maximum rank not exceeding K. Hence, whenever the number of measurements exceed the number K, the matrix S can be denoised by constraining its rank to K. It is desirable to force p*s=0Sp=0. Whenever S is not Toeplitz, the Toeplitz structure can be forced by averaging the diagonals. The two operations form a closed-mapping, hence the scheme converges.
In some implementations of this invention, a Matrix Pencil method is used introduced to recover K-exponentials buried in additive white Gaussian noise (AWGN). For example, a Matrix Pencil method may be employed as follows:
A light sensor captures noisy measurements:




  
    y
    ⁡
    
      [
      m
      ]
    
  
  =
  
    
      
        
          s
          ⁡
          
            [
            m
            ]
          
        
        +
        
          η
          ⁡
          
            [
            m
            ]
          
        
      
      ⇔
      y
    
    =
    
      
        Va
        
          }
          s
        
      
      +
      n
    
  




where S=Vα is the noise free signal and n=[η0, . . . , ηN−1]TεN is the vector of Gaussian i.i.d. (independent and identically distributed) samples. Label Lε[K, N−K] as the Matrix-Pencil parameter and define the vector:

{ym}m=0m=L=[y[m],y[m+1], . . . ,y[N−L+m−1]]T.

From the vector, construct matrices:





  
    
      Y
      0
      
        2
        ⁢
        
          (
          
            N
            -
            L
          
          )
        
        ×
        
          (
          
            L
            +
            1
          
          )
        
      
    
    =
    
      [
      
        
          
            
              y
              0
            
          
          
            
              y
              1
            
          
          
            ...
          
          
            
              y
              
                L
                -
                1
              
            
          
        
        
          
            
              y
              L
              *
            
          
          
            
              y
              
                L
                -
                1
              
              *
            
          
          
            ...
          
          
            
              y
              0
              *
            
          
        
      
      ]
    
  
  ,
  
    

  
  ⁢
  
    [
    
      
        Y
        1
        
          2
          ⁢
          
            (
            
              N
              -
              L
            
            )
          
          ×
          
            (
            
              L
              +
              1
            
            )
          
        
      
      =
      
        
          [
          
            
              
                
                  y
                  1
                
              
              
                
                  y
                  1
                
              
              
                ...
              
              
                
                  y
                  L
                
              
            
            
              
                
                  y
                  
                    L
                    -
                    1
                  
                  *
                
              
              
                
                  y
                  
                    L
                    -
                    2
                  
                  *
                
              
              
                ...
              
              
                
                  y
                  0
                  *
                
              
            
          
          ]
        
        .
      
    
  




For a rectangular matrix Y, define the best-K term truncation operator (•) as,




  
    
      
                K
      
      ⁢
      
        {
        Y
        }
      
    
    =
    
      
        
          ∑
          
            k
            =
            1
          
          K
        
        ⁢
        
          
            λ
            k
          
          ⁢
          
            u
            k
          
          ⁢
          
            v
            k
            H
          
        
      
      =
      
        
          U
          ⁢
          
            ∑
            
              V
              H
            
          
        
        ⁢
        
          ❘
          K
        
      
    
  
  ,
  
    

  
  ⁢
  
    K
    ≤
    L
  
  ,




which synthesizes Y with K-dominant eigen values Σ=diag{λ1, λ2, . . . , λK} and where u and v are the corresponding left and right singular vectors (and U, V matrices), respectively. Also define the pseudo-inverse by Y†=VΣ−1UH.

A Matrix-Pencil method can then retrieve phase parameters φ by solving a generalized eigen value problem for the matrix {tilde over (Y)},

{tilde over (Y)}=(K{Y1})†K{Y0}

In Matlab®, the K-eigen values can be obtained by eig({tilde over (Y)}).
The following is a detailed description of an example of this invention. In this example, phases and amplitudes are recovered from the measurements, and the Composite Mapping Property (CMP) is incorporated in the estimation algorithm.
In this example, start with measurements s(xk)|k=0N, N>2ηK+1 where K is the number of return paths/interfering paths to be estimated, η is the oversampling factor with minimum value ηmin=1, and N is the number of frequencies in the temporal sequence of frequencies.
Since the frequencies xm's are equidistant, xm=m is used interchangeably.
Given discrete measurements s(ξ)|ξ=mε of a K-component parametric function,




  
    ∀
    
      ξ
      ∈
          
  
  ,
  
    

  
  ⁢
  
    
      s
      ⁡
      
        (
        ξ
        )
      
    
    =
    
      
        
          
            ∑
            
              k
              =
              0
            
            
              K
              -
              1
            
          
          ⁢
          
            
              α
              k
            
            ⁢
            
              e
              
                
                  jφ
                  k
                
                ⁢
                ξ
              
            
          
        
        ⁢
        
          ↔
          sampled
        
        ⁢
        
          s
          ⁡
          
            [
            m
            ]
          
        
      
      =
      
        
          ∑
          
            k
            =
            0
          
          
            K
            -
            1
          
        
        ⁢
        
          
            α
            k
          
          ⁢
          
            e
            
              
                jφ
                k
              
              ⁢
              m
            
          
        
      
    
  
  ,
  
    

  
  ⁢
  
    ∀
    
      m
      ∈
          
  




with parameters {αk, φk}k=0K−1, estimate α=[α0, α1, . . . , αK−1]T and φ=[φ0, φ1, . . . , φK−1]T.

Each measurement accounts for one ordered pair {αk, φk} so N≧2K+1 samples of s(ξ) are used.
Consider the polynomial




  
    ∀
    
      z
      ∈
          
  
  ,
  
    

  
  ⁢
  
    
      P
      ⁡
      
        (
        z
        )
      
    
    =
    
      
        
          ∑
          
            m
            =
            0
          
          K
        
        ⁢
        
          
            p
            m
          
          ⁢
          
            z
            
              -
              m
            
          
        
      
      =
      
        
          ∏
          
            k
            =
            0
          
          
            K
            -
            1
          
        
        ⁢
        
          
        
        ⁢
        
          (
          
            1
            -
            
              
                μ
                k
              
              ⁢
              
                z
                
                  -
                  1
                
              
            
          
          )
        
      
    
  




where μk=ejφk.

Note that:




  
    
      
        
          
            (
            
              
                p
                *
              
              ⁢
              s
            
            )
          
          ⁡
          
            [
            m
            ]
          
        
        =
        
        ⁢
        
          
            ∑
            
              l
              =
              0
            
            
              l
              =
              K
            
          
          ⁢
          
            
              p
              l
            
            ⁢
            
              s
              ⁡
              
                (
                
                  m
                  -
                  l
                
                )
              
            
          
        
      
    
  
  
    
      
        =
        
        ⁢
        
          
            ∑
            
              l
              =
              0
            
            
              l
              =
              K
            
          
          ⁢
          
            
              p
              l
            
            ⁢
            
              s
              ⁡
              
                (
                
                  m
                  -
                  l
                
                )
              
            
          
        
      
    
  
  
    
      
        =
        
        ⁢
        
          
            ∑
            
              l
              =
              0
            
            
              l
              =
              K
            
          
          ⁢
          
            
              p
              l
            
            ⁢
            
              
                ∑
                
                  k
                  =
                  0
                
                
                  K
                  -
                  1
                
              
              ⁢
              
                
                  α
                  k
                
                ⁢
                
                  e
                  
                    
                      jφ
                      k
                    
                    ⁡
                    
                      (
                      
                        m
                        -
                        l
                      
                      )
                    
                  
                
              
            
          
        
      
    
  
  
    
      
        =
        
        ⁢
        
          
            
              ∑
              
                k
                =
                0
              
              
                K
                -
                1
              
            
            ⁢
            
              
                
                  (
                  
                    
                      ∑
                      
                        l
                        =
                        0
                      
                      
                        l
                        =
                        K
                      
                    
                    ⁢
                    
                      
                        p
                        l
                      
                      ⁢
                      
                        μ
                        k
                        
                          -
                          l
                        
                      
                    
                  
                  )
                
                
                  }
                  
                    
                      ⇒
                      
                        P
                        ⁡
                        
                          (
                          
                            μ
                            k
                          
                          )
                        
                      
                    
                    =
                    0
                  
                
              
              ⁢
              
                α
                k
              
              ⁢
              
                e
                
                  
                    jφ
                    k
                  
                  ⁢
                  m
                
              
            
          
          =
          0.
        
      
    
  




Therefore zeros of the polynomial P(z) encode the phase locations. What remains is the Vandermonde matrix relation:




  
    
      [
      
        
          
            
              s
              ⁡
              
                [
                0
                ]
              
            
          
        
        
          
            ⋮
          
        
        
          
            
              s
              ⁡
              
                [
                K
                ]
              
            
          
        
      
      ]
    
    =
    
      
        
          
            [
            
              
                
                  1
                
                
                  1
                
                
                  ...
                
                
                  1
                
              
              
                
                  
                    μ
                    0
                  
                
                
                  
                    μ
                    1
                  
                
                
                  ...
                
                
                  
                    μ
                    
                      K
                      -
                      1
                    
                  
                
              
              
                
                  ⋮
                
                
                  ⋮
                
                
                  ...
                
                
                  
                    
                  
                
              
              
                
                  
                    μ
                    0
                    
                      K
                      -
                      1
                    
                  
                
                
                  
                    μ
                    1
                    
                      K
                      -
                      1
                    
                  
                
                
                  ...
                
                
                  
                    μ
                    
                      K
                      -
                      1
                    
                    
                      K
                      -
                      1
                    
                  
                
              
            
            ]
          
          ⁡
          
            [
            
              
                
                  
                    α
                    ⁡
                    
                      [
                      0
                      ]
                    
                  
                
              
              
                
                  ⋮
                
              
              
                
                  
                    α
                    ⁡
                    
                      [
                      K
                      ]
                    
                  
                
              
            
            ]
          
        
        ⇔
        s
      
      =
      Va
    
  
  ,




where V is the classic Vandermonde matrix.

Given V of form:




  
    
      V
      n
    
    =
    
      [
      
        
          
            
              v
              1
            
          
          
            
              v
              2
            
          
          
            ...
          
          
            
              v
              n
            
          
        
        
          
            
              v
              1
              2
            
          
          
            
              v
              2
              2
            
          
          
            ...
          
          
            
              v
              n
              2
            
          
        
        
          
            ⋮
          
          
            ⋮
          
          
            ⋱
          
          
            ⋮
          
        
        
          
            
              v
              1
              n
            
          
          
            
              v
              2
              n
            
          
          
            ...
          
          
            
              v
              n
              n
            
          
        
      
      ]
    
  
  ,




its element-wise inverse, Vn−1=[bi,j] is defined as:





  
    b
    ij
  
  =
  
    
      
        
          ∑
          
            
              0
              ≤
              
                m
                0
              
              <
              ...
              <
              
                m
                
                  n
                  -
                  i
                
              
              ≤
              n
            
            
              
                m
                0
              
              ,
              ...
              ⁢
              
                
              
              ,
              
                
                  m
                  
                    n
                    -
                    i
                  
                
                ≠
                j
              
            
          
          
            
          
        
        ⁢
        
          
            
              (
              
                -
                1
              
              )
            
            
              i
              -
              1
            
          
          ⁢
          
            v
            
              m
              0
            
          
          ⁢
          
            
          
          ⁢
          ...
          ⁢
          
            
          
          ⁢
          
            v
            
              m
              
                n
                -
                i
              
            
          
        
      
      
        
          x
          i
        
        ⁢
        
          
            ∏
            
              
                0
                ≤
                m
                ≤
                n
              
              
                m
                ≠
                j
              
            
            
              
            
          
          ⁢
          
            
          
          ⁢
          
            (
            
              
                v
                m
              
              -
              
                x
                j
              
            
            )
          
        
      
    
    .
  




The Vandermonde inverses can be highly unstable. In presence of noise vm can be arbitrarily close to vj, causing the inverses to be blow up. In this context, the CPM technique can be helpful.
A goal is to solve for




  
    
      
        (
        
          
            p
            *
          
          ⁢
          s
        
        )
      
      m
    
    =
    
      
        
          ∑
          
            k
            =
            0
          
          
            K
            -
            1
          
        
        ⁢
        
          
            p
            ⁡
            
              [
              k
              ]
            
          
          ⁢
          
            s
            ⁡
            
              [
              
                m
                -
                k
              
              ]
            
          
        
      
      =
      0
    
  
  ,
  
    
      
        
        m
        
      
      <
      M
    
    ∈
      




The resultant p encodes the phase information. An alternative Toeplitz matrix formulation can be used, which is equivalent to the convolution:




  
    
      (
      
        
          p
          *
        
        ⁢
        s
      
      )
    
    m
  
  =
  
    
      
        
          ∑
          
            k
            =
            0
          
          
            K
            -
            1
          
        
        ⁢
        
          
            p
            ⁡
            
              [
              k
              ]
            
          
          ⁢
          
            s
            ⁡
            
              [
              
                m
                -
                k
              
              ]
            
          
        
      
      ⇔
      Sp
    
    =
    
      
        
          [
          
            
              
                
                  s
                  ⁡
                  
                    [
                    
                      
                        -
                        M
                      
                      +
                      K
                    
                    ]
                  
                
              
              
                ...
              
              
                
                  s
                  ⁡
                  
                    [
                    
                      -
                      M
                    
                    ]
                  
                
              
            
            
              
                ⋮
              
              
                ⋱
              
              
                ⋮
              
            
            
              
                
                  s
                  ⁡
                  
                    [
                    M
                    ]
                  
                
              
              
                ...
              
              
                
                  s
                  ⁡
                  
                    [
                    
                      M
                      -
                      K
                    
                    ]
                  
                
              
            
          
          ]
        
        ⁡
        
          [
          
            
              
                
                  p
                  ⁡
                  
                    [
                    0
                    ]
                  
                
              
            
            
              
                
                  p
                  ⁡
                  
                    [
                    K
                    ]
                  
                
              
            
          
          ]
        
      
      .
    
  




Choose K<L<M and let

={Mε(N−L)×(L+1)}

be a set of all complex matrices of size (N−L)×(L+1).

Let  and K be subsets of  where  is a Toeplitz subset  and K is a rank-K subset of . Identify projections:




    =
  
    
      1
      
        
        
          diag
          ⁡
          
            (
            S
            )
          
        
        
      
    
    ⁢
    
      
        ∑
        k
        
          
        
      
      ⁢
      
        s
        
          k
          ,
          k
        
      
    
  




Diagonal averaging of Toeplitz Matrix S, and





    =
  
    
      
        ∑
        
          k
          =
          1
        
        K
      
      ⁢
      
        
          λ
          k
        
        ⁢
        
          u
          k
        
        ⁢
        
          v
          k
          H
        
      
    
    =
    
      
        U
        ⁢
        
          ∑
          
            V
            H
          
        
      
      ⁢
      
        ❘
        K
      
    
  




rank—K approximation of S.

The alternating projections are carried out as




  
    S
    
      (
      m
      )
    
  
  →
  
    
      
        S
        K
        
          (
          m
          )
        
      
      =
      
                ⁢
        
          {
          
            S
            
              (
              k
              )
            
          
          }
        
      
    
    →
    
      
                ⁢
        
          {
          
            S
            K
            
              (
              m
              )
            
          
          }
        
      
      →
      
        S
        
          (
          
            m
            +
            1
          
          )
        
      
    
  




where, for the initialization we use m=0, S(0)=S.

The denoised, almost Toeplitz matrix with rank K is identified as

S★=S(20-50)εTK∩T.

For example, 20 to 50 iterations may be used to find S★.
For the noisy case, to benefit from the CMP, oversampling is desirable. While η=1 gives perfect results, it does so only for the noiseless case. For the case of noise, η>2 is preferable.
This invention is not limited to the above example, which incorporates CMP in the estimation. This invention may be implemented in many other ways.
FIG. 3 shows hardware elements used in a multi-frequency ToF camera, in an illustrative implementation of this invention. In the example shown in FIG. 3: An integrated circuit 301 generates a signal that (a) is sent to a light source and driver 305 to control light emitted by the light source, and (b) is also sent as a reference signal to a lock-in sensor 303. For example, the IC 301 may comprise a field programmable gate array or a microcontroller. The light source generates modulated light. For example, the modulated light may comprise a continuous wave light signal. The light illuminates a scene and is reflected back to the camera (e.g., in multiple paths, some direct and some indirect). Light reflected from the scene is focused by a lens 309 onto the lock-in sensor 303. An analog-to-digital converter (ADC) 307 converts analog sensor readings from the lock-in sensor 303 into a digital signal and sends the digital signal to the IC 301. The IC 301 communicates with a computer 311. The computer 311 performs computations, including analyzing data and calculating depth maps. The computer 311 accepts input and displays output in humanly perceptible format via one or more I/O (input/output) devices 313, including a monitor screen, a mouse and a keyboard.
In exemplary implementations of this invention, the frequencies in the temporal sequence are frequencies of a continuous wave function emitted by a light source, and are not the frequency of a strobe. Indeed, in illustrative implementations of this invention, the light is not strobed. Alternatively, in some implementations, the light can be strobed.
In some embodiments of this invention, a light source with a tunable frequency (e.g., a frequency tunable laser) is used to emit the temporal sequence of frequencies. Alternatively, a set of light sources, each with a different fixed frequency, can be used to emit the temporal sequence of frequencies. For example, the light source and driver 305 in FIG. 3 may include either (a) a set of multiple light sources, each respective light source in the set having a fixed frequency, or (b) a frequency tunable light source.
FIG. 4 shows an example of a multi-frequency ToF camera taking depth measurements of a scene. In the example shown in FIG. 4, a scene comprises two planes: Plane 1 and Plane 2. A semi-transparent object 401 is located at Plane 1; an opaque object 403 is located at Plane 2. The ToF camera 400 records light from both the semi-transparent object 401 in the foreground and the opaque object in the background. Some of the light reflects directly back from the semi-transparent object 401; and some of the light travels through the semi-transparent object, to the opaque object, and then back through the semi-transparent object to the ToF camera. The multi-frequency ToF camera 400 includes optics (including a lens) 405, a lock-in sensor 407, and a light source. One or more processors are used to control the light source, to send a reference signal to the lock-in sensor, to process sensor data and to calculate depth maps. For example, at least some of these processors may be included in computer 409.
In the example shown in FIG. 4: A multi-frequency ToF camera 400 takes measurements at multiple, equidistant frequencies. For example, the camera may take measurements at a set of ten frequencies f=10 MHz, 20 MHz, 30 MHz, . . . , 100 MHz. At each frequency, a lock-in sensor within the ToF camera captures 4 frames. From these 4 frames, one or more processors compute, for each pixel in the lock-in sensor, a single complex number which can be expressed in phasor form. Thus, the processors compute one such complex quantity per pixel per frequency. The one or more processors then stack all of such complex quantities (one such complex number per pixel per frequency) and solve for the depth and intensity. Thus, the number of such complex quantities per pixel that are computed depends on the number of frequencies in the sweep.
FIG. 5A is a conceptual diagram that shows complex quantities computed from measurements taken during a frequency sweep. A multi-frequency camera emits a temporal sequence of m different frequencies: x1, x2, . . . , xm. First, it emits frequency x1, then it emits frequency x2, and so on. The frequencies are evenly spaced (in frequency): e.g., 10 MHz, 20 MHz and so on. For each respective frequency in the sequence, a lock-in sensor captures multiple frames (e.g., four frames). From these multiple frames, one or more processors compute a single complex number per pixel for that respective frequency, which complex number can be expressed as a phasor.
In the example shown in FIG. 5A, a set of m complex numbers (s[1], s[2], . . . , s[m]) are indicative of measurements taken by a single pixel during a frequency sweep, for a scene with two different light path lengths. In the example shown in FIG. 5, each of the respective complex quantities (s[1], s[2], . . . , s[m]) is indicative of four sensor measurements taken at a single pixel at a single frequency. For example, complex quantity s[1] is indicative of four measurements of light intensity taken at a single pixel for frequency X1, and complex quantity s[2] is indicative of four measurements of light intensity taken at the same pixel for frequency x2. Further, in the example shown in FIG. 5A, each of the respective complex quantities (s[1], s[2], . . . , s[m]) is the sum of two components, the first component being contributed by light that travels the first path length, and the second component being contributed by the light that travels the second path length. For example, complex quantity s[1]=α1ejx1φ1+α2ejx1φ2, where α1 and φ1 are the amplitude and phase for the first path length, and α2 and φ2 are the amplitude and phase for the second path length. (If the first and second paths are single-bounce paths—where light travels directly from the camera to a surface, and then reflects directly back to the camera—then the first and second paths correspond to different scene depths. If the paths are not single-bounce paths, then different path lengths may, but do not necessarily, correspond to different scene depths.)
FIG. 5B is a conceptual diagram that shows a decomposition of global components, even where there are more than two path lengths. In the example shown in FIG. 5B, there are K path lengths. Four measurements are taken at frequency m, and a complex quantity s[m] is calculated. The complex quantity s[m] is a sum of the terms for the respective path lengths:

s[m]=α1ejmφ1+α2ejmφ2+α3ejmφ3+ . . . +αKejmφK 

where α1, α2, . . . , αK are the amplitudes for the respective path lengths, φ1, φ2, . . . , φK are the phases for the respective path lengths, and m is the frequency at which these particular measurements were taken.

FIG. 6A shows a first plot of intensity versus time. In the example shown in FIG. 6A, the light reflects directly back from a scene in a single bounce, arriving at time 601.
FIG. 6B shows a second plot of intensity versus time. In the example shown in FIG. 6B, some of the light reflects directly back from a scene in a single bounce, arriving at the lock-in sensor at time 611, and some of the light bounces twice, before arriving at the lock-in sensor at time 621.
In some implementations of this invention, starting from noisy measurements, the K-phase values are obtained using the algorithm described in FIG. 7. This algorithm computes a high resolution estimation of frequency components of a signal. In the example shown in FIG. 7, the algorithm comprises the following steps:
Acquire N ToF measurements {yn}n=0N−1 (step 701).
Set Pencil Parameter L>N (step 703).
For some p prepare data vector yp=[yp yp+1 . . . yN−L−1+p]T (step 705).
From yp, form data matrix Yε(N−L)×(L+1) such that Y=[y0 y1 y2 . . . yL] (step 707).
Omit first and last rows of Yε(N−L)×(L+1) to obtain Y and Y, respectively (step 709).
Perform singular value decomposition to obtain best K rank approximation Y(K), Y(K) where Y→Y(K)=UKΣKVK (step 711).
Using Matrix Psuedo-inverse, compute {tilde over (Y)}=Y(K)†Y(K) (step 713).
Compute Eigen Decomposition {tilde over (Y)}=EΛE−1, where Λ is the diagonal matrix of eigen values. (step 715).
Use the phase of K complex numbers in Λ to compute K depth values for each pixel. (step 717).
Form a Vandermonde matrix V with first row as diagonal entries of Λ (step 719).
Using matrix V, estimate K amplitudes at K depths by using Λ†y0 (step 721).
In steps 713 and 721 above, “†” means pseudo-inverse. Likewise, in FIG. 7, items 713 and 721, “+” as a superscript to a matrix means pseudo-inverse.
Here is a non-limiting example of software code that can be used in an illustrative implementation of this invention. In this example, the code implements a Matrix-Pencil routine for spectral estimation. The input to the code is the ToF data and K (the number of expected bounces). The output is an amplitude/depth image for each of the K bounces.












% Matrix Pencil Method <> Generalized Eigen System


% Ayush Bhandari | ayush@MIT.edu


%--- Uses Forward-Backward Equations


%--- Solves Generalized Eig. Value Problem to seek solutions in Null


Space


% data - Data Samples


% time - Time instants where data is recorded


% L  - Window Paramater >= 2K


% K - No of Phasors


% wk - estimated phases


% xk - estimated amplitudes


function [wk,xk,datarec]=PencilPhase(data, time ,L,K)


Van = @(f,t) meshgrid(f,t).{circumflex over ( )}(meshgrid(t,f)′);


% Force Solutions to be in Null Space


%data = hilbert(data);


N=length(data);


% Matrix with window length L


Y0=zeros(N−L,L);


Y1=zeros(N−L,L);


for i=0:N−L−l









Y0(i+1,:)=data((1:L)+i);



Y1(i+1,:)=data((2:L+1)+i);







end


Y0FwdBwd=[Y0; conj(Y1(:,end:−1:1))];


Y1FwdBwd=[Y1; conj(Y0(:,end:−1:1))];


Y0=Y0FwdBwd;


Y1=Y1FwdBwd;


% Best K - rank approximation


[U,S,V]=svd(Y1);


S1=S(1:K,1:K);


U1=U(:,1:K);


V1=V(:,1:K);


[U,S,V]=svd(Y0);


S0=S(1:K,1:K);


U0=U(:,1:K);


V0=V(:,1:K);


% K-term truncation


Y0=U0*S0*V0′;


% Solve for Eigen Values


% Pseudo-Inverse for K-term Truncation


P = V1*inv(S1)*U1′;


% Gen. Eig. Value Problem


z=eig(P*Y0);


% Put Back Phases


[Val,Idx]=sort(abs(z));


wk=sort(mod((−angle(z(Idx(end−K+1:end)))),2*pi))./mean(diff(time));


% Solve Least-Squares Inverse for Vandermonde


xk = Van(exp(1i*wk),time)\data;


%Reconstruct Data


datarec = Van(exp(1i*wk),time)*xk;


end









In exemplary implementations, the light intensity contributed each different path length can be determined by estimating weights and harmonics of a non-harmonic Fourier sum. This is a non-linear problem. However, in the context of time-of-flight depth measurements, the problem can be solved by an algorithm that calculates a high resolution estimation of frequency components of a signal.
In exemplary implementations of this invention, one or more processors perform an algorithm to calculate a high resolution estimation of frequency components of a signal. For example, the algorithm may employ any of the following spectral estimation techniques: (a) matrix pencils; (b) Prony's Method; (c) MUSIC (multiple signal characterization), including spectral MUSIC and root MUSIC; (d) subspace rotation invariance methods, including ESPRIT (estimation of signal parameters by rotational invariance techniques), (e) maximum likelihood methods, including IQML (iterative quadratic maximum likelihood), UML (unconditional maximum likelihood), and CML (conditional maximum likelihood); (f) any other parametric method of spectral estimation; or (g) any other method of line spectral estimation.
In illustrative implementations of this invention, solving for unknown path-lengths of multiple paths has practical advantages. For example, indirect or higher-order paths can be discarded, and the direct, first-order component can be used to generate accurate range maps. Or, for example, indirect paths can be exploited, including in the following applications: (a) looking through a diffuser; (b) imaging of tissue; or (c) imaging in a scattering medium.
In exemplary implementations of this invention, one or more electronic processors are specially adapted: (1) to control the operation of hardware components of a multi-frequency ToF camera, including any light sensor (including any lock-in sensor) any light source, and any driver; (2) to cause the ToF camera to perform a frequency sweep, in which the ToF camera emits a temporal sequence of different frequencies; (3) to compute a phasor from a set of multiple sensor measurements at a given frequency; (4) to perform spectral analysis computations; (5) to compute a high resolution estimation of frequency components of a signal; (6) to perform an algorithm to estimate phase and amplitude for each respective light path length of light incident on a pixel of a light sensor; (7) to receive signals indicative of human input, (8) to output signals for controlling transducers for outputting information in human perceivable format, and (9) to process data, perform computations, and control the read/write of data to and from memory devices. The one or more processors may be located in any position or position within or outside of the ToF camera. For example: (a) at least some of the one or more processors may be embedded within or housed together with other components of the ToF camera, such as a lock-in sensor; (b) at least some of the one or more processors may be located in an integrated circuit (e.g., a microcontroller or field-programmable gate array) that controls the light source and sends a reference signal to a lock-in sensor; and (c) at least some of the one or more processors may be located in a computer remote from other components of the ToF camera. The one or more processors may be connected to each other or to other components in the ToF camera either: (a) wirelessly, (b) by wired connection, or (c) by a combination of wired and wireless connections. For example, one or more electronic processors may be housed in a computer (e.g., 311, 409). Or, for example, one or more electronic processors may be housed in an integrated circuit (e.g., 301).
DEFINITIONS
Here are a few definitions and clarifications. As used herein:
The terms “a” and “an”, when modifying a noun, do not imply that only one of the noun exists.
The term “comprise” (and grammatical variations thereof) shall be construed broadly, as if followed by “without limitation”. If A comprises B, then A includes B and may include other things.
“Defined Term” means a term that is set forth in quotation marks in this Definitions section.
The term “comprise” (and grammatical variations thereof) shall be construed broadly, as if followed by “without limitation”. If A comprises B, then A includes B and may include other things.
As used herein, a “direct” component of light means a component of light that travels directly from a light source to a scene point, and then directly from the scene point to a light sensor. A direct component of light undergoes only one reflection as it travels from the light source to the light sensor. That one reflection occurs when the light reflects off of the scene point.
The term “e.g.” means for example.
The acronym ESPRIT means the Estimation of Signal Parameters by Rotational Invariance Techniques method of spectral estimation.
The fact that an “example” or multiple examples of something are given does not imply that they are the only instances of that thing. An example (or a group of examples) is merely a non-exhaustive and non-limiting illustration.
Unless the context clearly indicates otherwise: (1) a phrase that includes “a first” thing and “a second” thing does not imply an order of the two things (or that there are only two of the things); and (2) such a phrase is simply a way of identifying the two things, respectively, so that they each can be referred to later with specificity (e.g., by referring to “the first” thing and “the second” thing later). For example, unless the context clearly indicates otherwise, if an equation has a first term and a second term, then the equation may (or may not) have more than two terms, and the first term may occur before or after the second term in the equation. A phrase that includes “a third” thing, a “fourth” thing and so on shall be construed in like manner.
The term “for instance” means for example.
As used herein, a “global” component of light means a component of light that travels directly from a light source to a first scene point, and then travels to one or more other scene points, before traveling to a light sensor.
The terms “horizontal” and “vertical” shall be construed broadly. For example, “horizontal” and “vertical” may refer to two arbitrarily chosen coordinate axes in a Euclidian two dimensional space, regardless of whether the “vertical” axis is aligned with the orientation of the local gravitational field. For example, a “vertical” axis may oriented along a local surface normal of a physical object, regardless of the orientation of the local gravitational field.
The term “include” (and grammatical variations thereof) shall be construed broadly, as if followed by “without limitation”.
Intensity” means any measure of or related to intensity, energy or power. For example, the “intensity” of light includes any of the following measures: irradiance, spectral irradiance, radiant energy, radiant flux, spectral power, radiant intensity, spectral intensity, radiance, spectral radiance, radiant exitance, radiant emittance, spectral radiant exitance, spectral radiant emittance, radiosity, radiant exposure and radiant energy density.
The term “light” means electromagnetic radiation of any frequency. For example, “light” includes, among other things, visible light and infrared light. Likewise, any term that directly or indirectly relates to light (e.g., “imaging”) shall be construed broadly as applying to electromagnetic radiation of any frequency.
A “multiple-bounce path” means a path traveled by a global component of light.
To “multiply” includes to multiply by an inverse. Thus, to “multiply” includes to divide.
The acronym “MUSIC” means the MUultiple SIgnal Characterization method of spectral estimation.
The term “or” is inclusive, not exclusive. For example A or B is true if A is true, or B is true, or both A or B are true. Also, for example, a calculation of A or B means a calculation of A, or a calculation of B, or a calculation of A and B.
A parenthesis is simply to make text easier to read, by indicating a grouping of words. A parenthesis does not mean that the parenthetical material is optional or can be ignored.
The term “path length” means the total distance traveled by light in a path that starts at a light source and ends at a light sensor and that includes one or more reflections between the start and end of the path.
To compute a term that “satisfies” an equation: (a) does not require that calculations involve terms, variables or operations that are in the equation itself, as long as the term itself (subject to error, as described in part (b) of this sentence) is computed; and (b) includes computing a solution that differs from a correct solution by an error amount, which error amount arises from one or more of (i) rounding, (ii) other computational imprecision, including error due to modeling a continuous signal by a discrete signal or due to using an insufficiently small step size in calculations, and (iii) signal noise or other physical limitations of sensors or other physical equipment.
As used herein, the term “set” does not include a so-called empty set (i.e., a set with no elements).
A “single-bounce path” means a path traveled by a direct component of light.
As used herein, a “subset” of a set consists of less than all of the elements of the set.
The term “such as” means for example.
The term “ToF” means time-of-flight.
Spatially relative terms such as “under”, “below”, “above”, “over”, “upper”, “lower”, and the like, are used for ease of description to explain the positioning of one element relative to another. The terms are intended to encompass different orientations of an object in addition to different orientations than those depicted in the figures.
A matrix may be indicated by a bold capital letter (e.g., D). A vector may be indicated by a bold lower case letter (e.g., α). However, the absence of these indicators does not indicate that something is not a matrix or not a vector.
This Definitions section shall, in all cases, control over and override any other definition of the Defined Terms. For example, the definitions of Defined Terms set forth in this Definitions section override common usage or any external dictionary. If a given term is explicitly or implicitly defined in this document, then that definition shall be controlling, and shall override any definition of the given term arising from any source (e.g., a dictionary or common usage) that is external to this document. If this document provides clarification regarding the meaning of a particular term, then that clarification shall, to the extent applicable, override any definition of the given term arising from any source (e.g., a dictionary or common usage) that is external to this document. In each case described in this paragraph, Applicant is acting as Applicant's own lexicographer.
Variations
This invention may be implemented in many different ways, in addition to those described above.
Here are some non-limiting examples of how this invention may be implemented:
This invention may be implemented as a method comprising, in combination: (a) using a light source to emit light in a temporal sequence of frequencies, such that (i) the light illuminates a scene, (ii) reflected light from the scene reaches a light sensor, and (iii) a first frequency is emitted during a first period of time in the sequence and not during other periods of time during the sequence, a second frequency is emitted during a second period of time in the sequence and not during other periods of time during the sequence, and a third frequency is emitted during a third period of time in the sequence and not during other periods of time during the sequence; (b) using a light sensor to capture multiple frames for each respective frequency in the sequence; and (c) using one or more processors (i) to analyze data in the frames and (ii) to calculate a set of complex numbers for each respective pixel in the light sensor, such that the set of complex numbers includes a complex number for each respective frequency in the sequence for each respective path length in a set of path lengths, wherein the set of path lengths consists of path lengths of paths of light that end at the respective pixel. Furthermore: (1) the method may further comprise using the one or more processors to calculate a depth map of the scene; (2) the paths of light may include a single-bounce path; (3) the paths of light may include a multiple-bounce path; (4) the light sensor may comprise a lock-in sensor; (5) the light sensor may capture four frames for each respective frequency in the sequence of frequencies; (6) the one or more processors may calculate multiple components of light incident on a single pixel of the light sensor, each respective component, out of the multiple components, comprising light that travels a particular path length, out of the set of path lengths; (7) the algorithm may include steps for computing frequency components of a signal; (8) the algorithm may include a matrix pencil computation; (9) the algorithm may include a computation that uses Prony's Method; (10) the algorithm may include a computation that uses a MUSIC method of spectral estimation; (11) the algorithm may include a computation that uses a maximum likelihood method of spectral estimation; (12) the algorithm may include a computation that uses an ESPRIT method of spectral estimation; and (13) the algorithm may include a computation that uses a parametric method of spectral estimation.
This invention may be implemented as a method of determining a depth map of a scene using a time-of-flight camera, which camera includes a light sensor, the improvement comprising: (a) using a light source to emit light in a temporal sequence of frequencies to illuminate the scene, such that a first frequency is emitted during a first period of time in the sequence and not during other periods of time during the sequence, a second frequency is emitted during a second period of time in the sequence and not during other periods of time during the sequence, and a third frequency is emitted during a third period of time in the sequence and not during other periods of time during the sequence; and (b) using one or more processors to estimate a phase and coefficient of reflection for each respective pixel of the light sensor for each respective path length, out of a set of path lengths of light, each respective path length being for a path that starts at the light source and ends at the light sensor.
This invention may be implemented as a time-of-flight camera, which camera includes a light sensor, the improvement comprising: one or more light sources for emitting light in a temporal sequence of different frequencies, such that a first frequency is emitted during a first period of time in the sequence and not during other periods of time during the sequence, a second frequency is emitted during a second period of time in the sequence and not during other periods of time during the sequence, and a third frequency is emitted during a third period of time in the sequence and not during other periods of time during the sequence. Furthermore: (1) the improvement may further comprise one or more processors programmed to estimate a phase and coefficient of reflection for each respective pixel of the light sensor for each respective path length, out of a set of path lengths of light, each respective path length being for a path that starts at the light source and ends at the light sensor; (2) the one or more processors may be further programmed to calculate a depth map of a scene; (3) the one or more processors may be further programmed to identify a direct component of light incident on a pixel of the sensor; and (4) the one or more processors may be further programmed to identify a global component of light incident on a pixel of the sensor.
CONCLUSION
While exemplary implementations are disclosed, many other implementations will occur to one of ordinary skill in the art and are all within the scope of the invention. Each of the various embodiments described above may be combined with other described embodiments in order to provide multiple features. Furthermore, while the foregoing describes a number of separate embodiments of the apparatus and method of the present invention, what has been described herein is merely illustrative of the application of the principles of the present invention. Other arrangements, methods, modifications, and substitutions by one of ordinary skill in the art are therefore also within the scope of the present invention. Numerous modifications may be made by one of ordinary skill in the art without departing from the scope of the invention.

## Claims

1. A method comprising, in combination:
(a) using a light source to emit light in a temporal sequence of frequencies, such that
(i) the light illuminates a scene,
(ii) reflected light from the scene reaches a light sensor, and
(iii) a first frequency is emitted during a first period of time in the sequence and not during other periods of time during the sequence, a second frequency is emitted during a second period of time in the sequence and not during other periods of time during the sequence, and a third frequency is emitted during a third period of time in the sequence and not during other periods of time during the sequence;

(b) using a light sensor to capture multiple frames for each respective frequency in the sequence; and
(c) using one or more processors
(i) to analyze data in the frames and
(ii) to calculate a set of complex numbers for each respective pixel in the light sensor, such that the set of complex numbers includes a complex number for each respective frequency in the sequence for each respective path length in a set of path lengths, wherein the set of path lengths consists of path lengths of paths of light that end at the respective pixel.

2. The method of claim 1, wherein the method further comprises using the one or more processors to calculate a depth map of the scene.

3. The method of claim 1, wherein the paths of light include a single-bounce path.

4. The method of claim 1, wherein the paths of light include a multiple-bounce path.

5. The method of claim 1, wherein the light sensor comprises a lock-in sensor.

6. The method of claim 1, wherein the light sensor captures four frames for each respective frequency in the sequence of frequencies.

7. The method of claim 1, wherein the one or more processors calculate multiple components of light incident on a single pixel of the light sensor, each respective component, out of the multiple components, comprising light that travels a particular path length, out of the set of path lengths.

8. The method of claim 1, wherein the algorithm includes steps for computing frequency components of a signal.

9. The method of claim 1, wherein the algorithm includes a matrix pencil computation.

10. The method of claim 1, wherein the algorithm includes a computation that uses Prony's Method.

11. The method of claim 1, wherein the algorithm includes a computation that uses a MUSIC method of spectral estimation.

12. The method of claim 1, wherein the algorithm includes a computation that uses a maximum likelihood method of spectral estimation.

13. The method of claim 1, wherein the algorithm includes a computation that uses an ESPRIT method of spectral estimation.

14. The method of claim 1, wherein the algorithm includes a computation that uses a parametric method of spectral estimation.

15. A method of determining a depth map of a scene using a time-of-flight camera, which camera includes a light sensor,
THE IMPROVEMENT COMPRISING:
(a) using a light source to emit light in a temporal sequence of frequencies to illuminate the scene, such that a first frequency is emitted during a first period of time in the sequence and not during other periods of time during the sequence, a second frequency is emitted during a second period of time in the sequence and not during other periods of time during the sequence, and a third frequency is emitted during a third period of time in the sequence and not during other periods of time during the sequence; and
(b) using one or more processors to estimate a phase and coefficient of reflection for each respective pixel of the light sensor for each respective path length, out of a set of path lengths of light, each respective path length being for a path that starts at the light source and ends at the light sensor.

16. A time-of-flight camera, which camera includes a light sensor,
THE IMPROVEMENT COMPRISING:
(a) one or more light sources for emitting light in a temporal sequence of different frequencies, such that a first frequency is emitted during a first period of time in the sequence and not during other periods of time during the sequence, a second frequency is emitted during a second period of time in the sequence and not during other periods of time during the sequence, and a third frequency is emitted during a third period of time in the sequence and not during other periods of time during the sequence; and
(b) one or more processors programmed to estimate a phase and coefficient of reflection for each respective pixel of the light sensor for each respective path length, out of a set of path lengths of light, each respective path length being for a path that starts at the light source and ends at the light sensor.

17. The time-of-flight camera of claim 16, wherein the one or more processors are further programmed to calculate a depth map of a scene.

18. The time-of-flight camera of claim 16, wherein the one or more processors are further programmed to identify a direct component of light incident on a pixel of the sensor.

19. The time-of-flight camera of claim 16, wherein the one or more processors are further programmed to identify a global component of light incident on a pixel of the sensor.