| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 누적합
- dfs
- java
- JavaScript
- 최적화
- 코틀린
- 임베디드
- BFS
- lv2
- c++
- dp
- cpp
- 2018 KAKAO BLIND RECRUITMENT
- 동적계획법
- 다이나믹 프로그래밍
- kotlin
- 우선순위큐
- 다이나믹프로그래밍
- 그리디
- 컴퓨터 비전
- level3
- 자바
- level2
- 이분탐색
- 컴퓨터비전
- 구현
- Stack
- 프로그래머스
- C
- 백준
- Today
- Total
코드를 느껴바라
컴퓨터 비전 : 특징 기술자(feature point) 본문
특징 기술자와 특징 기술자의 조건
컴퓨터 비전에서 뭔가를 "찾는다"는 건 꽤 자주 등장하는 일이다. 예를 들어 이미지 속 사람 얼굴, 도로 표지판, 특정 물체, 혹은 프레임 사이의 동일한 지점 등. 이럴 때 쓰이는 게 바로 특징점(feature point)과 그걸 수치적으로 설명해주는 특징 기술자(feature descriptor)다.
특징 기술자는 쉽게 말해, “이 지점이 이런 특징을 가지고 있어요”라고 말해주는 벡터(숫자 뭉치)다. 근데 아무 기술자나 쓰면 되는 건 아니다. 좋은 특징 기술자는 몇 가지 조건을 갖추고 있어야 한다.
1. 반복 가능성 (Repeatability)
사진을 여러 각도, 여러 조건에서 찍어도 같은 지점에서 같은 특징점이 나와야 한다. 이게 안 되면 매칭이고 뭐고 할 수가 없다. 예를 들어 같은 사과를 찍었는데, 어떤 사진에선 꼭지에서 특징이 잡히고, 다른 사진에선 아무 데서나 나온다면? 끝이다.
2. 불변성 (Invariance)
카메라가 돌거나, 멀어지거나, 빛이 살짝 바뀌어도 특징 기술자가 그대로 유지돼야 한다.
대표적인 예:
- 이미지 회전 → 기술자도 회전에 둔감해야 함
- 스케일 변화 → 멀리서 찍은 사진이든 가까이서 찍은 사진이든 같은 기술자가 나와야 함
- 밝기 변화 → 조명에 따라 결과가 달라지면 곤란함
SIFT 같은 알고리즘이 이 불변성에 진심인 대표적인 예다.
3. 독립성 (Distinctiveness)
서로 다른 지점끼리는 기술자도 명확하게 달라야 한다. 그래야 두 지점을 비교했을 때 “이건 같아” 혹은 “이건 완전히 달라”를 제대로 판단할 수 있다. 독립성이 부족하면 매칭이 뭉개진다. 진짜 비슷하지도 않은 지점을 자꾸 같은 걸로 판단하게 되니까.
4. 압축성 (Compactness)
기술자가 너무 길고 복잡하면, 계산량이 확 늘어나고, 메모리도 많이 차지한다. 그래서 보통은 짧고 가벼운 기술자가 좋다.
예: ORB는 그냥 256비트짜리 이진 벡터로 표현됨. 빠르고 효율적.
5. 계산 효율성 (Efficiency)
실시간 시스템이나 모바일, 임베디드 환경에서는 느린 알고리즘은 쓸 수가 없다.
빠르게 특징점을 찾고 기술자를 만들 수 있는가는 정말 중요한 요소다. 아무리 정확해도 느리면 탈락.
6. 강건성 (Robustness)
노이즈가 낀다거나, 블러가 좀 있다거나, 압축돼서 화질이 나빠졌다거나 해도 기술자가 흔들리지 않아야 한다.
실제 환경은 언제나 이상적이지 않기 때문에, 웬만한 상황에서도 버틸 수 있는 기술자가 필요하다.
7. 정합성 (Matchability)
기술자끼리 비교했을 때, 유사한 건 가깝고, 다른 건 멀어야 한다. 그래야 거리 기반으로 쉽게 매칭을 잡을 수 있다.
예: 유클리디안 거리, 햄밍 거리 같은 걸로 계산.
요약해보면
| 반복 가능성 | 같은 장면에서 항상 같은 특징점 나와야 함 |
| 불변성 | 회전, 스케일, 조명 등 변화에도 끄떡없어야 함 |
| 독립성 | 서로 다른 지점은 다른 기술자로 표현돼야 함 |
| 압축성 | 기술자가 짧고 가볍게 구성돼야 함 |
| 계산 효율성 | 빠르게 만들 수 있어야 함 |
| 강건성 | 노이즈나 블러에도 잘 작동해야 함 |
| 정합성 | 유사하면 가까운 거리, 다르면 먼 거리여야 함 |
이런 조건들을 고려해서 SIFT, SURF, ORB, BRIEF 같은 알고리즘들이 설계되어 왔다.
어떤 특징 기술자를 쓸지 결정할 땐, "우리 시스템이 뭘 원하지?"를 먼저 생각해보는 게 중요하다. 정확도냐? 속도냐? 메모리냐? 아니면 현실 적응력이냐?를 생각해야 한다.
필요하면 다음 글에서 각 기술자 알고리즘별로 위 조건에 얼마나 잘 부합하는지도 비교해볼 예정.
'CS > 컴퓨터 비전(Computer Vision)' 카테고리의 다른 글
| 컴퓨터 비전 : 에지 검출(Edge Detection) (0) | 2025.04.24 |
|---|---|
| 컴퓨터 비전 : 영상처리의 기본 개념과 핵심 기법들 (0) | 2025.04.23 |
| 컴퓨터 비전 : 워터 셰드(Watershed) (0) | 2025.04.18 |
| 컴퓨터 비전 : 민시프트와 엣지 스무딩 (0) | 2025.04.18 |
| 컴퓨터 비전 : 오츄 알고리즘(ostu) (0) | 2025.04.12 |