How to find the coordinates of detected pores(white blobs) in a fingerprint?
Show older comments
I am doing a project under fingerprint recognition,I have extracted pores(white blobs) in a fingerprint image.How can I store the location of these pores(or the coordinate points) so that I can apply this information and match two fingerprints and calculate the %match. I am attaching snapshot of the extracted pores here.

Answers (1)
Image Analyst
on 28 Apr 2015
0 votes
You can store the locations to disk using save().
For matching this set of coordinates to the set of coordinates from a different fingerprint image, there is nothing built in to MATLAB for that. It's a field that people have been working on for several decades and, as you can imagine, the algorithms have evolved to a quite complicated state by now. Nonetheless research is still being done and you can find published fingerprint algorithms here: http://www.visionbib.com/bibliography/contentspeople.html#Face%20Recognition,%20Detection,%20Tracking,%20Gesture%20Recognition,%20Fingerprints,%20Biometrics.
Pick an algorithm listed there, and code it up in MATLAB. You'll have to do it yourself because, unless it's in the File Exchange which is unlikely, then that's the only way you'll get it, unless you can persuade the author to send you code.
13 Comments
researcher
on 28 Apr 2015
Image Analyst
on 28 Apr 2015
For example:
storedStructure = load(fullMatFileName);
x = storedStructure.x;
y = storedStructure.y;
researcher
on 28 Apr 2015
Image Analyst
on 28 Apr 2015
It's the name of the file that you used when you called save() to store your x and y coordinates.
storedStructure does not identify encircled blobs of course. You need to do that. One you know the x and y coordinates of the blob centroids, you can then store the x and y coordinates in a mat file and you can use rectangle() to put up little circles over the image at the centroid locations.
researcher
on 28 Apr 2015
Image Analyst
on 28 Apr 2015
They're the measurements(k).Centroid values. You can get all in one shot like this
centroids = [measurements.Centroid];
xCentroids = centroids(1:2:end);
yCentroids = centroids(2:2:end);
researcher
on 28 Apr 2015
Image Analyst
on 28 Apr 2015
researcher, you said "How can I store the location of these pores(or the coordinate points) so that I can apply this information..." So, the obvious plan of attack is to save the information first , so that you can then apply it later. Don't you agree? So then why are you calling load() to recall the x and y values BEFORE you even saved them????????? Does that make sense to you? Obviously you can't recall them until they've been saved. And if you do everything in the same program, why do you even need to save or recall them at all?
By the way, why did you use '-ASCII' option? Don't do that - just let it use the proprietary binary format.
researcher
on 29 Apr 2015
Image Analyst
on 29 Apr 2015
xCentroids = blobCentroid(1:2:end);
yCentroids = blobCentroid(2:2:end);
x = storedStructure.xCentroids;
y = storedStructure.yCentroids;
save('mysave.mat', 'x','y','-ASCII');
researcher
on 29 Apr 2015
Image Analyst
on 29 Apr 2015
What do you want to call the centroids of all the points? And are you going to try to read them in always, even in this program, or just in some other program that you run later? We need to figure out if you need to load, save, or both in this program.
researcher
on 29 Apr 2015
Categories
Find more on Programming in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!