Patent Publication Number: US-9836881-B2

Title: Heat maps for 3D maps

Description:
CROSS REFERENCE TO RELATED APPLICATIONS/INCORPORATION BY REFERENCE 
     The present U.S. Utility patent application claims priority pursuant to 35 U.S.C. §119(e) to U.S. Provisional Application No. 61/834,125, entitled “Heat Maps for 3D Maps,” filed Jun. 12, 2013, which is hereby incorporated herein by reference in its entirety and made part of the present U.S. Utility patent application for all purposes. 
     The present application is related to the following:
     1. U.S. Utility patent application Ser. No. 13/624,816 (U.S. Pub. No. 2013-0069944), filed Sep. 21, 2012, entitled, “Three-Dimensional Map System,” pending, and   2. U.S. Utility patent application Ser. No. 12/265,656, filed Nov. 5, 2008, entitled, “Method and System for Geometry Extraction, 3D Visualization and Analysis Using Arbitrary Oblique Imagery,” now U.S. Pat. No. 8,422,825.   

     Both applications are hereby incorporated herein by reference in their entirety and made part of the present application for all purposes. 
    
    
     FIELD 
     The present disclosure relates generally to an interactive three-dimensional map system, and more particularly, to a system and method for generating, updating, and interacting with an interactive three-dimensional map system with location-based information. 
     BACKGROUND 
     Location-based technologies and mobile technologies are often considered the center of the technology revolution of this century. Essential to these technologies is a way to best present location-based information to devices, particularly mobile devices. The technology used to represent this information so far has typically been based on a two dimensional map. 
     Some efforts have been made to generate a three-dimensional map of urban cities via aerial imagery or specialized camera-equipped vehicles. However, these three-dimensional maps have typically had limited texture and were difficult to update. However, as high quality 3D maps become available, they offer opportunities to extend additional information through unique highlighting representations of various subject areas of interest. Disadvantages of conventional approaches will be evident to one skilled in the art when presented in the disclosure that follows. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The figures depict various embodiments of the present disclosure for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the present disclosure described herein. 
         FIG. 1  is a system architecture of a three-dimensional map system in accordance with the present disclosure; 
         FIG. 2  is a control flow of an image mapper system in accordance with the present disclosure; 
         FIG. 3  is a control flow of a map generation system in accordance with the present disclosure; 
         FIG. 4  is a flow chart of a method of generating a 3D map from collected images in accordance with the present disclosure; 
         FIG. 5  is a diagrammatic representation of a machine in the example form of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies or modules discussed herein, may be executed in accordance with the present disclosure; and 
         FIG. 6  illustrates one embodiment of an interactive 3D map generated by the 3D map system using one or more of the methodologies or modules discussed herein in accordance with the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     The technology described herein provides a unique representation of location related data on objects within a three-dimensional (3D) map. The 3D map, in one embodiment, includes a 3D building model with roof images, building textures and facades mapped on surfaces of the 3D building model. The 3D building model is representative of a physical building in the real-world. A map generation system is described. The map generation system, in one embodiment, includes one or more selections from within a 3D building model corresponding to a physical building in the real-world based on an uploaded image. In one embodiment, the uploaded image is a photograph of the physical building and includes, for example, an uploaded image of the facade of the physical building. The uploaded image is mapped as a facade of the building model. 
     A three-dimensional map provides advantages over a two-dimensional map. For example, a three-dimensional map includes accurate representations of buildings in a city. Using the technology described herein, these representations are used to deliver information to users who view the map. These representations include in various example embodiments, a recognizable unique display of the building&#39;s roof, façade, or other close proximity objects of interest to a viewer of the three-dimensional map. The roof, in one embodiment, is non-textured, flat and uniquely colored to represent information of interest (e.g., aggregated data). 
     Aggregated data includes, but is not limited to, information provided by one or more sources about the building such as type (e.g., office space, condos, etc.), age, square footage, zoning, business types (e.g. industrial, commercial, professional, etc.), information pertaining to occupants of the building (e.g., occupation, age, marital status, retired, education levels, employment status, etc.) or information about activities in or around the building (e.g., crime, social outings, recreational opportunities, education opportunities (e.g., school information)). In addition, aggregated data in some embodiments further includes aggregation of social media, pictures, advertising and/or news related to the building or points of interest associated with the building. 
     In other embodiments, the roof of the 3D building representation is textured in a uniquely recognizable manner. In additional embodiments, facades and other near 3D objects within the 3D map are modified in the three-dimensional model using similar techniques to those used in creating the roof embodiment without departing from the scope of the technology described herein. For example, bus stop locations (e.g., sign, shelter, etc.) along a continuous bus route are colored the same or alternatively all bus stops picking up at the same time are designated as the same color. In yet another embodiment, billboards comprise uniquely recognizable text, graphics, colors, logos etc. to designate aggregated advertising throughout the 3D map using similar techniques as disclosed in the specification that follows. 
     Building model selection is performed automatically or semi-automatically, such as having the user make some or all of the selection. With semi-accurate geo-location information associated with the street level image of the building in question, the engine determines, through a combination of logic modules and computer vision algorithms, the three dimensional building model in question. 
     Disclosed are methods and systems of generating an interactive three-dimensional map, and more particularly, a system and method for creating, interacting with and updating the three-dimensional model to include relevant information (e.g., aggregated data). The techniques introduced here can be applied to any one of a number of types of three-dimensional maps that provide an accurate geo-location. In one embodiment, the three dimensional maps are created from data extracted from one two-dimensional orthogonal image, two or more two-dimensional oblique images, one or more ground-based images, a digital elevation model, or a combination thereof. Commonly assigned, U.S. Pat. No. 8,422,825, incorporated herein by reference in its entirety, provides additional example systems and methods of creating 3D maps/models. In another embodiment, the three dimensional maps are generated by the techniques described in association with  FIGS. 2-6 . Other known or future methods of creating the 3D map are considered within the scope of the technology described herein. For example, the methods and systems of the technology described herein are applicable to any generated 3D map. In addition, uniquely recognizable information includes, in various embodiments, non-visual cues, such as sound, tactile feedback, music, etc. Each of these alternative embodiments is considered within the scope of the technology described herein. 
     Additionally, a user&#39;s interaction with various point-of-interest, their search strategies or filtering selections, for example the time that a user spends looking at a building on the three-dimensional map, can be provided to a business owner that is located in the building and the business owner can make business plans based on the users&#39; interactions. 
     Referring now to  FIG. 1 , there is shown a system architecture of a three-dimensional map system  100 . The three-dimensional map system  100 , in one embodiment, includes an image process system  102  and a map generation system  104 . The map generation system  104  and the image process system  102  are coupled via a network channel  106 . The image process system  102  is a computer system for processing images in preparation for mapping the images to a 3D environment. The image process system  102 , in one embodiment is implemented using computer system  500  of  FIG. 5 . The map generation system  104  is a computer system for providing a three-dimensional (3D) environment. The map generation system  104 , in one embodiment, uses the computer system  500  of  FIG. 5 . The network channel  106  is a system for communication. The network channel  106  in various embodiments encompasses one or more of a variety of mediums of communication, such as via wired communication for one part and via wireless communication for another part. The network channel  106 , in one embodiment, is implemented as part of the Internet and includes systems, processing, and/or storage on cloud based servers. 
     For example, the network channel  106  includes an Ethernet or other wire-based network or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network, such as a WI-FI network. The network channel  106  includes any suitable network for any suitable communication interface. As an example and not by way of limitation, the network channel  106  includes an ad hoc network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), or one or more portions of the Internet or a combination of two or more of these. One or more portions of one or more of these networks are wired and/or wireless. As another example, the network channel  106  is a wireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a 3G or 4G network, a cellular telephone network (such as, for example, a Global System for Mobile Communications (GSM) network). 
     In one embodiment, the network channel  106  uses standard communications technologies and/or protocols. Thus, the network channel  106  includes links using technologies such as Ethernet, 802.11, worldwide interoperability for microwave access (WiMAX), 3G, 4G, CDMA, digital subscriber line (DSL) or equivalents. Similarly, the networking protocols used on the network channel  106 , uses for example one or more of: multiprotocol label switching (MPLS), the transmission control protocol/Internet protocol (TCP/IP), the User Datagram Protocol (UDP), the hypertext transport protocol (HTTP), the simple mail transfer protocol (SMTP), and the file transfer protocol (FTP). The data exchanged over the network channel  106  can be represented using technologies and/or formats including the hypertext markup language (HTML) and the extensible markup language (XML). In addition, all or some of links can be encrypted using conventional encryption technologies such as secure sockets layer (SSL), transport layer security (TLS), and Internet Protocol security (IPsec). 
     In one embodiment, the image process system  102  collects images uploaded from capture devices  108 . The capture devices  108  are defined as electronic devices for capturing images. For example, the capture devices  108  include, for example, a camera, a phone, a smart phone, a tablet, a video camera, a security camera, a closed-circuit television camera, a computer, a laptop, a webcam, a pair of electronic glasses, photosensitive sensors, an airplane mounted camera, vehicle mounted camera, satellite, or any combination thereof. The capture devices  108  can directly upload to the image process system  102  via the network channel  106 , or can indirectly upload the images. For example, the images can be uploaded to a computer or a server first before being uploaded to the image process system  102 . For another example, the images can be transferred from a camera first to a networked computer and then transferred to the image process system  102 . 
     In one embodiment, the image process system  102  processes the images collected. A photograph image of the images collected can be mapped to a specific building. The photograph image can also be mapped on a particular surface or region of the building. The mapping is updated to a facade database in the map generation system  104 . The map generation system  104 , according to the mapping stored on the facade database, can render a 3D environment  110  for display on a viewer device  112 . The 3D environment  110  is defined as a 3D map including virtual representation of physical world buildings. The 3D environment  110  can also include 3D models of landscape and terrain. 
     The viewer device  112  is defined as a display device. For example, the viewer device  112  can be a computer with a monitor, a laptop, a touch screen display, a LED array, a television set, a projector display, a phone, a smartphone, a tablet computer, a pair of electronic glasses or any combination thereof. The viewer device  112  can include a computer system, such as a computer system  500  of  FIG. 5 , for processing the 3D environment  110  for display. 
     Referring now to  FIG. 2  therein is shown a control flow of an image mapper system  200 . The image mapper system  200  can be part of the three-dimensional map system  100  of  FIG. 1 . The image mapper system  200  is for mapping a consumer uploaded image to a particular surface of a building model associated with a physical building. The image mapper system  200  is a computer system with at least one processor and one non-transitory memory. The image mapper system  200  can be the image process system  102  of  FIG. 1 . The image mapper system  200  can also be on the same computer system as the map generation system  104  of  FIG. 1 . The image mapper system  200  can be computer system  500  of  FIG. 5 . 
     The image mapper system  200  can include one or more methods of mapping a consumer uploaded image. The one or more methods can be implemented by components, storages, and modules described below. The modules can be implemented as hardware modules/components, software modules, or any combination thereof. For example, the modules described can be software modules implemented as instructions on a non-transitory memory capable of being executed by a processor or a controller on a machine as described in  FIG. 5 . 
     Each of the modules can operate individually and independently of other modules. Some or all of the modules can be combined as one module. A single module can also be divided into sub-modules, each performing separate method step or method steps of the single module. The modules can share access to a memory space. One module can access data accessed by or transformed by another module. The modules can be considered “coupled” to one another if they share a physical connection or a virtual connection, directly or indirectly, allowing data accessed or modified from one module to be accessed in another module. 
     The storages or “stores”, described below are hardware components or portions of hardware components for storing digital data. Each of the stores can be a single physical entity or distributed through multiple physical devices both locally as well as remotely (e.g., server farms, cloud based servers, etc.). Each of the stores can be on separate physical device or share the same physical device or devices. Each of the stores can allocate specific storage spaces for run-time applications. 
     The image mapper system  200  can include additional, fewer, or different modules for various applications. Conventional components such as network interfaces, security functions, load balancers, failover servers, management and network operations consoles, and the like are not shown so as to not obscure the details of the system. 
     In one embodiment, the image mapper system  200  includes collection module  202 . Collection module  202  is for collecting photographs, such as photographs of physical buildings, from consumer devices. For example, the collection module  202  can collect a photograph image  204  of a physical building from a user device, such as the capture devices  108  of  FIG. 1 . The collection module  202  can download not only the photograph image  204 , but a metadata entry  206  related to the photograph image  204 . For example, the collection module  202  can capture a creation date of the photograph, an upload date of the photograph, compass information, other directional information, relational position information, a geographical location tag of where the photograph image  204  is taken, an identifier of the photographer, or any combination thereof. 
     The image mapper system  200  can include a sort module  208 . The sort module  208  is for sorting the photographs collected by the collection module  202 . For example, the sort module  208  can sort the collected photographs by date of creation. An administrator of the image mapper system  200  can set a threshold time duration beyond which the photograph image  204  expires. When the photograph image  204  has a creation date prior to a threshold duration, the photograph image  204  can be sorted out of the system. 
     For another example, the sort module  208  can sort the collected photographs by geo-location. The sort module  208  can organized the photograph image  204  based on the geographical location to activate a pre-process module  210  and a selection module  212  for that specific geographical location. 
     The image mapper system  200  can include the pre-process module  210 . The pre-process module  210  is for processing photographs by removing certain features of the photographs. For example, the pre-process module  210  can include removal of obstructions from the photograph image  204 . The photograph image  204  can include a facade of a physical building. The obstructions are defined as features of the photograph image  204  that are not part of the facade. The obstructions, for example, can include mobile objects, such as vehicles, pedestrians, posters, or any combination thereof. The obstruction, for example, can also include background features, such as landscape, skyscape, rain, fog, smoke, foliage, civil infrastructures, or any combination thereof. The removal process can be done semi-automatically. For example, the photograph image  204  can be shown to a viewer or a trained professional with segmentations overlaid on a display. The viewer or trained professional can then select the segmentations that are considered as obstructions for removal. 
     The pre-process module  210  can utilize machine learning models to segment out parts of the photograph image  204  that represent the obstructions. The pre-process module  210  can be based on a geometric classifier based on features of the photograph image  204 . For example, the photograph image  204  can be processed by the classifier to identify two pedestrians, one car, and two trees. After the obstruction is classified by the geometric classifier, the pre-process module  210  can further determine whether an obstruction of the type exists by, for example, a support vector machine for the particular type of the obstruction. Other machine learned models can be used for detecting the obstruction, such as heuristics, mixture models, Markov models, or any combination thereof. These models used can also calculate the likelihood that an obstruction of the type exists. The likelihood can then be thresholded to make a decision of whether the obstruction should be removed. The boundaries of the obstruction can be determined by the machine learned models or any type of segmentation modules. 
     The image mapper system  200  can include the selection module  212 . The selection module  212  is for selecting a building model  214  corresponding to a facade captured by the photograph image  204  or selected by a user from an existing two or three dimensional image (e.g., map shown on the display of their hand held device). The building model  214  can be selected from a models database store  216 . The models database store  216  is a store of building models corresponding to physical buildings. 
     The selection process can include multiple layers. For example, a first selection layer can include determining a set of buildings within a geographical location and/or camera orientation/direction of the photograph image  204 . The geographical location of the photograph image  204  can be determined from the metadata entry  206  of the photograph image  204 , where the metadata entry  206  may have been captured by sensors of the capture devices. 
     The selection module  212  can also include a second selection layer. In the second selection layer, the selection module  212  can narrow down the set by comparing the photograph image  204  against contents of an image database store  218  corresponding to each building in the set. The stored facades in the image database store  218  can each correspond to a building model in the models database store  216 . 
     For both selection layers, a certainty probability of whether the correct building model is selected is calculated by the selection module  212 . In one embodiment, if the certainty probability is below a threshold, the selection module  212  can send the photograph image  204  to a user interface for semiautomatic selection. An array of neighboring building models and corresponding facades can be shown at the user interface. The photograph image  204  can also be displayed on the user interface. Through the user interaction, a user can select the correct neighboring building model that matches what is captured by the photograph image  204 . 
     The image database store  218  is a data store of the image mapper system  200 . The image database store  218  includes images previously processed and mapped, where the images were previously determined to correspond to particular building models of physical buildings. Hence, for each building model, the image database store  218  can include previously authenticated or validated facade images. Once validated, the photograph image  204  can be stored in the image database store  218  as well, including the processed version of the photograph image  204  after the processing of the pre-process module  210 . 
     The comparison between the photograph image  204  and an image corresponding to a building model can include color distribution matching or texture matching. Each building model in the set is ranked in the comparison. A subset of the set is selected by the selection module  212  for further analysis. In one embodiment, the building model  214  can be determined at the second selection layer of the selection module  212 . In some embodiments, the second selection layer can occur after the pre-process module  210  has removed the obstructions in the photograph image  204 . In other embodiments, the second selection layer can occur before the pre-process module  210  has removed the obstructions. 
     The image mapper system  200  can include a region match module  220 . The region match module  220  is for mapping regions of the photograph image  204  to regions of a facade image in the image database store  218 . The facade image is an image in the image database store  218  corresponding to the building model  214 . The selection of the building model  214  can occur in the selection module  212 . 
     Each region in the facade image can be defined based on heuristics of what a regular feature on a facade looks like. For example, the heuristics can include classes such as sign board, lighting, window, door, roof, other structural modular objects, or any combination thereof. Each region can also be defined based on image segmentation algorithms. 
     Each region in the facade image is matched against each region in the photograph image  204 . The matching can occur such that even if the camera conditions (angle, distance, focus, etc.) of the photograph image  204  is different from the stored facade image, the photograph image  204  can be stretched in such a way that regions of the photograph image  204  can still be mapped. Matched regions are annotated as being mapped to each other. The mapping, such as an image map  222 , can be saved and reflected in the models database store  216  and/or the image database store  218 . 
     The image mapper system  200  can include a pixel match module  224 . The pixel match module  224  is for mapping pixels of the photograph image  204  to pixels of the facade image in the image database store  218 . Each pixel in the facade image is matched against pixels of the photograph image  204 . In one embodiment, the mapping can be a one-to-one mapping. In other embodiments, the mapping can be one-to-many or many-to-one. The pixels can be mapped to one another in a manner that pixels in one region of the facade image is mapped to pixels in the corresponding region of the photograph image  204  based on the stored mapping of the regions. 
     Both the region match module  220  and the pixel match module  224  can calculate the certainty probability that each mapping is correct. In one embodiment, if the certainty probability is below a threshold, the region match module  220  and the pixel match module  224  can send the photograph image  204  to a user interface for semiautomatic selection. An array of neighboring regions or pixels and corresponding facades can be shown at the user interface. The photograph image  204  can also be displayed on the user interface. Through the user interaction, a user can indicate the right mapping between neighboring regions and pixels. 
     The image mapper system  200  can include an obstruction object store  226 . The obstruction object store  226  can be a store that contains the images and classification of obstructions removed by the pre-process module  210  for the photograph image  204 . The contents of the obstruction object store  226  can be used to perform data analysis for displaying on the 3D map system. For example, if the same car is repeatedly determine to be parked at a particular spot; the 3D map system can tag that car as being a frequent visitor of that location. For another example, if a lot of pedestrian traffic is detected at a lounge bar location and captured by the obstruction object store  226 , the increased in traffic can be used to alert the bar owner about when their store is most popular. 
     The image mapper system  200  can include an update module  228 . The update module  228  is for updating a map generation system the mappings made for the photograph image  204  to the building model  214 . For example, the image map  222  can be send to the map generation system for displaying the mapped photograph on a rendered building model. The update module  228  can also send the contents of the obstruction object store  226  to the map generation system for displaying or for generating alert indicators. 
     The techniques introduced in the modules below can be implemented by programmable circuitry programmed or configured by software and/or firmware, or they can be implemented by entirely by special-purpose “hardwired” circuitry, or in a combination of such forms. Such special-purpose circuitry (if any) can be in the form of, for example, one or more application-specific integrated circuits (ASICs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), etc. 
     Software or firmware for implementing the techniques introduced here may be stored on a machine-readable storage medium and may be executed by one or more general-purpose or special-purpose programmable microprocessors. A “machine-readable medium,” as the term is used herein, includes any mechanism that can store information in a form accessible by a machine (a machine may be, for example, a computer, network device, cellular phone, personal digital assistant (PDA), manufacturing tool, any device with one or more processors, etc.). For example, a machine-accessible medium includes recordable/non-recordable media (e.g., read-only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; etc.), etc. 
     The term “module,” as used herein, can include, for example, special-purpose hardwired circuitry, software and/or firmware in conjunction with programmable circuitry, or a combination thereof. 
     The modules or stores described in the image mapper system  200  can be stored on or executed on the image process system  102  of  FIG. 1 , however, it is understood that some or all of the modules can also be stored on or run on the map generation system  104  of  FIG. 1 . For example, the models database store  216  can be a store in the image process system  102  or the map generation system  104 . 
     Referring now to  FIG. 3 , an embodiment with control flow of a map generation system  300  is shown. The map generation system  300  can be part of the three-dimensional map system  100  of  FIG. 1 . The map generation system  300  is for generating a three-dimensional map from at least geo-coded facade corresponding to a three-dimensional building model. The map generation system  300  is a computer system with at least one processor and one non-transitory memory. The map generation system  300  can be the map generation system  104  of  FIG. 1 . The map generation system  300  can also be on the same computer system as the image process system  102  of  FIG. 1 . The map generation system  300  can be the computer system of  FIG. 5 . 
     The map generation system  300  can include one or more methods of generating a three-dimensional map. The one or more methods can be implemented by components, storages, and modules described below. The modules can be implemented as hardware components, software modules, or any combination thereof. For example, the modules described can be software modules implemented as instructions on a non-transitory memory capable of being executed by a processor or a controller on a machine described in  FIG. 5 . 
     Each of the modules can operate individually and independently of other modules. Some or all of the modules can be combined as one module. A single module can also be divided into sub-modules, each performing separate method step or method steps of the single module. The modules can share access to a memory space. One module can access data accessed by or transformed by another module. The modules can be considered “coupled” to one another if they share a physical connection or a virtual connection, directly or indirectly, allowing data accessed or modified from one module to be accessed in another module. 
     The storages or “stores”, described below are hardware components or portions of hardware components for storing digital data. Each of the storage can be a single physical entity or distributed through multiple physical devices. Each of the storage can be on separate physical device or share the same physical device or devices. Each of the stores can allocate specific storage spaces for run-time applications. 
     The map generation system  300  can include additional, fewer, or different modules for various applications. Conventional components such as network interfaces, security functions, load balancers, failover servers, management and network operations consoles, and the like are not shown so as to not obscure the details of the system. 
     The map generation system  300  can be coupled to an image process system  302 . The image process system  302  is a computer system for processing images, such as the image process system  102  of  FIG. 1  or the image mapper system  200  of  FIG. 2 . 
     The map generation system  300  can include a models database store  304 . The models database store  304  is a store on the map generation system  300  for storing building models for use in the overall 3D map system. The models database store  304  can be the models database store  216  of  FIG. 2 . The models database store  304  can also be a replicated, synched, or mirrored copy of the models database store  216 . 
     The map generation system  300  can include a facade database store  306 . The facade database store  306  is a store on the map generation system  300  for storing facades for building models for use in the overall 3D map system. Each building model can have one or more facades. Each surface of each building can also have one or more facades. The facades can be received from the image process system  302 . For example, the photograph image  204  of  FIG. 2 , once mapped to a building model, can be stored as a facade for the building model on the facade database store  306 . 
     In one embodiment, the facade database store  306  can be the image database store  218  of  FIG. 2 . In another embodiment, the facade database store  306  can be synched and mirrored with the image database store  218  of  FIG. 2 . 
     The map generation system  300  can include a render module  308 . The render module  308  is for generating a 3D map environment. For example, the render module  308  can generate the 3D map by rendering building models for displaying on a viewer station  310 . 
     The render module  308  can include a mapper module  312 . The mapper module  312  is for mapping facades in the facade database store  306  onto surfaces of building models in the models database store  304 . For example, the facade database store  306  contains the photograph image of a facade of a physical building. Mapping of the photograph image to a building model corresponding to the physical building can be used to texture the building model with the photograph image. The mapper module  312  can texture the rendered building models. These mappings can be provided by the image process system  302 . 
     The map generation system  300  can include a navigation module  314 . The navigation module  314  is for traversing through the 3D map environment generated by the render module  308 . For example, a user operating the viewer station  310  can use arrow keys or mouse to move about the 3D map environment that is rendered in real-time. The viewer station  310  can display representations of physical buildings in different perspective as the user navigates from different perspective position and direction in the 3D map. The navigation module  314  facilitates that navigation and coordinates the re-rendering of the building models and the facades. 
     The render module  308  can include a widget module  316 . The widget module  316  is for providing a widget along side or on a facade. For example, the widget module  316  can communicate with a social network via an external communication module  318 . The widget module  316  can display a feed of a page on the social network on a facade of a building model, wherein the page is for the tenant of the physical building represented by the building model. For example, the social network can include any social network, social application or any other location-based service, or any combination thereof. The social feed of a tagged user account can be displayed on the facade, where the tagged user account has been tagged on a geo-location basis corresponding to the location of the rendered facade. 
     For another example, the widget module  316  can display an interactive portal for communication on a facade of a building model. The communication is for any combination of a tenant of the physical building represented by the building model, a user of the viewer station  310 , or a third party. 
     For yet another example, the widget module  316  can display an advertisement object on a facade of a building model. The advertisement object can be text, a multimedia object, an image, an interactive multimedia object, or any combination thereof. The advertisement object can be targeted at the user of the viewer station  310 . The advertisement object can be sponsored by a tenant of the physical building represented by the building model. 
     The widget module  316  can also provide a virtual ruler. The virtual ruler can be tied to the real-world, such that viewers of the 3D map system can use the virtual ruler to measure buildings and landscape in the physical world. 
     The map generation system  300  can include an interaction module  320 . The interaction module  320  is for processing and recording interactions received from the viewer station  310 . For example, the interaction module  320  can serve multiple functions. The interaction module  320  can serve to receive inputs from the viewer station  310  about the direction and position of the 3D map to traverse to. In this example, the interaction module  320  can be coupled to the navigation module  314  to re-render the 3D map for the viewer station  310 . 
     The interaction module  320  can also receive inputs from the viewer station  310  to interaction with an external system, such as a social network system, a communication service, or a point-of-interest website. In one specific example, the interaction module  320  can receive voice or text inputs for a user of the viewer station  310  to communicate through a communication portal provided by the widget module  316 . 
     The interaction module  320  can further receive feedback inputs for the image process system  302 . The feedback inputs can be processed by a feedback module  322 . The user of the viewer station  310  can comment on or interact with items displayed on facades rendered by the mapper module  312 . The user can also comment on or interact with the building models themselves. These comments and interactions can be piped back to the image process system  302  for processing. For example, the user can select a region of a facade to indicate that there is a texture mismatch. The image process system  302  can then take that feedback to correct the mapping of the facade. The user can also provide an explanation of the texture mismatch. 
     A user&#39;s interaction with a point-of-interest, for example, the time that a user spends looking at a building on the three-dimensional map, can be recorded by the interaction module  320 . The interaction module  320  can then provide that information to a business owner that is located in the physical building represented by the building model. The interaction module  320  can collect hyper-accurate information relating to where the user (i.e., a person viewing the map) is focusing. For example, if the user is looking at the facade, for thirty seconds while reading the social network feeds, etc., this information can be tracked in a database and provided to the establishment owner for marketing purposes. If the user then moves on to a second point on the three-dimensional map, that position information can be recorded as well. This is an advance over two-dimensional maps because it is difficult to determine on which objects the viewer of a two-dimensional map is focusing. 
     In one embodiment, building object footprints or geometries are conflated with other geo-specific data. In one embodiment, specific colors will be assigned to data value ranges, corresponding building rooftops will be textured or other object faces will be instantiated with appropriate color value to convey building or region-specific knowledge as will be discussed further. In one embodiment, detailed calculations or math may be represented by visual cues within the 3D model. For example, a heat map display can reference object databases, calculated object centroids (3D or 2D), elevations, or other physical attributes of object or building geometries or textures. 
     The map generation system  300  can include a highlight module  324 . The highlight module  324  is for detecting changes in facades of building models, including specific regions or as a whole. The highlight module  324  can also coordinate with the render module  308  to highlight the region of the facade that has changed. As new facades for a building model is uploaded from the image process system  302 , the highlight module  324  can analyze the new mapped photos to highlight the regions in those photos that are different from the previous versions of stored facades. In some embodiment, the region match module  220  of  FIG. 2  can provide the information about which regions of the facade has been changed. 
     The highlight module  324  can be used in a variety of applications. The detected change can be used for inspection. The detected change can be used for detecting patterns of change. For example, the highlight module  324  can indicate that the door of this building appears to open everyday at 7 AM by recognizing a regional change of the facade image at the door of the building model. The detected change can further be used for user search and contextual information. 
     The highlight module  324  can be used to indicate locations needing repair. This can be used by a building owner or a city inspector. This can also be used for utility companies, insurance, and tax assessors who need to constantly inspect buildings in a city. Hence, the highlight module  324  can be coupled to external systems, such as an inspection system, an assessment system, an insurance calculation system, a repair detection system, or any combination thereof. The highlight module  324  can be used to make social statements. 
     The techniques introduced in the modules below can be implemented by programmable circuitry programmed or configured by software and/or firmware, or they can be implemented by entirely by special-purpose “hardwired” circuitry, or in a combination of such forms. Such special-purpose circuitry (if any) can be in the form of, for example, one or more application-specific integrated circuits (ASICs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), etc. 
     Software or firmware for implementing the techniques introduced here may be stored on a machine-readable storage medium and may be executed by one or more general-purpose or special-purpose programmable microprocessors. A “machine-readable medium,” as the term is used herein, includes any mechanism that can store information in a form accessible by a machine (a machine may be, for example, a computer, network device, cellular phone, personal digital assistant (PDA), manufacturing tool, any device with one or more processors, etc.). For example, a machine-accessible medium includes recordable/non-recordable media (e.g., read-only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; etc.), etc. 
     The term “module,” as used herein, can include, for example, special-purpose hardwired circuitry, software and/or firmware in conjunction with programmable circuitry, or a combination thereof. 
     The modules or stores described in the map generation system  300  can be stored on or executed on the map generation system  104  of  FIG. 1 , however, it is understood that some or all of the modules can also be stored on or run on the image process system  102  of  FIG. 1 . For example, the models database store  304  can be a store in the image process system  102  or the map generation system  104 . 
     Referring now to  FIG. 4  therein is shown a flow chart of a method  400  of generating and conveying uniquely recognizable representations on a 3D map from collected data. The collected data is, in various embodiments, aggregated, filtered, sorted, mapped, stored for display, and updated. The method  400  includes a method step  401  of receiving an image and one or more geo-location tags of visible objects within the image (viewable). 
     Method step  402  processes the image to recognize all visual objects (e.g., rooftops) within one or more instances of the 3D map. 
     Method step  403  includes determining one or more subjects (information) or aspects of one or more subjects of interest to a viewer of the 3D map. Information of interest includes, but is not limited to: information provided by one or more sources about the building such as type (e.g., office space, condos, etc.), age, square footage, zoning, business types (e.g. industrial, commercial, professional, etc.), information pertaining to occupants of the building (e.g., occupation, age, marital status, retired, education levels, employment status, etc.) or information about activities in or around the building (e.g., crime, social outings, recreational opportunities, education opportunities (e.g., school information)). In addition, aggregated data in some embodiments further includes aggregation of social media, pictures, advertising and/or news related to the building or points of interest associated with the building. 
     Method step  403  is performed automatically, manually or a combination of both (semi-automatically). In various embodiments, information of interest is gleamed by a user manual input search request (e.g., “let me see all commercial buildings within a 5 mile radius of my location (or an input location (e.g., address) with open space for rent”); automatically based on the viewer&#39;s profile and/or the general geography/topography of the viewable space (e.g., I just turned 21 and the viewable 3D map includes buildings with restaurants/bars serving alcohol); using preselected filters to push visual information possibly of interest to the user (e.g., highest concentration of occupations within buildings in the viewable space of 3D map); and/or selecting a subject or topic of interest for a physical building based on the geo-location tag. 
     Method step  404  includes comparing the determined one or more subjects (information) of interest to a viewer with objects within the visible space of the 3D map. 
     Method step  405  includes obtaining a data set for the determined information of interest within the viewable space. The data set is, in various embodiments, obtained locally or remotely: from third party data providers; an associated search result (using known or future search engines); or created on the fly from available data sets using known collection, aggregation and filtering techniques. The specific data, data type, storage location or method of collection does not limit the technology described herein. 
     Method step  406  includes mapping the data set to one or more objects (e.g., rooftops) within the existing viewable 3D map space. The mapping includes, in various embodiments, assigning numerical representation such as a count, range or other aggregated representation for the data set. For example, as shown in  FIG. 6 , a total of 1,000 rental units are available to rent in the buildings of the viewable 3D map space, a range is created for each building within the visible 3D map space. The ranges would be for number of available units for rent per building; for example, 1-5 units, 5-10, greater than 10, greater than 20, etc. A unique identifier, such as a unique color of a heat map, is assigned to each range. Once mapped, step  407  implements a uniquely recognizable method of highlighting one or more objects within the 3D map viewable space  600  to reflect the mapped data set. In one embodiment, one or more rooftops (e.g.,  606 ) within the viewable space of the 3D map  600  are highlighted with a unique color  601 - 604  representing each range within the data set. For example, roofs with a range of 1-5 available units are highlighted in a purple color ( 601 ); roofs with a range of 5-10 available units are highlighted in a blue color ( 602 ); roofs with a range greater than 10 available units are highlighted in an orange color ( 603 ), and roofs with a range greater than 20 available units (e.g., large buildings) are highlighted in a red color ( 604 ). A reverse assignment of colors to objects within a sequential range of colors (e.g., visible light spectrum), for example, highest to lowest and other color schemes (e.g., green, yellow, red) are considered within the scope of the technology described herein. 
     In an alternative embodiment, a plurality of data sets is mapped for one or more buildings within the viewable 3D map space. For example, again referring to  FIG. 6 , a building rooftop&#39;s visible space is segmented to represent unique data subjects. In one example embodiment, rooftops within the viewable 3D map space receive a segment of a specific color to represent a specific mapping from a collected data set on that subject. For example, rooftop  607  has three color segments, blue ( 602 ), orange ( 603 ) and red ( 604 ) to represent that this building has rentals available (blue), has a primary demographic age group 55+ restriction (orange) and has a no pet policy (red). In this example, another building, for example, displays on its rooftop only two color segments ( 608 ) as the building has rentals available (red), no pet policy (blue), but has no age restrictions or data available on this subject. In an alternative embodiment, each subject color designation includes gradient color changes to represent statistical variances of that particular subject matter (e.g., light red to dark red to indicate an increasing number of available rentals (least to most). And finally, as data sets change over time, the user selects a different viewpoint, new 3D map space to view or other objects (e.g., rooftops) become visible, one or more of the method steps  401 - 407  are repeated and the 3D map updated to reflect the changes (step  408 ). Although not shown, all data sets are stored in non-transitory memory for display when requested. In addition, only a few rooftops were highlighted in the example embodiment for purposes of illustration. However, any number, including all or none of the objects within the 3D map viewable space will be highlighted during implementation. 
     The method steps, in one embodiment, include data sets including advertisements (e.g., from a restaurant owner). One advantage of generating the three-dimensional map as described above and having an open environment is that map users can add information (e.g., advertisements for an establishment) to the three-dimensional model as shown targeting viewers who are looking at a 3D map which includes a representation of the establishment. Alternately, the uploaded data from all restaurants is aggregated and mapped onto rooftops with restaurants in the associated building. In one example embodiment, a color gradient is used on rooftops to designate which buildings have open reservations (e.g., a gradient of colors from green-to-red (bright green for completely open, lighter green for less openings to light red for mostly full to bright red for completely full, etc.)) 
     Referring now to  FIG. 5 , therein is shown a diagrammatic representation of a machine in the example form of a computer system  500  within which a set of instructions, for causing the machine to perform any one or more of the methodologies or modules discussed herein, may be executed. 
     In the example of  FIG. 5 , computer system  500  includes a processor, memory, non-volatile memory, and an interface device. Various common components (e.g., cache memory) are omitted for illustrative simplicity. The computer system  500  is intended to illustrate a hardware device on which any of the components depicted in the example of  FIGS. 1-4  (and any other components described in this specification) can be implemented. The computer system  500  can be of any applicable known or convenient type. The components of the computer system  500  can be coupled together via a bus or through some other known or convenient device (e.g., wirelessly). 
     This present disclosure contemplates the computer system  500  taking any suitable physical form. As example and not by way of limitation, computer system  500  may be an embedded computer system, a system-on-chip (SOC), a single-board computer system (SBC) (such as, for example, a computer-on-module (COM) or system-on-module (SOM)), a desktop computer system, a laptop or notebook computer system, an interactive kiosk, a mainframe, a mesh of computer systems, a mobile telephone, a personal digital assistant (PDA), a server, or a combination of two or more of these. Where appropriate, computer system  500  may include one or more computer systems  500 ; be unitary or distributed; span multiple locations; span multiple machines; or reside in a cloud, which may include one or more cloud components in one or more networks. Where appropriate, one or more computer systems  500  may perform without substantial spatial or temporal limitation one or more steps of one or more methods described or illustrated herein. As an example and not by way of limitation, one or more computer systems  500  may perform in real time or in batch mode one or more steps of one or more methods described or illustrated herein. One or more computer systems  500  may perform at different times or at different locations one or more steps of one or more methods described or illustrated herein, where appropriate. 
     The processor may be, for example, a conventional microprocessor such as an Intel Pentium microprocessor or Motorola power PC microprocessor. One of skill in the relevant art will recognize that the terms “machine-readable (storage) medium” or “computer-readable (storage) medium” include any type of device that is accessible by the processor. 
     The memory is coupled to the processor by, for example, a bus. The memory can include, by way of example but not limitation, random access memory (RAM), such as dynamic RAM (DRAM) and static RAM (SRAM). The memory can be local, remote, or distributed. 
     The bus also couples the processor to the non-volatile memory and drive unit. The non-volatile memory is often a magnetic floppy or hard disk, a magnetic-optical disk, an optical disk, a read-only memory (ROM), such as a CD-ROM, EPROM, or EEPROM, a magnetic or optical card, or another form of storage for large amounts of data. Some of this data is often written, by a direct memory access process, into memory during execution of software in the computer  1000 . The non-volatile storage can be local, remote, or distributed. The non-volatile memory is optional because systems can be created with all applicable data available in memory. A typical computer system will usually include at least a processor, memory, and a device (e.g., a bus) coupling the memory to the processor. 
     Software is typically stored in the non-volatile memory and/or the drive unit. Indeed, for large programs, it may not even be possible to store the entire program in the memory. Nevertheless, it should be understood that for software to run, if necessary, it is moved to a computer readable location appropriate for processing, and for illustrative purposes, that location is referred to as the memory in this paper. Even when software is moved to the memory for execution, the processor will typically make use of hardware registers to store values associated with the software, and local cache that, ideally, serves to speed up execution. As used herein, a software program is assumed to be stored at any known or convenient location (from non-volatile storage to hardware registers) when the software program is referred to as “implemented in a computer-readable medium.” A processor is considered to be “configured to execute a program” when at least one value associated with the program is stored in a register readable by the processor. 
     The bus also couples the processor to the network interface device. The interface can include one or more of a modem or network interface. It will be appreciated that a modem or network interface can be considered to be part of the computer system  500 . The interface can include an analog modem, isdn modem, cable modem, token ring interface, satellite transmission interface (e.g., “direct PC”), or other interfaces for coupling a computer system to other computer systems. The interface can include one or more input and/or output devices. The I/O devices can include, by way of example but not limitation, a keyboard, a mouse or other pointing device, disk drives, printers, a scanner, and other input and/or output devices, including a display device. The display device can include, by way of example but not limitation, a cathode ray tube (CRT), liquid crystal display (LCD), or some other applicable known or convenient display device. For simplicity, it is assumed that controllers of any devices not depicted in the example of  FIG. 5  reside in the interface. 
     In operation, the computer system  500  can be controlled by operating system software that includes a file management system, such as a disk operating system. One example of operating system software with associated file management system software is the family of operating systems known as Windows® from Microsoft Corporation of Redmond, Wash., and their associated file management systems. Another example of operating system software with its associated file management system software is the Linux™ operating system and its associated file management system. The file management system is typically stored in the non-volatile memory and/or drive unit and causes the processor to execute the various acts required by the operating system to input and output data and to store data in the memory, including storing files on the non-volatile memory and/or drive unit. 
     Some portions of the detailed description may be presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. 
     It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or “generating” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system&#39;s registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices. 
     The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the methods of some embodiments. The required structure for a variety of these systems will appear from the description below. In addition, the techniques are not described with reference to any particular programming language, and various embodiments may thus be implemented using a variety of programming languages. 
     In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server or a client machine in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. 
     The machine may be a server computer, a client computer, a personal computer (PC), a tablet PC, a laptop computer, a set-top box (STB), a personal digital assistant (PDA), a cellular telephone, a processor, a telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. 
     While the machine-readable medium or machine-readable storage medium is shown in an exemplary embodiment to be a single medium, the term “machine-readable medium” and “machine-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “machine-readable medium” and “machine-readable storage medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies or modules of the presently disclosed technique and innovation. 
     In general, the routines executed to implement the embodiments of the present disclosure, may be implemented as part of an operating system or a specific application, component, program, object, module, stream or sequence of instructions referred to as “computer programs.” The computer programs typically comprise one or more instructions set at various times in various memory and storage devices in a computer, and that, when read and executed by one or more processing units or processors in a computer, cause the computer to perform operations to execute elements involving the various aspects of the present disclosure. 
     Moreover, while embodiments have been described in the context of fully functioning computers and computer systems, those skilled in the art will appreciate that the various embodiments are capable of being distributed as a program product in a variety of forms, and that the present disclosure applies equally regardless of the particular type of machine or computer-readable media used to actually effect the distribution. 
     Further examples of machine-readable storage media, machine-readable media, or computer-readable (storage) media include but are not limited to recordable type media such as volatile and non-volatile memory devices, floppy and other removable disks, hard disk drives, optical disks (e.g., Compact Disk Read-Only Memory (CD ROMS), Digital Versatile Disks, (DVDs), etc.), among others, and transmission type media such as digital and analog communication links. 
     In some circumstances, operation of a memory device, such as a change in state from a binary one to a binary zero or vice-versa, for example, may comprise a transformation, such as a physical transformation. With particular types of memory devices, such a physical transformation may comprise a physical transformation of an article to a different state or thing. For example, but without limitation, for some types of memory devices, a change in state may involve an accumulation and storage of charge or a release of stored charge. Likewise, in other memory devices, a change of state may comprise a physical change or transformation in magnetic orientation or a physical change or transformation in molecular structure, such as from crystalline to amorphous or vice versa. The foregoing is not intended to be an exhaustive list of all examples in which a change in state for a binary one to a binary zero or vice-versa in a memory device may comprise a transformation, such as a physical transformation. Rather, the foregoing is intended as illustrative examples. 
     A storage medium typically may be non-transitory or comprise a non-transitory device. In this context, a non-transitory storage medium may include a device that is tangible, meaning that the device has a concrete physical form, although the device may change its physical state. Thus, for example, non-transitory refers to a device remaining tangible despite this change in state. 
     The above description and drawings are illustrative and are not to be construed as limiting the present disclosure to the precise forms disclosed. Persons skilled in the relevant art can appreciate that many modifications and variations are possible in light of the above present disclosure. Numerous specific details are described to provide a thorough understanding of the present disclosure. However, in certain instances, well-known or conventional details are not described in order to avoid obscuring the description. References to one or an embodiment in the present disclosure can be, but not necessarily are, references to the same embodiment; and such references mean at least one of the embodiments. 
     Reference in this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present disclosure. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment, nor are separate or alternative embodiments mutually exclusive of other embodiments. Moreover, various features are described which may be exhibited by some embodiments and not by others. Similarly, various requirements are described which may be requirements for some embodiments but not other embodiments. 
     Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense, as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to.” As used herein, the terms “connected,” “coupled,” or any variant thereof, means any connection or coupling, either direct or indirect, between two or more elements; the coupling of connection between the elements can be physical, logical, or any combination thereof. Additionally, the words “herein,” “above,” “below,” and words of similar import, when used in this application, shall refer to this application as a whole and not to any particular portions of this application. Where the context permits, words in the above Detailed Description using the singular or plural number may also include the plural or singular number respectively. The word “or,” in reference to a list of two or more items, covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, and any combination of the items in the list. 
     Those of skill in the art will appreciate that the present disclosure may be embodied in other forms and manners not shown below. It is understood that the use of relational terms, if any, such as first, second, top and bottom, and the like are used solely for distinguishing one entity or action from another, without necessarily requiring or implying any such actual relationship or order between such entities or actions. 
     While processes or blocks are presented in a given order, alternative embodiments may perform routines having steps, or employ systems having blocks, in a different order, and some processes or blocks may be deleted, moved, added, subdivided, substituted, combined, and/or modified to provide alternative or sub combinations. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks may instead be performed in parallel, or may be performed at different times. Further any specific numbers noted herein are only examples: alternative implementations may employ differing values or ranges. 
     The teachings of the present disclosure provided herein can be applied to other systems, not necessarily the system described above. The elements and acts of the various embodiments described above can be combined to provide further embodiments. 
     Any patents and applications and other references noted above, including any that may be listed in accompanying filing papers, are incorporated herein by reference. Aspects of the present disclosure can be modified, if necessary, to employ the systems, functions, and concepts of the various references described above to provide yet further embodiments of the present disclosure. 
     These and other changes can be made to the present disclosure in light of the above Detailed Description. While the above description describes certain embodiments of the present disclosure, and describes the best mode contemplated, no matter how detailed the above appears in text, the teachings can be practiced in many ways. Details of the system may vary considerably in its implementation details, while still being encompassed by the subject matter disclosed herein. As noted above, particular terminology used when describing certain features or aspects of the present disclosure should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects of the present disclosure with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the present disclosure to the specific embodiments disclosed in the specification, unless the above Detailed Description section explicitly defines such terms. Accordingly, the actual scope of the present disclosure encompasses not only the disclosed embodiments, but also all equivalent ways of practicing or implementing the present disclosure under the claims. 
     While certain aspects of the present disclosure are presented below in certain claim forms, the inventors contemplate the various aspects of the present disclosure in any number of claim forms. For example, while only one aspect of the present disclosure is recited as a means-plus-function claim under 35 U.S.C. §112, ¶6, other aspects may likewise be embodied as a means-plus-function claim, or in other forms, such as being embodied in a computer-readable medium. (Any claims intended to be treated under 35 U.S.C. §112, ¶6 will begin with the words “means for”.) Accordingly, the applicant reserves the right to add additional claims after filing the application to pursue such additional claim forms for other aspects of the present disclosure. 
     The terms used in this specification generally have their ordinary meanings in the art, within the context of the present disclosure, and in the specific context where each term is used. Certain terms that are used to describe the present disclosure are discussed above, or elsewhere in the specification, to provide additional guidance to the practitioner regarding the description of the present disclosure. For convenience, certain terms may be highlighted, for example using capitalization, italics and/or quotation marks. The use of highlighting has no influence on the scope and meaning of a term; the scope and meaning of a term is the same, in the same context, whether or not it is highlighted. It will be appreciated that same element can be described in more than one way. 
     Consequently, alternative language and synonyms may be used for any one or more of the terms discussed herein, nor is any special significance to be placed upon whether or not a term is elaborated or discussed herein. Synonyms for certain terms are provided. For example, the terms roof and rooftop are considered equivalent for purposes of discussion. A recital of one or more synonyms does not exclude the use of other synonyms. The use of examples anywhere in this specification including examples of any terms discussed herein is illustrative only, and is not intended to further limit the scope and meaning of the present disclosure or of any exemplified term. Likewise, the present disclosure is not limited to various embodiments given in this specification. 
     Without intent to further limit the scope of the present disclosure, examples of instruments, apparatus, methods and their related results according to the embodiments of the present disclosure are given below. Note that titles or subtitles may be used in the examples for convenience of a reader, which in no way should limit the scope of the present disclosure. Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this present disclosure pertains. In the case of conflict, the present document, including definitions will control. 
     Some portions of this description describe the embodiments of the present disclosure in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are commonly used by those skilled in the data processing arts to convey the substance of their work effectively to others skilled in the art. These operations, while described functionally, computationally, or logically, are understood to be implemented by computer programs or equivalent electrical circuits, microcode, or the like. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules, without loss of generality. The described operations and their associated modules may be embodied in software, firmware, hardware, or any combinations thereof. 
     Any of the steps, operations, or processes described herein may be performed or implemented with one or more hardware or software modules, alone or in combination with other devices. In one embodiment, a software module is implemented with a computer program product comprising a computer-readable medium containing computer program code, which can be executed by a computer processor for performing any or all of the steps, operations, or processes described. 
     Embodiments of the present disclosure may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, and/or it may comprise a general-purpose computing device selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a non-transitory, tangible computer readable storage medium, or any type of media suitable for storing electronic instructions, which may be coupled to a computer system bus. Furthermore, any computing systems referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability. 
     Embodiments of the present disclosure may also relate to a product that is produced by a computing process described herein. Such a product may comprise information resulting from a computing process, where the information is stored on a non-transitory, tangible computer readable storage medium and may include any embodiment of a computer program product or other data combination described herein. 
     Finally, the language used in the specification has been principally selected for readability and instructional purposes, and it may not have been selected to delineate or circumscribe the inventive subject matter. It is therefore intended that the scope of the present disclosure be limited not by this detailed description, but rather by any claims that issue on an application based hereon. Accordingly, the present disclosure of the embodiments of the present disclosure is intended to be illustrative, but not limiting, of the scope of the present disclosure, which is set forth in the following claims.