Wearable computing eyeglasses that provide unobstructed views

A method for displaying a view of a target comprises establishing a network including a plurality of display devices, requesting by a first display device in the network having an obstructed view of the target, at least one of position and orientation data from one or more remaining display devices in the network each having a different view of the target than the obstructed view, selecting a remaining display device as a view provider to provide the different view of the target to the first display device, requesting the different view of the target from the selected view provider; providing the different view of the target to the first display device, and displaying the different view of the target via the first display device.

TECHNICAL FIELD

The field generally relates to enhancing a viewing experience for a user and, in particular, to utilizing communication between wearable computing eyeglasses to provide an unobstructed view of a target.

BACKGROUND

When people attend an event, such as a play, sporting event or a concert, they want to be in a good position to see and enjoy the program. Often, however, their view is completely or partially blocked by objects or other people who are in front of them and/or in their line of sight.

Typically, in order to get a better view, one moves their head and/or body, and/or stands up from their seat. Such movement may, in turn, block the view of people who are behind the individual attempting to secure the better view. In some cases, an event attendee may be constantly shifting their position during a program in an effort to see, and not enjoy the show.

SUMMARY

According to an exemplary embodiment of the present invention, a method for displaying a view of a target comprises establishing a network including a plurality of display devices, requesting by a first display device in the network having an obstructed view of the target, at least one of position and orientation data from one or more remaining display devices in the network each having a different view of the target than the obstructed view, selecting a remaining display device as a view provider to provide the different view of the target to the first display device, requesting the different view of the target from the selected view provider; providing the different view of the target to the first display device, and displaying the different view of the target via the first display device.

According to an exemplary embodiment of the present invention, a system for displaying a view of a target comprises a memory and at least one processor coupled to the memory, wherein the at least one processor is configured to establish a network including a plurality of display devices, request by a first display device in the network having an obstructed view of the target, at least one of position and orientation data from one or more remaining display devices in the network each having a different view of the target than the obstructed view, select a remaining display device as a view provider to provide the different view of the target to the first display device, request the different view of the target from the selected view provider, provide the different view of the target to the first display device, and display the different view of the target via the first display device.

According to an exemplary embodiment of the present invention, a computer program product for displaying a view of a target comprises a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processor to cause the processor to perform a method comprising establishing a network including a plurality of display devices, requesting by a first display device in the network having an obstructed view of the target, at least one of position and orientation data from one or more remaining display devices in the network each having a different view of the target than the obstructed view, selecting a remaining display device as a view provider to provide the different view of the target to the first display device, requesting the different view of the target from the selected view provider, providing the different view of the target to the first display device, and displaying the different view of the target via the first display device.

These and other exemplary embodiments of the invention will be described or become apparent from the following detailed description of exemplary embodiments, which is to be read in connection with the accompanying drawings.

DETAILED DESCRIPTION

Exemplary embodiments of the invention will now be discussed in further detail with regard to enhancing a viewing experience for a user and, in particular, to utilizing communication between wearable computing eyeglasses to provide an unobstructed view of a target. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein.

As used herein, the term “real-time” refers to output within strict time constraints. Real-time output can be understood to be instantaneous or in the order of milliseconds or microseconds. Of course, it should be understood that depending on the particular temporal nature of the system in which an embodiment of the invention is implemented, other appropriate timescales that provide at least contemporaneous performance and output can be achieved.

As used herein, the terms “wearable computing eyeglasses,” “computing eyewear,” and “eyeglasses” can refer to smart glasses, digital eye glasses and/or some other type of wearable computer that can add information to what a wearer sees or provide a complete visual field for a user. The eyeglasses can include, for example, an optical head-mounted display (OHMD), and/or computerized internet-connected glasses with a transparent heads-up display (HUD) or an augmented reality (AR) overlay that may reflect projected digital images. The eyeglasses may be capable of retrieving, processing and storing data, supporting wireless technologies, such as, for example, BLUETOOTH and Wi-Fi, running a mobile operating system and functioning as portable media players to send and play audio and video files. While the embodiments of the present invention are discussed in connection with wearable computing eyeglasses, the embodiments of the present invention are not necessarily limited thereto, and may be applicable to other types of portable computing devices, such as, for example, smart watches, smart phones, tablets, video recording devices and other types of portable display devices that may be used to provide a viewing experience for a user.

In accordance with an embodiment of the present invention, wearable computing eyeglasses worn by a plurality of users at an event can communicate with each other in a decentralized type of wireless network, such as, for example, an ad hoc network within a venue. As used herein, an “ad hoc network” or “wireless ad hoc network (WANET)” can refer to a decentralized type of wireless network that does not rely on a pre-existing infrastructure, such as routers or access points in managed (e.g., infrastructure) wireless networks. As used herein, an ad hoc network or WANET can be a self-configuring, dynamic network that lacks infrastructure setup and administration, enabling devices to independently create and join the network. In the case of a decentralized network, reception, transmission and analysis of data can be performed at each node of the network (e.g., at each pair of wearable eyeglasses).

Alternatively, the wearable computing eyeglasses can communicate with each other in a managed type of network, including but not limited to, a local area network (LAN), wide area network (WAN), cellular network, satellite network or the Internet. The communication can be performed via one or more centralized servers that receive, analyze and send data to and from the wearable computing eyeglasses that are part of the network.

The network communications can be based on relatively close-range communication capabilities, such as, for example, BLUETOOTH and/or near field communication (NFC) capabilities. The embodiments of the present invention are not necessarily limited to BLUETOOTH and/or NFC protocols, and can include other relatively close or longer range protocols, such as, for example, IEEE 802.11, RFID, WiFi, cellular and satellite protocols.

In accordance with an embodiment of the present invention, in response to a request for an unobstructed view received from a first pair of wearable computing eyeglasses (i.e., a view requester), the system automatically selects as a view provider a second pair of wearable computing eyeglasses that is in a better viewing position than the view requester, and transfers a non-blocked view stream from that view provider to the view requester (or at the very least a view stream that is less obstructed than that of the view requester if a fully unobstructed view is not available).

A view requester's eyeglasses may automatically recognize that a view is obstructed and trigger a request for a non-blocked view. For example, a wearer of a pair of computing eyeglasses may be watching a show, when suddenly some objects come up to a view window of the wearer, and block the view of the wearer. The eyeglasses can detect that these objects are not a part of the target. By way of example, if the wearable computing eyeglasses includes a depth camera, the eyeglasses can determine a distance of the obstructing objects from the wearer, and based on typical scenarios, assume that the obstructing objects are closer to the wearer than the target. Alternatively, an eyeglass wearer can manually trigger a request for an unobstructed view (e.g., request on demand).

The non-blocked view can then be displayed in the view requester eyeglasses. In some cases, as described further below, when a view requester's viewing angle is different than that of the view provider, reconstructing a view from a view provider may be required to closely replicate the view requester's viewing angle.

Depending on how a network is configured, in response to a view request, one or more independent servers in communication with each of the nodes of the network can analyze position, orientation, and view streams of potential view providers to automatically determine which of the other wearable computing eyeglasses in the network provides the best matched view for a given view requester, and communicate this determination and best matched view to the view requester. Alternatively, each pair of wearable eyeglasses can be capable of independently analyzing position, orientation, and view streams of potential view providers to determine and choose which of the other wearable computing eyeglasses in the network provides the best matched view for its view request. A best matched view may be, for example, one that has the least or no obstructions, and is closest and/or most similar to the view of the view requester with respect to location and orientation. Other factors for selecting a view provider may include, for example, cost optimization, such as, for example, optimizing network balance (e.g., distribution of load on network devices), optimizing performance of devices in the network and optimizing an ability to provide a real-time view of a target (e.g., with respect to relayed views as described further herein).

Video streaming and transmitting are consuming bandwidth, central processing unit (CPU) power and memory. In order to obtain real-time quality video, the system may need to select an appropriate service provider. The selection process may include, for example, balancing a best view (e.g., the closest viewing angle and position to the view requester) and a best video quality. For example, A and B both request C's view, which may slow down C's performance. In view of the possible slow-down to C performance, the system may decide to assign C's view stream to A, and the view stream of an additional provider, D, to B, even though D does not have the best view for B when compared to C's view. In connection with cost, different view requesters may pay various prices for different viewing experience levels. For example, B may want to always get the best view, and pays a higher price for that privilege than A. In that case, the system can take the different price points into consideration, and distribute the better views to the higher paying customers, and the lower quality views to lower paying customers.

The factors may be weighted based on, for example, their relative importance with respect to providing a worthwhile viewing experience, their effect on the network and whether a geometric transformation should be performed to adapt a view from a different location and/or viewing angle to that of the view requester. Depending on how a network is configured, one or more independent servers in communication with each of the nodes of the network or each pair of wearable eyeglasses can be capable of performing a geometric transformation to adapt a view to a particular location and viewing angle.

According to an embodiment of the present invention, a plurality of possible views from different view providers can be sent to a view requester, and a user wearing the computing eyeglasses can manually select the desired view to use.

In accordance with an embodiment of the present invention, a beacon positioning system or other means of precise indoor/outdoor localization can be incorporated into a network. Position information for each node of a network can be ascertained using, for example, global positioning system (GPS) data. In the event that GPS data may not be precise enough to determine the position of different pairs of wearable eyeglasses in a given network, a more precise localization system, such as a beacon positioning system, can be used to determine locations of network members within, for example, meters, centimeters or micrometers. If a more precise localization system is used, the members of a network will be capable of transmitting and receiving position data to and from a set of location devices (e.g., three or more beacons) located at or near a venue. Beacons can include, for example, cellular base stations, WiFi access points, and radio broadcast towers.

FIGS. 1A and 1Brespectively illustrate examples of a view that a person may have of an object or presentation, and a view that can be provided by one or more embodiments of the present invention. As shown inFIG. 1A, the first view includes one or more obstructions105preventing a clear view of the object or presentation110. As shown inFIG. 1B, the one or more obstructions105are not part of the view, providing the clear view of the object or presentation110.

FIG. 2is a diagram illustrating provision of an unobstructed view, in accordance with an embodiment of the present invention.FIG. 2depicts one or more viewed objects210that are in a two-dimensional plane (e.g., on a wall in an art gallery, smart board, exhibition board, white board, etc.) and user X's view, as shown by the dotted arrow, is partially blocked by an obstruction Y205. In this case, obstruction Y205is shown as a person. However, the embodiments of the present invention are not limited thereto, and can include other types of obstructions, such as, for example, physical objects. In the example inFIG. 2, user X202is a view requester whose view is blocked, and user Z207is a view provider whose view is not blocked, as shown by the solid arrow pointing to the object(s)210from user Z207. Both user X202and user Z207are wearing computing eyeglasses220aand220b. As can be understood fromFIG. 2, user X's view of object(s)210is from a left side, and user Z's view of object(s)210is from a right side.

In accordance with an embodiment of the present invention, referring toFIGS. 2 and 3, user X's eyeglasses220a(e.g., the view requester's eyeglasses) request position data (e.g., GPS or local positioning system (LPS) coordinates) and orientation data (e.g., viewing angles) of available computing eyeglasses in the network (block301). Then, a view provider (user Z207) is found based on position and orientation data indicating that user Z207is viewing the same object(s)210as user X202(block303). User X's eyeglasses220athen request user Z's view from user Z's eyeglasses220b(block305). As shown by the solid arrow from user Z207to user X202, user X's eyeglasses220areceive user Z's view and, if necessary, perform a geometric transformation and/or reconstruction of user Z's view to correspond to user X's position and orientation (block307). The transformed and/or reconstructed view, or the view as received is then displayed on user X's eyeglasses220a(block309).

FIG. 4is a diagram illustrating provision of an unobstructed view, in accordance with an embodiment of the present invention.FIG. 4depicts all or most audience members of a plurality audience members400are looking at the same target410in a site. For example, the target410may include, but is not limited to, a stage on which a performance is occurring, such as a show or concert, or field or court of a sporting event. As can be understood, the objects on the stage, such as performers, instruments, sets, etc. and players on, for example, a field or court, are not necessarily confined to a single plane. Referring toFIG. 4, user X's view of the target410, as shown by the dotted arrow, is partially blocked by at least obstruction405. User X's view may be blocked by more than one obstruction. In the example inFIG. 4, user X402is a view requester whose view is blocked, and user Z407is a view provider whose view is not blocked, as shown by the solid arrow pointing to the target410from user Z407. Both user X402and user Z407are wearing computing eyeglasses420aand420b.

In accordance with an embodiment of the present invention, the system aggregates input from all eyeglasses in the audience (e.g., eyeglasses420a-420i) to determine what objects at or near a target410are included in the vision field that is being viewed by the audience. According to an embodiment, this determination can be performed, using, for example, stereoscopic vision techniques in conjunction with known z-coordinates of audience members.

According to an embodiment of the present invention, the system can detect whether a user's view is unobstructed, and can be a potential view provider. If a view is unobstructed, the system will broadcast information about the view's position, viewing angle, orientation and load (e.g., how many view requesters are currently being serviced with that unobstructed view). If another user's view is blocked, that other user would receive the broadcasted information on each potential view provider, and pick an appropriate view provider.

In accordance with an embodiment of the present invention, multiple audience members other than the view requester (user X402) are wearing computing eyeglasses420b-420i. Based on, for example, view stream, location and orientation data received from the eyeglasses420b-420i, the view requester's (i.e., user X's) eyeglasses420apick the view provider (in this case user Z407) having the most similar and closest viewing perspective to that of user X402, and which is also unobstructed. User X's eyeglasses420arequest the view stream from user Z's eyeglasses420band displays user Z's view stream for user X402. User Z's view stream may be reconstructed and/or transformed to correspond to the location and orientation of user X402with respect to the target410. In an alternative embodiment, the view requester can manually select a view provider who is closest to the view requester and also has an unobstructed view. The view requester's eyeglasses420acan then request that the view stream of the chosen view provider be transmitted to the eyeglasses420a.

In accordance with an embodiment of the present invention, referring toFIGS. 4 and 5, user X's eyeglasses420arequest the position and orientation of available computing eyeglasses420b-420iin the network, as well as data indicating whether the view of the available computing eyeglasses420b-420iis obstructed (block501).

At block503, the view requester's eyeglasses420aselect the view provider that has a similar viewing angle to the view requester402, is closest to the target410and/or is closest to the view requester. A view from a view provider that has the least or no obstructions can also be included in the selection criteria for a view provider. As noted above, depending on importance, different criteria can be weighted differently when determining which view provider is a best match for the view requester.

At block505, user X's eyeglasses420athen request the view stream from the selected view stream. The selected view is received and then displayed on user X's eyeglasses420a(block507).

FIG. 6Ais a diagram illustrating provision of a plurality of unobstructed views, in accordance with an embodiment of the present invention. Like the embodiment described in connection withFIG. 4,FIG. 6Adepicts a plurality of users600and a target610including, but not limited to, a stage on which a performance is occurring, such as a show or concert, or field of a sporting event. Unlike the embodiment described in connection withFIG. 4, as can be understood fromFIG. 6B, all of the plurality of users600are not required to be in the site or venue attempting to watch the event. For example, in connection with the embodiment shown inFIG. 6B, the user X602may not have been able to purchase a ticket for a tennis match and is located outside the tennis stadium630. However, user X's eyeglasses620aare receiving a view stream from the eyeglasses620fof user B609, who is inside the tennis stadium630and able to view the match (e.g., target610). The depiction of user X602outside of the venue is only by way of example, and it is to be understood that the features described in connection withFIG. 6Aare also applicable when user X is inside the venue.

In connection with the embodiment described in connection withFIGS. 6A and 6B, a plurality of users600are wearing computing eyeglasses620a-620i. A view requester (e.g., user X602), whether inside or outside of the venue, can choose any one of the streams from the computing eyeglasses620b-620iregardless of their viewing position and orientation, and transfer the selected view to the his/her eyeglasses620a. In accordance with this embodiment, the view requester's (user X's) eyeglasses620aallow the eyeglass wearer to select a pair of computing eyeglasses as the view provider, wherein the computing eyeglasses for selection are not only those with an unobstructed view of the target610(e.g., users Z and B607,609), but also those eyeglasses (e.g., eyeglasses620dof user A608) receiving view streams from other eyeglasses. As shown inFIG. 6A, the eyeglasses620dof user A608receive the view stream from user B609, and relay that view stream to user X602. The relay of views through multiple eyeglasses may result in some delay from a real-time view of the target. However, having a plurality of users each select the same pair eyeglasses with an unobstructed view of the target610may result in too much burden on that pair of eyeglasses and exceed its capabilities as a view provider because of having to transmit to too many recipients. To avoid this issue, and potential delay or crashing of the view provider, the burden of transmitting to view requesters can be spread out across multiple eyeglasses in the network. According to an embodiment, taking into consideration, for example, balancing for network performance, load balancing, device performance and real-time effects, the system can suggest view provider eyeglasses (e.g., the eyeglasses620dof user A608), which can be used to relay a view stream from an original unobstructed view provider (e.g., users Z and B607,609), and thereby relieve the original unobstructed view provider of the burden of having to transmit its view stream to every view requester.

In accordance with an embodiment of the present invention, referring toFIGS. 6 and 7, user X's eyeglasses620arequest the position, orientation and views of available computing eyeglasses620b-620iin the network (block701). At block703, as noted above, taking into consideration, for example, balancing for network performance, load balancing, device performance and real-time effects, the system suggest view provider eyeglasses which can be used to relay a view stream from an original unobstructed view provider. The system may also suggest an original unobstructed view provider if conditions permit using the original unobstructed view provider without burdening the original unobstructed view provider. The system may evaluate burden by, for example, evaluating the number of recipients receiving the view stream of the unobstructed view provider, and determining whether the number exceeds a predetermined threshold indicating a burden. In accordance with an embodiment of the present invention, the selection can be performed by one or more servers capable of receiving data from the eyeglasses in the network, including position, orientation, view streams and data regarding transmission links made with other eyeglasses in the network. The one or more servers are operatively connected to the network and to the eyeglasses in the network.

At block705, the view requester (e.g., user X602) selects the view provider from the suggested view providers. Alternatively, the view requester's eyeglasses620aautomatically select the view provider from the suggested view providers.

At block707, user X's eyeglasses620athen request the view stream from the selected view provider's eyeglasses. At block709, user X's eyeglasses620areceive the view stream from the selected view provider's eyeglasses and the received view is then displayed on user X's eyeglasses620a.

FIG. 8is a flow diagram of a process for displaying a view of a target, according to an exemplary embodiment of the invention. Referring toFIG. 8, the process800includes, at block801, establishing a network including a plurality of display devices. According to an embodiment, the display devices can include computing eyewear, and the network is a wireless ad-hoc network. The process800further includes, at block803, requesting by a first display device in the network having an obstructed view of the target, at least one of position and orientation data from one or more remaining display devices in the network each having a different view of the target than the obstructed view. According to an embodiment, the different view is an unobstructed view of the target.

The process further includes, at block805, selecting a remaining display device as a view provider to provide the different view of the target to the first display device. The selecting may comprise performing an optimization based on network balance, device performance and/or an ability to provide a real-time view of the target. The selecting can comprise selecting the view provider that has a viewing angle with respect to the target that is closest to the viewing angle with respect to the target of the first display device, is positioned closest to the target and/or is positioned closest to the first display device. Selecting the remaining display device as the view provider can be performed, for example, automatically by the first display device or some other device connected to the network, or manually by a user of the first display device.

The process further includes, at block807, requesting the different view of the target from the selected view provider and, at block809, providing the different view of the target to the first display device. Providing the different view of the target to the first display device may comprise relaying the different view from the selected view provider through another remaining display device.

The process800further includes, at block811, displaying the different view of the target via the first display device. The process800may further comprise transforming the different view of the target to compensate for differences of at least one of position and orientation with respect to the target between the first display device and the display device selected as the view provider.

The process800may also further comprise suggesting one or more remaining display devices as potential view providers, wherein the suggesting is based on at least one of optimizing network balance, optimizing device performance and optimizing an ability to provide a real-time view of the target. According to an embodiment, the process800can also include aggregating view data from the plurality of display devices in the network to determine an expanse of the target.

FIG. 9is a block diagram of a system for displaying a view of a target, according to an exemplary embodiment of the present invention. As shown inFIG. 9, the components of the system900at least include display devices920a,920band920c, server930, positioning system940and network950. It is to be understood that the number of components is merely exemplary, and may be more or less than what is shown. Elements within the display devices920a-920cand server, as shown by lines and/or arrows are operatively coupled to each other via, for example, physical connections, such as wired and/or direct electrical contact connections, or wireless connections such as, for example, WiFi, BLUETOOTH, IEEE 802.11 or other wireless conventions. The display devices920a,920band920c, server930, and positioning system940as shown by lines and/or arrows are operatively coupled to the network950via wireless connections such as, for example, WiFi, BLUETOOTH, IEEE 802.11 or other wireless conventions. Alternatively, the display devices920a,920band920c, server930, and positioning system940may be operatively coupled to the network950through some combination of wired and wireless connections. As noted herein, the network950can include, but is not limited to, a local area network (LAN), wide area network (WAN), cellular network, ad hoc networks, WANETs, satellite network or the Internet.

Referring toFIG. 9, the system900includes the plurality of display devices920a-920cas part of the network950. According to an embodiment, the display devices920a-920ccan include computing eyewear, worn by users901a,901band901c, and the network950is a wireless ad-hoc network. Using, for example processors911a-cand request/section modules915a-915c, the display devices, when they have an obstructed view of a target, are configured to request position and/or orientation data from one or more remaining display devices in the network each having a different (e.g., unobstructed) view of the target than the obstructed view. As described herein, requests and other functions that are described as being performed by the display devices can alternatively be routed through and performed by a server930having the same or similar functionality to that of the display devices. As can be seen, the server930is depicted as having the same or similar components931,932,933,934,935and936as the components911,912,913,914,915and916of the display devices.

A request/section module915a-915cor935of a requesting display device or of the server can select one the remaining display devices in the network having the unobstructed view as a view provider to provide the unobstructed view of the target to the view requesting display device. The request/section modules915a-915cand935may be configured to perform an optimization based on network balance, device performance and/or an ability to provide a real-time view of the target. Based on positioning information provided via the positioning system940(e.g., a GPS or LPS) and data provided from view analysis modules913a-cor933, the selecting can comprise selecting the view provider that has a viewing angle with respect to the target that is closest to the viewing angle with respect to the target of the first display device, is positioned closest to the target and/or is positioned closest to the first display device. Selecting the remaining display device as the view provider can be performed, for example, automatically by the requesting display device or some other device connected to the network (e.g., server930), or manually by a user of the requesting display device.

Using, for example, transceivers912a-cor932, the view of the target from the selected view provider can be requested and provided to the requesting display device. As described herein, providing the view of the target from the view provider to the requesting display device may include relaying the view data from the selected view provider through another remaining display device.

Each display device920a-920cis configured to display a view stream of the target for a user of the display device, who is, for example, wearing the display device. Using view analysis modules913a-913cor933and position data from a positioning system940, as described herein, it may be necessary to transform a received view of the target to compensate for differences of position and/or orientation with respect to the target between the requesting display device and the display device selected as the view provider.

Suggestion modules914a-cor934can be configured to suggest display devices as potential view providers, wherein the suggesting is based on at least one of optimizing network balance, optimizing device performance and optimizing an ability to provide a real-time view of the target. According to an embodiment, view analysis modules913a-913cor933can be configured to aggregate view data from the plurality of display devices in the network to determine an expanse of a target.

As shown inFIG. 10, computer system/server1012in computing node1010is shown in the form of a general-purpose computing device. The components of computer system/server1012may include, but are not limited to, one or more processors or processing units1016, a system memory1028, and a bus1018that couples various system components including system memory1028to processor1016.

The computer system/server1012typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server1012, and it includes both volatile and non-volatile media, removable and non-removable media.

The system memory1028can include computer system readable media in the form of volatile memory, such as random access memory (RAM)1030and/or cache memory1032. The computer system/server1012may further include other removable/non-removable, volatile/nonvolatile computer system storage media. By way of example only, storage system1034can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a “hard drive”). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to the bus1018by one or more data media interfaces. As depicted and described herein, the memory1028may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of embodiments of the invention. A program/utility1040, having a set (at least one) of program modules1042, may be stored in memory1028by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. Program modules1042generally carry out the functions and/or methodologies of embodiments of the invention as described herein.

Computer system/server1012may also communicate with one or more external devices1014such as a keyboard, a pointing device, a display1024, etc., one or more devices that enable a user to interact with computer system/server1012, and/or any devices (e.g., network card, modem, etc.) that enable computer system/server1012to communicate with one or more other computing devices. Such communication can occur via Input/Output (I/O) interfaces1022. Still yet, computer system/server1012can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter1020. As depicted, network adapter1020communicates with the other components of computer system/server1012via bus1018. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server1012. Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.

Characteristics are as follows:

Service Models are as follows:

Deployment Models are as follows:

Computing node1010inFIG. 10can be an example of a cloud computing node. Computing node1010is only one example of a suitable cloud computing node and is not intended to suggest any limitation as to the scope of use or functionality of embodiments of the invention described herein. Regardless, computing node1010is capable of being implemented and/or performing any of the functionality set forth hereinabove. It is also to be understood that computing node1010is not necessarily a cloud computing node.

Referring now toFIG. 11, illustrative cloud computing environment1150is depicted. As shown, cloud computing environment1150comprises one or more cloud computing nodes1110with which local computing devices used by cloud consumers, such as, for example, a wearable device (not explicitly shown), a personal digital assistant (PDA) or cellular telephone1154A, desktop computer1154B, laptop computer1154C, and/or automobile computer system1154N may communicate. Nodes1110may communicate with one another. They may be grouped (not shown) physically or virtually, in one or more networks, such as Private, Community, Public, or Hybrid clouds as described hereinabove, or a combination thereof. This allows cloud computing environment1150to offer infrastructure, platforms and/or software as services for which a cloud consumer does not need to maintain resources on a local computing device. It is understood that the types of computing devices1154A-N shown inFIG. 11are intended to be illustrative only and that computing nodes1110and cloud computing environment1150can communicate with any type of computerized device over any type of network and/or network addressable connection (e.g., using a web browser).

Referring now toFIG. 12, a set of functional abstraction layers provided by cloud computing environment1150(FIG. 11) is shown. It should be understood in advance that the components, layers, and functions shown inFIG. 6are intended to be illustrative only and embodiments of the invention are not limited thereto. As depicted, the following layers and corresponding functions are provided:

Hardware and software layer1260includes hardware and software components. Examples of hardware components include: mainframes1261; RISC (Reduced Instruction Set Computer) architecture based servers1262; servers1263; blade servers1264; storage devices1265; and networks and networking components1266. In some embodiments, software components include network application server software1267and database software1268.

Virtualization layer1270provides an abstraction layer from which the following examples of virtual entities may be provided: virtual servers1271; virtual storage1272; virtual networks1273, including virtual private networks; virtual applications and operating systems1274; and virtual clients1275.

Workloads layer1290provides examples of functionality for which the cloud computing environment may be utilized. Examples of workloads and functions which may be provided from this layer include: mapping and navigation1291; software development and lifecycle management1292; virtual classroom education delivery1293; data analytics processing1294; transaction processing1295; and view providing1296, which may implement the functionality described above with respect toFIGS. 1-11.