Patent Publication Number: US-11036333-B2

Title: Distinguishing and tracking multiple objects when placed on capacitive touchscreen

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application claims the benefit of U.S. Provisional Application No. 62/823,735 filed on Mar. 26, 2019, the disclosure of which is hereby incorporated by reference in its entirety. 
    
    
     FIELD OF THE INVENTION 
     The present invention relates to a technique for distinguishing and tracking a plurality of objects placed on a capacitive touchscreen, where each object produces a plurality of touches at selected touch points detectable by the touchscreen. 
     BACKGROUND 
     The present disclosure is concerned with a novel development built on works disclosed in U.S. Pat. Nos. 9,589,161, 9,715,687 and US 2018/0211071. The disclosures of U.S. Pat. Nos. 9,589,161, 9,715,687 and US 2018/0211071 are incorporated herein by reference. 
     The present disclosure considers a scenario in which multiple cards/objects are placed on a capacitive touchscreen. For illustration,  FIG. 1  depicts an example of this scenario. Each object has its own set of anchor points and information points. For details of the anchor points and the information points, see US 2018/0211071. In general, a set of three anchor points creates a triangle or a triangular pattern. The triangular pattern is uniquely identifiable by a touchscreen processor such that the processor can compare the identified pattern against a database of known patterns to detect which object corresponds to the identified pattern. The object can then be identified. The information points are associated with an object. Appearance and disappearance of the information points can be switched over time, and the information points are used by the object to transmit data information from the object to the touchscreen processor. It is desirable to simultaneously identify all the cards/objects and their locations and orientations when they are placed on the touchscreen, based on the collection of touch points that are activated on the touchscreen, viz., that are detected by the touchscreen. 
     Detecting and distinguishing multiple cards/objects on the touchscreen has a tremendous number of applications for games and educational toys, where such applications require or enable putting multiple objects on the touchscreen to enhance user interaction experience and new functionalities. Such user experience is only achievable on specialized touch tables or touch tablets that belong to one of the following categories.
         1. There is a camera overseeing the surface area of the table to identify objects from an aerial perspective.   2. There is a grid of near-field communication (NFC) transceivers embedded underneath the screen, and the gaming pieces are NFC tagged to allow for continuous location detection.   3. There is a camera beneath the surface, looking up and recognizing the optical pattern of objects placed on the surface.   4. There is a grid of infra-red sensors added on the edges of screen to determine the touch location from object&#39;s shadow.       

     However, none of the aforementioned solutions is cost-effective due to the additional hardware components needed in addition to a capacitive touchscreen. There is a need in the art to have a technique for detecting and distinguishing multiple objects on the touchscreen without a need to require additional hardware components apart from the touchscreen. 
     SUMMARY OF THE INVENTION 
     The present disclosure provides a method for distinguishing and tracking multiple objects placed on a touchscreen. An individual object is configured to generate imitated touches on the touchscreen. 
     The method comprises steps (a)-(d). 
     In the step (a), touch points made on the touchscreen by the objects at a time instant are identified and located. 
     In the step (b), it is to find out candidate patterns from locations of the touch points. An individual candidate pattern includes three of the touch points forming a triangle congruent to a fingerprint triangle associated with a known predefined object in a set of predefined objects. Said three of the touch points are regarded as three anchor points of the individual candidate pattern. 
     In the step (c), a set of identified patterns is updated according to the candidate patterns and the locations of the touch points identified in the step (a). An individual identified pattern is used for indicating a detected object on the touchscreen and is assigned with plural touch points generated by the detected object. The touch points assigned to the individual identified pattern include three anchor points for identifying the detected object. Particularly, the set of identified patterns is updated by an updating process. The updating process comprises incorporating a subset of the candidate patterns into the set of identified patterns. The subset is selected such that in the subset, each anchor point belongs to one and only one candidate pattern for avoiding a single anchor point from being shared by plural candidate patterns. The updating process further comprises purging the set of identified patterns of any identified pattern that is invalid. An invalid identified pattern is defined to have no more than one anchor point coinciding with any of the touch points identified in the step (a). 
     In the step (d), processing steps are repeated for a next time instant. The processing steps include the steps (a)-(c). In executing the step (b) for the next time instant, preferably and advantageously, any touch point identified in the step (a) and coinciding with any assigned touch point in the set of identified patterns determined for the time instant is excluded from consideration in finding out the candidate patterns. It advantageously leads to a reduction in required computation and storage when compared to execution without a knowledge of the set of identified patterns. 
     Preferably, the updating process further comprises creating a point set of the individual candidate pattern based on locations of the three anchor points of the individual candidate pattern. The point set is a bounded area representing a size and an orientation of the known predefined object. The bounded area may be a circle or any other shape. The bounded area may also be a triangle, a quadrilateral or a polygon. 
     In the updating process, the subset of the candidate patterns is selected by a selecting process. Preferably, the selecting process comprises: initializing the subset to be a null set; sequentially examining the candidate patterns one by one to determine whether a candidate pattern under examination is invalid; and responsive to finding that the candidate pattern under examination is not invalid, including the candidate pattern under examination into the subset. An invalid candidate pattern is defined such that any anchor point of the invalid candidate pattern is shared, or is already used, by any identified pattern in the set of identified patterns or by any candidate pattern already included in the subset. 
     In sequentially examining the candidate patterns, preferably the candidate patterns are arranged in an ascending order of degrees of pattern overlapping. A respective degree of pattern overlapping of the individual candidate pattern is computed by summing three numbers each being a total number of respective point sets that an individual anchor point of the individual candidate pattern is enclosed by. 
     Preferably, the purging of the set of identified patterns comprises: validating a respective touch point assigned to the individual identified pattern by verifying if the respective touch point is one of the touch points identified in the step (a) and is enclosed by the point set of the individual identified pattern; and responsive to finding that the respective touch point is invalid, remove the respective touch point from the identified pattern. 
     In the updating process, it is preferable to determine whether the individual identified pattern is incomplete. An incomplete identified pattern is defined to have only two anchor points coinciding with the touch points identified in the step (a) such that the incomplete identified pattern has a missing anchor point. It is also preferable that responsive to finding that the individual identified pattern is incomplete, a location of the missing anchor point of the individual identified pattern from the two coinciding anchor points thereof is estimated such that the individual identified pattern is re-assigned with three anchor points. 
     After the incorporating of the subset into the set of identified patterns and after the purging of the set of identified patterns are performed, preferably the updating process performs allocating remaining touch points identified in the step (a) and not assigned as anchor points in the set of identified patterns to different identified patterns as information points according to respective point sets of the different identified patterns and locations of the remaining touch points. 
     After the remaining touch points are allocated, preferably the updating process performs updating attributes of the individual identified pattern according to data received through any information point allocated to the individual identified pattern. 
     After the incorporating of the subset into the set of identified patterns and after the purging of the set of identified patterns are performed, preferably the updating process performs computing or updating a geometry of the individual identified pattern according to locations of the three anchor points of the individual identified pattern. The geometry of the individual identified pattern comprises a reference point of the individual identified pattern on the touchscreen and an orientation of the individual identified pattern with respect to the touchscreen. 
     Optionally, the method further comprises a step (e). In the step (e), a trajectory of the individual identified pattern is forecasted such that respective trajectories of on-screen icons tracking the objects are displayable on the touchscreen in advance for compensating for latency of the touchscreen. In the step (d), the processing steps further include the step (e). 
     The trajectory of the individual identified pattern may be forecasted by a forecasting process. In the forecasting process, a time series of respective geometries of the individual identified pattern over a plurality of different time instants is obtained. The plurality of different time instants includes the time instant. A linear regression technique is then used to estimate a future geometry of the individual identified pattern based on the time series of respective geometries of the individual identified pattern such that the trajectory of the individual identified pattern is forecasted. The linear regression technique may be a polynomial-based linear regression technique. 
     The present disclosure also provides an apparatus comprising a touchscreen and one or more processors. The touchscreen is controllable by the one or more processors to sense touches made on the touchscreen. The one or more processors is configured to execute a process for distinguishing and tracking multiple objects placed on the touchscreen according to any of the embodiments of the method, where an individual object is configured to generate imitated touches on the touchscreen. 
     In addition, the present disclosure provides a non-transitory computer readable medium storing a program. The program, when executed on one or more processors, causes the one or more processors to execute a process for distinguishing and tracking multiple objects placed on a touchscreen according to any of the embodiments of the method, where an individual object is configured to generate imitated touches on the touchscreen. 
     Other aspects of the present disclosure are disclosed as illustrated by the embodiments hereinafter. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a photograph of multiple objects placed on a touchscreen of a computing device, showing that the user can interact with the computing device by placing the objects on particularly selected locations on the touchscreen. 
         FIG. 2  depicts a flowchart showing a process flow of an algorithm for exemplarily illustrating a disclosed method for distinguishing and tracking multiple objects placed on a touchscreen. 
         FIG. 3  depicts an example of creating a plurality of candidate patterns from a plurality of touch points by performing step S1 of the algorithm. 
         FIG. 4  depicts the creation of point sets (shown as circles) after step S2.1 is performed, showing that overlapping of circles is present where the overlapped circles are considered invalid circles and should be discarded. 
         FIG. 5  depicts a plurality of identified patterns after the whole step S2 of the algorithm is completed, showing that any overlapped circle is removed. 
         FIG. 6  depicts an example for pictorially illustrating prediction of movement of an identified pattern on the touchscreen by performing the step S5 of the algorithm. 
         FIG. 7  depicts a flow of exemplary processing steps as used in the disclosed method. 
         FIG. 8  depicts a flowchart showing exemplary steps of an updating process for updating the set of identified patterns in accordance with certain embodiments of the disclosed method. 
         FIG. 9  depicts exemplary steps of a selecting process for selecting candidate patterns to be incorporated into the set of identified patterns in accordance with certain embodiments of the disclosed method. 
         FIG. 10  depicts exemplary steps for forecasting a trajectory of each identified pattern in accordance with certain embodiments of the disclosed method. 
         FIG. 11  depicts an apparatus used for implementing the disclosed method, where the apparatus includes a touchscreen and one or more processors. 
     
    
    
     DETAILED DESCRIPTION 
     Provided herein is a method for distinguishing multiple objects placed on a capacitive touchscreen and tracking the objects on the touchscreen. The method is illustrated by first describing a computer-implemented algorithm for distinguishing and tracking the objects placed on the touchscreen. The algorithm is a practical realization of an exemplary embodiment of the disclosed method. Details of the method are further elaborated by generalizing the disclosed algorithm. 
     A system model and variables used herein are described as follows. Let M be the number of touch points activated on the screen at any time instant. That is, M touch points are detected on the screen at the aforesaid time instant. It is desired to determine the number of objects placed on the screen and to distinguish these objects according to the activated touch points that are detected by a touchscreen processor. Let N be the actual number of objects placed on the screen. Since one object contains three anchor points and possibly includes one or more information points, it follows that N is upper bounded by M/3. That is, N≤M/3. Denote P as an object pattern (or a pattern in short), which is a set of points representing an object O. Let {a 1 , a 2 , a 3 } be anchor points of P. Let {A 1 , A 2 , A 3 } be the anchor point triangle of P, where the anchor point triangle is a unique predefined shape such that no other 3 points in P except {a 1 , a 2 , a 3 } can form a triangle congruent to the triangle formed by {A 1 , A 2 , A 3 }. That is,
 
∀{ p,q,r}∈P,Δpqr≅ΔA   1   A   2   A   3   ⇔p=a   1   , q=a   2  and  r=a   3 ,
 
where: Δ pqr stands for a triangle formed by the three points p, q and r on the touchscreen; and “≅” means “congruent to”. The anchor point triangle of P is also named as a fingerprint triangle, because the fingerprint triangle is associated with the represented object O and is thus useful for object identification. Let {x, y, θ} be the geometry of P, where (x, y) is the location of a certain pre-determined reference point of P on the screen, and θ is an orientation of P with respect to the screen. Conveniently, the pre-determined reference point may be a certain anchor point of P. The orientation θ may be defined as an angle of rotation about the reference point (x, y) from a horizontal axis of the screen to a longest side of Δ a 1  a 2  a 3  connecting to the reference point. In one practical choice, a 1 , a 2  and a 3  may be arranged in an anticlockwise sense with the side a 1 a 2  being the longest side of Δ a 1 a 2 a 3 . The reference point (x, y) may be selected to be a 1 , so that the orientation θ can be determined from the side a 1 a 2  and the horizontal axis of the screen. The anchor-point locations of Δ a 1 a 2 a 3  are usable to calculate {x, y, θ}, which is the geometry of the represented object O. Note that for unique, unambiguous determination of the geometry, the three sides of the fingerprint triangle are required to be mutually different. Hence, the fingerprint triangle of the object O shall not be an isosceles triangle or an equilateral triangle.
 
     The disclosed algorithm is illustrated with the aid of  FIG. 2 , which depicts a process flow of the algorithm. As shown in  FIG. 2 , the algorithm is executed as a loop, where the loop includes a sequence of operation steps. The sequence of operation steps is executed for a set of M touch points detected by the screen at one time instant. By executing the algorithm as the loop, the sequence of operation steps is repeated for respective sets of touch points obtained over consecutive time instants. The numbers of touch points obtained at different time instants are most likely different because new objects may be put on or withdrawn from the screen. Furthermore, erroneous detection of a touch point that is actually non-existent (viz., false positive) by the touchscreen electronics/processors occasionally occurs. At the end of executing the sequence of processing steps, a set of identified patterns is obtained. Each identified pattern includes pattern-related data such as the pattern&#39;s geometry. The set of identified patterns is updated by recursively repeating the sequence of operation steps each time with a new set of detected touch points. The algorithm includes steps S1 to S5. 
     In the step S1, it is to find out candidate patterns from the M detected touch points. Exemplarily, the step S1 is illustrated by the following pseudo codes.
         S1.1. For every set of three touch points {p 1 ,p 2 ,p 3 } on the screen where the three touch points are not yet assigned to any pattern, do:
           S1.1.1. if Δ p 1 p 2 p 3 ≅Δ A 1 A 2 A 3 , then:
               S1.1.1.1. create a candidate pattern P i ′;   S1.1.1.2. set p 1 =a 1i , p 2 =a 2i  and p 3 =a 3i .   
               
               

     Practically, the screen has a finite resolution in resolving different touch points. Therefore, the location of a touch point is an estimated one and may be a little bit off from the actual location. In implementing the step S1.1.1, it is desirable to take into consideration the finite resolution of the screen in assessing whether Δ p 1 p 2 p 3  is congruent to Δ A 1 A 2 A 3 . For example, Δ p 1 p 2 p 3  may be determined to be congruent to Δ A 1 A 2 A 3  if a percentage error in length between the side p m p n  and the side A m A n  is less than a tolerable error for (m, n)=(1,2), (1,3) and (2,3). The tolerable error may be, e.g., 10%. 
     Note that a knowledge of screen resolution is required for determining whether Δ p 1 p 2 p 3  is congruent to Δ A 1 A 2 A 3 . In case the screen resolution or the screen size is not known, a triangle Δ p 1 p 2 p 3  similar to Δ A 1 A 2 A 3  with a scaling factor within a predetermined small range is identified. It is then assumed that Δ p 1 p 2 p 3  is congruent to Δ A 1 A 2 A 3  so as to create a candidate pattern. Whether Δ p 1 p 2 p 3  is truly congruent to Δ A 1 A 2 A 3  is to be verified in a later stage with side information such as a location of an information point assigned to the candidate pattern. 
     As a result of executing the step S1, it forms N′ candidate patterns, where N′≥N. These N′ candidate patterns will be individually assessed in subsequent steps to find out which N out of N′ candidate patterns belong to the actual objects on the screen. 
       FIG. 3  depicts an example of creating a plurality of candidate patterns from a plurality of touch points by performing the step S1. Note that one touch point may be shared by different patterns, resulting in overlapped patterns. Overlapped patterns are clearly not valid; otherwise one touch point on the screen would have been created by at least two physical objects. Overlapped patterns are required to be removed in subsequent steps. 
     In the step S2, it is to discard invalid (i.e. overlapped) candidate patterns from the N′ candidate patterns. Exemplarily, the step S2 is illustrated by the following pseudo codes with the aid of  FIGS. 4 and 5 .
         S2.1. For every candidate pattern P i ′, do:
           S2.1.1. create the point set C i , a circle that represents the pattern P i ′;   
           S2.2. For every candidate pattern P i ′, do:
           S2.2.1. let S i  be the total sum of number of circles that every anchor point of P i , is enclosed by, i.e. S i =Σ k=1   3 |{C j |a ki ∈C j ∀j∈[1 . . . N′]}| where |⋅| stands for “the number of”;   
           S2.3. Sort the candidate patterns in an ascending order of S i ;   S2.4. For every candidate pattern P i ′ arranged in an ascending order of S i , do:
           S2.4.1. if all points in {a 1 , a 2 , a 3 } i  are not assigned to any identified pattern, then:
               S2.4.1.1. create an identified pattern P i ;   S2.4.1.2. assign {a 1 , a 2 , a 3 } 1  to P i ;   
               S2.4.2. otherwise:
               S2.4.2.1. discard P i .   
               
               

     In the step S2.1.1, C i  is created as a circle with a predefined size and position with respect to the anchor points of P i ′ Since a pattern is associated with a physical object in practice, and since the boundary and dimension of the object are known, the size of the circle C i  can be determined. For example, one may set C i  to be a circle with a diameter of 5 cm and a center selected to be a mid-point between first and second anchor points of P i ′. The circle is only one implementation option of a bounded area that represents a size and an orientation of a known predefined object. Apart from the circle, other realizations of the bounded area used for C i  include a rectangle, a triangle, a quadrilateral, a polygon, etc. 
     In the step S2.3, all the N′ candidate patterns are first arranged in the ascending order of S i . Then the arranged sequence of N′ candidate patterns are one-by-one processed by the steps S2.4.1 (including S2.4.1.1 and S2.4.1.2) and S2.4.2 (including S2.4.2.1). 
     An advantage of the above-listed procedure is that it ensures a maximum number of non-overlapped patterns to be identified.  FIG. 4  depicts the creation of point sets (shown as circles) after the step S2.1 (including the step S2.1.1) is performed. Note that overlapping of the circles is present.  FIG. 5  depicts a plurality of identified patterns after the step S2 is completed, showing that any overlapped circle is removed. 
     In the step S3, it is to validate and update the geometry of each identified pattern. Exemplarily, the step S3 is illustrated by the following pseudo codes.
         S3.1. For every identified pattern P i , do:
           S3.1.1. for every touch point that has been assigned to P i , do:
               S3.1.1.1. if the touch point under consideration does not exist or is not enclosed by C i , then:
                   S3.1.1.1.1. remove the touch point under consideration from P i ;   
                   
               
           S3.2. For every identified pattern P i , do:
           S3.2.1. if none or only 1 touch point of {a i , a 2 , a 3 } i  exists, then:
               S3.2.1.1. discard P i ;   
               S3.2.2. otherwise
               S3.2.2.1. if only 2 of {a 1 , a 2 , a 3 } i  exist, then:
                   S3.2.2.1.1. predict the position of the missed anchor point with the existing 2 anchor points;   
                   S3.2.2.2. if Δ a 1i a 2i a 3i    Δ A 1 A 2 A 3 , then:
                   S3.2.2.2.1. discard P i ;   
                   S3.2.2.3. otherwise
                   S3.2.2.3.1. update {x, y, θ} i  and C i .   
                   
               
               

     In the step S3.1.1.1, that “the touch point under consideration does not exist” means that this touch point as assigned to P i  is not found from the currently-considered M detected touch points (detected by the screen). 
     In the step S3.2.2.2, “ ” means “not congruent to”. 
     The above-listed procedure results in eliminating any identified pattern that fails to have enough anchor points to determine its represented object&#39;s geometry, or that is found to be a false positive result created in the step S2. 
     In the step S4, it is to update the attributes of identified patterns survived in the step S3. Exemplarily, the step S4 is illustrated by the following pseudo codes.
         S4.1. For every detected touch point p k  that has not been assigned to any pattern, do:
           S4.1.1. if p k  is enclosed by any C i , then:
               S4.1.1.1. assign p k  to P i ;   
               S4.1.2. if P i  is missing with 1 anchor point and A {p k , a mi , a ni }≅Δ A 1 A 2 A 3 , then:
               S4.1.2.1. set p k  as the missed anchor point;   
               S4.1.3. otherwise
               S4.1.3.1. set p k  as an information point of P i ;   
               
           S4.2. For every identified pattern P i , do:
           S4.2.1. update its attributes (e.g., ID) according to its information points.   
               

     The attributes of a pattern can be used to identify which physical object is placed on the screen, and different user interface (UI) response can be provided. 
     At the completion of the step S4.1, the set of identified patterns has been updated. 
     In the step S5, it is to forecast the geometry of patterns, and display the object. For the sake of convenience and without loss of generality, consider that the current time instant is zero. Let previous time instants be ΔT −1 , ΔT −2 , etc. Exemplarily, the step S5 is illustrated by the following pseudo codes.
         S5.1. For every identified pattern P i , do:
           S5.1.1. find the time series of P i , and the corresponding geometries {x, y, θ} i   T , where T={ΔT −t+1 , ΔT −t+2 , . . . , ΔT −1 , 0} and t is the maximum sample size of the time series.   S5.1.2. perform a polynomial-based linear regression analysis with T as a predictor and {x, y, θ} i   T  as a response, i.e. {x, y, θ} i   T ={right arrow over (β)}T+{right arrow over (ε)};   S5.1.3. estimate {x, y, θ} i   ΔT     j   , where ΔT 1  is a future time instant;   S5.1.4. display, on the touchscreen, a visual notification of object O i  with the geometry {x, y, θ} i   ΔT     j   .   
               

     In the step S5.1.2, it is possible that other linear-regression techniques may be used. 
     Displaying the object with a predicted future geometry is capable of compensating for the latency of the touchscreen, thus creating a more responsive output.  FIG. 6  provides an example for pictorially illustrating the above-mentioned procedure. 
     An aspect of the present disclosure is to provide a method for distinguishing and tracking multiple objects placed on a capacitive touchscreen. The method is a generalization of the above-described algorithm. An individual object is configured to generate imitated touches on the touchscreen, and the touchscreen is configured to sense the imitated touches. Respective locations and orientations of the objects on the touchscreen are determined. Furthermore, the objects are tracked such that future location and orientation of the individual object are predicted. The predicted location and orientation are useful for practical applications in which, e.g., an on-screen icon following the individual object is intended to be displayed in advance through some visual animation. 
     Exemplarily, the method is illustrated with the aid of  FIG. 7 .  FIG. 7  depicts a flow of exemplary processing steps as used in the disclosed method. 
     In a step  710 , touch points made at a time instant on the touchscreen by the objects are identified and located. For convenience and without loss of generality, this time instant is referred to as a present time instant. 
     Candidate patterns are then identified in a step  720 . In particular, the candidate patterns are created and determined from locations of the touch points identified in the step  710 . An individual candidate pattern includes three of the touch points forming a triangle congruent to a fingerprint triangle associated with a known predefined object in a set of predefined objects. The aforesaid three of the touch points are regarded as three anchor points of the individual candidate pattern. The step  720  is realizable by the step S1 of the algorithm. 
     After the candidate patterns are determined, a set of identified patterns is updated in a step  730  according to the candidate patterns and the locations of the touch points identified in the step  710 . An individual identified pattern is used for indicating a detected object on the touchscreen and is assigned with plural touch points generated by the detected object. The touch points assigned to the individual identified pattern include three anchor points for identifying the detected object. 
     Particularly, the set of identified patterns is updated by an updating process. The updating process is at least arranged to incorporate a subset of the candidate patterns into the set of identified patterns (step  731 ), and to purge the set of identified patterns of any identified pattern that is invalid (step  732 ). The selection of the subset of the candidate patterns is made such that in the subset, each anchor point belongs to one and only one candidate pattern for avoiding a single anchor point from being shared, or used, by plural candidate patterns. An invalid identified pattern is defined to have no more than one anchor point coinciding with any of the touch points identified in the step  710 . The step  730  is realizable by the steps S2 and S3 of the algorithm, and optionally by the step S4 thereof. 
     The rationale of defining the invalid identified pattern by the aforementioned criterion is as follows. If no anchor point assigned to the individual identified pattern coincides with any detected touch point identified in the step  710 , it is almost sure that the object associated with the individual identified pattern has been moved away from its previously detected position. If there is only one such anchor point, it is also likely that the object has been moved away from the previously detected position. However, if there are two assigned anchor points coinciding with some detected touch points identified in the step  710 , it is likely that the remaining assigned anchor point is not successfully detected so that the object is not actually moved away. If the object has been moved away from its previously recorded position, the individual identified pattern associated with the object is outdated, and should be removed from the set of identified patterns. Conversely, if the object is still intact on the previously recorded position, the individual identified pattern is still informative and can be retained in the set of identified patterns. 
     In a step  750 , the steps  710 ,  720  and  730  are repeated for a next time instant. In executing the step  720  for the next time instant, it is highly preferable that any touch point identified in the step  710  and coinciding with any assigned touch point in the set of identified patterns determined for the present time instant is excluded from consideration in finding out the candidate patterns. Advantageously, it results in a reduction of required computation and storage when compared to execution of the step  720  without a knowledge of the set of identified patterns. The exclusion of the touch points already assigned to any identified pattern is also implemented in the step S1.1 of the algorithm. 
     The significance and advantage of this reduction in computation and storage is further elaborated as follows. It is first noticed that each object placed on the touchscreen has three anchor points and possibly one or more information points. Furthermore, multiple objects are placed on the touchscreen. A large number of touch points may be detected in the step  710 . As it is required to check each triangle formed by three of the detected touch points, the number of triangles to be tested is huge. For illustration, consider an example scenario that each object generates 4 touch points. If there are two objects on the touchscreen, the number of triangles to be tested is given by 8!/(5!×3!)=56. Similarly, if there are three and four objects on the touchscreen, the numbers of triangles to be tested are 12!/(9!×3!)=220 and 16!/(13!×3!)=560, respectively. The increase in the number of triangles to be tested increases sharply and nearly-exponentially as the number of objects placed on the touchscreen increases. It severely burdens the computing device, such as a tablet computer, that performs the computation to distinguish different objects. If, on the other hand, already-assigned touch points are excluded from consideration in finding out the candidate patterns, a significant reduction in computation results. Consider a typical example that only one of the objects placed on the touchscreen is moved between successive time instants of touch sensing. The number of triangles to be tested is only 4!/(1!×3!)=4 regardless of the number of objects placed on the touchscreen. The significant reduction in required computation and storage enables distinguishing and tracking multiple objects on the touchscreen to be practically implementable on typical computing devices. 
     The updating process as used in the step  730  is further illustrated as follows with the aid of  FIG. 8 .  FIG. 8  depicts a flowchart showing exemplary steps taken by the updating process in updating the set of identified patterns. 
     In a step  810 , a point set of the individual candidate pattern based on locations of the three anchor points of the individual candidate pattern is created. The point set is a bounded area representing a size and an orientation of the known predefined object. The step  810  is realizable by the step S2.1 of the algorithm. 
     The bounded area may be shaped according to the shape of the known predefined object. For example, the bounded area may be shaped as a circle, a rectangle, a triangle, a quadrilateral, a polygon, etc. Conveniently, the bounded area is preferably set as a circle because only two parameters, i.e. center and radius of the circle, are required to specify the circle. Since the three anchor-point locations and the boundary of the known predefined object are known, generally the center and radius of the circle can be easily determined. Those skilled in the art may also design each object in the set of predefined objects with a constraint between the center of the object and the set of three anchor points. One example of the constraint is that the center of the object coincides with a centroid of the fingerprint triangle formed by the three anchor points. Another example is that the center of the object coincides with a mid-point of the longest side of the fingerprint triangle. 
     In a step  820 , the subset of the candidate patterns is selected by a selecting process. The steps are realizable by the steps S2.2-S2.4 of the algorithm.  FIG. 9  depicts exemplary steps of the selecting process. In the selecting process, the subset is gradually added up with acceptable candidate patterns by one-by-one examining the candidate patterns. Initially, the subset is initialized to be a null set, i.e. an empty set (step  910 ). The candidate patterns are sequentially examined one by one to determine whether a candidate pattern under examination is invalid, whereby the candidate pattern under examination, if found to be not invalid, is included into the subset (step  915 ). An invalid candidate pattern is defined such that any anchor point of the invalid candidate pattern is shared, or is already used, by any identified pattern in the set of identified patterns or by any candidate pattern already included in the subset. The rationale behind such definition is that valid candidate patterns are to be included into the set of identified patterns, and different identified patterns are non-overlapping. 
     The step  915  may be implemented as follows. The candidate patterns are first arranged in an ascending order of degrees of pattern overlapping (step  920 ). A respective degree of pattern overlapping of the individual candidate pattern is computed by summing three numbers. Each of these three numbers is given by a total number of respective point sets that an individual anchor point of the individual candidate pattern is enclosed by. The candidate patterns are one-by-one examined in the aforementioned ascending order. If the candidate pattern under examination is not invalid (step  930 ), the candidate pattern under examination is added to the subset (step  935 ) such that the subset is expanded. In case the candidate pattern under examination is found to be invalid (the step  930 ), this candidate pattern is discarded (step  936 ) and is not added into the subset. The step  930  and the conditional steps  935 ,  936  are repeated until all the candidate patterns are examined (step  940 ). The step  920  is realizable by the steps 2.2 and 2.3 of the algorithm. The steps  935  and  936  are realizable by the steps 2.4.1 and 2.4.2, respectively, of the algorithm. As mentioned above, sorting of the candidate patterns by the step  920  has an advantage of ensuring that a maximum number of non-overlapped patterns is identified. 
     After the subset of the candidate patterns is obtained in the step  820 , the subset of the candidate patterns is incorporated into the set of identified patterns in a step  825 . 
     In a step  830 , each of the touch points assigned to the individual identified pattern is validated by verifying if a touch point under consideration is one of the touch points identified in the step  710  and is enclosed by the point set of the individual identified pattern. The touch point under consideration is valid if it coincides with one touch point identified in the step  710  and is also enclosed by the point set. If the touch point under consideration is found to be invalid, this touch point is removed from the individual identified pattern. The step  830  is realizable by the step S3.1 of the algorithm. 
     In a step  832 , it is to find out any identified pattern in the set of identified patterns to be invalid. As mentioned above, an invalid identified pattern has none or only one assigned anchor point that coincides with the touch points identified in the step  710 . Based on findings of the step  832 , any invalid identified pattern in the set of identified patterns is removed so as to purge the set of identified patterns in a step  835 . The steps  832  and  835  are collectively realizable by the step S3.2.1 (including S3.2.1.1) of the algorithm. 
     The step  731  of incorporating the subset of the candidate patterns into the set of identified patterns includes the steps  820  and  825 . The step  732  of purging the set of identified patterns of any invalid identified pattern includes the steps  830 ,  832  and  835 . Although it is shown in  FIG. 8  for illustrative purpose that the step  731  precedes the step  732  in execution order, other execution orders may be used since identified patterns newly introduced into the set of identified patterns in executing the step  731  are already valid while the step  732  is intended to remove invalid identified patterns only. It follows that the step  732  may precede the step  731  in execution. 
     Preferably the updating process further comprises a step  850  of finding out and repairing any incomplete identified candidate in the set of identified patterns. An incomplete identified pattern is defined to have only two anchor points coinciding with the touch points identified in the step  710 . Note that the incomplete identified pattern has a missing anchor point. When the individual identified pattern is found to be incomplete, it is repaired by estimating a location of the missing anchor point from the two coinciding anchor points, viz, the aforementioned two anchor points of the individual identified pattern coinciding with the touch points identified in the step  710 . The individual identified pattern after repairing is re-assigned with three anchor points. The step  850  is realizable by the step S3.2.2.1 of the algorithm. 
     It is preferable that the updating process further comprises a step  860  of computing or updating a geometry of the individual identified pattern in the set of identified patterns. The step  860  is executed after the steps  731  and  732  are performed. The geometry is computed or updated according to locations of the three anchor points of the individual identified pattern. As mentioned above, the geometry of the individual identified pattern comprises a reference point of the individual identified pattern on the touchscreen and an orientation of the individual identified pattern with respect to the touchscreen. The step  860  is realizable by the step S3.2.2.3.1 of the algorithm. 
     After the steps  731  and  732  are performed, it is preferable to allocate remaining touch points identified in the step  710  and not assigned as anchor points in the set of identified patterns to different identified patterns as information points according to respective point sets of the different identified patterns and locations of the remaining touch points (step  870 ). The step  870  is realizable by the step S4.1 of the algorithm. 
     After the remaining touch points are allocated in the step  870 , it is preferable to update attributes of the individual identified pattern according to data received through any information point allocated to the individual identified pattern (step  875 ). An individual attribute may be any type of information conveyed from the one or more allocated information points. The step  875  is realizable by the step S4.2 of the algorithm. 
     Refer to  FIG. 7 . Optionally, a trajectory of the individual identified pattern is forecasted in a step  740  such that respective trajectories of on-screen icons tracking the objects are displayable on the touchscreen in advance for compensating for latency of the touchscreen. The step  740  is realizable by the step S5 of the algorithm. In the step  750 , the step  740  is also repeated for the next time instant. 
       FIG. 10  depicts exemplary steps for realizing the step  740 . In forecasting the trajectory by the step  740 , a time series of respective geometries of the individual identified pattern is obtained over a plurality of different time instants (step  1010 ). The plurality of different time instants includes the present time instant. A linear regression technique is used to estimate a future geometry of the individual identified pattern based on the time series of respective geometries of the individual identified pattern (step  1020 ). By estimating the future geometry, the trajectory of the individual identified pattern is forecasted. The linear regression technique may be a polynomial-based linear regression technique. 
     The disclosed method is implementable on a computer system that includes the touchscreen. In some embodiments of the present disclosure, the computer system is realized as a single computing device. In certain practical applications, the computing device is implemented as a mobile computing device such as a tablet computer.  FIG. 11  depicts an apparatus  1100  used for implementing the disclosed method. The apparatus  1100  comprises a touchscreen  1110  and one or more processors  1120 . The touchscreen  1110  is controllable by the one or more processors  1120 . It follows that the one or more processors  1120  are operable to configure the touchscreen  1110  to sense touches made by the objects, and to identify and locate the objects in accomplishing the step  710  of the disclosed method. In addition, the one or more processors  1120  are configured to execute a process for distinguishing and tracking multiple objects placed on the touchscreen  1110  according to any of the embodiments of the disclosed method. 
     The one or more processors  1120  may be, or may include, a touchscreen processor, which is a processor integrated into the touchscreen  1110 . An individual processor may be realized by a microcontroller, a general-purpose processor, or a special-purpose processor such as an application specific integrated circuit (ASIC) or a digital signal processor (DSP), or by reconfigurable logics such as a field programmable gate array (FPGA). 
     Each of the embodiments of the disclosed method may be implemented in the apparatus  1100  by programming the one or more processors  1120 . A program that results causes the one or more processor  1120  to execute the aforementioned process for distinguishing and tracking the multiple objects. The program may be stored in a non-transitory computer readable medium, such as an optical disk. 
     The present invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The present embodiment is therefore to be considered in all respects as illustrative and not restrictive. The scope of the invention is indicated by the appended claims rather than by the foregoing description, and all changes that come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein.