Abstract:
Aspects of the present invention include point set matching systems and methods. In embodiments, a tree model is used to find candidate matching locations for a set of query points. In embodiments, a similitude transform is assumed, and the parameters are separately solved to reduce computation complexity. In embodiments, the dominant scaling (α) and rotation (R) parameters are obtained by identifying a maximum in an accumulator space. A translation (t) matrix is calculated in another 1D accumulator space. With the obtained similitude transform, outliers can be reliably detected. This two-stage approach reduces the complexity and calculation time of determining a similitude transform and increases the accuracy and ability to detect outliers.

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     This application claims the priority benefit under 35 USC §119(e) to commonly assigned and U.S. Patent Application No. 61/726,471, filed on Nov. 14, 2012, entitled “Visual Recognition Using Joint Discriminative and Generative Tree Model,” and listing as inventors Jinjun Wang and Jing Xiao. The aforementioned patent document is incorporated by reference herein in its entirety. 
    
    
     BACKGROUND 
     1. Field of Invention 
     The present patent document is directed towards systems and methods for point set matching. 
     2. Description of the Related Art 
     Point set matching has been a fundamental problem in many applications. These applications include stereo matching, video stabilization, motion estimation, image registration, object detection, and so forth. Although point set matching is important in many applications, it suffers from some significant issues. 
     There are at least four significant issues with the point set matching problem. As its name implies, point set matching involves matching query points to database points. Thus, one of the first issues is how to construct matching point pairs. 
     The second issue involves the problem of outlier points, particularly if there is a high ratio of matching pairs that are actually outliers. Outlier points can have a dramatic negative affect on the resultant transformation obtained from the point set matching process. Robust estimation has been a popular method to deal with outliers, and is reported to be reliable when less than 30% point pairs are outliers. Also, sampling-based methods, such as RANSAC or LMedS, have been used to attempt to handle a large ratio of outliers given sufficient number of sampling. 
     However, these prior approaches have limitations—especially when dealing with the third issue of point set matching. The third issue involves situations in which query points may have multiple candidate matching points in the database. These prior approaches cannot adequately handle such situations. 
     Finally, prior approaches to the point set matching problem have been computationally complex. As the number of matched points increased, the computation time and complexity can significantly increase. 
     Accordingly, systems and methods are needed that can address these issues and produce better results when performing point set matching. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Reference will be made to embodiments of the invention, examples of which may be illustrated in the accompanying figures, in which like parts may be referred to by like or similar numerals. These figures are intended to be illustrative, not limiting. Although the invention is generally described in the context of these embodiments, it should be understood that it is not intended to limit the scope of the invention to these particular embodiments. 
         FIG. 1  depicts an overview of point set matching according to embodiments of the present invention. 
         FIG. 2  graphically depicts a tree model used to obtain candidate matching points for a query descriptor according to embodiments of the present invention. 
         FIG. 3  depicts a method for obtaining a dominant scale and rotation values according to embodiments of the present invention. 
         FIG. 4  illustrates an example of a parameter space  400  according to embodiments of the present invention. 
         FIG. 5  depicts a method for obtaining a translation matrix according to embodiments of the present invention. 
         FIG. 6(   a ) illustrates a set of matching results in which there is multi-mode matching according to embodiments of the present invention. 
         FIG. 6(   b ) illustrates the multiple mode dominant scaling/rotation values according to embodiments of the present invention. 
         FIG. 7  illustrates performance of an embodiment of the current invention against benchmark techniques RANSAC and LMedS. 
         FIG. 8  also illustrates performance of an embodiment of the current invention against benchmark techniques RANSAC and LMedS. 
         FIG. 9  illustrates performance of an embodiment of the current invention against benchmark techniques RANSAC and LMedS relative to average number of candidates for each query. 
         FIG. 10  depicts a block diagram illustrating an exemplary system which may be used to implement aspects of the present invention. 
     
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     In the following description, for purposes of explanation, specific details are set forth in order to provide an understanding of the invention. It will be apparent, however, to one skilled in the art that the invention can be practiced without these details. Furthermore, one skilled in the art will recognize that embodiments of the present invention, described herein, may be implemented in a variety of ways, including software, hardware, firmware, or combinations thereof. 
     Components, or modules, shown in block diagrams are illustrative of exemplary embodiments of the invention and are meant to avoid obscuring the invention. It shall also be understood that throughout this discussion that components may be described as separate functional units, which may comprise sub-units, but those skilled in the art will recognize that various components, or portions thereof, may be divided into separate components or may be integrated together, including integrated within a single system or component. It should be noted that functions or operations discussed herein may be implemented as components or modules. 
     Furthermore, connections between components within the figures are not intended to be limited to direct connections. Rather, data between these components may be modified, re-formatted, or otherwise changed by intermediary components. Also, additional or fewer connections may be used. It shall also be noted that the terms “coupled” or “communicatively coupled” shall be understood to include direct connections, indirect connections through one or more intermediary devices, and wireless connections. 
     Reference in the specification to “one embodiment,” “preferred embodiment,” “an embodiment,” or “embodiments” means that a particular feature, structure, characteristic, or function described in connection with the embodiment is included in at least one embodiment of the invention and may be in more than one embodiment. Also, such phrases in various places in the specification are not necessarily all referring to the same embodiment or embodiments. It shall be noted that the use of the terms “set” and “group” in this patent document shall include any number of elements. Furthermore, it shall be noted that methods or algorithms steps may not be limited to the specific order set forth herein; rather, one skilled in the art shall recognize that certain steps may be performed in different orders, including being done contemporaneously. 
     It shall be noted that although embodiments described herein may be within the context of object detection in images (still or video), the invention elements of the current patent document are not so limited. Accordingly, the invention elements may be applied or adapted for use in other contexts and/or on other input sensor data. 
     1. Introduction 
     As noted above, there are several issues with traditional point set matching approaches. For example, candidate pairs may be returned from a tree such that multiple descriptors may get quantized to a leaf node containing multiple descriptor locations from the same training image, which therefore forms a many-to-many matching problem. Also, traditional point set matching performance suffers in the presence of large ratios of outliers. One solution is to select only the top-most pairing for each query descriptor, which might falsely reject inlier descriptors. Alternatively, one can regard such many-to-many matching to multiple one-to-one matching at the cost of additional computation for outlier detection, or by imposing strict limitations on the transformation space. For instance, “region-to-image” matching has been introduced where descriptors from each image segment are matched to a database image using Dynamic Programming. However, such an approach is not a general solution—no rotation and only small amount of scaling are allowed. 
     2. Matching Point Set Returned by Tree Model 
     Embodiments of the present invention take a more general approach then some of the prior approaches—the translation is assumed to follow 2D similitude transform that includes scaling, rotation, and translation transforms. Embodiments of the present invention solve the parameters for each of the primitive transform separately to allow for very efficient computation in quadratic time. 
       FIG. 1  depicts an overview of point set matching  100  according to embodiments of the present invention. In embodiments, point set matching starts by using local descriptor similarity matching to construct a set of candidate matching pairs. In embodiments, a vocabulary tree model may be used to initially construct a set of candidate matching pairs. A tree model is widely adopted for point set matching with local image descriptors due to its efficiency and scalability. The advantages allow its performance to be further boosted by simply increasing the training sample size. 
     In embodiments, a typical vocabulary tree may be built in two steps, which are well known to those of ordinary skill in the art. First, a construction step builds a tree with descriptors from training images. And second, a registration step creates a Reverse Index (RI) table for each leaf node. In embodiments, the RI comprises one or more attributes of the image (class or identifier) with at least one descriptor that reaches the leaf node. In embodiments, the RI also includes the locations of the descriptors, which may be referred to herein as a “point.” Thus, in embodiments, during the training process, a tree model is built and registered in which each leaf node has a list that indexes all objects with at least one descriptor that reaches the leaf and the 2D location of the descriptor. 
     Returning to  FIG. 1 , Step  105 , the query process begins by quantizing each query descriptor to the closest leaf node in a trained tree model.  FIG. 2  graphically depicts a tree model used to obtain candidate matching points for a query descriptor  200  according to embodiments of the present invention. In embodiments, the query descriptor  205  is input into the tree model, and based upon a comparison of descriptor values, the query descriptor progresses  250  until it reaches a leaf node  230  that most closely resembles the query descriptor  205 . As seen in  FIG. 2 , associated with the leaf node is a reverse index that includes information about the candidate matching point or points. In this example, there are two candidate matching points. One point has one object identifier, Object ID 2 ( 235 - 1 ) and an associated location, p 21  ( 240 - 1 ); the other point has a different object identifier, Object ID 5 ( 235 - 2 ), along with its associated location, p 22  ( 240 - 2 ). It shall be noted that, in embodiments, the reverse index may include additional information. 
     Thus, for each query descriptor from a set of query descriptors, the query descriptor is input ( 105 ) into a tree model to identify its closest leaf node and thereby obtain one or more candidate matching points and their corresponding locations from the reverse index for that leaf node. Stated generally, in embodiments, given a set of M descriptors, their 2D locations may be depicted as P=[p1; p2; . . . ; pM]ε           . The tree finds the set of matching candidates for each image class l denoted as Q l =[{q} 1 ; {q} 2 ; . . . ; {q} M ] l , where each {q} li  may be a set of points. For simplicity, the subscript l is omitted.
     In embodiments, the query points and their corresponding candidate matching points may then be used to obtain an estimate of a transformation model. A similitude transform is typically of the form: 
     
       
         
           
             
               q 
               = 
               
                 
                   
                     α 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     
                       p 
                       ⁡ 
                       
                         [ 
                         
                           
                             
                               
                                 cos 
                                 ⁡ 
                                 
                                   ( 
                                   θ 
                                   ) 
                                 
                               
                             
                             
                               
                                 sin 
                                 ⁡ 
                                 
                                   ( 
                                   θ 
                                   ) 
                                 
                               
                             
                           
                           
                             
                               
                                 - 
                                 
                                   sin 
                                   ⁡ 
                                   
                                     ( 
                                     θ 
                                     ) 
                                   
                                 
                               
                             
                             
                               
                                 cos 
                                 ⁡ 
                                 
                                   ( 
                                   θ 
                                   ) 
                                 
                               
                             
                           
                         
                         ] 
                       
                     
                   
                   + 
                   t 
                 
                 = 
                 
                   
                     α 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     x 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     R 
                   
                   + 
                   t 
                 
               
             
             , 
           
         
       
     
     where α is a scalar representing scaling, t is the translation vector/matrix, θ is the rotation angle, and R is the rotation matrix. 
     In embodiments, at least some of the set of points and at least some of their candidate matching points are used ( 110 ) to find dominant scaling and rotation values and an inlier point. Then, using the dominant scaling and rotation values and the inlier descriptor, a translation matrix is obtained ( 115 ). It shall be noted that this novel approach to obtaining the similitude transform has several benefits, including but not limited to eliminating or ameliorating the issues that plagued prior approaches. The next subsections describe, in more detail, embodiments for obtaining the scaling and rotation values, and for obtaining the translation matrix. 
     a. Scaling and Rotation in Parameter Space 
     Embodiments of the point set matching of the present invention are based on the recognition that the scaling and the rotation may be calculated separately from the translation, because the former two are invariant to the origin. In embodiments, α and R (or θ) may be solved by: 
     
       
         
           
             
               
                 
                   
                     R 
                     * 
                   
                   , 
                   
                     
                       α 
                       * 
                     
                     = 
                     
                       
                         argmin 
                         
                           R 
                           , 
                           α 
                         
                       
                       ⁢ 
                       
                         
                            
                           
                             
                               α 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               
                                 P 
                                 _ 
                               
                               ⁢ 
                               R 
                             
                             - 
                             
                               Q 
                               _ 
                             
                           
                            
                         
                         F 
                         2 
                       
                     
                   
                   , 
                   
                     
 
                   
                   ⁢ 
                   
                     
                       s 
                       . 
                       t 
                       . 
                       
                           
                       
                       ⁢ 
                       
                         RR 
                         T 
                       
                     
                     = 
                     I 
                   
                 
               
               
                 
                   ( 
                   1 
                   ) 
                 
               
             
           
         
       
     
     where  P  are the centralized version of query P, and  Q  are the corresponding centralized matching points. To solve Eq.(1), since
 
∥α   P R−  Q ∥   F   2 ∝α 2   Tr (   PP     T )−2α Tr (   P R  Q     T ),  (2)
 
     taking Eq.(2) into Eq.(1), R and α may be solved successively by first finding 
     
       
         
           
             
               
                 
                   
                     
                       R 
                       * 
                     
                     = 
                     
                       
                         argmax 
                         R 
                       
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         Tr 
                         ⁡ 
                         
                           ( 
                           
                             
                               P 
                               _ 
                             
                             ⁢ 
                             R 
                             ⁢ 
                             
                                 
                             
                             ⁢ 
                             
                               
                                 Q 
                                 _ 
                               
                               T 
                             
                           
                           ) 
                         
                       
                     
                   
                   , 
                   
                     
 
                   
                   ⁢ 
                   
                     
                       s 
                       . 
                       t 
                       . 
                       
                           
                       
                       ⁢ 
                       
                         RR 
                         T 
                       
                     
                     = 
                     I 
                   
                 
               
               
                 
                   ( 
                   3 
                   ) 
                 
               
             
           
         
       
     
     and then 
     
       
         
           
             
               
                 
                   
                     α 
                     * 
                   
                   = 
                   
                     mean 
                     ⁡ 
                     
                       ( 
                       
                         
                           Q 
                           _ 
                         
                         
                           
                             P 
                             _ 
                           
                           ⁢ 
                           
                             R 
                             * 
                           
                         
                       
                       ) 
                     
                   
                 
               
               
                 
                   ( 
                   4 
                   ) 
                 
               
             
           
         
       
     
     Eq.(3) is an orthogonal approximation problem, and
 
 R*=U{tilde over (S)}V   T  (if reflection transform is allowed, then  R*=UV   T )  (5)
 
     where {U, S, V} are the Singular Vector Decomposition (SVD) of  P   T   Q , and 
     
       
         
           
             
               S 
               ~ 
             
             = 
             
               [ 
               
                 
                   
                     1 
                   
                   
                     0 
                   
                 
                 
                   
                     0 
                   
                   
                     
                       det 
                       ⁡ 
                       
                         ( 
                         
                           U 
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           
                             V 
                             T 
                           
                         
                         ) 
                       
                     
                   
                 
               
               ] 
             
           
         
       
     
     Finally, 
     
       
         
           
             
               
                 
                   
                     θ 
                     * 
                   
                   = 
                   
                     arctan 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     
                       
                         R 
                         
                           1 
                           , 
                           1 
                         
                         * 
                       
                       
                         R 
                         
                           1 
                           , 
                           2 
                         
                         * 
                       
                     
                   
                 
               
               
                 
                   ( 
                   6 
                   ) 
                 
               
             
           
         
       
     
     Eq.(3) and Eq.(4) show that, with any two matching pairs, the optimal scaling and rotation may be solved in constant time. This makes it possible, in embodiments, to find a dominant scaling and rotation from noisy point pairs and multiple matching candidates using Hough transform. In embodiments, to depict, a 2D parameter space may be constructed for scale α and rotation angle θ respectively; multiple subsets may be sampled, each with at least two matching pairs between P and Q, to accumulate score for a {α, θ} combination. For n subsamples, the complexity is O(n 2 ). 
       FIG. 3  depicts a method for obtaining a dominant scale and rotation combination  300  according to embodiments of the present invention. As depicted in  FIG. 3 , the method commences by sampling ( 305 ) two query points. Using the two query points and their candidate matching points, the scaling and rotation values are solved for ( 310 ) as presented above. In embodiments, the values are used to plot ( 315 ) a scale-rotation combination accumulator point onto an accumulator space with scale and rotation axes. Also, in embodiments, a histogram, table, or other mechanism used to track which sampled points produced the accumulator space point is also updated ( 315 ). In embodiments, steps  305 - 315  may be repeated ( 320 ) a number of times, in which another two sampled query points are used. One skilled in the art shall recognize that the embodiment of  FIG. 3  may be altered regard when and how the sampling is done and processed (e.g., batch processing) without materially altering the concept of generating a set of accumulator points. 
       FIG. 4  illustrates an example of a parameter space/accumulator space  400  according to embodiments of the present invention. As shown in  FIG. 4 , the accumulator space  400  is constructed using scale (y-axis) and rotation angle (θ) (x-axis). In embodiments, for each sampled set of points that yields scale and rotation values, a point is plotted in the accumulator space using the scale and rotation values. In embodiments, a dominant point is identified ( 325 ), such as point  405  within circle  410  (which is shown to help highlight point  405 ). In embodiments, the dominant point may be the mode point. In alternative embodiment, an average or weighted average of a set of accumulator points may be used to identify ( 325 ) dominant scale and rotation values. 
     In embodiments, having identified a dominant accumulator point, the histogram, table, or other mechanism that correlates the sampled query points to accumulator points, is used to identify a corresponding query point that generated (or, in embodiments, most closely generates) the dominant accumulator point. This identified point may be referred to herein as an “inlier” point, meaning that it is most probably not an outlier point. In embodiments, this inlier point may be used to help generate the translation matrix, as explained in more detailed below. 
     b. Translation and Outlier Detection 
     In embodiments, the next stages involve detecting outliers and calculating an optimal translation. In embodiments, the property that scaling and rotation are invariant to origin, such that the translation with respect to arbitrary origin should project the inliers to locations with constant offset from the matched targets, while outliers should have inconstant offsets, is relied upon to obtain the translation matrix. Using this property, this subsection presents embodiments of a method for calculating the translation in constant time. 
     Embodiments of the present invention are based on two additional facts. First, if the arbitrary origin is set to one of the inliers, then the constant offset becomes zero because scaling and rotation transformation with respect to this point would project all the inliers exactly onto the matched target. And second, the maxima available in the scaling/rotation parameter space (as discussed in the prior section) guarantee the existence of at least one “inlier.” 
       FIG. 5  depicts a method for obtaining a translation matrix  500  according to embodiments of the present invention. In embodiments, the method commences by using the dominant scale and rotation values and inlier point obtained from the prior section to project ( 505 ) a set of query points. Denoting the inlier point as p 0  and its corresponding target as q 0 , the optimal transformation should project each query point p i  to:
 
 {tilde over (p)}   i =α( p   i   −p   0 )* R+q   0 .  (7)
 
     Now, in embodiments, outliers can be detected by simply thresholding ( 510 ) the alignment error between {tilde over (p)} i  and q i . After all the inliers P* and Q* are detected ( 510 ), a set of inlier points (which may be all or a subset of the inliers) may be used to solve ( 515 ) for translation (t). In embodiments, the optimal translation vector may be calculated as:
 
 t*=  q *−α*  p *R*,   (8)
 
     where  p * and  q * are the centers of P* and Q* respectively. 
     In embodiments, the strategy may also be applied for cases where p i  has multi-candidate targets {q} i . In such situation, an embodiment may comprise simply thresholding the distance between p proj  and the closest q i . 
     c. Multi-Mode in the Parameter Space 
     In many real-world applications that, besides one single optimal transformation between point sets, there are chances that additional transformations exists in the “outliers,” which causes the multiple modes matching problem. These additional transforms may be detected to identify a more complete set of “inlier,” and hence to improve performance. 
     Identifying transformation with multi-mode can be well achieved in the scaling/rotation parameter space (as discussed in subsection 2.a.), because each local maxima corresponds to one mode, and the value of the maxima tells the lower bound of the number of matched pairs that can be covered by the transformation. In this way, a user can specify the minimal number of points to form a transform, based on an 8-point criteria, 7-point criteria, or at least 3 points for 2D affine. By iterating local maxima that satisfy the criteria, all modes existing in the point set can be identified, as illustrated in  FIG. 6 .  FIG. 6  illustrates matching situation with multiple modes according to embodiments of the present invention.  FIG. 6(   a ) illustrates a set of matching results in which there is multi-mode matching  600 A. And,  FIG. 6(   b ) illustrates the multiple mode dominant scaling/rotation values  600 B. In the depicted example, the two ground-truth translations for inliers are: {α=1.2, θ=45°, t=[300, 400]} ( 605 - 1 ) and {α=3, θ=−45°, t=[400, −200]} ( 605 - 2 ). The complexity to calculate k transformations is simply O(n 2 +k) because the scaling/rotation space does not need to be reconstruct. 
     3. Performance 
     Results are presented herein to demonstrate possession of the inventive aspects presented in the current patent document and to demonstrate its improved results over prior methods. These results were performed using specific embodiments and under specific conditions; accordingly, nothing in these results sections shall be used to limit the inventions of the present patent document. Rather, the inventions of the present patent document shall embrace all alternatives, modifications, applications and variations as may fall within the spirit and scope of the disclosure. 
       FIGS. 7 and 8  show performance of embodiments of the current invention against benchmark techniques RANSAC and LMedS subject to different ratios of outliers. The performance was evaluated using an inlier detection accuracy, which was calculated according to the following formula: 
     
       
         
           
             
               
                 
                   acc 
                   = 
                   
                     
                       true 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       positive 
                     
                     
                       
                         true 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         positive 
                       
                       + 
                       
                         false 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         negative 
                       
                       + 
                       
                         false 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         positive 
                       
                     
                   
                 
               
               
                 
                   ( 
                   9 
                   ) 
                 
               
             
           
         
       
     
     Both  FIG. 7  and  FIG. 8  graphically illustrate that embodiments of the present invention outperformed benchmark techniques RANSAC and LMedS, particularly at higher ratios of outliers. In  FIGS. 7 and 8 , the curves  705  and  805  are representative of embodiments of the present invention; curves  710  and  810  are indicative of RANSAC and  715  and  815  of LMedS. 
       FIG. 9  also illustrates performance of an embodiment of the current invention against benchmark techniques RANSAC and LMedS. The performance was evaluated using the inlier detection accuracy relative to average number of candidates for each query. Once again, the present invention outperformed the benchmark techniques, particularly at higher average number of candidates for each query. Curve  905  is representative of embodiments of the present invention, curve  910  of RANSAC and curve  915  of LMedS. 
     It shall be noted that computation complexity for embodiments of the present invention is better than traditional approaches. In embodiments, the scale and rotation may be solved in O(n 2 ) where n is the number of points, and the translation may be solved in O(nm) where m is the average number of candidates for each query point. 
     4. Computing System Embodiments 
     Having described the details of the invention, an exemplary system  1000 , which may be used to implement one or more aspects of the present invention, will now be described with reference to  FIG. 10 . As illustrated in  FIG. 10 , the system includes a central processing unit (CPU)  1001  that provides computing resources and controls the computer. The CPU  1001  may be implemented with a microprocessor or the like, and may also include a graphics processor and/or a floating point coprocessor for mathematical computations. The system  1000  may also include system memory  1002 , which may be in the form of random-access memory (RAM) and read-only memory (ROM). 
     A number of controllers and peripheral devices may also be provided, as shown in  FIG. 10 . An input controller  1003  represents an interface to various input device(s)  1004 , such as a keyboard, mouse, or stylus. There may also be a scanner controller  1005 , which communicates with a scanner  1006 . The system  1000  may also include a storage controller  1007  for interfacing with one or more storage devices  1008  each of which includes a storage medium such as magnetic tape or disk, or an optical medium that might be used to record programs of instructions for operating systems, utilities and applications which may include embodiments of programs that implement various aspects of the present invention. Storage device(s)  1008  may also be used to store processed data or data to be processed in accordance with the invention. The system  1000  may also include a display controller  1009  for providing an interface to a display device  1011 , which may be a cathode ray tube (CRT), a thin film transistor (TFT) display, or other type of display. The system  1000  may also include a printer controller  1012  for communicating with a printer  1013 . A communications controller  1014  may interface with one or more communication devices  1015 , which enables the system  1000  to connect to remote devices through any of a variety of networks including the Internet, a local area network (LAN), a wide area network (WAN), or through any suitable electromagnetic carrier signals including infrared signals. 
     In the illustrated system, all major system components may connect to a bus  1016 , which may represent more than one physical bus. However, various system components may or may not be in physical proximity to one another. For example, input data and/or output data may be remotely transmitted from one physical location to another. In addition, programs that implement various aspects of this invention may be accessed from a remote location (e.g., a server) over a network. Such data and/or programs may be conveyed through any of a variety of machine-readable medium including magnetic tape or disk or optical disc, or a transmitter, receiver pair. 
     Embodiments of the present invention may be encoded upon one or more non-transitory computer-readable media with instructions for one or more processors or processing units to cause steps to be performed. It shall be noted that the one or more non-transitory computer-readable media shall include volatile and non-volatile memory. It shall be noted that alternative implementations are possible, including a hardware implementation or a software/hardware implementation. Hardware-implemented functions may be realized using ASIC(s), programmable arrays, digital signal processing circuitry, or the like. Accordingly, “means” terms in any claims are intended to cover both software and hardware implementations. Similarly, the term “computer-readable medium or media” as used herein includes software and/or hardware having a program of instructions embodied thereon, or a combination thereof. With these implementation alternatives in mind, it is to be understood that the figures and accompanying description provide the functional information one skilled in the art would require to write program code (i.e., software) and/or to fabricate circuits (i.e., hardware) to perform the processing required. 
     While the inventions have been described in conjunction with several specific embodiments, it is evident to those skilled in the art that many further alternatives, modifications, and variations will be apparent in light of the foregoing description. Thus, the inventions described herein are intended to embrace all such alternatives, modifications, applications and variations as may fall within the spirit and scope of the appended claims.