Abstract:
In a time-multiplexed structured (coded) light camera, the coded light patterns are formed by means of an array of laser sources, and binarizations of the light patterns are performed by computing the dark and bright frames from the code patterns themselves.

Description:
[0001]    This application claims priority to a non-provisional application 61/504,494 filed Jul. 5, 2011 which is hereby expressly incorporated by reference herein. 
     
    
     BACKGROUND 
       [0002]    Coded light is a method for three-dimensional (3D) geometry acquisition, in which the object of interest is illuminated by a time-multiplexed sequence of patterns, e.g., horizontal strips of varying width, forming a binary code. Using a camera calibrated with the projecting system, the 3D geometry is recovered by triangulation (the code allows to establish correspondence between the camera and the projector coordinate systems). 
         [0003]    A critical element of a coded light camera is the projection system capable of illuminating the object with a rapidly changing sequence of patterns. Typically, 88-10 patterns are required to reconstruct a 3D image with sufficiently high resolution; hence, in order to acquire 30 3D frames/second, the projector must be able to project the patterns at 200 fps. Current available designs based e.g. on TI DMD micro-mirror arrays are too expensive. 
         [0004]    Typically, the sequence of projected patterns consists of b binary code patterns (I 0 , . . . , I b ), for example, plain binary or Gray code. Since the patterns are projected into an object with potentially widely varying reflectivity properties (albedo) and due to background illumination, the image of the object illuminated by each pattern acquired by means of the camera contains continuous gray levels that must be binarized (converted into values of 1 at illuminated pixels and 0 at dark pixels). for this purpose, additional patterns B (full dark) and W (full bright) are often used. The binarization of code patter I at each pixel is performed according to the following formula: I′=(I−B)/(W−B). The pixel is assigned the value of 1 is I′&gt;0 and 0 if I′&lt;0. 
         [0005]    Next, the binarized images I′ 0 , . . . , I′ b  are used to form a code C at each pixel; for example, if plain binary code is used, C=I′ b +2 1 I′ b−1 +2 2 I′ b−2 + . . . 2 b I′ 0 . The code image C encodes the number of a horizontal plane in projector system of coordinates; from its intersection with a ray in the camera system of coordinates (assuming calibrated system), the 3D coordinates of each pixel are recovered. 
         [0006]    With such an approach, in order to obtain a single 3D frame, it is required to project b+2 patterns. If the projection rate is P fps, the frame rate of the 3D camera system, is (b+2)/p 3D frames/sec. 
         [0007]    Furthermore, due to possible motion of the scanned object, the dark and bright frams B and W will be updated at the rate p/(b + 2) frames/sec. As a result, the binarization of the code patterns will be incorrect due to the displacement of pixels between a code pattern I and the frames B and W. This will result in wrong code reconstruction. The most significant effect will be caused in most significant bits (MSB) of the code (patterns I 0 , 1   1 , etc.). For this reason, it is desirable to place B and W as close as possible to the MSB patterns, e.g. as 
         [0008]    B W I 0 I 1 I 2  . . . I b  B W I 0 I 1  . . . I b    
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0009]    Some embodiments are described with respect to the following figures: 
           [0010]      FIG. 1  is a single optical subsystem according to one embodiment to the present invention; and 
           [0011]      FIG. 2  depicts an array of optical subsystems (horizontal arrangements). 
       
    
    
     DETAILED DESCRIPTION 
       [0012]    The present invention deals with two aspects of the aforementioned general method of coded light 3D acquisition, and proposes an efficient system for the creation of coded illumination patterns and a method aiming to increase the frame rate of the system by eliminating the need to project the bright and dark patterns (B and W). 
         [0013]    The proposed design involves a fixed on-dimensional array of optical sub-systems, consisting of light sources (e.g. laser diodes or vertical cavity surface emitting diode lasers (VCSEL)), coupled with an array of masks (diffraction optical element (DOE) or simple optical filters), as schematically illustrated in  FIG. 1 . Each such sub-system pair is responsible for the creation of a code pattern. The time multiplexing is achieved by electronic switching of the lasers in the array at the frequency corresponding to the rate of patterns change. 
         [0014]    In one preferred embodiment, each optical sub-system consists of a laser source, possible collimator, DOE mask, and a diffuser. 
         [0015]    In another preferred embodiment, each optical sub-system consists of a laser source, possible collimator, possible cylindrical lens, DOE mask, diffuser, and a focusing lens. 
         [0016]    The one-dimensional array of lasers is arranged in the direction opposite to the binary code direction, i.e., if the code patterns are horizontal striped, the lasers are arranged into a horizontal line. 
         [0017]    The whole device would be a manufactured on a single semiconductor allowing for efficient switching between patterns at a compact form factor that could be integrated into handheld devices, laptops, TV-sets, set-top boxes, cell-phones, portable and stationary devices, to name just a few applications. 
         [0018]    Since the binary code (e.g. plain binary or Gray code) is complete, the time-multiplexed code sequenced at each pixel contains at least one 1 and at lease one 0, excepting the two lines of pixels (all zeros and all ones). For example, if plain binary code is used and b=3, the pixels at lines 001, 010, 011, 100, 101, 110 will be illuminated at least one and be darkened at least once (pixels at lines 000 and 111 will not; however, these would be typically the first and the last lines which can be outside the field of view of the camera). 
         [0019]    Thus, taking a minimum and maximum at each pixel over one period of the code sequence will give the dark and bright pixel values. This allows reconstructing B and W rather than explicitly projecting them, as follows: 
         [0000]        B =min { I   0   I   1   I   2    . . . I   b } 
         [0000]        W =max { I   0   I   1   I   2    . . . I   b } 
         [0020]    The advantage of this approach is that there is no need to project patterns B and W which carry no code information; thus, the frame rate is b/p compared to 
         [0021]    An alternative approach is instead of projecting the sequence of bit patterns I 0 I 1 I 2  . . . I b , to project alternating sequences of normal and inverted patterns !I 0 I 1 I 2  . . . !I b , where !I is the pattern I, in which dark pixels are replaced by illuminated ones, and illuminated pixels are replaced by dark ones. the dark and bright pixel values can be reconstructed as 
         [0000]        B =min { I, !I}   
         [0000]        W =max { I, !I}   
         [0022]    The advantage of this approach is that there is no need to project patterns B and W which carry no code information; thus, the frame rate is b/p compared to (b+2)/p. 
         [0023]    Furthermore, the frequency of updating B and W can be increased two-fold by placing inverted patterns at each boundary of pattern sequence, e.g. 
         [0000]    
       
      
       I 
       0 
       I 
       1 
       I 
       2  
       . . . I 
       b  
       !I 
       b 
       I 
       1 
       I 
       2  
       . . . I 
       b 
       !I 
       0  
       I 
       0 
       I 
       1 
       I 
       2  
       . . . I 
       b  
      
     
         [0000]    In this example, B and W are reconstructed from the pair I 0 !I b  and I b !I b    
         [0024]    The graphics processing techniques described herein may be implemented in various hardware architectures. For example, graphics functionality may be integrated within a chipset. Alternatively, a discrete graphics processor may be used. As still another embodiment, the graphics functions may be implemented by a general purpose processor, including a multicore processor. 
         [0025]    References throughout this specification to “one embodiment” or “an embodiment” mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one implementation encompassed within the present invention. Thus, appearances of the phrase “one embodiment” or “in an embodiment” are not necessarily referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be instituted in other suitable forms other than the particular embodiment illustrated and all such forms may be encompassed within the claims of the present application. 
         [0026]    While the present invention has been described with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover all such modifications and variations as fall within the true spirit and scope of this present invention.