Patent Publication Number: US-2020302609-A1

Title: Detecting abnormalities in vital signs of subjects of videos

Description:
RELATED APPLICATIONS 
     This application claims the benefit of provisional patent application Ser. No. 62/820,559, filed Mar. 19, 2019, the disclosure of which is hereby incorporated herein by reference in its entirety. 
     The present application is related to concurrently filed U.S. patent application Ser. No. ______, filed Mar. 19, 2020, entitled “VITAL SIGN MONITORING SYSTEM USING AN OPTICAL SENSOR,” which is incorporated herein by reference in its entirety. 
    
    
     FIELD OF THE DISCLOSURE 
     This disclosure is related to vital sign detection in subjects of video data. 
     BACKGROUND 
     Due to recent advancements in digital video editing, it is becoming increasingly possible to create artificial videos which seem realistic both visually and audibly. For example, footage of influential persons, such as political leaders, thought leaders, and celebrities, can be spliced together to create fraudulent videos which can portray such influential persons as having said or done things which they did not. These are sometimes referred to as “deep fake” videos. 
     SUMMARY 
     Detecting abnormalities in vital signs of subjects of videos is provided. Aspects of the present disclosure include methods, apparatuses, and systems to detect and measure vital sign information of one or more human subjects of a video and detect abnormalities in the vital sign information. In some examples, such abnormalities can be used to indicate the video data is likely altered or fraudulent. In this regard, imaging photophlethysmography (IPPG) and advanced signal processing techniques, including adaptive color beamforming, can be used to extract the vital signs of the video subjects. 
     Embodiments described herein use IPPG to measure blood volume changes by detecting slight color variations in human skin in recorded video data. Spatially averaged skin-pixel values are tracked and measured, such as by using a face tracking algorithm in individual video frames. By adaptively combining a multi-color (e.g., red-green-blue (RGB)) time-series and concatenating resulting values, detected energy is maximized in a pulsatile direction to detect and measure vital sign(s) of interest. The vital sign information is then analyzed to detect abnormalities which may indicate the video data has been altered or is fraudulent. 
     An exemplary aspect relates to a method for detecting abnormalities in video data. The method includes receiving video data and extracting vital sign information of a subject from the video data using a region of interest on skin of the subject. The method further includes analyzing the vital sign information and determining whether an abnormality occurs in the analyzed vital sign information. 
     Another exemplary aspect relates to a fraud detector. The fraud detector includes a memory and a signal processor coupled to the memory. The signal processor is configured to obtain video data stored in the memory, extract vital sign information of a subject from the video data using a region of interest on skin of the subject, analyze the vital sign information to detect an abnormality, and if the abnormality is detected, determine the video data is fraudulent. 
     Another exemplary aspect relates to a method for detecting fraudulent video data. The method includes receiving video data, extracting vital sign information of a subject from the video data using a region of interest on skin of the subject, analyzing the vital sign information to detect an abnormality, and determining the video data is fraudulent based on the abnormality. 
     Those skilled in the art will appreciate the scope of the present disclosure and realize additional aspects thereof after reading the following detailed description of the preferred embodiments in association with the accompanying drawing figures. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWING FIGURES 
       The accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the disclosure, and together with the description serve to explain the principles of the disclosure. 
         FIG. 1  is a graphical representation of exemplary video data comprising a sequence of captured frames including one or more subjects. 
         FIG. 2  is a schematic diagram of an exemplary approach to analyzing the video data of  FIG. 1  using color beamforming to extract vital sign information. 
         FIG. 3A  is a graphical representation of a traditional fixed color combining approach to photophlethysmography. 
         FIG. 3B  is a graphical representation of results of the approach to analyzing the video data of  FIG. 2 . 
         FIG. 4  is a schematic diagram of an exemplary imaging photophlethysmography (IPPG) approach described herein using color beamforming and spectral analysis to extract vital signs of a subject. 
         FIG. 5  is a schematic block diagram of an exemplary method for detecting abnormalities in video data according to embodiments described herein. 
         FIG. 6  is a graphical representation comparing a first video frame having multiple subjects with vital signs within normal ranges and a second video frame of a subject with an abnormal vital sign. 
         FIG. 7  is a block diagram of a fraud detector suitable for detecting fraudulent video data according to embodiments disclosed herein. 
     
    
    
     DETAILED DESCRIPTION 
     The embodiments set forth below represent the necessary information to enable those skilled in the art to practice the embodiments and illustrate the best mode of practicing the embodiments. Upon reading the following description in light of the accompanying drawing figures, those skilled in the art will understand the concepts of the disclosure and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims. 
     It will be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and, similarly, a second element could be termed a first element, without departing from the scope of the present disclosure. As used herein, the term “and/or” includes any and all combinations of one or more of the associated listed items. 
     It will be understood that when an element such as a layer, region, or substrate is referred to as being “on” or extending “onto” another element, it can be directly on or extend directly onto the other element or intervening elements may also be present. In contrast, when an element is referred to as being “directly on” or extending “directly onto” another element, there are no intervening elements present. Likewise, it will be understood that when an element such as a layer, region, or substrate is referred to as being “over” or extending “over” another element, it can be directly over or extend directly over the other element or intervening elements may also be present. In contrast, when an element is referred to as being “directly over” or extending “directly over” another element, there are no intervening elements present. It will also be understood that when an element is referred to as being “connected” or “coupled” to another element, it can be directly connected or coupled to the other element or intervening elements may be present. In contrast, when an element is referred to as being “directly connected” or “directly coupled” to another element, there are no intervening elements present. 
     Relative terms such as “below” or “above” or “upper” or “lower” or “horizontal” or “vertical” may be used herein to describe a relationship of one element, layer, or region to another element, layer, or region as illustrated in the Figures. It will be understood that these terms and those discussed above are intended to encompass different orientations of the device in addition to the orientation depicted in the Figures. 
     The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the disclosure. As used herein, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises,” “comprising,” “includes,” and/or “including” when used herein specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. 
     Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure belongs. It will be further understood that terms used herein should be interpreted as having a meaning that is consistent with their meaning in the context of this specification and the relevant art and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein. 
     Detecting abnormalities in vital signs of subjects of videos is provided. Aspects of the present disclosure include methods, apparatuses, and systems to detect and measure vital sign information of one or more human subjects of a video and detect abnormalities in the vital sign information. In some examples, such abnormalities can be used to indicate the video data is likely altered or fraudulent. In this regard, imaging photophlethysmography (IPPG) and advanced signal processing techniques, including adaptive color beamforming, can be used to extract the vital signs of the video subjects. 
     Embodiments described herein use IPPG to measure blood volume changes by detecting slight color variations in human skin in recorded video data. Spatially averaged skin-pixel values are tracked and measured, such as by using a face tracking algorithm in individual video frames. By adaptively combining a multi-color (e.g., red-green-blue (RGB)) time-series and concatenating resulting values, detected energy is maximized in a pulsatile direction to detect and measure vital sign(s) of interest. The vital sign information is then analyzed to detect abnormalities which may indicate the video data has been altered or is fraudulent. 
       FIG. 1  is a graphical representation of exemplary video data  10  comprising a sequence of captured frames  12  including one or more subjects  14 . Embodiments described herein provide a solution for detecting abnormalities in the video data  10  which may indicate the video data  10  is altered from its original form or fraudulent. The abnormalities are detected through an analysis of vital sign information using an IPPG approach, using color beamforming and spectral analysis to extract the vital sign information. IPPG is an electro-optical technique for non-invasively measuring tissue blood volume pulses (BVPs) in the microvascular tissue bed underneath the skin of human subjects  14 . 
     Embodiments described herein focus on a region of interest  16  (represented as a set of sample pixels) on a human face of the subject  14 . The sequence of captured frames  12  can be recorded in a video format (e.g., a sequence of complete images or one or more reference images and difference vectors). The hemoglobin in blood can absorb light, therefore BVPs beneath the skin surface modulate light absorption by the skin during cardiac activity, appearing as slight color variations in the skin. These slight variations due to BVPs may be undetectable by human eyes, but signal processing techniques can be applied to the video data  10  to extract the BVPs and other vital signs (e.g., heart rate, heartbeat waveform, respiration rate) of the one or more subjects  14 . 
       FIG. 2  is a schematic diagram of an exemplary approach to analyzing the video data  10  of  FIG. 1  using color beamforming to extract vital sign information. A spatially averaged red-green-blue (RGB) time-series can be obtained to describe skin color changes over time by averaging skin-pixel values selected from a face tracking algorithm in individual video frames and concatenating the resulting values from each color channel  18 ,  20 ,  22 . For example, a red color channel  18  of the region of interest  16  can be spatially averaged and represented by a red time-series  24 . Similarly, a green color channel  20  can be represented by a green time-series  26 , and a blue color channel  22  can be represented by a blue time-series  28 . Adaptive color beamforming is used to adaptively combine the RGB color time-series (combining the red time-series  24 , the green time-series  26 , and the blue time-series  28 ) and maximize the energy in the pulsatile direction. 
       FIG. 3A  is a graphical representation of a traditional fixed color combining approach to photophlethysmography. Under the traditional approach, only the red and green color channels are combined at a fixed ratio, such as by weighting the red time-series  24  of  FIG. 2  at −0.71 and the green time-series  26  at 0.71 (while ignoring the blue time-series  28 ). This produces a red-green time-series  30 . 
       FIG. 3B  is a graphical representation of results of the approach to analyzing the video data  10  of  FIG. 2 . Embodiments described herein apply adaptive color beamforming to adaptively combine the red time-series  24 , the green time-series  26 , and the blue time-series  28  of  FIG. 2  into an RGB color time-series  32 . The beamforming weights can be appropriately selected based on the spectral energy distribution of the RGB time-series  32  within the frequency range of a human heart rate. This exploits the facts that (1) the pulsatile motion in different color channels has the same frequency in the spectral domain, and (2) motions or changes in the background (e.g., illumination) vary across different spectral components. 
     An exemplary RGB color beamforming algorithm can be implemented as follows. The spatially averaged RGB color time-series are processed blockwide: 
     
       
         
           
             
               
                 
                   
                     [ 
                     
                       
                         R 
                         j 
                         i 
                       
                       ; 
                       
                         G 
                         j 
                         i 
                       
                       ; 
                       
                         B 
                         j 
                         i 
                       
                     
                     ] 
                   
                   = 
                   
                     [ 
                     
                       
                         
                           
                             Σ 
                             
                               ROI 
                               , 
                               k 
                             
                           
                            
                           
                             pixel 
                             k 
                             red 
                           
                         
                         
                            
                           ROI 
                            
                         
                       
                       ; 
                       
                         
                           
                             Σ 
                             
                               ROI 
                               , 
                               k 
                             
                           
                            
                           
                             pixel 
                             k 
                             green 
                           
                         
                         
                            
                           ROI 
                            
                         
                       
                       ; 
                       
                         
                           
                             Σ 
                             
                               ROI 
                               , 
                               k 
                             
                           
                            
                           
                             pixel 
                             k 
                             blue 
                           
                         
                         
                            
                           ROI 
                            
                         
                       
                     
                     ] 
                   
                 
               
               
                 
                   Equation 
                    
                   
                       
                   
                    
                   1 
                 
               
             
           
         
       
     
     where R j   i  denotes the sample value at an i-th processing interval at a j-th index. At every processing time, a total number of N samples is obtained, j=1, . . . , N. |ROI| denotes the number of image pixels in the region of interest. 
     Two covariances are constructed based on the possible human heart rate frequency range. The spectral components within this region are used to construct a spectral covariance matrix that most likely contains the pulsatile information. The spectral components outside this region are treated as background noise and random motion not of interest, and thus can be used to build a noise-related covariance matrix. For a normal resting heart rate, the frequency is from about 50 to 100 beats per minute. The spatially averaged RGB color time-series are filtered at this frequency region: 
       [ R   hr   i   ; G   hr   i   ; B   hr   i ]=filter{| R   i   ; G   i   ; B   i |}  Equation 2
 
     where B i  is a 1 by N vector. The pulse related RGB covariance is given as: 
     
       
         
           
             
               
                 
                   
                     COV 
                     hr 
                     i 
                   
                   = 
                   
                     
                       
                         
                           1 
                           N 
                         
                          
                         
                           [ 
                           
                             
                               R 
                               hr 
                               i 
                             
                             ; 
                             
                               G 
                               hr 
                               i 
                             
                             ; 
                             
                               B 
                               hr 
                               i 
                             
                           
                           ] 
                         
                       
                        
                       
                         [ 
                         
                           
                             R 
                             hr 
                             i 
                           
                           ; 
                           
                             G 
                             hr 
                             i 
                           
                           ; 
                           
                             B 
                             hr 
                             i 
                           
                         
                         ] 
                       
                     
                     T 
                   
                 
               
               
                 
                   Equation 
                    
                   
                       
                   
                    
                   3 
                 
               
             
           
         
       
     
     where T denotes matrix transpose. 
     For convenience, the entire RGB color time-series are used to construct the background covariance matrix since the heartbeat activity is limited in a small fraction of the entire spectrum. Similarly, the noise related covariance matrix is given as: 
     
       
         
           
             
               
                 
                   
                     COV 
                     noi 
                     i 
                   
                   = 
                   
                     
                       
                         
                           1 
                           N 
                         
                          
                         
                           [ 
                           
                             
                               R 
                               i 
                             
                             ; 
                             
                               G 
                               i 
                             
                             ; 
                             
                               B 
                               i 
                             
                           
                           ] 
                         
                       
                        
                       
                         [ 
                         
                           
                             R 
                             i 
                           
                           ; 
                           
                             G 
                             i 
                           
                           ; 
                           
                             B 
                             i 
                           
                         
                         ] 
                       
                     
                     T 
                   
                 
               
               
                 
                   Equation 
                    
                   
                       
                   
                    
                   4 
                 
               
             
           
         
       
     
     In order to emphasize the pulsatile related spectral energy in the covariance matrix, a noise-suppressed pulsatile spectral covariance is obtained by multiplying the matrix inversion of the noise-related covariance matrix to the spectral covariance matrix: 
       COV sup   i ={COV noi   i } −1  COV hr   i   Equation 5
 
     Optimal beamforming weights are directly related to the direction represented by an eigenvector associated with the maximum eigenvalues of the noise-suppressed pulsatile spectral covariance matrix: 
       [ Vec,Val ]= eig {COV sup   i }  Equation 6
 
     where eig denotes the eigenvalue decomposition operation, and Vec and Val represent the eigenvector matrix and the associated eigenvalues. If both are sorted in descending order, the optimal color beamforming weight, a 3 by 1 vector, maximizing the pulse energy while suppressing the background noise is given as: 
         w   hr   opt   =Vec (:,1)  Equation 7
 
     By applying the RGB color beamforming weights to the RGB color time-series, the desired pulsatile variation p i  is obtained: 
         p   i   ={w   hr   opt } T [ R   i   ; G   i   ; B   i ]  Equation 8
 
     This results in the RGB time-series  32 , such as the example illustrated in  FIG. 3B . Thus, the color beamforming approach outperforms the color difference algorithm of  FIG. 3A . 
       FIG. 4  is a schematic diagram of an exemplary IPPG approach described herein using color beamforming and spectral analysis to extract vital signs of a subject. With reference to  FIGS. 2-4 , the IPPG approach can begin with receiving video data (e.g., from a memory) and focusing on the region of interest  16  on the human face of the subject  14  (block  400 ). Changes in the sequence of captured frames  12  are recorded and tracked over time (e.g., using the face tracking algorithm) and spatially averaged to produce the red time-series  24 , the green time-series  26 , and the blue time-series  28  (block  402 ). 
     The RGB beamforming algorithm described above is used to adaptively combine the red time-series  24 , the green time-series  26 , and the blue time-series  28  into the RGB color time-series  32  (block  404 ). The beamforming weights can be appropriately selected based on the spectral energy distribution of the RGB time-series  32  within the frequency range of a human heart rate (block  406 ). In this regard, the spectral components within the region of interest  16  are used to construct the spectral covariance matrix that most likely contains the pulsatile information, where spectral components outside this region are treated as background noise to build a noise-related covariance matrix to further improve the extracted heart rate and/or heartbeat waveform. 
     The same concept described with regard to  FIGS. 2-4  above can be applied for respiration detection. There are two differences here: 1) the region of interest in the recorded images are different and 2) the spectral frequency range of interest is different. In order to obtain maximum respiration sensitivity, the region of interest is selected as a relevant body part, such as a subject&#39;s neck and/or front chest. In order to construct the respiratory related covariance matrix, the spatially averaged RGB color time-series at the respiration region of interest are filtered at a frequency region ranging from 10 to 30 breaths per minute. Then the remaining steps follow the approach described above. 
       FIG. 5  is a schematic block diagram of an exemplary method for detecting abnormalities in video data according to embodiments described herein. The method begins with receiving video data (block  500 ). The method further includes extracting vital sign information of a subject from the video data using a region of interest on skin of the subject (block  502 ). The method further includes analyzing the vital sign information (block  504 ). The method further includes determining whether an abnormality occurs in the analyzed vital sign information (block  506 ). The method may optionally include determining the video data is fraudulent based on the abnormality (block  508 ). 
       FIG. 6  is a graphical representation comparing a first video  34  having multiple subjects  36 ,  38 ,  40 ,  42 ,  44 ,  46 ,  48  with vital signs within normal ranges and a second video  50  of a subject  52  with an abnormal vital sign. As described above, exemplary aspects of this disclosure extract and analyze heart rate and other vital signs (e.g., respiration rate) from video data, such as the first video  34  and the second video  50 , to provide a complete systematic solution for detecting fraudulent video content, especially in a complex video scene. By extracting and analyzing vital sign information, fake human subjects or fraudulent human faces can be identified from a group of subjects inside the video data. Embodiments use information entropy to quantitatively measure the probability of fraudulent content in the video data based on extracted temporal structure of the vital signs, such as heartbeat waveform and respiration pattern. 
     In this regard, a multiple-face detection algorithm is applied to each of the first video  34  and the second video  50  in order to inspect their respective video content. Then the facial region of interest  16  of each potential subject  36 ,  38 ,  40 ,  42 ,  44 ,  46 ,  48 ,  52  is determined. A tracking algorithm can adjust for motion (e.g., head motion) and provide accurate facial regions of interest  16  over time. 
     Next, the fraud detector spatially averages the facial pixels within each region of interest  16  to form RGB time-series (red, green, and blue channels) by concatenating each video frame in the respective first video  34  and second video  50 . In order to form the final temporal series related to heartbeat, the pulse extraction approach using color beamforming described above with respect to  FIGS. 2-4  can be applied. 
     Based on the extracted pulse variation, the heartbeat rhythm is analyzed and checked for the occurrence of abnormal patterns (e.g., constant heart rate or large variations in beat to beat intervals). If these events occur, it can be deemed more likely that the video data under inspection contains artificial edits. 
     For example, analysis of the first video  34  does not indicate abnormal vital sign activity in any of the subjects—a first subject  36  has a heart rate of 91 beats per minute (bpm) (normal adult human heart rates are generally between 50 and 100 bpm), a second subject  38  has a heart rate of 53 bpm, a third subject  40  has a heart rate of 60 bpm, a fourth subject  42  has a heart rate of 58 bpm, a fifth subject  44  has a heart rate of 55 bpm, a sixth subject  46  has a heart rate of 63 bpm, and a seventh subject  48  has a heart rate of 68 bpm. No abnormal patterns are detected in these subjects and therefore the fraud detector may not determine the first video  34  is fraudulent based on this analysis. 
     However, analysis of the second video  50  indicates abnormal vital sign activity in its subject—this subject  52  has a heart rate of 300 bpm, well outside the normal human range for heart rate. In some embodiments, the second video  50  may be determined to be fraudulent based on this analysis. Further examples may additionally or alternatively analyze respiratory activity or other vital signs in a similar manner. 
     In some embodiments, this vital sign analysis may be sufficient, standing alone, to determine a video is fraudulent. In other embodiments, the vital sign analysis may be only a part of the fraud detector&#39;s analysis. For example, background color changes (e.g., rapid color changes or overly static colors), dynamic edge detection (e.g., to find inconsistent or unexpected edge motion), and other video artifacts may be used in an entropy analysis to determine a likelihood a video is fraudulent. 
       FIG. 7  is a block diagram of a fraud detector  54  suitable for detecting fraudulent video data according to embodiments disclosed herein. The fraud detector  54  includes or is implemented as a computer system  700 , which comprises any computing or electronic device capable of including firmware, hardware, and/or executing software instructions that could be used to perform any of the methods or functions described above. In this regard, the computer system  700  may be a circuit or circuits included in an electronic board card, such as a printed circuit board (PCB), a server, a personal computer, a desktop computer, a laptop computer, an array of computers, a personal digital assistant (PDA), a computing pad, a mobile device, or any other device, and may represent, for example, a server or a user&#39;s computer. 
     The exemplary computer system  700  in this embodiment includes a processing device  702  or processor, a system memory  704 , and a system bus  706 . The system memory  704  may include non-volatile memory  708  and volatile memory  710 . The non-volatile memory  708  may include read-only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and the like. The volatile memory  710  generally includes random-access memory (RAM) (e.g., dynamic random-access memory (DRAM), such as synchronous DRAM (SDRAM)). A basic input/output system (BIOS)  712  may be stored in the non-volatile memory  708  and can include the basic routines that help to transfer information between elements within the computer system  700 . 
     The system bus  706  provides an interface for system components including, but not limited to, the system memory  704  and the processing device  702 . The system bus  706  may be any of several types of bus structures that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and/or a local bus using any of a variety of commercially available bus architectures. 
     The processing device  702  represents one or more commercially available or proprietary general-purpose processing devices, such as a microprocessor, central processing unit (CPU), or the like. More particularly, the processing device  702  may be a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, a processor implementing other instruction sets, or other processors implementing a combination of instruction sets. The processing device  702  is configured to execute processing logic instructions for performing the operations and steps discussed herein. 
     In this regard, the various illustrative logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed with the processing device  702 , which may be a microprocessor, field programmable gate array (FPGA), a digital signal processor (DSP), an application-specific integrated circuit (ASIC), or other programmable logic device, a discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. Furthermore, the processing device  702  may be a microprocessor, or may be any conventional processor, controller, microcontroller, or state machine. The processing device  702  may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration). 
     The computer system  700  may further include or be coupled to a non-transitory computer-readable storage medium, such as a storage device  714 , which may represent an internal or external hard disk drive (HDD), flash memory, or the like. The storage device  714  and other drives associated with computer-readable media and computer-usable media may provide non-volatile storage of data, data structures, computer-executable instructions, and the like. Although the description of computer-readable media above refers to an HDD, it should be appreciated that other types of media that are readable by a computer, such as optical disks, magnetic cassettes, flash memory cards, cartridges, and the like, may also be used in the operating environment, and, further, that any such media may contain computer-executable instructions for performing novel methods of the disclosed embodiments. 
     An operating system  716  and any number of program modules  718  or other applications can be stored in the volatile memory  710 , wherein the program modules  718  represent a wide array of computer-executable instructions corresponding to programs, applications, functions, and the like that may implement the functionality described herein in whole or in part, such as through instructions  720  on the processing device  702 . The program modules  718  may also reside on the storage mechanism provided by the storage device  714 . As such, all or a portion of the functionality described herein may be implemented as a computer program product stored on a transitory or non-transitory computer-usable or computer-readable storage medium, such as the storage device  714 , non-volatile memory  708 , volatile memory  710 , instructions  720 , and the like. The computer program product includes complex programming instructions, such as complex computer-readable program code, to cause the processing device  702  to carry out the steps necessary to implement the functions described herein. 
     An operator, such as the user, may also be able to enter one or more configuration commands to the computer system  700  through a keyboard, a pointing device such as a mouse, or a touch-sensitive surface, such as the display device, via an input device interface  722  or remotely through a web interface, terminal program, or the like via a communication interface  724 . The communication interface  724  may be wired or wireless and facilitate communications with any number of devices via a communications network in a direct or indirect fashion. An output device, such as a display device, can be coupled to the system bus  706  and driven by a video port  726 . Additional inputs and outputs to the computer system  700  may be provided through the system bus  706  as appropriate to implement embodiments described herein. 
     The operational steps described in any of the exemplary embodiments herein are described to provide examples and discussion. The operations described may be performed in numerous different sequences other than the illustrated sequences. Furthermore, operations described in a single operational step may actually be performed in a number of different steps. Additionally, one or more operational steps discussed in the exemplary embodiments may be combined. 
     Those skilled in the art will recognize improvements and modifications to the preferred embodiments of the present disclosure. All such improvements and modifications are considered within the scope of the concepts disclosed herein and the claims that follow.