An example embodiment relates generally to the generation of a panoramic view based on images captured by a plurality of cameras.
Panoramic views are generated for a variety of purposes. For example, panoramic views may be utilized in conjunction with various virtual reality applications. In such a virtual reality system, a viewer, such as a person with viewing a head mounted display, may focus on different portions of the panoramic view including a central portion positioned in front of the viewer as well as peripheral portions positioned to the sides of the viewer. As such, the viewer may be more fully immersed in the scene represented by the panoramic view.
A panoramic view may be captured by a plurality of cameras with the images captured by the cameras then stitched and blended together. The combination of the images to form the panoramic image may be both processing intensive and time intensive. For example, the Google Jump system utilizes 16 cameras to capture a 360° panoramic view as well as the associated audio. The Google Jump system then utilizes offline processing to combine the images captured by the plurality of cameras. As such, the availability of the resulting panoramic view is delayed by the requisite processing of the images such that the panoramic image cannot be viewed in real time. Other systems are available or have been proposed for the capture of content from which a panoramic view suitable for virtual reality purposes can be constructed. However, these other systems also generally require fairly extensive image processing in order to combine and blend the images captured by a plurality of cameras, thereby limiting the utilization of such systems.
A method, apparatus and computer program product are therefore provided in accordance with an example embodiment in order to generate a panoramic view, such as for utilization in conjunction with a virtual reality system, in a computationally efficient manner. In this regard, the method, apparatus and computer program product of an example embodiment provide for the generation of the panoramic view in a more timely manner and with less intensive processing than at least some conventional systems. Thus, the resulting panoramic view may be more readily available and may be more widely utilized, such as by viewers of virtual reality systems.
In an example embodiment, a method is provided that includes receiving images captured by at least three cameras having different fields of view. The different fields of view have a mutually overlapping portion. The method of this example embodiment also includes generating a first panoramic view and a second panoramic view, different than the first panoramic view. The first and second panoramic views are generated by generating a first region of a respective panoramic view such that pixels within the first region are based upon an image captured by one camera of the at least three cameras. The first and second panoramic views are also generated by generating a second region of the respective panoramic view at least partially corresponding with the mutually overlapping portion of the fields of view. The generation of the second region of a respective panoramic view is based upon a combination of images captured by at least two cameras of the at least three cameras. The generation of the second region of the respective panoramic view includes combining the images captured by at least two cameras of the at least three cameras utilizing depth information associated with an image captured by at least one camera of the at least three cameras, such as by utilizing depth based blending.
The method of an example embodiment generates the first region of a respective panoramic view by generating the first region of the first panoramic view such that all pixels within the first region are based upon an image captured by the one camera. A method of an example embodiment also generates the first region of a respective panoramic view by generating the first region of the second panoramic view so as to have a first subregion comprised of pixels that are based upon the image captured by the first camera and a second subregion comprised of pixels that are based upon the image captured by the second camera. The method of an example embodiment generates the first panoramic view and the second panoramic view by generating, for the panoramic views, a third region of the respective panoramic view such that pixels within the third region are based upon the image captured by the one camera. In this example embodiment, the second region is positioned between the first and third regions of the respective panoramic image.
The method of an example embodiment also includes causing the first and second panoramic views to be presented to left and right eyes, respectively, such that the first region of the respective panoramic views is presented in two dimensions and the second region of the respective panoramic views is presented in three dimensions. In an example embodiment, the at least three cameras includes first, second and third cameras having different, but partially overlapping fields of view. The method of this example embodiment generates the second region of the respective panoramic view by generating the second region of the first panoramic view based upon a combination of the images captured by the first and second cameras and generating the second region of the second panoramic view based upon a combination of the images captured by the second and third cameras.
In another example embodiment, an apparatus is provided that includes at least one processor and at least one memory that includes computer program code with the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus to at least receive images captured by at least three cameras having different fields of view. The different fields of view have a mutually overlapping portion. The at least one memory and computer program code are also configured to, with the at least one processor, cause the apparatus to generate a first panoramic view and a second panoramic view, different than the first panoramic view. The first and second panoramic views are generated by generating a first region of a respective panoramic view such that pixels within the first region are based upon an image captured by one camera of the at least three cameras and generating a second region of the respective panoramic view at least partially corresponding with the mutually overlapping portion of the fields of view. The generation of the second region of the respective panoramic view is based upon a combination of images captured by at least two cameras of the at least three cameras. The generation of the second region of the respective panoramic view includes combining the images captured by at least two cameras of the at least three cameras utilizing depth information associated with an image captured by at least one camera of the at least three cameras, such as by utilizing depth based blending.
The at least one memory and the computer program code are configured to, with the at least one processor, cause the apparatus of an example embodiment to generate the first region of a respective panoramic view by generating the first region of the first panoramic view such that all pixels within the first region are based upon an image captured by the one camera. The at least one memory and the computer program code are configured to, with the at least one processor, cause the apparatus of an example embodiment to generate the first region of the respective panoramic view by generating the first region of the second panoramic view so as to have a first subregion that includes pixels that are based upon the image captured by a first camera and a second subregion that includes pixels that are based upon the image captured by a second camera. The at least one memory and the computer program code are configured to, with the at least one processor, cause the apparatus of an example embodiment to generate the first panoramic view and the second panoramic view by generating, for the panoramic views, a third region of the respective panoramic views such that pixels within the third region are based upon the image captured by the one camera. In this example embodiment, the second region is positioned between the first and third regions of the respective panoramic image.
The at least one memory and the computer program code are further configured to, with the at least one processor, cause the apparatus of an example embodiment to cause the first and second panoramic views to be presented to left and right eyes, respectively. Thus, the first region of the respective panoramic views is presented in two-dimensions and the second region of the respective panoramic views is presented in three-dimensions. In an example embodiment, the at least three cameras include first, second and third cameras having different, but partially overlapping fields of view. The at least one memory and the computer program code are configured to, with the at least one processor, cause the apparatus of this example embodiment to generate the second region of the respective panoramic view by generating the second region of the first panoramic view based upon a combination of the images captured by the first and second cameras and by generating the second region of the second panoramic view based upon a combination of the images captured by the second and third cameras.
In a further example embodiment, a computer program product is provided that includes at least one non-transitory computer-readable storage medium having computer-executable program code instructions stored therein with the computer-executable program code instructions including program code instructions configured to receive images captured by at least three cameras having different fields of view. The different fields of view have a mutually overlapping portion. The computer-executable program code instructions also include program code instructions configured to generate a first panoramic view and a second panoramic view, different than the first panoramic view. The first and second panoramic views are generated by generating a first region of a respective panoramic view such that pixels within the first region are based upon an image captured by one camera of the at least three cameras. The first and second panoramic views are also generated by generating a second region of the respective panoramic view at least partially corresponding with the mutually overlapping portion of the fields of view. The generation of the second region of the respective panoramic view is based upon a combination of images captured by at least two cameras of the at least three cameras. The generation of the second region of the respective panoramic view includes combining the images captured by at least two cameras of the at least three cameras utilizing depth information associated with an image captured by at least one camera of the at least three cameras, such as by utilizing depth based blending.
In an example embodiment, the program code instructions configured to generate the first region of a respective panoramic view include program code instructions configured to generate the first region of the first panoramic view such that all pixels within the first region are based upon an image captured by the one camera. The program code instructions configured to generate the first region of a respective panoramic view also include, in this example embodiment, program code instructions configured to generate the first region of the second panoramic view so as to have a first subregion comprised of pixels that are based upon the image captured by a first camera and a second subregion comprised of pixels that are based upon the image captured by a second camera. In an example embodiment, the program code instructions configured to generate the first panoramic view and the second panoramic view include program code instructions configured to generate, for the panoramic views, a third region of the respective panoramic view such that pixels within the third region are based upon the image captured by the one camera. The second region of this example embodiment is positioned between the first and third regions of the respective panoramic image.
The computer-executable program code instructions of an example embodiment further include program code instructions configured to cause the first and second panoramic views to be presented to left and right eyes, respectively, such that the first region of the respective panoramic views is presented in two-dimensions and the second region of the respective panoramic views is presented in three-dimensions. In an example embodiment, the at least three cameras include first, second and third cameras having different, but partially overlapping fields of view. The program code instructions of this example embodiment that are configured to generate the second region of the respective panoramic view include program code instructions configured to generate the second region of the first panoramic view based upon a combination of the images captured by the first and second cameras and program code instructions configured to generate the second region of the second panoramic view based upon a combination of the images captured by the second and third cameras.
In yet another example embodiment, an apparatus is provided that includes means for receiving images captured by at least three cameras having different fields of view. The different fields of view have a mutually overlapping portion. The apparatus of this example embodiment also includes means for generating a first panoramic view and a second panoramic view, different than the first panoramic view. The first and second panoramic views are generated by generating a first region of a respective panoramic view such that pixels within the first region are based upon an image captured by one camera of the at least three cameras. The first and second panoramic views are also generated by generating a second region of the respective panoramic view at least partially corresponding with the mutually overlapping portion of the fields of view. The generation of the second region of the respective panoramic view is based upon a combination of images captured by at least two cameras of the at least three cameras. The generation of the second region of the respective panoramic view includes combining the images captured by at least two cameras of the at least three cameras utilizing depth information associated with an image captured by at least one camera of the at least three cameras.
Having thus described certain example embodiments of the present disclosure in general terms, reference will hereinafter be made to the accompanying drawings, which are not necessarily drawn to scale, and wherein:
Some embodiments will now be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all, embodiments of the invention are shown. Indeed, various embodiments of the invention may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will satisfy applicable legal requirements. Like reference numerals refer to like elements throughout. As used herein, the terms “data,” “content,” “information,” and similar terms may be used interchangeably to refer to data capable of being transmitted, received and/or stored in accordance with embodiments of the present invention. Thus, use of any such terms should not be taken to limit the spirit and scope of embodiments of the present invention.
Additionally, as used herein, the term ‘circuitry’ refers to (a) hardware-only circuit implementations (e.g., implementations in analog circuitry and/or digital circuitry); (b) combinations of circuits and computer program product(s) comprising software and/or firmware instructions stored on one or more computer readable memories that work together to cause an apparatus to perform one or more functions described herein; and (c) circuits, such as, for example, a microprocessor(s) or a portion of a microprocessor(s), that require software or firmware for operation even if the software or firmware is not physically present. This definition of ‘circuitry’ applies to all uses of this term herein, including in any claims. As a further example, as used herein, the term ‘circuitry’ also includes an implementation comprising one or more processors and/or portion(s) thereof and accompanying software and/or firmware. As another example, the term ‘circuitry’ as used herein also includes, for example, a baseband integrated circuit or applications processor integrated circuit for a mobile phone or a similar integrated circuit in a server, a cellular network device, other network device, and/or other computing device.
As defined herein, a “computer-readable storage medium,” which refers to a non-transitory physical storage medium (e.g., volatile or non-volatile memory device), can be differentiated from a “computer-readable transmission medium,” which refers to an electromagnetic signal.
A method, apparatus and computer program product are provided in accordance with an example embodiment in order to efficiently generate a panoramic view, such as for use in conjunction with virtual reality or other applications. In this regard, a panoramic view is generated that includes a region, such as the region that is positioned in front of the viewer, that is presented in thee-dimensions (3D) and other regions, such as peripheral regions, that are presented in two-dimensions (2D). By judiciously generating the panoramic view so as to include both 3D regions and 2D regions, the panoramic view may be generated in an efficient manner, both in terms of the processing resources consumed during the generation of the panoramic view and the time required to generate the panoramic view. Thus, the panoramic view may, in some instances, be generated in real time or near real time relative to the capture of the images that at least partially comprise the panoramic view.
The panoramic view that is generated in accordance with an example embodiment of the present invention is based upon images captured by at least three cameras. In the embodiment depicted in
As shown in
As shown in the embodiment depicted in
Based upon the images captured by the cameras 10, a panoramic view is generated. In this regard, the panoramic view may be generated by an apparatus 20 as depicted in
Regardless of the manner in which the apparatus 20 is embodied, the apparatus of an example embodiment is configured to include or otherwise be in communication with a processor 22 and a memory device 24 and optionally the user interface 26 and/or a communication interface 28. In some embodiments, the processor (and/or co-processors or any other processing circuitry assisting or otherwise associated with the processor) may be in communication with the memory device via a bus for passing information among components of the apparatus. The memory device may be non-transitory and may include, for example, one or more volatile and/or non-volatile memories. In other words, for example, the memory device may be an electronic storage device (e.g., a computer readable storage medium) comprising gates configured to store data (e.g., bits) that may be retrievable by a machine (e.g., a computing device like the processor). The memory device may be configured to store information, data, content, applications, instructions, or the like for enabling the apparatus to carry out various functions in accordance with an example embodiment of the present invention. For example, the memory device could be configured to buffer input data for processing by the processor. Additionally or alternatively, the memory device could be configured to store instructions for execution by the processor.
As described above, the apparatus 20 may be embodied by a computing device. However, in some embodiments, the apparatus may be embodied as a chip or chip set. In other words, the apparatus may comprise one or more physical packages (e.g., chips) including materials, components and/or wires on a structural assembly (e.g., a baseboard). The structural assembly may provide physical strength, conservation of size, and/or limitation of electrical interaction for component circuitry included thereon. The apparatus may therefore, in some cases, be configured to implement an embodiment of the present invention on a single chip or as a single “system on a chip.” As such, in some cases, a chip or chipset may constitute means for performing one or more operations for providing the functionalities described herein.
The processor 22 may be embodied in a number of different ways. For example, the processor may be embodied as one or more of various hardware processing means such as a coprocessor, a microprocessor, a controller, a digital signal processor (DSP), a processing element with or without an accompanying DSP, or various other processing circuitry including integrated circuits such as, for example, an ASIC (application specific integrated circuit), an FPGA (field programmable gate array), a microcontroller unit (MCU), a hardware accelerator, a special-purpose computer chip, or the like. As such, in some embodiments, the processor may include one or more processing cores configured to perform independently. A multi-core processor may enable multiprocessing within a single physical package. Additionally or alternatively, the processor may include one or more processors configured in tandem via the bus to enable independent execution of instructions, pipelining and/or multithreading.
In an example embodiment, the processor 22 may be configured to execute instructions stored in the memory device 24 or otherwise accessible to the processor. Alternatively or additionally, the processor may be configured to execute hard coded functionality. As such, whether configured by hardware or software methods, or by a combination thereof, the processor may represent an entity (e.g., physically embodied in circuitry) capable of performing operations according to an embodiment of the present invention while configured accordingly. Thus, for example, when the processor is embodied as an ASIC, FPGA or the like, the processor may be specifically configured hardware for conducting the operations described herein. Alternatively, as another example, when the processor is embodied as an executor of software instructions, the instructions may specifically configure the processor to perform the algorithms and/or operations described herein when the instructions are executed. However, in some cases, the processor may be a processor of a specific device (e.g., a pass-through display or a mobile terminal) configured to employ an embodiment of the present invention by further configuration of the processor by instructions for performing the algorithms and/or operations described herein. The processor may include, among other things, a clock, an arithmetic logic unit (ALU) and logic gates configured to support operation of the processor.
In some embodiments, the apparatus 20 may optionally include a user interface 26 that may, in turn, be in communication with the processor 22 to provide output to the user and, in some embodiments, to receive an indication of a user input. As such, the user interface may include a display and, in some embodiments, may also include a keyboard, a mouse, a joystick, a touch screen, touch areas, soft keys, a microphone, a speaker, or other input/output mechanisms. Alternatively or additionally, the processor may comprise user interface circuitry configured to control at least some functions of one or more user interface elements such as a display and, in some embodiments, a speaker, ringer, microphone and/or the like. The processor and/or user interface circuitry comprising the processor may be configured to control one or more functions of one or more user interface elements through computer program instructions (e.g., software and/or firmware) stored on a memory accessible to the processor (e.g., memory device 24, and/or the like).
The apparatus 20 may optionally also include the communication interface 28. The communication interface may be any means such as a device or circuitry embodied in either hardware or a combination of hardware and software that is configured to receive and/or transmit data from/to a network and/or any other device or module in communication with the apparatus. In this regard, the communication interface may include, for example, an antenna (or multiple antennas) and supporting hardware and/or software for enabling communications with a wireless communication network. Additionally or alternatively, the communication interface may include the circuitry for interacting with the antenna(s) to cause transmission of signals via the antenna(s) or to handle receipt of signals received via the antenna(s). In some environments, the communication interface may alternatively or also support wired communication. As such, for example, the communication interface may include a communication modem and/or other hardware/software for supporting communication via cable, digital subscriber line (DSL), universal serial bus (USB) or other mechanisms
Referring now to
The apparatus 20 of an example embodiment also includes means, such as the processor 22, the memory 24, the communication interface 28 or the like, for receiving depth information associated with the image captured by at least one of the cameras 10. In this regard, the multi-camera system depicted in
Based upon extrinsic camera matrix information that define the manner in which the cameras are positioned and oriented relative to one another, the apparatus, such as the processor, is configured to transform the depth information associated with the image captured by one of the cameras to the images captured by the other cameras. In an example embodiment, the depth information may be represented by a depth map (also known as a diversity map) in which each element of the depth map is associated with a corresponding pixel or group of pixels of the image captured by the respective camera and provides information regarding the distance from the respective camera to the feature represented by the pixel or group of pixels. The depth information associated with the image captured by one of the cameras may then be transformed so as to be associated with the images captured by the other cameras The depth information may be transformed based upon extrinsic camera matrix information that defines the manner in which the cameras are oriented relative to one another. The extrinsic camera matrix information may be stored by the memory 24 or may otherwise be accessible to the processor 22. Based upon the extrinsic camera matrix information, the apparatus 20, such as the processor, may transform the depth map associated with the image captured by one of the cameras to depth maps associated with the images captured by the other cameras, such as described by OpenCV 2.4.12.0 documentation entitled “Camera Calibration and 3D Reconstruction”. Prior to or following the transformation of the depth information associated with the image captured by one of the cameras to the images captured by the other cameras, the apparatus, such as the processor, may be configured to filter the depth map so as to fill any holes within the depth map and/or to fill or replace any regions within the depth map for which there is a relatively low confidence in the corresponding depth information. See block 34 of
The apparatus 20 also includes means, such as the processor 22 or the like, for generating a first panoramic view and a second panoramic view, different than the first panoramic view. As described below, the first and second panoramic views may subsequently be separately presented to the left and right eyes, respectively, of a viewer in order to provide for a stereoscopic display. In order to generate the first and second panoramic views, the apparatus of an example embodiment includes means, such as a processor or the like, for generating a first region of a respective panoramic view such that the pixels within the first region, such as each pixel within the first region, are based upon the image captured by one camera 10. See block 36 of
Based upon the images captured by the cameras 10 and the respective fields of view of the cameras, the angular extent of the panoramic view that is generated is generally divided into three regions, namely, a first region 50 positioned to the left of the viewer, a second region 52 positioned generally in front of the viewer in the direction which the viewer is facing and a third region 54 positioned to the right of the viewer, as shown in
For example, the first camera C1 and the third camera C3 may be oriented at a greater angular difference relative to the second camera C2, such as that +/−60° relative to the second camera C2. In this embodiment, the angular extent of the panoramic view would be increased, but the angular extent of the second region 52 of the panoramic view (in which the fields of view of all of the cameras 10 overlap) that is presented in three-dimensions as described below would be decreased and the angular extent of the first region 50 and the third region 52 that are presented in two-dimensions as described below would be increased. Conversely, the first camera C1 and the third camera C3 may be oriented at a smaller angular difference relative to the second camera C2, such as that +/−30° relative to the second camera C2. In this embodiment, the angular extent of the panoramic view would be decreased, but the angular extent of the second region 52 of the panoramic view (in which the fields of view of all of the cameras 10 overlap) that is presented in three-dimensions as described below would be increased and the angular extent of the first region 50 and the third region 52 that are presented in two-dimensions as described below would be decreased.
With respect to the generation of the first region 50 of a respective panoramic view,
As shown in block 38 of
By way of example, in the embodiment depicted in
L
overlap(x,y)=c1(x,y)*w1(x,y)+c2(x′,y′)*(1−w1(x,y))
wherein x and y are the coordinates of the respective pixels within an image. In addition, c1(x,y) is the value of a pixel at location x, y within the image captured by camera I and w1(x,y) represents the blending weight which may be set to a predefined value, such as 0.5. Additionally, (x′,y′) represent the pixel location within the image captured by another camera, such as camera C2, that corresponds to location (x,y) within the image captured by a first camera C1.
As noted above, the images from two or more cameras are combined in a manner that utilizes the depth information, such as by utilizing depth based blending in which the images are warped and/or aligned utilizing the depth information, e.g., depth maps. As such, in an embodiment in which the images captured by the first camera C1 and the second camera C2 are calibrated and rectified and lie in a horizontal plane, the apparatus 20, such as the processor 22, may be configured to take into account the depth information in determining the corresponding pixel location (x′,y′) within the image captured by the second camera C2 as follows:
x′=x+k*d1(x,y)
y′=y
wherein k is a predefined constant, such as an integer constant, and d1(x,y) is the depth of the pixel at location (x,y) within the image captured by the first camera C1.
As such, in a general case, the apparatus 20, such as the processor 22, may be configured to determine the corresponding pixel location within the image captured by the second camera C2 as follows:
(x′,y′)=f(x,y,d1(x,y),R12,T12,A2)
wherein R12 and T12 are provided by the extrinsic camera matrix information and define a relative rotation and translation, respectively between the first and second cameras and A2 is the camera intrinsic matrix of the second camera C2.
Similarly, the apparatus 20, such as the processor 22, of this example embodiment is configured to determine the combination of the images captured by the second and third cameras in order to generate the second region 52 of the second panoramic view 64 as follows:
L
overlap(x,y)=c2(x,y)*w2(x,y)+c3(x′,y′)*(1−w2(x,y))
wherein the subscripts 2 and 3 reference parameters associated with the second camera C2 and the third camera C3, respectively.
As shown in block 40 of
In this regard and similar to that described above in conjunction with
Once each of the regions of the first and second panoramic views 62, 64 have been generated, the resulting panoramic views may be presented to the viewer, either immediately or following storage in memory 24 or a remote memory device. As such, the apparatus 20 of an example embodiment also includes means, such as the processor 22, the communication interface 28 or the like, for causing the first and second panoramic views to be presented to the left or right eyes, respectively, of a viewer. For example, the first and second panoramic views may be presented to the viewer utilizing various displays, such as a virtual reality display as may be embodied by a head mounted display, e.g., goggles. Based upon the manner in which the different regions of the first and second panoramic views are generated, the first region 50 and the third region 54 of the respective panoramic views are presented in two-dimensions, while the second region 52 of the respective panoramic views is presented in three-dimensions. Thus, the second region of the panoramic views that the viewer is generally facing (and which, therefore, is generally the focus of the viewer's attention) is presented in three dimensions so as to enhance the user experience, such as in conjunction with a virtual reality application or otherwise. However, the first and third regions positioned within the peripheral view of the viewer are presented in two-dimensions such that the viewer can see features within the first and third regions. As a result of the generation of the first and third regions of the panoramic views in two-dimensions, the generation of the first and third regions is performed with increased efficiency, both in terms of the computational efficiency and the time required for computation. Thus, the resulting panoramic views may be more readily available and may be more widely utilized, such as by viewers of virtual reality systems.
The method, apparatus 20 and computer program product of an example embodiment may generate first and second panoramic views of representative of a single image captured by each of the cameras 10. Alternatively, the method, apparatus and computer program product may generate first and second panoramic views of representative of each frame of the video images captured by each of the cameras 10. In this embodiment in which the panoramic views of each frame of a video image are generated, the efficiency improvements provided by example embodiments of the present invention may be magnified.
As described above,
Accordingly, blocks of the flowcharts support combinations of means for performing the specified functions and combinations of operations for performing the specified functions for performing the specified functions. It will also be understood that one or more blocks of the flowcharts, and combinations of blocks in the flowcharts, can be implemented by special purpose hardware-based computer systems which perform the specified functions, or combinations of special purpose hardware and computer instructions.
In some embodiments, certain ones of the operations above may be modified or further amplified. Furthermore, in some embodiments, additional optional operations may be included. Modifications, additions, or amplifications to the operations above may be performed in any order and in any combination.
Many modifications and other embodiments of the inventions set forth herein will come to mind to one skilled in the art to which these inventions pertain having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the inventions are not to be limited to the specific embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the appended claims. Moreover, although the foregoing descriptions and the associated drawings describe example embodiments in the context of certain example combinations of elements and/or functions, it should be appreciated that different combinations of elements and/or functions may be provided by alternative embodiments without departing from the scope of the appended claims. In this regard, for example, different combinations of elements and/or functions than those explicitly described above are also contemplated as may be set forth in some of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.