728x90
728x90
HOG(Histogram of Oriented Gradients)란?
• 영상의 지역적 그래디언트 방향 정보를 특징 벡터로 사용
• 2005년 CVPR 학회에서 보행자 검출 방법으로 소개되어 널리 사용되기 시작함
• 이후 다양한 객체 인식에서 활용됨
HOG는 edge 정보를 이용하고, Haar, LBP는 영역과 영역의 밝기차를 이용
HOG 알고리즘
1. 부분영상 추출
2. 크기 정규화
3. Gradient 계산(방향과 크기를 알 수 있다)
4. 8*8 크기의 셀(cell)분할(한 cell당)
5. 방향 히스토그램의 bin 개수 = 9
==> 360도를 9개 구간으로 나눴다
[블록 히스토그램 구하기]
• 8x8 셀 4개를 하나의 블록을 지정
→ 즉, 블록 하나의 크기는16x16
→ 8픽셀 단위로 이동: stride = 8
→ 각 블록의 히스토그램 빈(bin) 개수는 4x9=36개
[특징 벡터의 차원]
하나의 부분 영상 패치에서의 특징 벡터 크기
(stride= 8, (세로-1) * (가로-1) * histogram bin)
→ 7 x 15 x 36 = 3780
# 동영상 불러오기
cap = cv2.VideoCapture('ch08\\video\\vtest.avi')
if not cap.isOpened():
print(('video open failed'))
sys.exit()
# 보행자 검출을 위한 HOG 기술자 설정
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
'''
cv2.HOGDescriptor_getDefaultPeopleDetector()
# retval : 미리 훈련된 특징 벡터. numpy.ndarray. shape=(3781, 1)
'''
while True:
ret, frame = cap.read()
if not ret:
break
# 매 프레임마다 보행자 검출
detected, _ = hog.detectMultiScale(frame)
'''
cv2.HOGDescriptor.detectMultiScale(img, hitThreshold=None, winStride=None,
padding=None, scale=None, finalThreshold=None,
useMeanshiftGrouping=None) -> foundLocations, foundWeights
img: 입력 영상. cv2.CV_8UC1 또는 cv2.CV_8UC3.
hitThreshold: 특징 벡터와 SVM 분류 평면까지의 거리에 대한 임계값
winStride: 셀 윈도우 이동 크기. (0, 0) 지정 시 셀 크기와 같게 설정.
padding: 패딩 크기
scale: 검색 윈도우 크기 확대 비율. 기본값은 1.05.
finalThreshold: 검출 결정을 위한 임계값
useMeanshiftGrouping: 겹쳐진 검색 윈도우를 합치는 방법 지정 플래그
# -> foundLocations, foundWeights
# 영역, 신뢰도
'''
# 검출 결과 bbox 생성
for (x,y,w,h) in detected:
c = (random.randint(0,255), random.randint(0,255), random.randint(0,255))
cv2.rectangle(frame, (x,y,w,h), c, 2, cv2.LINE_AA)
cv2.imshow('frame', frame)
if cv2.waitKey(10) == ord('q'):
break
728x90
'OpenCV > OpenCV-Chapter' 카테고리의 다른 글
CH09 OpenCV-Python SIFT, KAZE, AKAZE, ORB.. (0) | 2021.12.25 |
---|---|
CH09 OpenCV-Python 특징점 검출(Corner) (0) | 2021.12.25 |
CH08 OpenCV-Python 캐스케이드(Cascade) (0) | 2021.12.24 |
CH08 OpenCV-Python 템플릿 매칭(Template matching) (0) | 2021.12.24 |
CH08 OpenCV-Python Moment 기반 객체 검출 (0) | 2021.12.24 |
댓글