Patent Publication Number: US-9414067-B2

Title: Methods and systems for detection of block based video dropouts

Description:
TECHNICAL FIELD 
     The present disclosure is generally related to detection of errors in digital video and, more particularly, is related to a methods and systems for detection of block based video dropouts. 
     BACKGROUND 
     Uncompressed Video in digital format requires large amount of storage space and data transfer bandwidth. Since a large requirement for storage space and data transfer bandwidth translates into an increase in video transmission and distribution costs, compression techniques have been developed to compress the video in a manner to minimize its size while maximizing its quality. Numerous intra- and inter-frame compression algorithms have been developed that compress multiple frames, that include frequency domain transformation of blocks within frames, motion vector prediction which reduces the temporal redundancy between the frames, entropy coding etc. 
     Interframe compression entails synthesizing subsequent images from a reference frame by the use of motion compensation. Motion compensation entails application of motion vector estimation algorithms, for example, block matching algorithm to identify temporal redundancy and differences in successive frames of a digital video sequence and storing the differences between successive frames along with an entire image of a reference frame, typically in a moderately compressed format. The differences between successive frames are obtained by comparing the successive frames with the reference frame which are then stored. Periodically, such as when a new video sequence is displayed, a new reference frame is extracted from the sequence, and subsequent comparisons are performed with this new reference frame. The interframe compression ratio may be kept constant while varying the video quality. Alternatively, interframe compression ratios may be content-dependent, i.e., if the video clip being compressed includes many abrupt scene transitions from one image to another, the compression is less efficient. Examples of video compression which use an interframe compression technique are Moving Picture Experts Group (MPEG), Data Converter Interface (DVI) and Indeo, among others. 
     Several of these interframe compression techniques, viz., MPEG, use block based video encoding that in turn utilizes Discrete Cosine Transform (DCT) based encoding. The DCT coefficients generated are scanned in zig-zag order and are entropy encoded using various schemes. In addition to encoding of spatial information of the successive frames, the temporal information of the successive frames in terms of motion vectors is also encoded using entropy based schemes. There are cases where the encoded stream is captured from a storage media device or through a transmission medium. Due to errors in capturing (such as reading from digital or analog tapes) or transmission medium (over wireless or lossy networks), bit-errors may be introduced that may lead to errors in decoding of captured or received encoded stream. This in turn leads to erroneous decoding of the DCT coefficients or the motion vectors. The error in a DC coefficient of a DCT block leads to formation of plain blocks (in constant background) which appear quite different from adjoining areas. However, if DCT AC coefficients are decoded incorrectly, the high frequency noise within blocks would appear. Further, with regards to temporal information, an incorrect decoding in motion vectors leads to incorrect motion compensation and hence misplaced blocks in the successive frames. Since, there is a drop of information, the above mentioned errors are termed as video dropouts. Several algorithms have been designed to detect the occurrence of the dropout error blocks but either they are inaccurate or they are extremely computation intensive. 
     In light of the above, there is a need for an invention that may enable detection of the video dropout that is accurate and is not computation intensive. 
     SUMMARY 
     Example embodiments of the present disclosure provide systems for detecting block based video dropouts. Briefly described, in architecture, one example embodiment of the system, among others, can be implemented as follows: an activity block identification module, a horizontal and vertical lines detection module, a candidate error block detection module, a memory module, a comparison module, and a start and end validation module. 
     Embodiments of the present disclosure can also be viewed as providing methods for detecting block based video dropouts. In this regard, one example embodiment of such a method, among others, can be broadly summarized by the following steps: identifying one or more activity blocks of the plurality of blocks that have the count of pixels greater than a second predetermined threshold; storing one or more location parameters of the one or more candidate error blocks corresponding to the current field in the form of a current candidate error block list; comparing the one or more location parameters of each candidate error block in the current candidate block list with one or more location parameters of each candidate error block detected in one or more fields processed previously stored in the form of the tracked candidate error block list; validating a start of appearance of a first candidate error block that is present in the current candidate error block list and absent in the tracked candidate error block list; and validating an end of appearance of a second candidate error block that is present in the tracked candidate error block list and absent in the current candidate error block list. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram of reference and current fields, in accordance with an example embodiment of the present disclosure; 
         FIGS. 2A and 2B  are a flow chart of a method for detecting one or more dropout error blocks, in accordance with an example embodiment of the present disclosure; 
         FIG. 3  is a block diagram of reference and current template blocks, in accordance with an example embodiment of the present disclosure; 
         FIGS. 4A, 4B, and 4C  are a flowchart of a method for validating end of appearance of an error candidate block, in accordance with an example embodiment of the present disclosure; 
         FIG. 5  is a flowchart of a method for performing illumination compensation, in accordance with an example embodiment of the present disclosure; and 
         FIG. 6  is a block diagram of a system for detecting dropout error blocks, in accordance with an example embodiment of the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     Embodiments of the present disclosure will be described more fully hereinafter with reference to the accompanying drawings in which like numerals represent like elements throughout the several figures, and in which example embodiments are shown. Embodiments of the claims may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. The examples set forth herein are non-limiting examples and are merely examples among other possible examples. 
     The present disclosure relates to detecting block based video dropouts in one or more fields associated with various video frames. The present disclosure discloses methods for processing one or more fields to detect occurrence of block based video dropouts. Identifying activity blocks in a field that is being currently processed and then processing the identified activity blocks further leads to saving of computation resources. In an example embodiment of the present disclosure, the detection of blocky dropouts can be performed during video transmission, video display, video transcoding, video post-processing, video quality testing and the like. In light of this, the example embodiments of the present disclosure, enable detection of block based video dropouts or dropout error blocks in a quick, accurate, and efficient manner. 
     Referring now to  FIG. 1 , a reference field  102  and a current field  104 , in accordance with an example embodiment of the present disclosure is shown. Reference field  102  includes first and second blocks  106  and  108 . Current field  104  includes third and fourth blocks  110  and  112 . Third block  110  includes a first candidate error block  114 , first and second vertical  116  and  118  and first and second horizontal lines  120  and  122 . Fourth block  112  includes a second candidate error block  124 . 
     Reference and current fields  102  and  104  are associated with a video frame that is a part of a video sequence encoded using one of the interframe compression codecs, for example, MPEG, DVI, and Indeo. Current field  104  is a field that is being processed in a current processing cycle of a system for detecting dropout error blocks and reference field  102  is a field that has a polarity identical to that of the current field  104  and was processed in a previous processing cycle of the system for detecting dropout error blocks. Reference and current fields  102  and  104  are divided into a plurality of blocks, for example, reference field  102  includes first and second blocks  106  and  108  and current field  104  includes third and fourth blocks  110  and  112 . Each of first through fourth blocks  106 - 112  includes identical count of pixels, for example, length and width of each of the first through fourth blocks  106 - 112  may be 16 pixels. The system for detecting dropout error blocks executes various steps to identify occurrence of dropout error blocks in one or more fields, for example reference and current fields  102  and  104 . Dropout error blocks are detected by forming one or more candidate error blocks, for example first and second candidate error blocks  114  and  124 . Each of first and second candidate error blocks  114  and  124  are formed using vertical and horizontal lines, for example first candidate error block  114  is formed using first and second vertical lines  116  and  118  and first and second horizontal lines  120  and  122 . The occurrence of the first and second candidate error blocks  114  and  124  is validated for either an end or start of occurrence of a dropout error block. The various steps entailing the detection of the dropout error block are described in detail in conjunction with  FIGS. 2, 3, 4, 5A, 5B , and  5 C. 
     Referring now to  FIGS. 2A and 2B , a flowchart of a method for detecting one or more dropout error blocks, in accordance with an example embodiment of the present disclosure is shown.  FIGS. 2A and 2B  will be explained in conjunction with  FIG. 1 . 
     In block  202 , current field  104  is divided in a plurality of blocks, for example, third and fourth blocks  110  and  112 . Each of the plurality of blocks includes a predetermined count of pixels. For example, of length and width of the third and fourth blocks  110  and  112  is 16 pixels then each of third and fourth blocks  110  and  112  will include 256 pixels each. In block  204 , a first plurality of absolute parameter differences between one or more pixel parameters of corresponding pixels associated with current field  104  and reference field  102  is calculated. In an example embodiment of the present disclosure, the one or more pixel parameters include brightness code, colour code, contrast code, and the like. In block  206 , a count of pixels associated with each of third and fourth blocks  110  and  112  that have an absolute parameter difference greater than a first predetermined threshold (TH) is calculated. In block  208 , one or more activity blocks of the plurality of blocks that have the count of pixels greater than a second predetermined threshold (TH 1 ) are identified. For example, third block  110  has the count of pixels greater than the second predetermined threshold and therefore is identified as an activity block. In block  210 , the one or more of activity blocks, viz., third block  110 , are updated by applying motion compensation on one or more candidate error blocks present in a tracked candidate error block list. Further, a new activity block may be added to current set of activity blocks. In an example embodiment of the present disclosure, the one or more candidate error blocks identified in previously processed fields are stored in a tracked candidate error block list. In block  212 , morphological dilation is applied on the activity block, i.e., third block  110  to expand one or more shapes displayed in the video frame associated with current field  104  in a manner known to those of skill in the art. Since, morphological dilation is a known in the art procedure a detailed explanation has been excluded from the present description for the sake of brevity. 
     In block  214 , one or more candidate error blocks, for example, candidate error block  114 , in the activity block, i.e., third block  110 , are detected by detecting one or more candidate vertical lines, for example, first and second candidate vertical lines  116  and  118  in the activity block. The first and second candidate vertical lines  116  and  118  are detected by comparing horizontal gradient values of the plurality of pixels associated with the activity block with a third predetermined threshold (TH 2 ). In an example embodiment of the present disclosure, the first and second candidate vertical lines  116  and  118  are identified by traversing the activity block in a horizontal direction. Dilated horizontal gradient values are obtained by applying morphological dilation operation on the horizontal gradient values and subsequently, the first and second candidate vertical lines  116  and  118  are identified based on the horizontal gradient and dilated horizontal gradient values. In an example embodiment of the present disclosure, the first and second candidate vertical lines  116  and  118  are formed using one or more line pixels. The one or more line pixels are the pixels that have a high horizontal gradient value and a low dilated horizontal gradient value. The candidate vertical lines  116  and  118  are identified by selecting a first set of candidate vertical lines formed using the one or more lines pixels that have a length greater than a fourth predetermined threshold (TH 3 ). The first set of candidate vertical lines is checked for clustering. If a pair of candidate vertical lines in the first set of candidate vertical lines is at a distance less than a fifth predetermined threshold (TH 4 ) in horizontal direction and have a common region length greater than a sixth predetermined threshold (TH 5 ), then the pair of candidate verticals are discarded from the first set of candidate vertical lines. 
     Further, one or more candidate horizontal lines, for example, first and second candidate horizontal lines  120  and  122  in the activity block. The first and second candidate horizontal lines  120  and  122  are detected by comparing vertical gradient values of the plurality of pixels associated with the activity block with the third predetermined threshold. In an example embodiment of the present disclosure, the first and second candidate horizontal lines  120  and  122  are identified by traversing the activity block in a vertical direction. Dilated vertical gradient values are obtained by applying morphological dilation operation on the vertical gradient values and subsequently, the first and second candidate horizontal lines  120  and  122  are identified based on the vertical gradient and dilated vertical gradient values. In an example embodiment of the present disclosure, the first and second candidate horizontal lines  120  and  122  are formed using one or more line pixels. 
     The one or more line pixels are the pixels that have a high vertical gradient value and a low dilated vertical gradient value. The candidate horizontal lines  120  and  122  are identified by selecting a first set of candidate horizontal lines formed using the one or more lines pixels that have a length greater than the fourth predetermined threshold TH 3 . The first set of candidate horizontal lines is checked for clustering. If a pair of candidate horizontal lines in the first set of candidate horizontal lines is at a distance less than the fifth predetermined threshold TH 4  in horizontal direction and have a common region length greater than the sixth predetermined threshold TH 5 , then the pair of candidate horizontal lines are discarded from the first set of candidate horizontal lines. Subsequent to the identification of first and second candidate vertical and horizontal lines  116 - 120 , candidate error block  114  is formed. 
     In block  216 , location parameters corresponding to candidate error block  114  is stored in the form of a current candidate error block list. In an example embodiment of the present disclosure, the current candidate error block list is stored in a memory. In block  218 , location parameters of each candidate error block in the current candidate block list are compared with location parameters of each candidate error block detected in the fields previously processed and stored in the form of the tracked candidate error block list. In block  220 , an end of appearance of candidate error block  114  is validated, if candidate error block  114  (that is present in the tracked candidate error block list) is absent in the current candidate error block list. Validation of the end of appearance of candidate error block  114  is explained in detail in conjunction with  FIGS. 4A, 4B, and 4C . 
     At step  222 , a start of appearance of candidate error block  114  is validated, if candidate error block  114  (that is present in the current candidate error block list) is absent in the tracked candidate error block list. The method continues thereafter until an end of a video stream is reached. Validation of the start of appearance of candidate error block  114  is similar to the method of validating end of appearance of candidate error block  114  as explained in detail in conjunction with  FIGS. 4A, 4B, and 4C . In an example embodiment of the present invention, candidate error block  114  may be present in both the current and tracked candidate error block lists. This situation implies neither the start nor the end of appearance of candidate error block  114  rather it implies that candidate error block  114  has continued to appear in the reference and current fields  102  and  104 , respectively. 
     Referring now to  FIG. 3 , a block diagram of previous and current fields  302  and  304 , in accordance with an example embodiment of the present disclosure is shown. Previous field  302  includes a candidate template block  306 . Candidate template block  306  includes candidate error block  308 . Current field  304  includes a reference template block  310 . Reference template block  310  includes motion compensated error block  312 . 
     Candidate error block  308  is identified in a manner similar to that described in conjunction with  FIGS. 1 and 2 . Candidate template block  306  further includes in addition to a first plurality of pixels associated with candidate error block  308 , a second plurality of pixels within a predetermined distance from a third plurality of pixels associated with a boundary of the candidate error block  308 . For example, if the predetermined distance is 5 pixels then candidate template block  306  will includes all the pixels are located within a distance of 5 pixels from edges of candidate error block  308  and outside of candidate error block  308 . Reference template block  310  includes fourth and fifth pluralities of pixels associated with previous field  302  that was processed immediately before current field  304 . The fourth plurality of pixels correspond in location to motion compensated locations of the first plurality of pixels located inside candidate error block  308  and the fifth plurality of pixels correspond in location to motion compensated locations of the second plurality of pixels. Motion compensation operation will be known to those of skill in the art and therefore has not been described in detail. 
     Referring now to  FIGS. 4A, 4B, and 4C , a method for validating end of appearance of candidate error block, in accordance with an example embodiment of the present disclosure is shown.  FIGS. 4A, 4B, and 4C  will be explained in conjunction with  FIGS. 1 and 3 . 
     In block  402 , candidate template block  306  is identified. Candidate template block  306  includes the first plurality of pixels associated with the candidate error block  308  and the second plurality of pixels within the predetermined distance from the third plurality of pixels associated with the boundary of candidate error block  308 . In block  404 , reference template block  310  including the fourth and fifth pluralities of pixels corresponding in location to motion compensated locations of the first and second pluralities of pixels, respectively is identified. In block  406 , low-pass filtering is applied on reference and candidate template blocks  310  and  306  for removing noise therefrom. In an example embodiment of the present disclosure, low-pass filtering is applied by performing Gaussian blurring on pixels in the candidate and reference blocks  306  and  310  to remove noise. Since Gaussian blurring is a known in the art operation, a detailed explanation has been excluded for the sake of brevity. In block  408 , illumination compensation is applied on the second and fifth pluralities of pixels associated with candidate and reference template blocks  306  and  310 , respectively. The illumination compensation operation has been explained in detail in conjunction with  FIG. 5 . In block  410 , a structural similarity (SSIM) index is calculated corresponding to candidate and reference template blocks  306  and  310 . In block  412 , a second plurality of absolute parameter differences between one or more pixel parameters of corresponding pixels of the first and fourth pluralities of pixels is calculated. In block  414 , a third plurality of absolute parameter differences between one or more pixel parameters of corresponding pixels of the second and fifth pluralities of pixels is calculated. In block  416 , a first block pixel percentage (PCDiffBlk) corresponding to the first and fourth pluralities of pixels that have corresponding absolute parameter differences greater than a seventh predetermined threshold (TH 6 ) is calculated. 
     In block  418 , a first vicinity pixel percentage (PCDiffSur) corresponding to the second and fifth pluralities of pixels that have corresponding absolute parameter differences greater than the seventh predetermined threshold TH 6  is calculated. In block  420 , a first block average of absolute differences (MADBlk) corresponding to the first and fourth pluralities of pixels is calculated. In block  422 , a first vicinity average of absolute differences (MADSur) corresponding to the second and fifth pluralities of pixels is calculated. In block  424 , end of appearance of the candidate error block  308  is marked as a valid end of dropout error block based on the first block and vicinity pixel percentages PCDiffBlk and PCDiffSur, the first block and vicinity averages of absolute differences MADBlk and MADSur, and SSIM index. In an example embodiment of the present disclosure following condition (1) is evaluated and if the condition (1) is evaluated to be true, end of appearance of the candidate error block  308  is marked as valid.
 
(SSIM&lt;=TH7) and (PCDiffSur&lt;=PCDiffBlk*TH8) and (PCDiffBlk&gt;=TH9) and (MADBlk&gt;=TH10) and (MADSur&lt;=TH11))  (1)
 
Where:
 
     TH 7 =eighth predetermined threshold; 
     TH 8 =ninth predetermined threshold; 
     TH 9 =tenth predetermined threshold; 
     TH 10 =eleventh predetermined threshold; and 
     TH 11 =twelfth predetermined threshold. 
     In an example embodiment of the present disclosure, the validation of the start of appearance of candidate error block  308  includes identifying candidate template block  306  from current field  302  instead from previous field  304  and identifying reference template block  308  from previous field  304  instead from current field  302 . The remaining steps of validation remain identical to those of validation of the end of appearance of candidate error block  308 . 
     Referring now to  FIG. 5 , a method for performing illumination compensation in accordance with an example embodiment of the present disclosure is shown.  FIG. 5  will be explained in conjunction with  FIG. 3 . 
     In block  502 , a plurality of parameter differences between one or more pixel parameters of pixels associated with the second and fifth pluralities of pixels is calculated. In block  504 , a first parameter difference (N) of the plurality of parameter differences corresponding to which a count of pixels (M) of the second and fifth pluralities of pixels is maximum is determined. 
     In block  506 , a count of pixels (Y) that have parameter differences that are at least one of a less than a sum of a first predetermined value (P) and the first parameter difference N and greater than a difference of the first predetermined value P and the first parameter difference N. The above condition can be mathematically expressed as (2):
 
 N−P &lt;Count of Pixels  Y&lt;N+P   (2)
 
     In block  508 , an adding value (ADD_VAL) that is added to the one or more pixel parameters of the second and fifth pluralities of pixels to perform illumination compensation. The ADD_VAL is based on condition (3):
 
(ABS( N )&gt;TH12) and ( Y/X &gt;TH13)  (3)
 
Where:
 
     X=Sum of counts of pixels in the second and fifth pluralities of pixels; 
     TH 12 =thirteenth predetermined threshold; 
     TH 13 =fourteenth predetermined threshold; and 
     ABS( )=Absolute value function 
     If condition (3) is true then ADD_VAL=ABS(N). 
     Referring now to  FIG. 6 , a block diagram of a system  600  for detecting dropout error blocks, in accordance with an example embodiment of the present disclosure is shown. In an example embodiment of the present disclosure, system  600  is a computing device such as computer, laptop, tablet, Embedded Processing System, Digital Signal Processing System and the like. System  600  includes an activity block identification module  602 , a horizontal and vertical lines detection module  604 , a candidate error block detection module  606 , a memory module  608 , a comparison module  610 , and a start and end validation module  612 .  FIG. 6  will be explained in conjunction with  FIGS. 1, and 3 . 
     Activity block identification module  602  divides current field  104  into the plurality of blocks, for example, third and fourth blocks  110  and  112 . The activity block identification module  602  then identifies one or more activity blocks based on the first plurality of absolute parameter differences between one or more pixel parameters of corresponding pixels associated with current field  104  and reference field  102 . In an example embodiment of the present disclosure, the one or more pixel parameters include brightness code, colour code, contrast code, and the like. Activity block identification module  602  also identifies the one or more activity blocks based on the count of pixels associated with each of the plurality of blocks of current field  104  that have an absolute parameter difference greater than the first predetermined threshold TH, and the count of pixels greater than the second predetermined threshold TH 1 . Activity block identification module  602  then updates the one or more activity blocks of the plurality of blocks by applying motion compensation on one or more candidate error blocks stored in the tracked candidate error block list. In an example embodiment of the present disclosure, activity block identification module  602  stores the tracked candidate error block list in memory module  608 . Additionally, activity block identification module  602  applies morphological dilation on the one or more activity blocks. 
     Horizontal and vertical lines detection module  604  detects first and second candidate horizontal lines  120  and  122  and first and second candidate vertical lines  116  and  118 . Detection of first and second candidate vertical and horizontal lines  116 - 122  has been explained in detail in conjunction with  FIGS. 2A and 2B . Candidate error block detection module  606  detects candidate error block  114  in the activity block, for example third block  110 . Detection of candidate error block  114  has been explained in detail in conjunction with  FIGS. 2A and 2B . Memory module  608  stores location parameters of the candidate error block corresponding to current field  104  in the form of the current candidate block list and location parameters of candidate error blocks identified corresponding to previously processed fields as the tracked candidate error block list. 
     Comparison module  610  compares the location parameters of each candidate error block, for example candidate error block  114 , in the current candidate block list with location parameters of each candidate error block stored in the form of the tracked candidate error block list. Start and end validation module  612  validates start and end of appearance of candidate error block  114 . Validation of start and end of appearance of candidate error block  114  has been described in detail in conjunction with  FIGS. 4A, 4B, and 4C . In an example embodiment of the present disclosure, start and end validation module  612  determines a count of dropout error blocks in each of the plurality of fields and identifies one or more erroneous fields that have the count of candidate error blocks greater than the fifth predetermined threshold TH 4 . 
     The flow charts of  FIGS. 2A, 2B, 4A, 4B, 4C , and  FIG. 5  show the architecture, functionality, and operation of a possible implementation of detection of block based video dropout&#39;s software. In this regard, each block may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that in some alternative implementations, the functions noted in the blocks may occur out of the order noted in  FIGS. 2A, 2B, 4A, 4B, 4C , and  FIG. 5 . For example, two blocks shown in succession in  FIGS. 2A, 2B, 4A, 4B, 4C , and  FIG. 5  may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. Any process descriptions or blocks in flow charts should be understood as representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or steps in the process, and alternate implementations are included within the scope of the example embodiments in which functions may be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved. In addition, the process descriptions or blocks in flow charts should be understood as representing decisions made by a hardware structure such as a state machine. 
     The logic of the example embodiment(s) can be implemented in hardware, software, firmware, or a combination thereof. In example embodiments, the logic is implemented in software or firmware that is stored in a memory and that is executed by a suitable instruction execution system. If implemented in hardware, as in an alternative embodiment, the logic can be implemented with any or a combination of the following technologies, which are all well known in the art: a discrete logic circuit(s) having logic gates for implementing logic functions upon data signals, an application specific integrated circuit (ASIC) having appropriate combinational logic gates, a programmable gate array(s) (PGA), a field programmable gate array (FPGA), etc. In addition, the scope of the present disclosure includes embodying the functionality of the example embodiments disclosed herein in logic embodied in hardware or software-configured mediums. 
     Software embodiments, which comprise an ordered listing of executable instructions for implementing logical functions, can be embodied in any computer-readable medium for use by or in connection with an instruction execution system, apparatus, or device, such as a computer-based system, processor-containing system, or other system that can fetch the instructions from the instruction execution system, apparatus, or device and execute the instructions. In the context of this document, a “computer-readable medium” can be any means that can contain, store, or communicate the program for use by or in connection with the instruction execution system, apparatus, or device. The computer readable medium can be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device. More specific examples (a non-exhaustive list) of the computer-readable medium would include the following: a portable computer diskette (magnetic), a random access memory (RAM) (electronic), a read-only memory (ROM) (electronic), an erasable programmable read-only memory (EPROM or Flash memory) (electronic), and a portable compact disc read-only memory (CDROM) (optical). In addition, the scope of the present disclosure includes embodying the functionality of the example embodiments of the present disclosure in logic embodied in hardware or software-configured mediums. 
     Although the present disclosure has been described in detail, it should be understood that various changes, substitutions and alterations may be made thereto without departing from the spirit and scope of the invention as defined by the appended claims.