템플릿 매칭

Codren·2021년 6월 25일
0

Section 1. 템플릿 매칭

1. 템플릿 매칭 (Template matching)

입력 영상에서 (작은 크기의) 템플릿 영상과 일치하는 부분을 찾는 기법

  • 템플릿 - 찾을 대상이 되는 작은 영상




2. 템플릿 매칭 원리

  • 템플릿을 입력 영상좌측 상단에서부터 우측 하단까지 모든 부분과 비교하여 스캔

  • 유사도 - 비교 부분의 동일한 정도를 나타냄 -> 최댓값 선택
  • 비유사도 - 비교 부분의 차이를 나타냄 -> 최솟값 선택




3. 템플릿 매칭 함수

  • matchTemplate 함수

  • image - 입력 영상
  • templ - 템플릿 영상 (image 보다 같거나 작은 크기, 같은 타입)
  • method - 비교 방법 (cv2.TM_으로 시작하는 플래그 지정)
  • result - 비교 결과 행렬
    - image의 크기가 W x H 이고, templ의 크기가 w x h 이면 result 크기는 (W - w + 1) x (H - h +1)
    - 템플릿 영상의 왼쪽 상단이 입력 영상 좌표 (x,y)에 있을 때 비교 결과값이 저장됨




4. 템플릿 매칭 방법




5. 템플릿 매칭 방법 비교

  • CCORR 방식은 두 영상파일의 비교 부분 픽셀 값을 곱한 것으로 큰 값일 수록 비슷하다고 판단하므로 입력 영상의 밝은 부분은 무조건 큰 값을 띠게 되어 비슷하다고 판단됨
  • 이외의 방식은 모두 제대로 템플릿 매칭에 성공




6. 유사도 및 비유사도 행렬 그레이스케일로 표현

  • 템플릿 매칭 함수의 결과값 (유사도 및 비유사도 값) 행렬을 그레이스케일로 변환
  • SQDIFF 방식은 비유사도 방식이므로 가장 비슷한 부분에 0에 가까운 값을 나타냄
  • 나머지는 유사도 방식이기 때문에 비슷할 수록 밝은 점으로 나타남




6. 템플릿 매칭 실습

  • 오른쪽의 회로 영상 파일에서 왼쪽의 크리스탈을 검출하는 템플릿 매칭

  • 핵심 코드 부분

    ① 회로 사진을 src 변수로 가져옴
    ② 하나의 크리스탈 영상 파일 (템플릿 영상)을 templ 변수로 가져옴
    ③ 회로 영상 파일에 평균 50, 시그마 10인 가우시안 잡음을 randn 함수를 이용하여 적용
    ④ ccoeff 정규화 방식으로 매치 템플릿 함수를 수행하고 유사도 결과를 res 에 저장
    ⑤ 해당 유사도 행렬을 그레이스케일로 화면에 출력하기 위해 normalize 함수 이용
    ⑥ res 변수에서 가장 큰 값을 갖는 좌표값을 얻기 위해 minmaxloc 함수 이용
    ⑦ 해당 좌표를 기준으로 템플릿의 가로크기와 세로크기를 더한 빨간색 직사각형 출력


  • 출력 결과

0개의 댓글