분류 전체보기
[OpenCV with Python] 영상 분할과 객체 검출 : HOG 알고리즘 - 보행자 검출
HOG(Histogram of Oriented Gradients) 란? 영상의 지역적 그래디언트 방향 정보를 특징 벡터로 사용 2005년 CVPR학회에서 보행자 검출 방법으로 소개되어 널리 사용되기 시작함 이후 다양한 객체 인식에서 활용됨 HOG 알고리즘 전체 영상에서 부분 영상을 추출해서 부분 영상의 특징을 추출하여 전신을 판단하는 알고리즘이다. 작동 순서 임의의 크기의 사각형을 정의해서 부분 영상을 추출 추출한 부분 영상의 크기를 정규화 (64X128) 64X128 영상의 그래디언트를 계산하여 방향 성분과 크기 성분을 파악 64X128 영상을 8X8 크기의 셀(cell)로 분할 각 셀마다 방향과 크기 성분을 이용하여 방향 히스토그램을 계산 각각의 셀에서 방향 성분을 9개로 구분하여 9가지 방향에 대한..
[OpenCV with Python] 영상 분할과 객체 검출 : 캐스케이드 분류기 - 얼굴 검출
캐스케이드 분류기란? 캐스케이드는 직렬로 연결되어 있다는 것을 의미한다. 얼굴 검출 용도로 많이 쓰이며 눈, 보행자, 자동차 번호판까지 검출 가능하다. Viola – Jones 얼굴 검출기 수 천개의 얼굴 영상(Positive)과 얼굴이 아닌 영상(Negative)을 훈련하여 분류 모델을 구현하고 해당 모델을 이용해서 입력 영상 속 얼굴을 검출하는 방식 AdaBoost에 기반하여 강한 분류 성능을 갖고있다. (간단한 형태의 분류기를 여러개 모아서 강한 형태의 분류기를 만듦) 유사 하르(haar-like) 특징을 사용 캐스케이드(cascade) 방식을 통한 빠른 동작 속도를 갖고있다. 기존 얼굴 검출 방법보다 약 15배 빠르게 동작 유사 하르 특징 Haar-like features 사각형 형태의 필터 집합..
[OpenCV with Python] 영상 분할과 객체 검출 : 템플릿 매칭2 - 인쇄체 숫자 인식
인식(Recognition) 이란? Classifying a detected object into different categories 여러 개의 클래스 중 가장 유사한 클래스 선택 숫자 템플릿 영상 생성 Consolas 폰트로 쓰여진 숫자 영상을 digit0.bmp~digit9.bmp로 저장 숫자 영상의 크기는 100 x 150 크기로 정규화 인쇄체 숫자 인식 방법 💬 인쇄체 숫자 인식 예제 import sys import numpy as np import cv2 def load_digits(): img_digits = [] for i in range(10): filename = './digits/digit{}.bmp'.format(i) img_digits.append(cv2.imread(filenam..
[OpenCV with Python] 영상 분할과 객체 검출 : 템플릿 매칭 1
템플릿 매칭(Template matching)이란? 입력 영상에서(작은크기의) 템플릿 영상과 일치하는 부분을 찾는 기법 템플릿 : 찾을 대상이 되는 작은 영상. 패치(patch). 템플릿 매칭은 노이즈와 밝기 변화에 강하다. CCOFF 연산을 이용하여 밝기 보정을 해서 매칭하기 때문이다. 가우시안 노이즈의 경우에 correlation 방법이 잘 동작한다. 다만 기본적으로 같은 위치에 있는 픽셀 값들을 곱하고 더해서 유사도를 판단하는 방식이기 때문에 회전, 크기변환이 심하게 일어난 경우 찾고자하는 템플릿 영상의 위치를 제대로 찾을 수 없다. 다른 방법으로 키포인트 로컬 피쳐 매칭, 로컬 피쳐 포인트 매칭을 생각해볼 수 있다. 템플릿 동작 방식 필터링에서 동작하던 방식이랑 유사하다. 템플릿 영상을 입력 영상..