Abstract:
System and method for providing a probabilistic order of tiles relative to a current section of a video that a user is viewing. A cache implementation uses this ordering to decide what tiles to evict from the cache, i.e. which tiles will probably not be accessed within a particular timeframe, but not when to evict (this is up to the cache implementation). A cache implementation can also use the prioritized list of the present embodiment to pre-fetch tiles.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims the benefit of priority based on U.S. Provisional Patent Application No. 61/777,019, entitled STOCHASTIC CACHING ALGORITHM FOR INTERACTIVE SPATIO-TEMPORAL STREAMING DATA, filed on Mar. 12, 2013, the entirety of which is hereby incorporated by reference into the present application. 
     
    
     BACKGROUND 
       [0002]    Methods and systems disclosed herein relate generally to caching data. More specifically, the methods and systems disclosed herein related to a method by which spatially and temporally interactive streaming visual data of high density, such as, for example, but not limited to, video data, may be effectively cached in order to mitigate strain on network and I/O bandwidth. 
         [0003]    Current methods for exploitation of spatially and temporally interactive streaming visual data typically involve three main components: The originating data set, which houses the partial or complete collection of the data to be accessed; the client application, which allows a user to view and navigate the available data via interactive query; and the retrieval algorithm, which processes the user&#39;s query in order to retrieve data from the originating data set. An interactive query is one which is constructed through a user&#39;s interaction with the client&#39;s spatial and temporal interface via actions such as continuous playing, seeking in time, panning, and zooming through some defined range of space and time. Each query will then specifically be composed of some bounded spatial range at a single point in time. 
         [0004]    As data density increases, so does the bandwidth required to fulfill each query. Moreover, as the frequency of requests to the originating data increases, so does the aggregate latency by which the user receives the data. In the common case of the originating data set being housed remotely from the client, and in situations where multiple clients are viewing the same data, these bandwidth and latency requirements can quickly exacerbate network traffic and lag, which makes the interactive streaming data unreasonably difficult to view. 
         [0005]    Client applications typically implement naïve caches that will keep recently retrieved data in memory or on disk to exploit temporal locality (the phenomenon that if a datum has been referenced, it is likely that it will again be referenced in the near future). In instances where the same query is made multiple times within a short time, the retrieval algorithm will bypass the originating data set for the local cache in order to fulfill the query. These caches may implement a Least Recently Used (LRU) policy in order to evict data when the cache gets filled. Slightly more effective caches may exploit spatial locality (the phenomenon that if a datum has been referenced recently, it is likely that nearby data may be referenced) to some degree for eviction policies. 
         [0006]    Most retrieval algorithms will retrieve corresponding data to satisfy the user&#39;s query each time one is made, only occasionally having the opportunity of bypassing the originating data set with references to the simple cache described above. A more effective retrieval algorithm may prefetch data into the client&#39;s cache, guessing at future queries in order to minimize the aggregate latency. In the current state of the art, prefetching may be done using a Region-of-Interest (ROI) detector. However, implementations of these detectors are either crowd sourced, requiring many users to examine a relatively small range of the data, or employ a significant amount of preprocessing overhead to detect ROIs within the interactive streaming data&#39;s context. Though these detectors work well in certain situations, they are not considered as a general purpose solution due to their dependence on a smaller search space and customized detection algorithms. 
         [0007]    What is needed is a method for effectively caching large amounts of data to mitigate the strain on network and I/O bandwidth. 
       SUMMARY 
       [0008]    The system and method of the present embodiment provide a probabilistic order of tiles relative to a current section of a video that a user is viewing. A cache implementation uses this ordering to decide what tiles to evict from the cache, i.e. which tiles will probably not be accessed within a particular timeframe, but not when to evict (this is up to the cache implementation). A cache implementation can also use the prioritized list of the present embodiment to pre-fetch tiles. 
         [0009]    The most common form of interactive streaming data is high-spatial-resolution video. For simplified terminology, the remainder of this disclosure will assume that the originating dataset is this type of video, and terms relating to video will be used. There are many modes of operation applicable to the present embodiment. The present embodiment provides a probabilistic ordering of tiles relative to the current viewport. A cache implementation can use this ordering to decide what tiles to evict, and the cache implementation decides when to evict the tiles. 
         [0010]    The present embodiment relies on a conventional video model that is consistent with many current implementations. S. Heymann et al., Representation, coding, and interactive rendering of high-resolution panoramic images and video using mpeg-4,  The  2 nd Panoramic Photogrammetry Workshop,  2005. In the present embodiment, a tile is defined as a fixed-size image of a manageable resolution for the display; for example, but not limited to, 512×512 pixels. The tile is the lowest level of granularity for image retrieval, meaning that the retrieval method can request these fixed tiles even though much of the tile may not be of the user&#39;s interest. Normally, the client application trims out unrequested parts of the tile prior to display. Because the resolution of a high-spatial-resolution video is typically much higher than that of conventional displays, each frame of the video is processed into an L-level Gaussian pyramid where level lε[1,L] is composed by a mesh of 2 l−1  rows and 2 l−1  columns of tiles that constitute a full frame. This pyramid also helps manage bandwidth by eliminating retrieval of details that will not be viewable by the user due to the resolution of the display and the zoom level. 
         [0011]    The method of the present embodiment can prioritize tiles for prefetching, or buffering, spatial and temporal data based on a stochastic human-behavioral model, adaptively without crowd-sourcing trajectories or exploiting video context to detect regions of interest. The advantages of prefetching the data according to the present embodiment that immense data sets such as high-spatial-resolution video can be managed efficiently and accurately with little or no overhead. The method can scale to large cache sizes and high network bandwidths. 
         [0012]    These and other aspects and features of the present teachings will become apparent from the following detailed description of the exemplary embodiments, read in conjunction with, and with reference to, the accompanying drawings. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0013]    Referring now to the drawings, in which like numerals represent like elements, aspects of the exemplary embodiments will be described in connection with the drawing set. 
           [0014]      FIG. 1  is a pictorial representation of a defined set of action functions; 
           [0015]      FIG. 2  is a computer listing of exemplary pseudo-code defining sets of actions; 
           [0016]      FIG. 3  is a set of tables recording the results of comparison tests of the system of the present embodiment; 
           [0017]      FIG. 4  is a schematic block diagram of one embodiment of the system of the present teachings; and 
           [0018]      FIG. 5  is a flowchart of the method of the present embodiment. 
       
    
    
     DETAILED DESCRIPTION 
       [0019]    The problems set forth above as well as further and other problems are solved by the present teachings. These solutions and other advantages are achieved by the various embodiments of the teachings described herein below. 
         [0020]    In the present embodiment, a video tile matrix (VTM) is the matrix representation of an entire video containing U frames. For example, the VTM can be a four-dimensional matrix each of whose elements A x,y,z,u ∀x,yε[1, 2 L−1 ]; zε[1, L]; Uε[1, U] map to a single tile in the video. Though every tile will be paired with at least one element of the matrix, multiple elements of the matrix may map to a single tile. This is due to the fact that x and y in level l map to the tile in column 
         [0000]    
       
         
           
             ⌈ 
             
               x 
               / 
               
                 ( 
                 
                   
                     2 
                     
                       L 
                       - 
                       1 
                     
                   
                   
                     2 
                     
                       l 
                       - 
                       1 
                     
                   
                 
                 ) 
               
             
             ⌉ 
           
         
       
     
         [0000]    and row 
         [0000]    
       
         
           
             ⌈ 
             
               y 
               / 
               
                 ( 
                 
                   
                     2 
                     
                       L 
                       - 
                       1 
                     
                   
                   
                     2 
                     
                       l 
                       - 
                       1 
                     
                   
                 
                 ) 
               
             
             ⌉ 
           
         
       
     
         [0000]    respectively. 
         [0021]    The current section of the video that a user is viewing is referred to herein as the viewport. The tiles needed to fill the viewport at any point in can be referenced by a contiguous set in an “x-y slice” of the VTM where the pyramid level z and frame u are constant. The level of the pyramid can be selected to be that of fewest tiles needed to fulfill the user&#39;s requested viewport while producing a non-obfuscated image. The full video resolution pixels which span the current viewport are referred to herein as the viewport pixels. 
         [0022]    Referring now to  FIG. 1 , the method of the present embodiment includes a stochastic process that describes the user&#39;s navigation through a video. A defined set of action functions can be used to describe an action a that takes place at time t: pan  11 , play  13 , seek  15 , and zoom  17 . A ratio of viewport pixels to full-frame pixels is referred to herein as a view ratio. The following is a set of exemplary action functions:
       play( ): Progress the video forwards in time by one frame;   seek(Δ u ): Progress the video Δ u ≠1 frames;   pan(Δ x , Δ y ): Shift the viewport by Δ x  pixels horizontally and Δ y  pixels vertically; and   zoom(Δ z ): Zoom the viewport in by a view-ratio difference of Δ z .       
 
         [0027]    These four functions and the video model can describe a user&#39;s trajectory through the video. A Markov chain can describe the stochastic user-interaction model (Li, V. O. K., et al., Performance model of interactive video-on-demand systems,  IEEE Journal on Selected Areas in Communications , vol. 14, no. 6, pp. 1099, 1109, August, 1996, doi: 10.1109/49.508281), which can impact the way in which the tiles are prioritized by the method of the present embodiment. Probabilities p  19 , s  21 , and z  23  describe the transitions from one action to another. Steady state probabilities are calculated to be the following: 
         [0000]    
       
         
           
             
               P 
                
               
                   
               
               [ 
               play 
               ] 
             
             = 
             
               1 
               
                 1 
                 + 
                 
                   p 
                   
                     1 
                     - 
                     p 
                   
                 
                 + 
                 
                   z 
                   
                     1 
                     - 
                     z 
                   
                 
                 + 
                 
                   s 
                   
                     1 
                     - 
                     s 
                   
                 
               
             
           
         
       
       
         
           
             
               P 
                
               
                   
               
               [ 
               pan 
               ] 
             
             = 
             
               
                 p 
                 
                   1 
                   - 
                   p 
                 
               
               * 
               
                 P 
                  
                 
                     
                 
                 [ 
                 play 
                 ] 
               
             
           
         
       
       
         
           
             
               P 
                
               
                   
               
               [ 
               zoom 
               ] 
             
             = 
             
               
                 z 
                 
                   1 
                   - 
                   z 
                 
               
               * 
               
                 P 
                  
                 
                     
                 
                 [ 
                 play 
                 ] 
               
             
           
         
       
       
         
           
             
               P 
                
               
                   
               
               [ 
               seek 
               ] 
             
             = 
             
               
                 s 
                 
                   1 
                   - 
                   s 
                 
               
               * 
               
                 P 
                  
                 
                     
                 
                 [ 
                 play 
                 ] 
               
             
           
         
       
     
         [0000]    Upon visiting a state in the Markov chain, a viewport is progressed through the VTM according to the corresponding action functions. The method of the present embodiment can generate a prioritized list of tiles in order from highest to lowest calculated probability of retrieval. This list can be used by both a retrieval algorithm to prefetch tiles into the cache and a cache eviction policy to decide which tiles to evict. The method can maintain a state set that can represent possible trial outcomes. The state set can be used to gather information from each state in the list to generate the output prioritized list. Each state in the state list is a data structure that contains a set of tiles that corresponds to some viewport and the set of possible actions for the state. Each listed action can have a corresponding probability. 
         [0028]    Referring now to  FIG. 2 , pseudo code  50  is an example of a state. Italicized variables  27  in the code represent numerical values. Probabilities p_play  29 , p_pan  31 , p_zoom  33 , and p_seek  35  are calculated upon creation of the state using the steady state probabilities of the Markov chain in the user-interaction model and a chosen action function from a previous state. The VTM references are calculated upon creation of the state using the tile set and the chosen action function from a previous state. 
         [0029]    The method of the present embodiment includes a step of initializing by setting the state list to one initial state. This initial state&#39;s tile set is set to the VTM references of all the tiles in the current viewport. The probabilities in the state&#39;s action list are set to those steady-state probabilities calculated from the user interaction model (i.e. p_play=P[play], and so on). Each action set of every state in the state set is traversed to find the highest probability overall each time the method is executed. The state containing the highest probability is referred to herein as the active state. When the highest probability is found, the corresponding action is removed from the active state&#39;s action set and a new state is added to the state list. The new state&#39;s tile set and action set are calculated stochastically depending on the video model, the user-interaction model, and operating modes described later. Operating in the mode Gaussian, non-adaptive, non-temporal, non-spatial, the new state&#39;s tile set and action set are calculated as follows, with parameters and functions defined herein:
       μ p   x , μ p   y , μ z , μ s : The mean of the Gaussian function corresponding to Δ x , Δ y , Δ z , and Δ s  respectively;   σ p   x , σ p   y , σ z , σ s : The standard deviation of the Gaussian function corresponding to   Δ x , Δ y , Δ z , and Δ s  respectively;   q( ): A function that takes as input the current viewport and the pixels panned in the horizontal or vertical direction and returns a VTM offset reference; and   r( ): A function that takes as input the current viewport and the view ratio zoomed and returns a VTM offset reference.
 
The q and r functions are needed because pixels and view ratios do not immediately map to the VTM. The q and r functions can be created deterministically for any given viewport. Upon the corresponding actions on a tile referenced by A x,y,z,u , tiles can be marked as follows:
   play: A x,y,z,u+1      pan: A x+q(μ     p       x     )+i,y+q(μ     p       y     )+j,z,u ∀iε[−q(σ p   x ),q(σ p   x )],∀jε[−q(σ p   y ),q(σ p   y )]   zoom: A x,y,z+r(μ     z     )+i,u ∀iε[−r(σ z ),r(σ z )]   seek: A x,y,z,u+μ     s     +i ∀iε[−σ s ,σ s ]
 
The method of the present embodiment can iterate through every tile in the active state&#39;s tile list, and can mark tiles as above. The marked tiles can be the tile set for a newly created state. Upon completion, the method of the present embodiment can either terminate because the aggregate number of tiles, excluding duplicates, in the states&#39; tile sets are sufficient, or the method can repeat execution, calculating the highest probability action across all states in the state list and repeating the subsequent steps in order to further mark tiles. With respect to the pan and zoom actions, the values for μ and σ may not be large enough to have an impact in the tile marking process. In such cases where spatial thresholds are not met, the method may retain the aggregate in a variable to count for the next pan or zoom action. Once the threshold is met, the variable may be reset.
       
 
         [0039]    To refine the method to attain more accurate results, actions can be filtered to bypass those difficult to predict. For example, if the human-interaction model&#39;s value for σ s  is set unreasonably high, the method may choose to replace all seek operations with play operations during tile marking. 
         [0040]    Four stochastic-mode parameters that the method uses to calculate probabilities and simulate actions in order to prefetch tiles—probability mass function, adaptivity, temporality, and spatiality—are summarized in the table below by order of complexity of implementation. 
         [0000]                                                  Complexity                            Probability Mass           Spatiality   Temporality   Adaptivity   Function                       Non-   Non-   Non-   Gaussian           spatial   temporal   adaptive           Spatial   Temporal   Adaptive   Histogram                        
The probability mass function can be used to calculate tile probabilities in the tile marking process. It may be defined as, for example, but not limited to, either a Gaussian function or a histogram. During the tile-marking process, the mean and standard deviation can be used to find a highly probable range of action. The Gaussian function can be used, for example, if the user&#39;s behavior resembles a normal distribution. The histogram of past and/or estimated trajectory statistics can be used otherwise. Each bin of the histogram is analyzed in order of magnitude. The following steps describe a general implementation of a histogram in the interaction model:
       Define some histogram m with I bins. A separate histogram is defined for each of the action parameters (i.e. m x , m y  for the pan action, m z  for the zooming action, and m u  for the seek action) such that the value m i  is the aggregate observed outcomes corresponding to bin i.   Define the probability of some bin i as P i =m i /Σm I      Choose the n highest P i -valued bins in m where n is the maximum number s.t. n*r≦σ where r is the bin size and σ is the standard deviation of m. Put the values for these bins in a set K. When marking tiles, choose which to mark according to the following formulas (note functions q and r used previously):
           a. play: A x,y,z,u+1      b. pan: A q(k)∀kεK     x     ,q(k)∀kεK     y     ,z,u      c. zoom: A x,y,r(k)∀kεK     z     ,u      d. seek: A x,y,z,k∀K     u    
 
Using these steps, the most commonly used values of the action parameters can be considered when prioritizing tiles with no underlying implications of the distribution.
   
               
 
         [0048]    The parameters of the interaction model can either remain static (referred to herein as non-adaptive) during viewing of a video, or change to suit the behavior of a single user or group of users, referred to herein as adaptive. The non-adaptive case can allow for a minimum of computation during viewing. In the adaptive case, the method may need to be run multiple times during execution to produce updated results. Using an adaptive mode can potentially boost performance since the user-interaction model may better reflect current trajectories through the video. 
         [0049]    If the user-interaction model&#39;s parameterization changes depending on the frame of the current viewport in the video, the user-interaction model&#39;s parameterization is referred to herein as temporal as opposed to non-temporal. When operating in the temporal mode, the probability mass function parameterization changes according to some partition of the frames in the video. Similarly, if the user-interaction model&#39;s parameterization changes depending on the spatial position (dealing with Δ x , Δ y , Δ z ), then the user-interaction model&#39;s parameterization is referred to herein as spatial mode as opposed to non-spatial mode. The spatial and temporal modes, especially in the adaptive case, inherently allow for Region of Interest detection and exploitation. The advantage in using the operating mode Gaussian function, non-adaptive, non-temporal, non-spatial lies in relatively low computational overhead. Because the output VTM references do not change relative to the position of a single tile in the viewport, the output will only have to be generated once for any video. This is done by generating a VTM offset list instead of the absolute VTM references described above. During viewing of the video, these offsets and the tiles in the current viewport are used to generate a prioritized list from any selected viewport, possibly yielding lower computation overhead. To accommodate for tiles computed out of range or duplicate tile references, the cache size can be overcompensated for in the single execution of the method. 
         [0050]    Referring now to  FIG. 3 , the method of the present embodiment was compared to the two prior art techniques. The prior art techniques for caching high-spatial-resolution video either prioritize tiles by nearest neighbor in the VTM or forwards in time. Prioritizing tiles forwards in time mimics the way in which non-interactive video is buffered. Properties of the video and parameterization of the method of the present embodiment are shown in the table  200 . The values for user-interaction model  201  have been set, for example, but not limited to, after observation of several users&#39; trajectories. Table  300  shows some statistics and results for various human-generated trajectories  315  of an aerial persistent-surveillance video. Row  301  shows the number of actions; rows  303  show the distribution of these actions. Rows  305  show values of the mean (m) and standard deviation (s) of the action-function parameters. Experiments were used to compare the method of the present embodiment (stoc  311 ) to conventional techniques cony  307  and near  309 . Cony  307  prioritizes tiles only forwards in time from the current viewport. Near  309  prioritizes tiles by the nearest neighbor in the VTM. Experiments were conducted for several values of T, the period at which the cache is instantly refreshed to the tiles referenced by the output of the different techniques, and size, the cache size in tiles. The results are shown in cache hit ratios  313 , which are the ratios of cache hits to total tile requests. In the majority of results, the method of the present embodiment stoc  311  outperforms cony  307  and near  309  by an average of 8% across all cache hit ratios  313  and reaching 50% better performance in the best case. 
         [0051]    Referring now to  FIG. 4 , system  100  for prioritizing image tiles can include, but is not limited to including, discreet image processor  101  automatically creating a discretized representation of an image, the image including tiles  113 , each tile  113  being mapped to at least one element of the discretized representation. System  100  can also include action function processor  103  automatically defining a set of action functions  119  describing each action of navigation of the image, and trajectory processor  105  automatically describing trajectory  121  through the image based action functions  119 . System  100  can still further include probability processor  107  automatically computing probabilities  139  of transition from one of the actions to another of the actions in the trajectory  121 , and priority processor  109  automatically generating prioritized list  125  of image tiles  113  based on probabilities  139 . System  100  can optionally include cache processor  141  prefetching tiles  113  into cache  137  based on add list  117 , and evicting tiles  113  from cache  137  based on evict list  115 . Cache processor  141  can create evict list  115  and add list  117  based on prioritized list  125 . 
         [0052]    Continuing to refer to  FIG. 4 , system  100  can further optionally include state processor  108  including computer code (a) setting a list of states to an initial state, the initial state including a tile set having references to the discretized representation of the image of the tiles in the viewport, (b) setting the probabilities of the list of possible actions for the state equal to the steady state probabilities, (c) traversing each of the list of possible actions of each of the states in the state set to locate an active state, the active state having the highest of the probabilities, (d) removing an action from the list of possible actions, the action corresponding to the highest of the probabilities, (e) adding a new state to the list of states, and (f) calculating a new state tile set and new state action set stochastically based on a video model, a user-interaction model, and an operating mode. Calculating a new state tile set can include, but is not limited to including, (g) computing the mean and the standard deviation of a probability mass function, (h) computing a first discretized representation of the image offset reference based on the discretized representation of the image, a viewport, and a set of panned pixels, (i) computing a second discretized representation of the image offset reference based on the discretized representation of the image, the viewport, and a view ratio zoomed, (j) marking each of the tiles in the tile list in the active states based on the actions corresponding to the tiles, the corresponding actions being based on the first discretized representation of the image offset reference, the second discretized representation of the image offset reference, the mean, and the standard deviation, (k) creating a new state based on the marked tiles, and (j) repeating steps (a)-(j) until the number of the marked tiles meets a pre-selected threshold. 
         [0053]    Referring now to  FIG. 5 , method  150  for prioritizing image tiles can include, but is not limited to including, automatically creating  151  a discretized representation of an image. The image can include tiles, and each of the tiles can be mapped to at least one element of the discretized representation. Method  150  can also include automatically defining  153  a set of action functions describing each action of navigation of the image, and automatically describing  155  a trajectory through the image based on the set of action functions. Method  150  can still further include automatically computing  157  probabilities of transition from one of the actions to another of the actions in the trajectory, and automatically generating  159  a prioritized list of the tiles based on the probabilities. The image can optionally include motion imagery. 
         [0054]    Method  150  can optionally include prefetching the tiles into a cache based on the prioritized list, and evicting the tiles from a cache based on the prioritized list. Method  150  can still further optionally include maintaining a state set including a list of states, each of the states containing a set of the tiles corresponding to a viewport and a set of possible of the actions for the state, and preparing the prioritized list based on the state set. Method  150  can even further optionally include creating the state based on steady state probabilities and one of the actions from a previous of the states, the previous of the states based on the trajectory, and calculating references to the discretized representation of the image based on the state, the set of tiles, and the action from the previous state. Method  150  can also include (a) setting the list of states to an initial state, the initial state including a tile set having references to the discretized representation of the image of the tiles in the viewport, (b) setting the probabilities of the list of possible actions for the state equal to the steady state probabilities, (c) traversing each of the list of possible actions of each of the states in the state set to locate an active state, the active state having the highest of the probabilities, (d) removing an action from the list of possible actions, the action corresponding to the highest of the probabilities, (e) adding a new state to the list of states, (f) calculating a new state tile set and new state action set stochastically based on a video model, a user-interaction model, and an operating mode. Calculating a new state tile set can include, but is not limited to including, (g) computing the mean and the standard deviation of a probability mass function, (h) computing a first discretized representation of the image offset reference based on the discretized representation of the image, a viewport, and a set of panned pixels, (i) computing a second discretized representation of the image offset reference based on the discretized representation of the image, the viewport, and a view ratio zoomed, (j) marking each of the tiles in the tile list in the active states based on the actions corresponding to the tiles, the corresponding actions being based on the first discretized representation of the image offset reference, the second discretized representation of the image offset reference, the mean, and the standard deviation, (k) creating a new state based on the marked tiles, and (j) repeating steps (a)-(j) until the number of the marked tiles meets a pre-selected threshold. The number of marked tiles can be used in a future count. Actions can be filtered based pre-selected prediction values. The probability mass function can either be, for example, but not limited to, Gaussian or histogram. One of the histograms can be defined for each action parameter, and each of the histograms can have bins. The bin probability can be defined for each of the bins based on each of the histograms. A pre-selected number of the bins can be chosen based on the highest values of the bin probabilities, and the tiles can be marked based on the chosen bins, the first discretized reference of an image offset reference, and the second first discretized reference of an image offset reference. The user-interaction model can either be, for example, but not limited to, adaptive and non-adaptive. A discretized representation of the image offset list can be generated based on the discretized representation of the image offset references, and the priorities list can be generated based on the discretized representation of the image offset list and the current viewport. 
         [0055]    Raw data and results from the computations of the systems and methods present embodiments can be stored for future retrieval and processing, printed, displayed, transferred to another computer, and/or transferred elsewhere. Electronic communications  133  ( FIG. 4 ) can be wired or wireless, for example, using cellular communication systems, military communications systems, and satellite communications systems. Any software required to implement the system can be written in a variety of conventional programming languages. System  100  ( FIG. 4 ), including any possible software, firmware, and hardware, can operate on a computer having a variable number of CPUs. Other alternative computer platforms can be used. The operating system can be, for example, but is not limited to, WINDOWS® or LINUX®. 
         [0056]    Embodiments of the present teachings are directed to computer systems for accomplishing the methods discussed in the description herein, and to computer readable media containing programs for accomplishing these methods. The raw data and results can be stored for future retrieval and processing, printed, displayed, transferred to another computer, and/or transferred elsewhere. Communications links can be wired or wireless, for example, using cellular communication systems, military communications systems, and satellite communications systems. In an exemplary embodiment, the software for the system is written in a high-level programming language. Alternative computer platforms can be used. The operating system can be, for example, but is not limited to, WINDOWS® or LINUX®. 
         [0057]    The present embodiment is also directed to software for accomplishing the methods discussed herein, and computer readable media storing software for accomplishing these methods. The various modules described herein can be accomplished on the same CPU, or can be accomplished on a different computer. In compliance with the statute, the present embodiment has been described in language more or less specific as to structural and methodical features. It is to be understood, however, that the present embodiment is not limited to the specific features shown and described, since the means herein disclosed comprise preferred forms of putting the present embodiment into effect. 
         [0058]    Referring again to  FIGS. 4 and 5 , method  150  ( FIG. 5 ) can be, in whole or in part, implemented electronically. Signals representing actions taken by elements of system  100  ( FIG. 4 ) and other disclosed embodiments can travel over at least one live communications network  133  ( FIG. 4 ). Control and data information can be electronically executed and stored on at least one computer-readable medium such as, for example, image data  131  ( FIG. 4 ). System  100  ( FIG. 4 ) can be implemented to execute on at least one computer node  114  ( FIG. 4 ) in at least one live communications network  133  ( FIG. 4 ). Common forms of at least one computer-readable medium can include, for example, but not be limited to, a floppy disk, a flexible disk, a hard disk, magnetic tape, or any other magnetic medium, a compact disk read only memory or any other optical medium, punched cards, paper tape, or any other physical medium with patterns of holes, a random access memory, a programmable read only memory, and erasable programmable read only memory (EPROM), a Flash EPROM, or any other memory chip or cartridge, or any other medium from which a computer can read. Further, the at least one computer readable medium can contain graphs in any form including, but not limited to, Graphic Interchange Format (GIF), Joint Photographic Experts Group (JPEG), Portable Network Graphics (PNG), Scalable Vector Graphics (SVG), and Tagged Image File Format (TIFF). 
         [0059]    Although the present teachings have been described with respect to various embodiments, it should be realized these teachings are also capable of a wide variety of further and other embodiments.