How can I confirm that a template image is found in the primary image using cross correlation?

How can I really confirm that the small template image exists in another image using the cross correlation? and please which is better for template matching between normxcorr2() and xcorr2() methods?
I am working on fingerprint matching and it is required that around each minutiae point i extract a template image of a specified size. and this template image will be searched for in a different supplied fingerprint image. My understanding of correlation is that it gives the level of similarity between two signals such as images, so is there like a threshold level that if the similarity level crosses then surely the template image is in the primary image or how do I know that the template is found in the primary image?
Thanks.

2 commentaires

@Fego Etese, I saw your msg from a different thread pointing me to this one. It looks like Image Analyst has you straightened out.
@Adam Danz thanks so much for your help also, Image Analyst helped me with this question.

Connectez-vous pour commenter.

 Réponse acceptée

Threshold the correlation output image. If the signal is high enough, then you can assume the pattern is there. If there are no points above the threshold, then the pattern is not there. If you still need help, then attach your template image, an image where the template appears, and an image where the template does not appear.

5 commentaires

Thank you so much Image Analyst for your reply, it's really appreciated.
I understand what you have said, but the thing is how can I define a threshold for the correlation that confirms the presence of the template image?. Is it just some arbitrary value i should use or are there pre-defined values for a correlation threshold?
Good day Image Analyst, please can you help me out with this question? I don't know how to set a threshold for the correlation that determines whether the images match. Is there a predefined threshold or am i going to use any threshold i feel is okay?
Thank you
It's a judgment call. Only you can decide how close is "close enough".
Thanks Image Analyst. I appreciate your help. I've seen that normalized cross correlation outputs values between 1 and -1 so i can use about 0.8 to determine whether the template image is within the primary image.
But please one more question on this, sorry to bother you more. If there are two areas with the same correlation value or maybe two areas above the threshold point how do i select the one that is the correct area?
Thanks once again.
It's possible to have the same correlation value with different templates. In that case, you might want to subtract the template from the image at that location, maybe with imabsdiff(), and determine which had the lower average absolute difference.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by