Question

I am working on a fingerprint pore extraction project and stuck at the last stage of pore (white pixels clusters) extraction..I am having two output images from which we will get the pores but don't know how to do it..also the two images are of different size..image1 of size 240*320 and image2 is of size 230*310 ..here are my images..

           image 1 (240*320)                         image2 (230*310)

image1image2

here is what i am doing to extract white clusters of pores..

for i = 1:230 
    for j = 1:310
        if image1(i,j)==1 && image2(i,j)==1
            result(i,j)=1;
        else
            result(i,j)= 0;
        end;
    end;
end;
figure(4);imshow(result,[]);

here are my output

      output (230*310)            expected (different than input image)

enter image description here image 4

image 3 (output) shows the resultant image from above code ..these errors are may be due to difference in size of two images i think...so what should i do to get the pores(white clusters)..Note that fourth image (expected) is different than the input images just to show you what should be the output look like...thanks in advance..

Was it helpful?

Solution

I have done this "type" of feature extraction before. Normally how I have seen it done (and I was somewhat the inventor of this process at a company I worked for in the past) was:

1D Blob detection:

  • Move through each row pixel by pixel from left to right (or from right to left)
  • if you move from a black pixel to a pixel right of it where you transition into your definition of white (as set by a threshold), then mark that point
  • from a black to white transition, you now concentrate your search for a white to black transition
  • when white to black is found, pair the black to white transition boundary and white to black transition boundary into (what I call) a "1D blob" and store in a list of 1D Blobs

2D Blob correlation:

  • After you now have your list of 1D Blobs, you need to correlate the 1D Blobs into 2D blobs by looking for ones that are adjacent

You CAN define a boundary many different ways:

  • Binary decision of whether a pixel is above or below threshold value (easiest, and fastest)
  • bottom, mid, or top point of transition, where the transition could be slow from black-to-white / white-to-black or fast (this is called transient response), also known as the slope that you are looking for

In your case it LOOKS as if your images are truly binary (black and white without gray shades), so binary thresholding will work just fine.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top