Abstract:
A method, system or computer usable program product for authenticating a fingerprint by aggregating samples on a digital touch screen including capturing multiple data samples of a finger swipe across the touch screen, wherein the touch screen is used both for fingerprint recognition and manipulation of a user interface; utilizing a processor to aggregate the multiple data samples to form a combined sample fingerprint of the finger; and responsive to detecting the combined sample fingerprint matching a predetermined allowed fingerprint, providing a signal indicating the fingerprint is authentic.

Description:
BACKGROUND 
       [0001]    1. Technical Field 
         [0002]    The present invention relates generally to utilizing a touch screen as a biometric device, and in particular, to a computer implemented method for authenticating a fingerprint by aggregating samples with a touch screen. 
         [0003]    2. Description of Related Art 
         [0004]    Biometrics refers to the field of technology where an individual is identified using biological traits. Biometrics has been utilized to verify or otherwise authenticate the identity of a user for security purposes such as for controlling access to devices or information. Many types of biometrics may be utilized such as facial recognition, voice recognition, retinal and iris recognition, and fingerprints. 
         [0005]    The identification of an individual by fingerprints, known as dactyloscopy, dates back as far as the Babylonians, but did not become commonplace until the 20 th  century. The use of digital fingerprints to identify an individual by a computer or other computing device is much more recent, and is a growing field of technology. However, there are many barriers to the acceptability of this technology including speed, accuracy and cost. 
       SUMMARY 
       [0006]    The illustrative embodiments provide a method, system, and computer usable program product for authenticating a fingerprint by aggregating samples on a digital touch screen including capturing multiple data samples of a finger swipe across the touch screen, wherein the touch screen is used both for fingerprint recognition and manipulation of a user interface; utilizing a processor to aggregate the multiple data samples to form a combined sample fingerprint of the finger; and responsive to detecting the combined sample fingerprint matching a predetermined allowed fingerprint, providing a signal indicating the fingerprint is authentic. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         [0007]    The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, further objectives and advantages thereof, as well as a preferred mode of use, will best be understood by reference to the following detailed description of illustrative embodiments when read in conjunction with the accompanying drawings, wherein: 
           [0008]      FIG. 1  is a block diagram of a data processing system in which various embodiments may be implemented; 
           [0009]      FIG. 2  is a block diagram of a network of data processing systems in which various embodiments may be implemented; 
           [0010]      FIGS. 3A and 3B  are diagrams of a user swiping a fingerprint across a touch sensitive display in which various embodiments may be implemented; 
           [0011]      FIG. 3C  is a diagram of a fingerprint being detected by an array of sensors embedded in a touch sensitive display in which various embodiments may be implemented; 
           [0012]      FIG. 3D  is a diagram of a combination of the sensor readings of  FIG. 3C  at times T1 and T2 in which various embodiments may be implemented; 
           [0013]      FIG. 4  is a diagram of a user interface for instructing a user to swipe their fingerprint in which various embodiments may be implemented; 
           [0014]      FIG. 5  is a flow diagram of the process for determining the fingerprints of a user in accordance with a first embodiment; 
           [0015]      FIG. 6  is a flow diagram of a process for converting, interpolating and aggregating fingerprint sample data in which various embodiments may be implemented; and 
           [0016]      FIG. 7  is a flow diagram the process for determining the fingerprints of a user in accordance with a second embodiment. 
       
    
    
     DETAILED DESCRIPTION 
       [0017]    Processes and devices may be implemented and utilized to detect biometrics using a touch screen. These processes and apparatuses may be implemented and utilized as will be explained with reference to the various embodiments below. 
         [0018]      FIG. 1  is a block diagram of a data processing system in which various embodiments may be implemented. Data processing system  100  is one example of a suitable data processing system and is not intended to suggest any limitation as to the scope of use or functionality of the embodiments described herein. Regardless, data processing system  100  is capable of being implemented and/or performing any of the functionality set forth herein. 
         [0019]    In data processing system  100  there is a computer system/server  112 , which is operational with numerous other general purpose or special purpose computing system environments, peripherals, or configurations. Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with computer system/server  112  include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices, and the like. 
         [0020]    Computer system/server  112  may be described in the general context of computer system-executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, and so on that perform particular tasks or implement particular abstract data types. Computer system/server  112  may be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer system storage media including memory storage devices. 
         [0021]    As shown in  FIG. 1 , computer system/server  112  in data processing system  100  is shown in the form of a general-purpose computing device. The components of computer system/server  112  may include, but are not limited to, one or more processors or processing units  116 , a system memory  128 , and a bus  118  that couples various system components including system memory  128  to processor  116 . 
         [0022]    Bus  118  represents one or more of any of several types of bus structures, which may be intra-chip or inter-chip, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) bus. 
         [0023]    Computer system/server  112  typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server  112 , and it includes both volatile and non-volatile media, removable and non-removable media. 
         [0024]    System memory  128  can include computer system readable media in the form of volatile memory, such as random access memory (RAM)  130  and/or cache memory  132 . Computer system/server  112  may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example, storage system  134  can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a “hard drive”). Although not shown, a USB or other interface or other type of architecture for reading from and writing to a removable, non-volatile magnetic chip (e.g., a “flash drive”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to bus  118  by one or more data media interfaces. Memory  128  may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of the embodiments. Memory  128  may also include data that will be processed by a program product. 
         [0025]    Program/utility  140 , having a set (at least one) of program modules  142 , may be in software, firmware or hardware, may be stored in memory  128  by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. Program modules  142  generally carry out the functions and/or methodologies of the embodiments. For example, a program module may be software for utilizing a touch screen as a biometric device. 
         [0026]    Computer system/server  112  may also communicate with one or more external devices  114  such as a keyboard, a pointing device, a display  124 , etc.; one or more devices that enable a user to interact with computer system/server  112 ; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server  112  to communicate with one or more other computing devices. Such communication can occur via I/O interfaces  122  through wired connections or wireless connections. Still yet, computer system/server  112  can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter  120 . As depicted, network adapter  120  communicates with the other components of computer system/server  112  via bus  118 . It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server  112 . Examples, include, but are not limited to: microcode, device drivers, tape drives, RAID systems, redundant processing units, data archival storage systems, external disk drive arrays, etc. 
         [0027]      FIG. 2  is a block diagram of a network of data processing systems in which various embodiments may be implemented. Data processing environment  200  is a network of data processing systems such as described above with reference to  FIG. 1 . Software applications may execute on any computer or other type of data processing system in data processing environment  200 . Data processing environment  200  includes network  210 . Network  210  is the medium used to provide simplex, half duplex and/or full duplex communications links between various devices and computers connected together within data processing environment  200 . Network  210  may include connections such as wire, wireless communication links, or fiber optic cables. 
         [0028]    Server  220  and client  240  are coupled to network  210  along with storage unit  230 . In addition, laptop  250  and facility  280  (such as a home or business) are coupled to network  210  including wirelessly such as through a network router  253 . A mobile phone  260  may be coupled to network  210  through a mobile phone tower  262 . Data processing systems, such as server  220 , client  240 , laptop  250 , mobile phone  260  and facility  280  contain data and have software applications including software tools executing thereon. Other types of data processing systems such as personal digital assistants (PDAs), smartphones, tablets and netbooks may be coupled to network  210 . 
         [0029]    Server  220  may include software application  224  and data  226  for utilizing a touch screen as a biometric device or other software applications and data in accordance with embodiments described herein. Storage  230  may contain software application  234  and a content source such as data  236  for utilizing a touch screen as a biometric device. Other software and content may be stored on storage  230  for sharing among various computer or other data processing devices. Client  240  may include software application  244  and data  246 . Laptop  250  and mobile phone  260  may also include software applications  254  and  264  and data  256  and  266 . Facility  280  may include software applications  284  and data  286 . Other types of data processing systems coupled to network  210  may also include software applications. Software applications could include a web browser, email, general authentication daemon, operating system, or other software application for utilizing a touch screen as a biometric device. 
         [0030]    Server  220 , storage unit  230 , client  240 , laptop  250 , mobile phone  260 , and facility  280  and other data processing devices may couple to network  210  using wired connections, wireless communication protocols, or other suitable data connectivity. Client  240  may be, for example, a personal computer or a network computer. 
         [0031]    In the depicted example, server  220  may provide data, such as boot files, operating system images, and applications to client  240  and laptop  250 . Server  220  may be a single computer system or a set of multiple computer systems working together to provide services in a client server environment. Client  240  and laptop  250  may be clients to server  220  in this example. Client  240 , laptop  250 , mobile phone  260  and facility  280  or some combination thereof, may include their own data, boot files, operating system images, and applications. Data processing environment  200  may include additional servers, clients, and other devices that are not shown. 
         [0032]    In the depicted example, data processing environment  200  may be the Internet. Network  210  may represent a collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) and other protocols to communicate with one another. At the heart of the Internet is a backbone of data communication links between major nodes or host computers, including thousands of commercial, governmental, educational, and other computer systems that route data and messages. Of course, data processing environment  200  also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN).  FIG. 2  is intended as an example, and not as an architectural limitation for the different illustrative embodiments. 
         [0033]    Among other uses, data processing environment  200  may be used for implementing a client server environment in which the embodiments may be implemented. A client server environment enables software applications and data to be distributed across a network such that an application functions by using the interactivity between a client data processing system and a server data processing system. Data processing environment  200  may also employ a service oriented architecture where interoperable software components distributed across a network may be packaged together as coherent business applications. 
         [0034]      FIGS. 3A and 3B  are diagrams of a user swiping a fingerprint across a touch sensitive display in which various embodiments may be implemented. A user uses his or her hand  300  to swipe an index fingertip  305  horizontally across a touch sensitive display  310  from left to right. The touch sensitive display may also be referred to herein as a touch screen or digital touch screen. Display  310  then utilizes an array of sensors (i.e. a sensor grid) embedded in the display to detect the fingerprint of the user based on this act of swiping as explained further below. Display  310  may be a touch sensitive display of a laptop, tablet, smartphone, or other device including a standalone touch sensitive display coupled to a processing unit. The touch sensitive display may be a self-capacitive or other type of touch sensitive display with an array of sensors for detecting the location of a touch across multiple sensors. The touch sensitive display may generate a set of values relating to the amount of skin in direct contact with the display such as a set of values of detected capacitance by the sensor grid. Display  310  is shown in a landscape mode, but may be positioned in a portrait mode. The fingertip swipe is shown to be horizontal from left to right, but may be vertical, at an angle, or from right to left depending on the configuration of the system. The right hand fingertip is used in this example, but alternative fingertips may be used of either hand as well as other portions of the fingers or hands. 
         [0035]      FIG. 3C  is a diagram of a fingerprint being detected by an array of sensors embedded in a touch sensitive display in which various embodiments may be implemented. The touch sensitive display may be a capacitive or other type of touch sensitive display with an array of sensor for detecting the location of a touch. In the first part of  FIG. 3C , fingerprint  320  touches a five by four (rows and columns) set of sensors  330  at time T1. The center of fingerprint  320  is centroid  321 . Each of the sensors detecting fingerprint  320  includes a value relating to the amount of capacitance detected. For example, sensor  332  may detect about half of the capacitance of sensor  333 . However, sensor  333  may detect more or less capacitance than sensor  334  because of the number of ridges or valleys or the width thereof that are in contact or not with each sensor. Also in  FIG. 3C , fingerprint  320  touches a five by five set of sensors  335  at time T2. The center of fingerprint  320  at time T2 is centroid  322 . Each of the sensors detecting fingerprint  320  includes a value relating to the amount of capacitance detected. 
         [0036]      FIG. 3D  is a diagram of a combination of the sensor readings of  FIG. 3C  at times T1 and T2 in which various embodiments may be implemented. The overlap of the two illustrations is based on centroid  341  of fingerprint  340 , which was derived from centroids  321  and  322  of fingerprint  320 . The values of sensors  330  and  335  may be combined into the various values of  350  by addition, subtraction, or other more complex statistical operations as more samples are combined. With a sufficient number of appropriate samples, the fingerprint of the user can be resolved as described below. The number of actual sensors utilized may be more or less than shown in  FIGS. 3C and 3D . As the user swipes a fingertip across a touch sensitive display, hundreds of samples may be taken during the swipe process and compared or otherwise statistically processed as described below for the purpose of determining the user&#39;s fingerprint with the touch display. 
         [0037]    Where one or more horizontal swipes are effective for resolving the vertical ridges of a fingerprint, it is much less effective for resolving the horizontal ridges of a fingerprint. As a result, one or more vertical swipes may also be utilized for fully resolving the fingerprints of a fingertip. Alternatively, angular swipes not horizontal or vertical may also be utilized so long as there is sufficient scan in both dimensions to fully document the geometry of the fingerprint. 
         [0038]      FIG. 4  is a diagram of a user interface  400  for instructing a user to swipe their fingertip in which various embodiments may be implemented. A touch sensitive display  410  shows a horizontal swipe line  420  and a vertical swipe line  425 . The user is expected to place his or her fingertip on a moving region  430  and proceed in direction of arrow  435  at a constant velocity. The velocity or speed of the swipe should match the speed of region  430  along either the horizontal or vertical swipe lines. The pressure of the swipe should be increased or decreased in accordance with the pressure indicators  438 . The user may be instructed to swipe his or her fingerprint several times in either the horizontal or vertical direction. This allows sufficient samples to statistically determine the fingerprint of the user&#39;s fingertip. A percentage of completion of the swiping process may be shown in bar  440 , thereby providing feedback to the user of the continued success of the swiping process. The percentage of completion may be based on a measure of dispersion such as a confidence interval for the results of the fingerprint samples. 
         [0039]    Three different coordinate systems can be utilized with various embodiments. A first coordinate system is a device resolution absolute coordinate system. That is, the array of sensors utilized in the touch screen for sensing the touch of a user. If the touch screen has an array with 450 rows of sensors and 800 columns on sensors, then there would be a total of 34000 sensors in an X-Y coordinate system with the bottom left sensor set as (0,0) and the upper right sensor set as (450,800). Alternative embodiments may utilize the upper right sensor as the (0,0) sensor as well as other configurations. 
         [0040]    A second coordinate system is a device resolution local coordinate system. This coordinate system has the same resolution as the device absolute local coordinate system, but with the centroid of the detected fingerprint set as (0,0). For example, if the centroid is located at (200, 300) of the device absolute coordinate system, then point (400, 425) of the device absolute coordinate system would be point (200, 125) of the device resolution local coordinate system. For ease of reference, the first coordinate system can be referred to with points (X1, Y1) and the second coordinate system can be referred to with points (X2, Y2). 
         [0041]    A third coordinate system is the interpolated high resolution coordinate system. This is a much higher resolution coordinate system and is utilized for identifying the ridges and valleys of the user&#39;s fingerprints. As a result, this coordinate system needs to be at a resolution sufficient to perform that identification. The centroid of a fingerprint is set to (0,0) in the third coordinate system. For ease of reference, a point in the third coordinate system can be referred to as (X3, Y3). The resolution difference between the third and the other coordinate systems is represented as α. For example, if α=square root of 2, then the third coordinate system will have twice the resolution of the first and second coordinate systems (i.e. square root of 2 increase in resolution in the x direction and square root of 2 increase of resolution in the y direction). If α=2, the overall resolution would increase by a factor of 4 since the α value is applied in each direction. Both the second and third coordinate systems would have a common (0,0) center point with the second coordinate system. The sample data may be converted directly from the first coordinate system to the third coordinate system in a single step, thereby speeding up the conversion process. 
         [0042]    Some of the mathematics which can be utilized with these coordinate systems is as follows. Let C a  represent the rectangular region bounding the area of non-nominal (e.g. non-zero) capacitance stored in a T×U matrix at time a. For example,  FIG. 3C  illustrates a 5×4 matrix at time T1 and a 5×5 matrix at time T2. Let cent a  represent the centroid location of C a  in the device absolute coordinate system. Let C a-1  represent the rectangular region bounding the area of non-nominal (e.g. non-zero) capacitance stored at time a−1 with centroid cent a-1 , also in the device absolute coordinate system. Let D a  represent the vector difference between cent a  and cent a-1 . 
         [0043]    A function, T, converts from C a  to C fa : 
         [0000]    
       
         
           
             
               
                 T 
                  
                 
                   ( 
                   
                     C 
                     n 
                   
                   ) 
                 
               
               
                 x 
                 , 
                 y 
               
             
             = 
             
               { 
               
                 
                   
                     
                       
                         
                           
                             a 
                              
                             
                               ( 
                               x 
                               ) 
                             
                           
                           , 
                           
                             
                               
                                 
                                   a 
                                   ′ 
                                 
                                  
                                 
                                   ( 
                                   y 
                                   ) 
                                 
                               
                               ≥ 
                               0 
                             
                              
                             
                               
                                 a 
                                  
                                 
                                   ( 
                                   x 
                                   ) 
                                 
                               
                               &lt; 
                               t 
                             
                              
                             
                               
                                 
                                   a 
                                   ′ 
                                 
                                  
                                 
                                   ( 
                                   y 
                                   ) 
                                 
                               
                               &lt; 
                               
                                 u 
                                 : 
                                 
                                   C 
                                   
                                     n 
                                     
                                       
                                         a 
                                          
                                         
                                           ( 
                                           x 
                                           ) 
                                         
                                       
                                        
                                       
                                         
                                           a 
                                           ′ 
                                         
                                          
                                         
                                           ( 
                                           y 
                                           ) 
                                         
                                       
                                     
                                   
                                 
                               
                             
                           
                         
                       
                     
                     
                       
                         
                           
                             a 
                              
                             
                               ( 
                               x 
                               ) 
                             
                           
                           , 
                           
                             
                               
                                 
                                   a 
                                   ′ 
                                 
                                  
                                 
                                   ( 
                                   y 
                                   ) 
                                 
                               
                               &lt; 
                               0 
                             
                              
                             
                               
                                 a 
                                  
                                 
                                   ( 
                                   x 
                                   ) 
                                 
                               
                               ≥ 
                               t 
                             
                              
                             
                               
                                 
                                   a 
                                   ′ 
                                 
                                  
                                 
                                   ( 
                                   y 
                                   ) 
                                 
                               
                               ≥ 
                               
                                 u 
                                 : 
                                 0 
                               
                             
                           
                         
                       
                     
                   
                    
                   
                     
 
                   
                    
                   where 
                    
                   
                     
 
                   
                    
                   
                     a 
                      
                     
                       ( 
                       x 
                       ) 
                     
                   
                 
                 = 
                 
                   
                     
                       ⌊ 
                       
                         
                           x 
                           - 
                           
                             ( 
                             
                               
                                 D 
                                 x 
                               
                               - 
                               
                                 L 
                                 x 
                               
                             
                             ) 
                           
                         
                         α 
                       
                       ⌋ 
                     
                      
                     
                       
 
                     
                      
                     
                       
                         a 
                         ′ 
                       
                        
                       
                         ( 
                         y 
                         ) 
                       
                     
                   
                   = 
                   
                     ⌊ 
                     
                       
                         y 
                         - 
                         
                           ( 
                           
                             
                               D 
                               y 
                             
                             - 
                             
                               L 
                               y 
                             
                           
                           ) 
                         
                       
                       α 
                     
                     ⌋ 
                   
                 
               
             
           
         
       
     
         [0000]    This provides for a direct conversion from a device resolution absolute coordinate system to a high resolution coordinate system prior to interpolation. 
         [0044]    To generate a mean one sample at a time from converted and interpolated samples, let C fa  be a high resolution matrix of size α*T×α*U with C f0  having an initial value: 
         [0000]    
       
         
           
             
               C 
               fa 
             
             = 
             
               
                 
                   
                     
                       ( 
                       
                         n 
                         - 
                         1 
                       
                       ) 
                     
                      
                     
                       
                         ∑ 
                         
                           i 
                           = 
                           1 
                         
                         
                           n 
                           - 
                           1 
                         
                       
                        
                       
                           
                       
                        
                       
                         C 
                         fi 
                       
                     
                   
                   
                     ( 
                     
                       n 
                       - 
                       1 
                     
                     ) 
                   
                 
                 + 
                 
                   C 
                   fa 
                 
               
               n 
             
           
         
       
     
         [0000]    which reduces further to: 
         [0000]    
       
         
           
             
               C 
               fa 
             
             = 
             
               
                 [ 
                 
                   
                     
                       ∑ 
                       
                         i 
                         = 
                         1 
                       
                       
                         n 
                         - 
                         1 
                       
                     
                      
                     
                         
                     
                      
                     
                       C 
                       fi 
                     
                   
                   + 
                   
                     C 
                     fa 
                   
                 
                 ] 
               
               + 
               n 
             
           
         
       
     
         [0000]    and finally to: 
         [0000]    
       
         
           
             
               C 
               fa 
             
             = 
             
               
                 
                   
                     ( 
                     
                       n 
                       - 
                       1 
                     
                     ) 
                   
                    
                   
                     C 
                     
                       fa 
                       - 
                       1 
                     
                   
                 
                 + 
                 
                   C 
                   fa 
                 
               
               n 
             
           
         
       
     
         [0045]    As each step of calculating the mean C bar, the underlying geometry gains additional resolution, and at each step, the weight of the new sample has a lower impact than the accumulated data, creating a realistic model of capacitance on a higher density sensor grid using a lower density grid that has a much lower cost. 
         [0046]      FIG. 5  is a flow diagram of the process for determining the fingerprints of a user in accordance with a first embodiment. This process can be implemented locally such as on a laptop or smartphone, or in a client server environment such as where a client system with a touch sensitive display communicates with a server for processing the results. A secure website across the internet may require fingerprint authorization to allow user access by requiring the user to swipe his or her finger across a local touch sensitive display for processing locally or by the website server. 
         [0047]    In a first step  500 , the user is instructed to swipe his or her fingertip across the touch screen. This instruction may be provided using the user interface illustrated in  FIG. 4  above. In a second step  505 , the system determines whether the user has initiated the swipe. If yes, then processing continues to step  510 , otherwise processing returns to step  505 . This can be detected by polling the touch screen sensors or utilizing an operating system callback to determine whether the user has touched the screen and has started moving the point of touch in the direction desired. 
         [0048]    In step  510 , a sample of the values of the non-nominal sensors is captured with a time stamp. This sample can be performed about 100 times a second, although fewer or more samples may be obtained so long as it is within the performance characteristics of the display. In step  515 , any sample values not contiguous to the majority of sample values are then removed or otherwise deleted as spurious signals in an initial filter or filtration step. The remaining sample values may be isolated and captured as a bounding box or matrix containing all the contiguous non-nominal values. The size of a sample bounding box may vary from sample to sample within a certain expected range. For example, the set of pixels represented by the bounding box should not be much larger than the size of a fingerprint. However, some perimeter non-nominal pixels may be excluded so long as it is balanced (not more on one side or the other) to keep from affecting the centroid to be calculated below. A check may also be performed to verify that the sample is close in location on the display to the previous sample, indicating a correct sample. The shape of the bounding box may also indicate if the user is tilting the finger improperly during the swipe. 
         [0049]    Then in step  520 , the centroid of the remaining captured sample values is calculated using a weighted average. That is, if the values to the right of the median center point have a heavier weight than the values to the left of the median center point, then the user&#39;s fingertip is more to right of the median center point and the centroid should reflect that. Concurrently, an average fingerprint pressure is also calculated. This average pressure can be determined by various techniques including the size of the fingerprint sample relative to other fingerprint samples. Alternatively, for a capacitive touch screen, the total capacitance over the captured sample area (i.e. the bounding box) may be compared to an expected range to determine whether too much or too little pressure was applied. 
         [0050]    Subsequently in step  522 , it is determined whether the latest finger swipe sample was too heavy, too light, tilted, too slow, too fast or otherwise improper creating an unacceptable sample. For example, the bounding box size may indicate the pressure was too heavy or too soft, the bounding box shape may indicate that the finger was improperly tilted during the swipe, the distance between samples may indicate that the velocity of the finger swipe was too fast or too slow, etc. The pressure, tilt or velocity can be determined by various techniques including the size, the shape, or the location of the fingerprint sample relative to other fingerprint samples. Alternatively, for a capacitive touch screen, the total capacitance over the captured sample area (i.e. the bounding box) may be compared to an expected range to determine whether too much or too little pressure was applied. If yes, then processing proceeds to step  530  to continue taking swipe samples (with an indicator of more or less pressure or other instructions such as described above with reference to  FIG. 4 ), otherwise processing continues to step  525 . 
         [0051]    Then in step  525 , the remaining non-nominal values, the time stamp, and the tentative centroid are saved to memory for processing as described below. Each time stamped sample is a matrix C a  at time a with centroid cent, from 1 to n where n is the number of samples taken during the swipe. By storing the unprocessed data, generally more samples can be taken more quickly without running into processing limitations. However, alternative embodiments may process each sample of data as described below before taking the next sample of the current finger swipe. Subsequently in step  530 , it is determined whether the user has stopped the finger swipe. If yes, then processing proceeds to step  540 , otherwise processing returns to step  510  for another sample of the touch screen sensors. This can be detected by determining whether any of the touch screen sensors is detecting a touch or whether the past two or more samples have essentially the same value, indicating the user has stopped moving his or her fingertip across the screen. The number of samples should correspond to the speed of the user&#39;s finger across the screen and the resolution of the third coordinate system in the direction of the finger swipe (e.g. square root of α) 
         [0052]    In step  540 , the time stamped samples are then processed in accordance with the formulas described above and as further described in  FIG. 6  below to generate a resolved fingerprint. In step  545 , it is determined whether sufficient data has been captured to resolve the fingerprint of the user. For example, there may be a minimum number of swipes before determining that there may be sufficient data to do a comparison of the resolved fingerprint to a set of fingerprints (one or more) to determine whether the resolved fingerprint is an authorized fingerprint. Alternatively, a measure of dispersion such as a confidence interval with a desired range or a desired standard deviation may be utilized to determine whether sufficient number of samples has been collected. If there is not sufficient data, then processing returns to step  500 , otherwise, processing continues to step  550 . 
         [0053]    In step  550 , the resolved digital fingerprint is then utilized as desired such as for security purposes. For example and as described with reference to this figure, the resolved digital fingerprint may be compared to a stored set of fingerprints (stored locally or remotely across a network) to determine whether the fingerprints are the same or different. This can result in one of several actions in step  555 . If the resolved fingerprint is similar enough to one of the stored fingerprints (success), then an authorization signal may be provided in step  560 . This signal may be a software instruction or an electronic signal which may be utilized by an operating system or application to notify the user and authorize the desired activity by the user. If the resolved fingerprint is sufficiently dissimilar from any of the stored set of fingerprints (failure), then a rejection signal may be provided in step  565 . This signal may be a software instruction or an electronic signal which may be utilized by an operating system or application to notify the user and prevent the desired activity by the user. A failure signal may also be sent after a certain number of swipes if success has not been achieved yet. Alternatively, if the resolved fingerprint is similar to one or more of the stored set of fingerprints but not sufficiently similar for success (maybe), then further swipes would be requested to make a solid determination of success or failure with processing returning to step  500 . 
         [0054]      FIG. 6  is a flow diagram of a process for converting, interpolating and aggregating fingerprint sample data in which various embodiments may be implemented. Each time stamped sample is a matrix C a  at time a with centroid cent, from 1 to n where n is the number of samples taken during the swipe. In a first step  600 , a is set to 0. In step  605 , a is then incremented by 1. In step  610 , it is determined whether a is greater than n. If yes, then the sampled swipe has been converted, interpolated and aggregated, so processing ceases (i.e. returns to  FIG. 5  or  7  for possibly another fingertip swipe to be processed). If not, then processing continues to step  615 . 
         [0055]    In step  615 , sample C a  is then converted from a device resolution absolute coordinate system to a high resolution local coordinate system as sample C fa  utilizing the formulas described above. This can include calculating a vector difference between cent, and cent a-1 . The sample values are unchanged and each value may be allocated to multiple entries of the high resolution matrix. For example, where α is equal to 2, then four entries may have the same value as the underlying device resolution entry. In this embodiment, interpolations are performed after the conversion, although they could be performed during the conversion process. Another step of filtering could be performed at this step where the focus is on the more inner pixels of each sample rather. This is because the outer or perimeter samples may be less precise due to less finger pressure causing fewer samples of the outer pixels. 
         [0056]    In step  620 , sample C fa  is then interpolated to C ia  where the sample values in the high resolution matrix are adjusted based on surrounding values, thereby providing a more accurate estimation of the underlying sampled fingerprint. Various types of interpolation may be utilized in order to better estimate the fingerprint being sampled such as a linear interpolation, quadratic interpolation, etc. This interpolation may also include other factors such as average pressure or sample size to better interpolate and normalize the results compared to other samples. It is generally preferable that the method of interpolation utilized here matches the type of interpolation utilized to generate any fingerprint to be compared to this sampled fingerprint. Otherwise, the chance of a successful match with the same fingerprint may be significantly reduced. As mentioned above, the step of interpolation may be performed during the conversion process. 
         [0057]    Next, in step  625 , the resulting interpolated sample matrix C ia  may be clamped generating matrix C ca . That is, the outer pixels or sample values may be ignored or just removed. This allows this process to focus on the central elements of the fingerprint and to disregard the outer elements or pixels where there may be a greater margin of error due to slight fingertip tilting, some lack of fingerprint pressure in some samples, or just interpolation variation caused by the lack of adjoining samples on all sides. This step of clamping is performed on the interpolated data rather than the raw data as the raw data may be useful in the interpolation process. 
         [0058]    Finally, in step  630  clamped sample C ca  is then aggregated with prior samples. This may be performed utilizing the formulas described above where a running average is generated for each matrix element. Alternative aggregation techniques can be utilized including regression analysis. Also, multiple aggregations may be generated. For example, there may be one aggregation for swipes running left to right (or up to down) and a separate aggregation for swipes running right to left (or down to up). This is because the fingertip deforms slightly depending of the direction of the swipe. As a result, a combination of left to right and right to left samples may provide somewhat of a stereoscopic view of the fingerprint. The separate aggregations may be combined once the swipe is completed or all swipes are completed, or they may be retained separately if the stored fingerprint used for comparison is also retained in multiple aggregates. 
         [0059]    Once the aggregation is complete, then processing returns to step  605  for processing the next sample. This continues until all samples of the current set of samples for a fingertip swipe have been processed. 
         [0060]      FIG. 7  is a flow diagram the process for determining the fingerprints of a user in accordance with a second embodiment. This process can be implemented locally such as on a laptop or smartphone, or in a client server environment such as where a client system with a touch sensitive display communicates with a server for processing the results. A secure website across the internet may require fingerprint authorization to allow user access by requiring the user to swipe his or her finger across a local touch sensitive display for processing locally or by the website server. 
         [0061]    In a first step  700 , the user is instructed to swipe his or her fingertip across the touch screen. This instruction may be provided using the user interface illustrated in  FIG. 4  above. In a second step  705 , the system determines whether the user has initiated the swipe. If yes, then processing continues to step  710 , otherwise processing returns to step  705 . This can be detected by polling the touch screen sensors to determine whether the user has touched the screen and has started moving the point of touch in the direction desired. 
         [0062]    In step  710 , a sample of the values of the non-nominal sensors is captured with a time stamp. This sample can be performed about 100 times a second, although fewer or more samples may be obtained so long as it is within the performance characteristics of the display. In step  715 , any sample values not contiguous to the majority of sample values are then removed or otherwise deleted as spurious signals in an initial filter or filtration step. The remaining sample values may be isolated and captured as a bounding box or matrix containing all the contiguous non-nominal values. The size of a sample bounding box may vary from sample to sample within a certain expected range. For example, the set of pixels represented by the bounding box should not be much larger than the size of a fingerprint. However, some perimeter non-nominal pixels may be excluded so long as it is balanced (not more on one side or the other) to keep from affecting the centroid to be calculated below. A check may also be performed to verify that the sample is close in location on the display to the previous sample, indicating a correct sample. The shape of the bounding box may also indicate if the user is tilting the finger improperly during the swipe. 
         [0063]    Then in step  720 , a tentative centroid of the remaining captured sample values is calculated using a weighted average. That is, if the values to the right of the median center point have a heavier weight than the values to the left of the median center point, then the user&#39;s fingertip is more to right of the median center point and the centroid should reflect that. Concurrently, an average fingerprint pressure is also calculated. This average pressure can be determined by various techniques including the size of the fingerprint sample relative to other fingerprint samples. Alternatively, for a capacitive touch screen, the total capacitance over the captured sample area (i.e. the bounding box) may be compared to an expected range to determine whether too much or too little pressure was applied. 
         [0064]    Subsequently in step  722 , it is determined whether the latest finger swipe sample was too heavy, too light, tilted too slow, too fast or otherwise improper creating an unacceptable sample. For example, the bounding box size may indicate the pressure was too heavy or too soft, the bounding box shape may indicate that the finger was improperly tilted during the swipe, the distance between samples may indicate that the velocity of the finger swipe was too fast or too slow, etc. The pressure, tilt or velocity can be determined by various techniques including the size, the shape, or the location of the fingerprint sample relative to other fingerprint samples. Alternatively, for a capacitive touch screen, the total capacitance over the captured sample area (i.e. the bounding box) may be compared to an expected range to determine whether too much or too little pressure was applied. If yes, then processing proceeds to step  730  to continue taking swipe samples (with an indicator of more or less pressure or other instructions such as described above with reference to  FIG. 4 ), otherwise processing continues to step  725 . 
         [0065]    Then in step  725 , the remaining non-nominal values, the time stamp, and the tentative centroid are saved to memory for processing as described below. Each time stamped sample is a matrix C a  at time a with centroid cent, from 1 to n where n is the number of samples taken during the swipe. Subsequently in step  730 , it is determined whether the user has stopped the swipe. If yes, then processing proceeds to step  735 , otherwise processing returns to step  710  for another sample of the touch screen sensors. This can be detected by determining whether any of the touch screen sensors is detecting a touch or whether the past two or more samples have essentially the same value, indicating the user has stopped moving his or her fingertip across the screen. The number of samples should correspond to the speed of the user&#39;s finger across the screen and the resolution of the third coordinate system in the direction of the finger swipe (e.g. square root of a). 
         [0066]    In step  735 , the tentative centroids are adjusted. This is performed to obtain the most precise centroids possible given the information available. In this embodiment, the samples with the most balanced weighting (where the median and the weighted average are nearly equal) are identified. These balanced samples indicate where the finger is precisely balanced across a set of sensors. These balanced samples are then used to interpolate the other centroids. That is, the time stamps of the balanced centroids are used to interpolate the centroids of the other samples. This interpolation process will help linearize the data. Alternatively, the interpolated results may be weighted with the tentative centroids for each sample. In another alternative, indications of slight tilting of the fingerprint may be utilized to adjust the centroid to better locate the centroid near the same location of the fingertip being sampled for each sample. Other types of adjustments may be utilized based on detected variations in sampling. 
         [0067]    In step  740 , the time stamped samples are then processed in accordance with the formulas described above and as further described in  FIG. 6  above to generate a resolved fingerprint using the newly calculated centroids of step  735 . In step  745 , it is determined whether sufficient data has been captured to resolve the fingerprint of the user. For example, there may be a minimum number of swipes before determining that there may be sufficient data to do a comparison of the resolved fingerprint to a set of fingerprints (one or more) to determine whether the resolved fingerprint is an authorized fingerprint. Alternatively, a measure of dispersion such as a confidence interval with a desired range or a desired standard deviation may be utilized to determine whether sufficient number of samples has been collected. If there is not sufficient data, then processing returns to step  700 , otherwise, processing continues to step  750 . 
         [0068]    In step  750 , the resolved digital fingerprint is then utilized as desired such as for security purposes. For example, the resolved digital fingerprint may be compared to a stored fingerprint (stored locally or remotely across a network) to determine whether the fingerprints are the same or different. This can result in one of several actions in step  755 . If the resolved fingerprint is similar enough to one of the stored fingerprints (success), then an authorization signal may be provided in step  760 . This signal may be a software instruction or an electronic signal which may be utilized by an operating system or application to notify the user and authorize the desired activity by the user. If the resolved fingerprint is sufficiently dissimilar from any of the stored set of fingerprints (failure), then a rejection signal may be provided in step  765 . This signal may be a software instruction or an electronic signal which may be utilized by an operating system or application to notify the user and prevent the desired activity by the user. A failure signal may also be sent after a certain number of swipes if success has not been achieved yet. Alternatively, if the resolved fingerprint is similar to one or more of the stored set of fingerprints but not sufficiently similar for success (maybe), then further swipes would be requested to make a solid determination of success or failure with processing returning to step  700 . 
         [0069]    The invention can take the form of an entirely software embodiment, or an embodiment containing both hardware and software elements. In a preferred embodiment, the embodiments are implemented in software or program code, which includes but is not limited to firmware, resident software, and microcode. 
         [0070]    As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. 
         [0071]    Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM), or Flash memory, an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0072]    A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electromagnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0073]    Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing. Further, a computer storage medium may contain or store a computer-readable program code such that when the computer-readable program code is executed on a computer, the execution of this computer-readable program code causes the computer to transmit another computer-readable program code over a communications link. This communications link may use a medium that is, for example without limitation, physical or wireless. 
         [0074]    A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage media, and cache memories, which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage media during execution. 
         [0075]    A data processing system may act as a server data processing system or a client data processing system. Server and client data processing systems may include data storage media that are computer usable, such as being computer readable. A data storage medium associated with a server data processing system may contain computer usable code such as for utilizing a touch screen as a biometric device. A client data processing system may download that computer usable code, such as for storing on a data storage medium associated with the client data processing system, or for using in the client data processing system. The server data processing system may similarly upload computer usable code from the client data processing system such as a content source. The computer usable code resulting from a computer usable program product embodiment of the illustrative embodiments may be uploaded or downloaded using server and client data processing systems in this manner. 
         [0076]    Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. 
         [0077]    Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters. 
         [0078]    The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated. 
         [0079]    The terminology used herein is for the purpose of describing particular embodiments and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. 
         [0080]    The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.