[Computer Vision/OpenCV] 21. Feature Descriptor(2) - SIFT

2025. 5. 28. 14:41ยท๐Ÿฆ„AI/Computer Vision

https://he-kate1130.tistory.com/150

 

[Computer Vision/OpenCV] 20. Feature Descriptor(1)

์˜ค๋Š˜์€ Feature Descriptor๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๋Š”์ง€ ํฐ ํ‹€์—์„œ ์•Œ์•„๋ณด๋„๋กํ•œ๋‹ค.Feature Descriptor๋Š” ์ด๋ฏธ์ง€์˜ ํŠน์ง•์ ์„ ์ˆ˜์น˜ํ™”ํ•˜๋Š” ๋„๊ตฌ๋กœ, object detection, panorama matching ๋ถ€ํ„ฐ SLAM๊นŒ์ง€ ๋‹ค์–‘ํ•œ

he-kate1130.tistory.com

 

์ด์ „ ๊ธ€์—์„œ๋Š” Feature Descriptor๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด์•˜๋‹ค.

์˜ค๋Š˜์€ ๋Œ€ํ‘œ์ ์€ Descriptor์ธ SIFT์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

0. ๋ฌธ์ œ์ : Harris Corner Detector

์ด๋ฏธ์ง€์—์„œ ์ง€์—ญ์ ์ธ ํŠน์ง•์„ ์ž˜ ์ถ”์ถœํ•ด๋‚ด๋Š” ๊ฒƒ์€ ๋Œ€๋‹ค์ˆ˜์˜ ๋น„์ „ ํ…Œ์Šคํฌ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๊ธฐ์กด์— ๋ฐฐ์› ๋˜ ํŠน์ง•์  ๊ฒ€์ค„ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋Š” ์ฝ”๋„ˆ๋ฅผ ํ‚คํฌ์ธํŠธ๋กœ ๊ฒ€์ถœํ•˜๋Š” Harris Corner Detector๊ฐ€ ์žˆ๋‹ค.

Harris Corner Detector ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์•„๋ž˜ ํฌ์ŠคํŒ…์— ์ž‘์„ฑ๋˜์–ด์žˆ๋‹ค.

https://he-kate1130.tistory.com/149

 

[Computer Vision/OpenCV] 19. Corner Detection - Harris Corner Detection

์ง€๋‚œ ๊ธ€์—์„œ๋Š” ์ด๋ฏธ์ง€์—์„œ ์—ฃ์ง€(Edge)๋ฅผ ๊ฒ€์ถœํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๋“ค์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜๋‹ค์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๊ทธ๋ณด๋‹ค ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€, ์ฝ”๋„ˆ ๊ฒ€์ถœ(Corner Detection)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž ์ฝ”๋„ˆ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‘ ๊ฐœ

he-kate1130.tistory.com

 

 

Harris Corner Detector์˜ ๋ฒ ์ด์ง ์•„์ด๋””์–ด

Harris Corner Detector๋Š” ์œˆ๋„์šฐ๋ฅผ ์ ์€ ์œ„์น˜์—์„œ ์›€์ง์˜€์„ ๋•Œ ํƒ€๊ฒŸ ํ”ฝ์…€ ์ฃผ๋ณ€์˜ ๋ณ€ํ™”๋Ÿ‰์„ ์ธก์ •ํ•˜์—ฌ ์ฝ”๋„ˆ๋ฅผ ๊ฒ€์ถœํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ ์•„์ด๋””์–ด์ด๋‹ค.

์ด ๋ฐฉ์‹์˜ ์žฅ์ ์€ ํ”ฝ์…€ ์ฃผ๋ณ€์˜ local information์„ ๊ด€์ฐฐํ•˜๊ณ , ์œˆ๋„์šฐ๋ฅผ ์—ฌ๋Ÿฌ๋ฑกํ–ฅ์œผ๋กœ ์ด๋™ํ•˜๋ฉฐ ๊ด€์ฐฐํ•˜๋ฏ€๋กœ rotation๊ณผ translation, intensity change์— Robustํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ๋ฐ”๋€” ๋•Œ๋Š” ์ฝ”๋„ˆ๋ฅผ ์ œ๋Œ€๋กœ ๊ฒ€์ถœํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

์œ„์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ณด์ž.

๊ธฐ์กด ์ฝ”๋„ˆ๋กœ ๊ฒ€์ถœ๋˜์—ˆ๋˜ ๋ถ€๋ถ„์€ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๋ฅผ ์Šค์ผ€์ผ์—…ํ–ˆ์„ ๋•Œ Edge ๋กœ ๊ฒ€์ถœ๋˜๊ฒŒ๋œ๋‹ค. ์ฝ”๋„ˆ๊ฒ€์ถœ์— ์‚ฌ์šฉํ–ˆ๋˜ ์œˆ๋„์šฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์›๋ณธ ์ด๋ฏธ์ง€์—์„œ๋Š” ํŠน์ • ์˜์—ญ์ด ์ฝ”๋„ˆ๋กœ ์ž˜ ๊ฒ€์ถœ๋˜์—ˆ๋”๋ผ๋„,
๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ์ด๋ฏธ์ง€๋ผ๋„ ํฌ๊ธฐ(์Šค์ผ€์ผ)๋ฅผ ํ‚ค์šฐ๋ฉด ํ•ด๋‹น ์˜์—ญ์ด ๋” ์ด์ƒ ์ฝ”๋„ˆ๋กœ ์ธ์‹๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

์ด๋Š” Harris Detector์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์œˆ๋„์šฐ์˜ ํฌ๊ธฐ๋Š” ๊ณ ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
์ฆ‰, ์ด๋ฏธ์ง€๊ฐ€ ์ปค์กŒ๋Š”๋ฐ๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋™์ผํ•œ ํฌ๊ธฐ์˜ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ˆ, ์ƒ๋Œ€์ ์œผ๋กœ ๋” ๋„“์€ ์˜์—ญ์„ ํ•œ ๋ฒˆ์— ๋ฐ”๋ผ๋ณด๊ฒŒ ๋˜์–ด
์ด์ „์—๋Š” ‘๊ธ‰๊ฒฉํ•œ ๋ณ€ํ™”’์˜€๋˜ ํŒจํ„ด์ด ์ด์ œ๋Š” ์™„๋งŒํ•œ ๋ณ€ํ™”๋กœ ๋А๊ปด์ง€๋Š” ๊ฒƒ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ์ฝ”๋„ˆ๋กœ ๊ฒ€์ถœ๋˜๋˜ ๋ถ€๋ถ„์ด ์Šค์ผ€์ผ ์—… ํ›„์—๋„ ์ฝ”๋„ˆ๋กœ ๊ฒ€์ถœ๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปค๋„์˜ ์‚ฌ์ด์ฆˆ ๋˜ํ•œ ๊ทธ์— ๋งž์ถ”์–ด ์ปค์ ธ์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

 

Scale Controllable Kernel

์Šค์ผ€์ผ ๋ถˆ๋ณ€์˜ ๊ฒ€์ถœ๊ธฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š”, ์ปค๋„์ด ์ด๋ฏธ์ง€ ๊ตฌ์กฐ์˜ ํฌ๊ธฐ์— ๋งž๊ฒŒ ์ ์ ˆํžˆ ์กฐ์ ˆ๋˜์–ด์•ผ ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ์Šค์ผ€์ผ์— ๋”ฐ๋ผ์„œ ์ปค๋„์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ Scale-Controllable Kernel์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

๊ทธ๋Ÿผ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ... O<-<

์–ด๋–ป๊ฒŒ Scale์„ ๋ณ€๊ฒฝํ• ๊นŒ? ์ด๋ฏธ์ง€์˜ ์Šค์ผ€์ผ ๋ณ€ํ™”๋ฅผ ์˜ˆ์ธกํ•ด์„œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค.

 

์ด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ Blob Detection ๊ธฐ๋ฒ•์ด๋‹ค.

 

1. ๋ธ”๋กญ ๊ฒ€์ถœ: Laplacian of Gaussian

Edge Detection ํŒŒํŠธ์—์„œ ๋ณธ ์ ์ด ์žˆ๋Š” LoG์— ๋Œ€ํ•ด์„œ ๋‹ค์‹œ ์‚ดํŽด๋ณด์ž.
LoG์—ฐ์‚ฐ์€ Gaussian filtering๊ณผ Laplacian Filtering์„ ์ˆœ์ฐจ๋กœ ์ˆ˜ํ–‰ํ•œ ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

 

์™ผ์ชฝ์€ edgelike signal, ์˜ค๋ฅธ์ชฝ์€ corner like signal

Signal์„ ํ†ตํ•ด์„œ LoG๊ฐ€ ์ ์šฉ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ์‹œ๊ทธ๋„์ด ๋ณ€ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

LoG๋ฅผ ์—ฃ์ง€์— ์ ์šฉํ•˜๋ฉด ์–‘๊ทน์„ฑ์ด ์—†๋Š” Ripple ํ˜•ํƒœ์˜ ์‘๋‹ต์ด ๋งŒ๋“ค์–ด์ง„๋‹ค. (์™ผ์ชฝ plot๋“ค)

์ฝ”๋„ˆ์— ์ ์šฉํ•˜๊ฒŒ ๋˜๋ฉด Ripple์ด ํ•ฉ์ณ์ ธ Blob ํ˜•ํƒœ์˜ extremum์ด ์ƒ๊ธด๋‹ค.

์ฆ‰, ์‹œ๊ทธ๋งˆ๊ฐ€ pulse์˜ width์™€ ๋งค์น˜๋˜๋Š” ์ˆœ๊ฐ„ blob์ด ํ˜•์„ฑ๋œ๋‹ค.

 

์ด ํŠน์„ฑ ๋•Œ๋ฌธ์— Blob์ด ํ˜•์„ฑ๋  ๋•Œ์˜ ์‹œ๊ทธ๋งˆ ๊ฐ’์„ ๊ด€์ฐฐํ•˜๋ฉด ์ด๋ฏธ์ง€์˜ ์Šค์ผ€์ผ ์ •๋ณด๋ฅผ ์ถ”์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

Scale Normalized Laplacian

๋‹ค๋งŒ LoG์˜ ์‹œ๊ทธ๋งˆ ๊ฐ’์ด ์ปค์ง€๋ฉด ์‘๋‹ต์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง€๋ฏ€๋กœ ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.

 

Difference of Gaussian

LoG๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ์—ฐ์‚ฐ๋Ÿ‰์ด ๋งŽ์œผ๋ฏ€๋กœ DoG์˜ ๊ทผ์‚ฌ๋ฅผ ์ด์šฉํ•ด ๊ณ„์‚ฐํ•œ๋‹ค. 

๊ณ„์‚ฐ ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค.

์•„๋ž˜ ์ˆ˜์‹์ฒ˜๋Ÿผ ๊ธฐ์ค€์ด ๋˜๋Š” ๊ฐ€์šฐ์‹œ์•ˆ์— ์‹œ๊ทธ๋งˆ ๊ฐ’์„ k๋ฐฐ ํ•˜์—ฌ ๋˜ ๋‹ค๋ฅธ ๊ฐ€์šฐ์‹œ์•ˆ์„ ๊ตฌํ•˜๊ณ , ๊ทธ ๋‘˜์„ subsetํ•˜๋ฉด ๋œ๋‹ค.

 

๊ฐ€์šฐ์‹œ์•ˆ์„ ๋ฏธ๋ถ„ํ•  ํ•„์š” ์—†์ด ๋‘๊ฐœ์˜ ๊ฐ€์šฐ์‹œ์•ˆ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค๋Š” (์—„์ฒญ๋‚œ)์žฅ์ ์ด ์žˆ๋‹ค

.

 

2. SIFT (Scale-Invariant Feature Transform)

https://www.researchgate.net/figure/Diagram-of-SIFT-keypoint-detection-algorithm-showing-one-octave-with-6-Gaussian-image_fig1_256546531

SIFT์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์œ„์—์„œ ์•Œ์•„๋ณธ Scale Space extrema ๋ฅผ ์ฐพ์•„ ์ด๋ฏธ์ง€์˜ scale์— ๋งž๋Š” ํ‚คํฌ์ธํŠธ๋ฅผ ์ฐพ์•„๋‚ด๊ณ  ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ Dscriptor๋ฅผ ๋งŒ๋“ ๋‹ค.

 

STEP 1) Scale - Space Extrema Detection

Interst point๋“ค์˜ ํ›„๋ณด๋“ค์„ ์ฐพ์•„๋‚ด๋Š” ๋‹จ๊ณ„์ด๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ๋Š” ์ž…๋ ฅ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์–‘ํ•œ ํ•ด์ƒ๋„๋กœ ๋‹ค์šด์ƒ˜ํ”Œ๋งํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ์ด๋ฏธ์ง€๋ฅผ ์–ป๊ณ ,

๊ฐ ์ด๋ฏธ์ง€์—์„œ Blob์ด ํ˜•์„ฑ๋˜๋Š” ๋ถ€๋ถ„์„ ์ฐพ์•„ Interest Point์˜ ํ›„๋ณด๋กœ ํ•œ๋‹ค.

 

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰๋œ๋‹ค.

 

1. ์ž…๋ ฅ ์ด๋ฏธ์ง€๋ฅผ ์—ฌ๋Ÿฌ ํ•ด์ƒ๋„๋กœ ๋‹ค์šด์ƒ˜ํ”Œ๋งํ•˜์—ฌ, ํฌ๊ธฐ ์ฐจ์ด๊ฐ€ ํฐ ๊ฐ์ฒด๋„ ํƒ์ง€ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ๋‹ค.
์ด๋ ‡๊ฒŒ ๋‹ค์ค‘ ํ•ด์ƒ๋„๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ์˜ฅํƒ€๋ธŒ๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ๊ฐ ์˜ฅํƒ€๋ธŒ๋Š” ํŠน์ • ํ•ด์ƒ๋„๋ฅผ ๋Œ€ํ‘œํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ฒซ ์˜ฅํƒ€๋ธŒ๋Š” ์›๋ณธ ์ด๋ฏธ์ง€, ๋‘ ๋ฒˆ์งธ ์˜ฅํƒ€๋ธŒ๋Š” 1/2 ํฌ๊ธฐ๋กœ ์ถ•์†Œ๋œ ์ด๋ฏธ์ง€, ์„ธ ๋ฒˆ์งธ ์˜ฅํƒ€๋ธŒ๋Š” 1/4 ํฌ๊ธฐ ์ด๋ฏธ์ง€๊ฐ€ ๋œ๋‹ค.

 

2. ๊ฐ ์˜ฅํƒ€๋ธŒ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์‹œ ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์˜ ๊ฐ€์šฐ์‹œ์•ˆ ์ปค๋„์„ ์ ์šฉํ•œ๋‹ค.

์ด๋Š” Gaussian ์ปค๋„์„ ์—ฌ๋Ÿฌ ์Šค์ผ€์ผ์˜ ์‹œ๊ทธ๋งˆ๋กœ ๋ณ€ํ™”์‹œํ‚ค๋ฉฐ ํ•„ํ„ฐ๋งํ•˜๋Š” ์ž‘์—…์œผ๋กœ, ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ ์ผ๋ จ์˜ ์ด๋ฏธ์ง€๋“ค์„ ๊ฐ€์šฐ์‹œ์•ˆ ํ”ผ๋ผ๋ฏธ๋“œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

ํ•œ ์˜ฅํƒ€๋ธŒ ๋‚ด์—์„œ๋Š” ์›๋ณธ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์ ์ฐจ Gaussian ๋ธ”๋Ÿฌ ์ •๋„๋ฅผ ๋†’์ธ ์ด๋ฏธ์ง€๋“ค์ด ์ƒ์„ฑ๋œ๋‹ค.

 

 

3. ๊ฐ ์˜ฅํƒ€๋ธŒ ๋‚ด ์ธ์ ‘ํ•œ Gaussian ์ด๋ฏธ์ง€๋“ค ๊ฐ„ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค. 

์ฆ‰, DoG๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ Blob์„ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

 

4. ์ด์ œ DoG ํ”ผ๋ผ๋ฏธ๋“œ์—์„œ Local Extema๋ฅผ ์ฐพ์•„๋‚ธ๋‹ค.

์—ฌ๊ธฐ์„œ 3์ฐจ์› Non-Maximum Suppression๋ฅผ ์ ์šฉํ•ด, ํ˜•์„ฑ๋˜๋Š” Blob์˜ local extrema point๋ฅผ ์ฐพ๋Š”๋‹ค.

์ด ์ง€์ ๋“ค์ด Interest Point์˜ ํ›„๋ณด๋“ค์ด ๋œ๋‹ค.

 

 

STEP 2) KeyPoint Localization 

์•ž์„  ๋‹จ๊ณ„์—์„œ DoG ํ”ผ๋ผ๋ฏธ๋“œ ์ƒ์˜ ์ง€์—ญ ๊ทน๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠน์ง•์  ํ›„๋ณด๋“ค์ด ์ถ”์ถœ๋˜์—ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด๋“ค ์ค‘ ์ผ๋ถ€๋Š” ๋…ธ์ด์ฆˆ ๊ฑฐ๋‚˜ ์—ฃ์ง€ ์œ„์— ์กด์žฌํ•  ์ˆ˜ ์žˆ๊ณ , ์ผ๋ถ€๋Š” contrast๊ฐ€ ํฌ๊ธฐ ์•Š์€ ์•ฝํ•œ ํ‚คํฌ์ธํŠธ์ผ ์ˆ˜ ์žˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ๋‘๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ถˆํ•„์š”ํ•˜๊ฑฐ๋‚˜ ์‹ ๋ขฐ๋„๊ฐ€ ๋‚ฎ์€ ํ‚คํฌ์ธํŠธ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ 

๋‚˜๋จธ์ง€ ํ‚คํฌ์ธํŠธ๋“ค์˜ ์œ„์น˜๋ฅผ ๋ณด๋‹ค ์ •๋ฐ€ํ•˜๊ฒŒ ์ถ”์ •ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

1. Sub pixel localization

์šฐ๋ฆฌ๋Š” ์•ž์„  ์Šคํ…์—์„œ ํ‚คํฌ์ธํŠธ์˜ locationd๋ฅด ์–ป์–ด์™”๋Š”๋ฐ, ์ •ํ™•ํ•œ ์œ„์น˜์ •๋ณด๋กœ ์„ ํƒ๋˜์ง€ ์•ˆ์•˜๋‹ค.

์ด์ œ๋Š” ๋” ์ •ํ™•ํ•œ ์œ„์น˜๋ฅผ ์•Œ์•„๋‚ผ ์ฐจ๋ก€๋‹ค.

D๋ฅผ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ํ…Œ์ผ๋Ÿฌ ์ „๊ฐœ๋ฅผ ํ†ตํ•ด์„œ X๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

2. ์ด ์œ„์น˜์—์„œ Contrast ๊ฐ€ ๋‚ฎ์€ ๊ฒฝ์šฐ(D๊ฐ€ ์ž„๊ณ„๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ)๋ฅผ ์ œ์™ธํ•œ๋‹ค.

๋…ผ๋ฌธ์—์„œ๋Š” 0.03์œผ๋กœ th๋ฅผ ๋‘์—ˆ๋‹ค.

 

3. Edge Like Feature๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

DoG๋Š” ์—ฃ์ง€ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ๋†’์€ ์‘๋‹ต์„ ๋ณด์ด๋Š” ํŠน์„ฑ์ด ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์—ฃ์ง€์—์„œ ๊ฒ€์ถœ๋œ ํ‚คํฌ์ธํŠธ๋Š” ๋ฐฉํ–ฅ์„ฑ์ด ๋ถˆ์•ˆ์ •ํ•˜๊ณ  ๋ฐ˜๋ณต์„ฑ์ด ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฑฐ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

SIFT๋Š” Harris ์ฝ”๋„ˆ ๊ฒ€์ถœ๊ธฐ์—์„œ์™€ ๋น„์Šทํ•˜๊ฒŒ, ํ—ค์‹œ์•ˆ ๊ธฐ๋ฐ˜์˜ principal curvature๋ถ„์„์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒํ•ด์„œ DoG๋ฅผ ์ด์šฉํ•ด ํ›„๋ณด ํ‚คํฌ์ธํŠธ๋“ค์„ ๋ฝ‘์•„๋‚ด๊ณ , edge-like&low contrast ํ‚คํฌ์ธํŠธ๋ฅผ ํ›„๋ณด์—์„œ ์ œ์™ธํ•˜๋Š”๊ฒƒ์œผ๋กœ ํ‚คํฌ์ธํŠธ ์ถ”์ถœ์„ ์™„๋ฃŒํ•œ๋‹ค.

 

STEP 3) Orientation Assignment  

์ •์ œ๋œ ํ‚คํฌ์ธํŠธ๊ฐ€ ์ถ”์ถœ๋œ ํ›„, SIFT๋Š” ์ด๋ฏธ์ง€์˜ ํšŒ์ „ ๋ณ€ํ™”์— ๋Œ€ํ•ด ๋ถˆ๋ณ€์„ฑ์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ํ‚คํฌ์ธํŠธ์— ์ฃผ ๋ฐฉํ–ฅ(primary orientation)์„ ๋ถ€์—ฌํ•œ๋‹ค.

์ด ๊ณผ์ •์€ ๊ฐ ํŠน์ง•์  ์ฃผ๋ณ€์˜ local gradient๋ถ„ํฌ๋ฅผ ๋ถ„์„ํ•จ์œผ๋กœ์จ ์ด๋ฃจ์–ด์ง„๋‹ค.

 

1. ํ‚คํฌ์ธํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ 16X16 ํฌ๊ธฐ์˜ ์œˆ๋„์šฐ๋ฅผ ๊ด€์ฐฐํ•œ๋‹ค.

 

2. ์ด ์œˆ๋„์šฐ ๋‚ด์—์„œ ๊ฐ๊ฐ 2X2 ๋ธ”๋ก์„ ๋ณด๊ณ  edge์˜ ๋ฐฉํ–ฅ๊ณผ magnitude๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค. (edge orientation๊ณ„์‚ฐ)

 

 

3. gradient์˜ magnitude๊ฐ€ threshold๋ณด๋‹ค ์ž‘์€ ์ง€์ ์€ weak edge๋ถ€๋ถ„์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  throw outํ•œ๋‹ค.

 

4. 8๊ฐœ์˜ discrete ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ angle์˜ amgnitude ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๋งŒ๋“ ๋‹ค.

์ด๋•Œ magnitude์— ๊ฐ€์šฐ์‹œ์•ˆ ํ•„ํ„ฐ๋ง์„ ์ ์šฉํ•˜์—ฌ ๊ฑฐ๋ฆฌ์— ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค.

ํžˆ์Šคํ† ๊ทธ๋žจ ๋‚ด์—์„œ ๊ฐ€์žฅ ํฐ ํ”ผํฌ๋ฅผ ์ด๋ฃจ๋Š” ๋ฐฉํ–ฅ์€ ํ•ด๋‹น ํ‚คํฌ์ธํŠธ์˜ ์ฃผ ๋ฐฉํ–ฅ์œผ๋กœ ์„ค์ •๋œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฐฉํ–ฅ์ด ์ตœ๊ณ  ํ”ผํฌ์˜ 80% ์ด์ƒ์— ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ, ๊ฐ๊ฐ์˜ ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ํ‚คํฌ์ธํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์ด๋กœ ์ธํ•ด ํ•˜๋‚˜์˜ ์œ„์น˜์—์„œ ์œ„์น˜์™€ ์Šค์ผ€์ผ์€ ๋™์ผํ•˜์ง€๋งŒ ๋ฐฉํ–ฅ์ด ๋‹ค๋ฅธ ๋ณต์ˆ˜์˜ ํ‚คํฌ์ธํŠธ๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค.

 

์—ฌ๊ธฐ๊นŒ์ง€ ํ•ด์„œ ํ‚คํฌ์ธํŠธ๋Š” ๋‹ค์Œ์ฒ˜๋Ÿผ ๋‚˜ํƒ€๋‚ด์–ด์ง„๋‹ค. 

Keypoint1 : [ X ์ขŒํ‘œ,  Y ์ขŒํ‘œ, Scale factor, Octave, Orientation ] = [ 10, 20, 2.0, 3, 95 ]
Keypoint2 : [ X ์ขŒํ‘œ,  Y ์ขŒํ‘œ, Scale factor, Octave, Orientation ] = [ 10, 20, 2.0, 3, 25]

angle histogram ์˜ˆ์”จ



STEP 4) Key Point Descriptor Construction

๊ฐ ํ‚คํฌ์ธํŠธ์— ๋Œ€ํ•ด ๋ฐฉํ–ฅ์ด ํ• ๋‹น๋˜๋ฉด, SIFT๋Š” ๊ทธ ์ฃผ๋ณ€์˜ ์ง€์—ญ์  ์ด๋ฏธ์ง€ ๊ตฌ์กฐ๋ฅผ ์ •๋Ÿ‰ํ™”ํ•˜์—ฌ Feature Descriptor๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

ํ•˜๋‚˜์˜ ํ‚คํฌ์ธํŠธ๋Š” 4×4×8=128 ์ฐจ์›์˜ ๊ณ ์ • ๊ธธ์ด ๋ฒกํ„ฐ๋กœ ํ‘œํ˜„๋œ๋‹ค.

 

์ด๋ ‡๊ฒŒ Feature Descriptorํ˜•ํƒœ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

1. ๋จผ์ € ์šฐ๋ฆฌ์—๊ฒŒ ํ‚คํฌ์ธํŠธ์˜ ์œ„์น˜, Scale, Octave ์ •๋ณด์™€ orientation ์ •๋ณด๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

2. ์ด์ œ ํ‚คํฌ์ธํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ 16X16 ์œˆ๋„์šฐ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

 

3. ์—ฌ๊ธฐ๋ฅผ ๋‹ค์‹œ 4X4์˜ sub block์œผ๋กœ ๋‚˜๋ˆ„์–ด gradient histogram์„ ๋งŒ๋“ ๋‹ค.

์ด๋•Œ ์ค‘์‹ฌ์„ ๊ธฐ์ค€์œผ๋กœ gaussian ๊ฐ€์ค‘์น˜๋ฅผ ์ ์šฉํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ฐ๊ฐ ์„œ๋ธŒ ๋ธ”๋ก๋งˆ๋‹ค 8๊ฐœ์˜ ๋ฐฉํ–ฅ ํžˆ์Šคํ† ๊ทธ๋žจ ์ •๋ณด๊ฐ€ ์ƒ๊ธฐ๊ณ , ์ด๊ฒƒ์ด ์ด 4X4๊ฐœ ์กด์žฌํ•˜๋ฏ€๋กœ

ํ•˜๋‚˜์˜ ํ‚คํฌ์ธํŠธ์— ๋Œ€ํ•œ Descriptor๋Š”  8X4X4 =128 ๊ฐœ์˜ ์ •๋ณด๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, 128 ์ฐจ์›์˜ ๋ฒกํ„ฐ๋กœ ํ‘œํ˜„์ด ๋œ๋‹ค.

 

ํ›„์ฒ˜๋ฆฌ๋กœ,

๋งŒ๋“ค์–ด์ง„ ๋ฒกํ„ฐ๋Š” L2 Normalize๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ์„œ ์กฐ๋ช…์˜ ๋ฐ๊ธฐ์— ๋Œ€ํ•œ ์˜ํ–ฅ์„ ์ค„์ธ๋‹ค.

์ดํ›„์—๋Š” keypoint orientation๊ฐ’์„ ๋นผ์„œ ํšŒ์ „์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”, local ์˜์—ญ์— ์ƒ๋Œ€์ ์ธ ๋ฒกํ„ฐ๋ฅผ ํ˜•์„ฑํ•˜๊ฒŒ ํ•œ๋‹ค. 

 

 

์ฐธ๊ณ :

https://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf

https://www.researchgate.net/publication/4351572_Boosting_of_factorial_correspondence_analysis_for_image_retrieval

https://docs.opencv.org/4.x/da/df5/tutorial_py_sift_intro.html

https://ballentain.tistory.com/47

'๐Ÿฆ„AI > Computer Vision' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Computer Vision/OpenCV] 22. Feature Descriptor(3) - SIFT & FLANN+Loweโ€™s Ratio Test  (0) 2025.05.28
[Computer Vision/OpenCV] 20. Feature Descriptor(1)  (1) 2025.05.22
[Computer Vision/OpenCV] 19. Corner Detection - Harris Corner Detection  (0) 2025.04.24
[Computer Vision/OpenCV] 18. Edge Detection(2) - Canny Edge Detector  (0) 2025.04.23
[Computer Vision/OpenCV] 17. Edge Detection(1) - Sobel, Laplacian of Gaussian Filter  (0) 2025.04.22
'๐Ÿฆ„AI/Computer Vision' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Computer Vision/OpenCV] 22. Feature Descriptor(3) - SIFT & FLANN+Lowe’s Ratio Test
  • [Computer Vision/OpenCV] 20. Feature Descriptor(1)
  • [Computer Vision/OpenCV] 19. Corner Detection - Harris Corner Detection
  • [Computer Vision/OpenCV] 18. Edge Detection(2) - Canny Edge Detector
mingyung
mingyung
  • mingyung
    KATE.log
    mingyung
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
      • ๐Ÿฆ„AI
        • Computer Vision
        • Paper
        • ML
        • DL
        • NLP
        • Reinforcement Learning
      • ๐ŸคธGraphics
        • OpenGL
      • ๐ŸAlgorithm
      • ์žก๋™์‚ฌ๋‹ˆ
      • ๐Ÿฅ”Project
        • Reversi Agent
        • Team22
        • [Project] Threepark
      • Computer Science
        • SW Engineering
        • Database
        • Computer Network
        • Compiler
        • Data structures
      • Dev
        • Spring
  • ์ตœ๊ทผ ๊ธ€

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    Edge Detection
    feature descriptor
    Computer Vision
    Surf
    OSP
    computer network
    Internet
    Filtering
    ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ
    Loss function
    localization
    Gaussian
    CV
    Image Processing
    ML
    network
    loss
    keypoint
    ์ž๋ฃŒ๊ตฌ์กฐ
    SIFT
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
mingyung
[Computer Vision/OpenCV] 21. Feature Descriptor(2) - SIFT
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”