David의 개발 이야기!

[CV Lecture 08] Feature Description, Feature Matching 본문

컴퓨터비전

[CV Lecture 08] Feature Description, Feature Matching

david.kim2028 2023. 12. 3. 17:03
반응형

시작하기 앞서, 용어를 설명하려고 한다. Feature Description 은, 여러 필터와 detector 들을 통해 검출된 feature points 주변의 정보를 요약하여, 그 특징점을 기술하는 단게이다. 이 과정은, 특징점의 위치뿐만 아니라, 그 특징점이 어떤 외형적인 특성을 가지고 있는지 포착하는 것을 목표로 한다. 이는, 다른 이미지에서 같은 특징점을 식별하고 매칭하는데 사용할 수 있는 정보를 제공한다. 

 

 

우리는 이전 포스팅까지, 어떻게 interest points들을 찾는지 배웠다. 이제 우리의 다음 목표는, corresponding pair를 찾는것이다!

 

위의 작업은 매우 어려운 작업중 하나인데, 왜냐하면, 이미지의 색깔도 고려해야하며, 또, 다양한 appearance 및 various geometry 가 있기 때문이다. 

 

A. What is the best descriptor of image feature

1. Pixel Value 비교하기

downsample 하고, vector 형태로 reshape하여, pixel 값들을 비교한다. 

이 경우, geometry 와 appearance가 변하지 않는다면, 괜찮다.

 

2. Image Gradient

 

이 경우, feature 가 밝기나 색상변화에 영향을 받지 않는다. (절대적인 intensity value 에 강인하다)

 

그러나, deformations (이미지의 회전, 반전 등)에서는 변화가 없다.

 

3. Color Histogram

 

color histogram으로 하면 위와 같은 문제가 있다.

 

4. Spatial Histogram

 

이 경우, 이미지의 회전에 취약하다는 것을 알 수 있다.

+ histogram의 경우, 회전이나, 변환해도 유지되는것이 장점이었으나, 격자를 나누면 이러한 장점이 사라진다. 

 

5. Orientation Normalization

 

특징점 주변의 patch를 그 패치의 지배적인 그라디언트 방향으로 회전시켜, 모든 패치를 표준적인 방향으로 맞추는 것을 목표로한다. 이는 회전에 불변성을 갖도록 하여, 이미지가 회전되더라도, 일관되게 식별할수 있도록 돕는다.

 

  • Rotate patch according to its dominant gradient orientation: 이미지 내의 각 특징점에서, 주변 픽셀의 그래디언트를 계산하고, 이 그래디언트들의 방향성을 기반으로 가장 강한 방향(지배적인 그래디언트 방향)을 찾습니다. 그런 다음 특징점을 중심으로 패치를 이 지배적인 방향에 맞추어 회전시킵니다.
  • This puts the patches into a canonical orientation: 회전을 통해 모든 패치가 동일한 방향성을 가지도록 정렬함으로써, 특징 기술자를 생성할 때 각 특징점 주변의 정보가 더 일관성 있게 표현됩니다.
  • Save the orientation angle 𝜃 along with (x, y, s): 특징점의 위치(x, y), 스케일(s), 그리고 오리엔테이션(𝜃)을 기록합니다. 이 정보는 나중에 특징점을 매칭하거나 인식 작업에 사용됩니다.

 

 

이제 여기까지가 딥러닝이 나오기 전까지 사용한 방식이다


 

B. Scale - Invariant Feature Transform : SIFT

1. SIFT 알고리즘 개요

이제부터, SIFT 알고리즘에 대해 공부를 해보려고 한다. 

SIFT 알고리즘은, Detector와, Descriptor 부분으로 나뉘어있다.

 

1. Scale-space extrema detection

2. Keypoint localization                                        -> detector

3. Orientation assignment

--------------------------------

4. Keypoint descriptor                                         -> descriptor 

 

 

여기서, detector 의 역할은, 이미지에서 특징점을 검출하는 것을 의미하며,

descriptor 는 검출된 특징점을 기술하는 역할을 수행한다. 

 

각각의 단계를 좀 더 설명하면,

 

1. Scale-Space Extrema Detection

목적 : 다양한 크기의 객체를 인식하기 위해 이미지의 스케일 공간 극값을 찾는 단계.

방법 : 가우시안 블러 ( Gaussian Blur ) 를 다양한 시그마 값으로 적용하여 이미지의 여러 스케일을 생성. 이렇게 생성된 스케일 공간에서 DoG를 계산하여, 극값을 찾는다. 이 극값들이 잠재적인, feature 후보가 된다. 

 

 

2. Keypoint localization

목적 : 극값 검출 단계에서, 찾은 후보들 중에서, 실제로 유용한 특징점을 선별하는 단계.

방법 : 각 후보점에 대해 세밀한 위치, 스케일, 그리고 비교적 높은 대비를 가진 특징점을 선택. 이때 저대비 특징점과 에지에 해당하는 특징점은 제거하여, 안정적인 특징점만을 남긴다.

 

Reject too low response:

 

 

3. Orientation Assignment

목적 : 각 특징점에 방향을 할당하여, 회전에 불변한 특성을 부여하는 단계.

방법 : 특징점 주변 영역의 그라디언트 방향과 크기를 계산해 히스토그램을 만든다. 히스토그램에서 가장 높은 높은 봉우리를 찾아, 해당 방향을 특징점의 주 방향으로 할당. 

 

 

 

 

 

 

 

 

1,2,3 이 dectector


4번은, descriptor

 

 

4. Keypoing Descriptor

목적 : 각 특징점 주변 영역을 기반으로 Descriptor 를 생성하여 특징점을 묘사하는 단계.

방법 : 각 특징점 주변의 지역을 작은 하위 블록으로 나누고, 각 블록에서 그라디언트 히스토그램을 계산. 이 히스토그램들을 결합해 각 특징점의 Descriptor를 형성. Descriptor는 특징점 주변의 local gradient 정보를 저장하여, 이미지가 변형되거나, 회전해도 인식 가능.

2. SIFT 알고리즘 특징

1. 시점 변화에 강함. 

2. 조명 변화에 강함

3. 빠르고 효율적임

4. 다양한 코드 활용 가능

 

C. Feature Matching

 

 

결국 feature는 uniqueness 가 중요한데, SIFT 알고리즘에서는 첫번째 매칭 후보(d1)와, 두번째 매칭 후보 (d2)간의 비율을 사용한다. 매칭 후보는 "거리"를 사용해서 결정하며, 가까운것을 후보군으로 판단한다.

 

예를 들어, 0.1, 0.11 거리가 있는 후보군과, 0.2 , 1.0 이 있는 후보군이 있다면, 후자가 5배 차이 나기때문에, 차이가 더 크다고 판단하여, feature point 라고 간주하는 로직이다.   ( NNDR_Nearest Neighbor Distance Ratio )

 

단순한 거리 기반으로만 한다면, 아래 그림에서는 문제가 발생할 수 있다.

 

 

NNDR은 위와 같은 매칭이 모호할 경우, 높은 값을 주어, 매칭을 거부하게끔 할 수 있다. 

 

NNDR은 다음과 같이 구한다. 

 

위의 예시로 든 숫자로보면, 0.1 / 0.11 로, 0.2 / 1.0 로 구할 수 있다.  첫번째 예시는 0.91, 두번째 예시는 0.2 이기에, 두번째가 더 신뢰성이 높다고 볼 수 있다.

 

NNDR < Threshold 일 경우에, matching 이라고 판단한다. 

(낮을 수록 matching )

 

`

 

왼쪽 이미지 -> 오른쪽이미지

오른쪽이미지 -> 왼쪽 이미지 모두 체크해서 matching을 결정한다.

 

 

오늘은 Feature matching 하는 방법을 배웠다!

반응형
Comments