어떻게 edge를 검출 할 수 있을까?
- 픽셀의 변화량이 가장 큰 이웃($k=1$)을 고려할 경우
- 아래의 그림과 같이 변화량이 threshold이상인 것만 고려 할 경우 edge를 검출 할 수 있음
Histogram of Gradient
Histogram of Gradient은 픽셀의 변화량의 각도와 크기를 고려하여 히스토그램 형태의 feauture를 추출하는 방법
- Histogram of Gradient (Keypoint Descriptor)는 픽셀값의 변화량을 나타내는 척도로 주로 이미지의 texture를 표현
- 위 그림은 가우시안 필터($\sigma=0.1$)를 사용해서 weighted magnitude를 표현한 그림을 나타냄
가우시안 필터란?
아래의 그림과 같이 커널의 weights가 중심점에서 부터 가우시안 분포를 따르는 것임
- $\sigma = 2$ 인 30x30 Gaussian kernel(왼쪽그림)
- $\sigma = 5$ 인 30x30 Gaussian kernel(오른쪽 그림)
Histogram of Gradient: 이미지 안의 픽셀들의 방향의 변화(intensity)를 나타냄
- 3 x 3 kernel를 주로 사용
- 커널이 움직일때 마다 다음과 같은 연산이 이루어 지며, 커널의 중심점을 기준으로 인접한 행과 열의 차이를 $dx$, $dy$라고 정의
- 아래의 식 $I(c,r)$은 RGB값을 intensity로 바꿔주는 식을 나타냄
$$I(c,r)=0.2125*r+0.7152*g+0.0722*b$$
- 1번 픽셀은 중심점$(c,r)$으로 부터 한 칸 위쪽인 ($c$, $r-1$)인 곳에 위치함
- 2번 픽셀은 중심점$(c,r)$으로 부터 한 칸 왼쪽인 ($c-1$, $r$)인 곳에 위치함
- 3번 픽셀은 중심점$(c,r)$으로 부터 한 칸 아래쪽인 ($c$, $r+1$)인 곳에 위치함
- 4번 픽셀은 중심점$(c,r)$으로 부터 한 칸 오른쪽인 ($c+1$, $r$)인 곳에 위치함 앞에서 설명한 $dx$, $dy$를 이용하여 Gradient orientation과 Gradient magnitude를 구하고자 함
- Gradient orientation: 그래디언트의 방향
$$\theta = tan^{-1}(\frac{dy}{dx})$$
- Gradient magnitude: intensity의 변화량(크기)
$$magnitude = \sqrt{dy^2+dx^2}$$
아래의 그림처럼 픽셀들의 값에 따라 다양한 Gradient orientation(기울기)를 가질 수 있다는 것을 확인 할 수 있음
Gradient의 크기와 방향을 구하는 예제
Histogram for gradients
그럼, 최종적으로 Gradient orientation & Gradient magnitude을 이용해서 히스토그램 (HoG)를 구하는 방법을 살펴보자.
구체적으로, 히스토그램의 각 Bin에 어떤 값들이 채워지는지 확인해 보자.