1. Field
Embodiments of the present invention relate to three dimensional (3D) models, and more particularly to association of imagery with 3D models.
2. Background Art
3D mapping applications can enable users to view an entire city as a collection of 3D models that represent structures within the city. Such 3D mapping applications enable users to find an object of interest (e.g. a building), by viewing a 3D model of the object of interest, within the mapping application. For 3D mapping applications to be effective, it is important that they texture a 3D model in a manner that closely approximates a real world counterpart of the 3D model.
Ground based light detection and ranging (LIDAR) is a remote sensing system that may be used to collect topographic facade (or exterior) information of real world structures from a ground or street level. Because such information is collected from a ground or street level, 3D data lacks texture and topographic information for roofs of real world structures. Furthermore, ground based LIDAR may not be able to collect facade information for sides of the structures that do not face a street. Therefore, when mapping applications render such 3D data that lacks roof information, it results in 3D models that do not approximate their respective real world counterparts. Furthermore, all neighboring 3D models appear to have similar facades. This greatly degrades user experience.
Embodiments of the present invention relate to roof generation of 3D models from ground acquired facade data. An embodiment includes grouping a plurality of 3D model facades and aligning each group of facades with aerial imagery. The embodiment further comprises identifying if a space between the facades is located within or outside a 3D model and generating a roof that connects the group of facades. The generated roof may then be textured with the aerial imagery.
In this way, when 3D data is limited to 3D model facades and lacks roof information, embodiments of the invention create complete 3D models by generating a roof that connects a plurality of facades and texturing the generated roof with aerial imagery. This greatly improves user experience as the 3D models closely approximate their respective real world counterparts.
Further embodiments, features, and advantages of the invention, as well as the structure and operation of the various embodiments of the invention are described in detail below with reference to accompanying drawings.
Embodiments of the present invention are described with reference to the accompanying drawings. In the drawings, like reference numbers may indicate identical or functionally similar elements. The drawing in which an element first appears is generally indicated by the left-most digit in the corresponding reference number.
Embodiments of the present invention relate to roof generation of 3D models from ground acquired facade data. An embodiment includes grouping a plurality of 3D model facades and aligning each group of facades with aerial imagery. As an example, such aerial imagery is top-down (e.g. Nadir) aerial imagery. The embodiment further comprises identifying if a space between the facades is located within or outside a 3D model and generating a roof that connects the group of facades. The generated roof may then be textured with the aerial imagery.
In this way, when 3D data is limited to 3D model facades and lacks roof information, embodiments of the invention create complete 3D models by generating a roof that connects a plurality of facades and texturing the generated roof with aerial imagery. This greatly improves user experience as 3D models closely approximate their respective real world counterparts.
While the present invention is described herein with reference to illustrative embodiments for particular applications, it should be understood that the invention is not limited thereto. Those skilled in the art with access to the teachings provided herein will recognize additional modifications, applications, and embodiments within the scope thereof and additional fields in which the invention would be of significant utility.
This detailed description of the embodiments of the present invention is divided into several sections as shown by the following table of contents.
This section describes a system for roof generation of 3D models from ground acquired facade data, according to an embodiment of the invention illustrated in
System 100 includes grouping module 110, alignment module 120 and roof generation module 130. In an embodiment, grouping module 110 receives 3D data 102 and roof generation module 130 generates output 3D data 104. As an example, not intended to limit the invention, 3D data 102 can include a plurality of 3D models (e.g. buildings). Furthermore, as an example, 3D model data 102 is limited to facade (or exterior face) information for a plurality of 3D models. Therefore, such 3D models lack roofs.
As an example, 3D model facade information may be obtained from ground based LIDAR techniques. Ground based LIDAR is well known to those skilled in the art and is a remote sensing system that may be used to collect topographic facade (or exterior) information of real world structures from a ground or street level. Thus, for example, a car equipped with LIDAR apparatus may travel around city streets scanning facade (or exterior face) information of real world buildings.
Grouping module 110, alignment module 120 and roof generation module 130 may be implemented on any device (or a plurality of devices)that can support graphics processing and rendering. Such a device can include, but is not limited to, a personal computer, a group of networked computers, mobile device such as a mobile phone, workstation, embedded system, game console, television, set-top box, or any other computing device that can support computer graphics and image processing. Such a device may include, but is not limited to, a device having one or more processors and memory for executing and storing instructions. Such a device may include software, firmware, and hardware. Software may include one or more applications and an operating system. Hardware can include, but is not limited to, a processor, memory and a display.
As discussed above, when 3D data is limited to 3D model facades and lacks roof information, embodiments of the invention create complete 3D models by generating a roof that connects a plurality of facades and then texturing the generated roof with the aerial imagery (e.g. top-down aerial imagery). This greatly improves user experience as 3D models closely approximate their respective real world counterparts.
In an embodiment, grouping module 110 groups a plurality of 3D model facades present in 3D data 102. As discussed earlier, for example, such 3D facade information may be obtained from ground based LIDAR techniques and lacks roof and portions of hidden exterior face information.
In an embodiment, grouping module 110 groups 3D model facades into groups (e.g. groups associated with city blocks) and identifies if a space between the facades is located within or outside a 3D model. In an embodiment, for example, grouping module 110 labels space between the facades as being inside a 3D building or outside the 3D building. In an embodiment, when 3D data 102 is missing facade data, includes structures incorrectly classified as facades, or even includes misaligned facade data, grouping module 110 may add facade data using LIDAR data or remove (or reclassify) incorrectly classified structures.
In an embodiment, grouping module 110 receives facade edges and produces a triangulated mesh representing the received facade edges. As discussed earlier,
A Delaunay triangulation is known to those skilled in the art. Delaunay triangulations may maximize the minimum angle of all angles of triangles in the triangulation and tend to avoid ‘skinny’ triangles.
Grouping module 110 labels each triangle in the triangulated mesh as being inside or outside a 3D model by solving a linear system. As an example, such a linear system propagates a belief that a location is interior or exterior of a 3D model. The linear system, for example, is constrained by areas immediately in front of facades which are labeled “outside”. As an example, grouping module 110 labels each facade (or exterior face) with an “interiorness” factor. As an example, the interiorness factor may have a value between −1 and 1.
In an embodiment, once the triangles have been identified as being inside or outside a 3D model and labeled accordingly by grouping module 110, grouping module 110 extracts connected (or grouped) components of interior facades.
In an embodiment, the constraints of the linear system are provided by faces that are adjacent to facade walls, and in front of the facade walls. The values for other facades can be a linear combination of their neighbor facade values, weighted by the edge lengths, and with a sign change across edges corresponding to facade walls. In an embodiment, grouping module 110 solves the system using a linear least squares solver (e.g. conjugate gradient, etc.).
In an embodiment, grouping module 110 determines an interiorness factor of a facade, I(f), using the following equation.
where,
f is a mesh face (e.g. a triangle)
ei is one of the edges of a facade
nf,i is the neighboring facade across edge i
∥ ∥ represents the length of a facade (e.g. a Euclidean norm)
s(e,) is set to ‘1’ by grouping module 110 for internal mesh edges, and is set to ‘−1’ for edges that are part of input facade edges. The values of ‘1’ and ‘−1’ are purely illustrative and another values or identifiers may be used by grouping module 110. Also, input facades may be split into several smaller segments by grouping module 110 if the edges intersect each other.
Thus, in the above exemplary equation, an interiorness value of a facade, I(T), can be a linear combination of its neighbor facade values (N1, N2 and N3), weighted by the edge lengths (∥e1∥, ∥e2∥ and ∥e3∥), and with a sign change across edges corresponding to facade walls.
It is to be appreciated that the interiorness factor determination and inside/outside labeling may be performed by grouping module 110 using other methods, including, but not limited to, graph-cuts and space carving. For example, space carving may include labeling facade areas seen as outside based on the LIDAR data and street LIDAR acquisition locations while assuming that all other space is inside a 3D model.
Method 400 begins with grouping module 110 receiving facade edges (step 402).
Grouping module 110 then produces a triangulated mesh representing the received facade edges (step 404). In an embodiment, to produce a triangulated mesh, grouping module 110 performs a constrained Delaunay triangulation of a top-down view of the received facade edges.
Grouping module 110 labels facade elements in the triangulated mesh as being inside or outside a 3D model (e.g. a building) (step 406). In an embodiment, grouping module 110 labels each triangle in the triangulated mesh as being inside or outside a 3D model by solving a linear system. As an example, such a linear system propagates a belief that a location is interior or exterior of a 3D model. The linear system is constrained by the areas immediately in front of facades. Such areas are labeled “outside”. As an example, grouping module 110 labels each facade (or exterior face) with an interiorness factor. As an example, the interiorness factor may have a value between −1 and 1. In an embodiment, after grouping module 110 labels facade elements, grouping module 110 may group facade edges using a connected component algorithm (or any other algorithm) on faces labeled as ‘inside’. As an example, facades that share an edge are grouped or connected.
In an embodiment, alignment module 120 aligns aerial imagery (e.g. top-down aerial imagery) with the 3D model facades grouped by grouping module 110. As a purely illustrative example, aerial imagery may be obtained by using aerial photography techniques over an area of interest in a city. Aerial imagery may be misaligned with 3D model facades because of global positioning system (GPS) errors in the received aerial satellite data, image mosaic errors, building lean widths, sparse facades and facade grouping errors. Thus, it is important for aerial imagery to be accurately aligned with edges of the facades to so that 3D models closely approximate their respective real world counterparts.
In an embodiment, alignment module 120 may align imagery using two different methods and then retain results where the results computed separately from both methods are in agreement (e.g. equal valued). In an embodiment, alignment module 120 uses an entropy based method and a edge detection (luminance) based method to align aerial imagery.
In an embodiment, in the edge detection based method, alignment module 120 produces an edge image by filtering the aerial imagery and linking edge pixels to construct line segments. Alignment module 120 may then match the given facade segments obtained from grouping module 110 to candidate constructed line segments that are parallel and close to the facade segments. Alignment module 120 then determines an alignment match based on an image intensity difference across two sides of each constructed line segment.
In an embodiment, in the entropy based method, alignment module 120 constructs a template image that includes half dark and half bright regions (or pixels) such that the dark-bright transition is parallel to each facade edge. Alignment module 120 then determines a value of translation that maximizes mutual information between the templates for all facades in a group and the aerial imagery. This determined value of translation, for example, represents an alignment match.
Method 600 begins with alignment module 120 receiving an aerial image and associated facade edges (step 602). As an example, referring to
Alignment module 120 then extracts a portion of the imagery received in step 602 as a image region (or buffer) (step 604). As an example, referring to
Alignment module 120 produces an edge image by filtering the aerial imagery (step 606). As an example, an edge image may be produced by a Canny edge detection algorithm. The Canny edge detection algorithm is well known to those skilled in the art.
Alignment module 120 then links edge pixels to construct line segments (step 608). As an example, edge linking may be performed using a Vista algorithm. The Vista edge linking algorithm is an open source algorithm available at http://www.cs.ubc.ca/nest/lci/vista/vista.html.
Alignment module 120 may then compute a difference of luminance on both sides of a detected candidate edge value (step 610). As an example, the alignment module 120 computes a left to right difference of luminance on both sides of a detected candidate edge value.
Alignment module 120 then selects a location with a highest value of luminance difference computed in step 606 (step 612). As an example, not intended to limit the invention, alignment module 120 then selects a location with a highest positive value of luminance difference computed in step 606.
In this way, alignment module 120 may then match the given facade segments obtained from grouping module 110 to candidate constructed segments that parallel and close to the facade segments. As an example, alignment module 120 determines an alignment match based on a image intensity difference across two sides of the segment.
Method 630 begins with alignment module 120 receiving an aerial image and associated facade edges (step 632). As an example, referring to
Alignment module 120 then extracts a portion of the imagery received in step 602 as a image region (or buffer) (step 634). As an example, referring to
Alignment module 120 constructing a template image that include half dark and half bright regions (or pixels) such that the dark/bright transition is parallel to each facade edge (step 636). As an example, referring to
Alignment module 120 then determines a value of translation that maximizes mutual information between the templates for all the facades in a group and the aerial imagery (step 638). In an embodiment, not intended to limit the invention, normalized mutual information I (X,Y) may be computed as:
I(X,Y)=(H(X)+H(Y))/H(X,Y)
Where,
I(X,Y) is a value of normalized mutual information.
H(X) is the entropy of (Histogram(Image)), where Image can be a image region extracted by alignment module 120 (e.g. image region 642) or an entire image.
H(X) is the entropy of (Histogram(Template)), where Template can be a template determined by alignment module 120 (e.g. template image 644), and
H(X,Y)=Entropy (Joint_Histogram (Image, Template)).
Method 650 begins alignment module 120 receiving aerial imagery and grouped facade edges from grouping module 110 (step 652). Alignment module 120 computes an entropy score for each facade (step 654) and also a luminance score for each edge (step 662).
Referring to the entropy based method, alignment module 120 determines an optimal shift distance for a facade group based on the entropy score computed in step 654 (step 656). As an example, the optimal shift distance is the distance needed to accurately align the aerial imagery with the facade edges. Alignment module 120 then checks if the shift distance computed in step 656 is less than a threshold value (step 658). If the shift distance is less than a threshold value (step 658), alignment module 120 proceeds to align the aerial imagery with the facade group using the shift distance computed in step 656 (step 674). If the shift distance is not less than a threshold value (step 658), alignment module checks if a luminance score (computed using the edge detection based method) is a local maximum luminance score value (step 660). If the luminance score is a local maximum luminance score value (step 660), alignment module 120 proceeds to align the aerial imagery with the facade group using the shift distance computed in step 656 (step 674).
Referring to the edge detection (or luminance) based method, alignment module 120 computes a luminance score for each facade edge (step 662). Alignment module 120 determines an optimal shift distance for a facade group based on the luminance computed in step 662 (step 664). As an example, the optimal shift distance is the distance needed to accurately align the aerial imagery with the facade edges. Alignment module 120 then checks if the shift distance computed in step 664 is less than a threshold value (step 666). If the shift distance is less than a threshold value (step 666), alignment module 120 proceeds to align the aerial imagery with the facade group using the shift distance computed in step 664 (step 678). If the shift distance is not less than a threshold value (step 666), alignment module 120 checks if an entropy score is a local maximum entropy score value (step 668). If the local luminance score is a local maximum luminance score value (step 668), alignment module 120 proceeds to align the aerial imagery with the facade group using the shift distance computed in step 664 (step 678).
Returning to step 660 in the entropy based method and step 668 in the edge detection (or luminance) based method, if the local luminance score is not a local maximum luminance score value (step 660) and if the local entropy score is not a local maximum entropy score value (step 668), alignment module 120 computes a difference between the shift distances computed in steps 656 and 664 (step 670). Alignment module 120 then determines if the difference computed in step 670 is less than a threshold value (step 672). If the difference is less than a threshold value (step 672), alignment module 120 proceeds to step 674 and/or step 678. If the difference is not less than a threshold value (step 672), alignment module does not align (or shift) the aerial imagery with the facade group (step 676).
In this way, alignment module 120 compares alignment results obtained from both the entropy based and the edge detection based methods.
In an embodiment, roof generation module 130 generates a flat roof connecting all facade edges grouped by grouping module 110. Roof generation module 130 then textures the generated roof with aerial imagery that has been aligned by alignment module 120.
In an embodiment, to generate a roof connecting facade edges, roof generation module 130 determines a number of facades in a given area (e.g. a city block(s) or an area in a city block).
In an embodiment, for areas (or city blocks) with facades that exceed a pre-determined threshold value, roof generation module 130 creates a flat roof connecting all the facades. In this embodiment, if the grouped facades in the area have different heights, roof generation module segments the roof into a plurality of flat terraces. In an embodiment, roof generation module 130 segments the roof in a manner that places the steps between the terraces at strong edges detected in the aerial imagery. Roof generation module 130 then textures the roof with the aligned aerial imagery, and colors the steps between the terraces with a predetermined color value (e.g. a uniform gray color).
Starting with triangulation for a facade-enclosed city block, roof generation module 130 inserts additional edges corresponding to strong edges in the aerial imagery. As an example, additional edges may be obtained by roof generation module 130 by filtering the imagery with an edge detector and linking the edge pixels into segments.
Roof generation module 130 may then label the resulting triangulation by assigning a height label to each facade. In an embodiment, the labeling by roof generation module 130 is done using a graph cut optimization, where the cost of cutting an edge (placing a terrace step) is influenced by the angle of the edge with respect to the facade edges nearby, and whether the edge corresponds to an edge in the imagery. Faces adjacent to a facade may be constrained to the facade's height. Connected groups of roof faces with the same height may form a terrace, and roof generation module 130 can generate steps between different terraces.
In another embodiment, for areas (or city blocks) with facades that do not meet (e.g. lie below) a pre-determined threshold value, roof generation module 130 extends each facade by a box. Roof generation module 130 then determines the depth of the box by identifying strong edges parallel to the facade in the aerial imagery.
In an embodiment, to determine the depth of the box associated with a facade, roof generation module 130 extracts aerial imagery behind the facade, and filters the extracted aerial imagery to obtain an edge image. Roof generation module 130 then sweeps a line parallel to the facade. Roof generation module 130 scores the sweep based on a number of edge pixels covered by the sweep, and according to any prior distribution assumptions on expected building depths. Finally, the box used to extend the facade is trimmed to space labeled as being inside a 3D model by roof generation module 130. Roof generation module 130 then textures the roof with the aerial imagery, and colors the side walls (or vertical) between the terraces with a predetermined color value (e.g. a uniform gray color).
Method 800 begins with roof generation module 130 determining a number of facades in a given area (e.g. a city block(s) or an area in a city block) (step 802).
Roof generation module 130 then checks if the number of facades determined in step 802 exceeds a predetermined threshold value (step 804).
If the number of facades determined in step 802 exceed a predetermined threshold value (step 804), roof generation module 130 generates a flat roof connecting the facades (step 806). Roof generation module 130 segments the roof into step terraces based on facade heights (step 808) and textures the roof with aerial imagery (step 814). Roof generation module 130 may also color the steps between the terraces with a predetermined color value (e.g. a uniform gray color).
Returning to step 804, if the number of facades determined in step 802 do not exceed a predetermined threshold value (step 804), roof generation module 130 extends each facade by a box (step 810). Roof generation module 130 then trims each box based on the interiorness of space surrounding facades extended with the box (step 812) and textures the roof with aerial imagery (step 814). Also as discussed earlier, roof generation module 130 may color the side walls (or vertical) between the terraces with a predetermined color value (e.g. a uniform gray color).
In an embodiment of the present invention, the system and components of embodiments described herein are implemented using well known computers, such as example computer 1002 shown in
The computer 1002 can be any commercially available and well known computer capable of performing the functions described herein, such as computers available from International Business Machines, Apple, Sun, HP, Dell, Compaq, Cray, etc.
The computer 1002 includes one or more processors (also called central processing units, or CPUs), such as a processor 1006. The processor 1006 is connected to a communication infrastructure 1004.
The computer 1002 also includes a main or primary memory 1008, such as random access memory (RAM). The primary memory 1008 has stored therein control logic 10210A (computer software), and data.
The computer 1002 also includes one or more secondary storage devices 1010.
The secondary storage devices 1010 include, for example, a hard disk drive 1012 and/or a removable storage device or drive 1014, as well as other types of storage devices, such as memory cards and memory sticks. The removable storage drive 1014 represents a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup, etc.
The removable storage drive 1014 interacts with a removable storage unit 1016.
The removable storage unit 1016 includes a computer useable or readable storage medium 1024 having stored therein computer software 1028B (control logic) and/or data. Removable storage unit 1016 represents a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, or any other computer data storage device. The removable storage drive 1014 reads from and/or writes to the removable storage unit 1016 in a well known manner.
The computer 1002 also includes input/output/display devices 1022, such as monitors, keyboards, pointing devices, etc.
The computer 1002 further includes a communication or network interface 1018. The network interface 1018 enables the computer 1002 to communicate with remote devices. For example, the network interface 1018 allows the computer 1002 to communicate over communication networks or mediums 1024B (representing a form of a computer useable or readable medium), such as LANs, WANs, the Internet, etc. The network interface 1018 may interface with remote sites or networks via wired or wireless connections.
Control logic 1028C may be transmitted to and from the computer 1002 via the communication medium 1024B. More particularly, the computer 1002 may receive and transmit carrier waves (electromagnetic signals) modulated with control logic 1030 via the communication medium 1024B.
Any tangible apparatus or article of manufacture comprising a computer useable or readable medium having control logic (software) stored therein is referred to herein as a computer program product or program storage device. This includes, but is not limited to, the computer 1002, the main memory 1008, secondary storage devices 1010, the removable storage unit 1016 but not the carrier waves modulated with control logic 1030. Such computer program products, having control logic stored therein that, when executed by one or more data processing devices, cause such data processing devices to operate as described herein, represent embodiments of the invention.
Embodiments of the invention can work with software, hardware, and/or operating system implementations other than those described herein. Any software, hardware, and operating system implementations suitable for performing the functions described herein can be used. Embodiments of the invention are applicable to both a client and to a server or a combination of both.
The Summary and Abstract sections may set forth one or more but not all exemplary embodiments of the present invention as contemplated by the inventor(s), and thus, are not intended to limit the present invention and the appended claims in any way.
The present invention has been described above with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed.
The foregoing description of the specific embodiments will so fully reveal the general nature of the invention that others can, by applying knowledge within the skill of the art, readily modify and/or adapt for various applications such specific embodiments, without undue experimentation, without departing from the general concept of the present invention. Therefore, such adaptations and modifications are intended to be within the meaning and range of equivalents of the disclosed embodiments, based on the teaching and guidance presented herein. It is to be understood that the phraseology or terminology herein is for the purpose of description and not of limitation, such that the terminology or phraseology of the present specification is to be interpreted by the skilled artisan in light of the teachings and guidance.
The breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
The present application claims the benefit of U.S. Provisional Patent Application No. 61/260,260, filed on Nov. 11, 2009, entitled “Roof Generation and Texturing of 3D Models” by Praun et al. (Atty. Dkt. No. 2525.2350000), which is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61260260 | Nov 2009 | US |