Feature Descriptor
이미지에 대한 표현 혹은 유용한 정보만을 추출하여 이미지를 단순화한 패치이다.
그럼 유용한 정보란 무엇인가? 객체 검출 문제에서 단추를 찾아내는 예를 생각해보자. 이 경우, 단추의 형태를 알 수 있는 경계선이 유용한 정보가 될 것이다. 색상은 여기에서 중요한 정보가 아니다. 그리고 다른 동그란 물체(차의 바퀴, 동전 등)와 차별적인 특성을 가지고 있어야 한다.
Gradients of image
이미지에서 기울기는 x, y 방향에서 픽셀 강도(주파수) 차이를 계산한 다음 이 값을 결합해여 각 픽셀에서 기울기 벡터를 형성한다. 기울기를 계산하는 방법으로는 대표적으로 Canny 엣지 검출기, Sobel 필터가 있다.
Sobel 연산자는 두개의 3x3 커널로 이미지를 컨볼루션 연산을 하여 이미지 기울기를 계산하며 세부 단계는 다음과 같다.
1. 이미지를 Gray Scale로 변환(회색조가 아닌 경우).
2. Gx 커널로 이미지를 컨볼루션하여 이미지의 x-derivative를 계산.
3. Gy 커널로 이미지를 컨벌루션하여 이미지의 y-derivative를 계산.
4. 다음 공식을 사용하여 각 픽셀에서 그래디언트의 크기를 계산 : mag = sqrt(Gx^2 + Gy^2)
5. 다음 공식을 사용하여 각 픽셀에서 그래디언트의 방향을 계산 : theta = atan2(Gy, Gx)
결과 이미지는 검정색 배경에 흰색 선으로 원본 이미지의 가장자리를 표시
reference : chatGPT
HOG feature descriptor
HOG 특징 설명자는 이미지에서 기울기 방향의 분포(히스토그램)가 특징으로 사용된다.
이미지의 기울기(x와 y의 도함수)는 가장자리와 모서리 주변에서 가장 크다. 평평한 영역보다 가장자리와 모서리가 물체 모양에 대한 정보를 훨씬 더 많이 담고 있는 유용한 정보이다.
HOG 계산
- 이미지의 기울기 계산
- opencv의 Sobel 연산자를 사용하면 얻을 수 있음
- 8×8 셀에서 그라디언트 히스토그램 계산하기
- 셀을 나누는 이유는 간결한 표현을 하기 위해서이다. 8x8 이미지 패치에는 8x8x3=192개의 픽셀 값이 포함된다. 이 패치의 기울기는 픽셀당 2개의 값(크기와 방향)을 포함하여 총 8x8x2=128개의 숫자를 더한다.
- 8x8 셀에 기울기 히스토그램 그리기
- 히스토그램에는 각도 0, 20, 40 ... 160에 해당하는 9개의 구간이 있다.
- Gradient Direction 행렬에서 방향이 포함된 구간에 Gradient Magnitude 행렬의 같은 위치의 Magnitude 값을 입력한다(투표한다고 표현한다).
Reference
https://learnopencv.com/histogram-of-oriented-gradients/
Histogram of Oriented Gradients explained using OpenCV
Histogram of Oriented Gradients (HOG) is a feature descriptor, used for object detection. Read the blog to learn the theory behind it and how it works.
learnopencv.com
728x90
'Computer Vision' 카테고리의 다른 글
[OpenCV] cv2.VideoWriter로 동영상 생성하기 (0) | 2023.04.19 |
---|---|
[Object Tracking] SORT(Simple Online and Realtime Tracking) 논문 정리 (0) | 2023.03.13 |
[OpenCV] cv2.VideoCapture() RTSP Frame이 준비될때까지 기다리기(feat. chatGPT) (0) | 2022.12.22 |
[Python / OpenCV] M1 Mac / VScode / opencv 설치하기 (0) | 2022.06.03 |