๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Theory/Computer Vision

[CV] Scale Invariant Feature Transform (SIFT) : ์˜์ƒ์˜ ์Šค์ผ€์ผ์— ๋ถˆ๋ณ€ํ•œ Feature

by ๋ญ…์ฆค 2022. 3. 23.
๋ฐ˜์‘ํ˜•
Keypoint ?

 

Keypoint(ํŠน์ง•์ )๋Š” ๋ฌผ์ฒด์˜ ๋ชจ์–‘, ํฌ๊ธฐ, ์œ„์น˜๊ฐ€ ๋ณ€ํ•ด๋„ ์‰ฝ๊ฒŒ ์‹๋ณ„์ด ๊ฐ€๋Šฅํ•œ ์œ„์น˜์ด๊ณ  ์นด๋ฉ”๋ผ์˜ ์‹œ์ , ์กฐ๋ช…์ด ์ด ๋ณ€ํ•ด๋„ ์ด๋ฏธ์ง€์—์„œ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๋ฅผ ๋œปํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์œ„์น˜๋Š” ๋Œ€๋ถ€๋ถ„ corner point์ด๊ณ  ๋Œ€๋ถ€๋ถ„์˜ keypoint ์ถ”์ถœ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์ด ์ด๋Ÿฌํ•œ ์ฝ”๋„ˆ๊ฒ€์ถœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ๋‹ค.

 

* ์ฝ”๋„ˆ๊ฐ€ ์•„๋‹Œ ๋ฌผ์ฒด์˜ ๋‚ด๋ถ€ ๋˜๋Š” ๋ฐฐ๊ฒฝ์ด๋ฉด ๊ทธ ์ฃผ๋ณ€๊ณผ ํŠน์ง•์ด ๋น„์Šทํ•˜๊ธฐ ๋•Œ๋ฌธ์— keypoint์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ์ˆ˜ ์—†๋‹ค.

 

๋•Œ๋ฌธ์— ์˜์ƒ์—์„œ keypoint๋ฅผ ์ถ”์ถœํ•˜๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์ ์˜ ์˜์ƒ์„ ๋งค์นญํ•˜๊ฑฐ๋‚˜ ํŠน์ • ๋ฌผ์ฒด๋ฅผ ์ถ”์ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

Descriptor ?

 

Keypoint๋Š” ์ด๋ฏธ์ง€์—์„œ์˜ ํŠน์ง•์ด ๋˜๋Š” ์ขŒํ‘œ๋ฅผ ์˜๋ฏธํ•˜๊ณ  descriptor๋Š” ํ•ด๋‹น keypoint์—์„œ ์ถ”์ถœํ•œ local ์ด๋ฏธ์ง€ ํŠน์ง• ์ •๋ณด์ด๋‹ค. ๋Œ€ํ‘œ์ ์ธ local invariant descriptor๋กœ๋Š” SIFT, SURF, ORB ๋“ฑ์ด ์žˆ๊ณ  descriptor ๊ณ„์‚ฐ์„ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  keypoint๋ฅผ ์ถ”์ถœํ•ด์•ผ ํ•œ๋‹ค.

 

 

Harris Corner

Harris Corner๋Š” ์ฝ”๋„ˆ ๋ถ€๋ถ„์„ ์ฐพ๋Š” descriptor๋กœ ํ‰ํ–‰์ด๋™, ํšŒ์ „์— invariant ํ•˜๊ณ  affine ๋ณ€ํ™”, ์กฐ๋ช… ๋ณ€ํ™”์—๋„ ์–ด๋Š์ •๋„ robust ํ•˜์ง€๋งŒ ์˜์ƒ์˜ scale ๋ณ€ํ™”์— ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

Scale Invariant Feature Transform (SIFT)

SIFT๋Š” Harris corner์˜ scale ๋ณ€ํ™”์— ๋ฏผ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Difference of Gaussian(DoG)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ scale ์ถ•์œผ๋กœ๋„ ์ฝ”๋„ˆ์„ฑ์ด extrema์ธ ์ ์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ฆ‰ SIFT๋Š” ์˜์ƒ์˜ scale์—๋„ invariant ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

SIFT feature ์ถ”์ถœ ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

  1. Scale space ์ƒ์„ฑ
  2. Difference of Gaussian (DoG) ์—ฐ์‚ฐ
  3. Keypoint ์ถ”์ถœ
  4. Optimal keypoint ์„ ํƒ
  5. Keypoint ๋ฐฉํ–ฅ ํ• ๋‹น
  6. SIFT ํŠน์ง• ์ถ”์ถœ

 

1. Scale-space ์ƒ์„ฑ

  • ์šฐ์„ , ๋‹ค์–‘ํ•œ scale์˜ ํŠน์ง•์„ ์ถ”์ถœํ•˜๊ธฐ์œ„ํ•ด ์ž…๋ ฅ ์ด๋ฏธ์ง€๋กœ image pyramid๋ฅผ ์ƒ์„ฑ
  • ๊ฐ ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋“ค์„ Octave1~4 ๋กœ ํ‘œ๊ธฐ

 

2. Difference of Gaussian (DoG) ์—ฐ์‚ฐ

  • Harris ์™€๋Š” ๋‹ฌ๋ฆฌ Laplacian ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋Š”๋ฐ, ์ด๋Š” ์ด๋ฏธ์ง€ ํ”ฝ์…€๊ฐ’์˜ 2์ฐจ ๋ฏธ๋ถ„๊ฐ’์ด๋‹ค.
  • ๋•Œ๋ฌธ์— ์˜์ƒ์˜ ๋ฐ๊ธฐ ๋ณ€ํ™”๊ฐ€ ์ผ์ •ํ•œ ๊ณณ์—์„œ๋Š” 0์— ๊ฐ€๊นŒ์šด ๊ฐ’์ด ๋‚˜์˜ค๊ณ  ์ฝ”๋„ˆ ๋ถ€๋ถ„๊ณผ ๊ฐ™์ด ๋ฐ๊ธฐ ๋ณ€ํ™”๊ฐ€ ๊ธ‰๊ฒฉํ•œ ๊ณณ์—์„œ๋Š” ๋†’์€ ๊ฐ’์ด ์ถœ๋ ฅ๋จ
  • ์‹ค์ œ implementation์—์„œ๋Š” ์†๋„ ๋ฌธ์ œ ๋•Œ๋ฌธ์— laplacian์„ ์ง์ ‘ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ณ  DoG๋ฅผ ์ด์šฉํ•˜์—ฌ scale๋ณ„ laplacian์„ ๊ทผ์‚ฌํ•˜์—ฌ ์‚ฌ์šฉ
  • DoG๋Š” ์ž…๋ ฅ ์ด๋ฏธ์ง€์— ๊ฐ€์šฐ์‹œ์•ˆ ํ•„ํ„ฐ๋ฅผ ์ ์ง„์ ์œผ๋กœ(์‹œ๊ทธ๋งˆ๊ฐ’์ด ์ ์  ์ปค์ง€๋Š”) ์ ์šฉํ•˜์—ฌ blur์‹œํ‚จ ์ด๋ฏธ์ง€ ๋“ค์—์„œ ์—ฐ์†์ ์ธ ์ด๋ฏธ์ง€๋“ค๊ฐ„์˜ ์ฐจ(subtraction)์ด๋‹ค.

 

3. Keypoint ์ถ”์ถœ

  • DoG ์ด๋ฏธ์ง€๋“ค์—์„œ keypoint ๋“ค์„ ์ฐพ๊ธฐ ์œ„ํ•ด DoG ์ด๋ฏธ์ง€๋“ค์—์„œ ๊ทน๋Œ€๊ฐ’, ๊ทน์†Œ๊ฐ’์˜ ๋Œ€๋žต์ ์ธ ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋‹ค
  • ํ•œ ํ”ฝ์…€์—์„œ ๊ทน๋Œ€/์†Œ๊ฐ’์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋™์ผํ•œ octave ๋‚ด์˜ ์„ธ์žฅ์˜ DoG ์ด๋ฏธ์ง€์—์„œ ์ฃผ๋ณ€ 26๊ฐœ์˜ ํ”ฝ์…€๊ฐ’์„ ๊ฒ€์‚ฌํ•˜์—ฌ ์ฒดํฌํ•˜๋Š” ํ”ฝ์…€(์ค‘๊ฐ„)์ด ์ฃผ๋ณ€ ํ”ฝ์…€๊ฐ’ ์ค‘์— ๊ฐ€์žฅ ์ž‘๊ฑฐ๋‚˜ ํด ๊ฒฝ์šฐ์— keypoint๋กœ ์„ ํƒ
  • ๋ชจ๋“  octave์—์„œ ๋™์ผํ•œ ๊ณผ์ •์ด ์ˆ˜ํ–‰๋˜๊ณ  ๊ฐ octave ๋ณ„ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ขŒํ‘œ๊ณ„์—๋„ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒ

 

 

4. Optimal keypoint ์„ ํƒ

  • keypoint๋“ค์˜ ์ •ํ™•ํ•œ ์œ„์น˜๋ฅผ ํ…Œ์ผ๋Ÿฌ ์ „๊ฐœ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฐพ์Œ
  • ํ™œ์šฉ๊ฐ€์น˜๊ฐ€ ๋–จ์–ด์ง€๋Š” (์ฝ˜ํŠธ๋ผ์ŠคํŠธ๊ฐ€ ๋‚ฎ๊ฑฐ๋‚˜, ์—ฃ์ง€ ์œ„์— ์กด์žฌํ•˜๋Š”) keypoint ๋“ค์„ ์ œ๊ฑฐํ•˜๋Š” ํ›„์ฒ˜๋ฆฌ ๊ณผ์ • ์‹คํ–‰

 

 

5. Keypoint ๋ฐฉํ–ฅ ํ• ๋‹น

  • ์•ž ๋‹จ๊ณ„๊นŒ์ง€ ์ง„ํ–‰๋œ keypoint ๋“ค์€ scale invariance๋ฅผ ๊ฐ€์ง„๋‹ค
  • keypoint ๋“ค์— orientation(๋ฐฉํ–ฅ)์„ ํ• ๋‹นํ•˜์—ฌ rotation invariance๋ฅผ ๋งŒ์กฑ์‹œํ‚ด
  • ๊ฐ keypoint ์ฃผ๋ณ€์˜ ๊ทธ๋ ˆ๋””์–ธํŠธ ๋ฐฉํ–ฅ๊ณผ ํฌ๊ธฐ๋ฅผ ๋ชจ์•„ ๊ฐ€์žฅ ๋‘๋“œ๋Ÿฌ์ง€๋Š” ๋ฐฉํ–ฅ์„ ์ฐพ์•„์„œ keypoint์˜ ๋ฐฉํ–ฅ์œผ๋กœ ํ• ๋‹น
  • Keypoint ์ฃผ๋ณ€์— ์œˆ๋„์šฐ๋ฅผ ๋งŒ๋“ค์–ด keypoint์˜ scale๊ฐ’์œผ๋กœ ๊ฐ€์šฐ์‹œ์•ˆ ๋ธ”๋Ÿฌ๋ง
  • ์œ„ ์‹์œผ๋กœ magnitude์™€ orientation์„ ๊ณ„์‚ฐ
  • ๊ทธ๋ ˆ๋””์–ธํŠธ์˜ magnitude์—๋Š” ๊ฐ€์šฐ์‹œ์•ˆ ํ•จ์ˆ˜๋กœ ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ keypoint์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ์ข€ ๋” ํฐ ๊ฐ’์„ ๊ฐ€์ง€๋„๋ก
  • Keypoint์— ๋ฐฉํ–ฅ์„ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด 360๋„์˜ ๋ฐฉํ–ฅ์„ 10๋„์”ฉ ์ž˜๋ผ 36๊ฐœ์˜ bin์„ ๊ฐ€์ง€๋Š” ํžˆ์Šคํ† ๊ทธ๋žจ์„ ์ƒ์„ฑ
  • ์œˆ๋„์šฐ ๋‚ด์˜ ๋ชจ๋“  ํ”ฝ์…€์—์„œ ๊ทธ๋ ˆ๋””์–ธํŠธ ๋ฐฉํ–ฅ ๊ฐ’์„ bin์— ์ฑ„์›Œ์„œ ํžˆ์Šคํ† ๊ทธ๋žจ์„ ์™„์„ฑํ•˜๊ณ  ๊ฐ€์žฅ ๋†’์€ bin์˜ ๋ฐฉํ–ฅ์ด keypoint์˜ ๋ฐฉํ–ฅ์œผ๋กœ ํ• ๋‹น
  • ๊ฐ€์žฅ ๋†’์€ bin์˜ 80% ์ด์ƒ์˜ ์ˆ˜์น˜๋ฅผ ๊ฐ–๋Š” bin์ด ์žˆ์œผ๋ฉด ๊ทธ ๋ฐฉํ–ฅ๋„ keypoint์˜ ๋ฐฉํ–ฅ์œผ๋กœ ์„ ํƒ

 

6. SIFT ํŠน์ง• ์ถ”์ถœ

 

  • ์ด์ œ keypoint ๋“ค์€ ์œ„์น˜, ์Šค์ผ€์ผ, ๋ฐฉํ–ฅ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ์Šค์ผ€์ผ๊ณผ ํšŒ์ „์— invariant
  • ์ด๋Ÿฌํ•œ keypoint๋“ค์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด keypoint ํŠน์ง•์„ 128๊ฐœ์˜ ์ˆซ์ž๋กœ(128 dimension) ํ‘œํ˜„
  • ์ด๋ฅผ ์œ„ํ•ด keypoint ์ฃผ๋ณ€ 16x16 ์‚ฌ์ด์ฆˆ์˜ ์œˆ๋„์šฐ๋ฅผ ์ ์šฉํ•˜๊ณ  ์ด ์œˆ๋„์šฐ๋Š” 4x4์˜ sub-window๋กœ ๊ตฌ์„ฑ
  • 16๊ฐœ์˜ sub-window์˜ ๊ทธ๋ ˆ๋””์–ธํŠธ ํฌ๊ธฐ์™€ ๋ฐฉํ–ฅ์„ ๊ณ„์‚ฐํ•˜๊ณ  ์•ž์„  ๋ฐฉ๋ฒ•๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ํžˆ์ŠคํŠธ๊ทธ๋žจํ™”ํ•˜๋Š”๋ฐ bin์„ 8๊ฐœ๋งŒ ์„ธํŒ…
  • 16๊ฐœ sub-window๋Š” ๊ฐ๊ฐ ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๊ฐ€์ง€๊ฒŒ ๋˜๊ณ  16*8 =128 ๊ฐœ์˜ feature vector๋ฅผ ์–ป๋Š”๋ฐ ์ด feature vector๋Š” ๋ฌผ์ฒด๊ฐ€ ํšŒ์ „ํ•˜๋ฉด ๋ชจ๋“  ๊ทธ๋ ˆ๋””์–ธํŠธ ๋ฐฉํ–ฅ์ด ๋ฐ”๋€Œ๊ฒŒ ๋˜๋ฏ€๋กœ, keypoint์˜ ๋ฐฉํ–ฅ์„ 16๊ฐœ์˜ ์œˆ๋„์šฐ ๋ฐฉํ–ฅ์—์„œ ๋บ€๋‹ค
  • ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ 16๊ฐœ์˜ ์œˆ๋„์šฐ ๋ฐฉํ–ฅ์„ keypoint ๋ฐฉํ–ฅ์— ์ƒ๋Œ€์ ์ด๋„๋ก ๋งŒ๋“ค์–ด ํšŒ์ „ ์˜์กด์„ฑ์„ ํ•ด๊ฒฐํ•ด ์คŒ
  • ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐ๊ธฐ ์˜์กด์„ฑ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ •๊ทœํ™”๋ฅผ ํ•ด์ฃผ๋ฉด SIFT feature(descriptor)๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.
  • SIFT๋กœ ์ด๋ฏธ์ง€ ๋งค์นญ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘ ์ด๋ฏธ์ง€์—์„œ keypoint ๋“ค์„ ์ฐพ๊ณ  feature์˜ ์ฐจ์ด๊ฐ€ ๊ฐ€์žฅ ์ ์€ ๊ณณ์„ ๋งค์นญํ•˜๋ฉด ๋œ๋‹ค

 

 

๋ฐ˜์‘ํ˜•