Finger Print Project
Finger Print Project
system would be implemented, This system would confirm the level of accuracy of
minutiae and hereby we used SIFT detector which allows identification of localized
i
TABLE OF CONTENTS
ii
5. MODULE DESCRIPTION 24
5.1. PROJECT DEFINITION 25
5.2. OVERVIEW OF THE PROJECT 25
5.3. METHODOLOGY 25
5.4. ARCHITECTURE DIAGRAM 26
5.5. MODULES 27
5.5.1. Biometrics 27
5.5.2. Fingerprint 28
5.5.3. Fingerprint Sensing 29
5.5.4. Algorithm Used 31
5.5.5. Fingerprint Sensors 31
5.5.6. Verification and Authentication
35
5.5.7. Minute Score Matching 36
5.5.8. Limitations 37
5.5.8. DATASETS 37
6. SYSTEM TESTING 38
6.1. CODE REVIEW 39
6.2. TESTING PROCESS 39
LIST OF FIGURES
5.6 Datasets 37
iv
A.2 Datasets 50
A.5 Output 52
LIST OF TABLES
v
LIST OF ABBREVIATIONS
ABBREVIATION FULLFORM
vi
CHAPTER 1
INTRODUCTION
INTRODUCTION
The biometric phrase means life measurement in the Greek language . That is
any technique used for measuring biological information for recognition goals called
biometric. There are various kinds of biometrics being used, these include
Fingerprint, Face, Speaker/Voice, Infrared thermogram (facial, hand or hand vein),
Gait, Keystroke, Odor, Ear, Hand geometry, Retina, Iris, Palmprint, Signature, DNA,
Knuckle crease, Brain/EEG, Heart sound/ECG. Defining humans using biometric
can even be behavioral or physiological biometrics. The difference between them is
that behavioral biometric can be affected with the progress of the time such as
signature, gait, speech, and keystroke but the physiological biometric are constant
during human life. Fingerprint, face, iris, and palmprints are examples of
physiological biometric. A Biometric system is reliable because it cannot be stolen,
borrow, bought, or forgotten like a password or ID.
Along of various biometrics techniques, In the past few decades, human-beings have
been addicted to various technologies such as captured photos, scanned signatures,
bar code systems, verification Id & so on. Also, Biometrics is one of the applications
in Image processing which refers to technologies that used physiological or
behavioral characteristics of human body for the user authentication. The biometric
authentication system based on two modes: Enrolment and Recognition. In the
enrolment mode, the biometric data is acquired from the sensor and stored in a
database along with the person’s identity for the recognition. In the recognition
mode, the biometric data is re-acquired from the sensor and compared to the stored
data to determine the user identity. Biometric recognition based on uniqueness and
permanence. The uniqueness means that there is no similarity of feature between two
different biometrics data. For example, there are no two humans having the same
fingerprint feature even if they are twins. And when the features of biometrics do not
change over the lifetime or aging, it is called permanence. Biometrics can have
physiological or behavioral characteristics. The physiological characteristics are
included in the physical part of body such as (fingerprint, palm print, iris, face, DNA,
hand geometry, retina... etc).
2
1.1 OBJECTIVE
The scope of the project is to provide enhanced security features to the users and the
sample fingerprint which is obtained can be used in the project to check and detect the
user fingerprint with the sample by using various fingerprint samples This biometrics
project focuses on Fingerprint Recognition and how such a system would be
implemented, This system would confirm the level of accuracy of fingerprint matching
the identity of each individual attending to gain access to a given amount of precision.
Here each fingerprint is sub-classified into several minutiae and hereby we used SIFT
detector which allows identification of localized features (keypoints) in sample image
also known as Object Recognition in Images.
3
1.3. LITERATURE SURVEY
4
experiment about fingerprint identification and authentication using the minutiae-based
matching method with analyzing the outcomes.
topology of local structure
5
minutiae algorithm is grown. Minutiaextraction,Post-processing,Minutiae
Matching,Filtering,Feature Present Fingerprint Recognition using the Minutia Score
Matching method (FRMSM). It implements Block Filter for fingerprint thinning. Also,
it compares with available algorithms. Thinning Image binarizing Noise removal. A
summary of several biometrics techniques as well as explaining the unimodal and
multimodal with their pros and cons. Sensor modulMatching module Decision-making
modul Feature extraction module Explaining some biometrics and dividing them to
currently in use biometrics, limited used biometrics, and understudy biometrics .
Analignment-based minutia-matching algorithm has been developed to increase the
speed and accuracy by ability determining the matches between input minutiae and
Stord one without the need for detailed study. Michigan State University and the
National Institute of Standards and Technology NIST 9 fingerprint databases have been
used. The result shows that the full verification process takes 1.4 seconds a Sun ULTRA
1 workstation. Alignment-based minutiae-matching algorithm. Applying fingerprint
identification by employing a gray level watershed process to find out the ridges present
on a specific fingerprint image. The result display that this system is accurate and fast
when matching 7 images in the database.
Image acquisition
Discussing fingerprint recognition biometric in detail and explaining deferent
types of algorithms like negative Laplace filter and the non-stationary analysis, and a
flexible algorithm with calculating the matching test results.
Image acquisition Segmental-on Minutia detection
Biometric matching
Developing a novel algorithm for fingerprint matching based on local structures
to elicit neighboring minutiae features effectively. The presented algorithm is tested on
FVC2002 and the results show the reliability of the system.Novel topology-based
6
representation technique. Mixing the density map matching with minutiae-based
matching where the density data can be used in the matching process to reduce extra
storing cost. The outcomes approved that combining both approaches will improve
performance. Region estimation, Orientation filed estimation,Fingerprint
enhancement,Coarse density map extraction,Weighted polynomial approximation. An
adequate wat to press the template size with a reduction ratio of 94% by applying tow
reduction algorithms the Column Principal Component Analysis and the Line Discrete
Fourier Transform feature reductions. Also, a fast minutiae-based matching algorithm
can be accomplished throw spectral minutiae fingerprint recognition system which
shows matching speed with 125000 comparisons per second on a PC with Intel Pentium
D processor 2.80 GHz and 1 GB of RAM. Column Principal Component
Analysis (Column-PCA)
Novel core point detection method that uses the detection algorithm to examine the
core point and determine local frame for minutiae close to it. Then tow fingerprint
corresponding points will be earned and used to match the global class then make the
final diction. Core-based structure matching algorithm. New topology-based algorithms
to match fingerprint and address the local matching, tolerance to deformation, and
global matching. The experiment outcomes approve that time and performance is
improved using the algorithm. Topology-matching algorithm. Provide a hybrid
matching algorithm that matches fingerprints using minutiae inputs and texture inputs
together. The matching performance improved when testing 2560 images by collecting
both texture-based and minutiae-based matching scores.hybrid matching approach
(minutiae-based representation with a texture-based representation). Suggesting ridge
feature-based approach for fingerprint recognition that provides good results for low-
quality fingerprint images. Matching fingerprint images based on ridgeline features
7
extracted by using contextual filtering and two pass thinning. Histogram approach is
used to match the fingerprint. The experiments show how the performance developed
using this approach.
Contextual filter
Single pass thinning algorithm Image preprocess Gabor filtering. Novel
enhancement algorithm that split the input fingerprint image to set of filtered images
which will help in producing orientation field and quality mask. The evaluation process
of the algorithm is done on an online fingerprint verification system using the MSU
fingerprint database that consists of 600 fingerprint images and the test demonstrates
that the enhancement algorithm improves the performance of the online fingerprint
verification system. Ridge extraction algorithm Voting algorithm.Submit a fingerprint
recognition algorithm depending on phase-based image matching. Which uses the phase
components in 2D (two-dimensional) discrete Fourier transforms of fingerprint images
to reach strong fingerprint recognition with a low-quality fingerprint. The test used a
group of fingerprint images captured from fingertips with a bad case. The results show
an effective recognition performance using this approach. 2D (two-dimensional)
Fourier transform. The correlation-based fingerprint verification system uses the richer
gray-scale information of the fingerprints. In the beginning, the system chooses
appropriate templates in the primary fingerprint, employs template matching to locate
them in the secondary print, and match the template positions of both fingerprints. The
test describes the performance of correlation-based fingerprint against other systems.
8
where the input fingerprint is compared with the stored one. On the other hand,
identification is one to many relationships because the human fingerprint is matched
with the fingerprints database to determine who is that person. While the performance
measures used for identification depend on the accuracy, recognition rate, rank K, etc.,
the performance measures for verification are False Match Rate (FMR), False
NonMatch Rate (FNMR), False Accept Rate (FAR), False Rejection Rate (FRR), and
Equal Error Rate (EER). The researchers in describe the meaning of the authentication
parameters. FAR happens when the system recognizes person erroneous. But when the
system rejects entry to approve person that means the FRR is happening. FMR is the
amount of fraud assessments with threshold value ‘T’ divided by the total quantity of
fraud similarities. FNMR is the quantity with unaffected comparisons with threshold
value ‘T’ divided by the total quantity of open comparisons. Last one is EER, it
describes the error.
9
CHAPTER 2
SYSTEM
ANALYSIS
SYSTEM ANALYSIS
• The most of the fingerprint sensors used till now are optical readers these are the
common type of fingerprint readers. The type of sensor in an optical reader is a
digital camera that acquires a visual image of the fingerprint. Advantages are that
optical readers start at very cheap prices.
2.1.1. Disadvantages
• There are health issues involved due to touching of single scanning sensor
device by countless number of individuals. This has serious implications in
pandemic situations such as COVID-19 etc.
10
• It is difficult to capture complete and accurate fingerprint image in some cases
based on age and occupation.
• In case of Traditional Ink fingerprint, the ink pad are necessary to enroll our
fingerprints
• E-Fingerprints cannot be transferred over state borders, therefore one can only
use them if users get their fingerprints taken in the state where they intend to
work.
2.2.1. Advantages
• It provide good security mechanism than all other security methods
• It never fails in security constraints.
• In public locations such as banks and airports a large number of people transit every
day including known criminals. Face recognition systems attached to video
surveillance systems are supposed to help catch them.
• Fairly small storage space is required for the biometric template, reducing the size
of the database required.
• It is one of the most developed biometrics, with more history, research, and design.
11
• Each and every fingerprint including all the figures are unique, even identical twins
have different finger prints.
• Sound potential for enrich use as most of the countries have existing fingerprint
databases.
• Relatively inexpensive and offers high levels of accuracy
This study is carried out to check the economic impact that the system will have
on the organization. The amount of fund that the company can pour into the research and
development of the system is limited. The expenditures must be justified. Thus the
developed system as well within the budget and this was achieved because most of the
technologies used are freely available. Only the customized products had to be
purchased.
This study is carried out to check the technical feasibility, that is, the technical
requirements of the system. Any system developed must not have a high demand on the
available technical resources. This will lead to high demands on the available technical
resources. This will lead to high demands being placed on the client. The developed
12
system must have a modest requirement, as only minimal or null changes are required
for implementing this system.
The aspect of study is to check the level of acceptance of the system by the user.
This includes the process of training the user to use the system efficiently. The user must
not feel threatened by the system, instead must accept it as a necessity. The level of
acceptance by the users solely depends on the methods that are employed to educate the
user about the system and to make him familiar with it. His level of confidence must be
raised so that he is also able to make some constructive criticism, which is welcomed, as
he is the final user of the system.
13
CHAPTER 3
SYSTEM SPECIFICATIONS
3.1. SYSTEM SPECIFICATIONS
CHAPTER 4
SOFTWARE DESCRIPTION
SOFTWARE DESCRIPTION
14
4.1 FRONT END & BACK END:
15
4. Thermal scanners sense the temperature differences on the contact surface,
in between fingerprint ridges and valleys.
18
CHAPTER 5
MODULE DESCRIPTION
MODULE DESCRIPTION
19
5.1. PROJECT DEFINITION
The project is a fingerprint recognition system which detects skin fingerprints based
on the minutiae. The proposed system integrated with SIFT algorithm, this algorithm
which matches the sample fingerprint with the variety of fingerprints provided
through the datasets and find the best exact match based on the minutia score
matching, It is easy to implement. It has the highest accuracy among all algorithms
that predicts keypoints.
In this section, the fingerprint samples collected in the datasets, which are extracted
from the fingerprint scanners and they are pre-processed and feature extractor is
used to get rid from the thinning ridges of samples thus it gives the high quality of
the extracted images and the template is generated and the sample is matched using
algorithm and thus the perfect match among the dataset is to be found easily with
minute score match.
5.3. METHODOLOGY
• BIOMETRICS
• FINGERPRINT
• FINGERPRINT SENSING
• ALGORITHM USED
• FINGERPRINT SENSORS
• VERIFICATION AND AUTHENTICATION
• MINUTE SCORE MATCHING
• LIMITATIONS
20
5.4. ARCHITECTURE DIAGRAM
5.5. MODULES
21
5.5.1. Biometrics
5.5.2. Fingerprint
Fingerprints are the tiny ridges, whorls and valley patterns on the tip of each finger.
They form from pressure on a baby's tiny, developing fingers in the womb. No two
people have been found to have the same fingerprints -- they are totally unique.
There's a one in 64 billion chance that your fingerprint will match up exactly with
someone else's. Fingerprints are even more unique than DNA, the genetic material
in each of our cells. Although identical twins can share the same DNA -- or at least
most of it -- they can't have the same fingerprints. Fingerprinting is one form of
biometrics, a science that uses people's physical characteristics to identify them.
Fingerprints are ideal for this purpose because they're inexpensive to collect and
analyze, and they never change, even as people age. Although hands and feet have
many ridged areas that could be used for identification, fingerprints became a
popular form biometrics because they are easy to classify and sort. They're also
accessible. Fingerprints are made of an arrangement of ridges, called friction edges.
Each ridge contains pores, which are attached to sweat glands under the skin. You
leave fingerprints on glasses, tables and just about anything else you touch because
of this sweat.
24
5.5.2. Optical Sensor
25
▪ Pin's and passwords may be forgotten
▪ The fingerprints in twins are not the same.
▪ Relies on the concept that no two people have identical fingerprints.
▪ More secure.
A person's fingerprint will not naturally change structure after about one year after
birth.
There are mainly four steps involved in SIFT algorithm. They are mentioned below,
From the image above, it is obvious that we can't use the same window to detect
keypoints with different scale. It is OK with small corner. But to detect larger corners
we need larger windows. For this, scale-space filtering is used. In it, Laplacian of
Gaussian is found for the image with various σ values. LoG acts as a blob detector
which detects blobs in various sizes due to change in σ. In short, σ acts as a scaling
parameter. For eg, in the above image, gaussian kernel with low σ gives high value
for small corner while gaussian kernel with high σ fits well for larger corner. So, we
can find the local maxima across the scale and space which gives us a list of (x,y,σ)
values which means there is a potential keypoint at (x,y) at σ scale.
But this LoG is a little costly, so SIFT algorithm uses Difference of Gaussians which
is an approximation of LoG. Difference of Gaussian is obtained as the difference of
Gaussian blurring of an image with two different σ, let it be σ and kσ. This process
is done for different octaves of the image in Gaussian Pyramid.
Once this DoG are found, images are searched for local extrema over scale and
space. For eg, one pixel in an image is compared with its 8 neighbours as well as 9
26
pixels in next scale and 9 pixels in previous scales. If it is a local extrema, it is a
potential keypoint. It basically means that keypoint is best represented in that scale.
It is shown in below image:
Regarding different parameters, the paper gives some empirical data which can be
summarized as, number of octaves = 4, number of scale levels = 5, initial σ=1.6,
k=2–√ etc as optimal values.
2. Keypoint Localization
Once potential keypoints locations are found, they have to be refined to get more
accurate results. They used Taylor series expansion of scale space to get more
accurate location of extrema, and if the intensity at this extrema is less than a
threshold value (0.03 as per the paper), it is rejected. This threshold is called
contrastThreshold in OpenCV
DoG has higher response for edges, so edges also need to be removed. For this, a
concept similar to Harris corner detector is used. They used a 2x2 Hessian matrix
(H) to compute the principal curvature. We know from Harris corner detector that
for edges, one eigen value is larger than the other. So here they used a simple
function,
27
If this ratio is greater than a threshold, called edgeThreshold in OpenCV, that
keypoint is discarded. It is given as 10 in paper.
So it eliminates any low-contrast keypoints and edge keypoints and what remains is
strong interest points.
3. Orientation Assignment
4. Keypoint Descriptor
Keypoints between two images are matched by identifying their nearest neighbours.
But in some cases, the second closest-match may be very near to the first. It may
happen due to noise or some other reasons. In that case, ratio of closest-distance to
28
second-closest distance is taken. If it is greater than 0.8, they are rejected. It
eliminates around 90% of false matches while discards only 5% correct matches, as
per the paper.
1. Since you already found keypoints, you can call sift.compute() which
computes the descriptors from the keypoints we have found. Eg: kp,des =
sift.compute(gray,kp)
2. If you didn't find keypoints, directly find keypoints and descriptors in a single
step with the function, sift.detectAndCompute().
5.5.8 Limitations
• It needs high memory space in the back end.
• Collect data for security is difficult
30
• Some times fails the security with right users
• Any time data loose in database high effect for security mechanism.
• So many equipments are needed for provide this technology.
• It highly expensive
5.6. DATASETS
In this project, the samples of about 6000 fingerprints are stored in the datasets, which is
used to match the requested sample image with the real images , Here we have stored all
the samples in the folder of SOCOFING it have three levels of altered fingerprint samples
Altered-easy, Altered-medium, Altered-hard.
5.6. Datasets
31
CHAPTER 6
SYSTEM TESTING
SYSTEM TESTING
After successful completion of coding, Code review was done with the objective
of identifying and correcting deviations from standards, Identifying and fixing
logical bugs and fall through and recording code walk through findings .The
programs were checked and the code structure was made readable. The variable
names were meaningful .It follows certain naming conventions, which makes the
program readable.
• Variable names are prefixed with their scope and data type
32
• All possible explanation for the code were given as comment
• Sufficient labels and comments were included in the code as the description
of it for the benefit of the developer and other programmers who might
examine it later.
• Testing is the process of executing the program with the intent of finding an
error
The objective is to design tests that systematically uncovers different classes of error
and do so with the minimum amount of time and effort .Testing cannot show the
absence of defects, it can only show that the software defects are present.
Test modules are software test methods that test individual source code
modules, set up one or more modules for computer programs, and control data, usage
procedures, and work procedures to determine whether they are compatible to use.
Unit tests are usually performed as part of a combination of code and the software
life cycle module testing phase, although unusual coding and unit testing will be
performed as two separate phases.
Test strategy and approach
Field testing will be performed manually and functional tests will be written in detail.
Test objectives
• To test about the sample fingerprint which matches with the Dataset provided.
• Then depends upon the minute score matching, The score of the output will
be predicted.
34
6.2.4. Acceptance Testing
User Acceptance Testing is a critical phase of any project and requires
significant participation by the end user. It also ensures that the system meets the
functional requirements.
Test Results
All the test cases mentioned above passed successfully. No defects encountered.
35
CHAPTER 7
SYSTEM IMPLEMENTATION
SYSTEM IMPLEMENTATION
Implementation is the stage of the project when the theoretical design is turned
out into a working system. Each program is tested individually at the time of
development using the data and has verified that this program linked together in the
way specified in the programs specification, the computer system and its
environment is tested to the satisfaction of the user. The final stage is to document
the entire system which provides components and the operating procedures of the
system.
36
2. OpenCV2: OpenCV (Open Source Computer Vision Library) is a library of
programming functions mainly aimed at real-time computer vision. The library is
cross-platform and free for use under the open-source BSD license. This will help us
in faster preprocessing of the fingerprint scan.
37
7.2 Matching architecture
38
CHAPTER 8
8.1. CONCLUSION
Security is not just about putting big locks on the front door; it also involves
making sure all the windows are shut. Each one can be individually fooled, but
the comparison makes the system more secure as a whole. Biometrics are have its
own advantages and disadvantages. It high expensive but it provides good
security. Money is not important than security. It is more useful for confidential
maters. Our Identity is more important than money so it is necessary to implement
biometrics authentication for all our personal needs like homes, offices etc.,
The future enhancement depends on the quality of the fingerprint readers, the
ultrasonic with high resolution camera reads fingerprints ridges accurately without
any error in detection, so this can be implemented in all security enabled online
transaction over the internet. But still, issues such as fingerprint authentication at a
distance, real-time identification in large-scale applications with billions of
fingerprint records, developing secure and revocable fingerprint templates that
preserve accuracy, and scientifically establishing the uniqueness of fingerprints will
likely remain as grand challenges in the near future.
39
APPENDICES
APPENDIX - 1
SCREENSHOTS
Step 1: To start the project, install OpenCV library and ensure that OpenCV is
installed successfully on your system by importing cv2 and check its version by
cv2.__version__ .
40
Fig. A.1: Screenshot of OpenCV version
Step 2: If OpenCV was installed on system, the IDLE will show the version of cv2
installed in our system
Step 3: Now, select File New then import the python package of OpenCV like
import cv2
Step 4: Then type the following implementation code for this project which is
described below
Step 5: Now in the implementation code, the input image which is a sample image
is collected from the dataset which contains of modified (smudges, image rotation,
blurring) version of several fingerprints
41
A.2 Datasets
Step 6: A Single modified fingerprint image is collected and used as a sample and
algorithm used here which detect the key points of the sample and search for the
correct match in the dataset
42
Step 7: Thus, it checks with all the images stored in the dataset, If the sample matches
with the dataset, then it produces the best match with its file name of the dataset,
then it also computes the score matched with minutia score matching.
43
Step 8: Thus, the Output of the program is given below,
A.5. Output
44
APPENDIX-2
IMPLEMENTATION CODE
import os
import cv2
sample=cv2.imread("D:/archive/SOCOFing/Altered/AlteredEasy/100__M_Left_i
ndex_finger_Obl.BMP")
best_score=0
filename=None image=None
kp1,kp2,mp=None,None,None
keypoints_1,descriptors_1 = sift.detectAndCompute(sample,None)
keypoints_2,descriptors_2 =
sift.detectAndCompute(fingerprint_image,None)
matches=cv2.FlannBasedMatcher({'algorithm':1,'trees':10},{}).knnMatc
h(descriptors_1,descriptors_2,k=2)
match_points = []
45
for p,q in matches: if
p.distance < 0.1 * q.distance:
match_points.append(p)
keypoints=0 if len(keypoints_1)<
len(keypoints_2):
keypoints= len(keypoints_1)
else:
keypoints =len(keypoints_2) if
len(match_points)/keypoints*100>best_score:
best_score = len(match_points)/keypoints*100
filename=file image=fingerprint_image
kp1,kp2,mp=keypoints_1,keypoints_2,match_points print("Best
match: "+ filename)
print("Score: "+str(best_score))
result=cv2.drawMatches(sample,kp1,image,kp2,mp,None)
result = cv2.resize(result,None,fx=4,fy=4)
cv2.imshow("Result",result) cv2.waitKey(0)
cv2.destroyAllWindows()
46
IMPLEMENTATION CODE SCREENSHOT
47
REFERENCES
[1] E. Henry, Classification and Uses of Finger Prints, Routledge, London, 1900.
[2] A. K. Jain, L. Hong, and R. M. Bolle, ―On-line fingerprint verification‖, IEEE
Trans. on Pattern Analysis and Machine Intelligence, 19(4):302–313, April 1997.
[3] D. Maltoni, D. Maio, A. K. Jain & S. Prabhakar, Handbook of Fingerprint
Recognition, Springer, 2003.
[4] P. Komarinski, Automated Fingerprint Identification Systems, Elsevier
Academic Press, 2004
[5] S. Pankanti, S. Prabhakar, and A. K. Jain, ―On the Individuality of
Fingerprints‖, IEEE Transactions on PAMI, Vol. 24, No. 8, pp. 1010-1025, 2002.
[6] Golfarelli M., Maio D., and Maltoni D., ―On the Error-Reject Tradeoff in
Biometric Verification Systems‖ IEEE Transactions on Pattern Analysis and Machine
Intelligence, vol. 19, no.7, pp. 786-796,1997.
[7] A. K. Jain, S. Prabhakar and S. Pankanti, ―Matching and Classification: A Case
Study in Fingerprint Domain‖, Proc. INSA-A (Indian National Science
Academy), Vol. 67, A, No. 2, pp. 223-241, March 2001.
[8] Anil Jain, Yi Chen, and Meltem Demirkus, ―Pores and ridges: fingerprint
matching using level 3 features,‖ 18th International Conference on Pattern
Recognition, pp. 477 – 480, 2006.
[9] K. Kryszczuk, A. Drygajlo, and P. Morier, ―Extraction of level 2 and level 3
features for fragmentary fingerprints,‖ Proc. of the 2nd COST275 Workshop,
Vigo, Spain, pp. 83-88, 2004.
[10] D. Florencio and C. Herley, ―A large-scale study of web password habits,‖
Proceedings of the 16th International conference on the World Wide Web, 2007.
48
49