CV(CS5670)

CS5670:Computer Vision [lec4] Local features & Harris corner detection

CV석사 2022. 3. 30. 14:18

내용에 앞서

Automatic panoramas

 해당 위치에서 여러 부분을 사진을 찍어 automatic하게 panorama가 만들어진 것을 볼 수있습니다.

 

 

 

Why extract features?

 이렇게 panorama stitching을 통해서  해당 사진을 어떻게 결합할 수 있는지 확인해보는 과정을 가지도록 하겠습니다.

 

  • step1 : extract features
  • step2 : match features

 step1을 통해서 해당하는 흰색점인 features를 extract(추출)합니다. 그리고 step2를 통해서 오른쪽과 왼쪽에 해당하는 features를 위에보이는 사진과 같이 match합니다.

  • step3 : align images

 step3에서는 match되었던 features를 통해 image를 align(연결)합니다.

 

 

Visual SLAM

Visual SLAM

 extract feature의 대표적인 예로 visual slam을 볼 수 있습니다.  slam은 미지의 환경에서 다양한 센서들을 이용하여 위치를 추정하고 3차원 환경에서 지도를 생성하는 기술입니다. 하지만 문제로 시간지연으로 인해서 최종 생성된 위치 추정의 오차(센서 관측치의 노이즈, 모호성)가 매우 커지게 되는데 이를 visual slam을 통해서 해결을 합니다. visual slam은 동시에 mapping과 lacalizatino을 실시합니다.

 

 

image matching

다비드 상에서의 image matching1
다비드 상에서의 image matching2

 첫번째 사진으로 보았을때 image matching은 비교적 쉬울 것으로 보이지만 두번째 사진에서의 image matching은 색감과 각도에 따라서 matching하기 어렵다고 생각합니다.

 

image matching3

 다음은 어떠한 알고리즘을 통해 공통된 feature를 뽑아냈습니다. 왼쪽사진의 위부분을 보면 feature를 확인할 수 있습니다.

feature matching for object search

 왼쪽 책을 오른쪽에서 찾아내려면 어떻게 할까요? 사진이 매우 복잡하기 때문에 책을 판단할 수 있는 기준이 되는 것을 구해야 합니다.

 

 

Invariant[불변] local features

  • Geometric[기하학] invariance : Translation, rotation, scale
  • Photometric[광학] invarinance : Brightness[밝기], exposure[노출], ...

 

Advantages of local features
  • Locality : occlusion[겹침]과 clutter[어수선함]에 대해서 강합니다.
occlusion, clutter
  • Quantity : single 이미지가 많으면 많을수록 메칭률이 높아 좋습니다.
  • Distinctiveness : object의 큰 database를 구분할 수 있습니다.
  • Efficiency : 실시간 퍼포먼스 실현이 가능합니다.

 

 

Motivation

 feature point로 활용되는 분야:

  1. image alignment(Panorama, 동영상 떨림 보정)
  2. 3D construction(AR/VR 아바타 생성)
  3. Motion tracking(AR/VR)
  4. object recognition
  5. image retrieval( metric learning을 통한 image DB구축)
  6. robot/car navigation 

3D reconstruction
Motion tracking
object recognition

 

 

Local features : main components[요소]

  • Detection : feature point를 특정

Detection

  • Description : 각 interest point를 둘러싼 vetor feature descriptor를 추출

Description

  • Matching : 두 개의 view에서 descriptor간의 대응 관계 확인

Matching

 

want uniqueness[고유성]

 특인한 이미지 영역에서 고유성을 만족하는 feature를 뽑아야 합니다.

 Unambiguous match : 모호하지 않아야 합니다.

 

 

Local measures of uniqueness

 각각 뽑은 feature에 대해 shift한 결과를 확인해보면 좋은 feature을 찾을 수 있습니다.

Local measures of uniquuness

 

 

Corner detection

  • window w를 (u,v)만큼 shift했을 때 변화량 확인
  • 차이 제곱을 합산하여 pixel의 변화 비교(summing up the squared differences;SSD)
  • SSD의 "error"인 E(u,v)를 정의하면

SSD "error"

여기서 I는 intensity를 뜻하며, intensity값 차이를 통해 window의 값 pixel차이를 더한 것입니다.

 

 

Taylor Series(테일러 급수)

 fR→R 실수 aR 어졌을때, f의 테일러 급수는 다음과 같은 멱급수(power series) 입니다.

 

멱급수(power series)정의

테일러 급수(Taylor Series)로 I값 유도

 

Corner Detection

  • 변화량이 큰 x,y를 찾습니다. (Taylor series expansion of I 사용)

  • u,v의 변화량이 작다면 아래 식도 성립합니다.

위 식이 정리
A,B,C를 계수로 가지는 수식
A,B,C값

 

H행렬을 가지는 식을 3D그래픽으로 확인
window가 수평edge에서 위치
window가 수직edge에서 위치

 

 

General case

  • H를 축 길이로 가진 타원으로 시각화

       Heigenvalue와 방향에 의해 결정

       Heigenvector들에 의해 결정

타원 방정식

 

 H의 eigenvalues는 λ_max, λ_min으로 정의합니다. 가장 빠른 변화를 나타내는 방향과 가장 느린 변화를 나타내는 방향을 위 사진을 통해 확인할 수 있습니다. 

 

 

Quick eigenvalue/eigenvector review

  • matrix A의 eigenvector는 다음을 만족시키는 벡터x

 

  • Scalar λ 는 x에 대응하는 eigenvalue

 Ax = λx값을 통해서 위식을 유도할 수 있습니다.

det값을 구하는 식
근의 공식
λ해 구하기

  • λ의 해를 구하고 x를 풀게 되면 다음과 같은 결과를 볼 수 있습니다.

상관 관계

  • x_max/x_min는 E의 최대/최소 증가 방향
  • λ_max/λ_min는 x_max/x_min  방향의 증가량

 여기서 λ_min 가장 주의 깊게 봐야하는 값입니다.

λ_min 자체가 detection value보다 크게 되면 어떤 방향을 shift하던지 λ_min상의 변화가 있을 것입니다. 즉, 〖→H λ_min을 통해서 최소값 계산이 가능합니다. 

 사진을 확인해보면 I는 intensity를 확인할 수 있으며 λ_max에서 흰색으로 나타난 부분은 E의 최대 방향에서의 증가량을 나타나는 edge부분에서 나타났고  λ_min에서 흰색으로 나타난 부분은 E의 최소 방향에서의 최소 방향에서의 증가량을 나타나는 corer부분에서 나타남을 확인할 수 있습니다.

 

 

Interpreting the eigenvalues

Eigenvalue를 사용한 image point 분류

 corner부분에서는 λ_1과 λ_2의 값이 모두 크고, E의 방향이 모든방향에서 증가합니다. Flat한 부분에서는 λ_1과 λ_2의 값이 모두 작고, E의 모든 방향으로 유지됩니다.

 

 

Corner detection summary

H행렬

  • 이미지 각 지점에서 gradient 계산
  • 각 픽셀마다

      GradientI_x,I_y 계산하여 H 행렬을 구성.

      eigenvalue 계산

      응답이 큰 point를 찾습니다. (λ_min >threshold)

  • λ_min local 최대값인 point를 찾아 feature를 선택

 

 

Harris operator

  • λ_min 은 feature detection을 위한 “Harris operator”로 변형

Harris Operator

  • trace는 H의 대각선의 합계
  • λ_min과 매우 비슷하지만 less expensive합니다. 이말은 eigenvector를 구할때 근의 공식도 활용하는등 계산복잡성이 있지만 harris operator는 간단한 계산처리를 갖기 때문입니다.

Harris operator와 λ _min은 매우 유사

 

 

Harris detector example

 

본 샘플
f value (red일땐 high, blue일땐 low)
Threshold (f > value)

임계값(threshold)의 값이 f vlaue가 high일때에서 red색상과 동일한 영역에 다음과 같이 흰색으로 표현이 됩니다.

 

Find local maxima of f (non-maximal suppression)

 이미지 전체에 feature point불균일하게 분포되어 있습니다. 이를 local maxima  response value이 모두 radius r내의 모든 neighbors 값보다 큰 기능만 검출합니다.

Harris features (in red)

 non-maximal supperssion을 통해서 구한 value가 harris features에서 빨간색으로 나타나게 되었습니다.

 

 

왜 Harris Corners는 너무 복잡한가?

 단순히 gradient 계산하는 것은 edge를 찾는 것이지 corner를 찾는 것이 아니기 때문입니다.