CV & ML

[Perception] 3-1. Visual Features

LinZBe4hia 2022. 3. 19. 11:40

오늘은 이미지에서 뽑아내는 특징점에 대해 알아보도록 하겠습니다.

 

영상에서 특징점은 왜 필요할까요?

1. localization과 reconstruction

2. 장소 인식 등 서로 다른 것들은 분류

 

어떤 것들이 특징점이 되야 할까?

어떻게 촬영되든 계속해서 특징점으로 인식(detect)되어야 -> detection invariance

다른 영상에 찍힌 같은 특징점은 이웃들의 상태를 묘사하는 정보에 의해서 제대로 짝지어 져야 함 -> descriptor invariance

 

대표적인 특징 추출 방법: SIFT

scale space 개념

위키피디아에는 이렇게 적혀있다.

2D 영상이 있을 때, 선형적인 scale-space은  2D gaussian filter을 이용하여 convolution 한 신호들의 집합으로 표현할 수 있다. 밑에 그림은 t(가우시안의 분산)에 따른 영상의 scale-space를 나타낸 그림이다. 

t에 따른 scale-space

이 때 신호는 normalize한다. 그 이유는 laplacian 응답 신호가 사라지지 않도록 하기 위함이다. 

 

분산 값이 서로 다른 가우시안 블러링 된 이미지들을 서로 빼서 Difference of Gaussian(DoG) 영상들을 생성한다. 

SIFT 로 keypoint 찾기

우리는 앞서서 scale space에 대해 배웠고, 이 scale space로 DoG를 계산하는 방법도 배웠습니다.

이제는 Laplacian of Gaussian을 생성하여 scale invariant 한 keypoint를 찾는 방법에 대해 배워보겠습니다. 

영상에 한 점을 뽑아 같은 scale에서 8개의 이웃점들과 비교, 현 scale보다 한단계 coarser, finer 한 scale-space에서 9개의 이웃점과 비교하여 local extrema인 것은 가능성있는 keypoint라고 봅니다. 

 

 

Keypoint Descriptor

rotation-invariant 한 특징을 찾기 위해서는 먼저 이웃들과의 gradient를 계산한다. 영상을 16x16 칸으로 나눠 각 칸의 gradient을 계산하여 360도를 표현하기 위한 36 bin에 맞는 방향을 선택한다. 그런 다음 4x4 로 histogram을 다시 계산한 후에 가장 dominant한 gradient를 가진 방향을 일정 방향 (예를 들면 벡터를 x축 방향으로 바꾸기)하게 나열하면 모든 특징을 rotation invariant하게 나타낼 수 있다. 

다음은 SIFT를 사용하여  뽑힌 keypoint와 descriptor 들 모습이다. 

SIFT를 사용하여 추출된 keypoint와 descriptor

참고한 블로그

https://medium.com/data-breach/introduction-to-sift-scale-invariant-feature-transform-65d7f3a72d40