Patent Publication Number: US-9892666-B1

Title: Three-dimensional model generation

Description:
BACKGROUND 
     Camera and laser based three-dimensional (3D) scanners and cameras have been designed and used in the reconstruction of working environments in various technological areas. In order to generate a two-dimensional (2D) or 3D model of a particular working environment, currently existing 3D scanners measure the surrounding space by rotating the sensor to obtain different views of the environment. For instance, a camera may be rotated around the environment while images that represent different views of the environment are being captured. This process continues until each view of the environment has been attained. However, in order to generate a 3D model of the entire environment, the multiple images need to be overlapping so that the different views of the environment can be merged into a single image and model. That is, current techniques for generating 3D models of working environments require capturing multiple overlapping images and then performing an image registration process where the images are subsequently merged so that the end result represents a model of the entire environment. Such practices are typically time consuming and are generally only suitable for off-line applications. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The detailed description is set forth with reference to the accompanying figures, in which the left-most digit of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in the same or different figures indicates similar or identical items or features. 
         FIG. 1  is a diagram showing an example system for generating a three-dimensional model of an environment. 
         FIG. 2  is a diagram showing an example system for capturing a single or unified image of an environment utilizing a projection device, one or more mirrors, and a capture device. 
         FIG. 3  is a diagram showing an example system determining the spatial relationships and orientation of various components in order to generate a three-dimensional model of an environment. 
         FIG. 4  is a diagram showing an example system for generating a three-dimensional model of an environment. 
         FIG. 5  is a flow diagram showing an example process of generating a three-dimensional model of an environment. 
     
    
    
     DETAILED DESCRIPTION 
     This disclosure describes systems and processes for generating a three-dimensional (3D) model of an environment, such as a room or some other working environment. More particularly, a 3D model of an environment may be generated that represents the orientation of objects or components in the environment and/or the spatial relationships associated with those objects or components. That is, with respect to a room, the distances between the walls, the ceiling, and objects within that room (e.g., a table) may be determined and represented by the 3D model. In addition, the orientation and spatial relationships associated with any components that are used to generate the 3D model, such as a projection device, a capture device, or one or more mirrors, may also be determined and reflected in the 3D model. 
     As stated above, existing techniques that are used to generate 3D models for an environment typically involve utilizing a rotating scanner or camera to capture multiple images that reflect different views of the environment. Then, provided that the multiple images are overlapping, a 3D model may be generated by merging the overlapping images. However, described herein are systems and processes for reconstructing a 3D model of an environment (e.g., a room) without any rotation or translation operations of the one or more sensing devices that are being used. More particularly, a projection device may project light or patterns onto a first mirror, such as a hyperboloidal or paraboloidal shaped mirror, which may then reflect the projected light or patterns onto the surroundings of the environment. Since, the projected patterns have been projected onto the surroundings via the first mirror, a second mirror may then reflect the surroundings with the associated patterns. Then, a stationary capture device, such as a camera, may be directed at the second mirror in order to capture a single, unified image or multiple images that represent the surroundings of the entire environment. In various embodiments, the one or more images may be processed to reconstruct the 3D model of the environment. 
     Therefore, with such mirrors, a 3D model of a room may be reconstructed utilizing a projection device and a capture device, which may be a single device or multiple devices. Moreover, since a hyperboloidal mirror may allow the entire surroundings of the room (e.g., floor, walls, objects in room, etc.) to be captured in a single, unified image, the 3D model may be generated without having to rotate the capture device. Once the 3D model has been generated, the orientation and spatial relationships of the items associated with the room may also be determined. As a result, the 3D model may accurately represent the actual dimensions of the room and the distances between such items. Based at least partly on this 3D model, the systems and processes described herein may determine a region on an appropriate surface in the room (e.g., wall, floor, table, etc.) that can be used to project texts, graphics, and/or images, either automatically or manually. 
     The discussion begins with a section, entitled “Example Environment,” describing a system for generating a three-dimensional model of an environment. Next, the discussion includes a section, entitled “Pattern Projection and Image Capture,” that describes a process for capturing an image that represents an entire view of an environment. The discussion then moves on to a “Three-Dimensional Model Generation” section that describes a process for generating a three-dimensional model of an environment based at least partly on an image of the environment. Then, the discussion includes an “Example Model Generation” section that describes an example technique for generating a three-dimensional model of an environment. The discussion then includes a section, entitled “Example Processes,” that illustrates and describes example processes for generating a three-dimensional model of an environment. Lastly, the discussion includes a brief “Conclusion”. 
     This brief introduction, including section titles and corresponding summaries, is provided for the reader&#39;s convenience and is not intended to limit the scope of the claims, nor the proceeding sections. Furthermore, the techniques described above and below may be implemented in a number of ways and in a number of contexts. Several example implementations and contexts are provided with reference to the following figures, as described below in more detail. However, the following implementations and contexts are but a few of many. 
     Example Environment 
       FIG. 1  illustrates an example system  100  for generating or reconstructing a 3D model of an environment, such as a room  102 . In particular, the room  102  may include a projection device  104 , one or more mirrors  106 , and a capture device  108 . The projection device  104  and the capture device  108  may be communicatively coupled to one or more network(s)  110 , which may allow the exchange of data or information between the projection device  104  and/or the capture device  108  and one or more server(s)  112 . 
     A single image that is representative of the entire environment or multiple images that are representative of the environment may be utilized to generate a 3D model of the environment. The single image may be captured by first projecting light or patterns to a first mirror, which may then reflect the light or patterns onto the surroundings of the environment. A second mirror may then reflect the surroundings of the environment having the light or patterns reflected thereon. Either simultaneously or afterwards, a device may take an image of the second mirror such that the image represents the surroundings of the environment. As a result, the single image that represents an entirety of the surroundings of the environment may be captured without having to rotate the device that is actually taking the image. As such, the device may remain stationary when capturing image. 
     More particularly, and as shown, the projection device  104 , the mirror(s)  106 , and the capture device  108  may each be situated in the same room  102  and may be placed in any orientation within the room  102  and with respect to one another. In various embodiments, a pattern projection component  114  of the projection device  104  may project or transmit light or patterns onto a first mirror  106 . As illustrated in  FIG. 1 , the light or patterns that are projected by the projection device  104  may be referred to as a projection  116 . Any type of light (e.g., laser light) or patterns (e.g., horizontal lines, vertical lines, etc.) may be included in the projection  116  and may be directed towards the first mirror  106 . In some embodiments, the pattern may be a grid that is projected on to the surroundings of the room  102 . Such a pattern may be generated by a diffractive optical element (DOE) associated with the projection device  104  and a laser. In addition, projecting multiple patterns in a sequence may also reveal the room  102  in additional detail. Moreover, the projection device  104  may be any type of device, such as a projector, that is capable of projecting light or patterns onto a surface, such as a wall, a floor, a ceiling, or the mirror(s)  106 . 
     The mirror(s)  106  may be any type of mirror that may capture or reflect an entirety of its surroundings or at least a substantial portion of its surroundings. For instance, provided that the mirror(s)  106  are situated in the room  102 , the mirror(s)  106  may reflect the entire room  102 , which may include a floor, one or more walls, a ceiling, and any other objects (e.g., a table, chairs, etc.) that are in the room  102 . That is, by viewing the mirror(s)  106 , one may view the room  102  in its entirety. In some embodiments, although the mirror(s)  106  may take any form, the mirror(s)  106  may be a convex mirror  106 , such as a hyperboloidal or paraboloidal mirror (e.g., having a hemispherical or dome-like shape) or a mirror having a cone-like shape. In these embodiments, the projection  116  may be directed towards the reflecting surface of the mirror(s)  106 . Moreover, the shape of the mirror(s)  106  may vary so long as the shape of the mirror  106  is known prior to projecting the projection  116  and capturing the image(s)  118 . 
     Upon the projection  116  being directed towards a first one of the mirror(s)  106 , that mirror  106  may reflect the projection  116  (e.g., light, patterns, etc.) onto its surroundings. For example, the projected light or patterns may be reflected by that mirror  106  onto the floor, walls, and any other objects included in the room  102  that have a relatively flat surface, such as a table. As a result, the projection  116  that is projected by the projection device  104  and directed towards the first mirror  106  may then be projected upon the entire room  102 . In various embodiments, provided that the mirror  106  is curved, the mirror  106  may refocus the pattern. In order to prevent potential blurriness of the projection  116  (e.g., the pattern), the patterns may be projected utilizing a laser or some other high f-number light source. In other embodiments, the projection  116  may include infrared light, which may serve as an invisible alternative to mapping the room  102 . 
     Either simultaneously or after the projection  116  is projected onto the surroundings of the room  102 , an image capture component  120  of the capture device  108  may capture one or more images  118  of the room  102 . More particularly, the capture device  108  may take an image  118  of a second one of the mirror(s)  106 , which may reflect the surroundings of the room  102 , including the projection  116  that has been projected upon the surroundings of the room  102 . In various embodiments, the capture device  108  may be any type of device, such as a camera or a scanner, that is able to capture an image  118  of one or more objects. Moreover, the image  118  may be a photograph, a video, or any other type of image that presents or represents an entire view of the room  102 . 
     Accordingly, since the second mirror  106  is able to reflect the room  102  in its entirety, a single or unified image  118  of the mirror  106  taken by the capture device  108  may represent the entire view of the room  102 . Moreover, the image  118  may include multiple images or a sequence of images that are taken over time. In embodiments where the mirror  106  is affixed to, or is near, the ceiling of the room  102 , the image(s)  118  may display the floor, walls, and any objects included in the room  102 . In various embodiments, although shown as two different components, the projection device  104  and the capture device  108  may also be a single device that both transmits the projection  116  and captures the image(s)  118 . An optical axis associated with the capture device  108  may also be non-coaxial with the projection device  104 . Furthermore, in the event that the captured image(s)  118  are distorted in some manner, an optical narrow bandpass filter that is situated in front of the capture device  108  and a laser may be utilized, which may enable the server  112  to map the room  102  even if the room  102  is brightly lit. 
     Although a single mirror  106  is shown in  FIG. 1 , the system  100  may include multiple mirrors  106 , such as a first mirror  106  associated with the projection device  104  and a second mirror  106  associated with the capture device  108 . In these embodiments, the projection  116  may be directed to the first mirror  106 , which may reflect the projection  116  onto the surroundings of the room  102 . Further, the capture device  108  may take the single image  118  by directing the capture device  108  towards the second mirror  106 , which may reflect and represent the entire view of the room  102 , including the projection  116  that has been projected upon the surroundings of the room  102 . As stated above, the projection device  104 , the mirror(s)  106 , and the capture device  108  may be placed in any orientation within the room  102  and may be spaced apart at predetermined distances. For example, the mirror(s)  106  may be placed on the ceiling of the room  102  so that the floor, walls, and objects affixed to the walls or placed upon the floor may be captured by the one or more images  118 . 
     Therefore, the system  100  is able to project light or patterns onto the surroundings of an environment (e.g., room  102 ) utilizing one or more mirrors  106  and then capture a single image  118  (or multiple images  118 ) of the environment that represents an entire view of the environment. This image  118  may be captured without having to rotate or otherwise manipulate the projection device  104 , the mirror(s)  106 , or the capture device  108 . As a result, the same mirror  106  can be utilized to project a pattern onto the surroundings of the room  102 , reflect the entire room  102 , and collect a single image  118  that represents or portrays the entire room  102 . In other embodiments, multiple mirrors  106  may be utilized—a first mirror  106  to reflect the projection  116  onto the surroundings of the room  102  and a second mirror  106  to enable the capture device  108  to capture one or more images  118  of the room  102 . 
     As mentioned previously, the projection device  104  and the capture device  108  may be communicatively coupled to one or more network(s)  110 . For instance, the projection device  104  and the capture device  108  may be controlled via the network(s)  110 , such as by being controlled by an individual or the server(s)  112 . That is, an individual may control when the projection device  104  is to transmit the projection  116  and when the capture device  108  is to take or capture the image  118 . Moreover, the image(s)  118  that are collected by the capture device  108  may then be transmitted to the server(s)  112  via the network(s)  110 . In some embodiments, the network(s)  110  may be any type of network known in the art, such as the Internet. Moreover, projection device  104 , the capture device  108 , and the server(s)  112  may communicatively couple to the network(s)  110  in any manner, such as by a wired or wireless connection. The network(s)  110  may also facilitate communication between the projection device  104 , the capture device  108 , and/or the server(s)  112 , as stated above. 
     As shown, the server(s)  112  may include one or more processor(s)  122  and computer-readable media  124 , which may include an image receiver module  126  and a model construction module  128 . More particularly, the server(s)  112  may cause the projection device  104  to transmit the projection  116  and may cause the capture device  108  to take and capture the image(s)  118 . Once the image(s)  118  are received by the image receiver module  126 , the image(s)  118  may be analyzed in various manners. Moreover, the model construction module  128  may utilize the image(s)  118  in order to generate or reconstruct a 3D model of the room  102 , which will be described in additional detail in  FIGS. 2-5 . 
     In various embodiments, the processor(s)  122  of the server(s)  112  may execute one or more modules and/or processes to cause the server(s)  112  to perform a variety of functions, as set forth above and explained in further detail in the following disclosure. In some embodiments, the processor(s)  122  may include a central processing unit (CPU), a graphics processing unit (GPU), both CPU and GPU, or other processing units or components known in the art. Additionally, each of the processor(s)  122  may possess its own local memory, which also may store program modules, program data, and/or one or more operating systems. 
     In at least one configuration, the computer-readable media  124  of the server(s)  112  may include any components that may be used to receive the image(s)  118  and reconstruct a 3D model of the room  102  utilizing the image(s)  118 . Depending on the exact configuration and type of the server(s)  112 , the computer-readable media  124  may also include volatile memory (such as RAM), non-volatile memory (such as ROM, flash memory, miniature hard drive, memory card, or the like), or some combination thereof. Furthermore, the server(s)  112  may also include additional components not listed above that may perform any function associated with the server(s)  112 . In various embodiments, the server(s)  112  may include a single server or multiple servers and may be any type of server, such as a network-accessible server. 
     As a result, the system  100  may capture a single image  118  (or multiple images  118 ) of the room  102  that represents an entire view of the room  102 . Provided that a single image  118  is captured, the single image  118  may be obtained utilizing one or more mirrors  106  and without having to rotate the capture device  108 . The server  112  may then utilize the single image  118  in order to generate a 3D model of the room  102 . Therefore, the system  110  avoids needing to take multiple overlapping images  118  of the room  102  and then merge the overlapping images  108  to create the 3D model, which is both time consuming and overly complicated. 
     Pattern Projection and Image Capture 
       FIG. 2  illustrates a diagram representing a system  200  that captures a single image of an environment that can be utilized to generate a 3D model of that environment. In various embodiments, the environment is represented as a room  102  that includes a floor  202 , and four walls  204 - 210 , although any number of walls  204 - 210  may be present. Also included in  FIG. 2  are the projection device  104 , a first mirror  106 ( 1 ), a second mirror  106 ( 2 ), and the capture device  108 , which can be placed in any location within the room  102  and/or in any orientation. In some embodiments, the first mirror  106 ( 1 ) and/or the second mirror  106 ( 2 ) may be placed on one of the walls  204 - 210  or on or near the ceiling of the room  102 . Moreover, and as shown, the projection device  104  and/or the capture device  108  may be inside the room  102 . Alternatively, the projection device  104  and the capture device  108  may be outside of the room  102 , but are still able to transmit the projection  116  and capture the image(s)  118 , respectively. 
     In some embodiments, the projection device  104  may project one or more patterns  212  that are directed at the first mirror  106 ( 1 ), which may be any type of mirror (e.g., a hyperboloidal mirror) that is able to reflect or project an entire view of the room  102 . The patterns  212  may then be reflected by the first mirror  106 ( 1 ) onto the surroundings of the room  102 . That is, the first mirror  106 ( 1 ) may reflect the patterns  212  onto any surface associated with the floor  202 , the walls  204 - 210 , and objects that are within the room  102 , such as objects that are affixed to or are adjacent to the walls  204 - 210  or objects that are situated on the floor  202 . Here, the reflected patterns  214 ( 1 )- 214 (N) are directed towards the floor  202  and the walls  204 - 210  of the room  102 . The reflected patterns  214 ( 1 )- 214 (N) are intended to represent the patterns  212  that are reflected by the first mirror  106 ( 1 ) throughout the room  102  and are not limited to the reflected patterns  214 ( 1 ),  214 ( 2 ),  214 ( 3 ),  214 ( 4 ), and  214 (N) shown in  FIG. 2 . 
     Once the reflected patterns  214 ( 1 )- 214 (N) are directed to the surroundings of the room  102 , the capture device  108  may capture an image  216  of the room  102 . That is, the capture device  108  may collect a single image  216  (or multiple images  216 ) of the room  102  by taking an image  216  of the second mirror  106 ( 2 ), which may reflect the surroundings of the room  102  and the corresponding reflected patterns  214 ( 1 )- 214 (N). As a result, since the second mirror  106 ( 2 ) is able to display an entire view of the room  102 , including the reflected patterns  214 ( 1 )- 214 (N), a single image  216  taken of the second mirror  106 ( 2 ) may represent a complete view of the room  102 , which may include the floor  202 , the walls  204 - 210 , and any objects included in the room  102 . As described herein, the image(s)  216  may then be used to reconstruct or generate a 3D model of the room  102 . The 3D model may then be utilized to identify surfaces in the room  102  (e.g., floor  202 , walls  204 - 210 , objects in the room  102 , etc.) for projecting texts, one or more graphics, one or more images, etc. 
     In certain embodiments, the light that is directed towards the first mirror  106 ( 1 ) may include laser light that is collimated, meaning that the rays associated with the laser light are parallel or are approximately parallel, and therefore will spread more slowly as the laser light propagates. As a result, the laser light will disperse minimally with distance and thus will have a minimum amount of divergence. In such embodiments, the laser light may be projected to the first mirror  106 ( 1 ), which may cause the laser light to be reflected onto the floor  202 , the walls  204 - 210 , and any other surfaces corresponding to objects in the room  102 . The image  216  of the room  102  may then be captured by the capture device  108 . In example embodiments, using laser light, a single mirror  106  may also be used where the laser light may be projected, reflected, and an image  216  can be captured at approximately the same time. In other embodiments, the laser light can be pulsated, meaning that the laser light can be transmitted at a first time and then an image  216  can be captured or collected at a second time subsequent in time to the first time. 
     In some embodiments, the projection device  104  projecting the patterns  212  and the capture device  108  capturing the image  216  may be synchronous or approximately synchronous. That is, while the projection device  104  is transmitting the patterns  212  and while the first mirror  106 ( 1 ) is reflecting the patterns  212  as the reflected patterns  214 ( 1 )- 214 (N), the capture device  108  may take the image  216  of the second mirror  106 ( 2 ). As a result, the single image  216  of the room  102  may be collected at the same time, or at about the same time, as the patterns  212  are being projected towards the first mirror  106 ( 1 ). Therefore, the first mirror  106 ( 1 ) may be associated with the projection device  104  and the second mirror  106 ( 2 ) may be associated with the capture device  108 . The projection device  104  may then project the patterns  212  onto the first mirror  106 ( 1 ) and the capture device  108  may then take the image  216  of the second mirror  106 ( 2 ) at approximately the same time. 
     As stated elsewhere herein, the orientation of the projection device  104 , the first mirror  106 ( 1 ), the second mirror  106 ( 2 ), and the capture device  108  within the room  102  may vary. In various embodiments, the first mirror  106 ( 1 ) and/or the second mirror  106 ( 2 ) may be located on or close to the ceiling of the room  102 , where the reflecting surface(s) of each mirror  106  may face the floor  202  of the room  102 . Since the floor  202  and the walls  204 - 210  of the room  102  are likely to be perpendicular with respect to one other, the portion of the mirrors  106  that reflect the patterns  212  may be facing one or more points that are near the intersection between the floor  202  and the walls  204 - 210 . Since the mirrors  106  can be facing both the floor  202  and the walls  204 - 210  at about a 45° angle, the mirrors  106  may be able to reflect both the floor  202  and the walls  204 - 210  of the room  102 . As a result, provided that the captured device  108  is situated at a position below the reflecting surface of the second mirror  106 ( 2 ), when the capture device  108  takes a picture of the second mirror  106 ( 2 ), the resulting image  216  then represents an entire view of the room  102 , which includes both the floor  202  and the walls  204 - 210  of the room  102 . 
     Three-Dimensional Model Generation 
       FIG. 3  illustrates a diagram representing a system  300  that generates a 3D model of an environment based at least partly on a single image that represents the environment. More particularly, the system  300  represents operations performed by the server  112  after the projection device  104  has projected patterns  212  onto the first mirror  106 ( 1 ), the first mirror  106 ( 1 ) has reflected those patterns (e.g., reflected patterns  214 ( 1 )- 214 (N)) onto the surroundings of the environment, and the capture device  108  has captured a single image  216  of the second mirror  106 ( 2 ) that represents an entire view of the environment. Such operations may include determining the orientation and depth of the objects included in the environment (e.g., floor  202 , walls  204 - 210 , objects in the room  102 , etc.). 
     At block  302 , the server  112  may assign a floor coordinate system to the room  102 . More particularly, in order to generate the 3D model of the room  102 , the server  112  may establish a floor coordinate system that is utilized to create a plane with respect to the floor  202  of the room  102 , as shown in block  304 . Using the plane, the server  112  may be able to calculate the geometry of the floor  202 , meaning that the server  112  may be able to determine the dimensions of the floor  202  for the 3D model. Upon determining the floor dimensions of the room  102 , the server  112  may then determine the distances between each of the walls  204 - 210  of the room  102 . In various embodiments, in order to generate the dimensions of the room  102 , a fiduciary scale associated with the image may be utilized. In other embodiments, the server  112  may determine the dimensions of the room  102  relative to the various objects included in the room  102 . 
     At block  306 , the server  112  may model the projected patterns  212  over the floor  202  of the room  102 . That is, the features or edges from the projected patterns  212  that have been projected onto the floor  202  of the room  102  may be modeled. At block  308 , the position and orientation of the projection device  104 , the mirror(s)  106 , and/or the capture device  108  may be defined. The position and orientation may be defined in any manner and may be utilized to determine how the patterns  212  will be reflected by the first mirror( 1 )  106  onto the surroundings of the room  102  and how the capture device  108  will capture the single image  216  of the room  102  utilizing the second mirror  106 ( 2 ). In certain embodiments, the mirror(s)  106  may be positioned towards the ceiling of the room  102  and the projection device  104  may be positioned somewhere below the reflecting surface of the mirror  106  such that the patterns  212  may be directed at, and reflected by, the first mirror  106 ( 1 ). 
     The capture device  108  may also be positioned at a location below the reflecting surface of the second mirror  106 ( 2 ) so that the image  216  may be collected by directing the capture device  108  at the second mirror  106 ( 2 ). Furthermore, provided that the mirror(s)  106  are convex mirrors  106  (e.g., hyperboloidal, paraboloidal, cone shaped, etc.), the reflecting portions of the mirror(s)  106  may be facing both the floor  202  and the walls  204 - 210  of the room  102 . For instance, the mirror  106 (s) may be oriented such that the reflecting surface of the mirror  106 (s) are at about a 45° angle with respect to both the floor  202  and the walls  204 - 210 . In addition, the parameters of the mirror(s)  106  may also be defined, which may include the size and shape of the mirror(s)  106 . 
     At block  310 , the position and orientation of the projection device  104 , the mirror(s)  106 , and/or the capture device  108  may be calibrated. In various embodiments, the projection device  104 , the mirror(s)  106 , and/or the capture device  108  may be calibrated utilizing the floor coordinate system set forth above with respect to block  302 . In addition, the parameters associated with the mirror(s)  106  (e.g., shape, size, etc.) may also be calibrated with respect to the floor coordinate system. 
     Block  312  illustrates that a projected image of the projected patterns  212  may be generated by the server  112 , and the edges of the projected patterns  212  may be extracted and recorded in block  314 . In response to the projected patterns  212  being extracted and recorded, a real image of the room  102  that includes the projected patterns  212  may be captured, as shown in block  316 . Then, in block  318 , the edges of the projected patterns  212  associated with the real image may be extracted. 
     In block  320 , the server  112  may estimate the disparities between the model features and the room features, such as by utilizing a disparity map. In various embodiments, the disparity of the two sets of edge features may be defined as the difference in position along a direction based on a transformation matrix between a coordinate associated with the location of the projection device  104  and a coordinate associated with the location of the capture device  108 . That is, the server  112  may utilize the projected patterns  212  to estimate disparities between the features included in the room  102  (e.g., projection device  104 , mirror(s)  106 , capture device  108 , floor  202 , walls  204 - 210 , etc.) and those same features that are included in the generated 3D model of the room  102 . 
     Prior to calculating the disparities described above, the server  112  may use calibration data to determine the 3D relationships between the objects associated with the room  102 , such as the projection device  104 , the mirror(s)  106 , the capture device  108 , the floor  202 , and the walls  204 - 210 . That is, the server  112  may determine the geometric relationship, such as the distance and angle, between the projection device  104 , the mirror(s)  106 , and the capture device  108 . In addition, the server  112  may also be aware of various parameters associated with the projection device  104  (pixel size, etc.), the mirror(s)  106  (e.g., shape, size, etc.), and the capture device  108  (e.g., focal length, image format, etc.). Such parameters may be calculated prior to, or after, the projection device  104  projects the patterns  212  and the capture device  108  captures the image  216 . Accordingly, the server  112  may determine the orientation and position of the components associated with the room  102  and the distance between such components. 
     Furthermore, in block  322 , the server  112  may create the 3D room model based on the estimated disparities. More particularly, the server  112  may create a 3D model of the room  102  by determining the dimensions of the floor  202  and the location and orientation of the projection device  104 , the mirror  106 , and the capture device  108 . The server  112  may also determine the distance between such components such that the 3D model is an accurate representation of the room  102 . In various embodiments, the 3D room model may be created based at least partly on the disparity map set forth above. For instance, initially a point set may be used to represent the disparity map. Then, this point set may be transformed into a surface representation, such as triangles, and a related index may then be converted into a distance metric (e.g., meters). In additional embodiments, if any disparities are identified, the server  112  may adjust the 3D model of the room  102  in order to resolve those disparities. 
     Example Model Generation 
       FIG. 4  illustrates a diagram representing a system  400  that illustrates an example process for generating a 3D model of an environment. As shown, the system  400  includes a mirror  106  (e.g., the second mirror  106 ( 2 )), a point X  402 , a projection x′  404 , an image pixel x  406 , a capture device coordinate O  408 , an image π 1    410 , and a transformation matrix Q(R,t)  412 . More particularly, the point X  402  may represent any 3D point or location in the room  102 , such as the floor  202 , or a portion thereof, one of the walls  204 - 210 , or a portion thereof, or any object that is within the room  102 . Moreover, projection x′  404  is a projection of point X  402  to the mirror  106  and image pixel x  406  corresponds to an image pixel representing the projection from projection x′  404  to the image π 1   410  that is taken by the capture device  108 . 
     In various embodiments, the capture device coordinate O  408  represents a position or location of the capture device  108  that is associated with the room  102 . As shown, the capture device coordinate O  408  may represent the capture device  108  capturing the image π 1    410 , including the image pixel x  406 , by directing the capture device  108  at the mirror  106 . Furthermore, with respect to the image π 1    410 , the location of the image pixel x  406  that is reflected by the mirror  106  may correspond to the location of the point X  402  in the room  102 . 
     Moreover, the point X  402 , may first be projected to projection x′  404  of the mirror  106  and then transformed to the image pixel x  406  with respect to the capture device coordinate O  408 . More particularly, the transformation matrix Q(R,t)  412  may transform point X  402  in the room  102  to its corresponding image pixel x  406  in the image π 1    410 . In various embodiments, the transformation matrix Q(R,t)  412  may represent a relationship between a first coordinate system, such as a coordinate system associated with the capture device  108 , and a different coordinate system. Moreover, the transformation matrix Q(R,t)  412  may include at least two parts—a rotation matrix R and a translation vector t. The rotation matrix R may correspond to a 3×3 rotation matrix that rotates a direction from a first coordinate to a second, different coordinate. Each 3×1 column vector of the transformation matrix Q(R,t)  412  may represent a new axis of the coordinate with respect to previous coordinate system prior to the rotation. Further, the translation vector t may correspond to a 3×1 translation vector that translates a position from the previous coordinate system to a new coordinate system. In other words, the rotation matrix R and the translation vector t may transform a point (e.g., point X  402 ) in the room  102  first to the mirror  106  and then, to the corresponding image pixel (e.g., image pixel x  406 ) in the image π 1    410 . 
     In example embodiments, with respect to the transformation matrix Q(R,t)  412  transforming point X  402  to projection x′  404 , it is contemplated that x′=QX. Moreover, provided that K corresponds to an intrinsic matrix associated with the capture device  108 , and with respect to the transformation from projection x′  404  to image pixel x  406 , then Q′(R′,t′). As a result, image pixel x  406  may be defined as x=[KQ|O] X=[KQ|O] [X_1]′, where “X_” may correspond to the homogeneous representation of point X  402 . In various embodiments, K, Q, and P may be calibrated based at least partly on the capture device  108  characteristics and how the system  400  is set up. 
     With respect to the calibration referenced above, the system  400  may help ensure that the transformation matrix Q(R,t)  412  is properly transforming point X  402  to projection x′  404  to image pixel x  406  of the image π 1    410 . For instance, the orientation of the mirror  106  may reflect the various projection points corresponding to one another. Further, provided that the intended orientation of the mirror  106  is a 45° angle facing the capture device  108 , the true orientation of the mirror  106  may be 45° or slightly different. Performing the calibration may enable the system  400  to identify any difference between the intended orientation of the mirror  106  and the true orientation of the mirror  106 . 
     As stated above, rotation matrix R and translation vector t may represent the transformation from one point in coordinate system to another point. For instance, rotation matrix R and translation vector t may represent the transformation from point X  402  to the image pixel x  406 . However, such a transformation may be based on an ideal projection, meaning that a point in the room  102  is projected directly from a first position to a second position without incurring a turn point. For the purposes of this discussion, a turn point may refer to some object or occurrence that may cause the transformation to occur in an unexpected or unpredicted manner. In these embodiments, one turn point may correspond to the point X  402  being projected from the room  102  to the mirror  106 , and not being projected directly from the room  102  to the image π 1    410 . Here, the mirror  106  would represent the turn point since the mirror  106  may serve as an intermediary between the point X  402  and the image pixel x  406  of the image π 1    410 . Because the point X  402  may not be projected directly to the image π 1    410 , the mirror  106  may have some effect on the projection. 
     An additional turn point may correspond to the projection x′  404  projected to the mirror  106  not being directly projected into the image π 1    410 . Instead, the projection x′  404  may pass through a lens and then be projected in the image π 1    410 . The calibration performed by the server  112  may attempt to identify any turn points and then, once identified, determine the behavior of each turn point. That is, the server  112  may determine how the turn point affects the transformation of a point in the room  102  (e.g., point X  402 ) to its corresponding point (e.g., image pixel x  406 ) in the image π 1    410 . 
     For the turn point corresponding to the mirror  106 , the server  112  may determine the orientation of the mirror  106 , meaning the direction in which the reflecting surface of the mirror  106  is facing. With respect to the lens of the capture device  108 , the server  112  may determine the orientation of the lens facing the image π 1    410 , the curve of the lens surface, and which direction the capture device  108  is facing. With respect to the capture device  108  lens, a set of parameters referred to as intrinsic parameters may be utilized and a set of extrinsic parameters may be used for the capture device  108  orientation and location. The same extrinsic parameters, or similar extrinsic parameters, may be utilized for the turn point relating to mirror  106  position and orientation. Therefore, the server  112  may attempt to determine both the intrinsic parameters and the extrinsic parameters for the capture device  108 , and the extrinsic parameters associated with the mirror  106 . 
     With respect to determining the extrinsic and intrinsic parameters associated with the mirror  106  and the capture device  108 , the server  112  may be aware of the properties of those parameters, but the actual values associated with those parameters may be unknown. To determine the values of the parameters, the server  112  may design a particular pattern  212 , treat that pattern  212  as input, and then project the pattern  212 . The server  112  may then collect the corresponding output resulting from the projected pattern  212  and measure such output(s). Based at least partly on the known inputs and outputs, the server  112  may be able to identify the proper values for the intrinsic and extrinsic parameters. 
     One manner that may be used to identify the parameter values may be referred to as a least square parameter estimation. Using this technique, for each set of inputs and its corresponding outputs, together with the unknown parameters, one equation or a set of equations may be generated. For example, assume that p is the input vector, that q is the output vector, and that u is the parameters vector. If U=(u 1 , u 2 , . . . , u n ), then for m inputs and outputs, q=Up. Moreover, the value of a particular parameter (U) may be determined by utilizing the following equation, U′p=U′Uq. Accordingly, the sever  112  may be able to identify the specific values of the parameters that are associated with the extrinsic and intrinsic parameters relating to the capture device  108  and the intrinsic parameters associated with the mirror  106 . 
     Example Processes 
       FIG. 5  describes various example processes of generating a 3D model of an environment based at least partly on an image of that environment. The example processes are described in the context of the environment of  FIGS. 1-4  but are not limited to those environments. These processes are each illustrated as a logical flow graph, each operation of which represents a sequence of operations that can be implemented in hardware, software, or a combination thereof. In the context of software, the operations represent computer-executable instructions stored on one or more computer-readable media that, when executed by one or more processors, perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures, and the like that perform particular functions or implement particular abstract data types. 
     The computer-readable media may include non-transitory computer-readable storage media, which may include hard drives, floppy diskettes, optical disks, CD-ROMs, DVDs, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, flash memory, magnetic or optical cards, solid-state memory devices, or other types of storage media suitable for storing electronic instructions. In addition, in some embodiments the computer-readable media may include a transitory computer-readable signal (in compressed or uncompressed form). Examples of computer-readable signals, whether modulated using a carrier or not, include, but are not limited to, signals that a computer system hosting or running a computer program can be configured to access, including signals downloaded through the Internet or other networks. Finally, the order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations can be combined in any order and/or in parallel to implement the process. 
       FIG. 5  is a flow diagram illustrating an example process  500  of generating a 3D image of an environment. Moreover, the following actions described with respect to  FIG. 5  may be performed by at least one of the projection device  104 , the mirror(s)  106 , the capture device  108 , the server  112 , or a combination thereof, as shown in  FIGS. 1-4 . 
     Block  502  illustrates determining an orientation of a projection device, one or more mirrors and a capture device in an environment. More particularly, the environment may be representative of a room (e.g., room  102 ) that includes a floor (e.g., floor  202 ), one or more walls (e.g., walls  204 - 210 ), and/or any types of objects included in the room. In addition, the environment may include a projection device (e.g., projection device  104 ), such as a projector, one or more mirrors (e.g., the first mirror  106 ( 1 ), the second mirror  106 ( 2 ), etc.), such as a hyperboloidal mirror, and a capture device (e.g., capture device  108 ), such as a camera or scanner. In some embodiments, the projection device, the one or more mirrors, and the capture device may be located at predetermined locations, such as the one or more mirrors being placed on or near the ceiling of the environment and the projection device and the capture device being placed at a location that is below the reflective surface of the mirror(s). 
     In certain embodiments, the location and orientation of the projection device, the one or more mirrors, and the capture device may be maintained and/or recorded. In addition, the spatial relationship with respect to the above components (e.g., the distances between one another) may also be determined. As a result, the server  112  may be aware of the orientation of the projection device, the one or more mirrors, and the capture device with respect to one another. 
     Block  504  illustrates transmitting a projection to one of the mirrors in order to reflect the projection onto the surroundings of the environment. In various embodiments, the projection device may transmit a projection that is directed towards a first mirror. The projection may include light, such as laser light, or one or more patterns, such as a set of vertical or horizontal lines. 
     In response to receiving the projection from the projection device, the first mirror may reflect the patterns onto the surroundings of the environment. Provided that the environment is a room, the patterns may be reflected by the reflecting surface of the first mirror onto the floor, the walls, and any surface associated with an object (e.g., a table) that is in the room. As stated herein, the first mirror may take any form or shape that is able to reflect the projection onto the surroundings of the environment. In some embodiments, the mirror is a convex hyperboloidal mirror that is in the shape of a dome or hemisphere whose outer surface is utilized to reflect the projection. 
     Block  506  illustrates capturing one or more images of the environment. In particular, after the projection has been reflected onto the surroundings of the environment, the capture device may capture a single image that represents an entire view of the environment, or at least a substantial portion of the environment. The capture device may also capture multiple images or a sequence of images over time. Furthermore, since a second one of the mirrors is able to reflect a view of the entire environment, the one or more images of the entire environment may be obtained as a result of the capture device taking an image of the second mirror. Therefore, the one or more images may display the surroundings of the environment, including the projection that has been reflected thereon. The one or more images may be captured without having to rotate the capture device and without having to take multiple overlapping images of the room and then having to merge those overlapping images into a single image. 
     Block  508  illustrates analyzing the one or more images and the projection to calculate a disparity. Upon obtaining the single image, the server  112  may analyze the one or more images and the projection in order to calculate or determine any disparities, as set forth above with respect to  FIGS. 1-5 . 
     Block  510  illustrates generating a three-dimensional model of the environment based on the calculated disparity. More particularly, the server may reconstruct a 3D model of the environment based at least partly on the one or more images that portray the environment. Once generated, the server may determine a region or an appropriate surface in the room (e.g., floor, wall, other flat surface, etc.) for projecting text, graphics, images, etc. 
     CONCLUSION 
     Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as illustrative forms of implementing the claims.