8-3. 템플릿 매칭(1): 이해하기

템플릿 매칭(Template Matching)

    찾을 대상이 되는 작은 영상 단위를 템플릿(Tamplate, 또는 패치)이라고 부르며, 이와 일치하는 부분을 입력 영상에서 찾는 기법

     최소값, 최대값 찾는 함수로 cv2.minMaxLoc을 사용한다.

템플릿 매칭의 원리 (출처: FastCampus)

    템플릿 매칭 함수: cv2.matchTemplate(image, templ, method, result, mask) -> result

     image는 8-bit or 32-bit 입력 영상

     templ는 템플릿 영상으로 image보다 크기가 작고 타입은 같은 영상

     method는 cv2.TM_으로 시작하는 비교 방법 플레그. 상세한 내용은 아래 그림 참고

     result는 비교 결과 행렬(numpy.float32 타입을 가진 numpy.ndarray). image의 크기가 (W, H), templ의 크기가 (w, h)이면 result의 크기는 (W - w + 1, H - h + 1)

method에 사용 가능한 flag 모음 (출처: FastCampus)
다양한 method flag별 템플릿 매칭 결과 (출처: FastCampus)

 

원본 영상에 밝기 증가와 가우시안 잡음을 추가 후 템플릿 매칭을 진행 했다. 초록색으로 매칭된 부품의 경우 반전되어 있는 템플릿으로 테스트 했음에도 불구하고 인식된 것을 볼 수 있다.


8-4. 템플릿 매칭(2): 인쇄체 숫자 인식

인식(Recognition)

    감지된 물체를 여러 다른 클래스 중에서 가장 유사한 클래스로 분류하는 것

    숫자 인식 방법

     1. 템플릿 생성: Consolas 폰트로 쓰여진 숫자 영상을 0부터 9까지 [100x150] 크기로 정규화하여 bmp 파일로 저장

     2. 숫자 외곽선 list 생성 후 사각형 생성

     3. 사각형 기준으로 부분 영상 추출 -> 크기 정규화

     4. 템플릿 매칭 함수로 0-9까지 비교 후 최댓값을 가장 높은 매칭 템플릿으로 선정

     5. 선정된 템플릿 숫자로 결과 영상에 출력

 

숫자 인식 방식 순서 이해도 (출처: FastCampus)
숫자 인식 결과. 폰트가 달라지면 다른 숫자로 인식하는 모습을 ㅂ


인증 타임

템플릿 매칭의 경우 다양한 템플릿을 보유해야만 더 높은 정확도로 인식 할 수 있다고 느꼈다.

전자회로 영상에서 부품을 템플릿으로 인식하는 방식은 매우 흥미로웠는데 실제 카메라로 보드를 인식하고 부품 이름 입력 시 해당 부품이 사용되었는지를 실시간으로 찾아주는 프로그램을 만들어보면 재미있을거 같다.

8-3. 공부 인증 사진
8-4. 공부 인증 사진


#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online

 

패스트캠퍼스(FastCampus) 강의 둘러보러 가기 

   

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.


 

+ Recent posts