How to find the coordinates of detected pores(white blobs) in a fingerprint?

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)

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

Okay thanks,I will study the matching part.
Regarding the storage of location,how can I retrieve the coordinates to save?
For example:
storedStructure = load(fullMatFileName);
x = storedStructure.x;
y = storedStructure.y;
what is fullMatFileName? Also how does storesStructure identify the encircled blobs to detect their coordinates and store them accordingly?
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.
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);
i tried the following way to save the coordinates but it is not working.I saved the mysave.mat named file in a folder and tried to get the coordinates in it.Can you please guide me, where I am going wrong?
% xCentroids = blobCentroid(1:2:end);
yCentroids = blobCentroid(2:2:end);
storedStructure = load('mysave.mat');
x = storedStructure.xCentroids;
y = storedStructure.yCentroids;
save('mysave.mat', 'x','y','-ASCII');
end
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.
Okay I got the mistake in using both save and load. I had seen somebody's work that they had saved the coordinate information as a .dat file and later they had matched it to another .dat file which was previously stored.This was the matching strategy employed. Going by the same logic, I want to save the coordinates/location of the encircled pores in a .dat file. Now can you please rectify my code?
xCentroids = blobCentroid(1:2:end);
yCentroids = blobCentroid(2:2:end);
x = storedStructure.xCentroids;
y = storedStructure.yCentroids;
save('mysave.mat', 'x','y','-ASCII');
Image Analyst, I got the following error:
??? The class "storedStructure" is undefined. Perhaps Java is not running.
Error in ==> pores>pore at 73 x = storedStructure.xCentroids
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.
I am trying to perform centroid based matching. It takes any three closely located pores and calculates the euclidean distance ratio,if the distance ratio is less than 0.6 then there is a match.That is what I have studied so far. Hence I want to call the centroids location every time they are extracted in the same program,and later match this with another image whose centroid locations are already saved in the same way.

Sign in to comment.

Categories

Find more on Programming in Help Center and File Exchange

Asked:

on 28 Apr 2015

Commented:

on 29 Apr 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!