Stefan Manciu
Stefan Manciu

Reputation: 500

How to find out how good a match is in OpenCV?

How can I get an absolute value that tells me how much the template matched in the place it matched the best? I know about minMaxLoc() but that only tells me what the biggest value is, but I have no idea what the MAXIMUM value is so that I can get some kind of idea about how good a match it is.

I've seen people saying that you can get a percentage using normalization, but that doesn't really help me since the biggest value will always be 100%. Am I missing something?

Upvotes: 3

Views: 4853

Answers (1)

Roger Rowland
Roger Rowland

Reputation: 26259

The OpenCV documentation describes the different formulas available for calculating the template match score at each xy offset position.

If you want an easy metric, use the normalized cross-correlation by passing CV_TM_CCORR_NORMED, to matchTemplate then make sure you don't do the often-used normalization on the result before calling minMaxLoc. The maximum value will be one for a perfect match.

Don't be confused by the word "normalized" in "normalized cross-correlation", this refers to the normalization of brightness/contrast differences between the search image and the template, not to the resulting score.

Upvotes: 3

Related Questions