void matchTemplate(InputArray image, inputArrag templ,
OutputArray result, int method,
InputArray mask=noArray());
image
: (입력) 입력 영상, 8비트 또는 32비트
templ
: (입력) 템플릿 영상, image보다 작거나 같은 크기, 같은 타입
result
: (출력) 비교 결과를 저장할 행렬, 1채널 32비트 실수형
method
: 비교 방법 (TM_: template matching)
comparision | description | check point |
---|---|---|
TM_SQDIFF / TM_SQDIFF_NORMED | Sum of squared difference | 완전히 같으면 0, 다르면 값이 커짐 |
TM_CCORR / TM_CCORR_NORMED | (Cross) Correlation | 같으면 큰 값, 다르면 작은 값 |
TM_CCOEFF / TM_CCOEFF_NORMED | Correlation Coefficient | 평균 보정 후(영상 - 평균: 밝기 성분 미리 보정) Correlation 연산 |
mask
: 마스크 영상_NORMED
기능을 추가했을 때, 완전 일치는 1
, 상호 연관성이 없으면 0
, 역일치는 -1
로 수치값을 표현할 수 있음_NORMED
기능을 추가했을 때가 가장 정확하지만, 연산량이 많아진다는 약점이 있음Noise
: Gaussian Filter 사용해서 보완 가능Brightness/contrast
: Normalization 사용하면 보완 가능Resize
: 템플릿 이미지 스케일과 원본 이미지 스케일이 다르면, 잘 못찾을 수 있음Rotation
: 결과 수치가 낮은 것으로 확인되며, 회전에 취약함
실수 단위 엣지 위치 검출하기
에 대하여 2차식 에 대입해서 극값을 구하면,
함수 는 에서 최댓값(최솟값)을 가짐