Is there any way to identify the fingerprint contents in an image using matlab?

5 views (last 30 days)
If the image is mixed with fingerprints and certain characters, is there any way to pick up the fingerprints and leave the characters

Accepted Answer

Cedric
Cedric on 16 Aug 2015
Edited: Cedric on 16 Aug 2015
Here is a lightweight approach that is absolutely not solid/stable; .. could be a starting point?
I = imread( 'fingerprint001.jpg' ) ;
bw = ~im2bw( I ) ;
% - Extract large blobs as mask.
mask = bwareafilt( bw, [400 Inf] ) ;
bw2 = bw & ~mask ;
% - Use bw2 as mask for I.
I2 = I ;
I2(~repmat(bw2,1,1,3)) = 0 ;
% - Display
figure() ;
set( gcf, 'Units', 'normalized', 'Position', [0.1, 0.1, 0.8, 0.8] ) ;
subplot( 2, 2, 1 ) ;
imshow( I ) ;
title( 'Original' ) ;
subplot( 2, 2, 2 ) ;
imshow( bw ) ;
title( 'BW' ) ;
subplot( 2, 2, 3 ) ;
imshow( mask ) ;
title( 'Mask' ) ;
subplot( 2, 2, 4 ) ;
imshow( bw2 ) ;
title( 'Mask''ed' ) ;
figure() ;
set( gcf, 'Units', 'normalized', 'Position', [0.1, 0.1, 0.8, 0.8] ) ;
imshow( I2 ) ;
==== FORMER =============================================================
I cropped bands, but it is counter productive.
% - Crop bands.
id = find( bw(:,1), 1 ) ;
bw = bw(id:end,:) ;
idl = find( ~bw(fix(end/2),:), 1 ) ;
idr = find( ~bw(fix(end/2),:), 1, 'last' ) ;
bw = bw(:, idl:idr) ;
  22 Comments
Cedric
Cedric on 21 Aug 2015
Edited: Cedric on 22 Aug 2015
Ok, then you can reduce the complexity of the question by stating that:
  • The fingerprint does not need to be detected algorithmically. By this I mean that if there are only 30 images, you can pre-process them all by hand and keep only the area with the fingerprint.
  • The algorithm for enhancing remaining areas does not need to define how successful it is if the final analysis is performed visually. You can check out the result visually and determine if it is good or not, and refine parameters.
If these two statements are correct, the question becomes simpler, because there is no need for algorithms that detect region(s) of interest, that evaluate what operations to perform in these regions, to evaluate how successful these operations were.
MATLAB may not be the best solution though; have you tried asking on a Photoshop or a Gimp forum? I am mentioning these two because you may realize that each image needs a specific treatment, and there may be no way to find one type of processing that enhance all of them. In such case, you will have to process them individually anyway.
Finally what is the purpose? Enhancing means enhancing for a given purpose. To illustrate, if you need to detect specific features with an algorithm, enhancing may mean increasing the contrast. Doing this, you loose details, but you make macroscopic features stand out. Now if the purpose is to analyze the outcome visually, then you may prefer keeping the details.

Sign in to comment.

More Answers (2)

Walter Roberson
Walter Roberson on 15 Aug 2015
Use an OCR (Optical Character Recognition) routine to locate the characters. Then you can remove them, or remove everything except them, depending upon your needs.
The OCR step is needed because there is a lot of variety in what characters can look like, and the way you have defined the process it is necessary to only locate some kinds of characters but not other kinds. (The general problem of locating all kinds of characters is not solvable, as any given mark could be a character in some language.
  7 Comments
Walter Roberson
Walter Roberson on 29 Aug 2015
https://en.wikipedia.org/wiki/Infrared
Infrared (IR) is invisible radiant energy, electromagnetic radiation with longer wavelengths than those of visible light, extending from the nominal red edge of the visible spectrum at 700 nanometers (frequency 430 THz) to 1 mm (300 GHz) (although people can see infrared up to at least 1050 nm in experiments). Most of the thermal radiation emitted by objects near room temperature is infrared.

Sign in to comment.


Image Analyst
Image Analyst on 17 Aug 2015
I don't see why "cartoons" are needed in forensics. Anyway, there is no built-in fingerprint code. You're going to need some sophisticated algorithm way beyond what anyone here knows, especially for such bad fingerprint images as you showed here. Please go to VisionBib and find an algorithm there then code it up. Of course you must realize it won't be simple or short if it's smart enough to handle such poor quality images. And even the best algorithm out there might not work so great with your highly degraded images.
  2 Comments
D Joseph
D Joseph on 17 Aug 2015
Edited: D Joseph on 17 Aug 2015
Thanks@Analyst. But I couldn't find any algorithm in VisionBib
D Joseph
D Joseph on 17 Aug 2015
Cartoons are not needed.Its just to display as noises. I want the fingerprint texture components.

Sign in to comment.

Categories

Find more on Language Support 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!