Finding center of fingerprints
If we suppose that every fingerprint is made of concentric curves (ellipses or circles) - and I'm aware of the fact that not every fingerprint is - how can I find center of those concentric curves?
Let's take this "ideal" fingerprint and try to find out its center ...
My approaches were to try:
- Find the spectrum through columns/rows of the image and try to find columns/rows that maximize particular band of the spectrum. I thought that column going through the center would have most regular pattern of changing amplitudes - therefore, most recognizible harmonic.
- My second approach was to try to count the changes of black-and-white also through the columns and rows, and to maximize that amount among rows and columns also.
While these methods work to the some extant, with some additional filtering, they fail, when fingerprint is "not ideal as this one 开发者_C百科is". Can you think of any different approach? Are there standard ways to do it?
Edit 1 I really like Zack's idea now, and would like for someone to make it a bit more clear how to do it...
Edit 2 I wished someone had expounded on Zack's idea a bit more. Bounty given to Zack.
Edit 3 Fingerprint with center of curves that approximate ridges outside of fingerprint.
Here is the path I would head down,.
- find the arcs/lines
- using trig, determine the center of the circle each arc best represents
- take the average of the centers as the center of the hand
Off the top of my head, and I don't have any idea how hard this would be: treat the fingerprint lines as equipotential lines of a scalar field and find the points that maximize/minimize its gradient.
This brings back some pleasant memories for me - I disassociated myself from the fingerprinting business back in 1997.
What you're really asking for is to identify the core of the fingerprint, since all identifying characteristics of a fingerprint are measured from the core.
If you identify the dominant direction of the lines in each localized area, you'll find that the core is at the point where these directions are changing most rapidly.
First of all - This is a money industry in itself.
However, the best way I'm aware of:
You begin with extracting a track that records the transition from one quantized direction to another. That is, the bending of the black lines.
After having created your track, you start looking for the point with the highest transition of direction from the track.
You might want to use the Hough-like approach.
- Use a "votes" image, to accumulate votes for center candidates.
- For each pixel in each edge in the image calculate the local gradient in a small window - this would give a vector perpendicular to the edge.
- For each such vector, increase the vote counts along its length (up to some reasonable distance).
- The pixel with the highest vote count is likely to be your desired center.
You are looking for the center of the concentric circles which make up the fingerprint. I would identify each ridge as an individual line. Viewed separately it should be reasonably simple to identify the center of the radius in each line, and the smallest radius should be the center of the concentric circles that you are looking for. If I'm understanding your desires correctly, that should do it. Although it also appears to result in finding the core that was mentioned in another post. I believe that really is what you are looking for. At least as a practical matter. It may not account for outliers.
I just want to clarify if you are trying to find the loop/core?If I am assuming correctly the center of those concentric curves you are referring to is the loop. The easiest and ideal way to do this is to create orientation fields of the ridges and find the highest curvature point. This is the loop. The point where orientation fields diverge is the delta which is not seen in the fingerprint examples.
You can also group the orientation fields into regions. The intersection of all regions is the loop and delta. The paper below describes how to detect the loop and delta. http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=7139102
Edit 3 Fingerprint with center of curves that approximate ridges outside of fingerprint. This fingerprint is a plain arch. It has no loop but if you follow the works by the authors in the paper, they provide a solution to solve these cases.
精彩评论