์ค๋์ Feature Descriptor๊ฐ ๋ฌด์์ธ์ง, ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ด ์๋์ง ํฐ ํ์์ ์์๋ณด๋๋กํ๋ค.
Feature Descriptor๋ ์ด๋ฏธ์ง์ ํน์ง์ ์ ์์นํํ๋ ๋๊ตฌ๋ก, object detection, panorama matching ๋ถํฐ SLAM๊น์ง ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ๋๋ค.
1. Feature Descriptor๋ ๋ฌด์์ธ๊ฐ?
Feature descriptor๋, ์ด๋ฏธ์ง ๋๋ ์์ ๋ด์์ ๊ฒ์ถ๋ keypoint(ํน์ง์ ) ์ฃผ๋ณ์ ์๊ฐ์ ์ ๋ณด๋ฅผ ์ผ์ ํ ๊ท์น์ ๋ฐ๋ผ ์์น ๋ฒกํฐํํ์ ๋ฐ์ดํฐ๊ตฌ์กฐ๋ก ๋ง๋ค๊ณ , ์ด๋ฅผ ์ด์ฉํด ๋์๋๋ ๋น์ทํ point๋ฅผ ์ฐพ์๋ด๋ ๊ฒ์ ๋งํ๋ค.
์ด ๋ฒกํฐ๋ ํด๋น ํคํฌ์ธํธ์ ์ง์ญ์ ํน์ฑ์ ์ ๋์ ์ผ๋ก ์์ฝํ๊ณ ์๋ก ๋ค๋ฅธ ์ด๋ฏธ์ง ๊ฐ์๋ ๋์ผํ ์ค์ ์ง์ ์ ํจ๊ณผ์ ์ผ๋ก ๋งค์นญํ ์ ์๋๋กํ๋ค.
์์ ์ฌ์ด์ ๋งค์นญ๋๋ ์ง์ ์ ์ฐพ๋ ์ผ์ ์ด๋ ค์ด ์ผ์ด๋ค.
๋์๋๋ feature๋ฅผ ๋งค์นญํ๋ ค๋ฉด ์ด๋ค ๊ณผ์ ์ด ํ์ํ ๊น?

๋ค์๊ณผ ๊ฐ์ ์์๋ก ์งํ๋ ๊ฒ์ด๋ค.
1. Distinctive keypoints์ ์งํฉ์ ์ป๋๋ค.
2. ๊ฐ keypoint์ ์ฌ๋ฐ๋ฅธ region์ ์ ์ํด์ผ ํ๋ค. ์ด region์ ์ ๋ณด๊ฐ ๋น์ทํ๋ฉด ๋์๋๋ ์ง์ ์ผ ๊ฒ์ด๋ค.
3. extract and normalize region content
4. ์ป์ region ์ ๋ณด์์ local descriptor๋ฅผ ๊ณ์ฐํด๋ธ๋ค.
5. local descriptors๋ฅผ matching ํ๋ค.
์ฌ๊ธฐ์ ์ ์ผ ์ด๋ ค์ด ๋ถ๋ถ์ 2๋ฒ์ด๋ค.
์์ ์์์ฒ๋ผ ์ด๋ฏธ์ง๊ฐ ํ์ ํ๊ณ , ์ค์ผ์ผ์ด ๋ค๋ฅธ ์ด๋ฏธ์ง์์ ์ด๋ป๊ฒ ์ ์ ํ region์ ์ฐพ์๋ผ ๊ฒ์ธ๊ฐ?
์ด๋ฐ ๋ถ๋ถ์ ํด๊ฒฐํ๋ฉด์ ์ข์ descriptor๋ฅผ ์ป์ ์ ์๊ฒ ํ๋ ๊ฒ์ด feature descriptor ์๊ณ ๋ฆฌ์ฆ์ ๋ชฉํ์ด๋ค.
Feature descriptor๋ฅผ ์ฌ์ฉํ๋ ๋ชฉ์ ์ ๋ค์๊ณผ ๊ฐ๋ค
- ํจ์จ์ ๋งค์นญ: ์ด๋ฏธ์ง ๊ฐ์ ๊ฐ์ฒด, ์์ญ, ํจํด์ ํจ๊ณผ์ ์ผ๋ก ๋น๊ต ๋ฐ ์ ํฉํ ์ ์๋๋ก ํจ
- ๋ถ๋ณ์ฑ ํ๋ณด: ํ์ , ์ค์ผ์ผ, ์กฐ๋ช ๋ณํ ๋ฑ ๋ค์ํ ์กฐ๊ฑด์์๋ ๋์ผ์ฑ์ ์ ์ง
- ์ ๋ณด ์์ถ: ๊ณ ์ฐจ์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฐจ์ ๋ฒกํฐ๋ก ์์ฝํ์ฌ ์ฐ์ฐ ํจ์จ์ฑ ๋ฐ ์ ์ฅ ํจ์จ์ฑ ์ฆ๋
2. Keypoint์ Descriptor์ ์ฐจ์ด
๊ทธ๋ ๋ค๋ฉด ํคํฌ์ธํธ์ descriptor์ ์ฐจ์ด์ ์ด ๋ชจํธํ๊ฒ ๋๊ปด์ง๋ค. ๋์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น?
Keypoint
์ด๋ฏธ์ง ๋ด์์ ์๋ฏธ ์๋ ๊ตฌ์กฐ(์ฝ๋, ์์ง ๊ต์ฐจ์ , blob ๋ฑ)๋ฅผ ๋ํ๋ด๋ (x, y) coordinate ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
Descriptor
๊ฐ keypoint๋ฅผ ์ค์ฌ์ผ๋ก ํ ์ง์ญ ํจ์น์ ์๊ฐ์ ํน์ฑ์ ์ผ์ ํ ์ฐจ์์ ๋ฒกํฐ๋ก ํํํ๋ค.
์ด ๋ฒกํฐ๋ ํจํด, ๋ฐฉํฅ์ฑ, ์ง๊ฐ, ๋ฐ๊ธฐ ๋ณํ ๋ฑ ๋ค์ํ ์ ๋ณด๋ฅผ ๋ดํฌํ๊ณ ์์ผ๋ฉฐ, keypoint์ ํน์ง ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
์ด Descriptor๋ ์ง์ญ์ ์ธ ํน์ฑ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋น์ทํ ํํ๋ฅผ ํํํ๋ descriptor๋ ๋น์ทํ ๋ฒกํฐ๋ก ํํ๋๋ค.
๋ฐ๋ผ์ ๋ฒกํฐ ์คํ์ด์ค์์ ๋ descriptor์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๊น๋ค.
3. ์ข์ Descriptor๋?
Robustness
๋์คํฌ๋ฆฝํฐ๋ ์ด๋ฏธ์ง์ ํ์ , ์ค์ผ์ผ ๋ณํ, ์กฐ๋ช ๋ณ๋, ๋ ธ์ด์ฆ, ๋ถ๋ถ ๊ฐ๋ฆผ(occlusion) ๋ฑ ๋ค์ํ ํ๊ฒฝ ๋ณํ์์๋ ์ผ๊ด๋ ํน์ฑ์ ์ ์งํด์ผ ํ๋ค.
์์
SIFT๋ ์ค์ผ์ผ·ํ์ ๋ถ๋ณ์ฑ์ ์ํด DoG(Difference of Gaussian) ๊ธฐ๋ฐ์ ์ค์ผ์ผ ๊ณต๊ฐ ๋ถ์๊ณผ ๊ทธ๋๋์ธํธ ๋ฐฉํฅ ์ ๊ทํ๋ฅผ ์ ์ฉ.
PPTFH(Point-Pair Transformation Feature Histograms)์ 3D ํ๋ฉด ๋งค์นญ์์ ๋ ธ์ด์ฆ์ ํด์๋ ๋ณํ์ ๊ฐ์ธํ ์ฑ๋ฅ์ ๋ณด์.
Distinctiveness
์๋ก ๋ค๋ฅธ ํน์ง์ ์ ๋ช ํํ ๊ตฌ๋ถ๋๋ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ ๊ฐ์ ธ์ผ ํ๋ฉฐ, ๋์ผํ ์ง์ ์ ๋ณํ ํ๊ฒฝ์์๋ ์ ์ฌํ ๊ฐ์ ์ ์งํด์ผ ํ๋ค
์์
SURF๋ Haar wavelet ๊ธฐ๋ฐ์ ๋ฐฉํฅ์ฑ ํ์คํ ๊ทธ๋จ์ ์ฌ์ฉํด ๋ถ๋ณ๋ ฅ์ ๋์ด๋ ค ํจ
๋ฅ๋ฌ๋ ๊ธฐ๋ฐ SuperPoint๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ ํ์ต์ ํตํด ๋ณต์กํ ๋ณํ์์๋ ์ธ๋ฐํ ๊ตฌ๋ถ ๊ฐ๋ฅ
Compactness
๋์คํฌ๋ฆฝํฐ ๋ฒกํฐ์ ์ฐจ์ ์์ ์ ์ฅ ๊ณต๊ฐ์ ์ต์ํํ์ฌ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ๊ณผ ์ค์๊ฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ผ ํ๋ค
์์
ORB๋ 256๋นํธ ์ด์ง ๋์คํฌ๋ฆฝํฐ๋ฅผ ์ฌ์ฉํด SIFT(128์ฐจ์ ๋ถ๋์์์ ) ๋๋น 1/16 ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ.
BRISK๋ ์คํ์ด๋ด ์ํ๋ง ํจํด์ผ๋ก ์ง์ญ ์ ๋ณด๋ฅผ ์์ถํด 512๋นํธ๋ก ํํ
Efficiency
์ ์: ๋์คํฌ๋ฆฝํฐ ์์ฑ ๋ฐ ๋งค์นญ ๊ณผ์ ์์์ ์ฐ์ฐ ์๋๊ฐ ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์๊ตฌ์ฌํญ์ ์ถฉ์กฑํด์ผ ํฉ๋๋ค.
์์
๋ฐ์ด๋๋ฆฌ ๋์คํฌ๋ฆฝํฐ(BRIEF, BRISK)๋ ํด๋ฐ ๊ฑฐ๋ฆฌ(Hamming Distance) ๊ธฐ๋ฐ ๋งค์นญ์ผ๋ก XOR ์ฐ์ฐ๋ง์ผ๋ก ๊ฑฐ๋ฆฌ ๊ณ์ฐ ๊ฐ๋ฅ
์์ฑ ๊ฐ ์ํธ์์ฉ ๋ฐ ํธ๋ ์ด๋์คํ
| ์์ฑ | ์์ถฉ ๊ด๊ณ | ์ต์ ํ ์ ๋ต |
|---|---|---|
| Robustness ↔ Distinctiveness | ๊ณผ๋ํ ๋ถ๋ณ์ฑ์ ๋ถ๋ณ๋ ฅ ๊ฐ์ | LISRD์ฒ๋ผ ์ํฉ๋ณ ๋ถ๋ณ์ฑ ์ ํ ๋ฑ |
| Compactness ↔ Distinctiveness | ์ฐจ์ ์ถ์๋ ์ ๋ณด ์์ค ์ ๋ฐ | PCA ๊ธฐ๋ฐ ํน์ง ์ถ์ถ ๋๋ ์ด์ง ์์ํ ๋ฑ |
| Efficiency ↔ Robustness | ๋ณต์กํ ๋ถ๋ณ์ฑ ์ฐ์ฐ์ ์ง์ฐ | ํ๋์จ์ด ๊ฐ์(GPU/FPGA) ํ์ฉ ๋ฑ |
4. ๋ํ์ ์ธ Feature Descriptor ์๊ณ ๋ฆฌ์ฆ
SIFT (Scale-Invariant Feature Transform)
- ํน์ง: ์ด๋ฏธ์ง์ ์ค์ผ์ผ๊ณผ ํ์ ๋ณํ์ robustํ ๋์คํฌ๋ฆฝํฐ๋ฅผ ์ถ์ถ
- ๋์ ์๋ฆฌ:
- ์ค์ผ์ผ ๊ณต๊ฐ์์ ๊ทน๊ฐ์ ๊ฒ์ถํ์ฌ ๋ค์ํ ํฌ๊ธฐ์ ๊ฐ์ฒด์ ๋์
- ๊ฐ ํน์ง์ ์ ์ฃผ ๋ฐฉํฅ์ ํ ๋นํด ํ์ ์ robustํ๊ฒ ๊ฒ์ถํจ
- ํน์ง์ ์ฃผ๋ณ์ 4x4 ๋ธ๋ก์ผ๋ก ๋๋๊ณ ๊ฐ ๋ธ๋ก์ 8๋ฐฉํฅ ๊ทธ๋ผ๋์ธํธ ํ์คํ ๊ทธ๋จ์ ๊ณ์ฐํ์ฌ 128์ฐจ์ ๋ฒกํฐ ์์ฑ
- ์ฅ์ : ๋ค์ํ ๋ณํ์ ๊ฐ์ธ
- ๋จ์ : ๊ณ์ฐ๋์ด ๋ง๋ค
SURF (Speeded-Up Robust Features)
- ํน์ง: SIFT๋ณด๋ค ๋น ๋ฅธ ์๋๋ก ์ ์ฌํ ์ฑ๋ฅ
- ๋์ ์๋ฆฌ:
- ์ ๋ถ ์์์ ํ์ฉํด ๋น ๋ฅธ ์ฐ์ฐ
- Haar wavelet ๊ธฐ๋ฐ์ ํน์ง ์ถ์ถ
- ์ฅ์ : SIFT์ ์ ์ฌํ ์ฑ๋ฅ, ๋ ๋น ๋ฅธ ์ฒ๋ฆฌ
- ๋จ์ : ์ฌ์ ํ ๊ณ์ฐ๋์ด ๋ง๋ค
BRIEF/BRISK
- ํน์ง: ์ด์ง(binary) ๋์คํฌ๋ฆฝํฐ๋ก, ๋งค์ฐ ๋น ๋ฅธ ๋งค์นญ๊ณผ ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ํน์ง
- ๋์ ์๋ฆฌ:
- BRIEF: keypoint ์ฃผ๋ณ ํฝ์ ์์ ๋ฐ๊ธฐ ๋น๊ต๋ก ์ด์ง ๋ฒกํฐ ์์ฑ
- BRISK: ์ค์ผ์ผ ๊ณต๊ฐ์์ keypoint ๊ฒ์ถ + ์ด์ง ๋์คํฌ๋ฆฝํฐ ์์ฑ
- ์ฅ์ : ์ฐ์ฐ ํจ์จ์ฑ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ ๋งค์ฐ ๋์
- ๋จ์ : ์กฐ๋ช , ์ค์ผ์ผ, ํ์ ๋ณํ์ ์๋์ ์ผ๋ก ์ฝํจ
+) FAST (Features from Accelerated Segment Test)
- ํน์ง: ๋งค์ฐ ๋น ๋ฅธ ์๋๋ก ์ฝ๋(ํน์ง์ )๋ง์ ๊ฒ์ถํ๋ ๋ฐ ํนํ๋ ์๊ณ ๋ฆฌ์ฆ
- ๋์ ์๋ฆฌ:
- ํฝ์ ๋ฐ๊ธฐ ๋น๊ต๋ฅผ ํตํ ์ฝ๋ ๊ฒ์ถ (desccriptor๊ฐ ์๋๋ค)
- ๋์คํฌ๋ฆฝํฐ๋ ์ ๊ณตํ์ง ์์ผ๋ฉฐ, ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ(์: BRIEF, ORB)๊ณผ ํจ๊ป ์ฌ์ฉ
- ์ฅ์ : ์๋ ์ต์ฐ์, ์ค์๊ฐ ์์ฉ์ ์ ํฉ
- ๋จ์ : ๋ถ๋ณ์ฑ, ๋ถ๋ณ๋ ฅ์ ๋์คํฌ๋ฆฝํฐ ์๊ณ ๋ฆฌ์ฆ์ ์์กด
+) ORB (Oriented FAST and Rotated BRIEF)
- ํน์ง: FAST๋ก keypoint๋ฅผ ๊ฒ์ถํ๊ณ , BRIEF๋ก descriptor๋ฅผ ์์ฑํ๋ฉฐ, ํ์ ๋ถ๋ณ์ฑ๊ณผ ๋น ๋ฅธ ์๋๋ฅผ ๋์์ ์ถ๊ตฌํ๋ค
- ๋์ ์๋ฆฌ:
- FAST ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋น ๋ฅด๊ฒ keypoint ์ถ์ถ (desccriptor๊ฐ ์๋๋ค)
- BRIEF ์ด์ง ๋์คํฌ๋ฆฝํฐ๋ฅผ ํ์ ์ ๊ฐ์ธํ๊ฒ ๋ณํ
- 256๋นํธ ์ด์ง ๋ฒกํฐ๋ก ํํ
- ์ฅ์ : ๋งค์ฐ ๋น ๋ฅด๊ณ , ์๋ฒ ๋๋/์ค์๊ฐ ํ๊ฒฝ์ ์ ํฉ
- ๋จ์ : SIFT/SURF ๋๋น ๋ถ๋ณ๋ ฅ์ด ๋ค์ ๋ฎ์, ์ค์ผ์ผ ๋ถ๋ณ์ฑ์ ์๋์ ์ผ๋ก ์ฝํจ
5. Descriptor๊ฐ ์ค์ ๋ก ์ด๋ป๊ฒ ์ฐ์ด๋?
- ์ด๋ฏธ์ง ๋งค์นญ: ๋ ์ด๋ฏธ์ง์์ ์ถ์ถํ ๋์คํฌ๋ฆฝํฐ ๋ฒกํฐ ๊ฐ์ ๊ฑฐ๋ฆฌ(์: L2, ํด๋ฐ ๊ฑฐ๋ฆฌ ๋ฑ)๋ฅผ ๊ณ์ฐํด ์ ์ฌํ ํน์ง์ ์ ๋งค์นญํ๋ค
- SLAM: ๋ก๋ด์ด ์ด๋ํ๋ฉด์ ์๊ฐ์ ์ผ๋ก ๋์ผํ ์ฅ์๋ฅผ ์ฌ์ธ์ํ ๋, ๋์คํฌ๋ฆฝํฐ ๋งค์นญ์ด ํ์์ ์ด๋ค
- ๊ฐ์ฒด ์ธ์/์ถ์ : ๊ฐ์ฒด์ ๊ณ ์ ํ ๋์คํฌ๋ฆฝํฐ๋ฅผ ์ป๊ณ , ์ค์๊ฐ ์ ๋ ฅ ์ด๋ฏธ์ง์์ ๋์ผ ๊ฐ์ฒด๋ฅผ ํ์งํ๋ค