[OpenCV] Template Matching

October 29 2021

Template Matching

입력 영상에서 작은 크기의 부분 영상 위치를 찾고 싶은 경우에 템플릿 매칭(Template Matching)을 사용합니다.

  • 템플릿(Template) : 찾고자 하는 대상

  • 템플릿 매칭 : 작은 크기의 템플릿 영상을 입력 영상 전체 영역에 대해 이동하면서 가장 비슷한 위치를 수치적으로 찾아내는 방식

템플릿 매칭 동작 방식

입력영상의 모든 위치에서 템플릿과 유사도(Similarity)와 비유사도(dissimilarity)를 계산하고, 그 결과를 그레이스케일 영상으로 나타냅니다.

  • 유사도를 계산할 경우에는 템플릿 영상과 비슷한 부분에서 값이 작게 나타납니다.

  • 비유사도를 계산할 경우에는 템플릿 영상과 비슷한 부분에서 값이 작게 나타납니다.

matchTemplate() 함수

opencv의 matchTemplate() 함수를 사용하여 템플릿 매칭을 수행할 수 있습니다.

파라미터

  • image : 입력영상
  • templ : 템플릿 영상. 입력영상 image보다 같거나 작아야 하며, image와 타입이 같아야 함
  • result : 비교 결과를 저장할 행렬. CV_32FC1 타입
  • method : 템플릿 매칭 비교 방법
  • mask :
    • 찾고자 하는 템플릿의 마스크 영상
    • templ과 같은 크기, 같은 타입이어야 함
    • TM_SQDIFF 와 TM_CCORR_NORMED 방법에서만 지원가능

유사도 맵 또는 비유사도 맵은 result인자로 반환됩니다.

image의 크기가 $W x H$ 이고 templ 크기가 $x x h$ 인 경우, result 행렬의 크기는 (W - w + 1) x(H - h + 1)로 결정됩니다.

method (템플릿 매칭 비교 방법)

  • TM_SQDIFF : 제곱차 매칭 방법
  • TM_SQDIFF_NORMED : 정규화된 제곱차 매칭 방법
  • TM_CCORR : 상관관계 매칭 방법
  • TM_CCORR_NORMED : 정규화된 상관관계 매칭 방법
  • TM_CCOEFF : 상관관계 매칭 방법
  • TM_CCOEFF_NORMED : 정규화된 상관관계 매칭 방법

TM_SQDIFF : 제곱차 매칭 방법

두 영상이 완벽하게 일치하면 0이 되고 서로 유사하지 않으면 0보다 큰 양수를 갖습니다.

result결과 행렬에서 최솟값 위치를 가장 매칭이 잘 된 위치로 선택해야 합니다.

TM_SQDIFF_NORMED : 정규화된 제곱차 매칭 방법

영상의 밝기 차이 영향을 줄여 주는 정규화 수식이 추가된 것

TM_CCORR : 상관관계 매칭 방법

두 영상이 유사하면 큰 양수가 나오고 유사하지 않으면 작은 값이 나옵니다.

TM_CCORR_NORMED : 정규화된 상관관계 매칭 방법

영상의 밝기 차이 영향을 줄여 주는 정규화 수식이 추가된 것

가장 좋은 결과를 제공하지만 계산 수식이 가장 복잡하여 연산량이 많을 수 있습니다.

TM_CCOEFF : 상관관계 매칭 방법

비교할 두 영상을 미리 평균 밝기로 보정한 후 상관관계 매칭을 수행하는 방식입니다.

두 비교 영상이 유사하면 큰 양수가 나오고, 유사하지 않으면 0에 가까운 양수 또는 음수가 나옵니다.

result 결과 행렬에서 최댓값 위치가장 매칭이 잘 된 위치로 선택해야 합니다.

TM_CCOEFF_NORMED : 정규화된 상관관계 매칭 방법

영상의 밝기 차이 영향을 줄여 주는 정규화 수식이 추가된 것

매칭 결괏값이 -1 에서 1사이의 실수로 나타납니다. 두 방법 모두 결괏값이 1에 가까울 수록 매칭이 잘 되었음을 의미합니다

### Template Matching을 이용한 OCR논문

Optical Character Recognition By Using Template Matching (Alphabet)

Categories:

Updated:

Leave a comment