Minutiae Java Retrieval Algorithm

I have an application that takes data from a fingerprint device. There are 3 steps to removing Finger Minutiae:

  • Fingerprint Image Binarization
  • Image reduction
  • Minutiae extraction

I ended up working with image binarization and part of Image thinnig. Now I have implemented the code for Minutiae Extraction. The code is as follows:

byte[][] outSkeleton = BasicOperations.copy(fingerprint.getSkeleton()); int margin = 50; int bif = 0; int eol = 0; for(int i=margin+20; i<width-margin-20; i++){ for(int j=margin; j<height-margin; j++){ int patterns = BasicOperations.timesPattern01(i,j,fingerprint.getSkeleton()); if(fingerprint.getSkeleton()[i][j]==1){ if(patterns==1){ outSkeleton = drawRectangle(i,j,outSkeleton,2); eol++; } if(patterns==3){ outSkeleton = drawRectangle(i,j,outSkeleton,3); bif++; } } } } 

..........

 public static int timesPattern01(int i, int j, byte[][] image){ int pattern01 = 0; //Counting threads[0,1] if(image[i-1][j]==0 && image[i-1][j+1]==1) pattern01++; if(image[i-1][j+1]==0 && image[i][j+1]==1) pattern01++; if(image[i][j+1]==0 && image[i+1][j+1]==1) pattern01++; if(image[i+1][j+1]==0 && image[i+1][j]==1) pattern01++; if(image[i+1][j]==0 && image[i+1][j-1]==1) pattern01++; if(image[i+1][j-1]==0 && image[i][j-1]==1) pattern01++; if(image[i][j-1]==0 && image[i-1][j-1]==1) pattern01++; if(image[i-1][j-1]==0 && image[i-1][j]==1) pattern01++; return pattern01; } 

.....

 private static byte[][] drawRectangle(int x, int y, byte[][] skeleton, int color){ int size = 3; for(int i=-size; i<=size; i++){ skeleton[xi][y+size] = (byte)color; skeleton[x+i][y-size] = (byte)color; skeleton[x-size][y+i] = (byte)color; skeleton[x+size][yi] = (byte)color; } return skeleton; } 

But this code calculates about 300 END OF LINES . It counts each end of the line.

enter image description here

Can someone help me optimize the code?

+6
source share
2 answers

Thus, the reason for this is that when receiving a map of little things, false little things are also found. Therefore, after receiving the little things, we must remove the false little things from the little things map.

Types of false little things:

  • Spike
  • Bridge
  • Hole
  • Break
  • Spur
  • Stairs

In addition, a large number of false trifles are always found near the border of the region of interest (border effect).

So, to remove these false little things, various algorithms are defined. One of them is defined in this link .

+2
source

If you need to get miniature points in the form of X, Y with their orientation angle, see the Source AFIS project here , I was able to extract miniature data with fingerprint images from it.

0
source

Source: https://habr.com/ru/post/952717/


All Articles