Methods and systems for classifying pixels as foreground using both short-range depth data and long-range depth data
10244224 ยท 2019-03-26
Assignee
Inventors
- Quang Nguyen (Ho Chi Minh, VN)
- Long Dang (Ho Chi Minh, VN)
- Cong Nguyen (Ho Chi Minh, VN)
- Dennis Lin (Chicago, IL)
- Simion Venshtain (Chicago, IL)
- Minh Do (Urbana, IL)
Cpc classification
H04N2013/0092
ELECTRICITY
International classification
H04N13/271
ELECTRICITY
H04N13/00
ELECTRICITY
Abstract
Disclosed herein are methods and systems for classifying pixels as foreground using both short-range depth data and long-range depth data. One embodiment takes the form of a process that includes obtaining video data depicting at least a portion of a user. The process also includes obtaining short-range depth data associated with the video data. The process also includes obtaining long-range depth data associated with the video data. The video data, short-range depth data, and long-range depth data may be obtained via a single 3-D video camera. The process also includes classifying pixels of the video data as foreground based at least in part on both the short-range depth data and the long-range depth data. In some embodiments, classifying pixels of the video data as foreground comprises employing an alpha mask. The alpha mask may comprise binary foreground (hard) indicators. The alpha mask may comprise foreground-likelihood (soft) indicators.
Claims
1. A method comprising: obtaining, from a three-dimensional (3-D) video camera, video data depicting at least a portion of a user; obtaining, from the 3-D video camera operating in a short-range mode, short-range depth data associated with the video data; obtaining, from the 3-D video camera operating in a long-range mode, long-range depth data associated with the video data; detecting less than a threshold amount of motion in at least one of the obtained short-range depth data and the obtained video data during a motion-detection period; classifying pixels of the video data as foreground based at least in part on a comparison between the short-range depth data and the long-range depth data; and extracting a user-persona from the video data based at least in part on the pixels of the video data classified as foreground.
2. The method of claim 1, wherein detecting less than a threshold amount of motion in at least one of the obtained short-range depth data and the obtained video data during a motion-detection period comprises detecting a mode-switching trigger, and responsively switching from obtaining the short-range depth data from the 3-D video camera operating in the short-range mode to obtaining the long-range depth data from the 3-D video camera operating in the long-range mode.
3. The method of claim 2, wherein the mode-switching trigger is at least one of a periodic mode-switching trigger and an on-demand mode-switching trigger.
4. The method of claim 1, wherein the motion-detection period is a periodic motion-detection period.
5. The method of claim 1, further comprising: identifying a short-range foreground region at least in part by using the short-range depth data; and identifying a long-range foreground region at least in part by using the long-range depth data.
6. The method of claim 5, wherein classifying pixels of the video data as foreground based at least in part on a comparison between the short-range depth data and the long-range depth data comprises classifying pixels of the video data as foreground based at least in part on a comparison between the identified short-range foreground region and the identified long-range foreground region.
7. The method of claim 5, wherein: identifying the short-range foreground region at least in part by using the short-range depth data comprises employing a threshold depth value; and identifying the long-range foreground region at least in part by using the long-range depth data comprises employing the threshold depth value.
8. The method of claim 5, further comprising determining a user-hair region of the video data at least in part by using both the short-range foreground region and the long-range foreground region.
9. The method of claim 8, further comprising identifying a foreground-region delta at least in part by subtracting the short-range foreground region from the long-range foreground region, wherein determining the user-hair region of the video data comprises including the identified foreground-region delta in the user-hair region.
10. The method of claim 9, wherein classifying pixels of the video data as foreground comprises classifying pixels in the identified foreground-region delta as foreground.
11. The method of claim 9, further comprising updating a user-hair-color model using respective colors of pixels in the identified foreground-region delta, wherein classifying pixels of the video data as foreground comprises classifying pixels of the video data as foreground at least in part by using the updated user-hair-color model.
12. The method of claim 11, wherein classifying pixels of the video data as foreground at least in part by using the updated user-hair-color model comprises performing a flood fill using the updated user-hair-color model.
13. The method of claim 1, wherein classifying pixels of the video data as foreground comprises employing an alpha mask.
14. A system comprising: a communication interface; a processor; and data storage containing instructions executable by the processor for causing the system to carry out a set of functions, the set of functions including: obtaining, from a three-dimensional (3-D) video camera, video data depicting at least a portion of a user; obtaining, from the 3-D video camera operating in a short-range mode, short-range depth data associated with the video data; obtaining, from the 3-D video camera operating in a long-range mode, long-range depth data associated with the video data; detecting less than a threshold amount of motion in at least one of the obtained short-range depth data and the obtained video data during a motion-detection period; classifying pixels of the video data as foreground based at least in part on a comparison between the short-range depth data and the long-range depth data; and extracting a user-persona from the video data based at least in part on the pixels of the video data classified as foreground.
15. A method comprising: obtaining, from a three-dimensional (3-D) video camera, video data depicting at least a portion of a user; obtaining, from the 3-D video camera operating in a short-range mode, short-range depth data associated with the video data; obtaining, from the 3-D video camera operating in a long-range mode, long-range depth data associated with the video data; classifying pixels of the video data as foreground based at least in part on a comparison between the short-range depth data and the long-range depth data; extracting a user-persona from the video data based at least in part on the pixels of the video data classified as foreground; identifying a short-range foreground region at least in part by using the short-range depth data; identifying a long-range foreground region at least in part by using the long-range depth data; and determining a user-hair region of the video data at least in part by using both the short-range foreground region and the long-range foreground region.
16. The method of claim 15, wherein classifying pixels of the video data as foreground based at least in part on a comparison between the short-range depth data and the long-range depth data comprises classifying pixels of the video data as foreground based at least in part on a comparison between the identified short-range foreground region and the identified long-range foreground region.
17. The method of claim 15, wherein: identifying the short-range foreground region at least in part by using the short-range depth data comprises employing a threshold depth value; and identifying the long-range foreground region at least in part by using the long-range depth data comprises employing the threshold depth value.
18. The method of claim 15, further comprising identifying a foreground-region delta at least in part by subtracting the short-range foreground region from the long-range foreground region, wherein determining the user-hair region of the video data comprises including the identified foreground-region delta in the user-hair region.
19. The method of claim 18, wherein classifying pixels of the video data as foreground comprises classifying pixels in the identified foreground-region delta as foreground.
20. The method of claim 18, further comprising updating a user-hair-color model using respective colors of pixels in the identified foreground-region delta, wherein classifying pixels of the video data as foreground comprises classifying pixels of the video data as foreground at least in part by using the updated user-hair-color model.
Description
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
(1) The accompanying figures, where like reference numerals refer to identical or functionally similar elements throughout the separate views, together with the detailed description below, are incorporated in and form part of the specification, and serve to further illustrate embodiments of concepts that include the claimed invention, and explain various principles and advantages of those embodiments.
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14) Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of embodiments of the present invention.
(15) The apparatus and method components have been represented where appropriate by conventional symbols in the drawings, showing only those specific details that are pertinent to understanding the embodiments of the present invention so as not to obscure the disclosure with details that will be readily apparent to those of ordinary skill in the art having the benefit of the description herein.
DETAILED DESCRIPTION OF THE INVENTION
(16) Before proceeding with this detailed description, it is noted that the entities, connections, arrangements, and the like that are depicted inand described in connection withthe various figures are presented by way of example and not by way of limitation. As such, any and all statements or other indications as to what a particular figure depicts, what a particular element or entity in a particular figure is or has, and any and all similar statementsthat may in isolation and out of context be read as absolute and therefore limitingcan only properly be read as being constructively preceded by a clause such as In at least one embodiment, . . . . And it is for reasons akin to brevity and clarity of presentation that this implied leading clause is not repeated ad nauseum in this detailed description.
(17)
(18) One embodiment takes the form of the process 100. The process 100 includes obtaining video data depicting at least a portion of a user. The process 100 also includes obtaining short-range depth data associated with the video data. The process 100 also includes obtaining long-range depth data associated with the video data. The process 100 also includes classifying pixels of the video data as foreground based at least in part on the short-range depth data and the long-range depth data.
(19) At element 102 the process 100 includes obtaining video data depicting at least a portion of a user.
(20) At element 104 the process 100 includes obtaining short-range depth data associated with the obtained video data.
(21) At element 106 the process 100 includes obtaining long-range depth data associated with the obtained video data.
(22) At element 108 the process 100 includes classifying pixels of the video data as foreground based at least in part on both the short-range depth data and the long-range depth data.
(23) In at least one embodiment, the process 100 further includes classifying pixels of the video data as background based at least in part on both the short-range depth data and the long-range depth data.
(24) The following paragraphs, with respect to
(25)
(26) The 3-D video camera 202 may be an IV video camera, a light field video camera, or the like. The video data 204 represents a stream of frames of color pixels. The short-range depth data 206 represents a stream of frames of depth pixels. In some embodiments, the 3-D video camera 202 produces a single stream of frames of pixels, wherein the pixels include color and depth information.
(27)
(28)
(29) The graphical overview 400 helps highlight the differences between the short-range mode and the long-range mode. The 3-D video camera 202 operating in the long-range mode refers to a mode in which the 3-D video camera 202 can capture depth information (with at least a threshold level of confidence) of an object at a maximum range. In other words, the 3-D video camera 202 can provide the further depth values in long-range mode than in short-range mode. Switching to operating the 3-D video camera 202 in the long-range mode from the short-range mode may include (but is not limited to) carrying out one or more of the following methods: increasing a power level of an IR emitter, extending a per-frame exposure time (the amount of time to capture one frame), combining a plurality of individual (and in some cases sequential) depth frames together, and the like. These listed methods include drawbacks such as increasing power consumption (which is not good for mobile devices) and decreasing frame rate (which is not good for real-time applications). For at least these listed drawbacks, and possibly others, long range mode shouldn't be used all the time.
(30) The 3-D video camera 202 operating in the short-range mode refers to a mode in which the 3-D video camera 202 can capture depth information (with at least a threshold level of confidence) of an object at less than the maximum range. The 3-D video camera 202 operating in short-range mode captures depth information at a particular framerate, for example 30 frames-per-second. The 3-D video camera 202 operating in long-range mode captures depth information at a framerate that is less than the framerate at which the 3-D video camera 202 operating in short-range mode captures depth information, for example 8 frames-per-second.
(31) In some embodiments, the 3-D video camera 202 is an IV video camera. In such an embodiment, the 3-D video camera 202 captures depth information by emitting an infrared (IR) signal and recording scattering of the IR signal at an IR sensor.
(32) In the short-range mode the IR sensor may receive a smaller IR intensity of the scattered IR signal. In the long-range mode the IR sensor may receive a larger IR intensity of the scattered IR signal (therefore the scattered IR signal from further objects has enough signal-to-noise ratio for the methods and systems described herein to compute depth values with at least the threshold level of confidence). This is the case when switching to operating the 3-D video camera 202 in the long-range mode from the short-range mode includes (but is not limited to) increasing the power level of the IR emitter.
(33) In the short-range mode the IR sensor may receive a less scattered IR signal per frame. In the long-range mode the IR sensor may receive more scattered IR signal per frame because the IR sensor has more time to receive the scattered IR signal (therefore the long-range mode has enough information from further objects for the methods and systems described herein to compute depth values with at least the threshold level of confidence). This is the case when switching to operating the 3-D video camera 202 in the long-range mode from the short-range mode includes (but is not limited to) extending the per-frame exposure time (the amount of time to capture one frame).
(34) The short-range-mode effectiveness 406, and the long-range-mode effectiveness 408 highlight the above-stated qualities. The lighter regions correspond to distances from the 3-D video camera 202 at which it is possible to capture sufficiently accurate depth information. The darker regions correspond to distances from the 3-D video camera 202 at which it is not possible to capture sufficiently accurate depth information. In general, the farther away the user 404 is from the 3-D video camera 202, the less accurate the depth information of the user 404 will be, regardless of the mode used, as indicated by the gradients in the short-range-mode effectiveness 406 and the long-range-mode effectiveness 408.
(35) The user 404 is depicted as standing inside the room 402. The user 404 is standing a distance away from the 3-D video camera 202 at which the 3-D video camera 202 operating in the short-range mode is not sufficiently effective at capturing depth information but the 3-D video camera 202 operating in the long-range mode is sufficiently effective at capturing depth information. In such a scenario, the 3-D video camera 202 operating in the long-range mode may capture information that the 3-D video camera 202 operating in the short-range mode cannot.
(36) When switching the 3-D video camera 202 from operating in the short-range mode to operating in the long-range mode there may be a transition time before the last usable short-range depth frame and the first usable long range-depth frame. During the transition time, there may exist at least one invalid depth frame (frames with non-sense depth values). Newer, 3-D video camera firmware may eventually address this bug.
(37) In some embodiments, in order for the long-range mode to be enabled, a trigger signal must be sent out to request for long range depth frames. In at least one such embodiment, a set of conditions need to be checked within a certain time period, otherwise that trigger signal is ignored. If all conditions are met, the 3-D video camera is switched to the long range mode. The trigger signal can be sent out periodically and also on-demand (i.e., whenever a new user enters the 3-D video camera's field-of-view).
(38) The set of conditions used to help decide whether it is a good time to turn on the long-range mode may include (i) there being at least a threshold number of valid depth pixels in a given frame of depth data and (ii) there being less than a threshold amount of movement (detected motion) of the user (which may involve comparing two or more adjacent short-range mode frames of depth data). A third condition could be that the first two conditions are met within a threshold amount of time or in a continuous sequence of short-range mode frames of depth data.
(39)
(40) In at least one embodiment, the process further includes detecting one of the mode-switching triggers 504 and responsively switching from obtaining the short-range depth data from a 3-D video camera operating in a short-range mode to obtaining the long-range depth data from the 3-D video camera operating in a long-range mode. In at least one such embodiment, as depicted in the graphical overview 500 the mode-switching triggers 504 are periodic mode-switching triggers. In some embodiments, after a predetermined amount of time (e.g., an amount of time that is less than the amount of time separating the mode-switching triggers 504) the 3-D video camera switches back to obtaining the short-range depth data by operating in the short-range mode. In some embodiments, after a predetermined number of captured long-range depth data frames (e.g., a number of frames sufficient to perform the required image processing techniques) the 3-D video camera switches back to obtaining the short-range depth data by operating in the short-range mode. In some embodiments, various other triggers are used to determine when the 3-D video camera is switched back to obtaining the short-range depth data by operating in the short-range mode.
(41)
(42) In at least one embodiment, detecting the mode-switching trigger includes detecting less than a threshold amount of motion in at least one of the obtained short-range depth data and the obtained video data. Detecting motion within either or both of the obtained short-range depth data and the obtained video data is well known by those with skill in the relevant art. In at least one such embodiment, detecting less than the threshold amount of motion in at least one of the obtained short-range depth data and the obtained video data includes detecting less than the threshold amount of motion in at least one of the obtained short-range depth data and the obtained video data during a motion-detection period, such as one of the motion-detection periods 604. In at least one embodiment, as depicted in the graphical overview 600, the motion-detection periods 604 are a periodic motion-detection periods.
(43) The embodiments described with respect to
(44) Motion detection may be employed to help determine when would be a good time to switch 3-D video camera modes in order to minimize depicted user motion between frames and therefore allow for improved comparison. The motion detection is a motion detection of the foreground (i.e., the user or users). Any motion in the background is not taken into consideration. This involves checking for foreground motion between at least two frames of short-range depth data. In some embodiments, both color data and depth data are used to detect foreground motion. By using color data and depth data it is easier to differentiate between flickering pixels caused by IR absorbing materials (e.g., clothes, long hair, etc.) and actual motion pixels. One computationally efficient way to detect motion by using both depth data and color data is to first detect potential motion pixels through use of the depth information and then confirm which potential motion pixels are actual motion pixels through use of the color information.
(45) Additionally, motion detection may be employed in order to check whether a user has moved during the mode-switching period. This involves checking for foreground motion between a frame(s) of short-range depth data and a frame(s) of long-range depth data. Detecting motion between long-range and short range depth frames is slightly different than detecting motion between two short-range depth frames because in long-range mode depth data more may be visible. Therefore, the systems and process described herein only look for motion in the pixels that are valid in short-range mode and not valid in long-range mode. These pixel position differences are only caused by motion. For hair of the user (or other IR absorbing regions), depth pixels may be valid in long-range mode and not valid in short-range mode, and as a result wouldn't be considered.
(46) Motion compensation may be employed to help address depicted user motion during the mode-switching period. Video processing techniques, known by those with skill in the relevant art, may be used to compensate for user motion between a last frame(s) of short-range depth data and a first frame(s) of long-range depth data. This is not as necessary in embodiments wherein multiple depth camera simultaneously respectively capture the long-range depth data and the short-range depth data.
(47) Transition compensation may be employed to help a comprehensive user extraction process run continuously and seamlessly during the transition period. Transition compensation includes replacing any incoherent depth frames of depth data generated during the transition period with the last frame of short-range depth data. As a result, the user doesn't perceive any pause or frame flickering. This is important if the systems and processes described herein turn on long-range mode periodically.
(48) Long-range mode period minimization may be employed to minimize the length of time during which long range mode is on. It is ideal to turn long-range mode off (i.e., to switch the 3-D video camera from operating in the long-range mode to operating in the short-range mode) after the first valid long-range frame of depth data is captured, however the 3-D video camera does not directly indicate if a frame is captured using long-range mode or short-range mode. The systems and processes described herein may include identifying a first valid frame of long-range depth data. Identifying the first valid frame of long-range depth data may include identifying the first valid frame of long-range depth data as a first valid frame of depth data that is captured after capturing incoherent frames of depth data (as a result of a transition period). In cases in which the camera doesn't capture incoherent frames of depth data, then this is unnecessary.
(49)
(50)
(51) In at least one embodiment, classifying pixels of the video data as foreground includes classifying pixels of the video data as foreground at least in part by using a comparison between the short-range depth data (i.e., frame 702) and the long-range depth data (i.e., frame 802). In at least one embodiment, classifying pixels of the video data as foreground includes classifying pixels of the video data as foreground at least in part by using the short-range depth data (i.e., frame 702) and then classifying pixels of the video data as foreground at least in part by using the long-range depth data (i.e., frame 802).
(52)
(53) In at least one embodiment, the process further includes identifying the short-range foreground region 902 at least in part by using the short-range depth data (frame) 702 of
(54)
(55) In at least one embodiment, the process further includes identifying the long-range foreground region 1002 at least in part by using the long-range depth data (frame) 802 of
(56) In some embodiments, a foreground region is identified, wherein the foreground region corresponds with depth values that fall within the threshold depth value. The threshold depth value may be a single value or a range of values. The threshold depth value may indicate a region of depth information that is greater than a particular depth value, less than a particular depth value, included within a range of depth values, or excluded from a range of depth values. For example, the threshold depth value could correspond to a region with depth values greater than 20 cm from a 3-D camera but less than 35 cm from the 3-D camera.
(57) In some embodiments, the threshold depth is a set value, or range of values, that is obtained via a data store. It is immutable and is hard-coded into the systems and processes described herein. In some other embodiments, the threshold depth is generated through an analysis of the obtained depth data. For example, a sub-process can identify for a frame of long-range or short-range depth information, ranges of depth values that respectively correspond to a foreground region and a background region of the video data, and responsively define the threshold depth to segment the two ranges.
(58)
(59) In at least one embodiment, classifying pixels of the video data as foreground includes classifying pixels of the video data as foreground at least in part by using a comparison between the short-range foreground region 902 and the long-range foreground region 1002.
(60) In at least one embodiment, the process further includes determining a user-hair region of the video data at least in part by using both the short-range foreground region 902 and the long-range foreground region 1002.
(61) In at least one embodiment, the process further includes identifying the foreground-region delta 1102 at least in part by subtracting the short-range foreground region 902 from the long-range foreground region 1002. In at least one such embodiment, determining the user-hair region of the video data includes including the identified foreground-region delta 1102 in the user-hair region.
(62) In at least one embodiment, classifying pixels of the video data as foreground includes classifying pixels in the identified foreground-region delta 1102 as foreground.
(63) In at least one embodiment, the process further includes updating a user-hair-color model using respective colors of pixels in the identified foreground-region delta 1102, wherein classifying pixels of the video data as foreground includes classifying pixels of the video data as foreground at least in part by using the updated user-hair-color model. In at least one embodiment, classifying pixels of the video data as foreground at least in part by using the updated user-hair-color model comprises performing a flood fill using the updated user-hair-color model.
(64) In at least one embodiment, classifying pixels of the video data as foreground comprises employing an alpha mask. The alpha mask may include Boolean (hard) foreground indicators or probabilistic (soft) foreground indicators.
(65)
(66) The communication interface 1202 may include one or more wireless-communication interfaces (for communicating according to, e.g., APCO P25, TETRA, DMR, LTE, Wi-Fi, NFC, Bluetooth, and/or one or more other wireless-communication protocols) and/or one or more wired-communication interfaces (for communicating according to, e.g., Ethernet, USB, eSATA, IEEE 1394, and/or one or more other wired-communication protocols). As such, the communication interface 1202 may include any necessary hardware (e.g., chipsets, antennas, Ethernet cards, etc.), any necessary firmware, and any necessary software for conducting one or more forms of communication with one or more other entities as described herein. The processor 1204 may include one or more processors of any type deemed suitable by those of skill in the relevant art, some examples including a general-purpose microprocessor and a dedicated digital signal processor (DSP).
(67) The data storage 1206 may take the form of any non-transitory computer-readable medium or combination of such media, some examples including flash memory, read-only memory (ROM), and random-access memory (RAM) to name but a few, as any one or more types of non-transitory data-storage technology deemed suitable by those of skill in the relevant art could be used. As depicted in
(68) If present, the user interface 1212 may include one or more input devices (a.k.a. components and the like) and/or one or more output devices (a.k.a. components and the like). With respect to input devices, the user interface 1212 may include one or more touchscreens, buttons, switches, microphones, and the like. With respect to output devices, the user interface 1212 may include one or more displays, speakers, light emitting diodes (LEDs), and the like. Moreover, one or more components (e.g., an interactive touchscreen-and-display component) of the user interface 1212 could provide both user-input and user-output functionality. And certainly other user-interface components could be used in a given context, as known to those of skill in the art. Furthermore, the CCD 1200 may include one or more video cameras, depth cameras, 3-D cameras, infrared-visible cameras, light-field cameras or a combination thereof.
(69) In the foregoing specification, specific embodiments have been described. However, one of ordinary skill in the art appreciates that various modifications and changes can be made without departing from the scope of the invention as set forth in the claims below. Accordingly, the specification and figures are to be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope of present teachings.
(70) The benefits, advantages, solutions to problems, and any element(s) that may cause any benefit, advantage, or solution to occur or become more pronounced are not to be construed as a critical, required, or essential features or elements of any or all the claims. The invention is defined solely by the appended claims including any amendments made during the pendency of this application and all equivalents of those claims as issued.
(71) Moreover in this document, relational terms such as first and second, top and bottom, and the like may be used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. The terms comprises, comprising, has, having, includes, including, contains, containing, or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises, has, includes, contains a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. An element preceded by comprises . . . a, has . . . a, includes . . . a, contains . . . a does not, without more constraints, preclude the existence of additional identical elements in the process, method, article, or apparatus that comprises, has, includes, contains the element. The terms a and an are defined as one or more unless explicitly stated otherwise herein. The terms substantially, essentially, approximately, about, or any other version thereof, are defined as being close to as understood by one of ordinary skill in the art, and in one non-limiting embodiment the term is defined to be within 1%, in another embodiment within 5%, in another embodiment within 1% and in another embodiment within 0.5%. The term coupled as used herein is defined as connected, although not necessarily directly and not necessarily mechanically. A device or structure that is configured in a certain way is configured in at least that way, but may also be configured in ways that are not listed.
(72) It will be appreciated that some embodiments may be comprised of one or more generic or specialized processors (or processing devices) such as microprocessors, digital signal processors, customized processors and field programmable gate arrays (FPGAs) and unique stored program instructions (including both software and firmware) that control the one or more processors to implement, in conjunction with certain non-processor circuits, some, most, or all of the functions of the method and/or apparatus described herein. Alternatively, some or all functions could be implemented by a state machine that has no stored program instructions, or in one or more application specific integrated circuits (ASICs), in which each function or some combinations of certain of the functions are implemented as custom logic. Of course, a combination of the two approaches could be used.
(73) Moreover, an embodiment can be implemented as a computer-readable storage medium having computer readable code stored thereon for programming a computer (e.g., comprising a processor) to perform a method as described and claimed herein. Examples of such computer-readable storage mediums include, but are not limited to, a hard disk, a CD-ROM, an optical storage device, a magnetic storage device, a ROM (Read Only Memory), a PROM (Programmable Read Only Memory), an EPROM (Erasable Programmable Read Only Memory), an EEPROM (Electrically Erasable Programmable Read Only Memory) and a Flash memory. Further, it is expected that one of ordinary skill, notwithstanding possibly significant effort and many design choices motivated by, for example, available time, current technology, and economic considerations, when guided by the concepts and principles disclosed herein will be readily capable of generating such software instructions and programs and ICs with minimal experimentation.
(74) The Abstract of the Disclosure is provided to allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in various embodiments for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separately claimed subject matter.