본문 바로가기
python/Computer Vision

영상 처리 기초 개념 6 - 영역 분할 고전 기법(SLIC, NCUT, grabCUT)

by 괴로운데이빗 2025. 4. 13.

[영역분할]

물체가 점유한 영역을 구분하는 작업
에지가 완벽하다면 영역 분할이 필요하지 않다.


1. 고전 기법
 - 명암/컬러의 변화만 보고 영역 분할
2. 의미 분할(의미 있는 단위로 분할)

 - 딥러닝 방식을 통한 의미 분할
 - 사람은 고전 기법처럼 명암/컬러의 변화만 보고 영역분할 하지 않고, 뇌에 저장되어 있는 물체의 3차원 모델을 꺼내서 사용 & 관심 있는 물체에 집중(선택적 주의집중)

 

[고전 기법]
1. SLIC(simple Linear Iterative Clustering)
 - k-means clustering 알고리즘과 비슷하게 작동

 - 지역적 명암 변화만 고려함

[동작방식]
1. k개 화소를 군집 중심으로 지정
2. 각 화소에 대해 자신과 인접한 4개 군집 중심까지의거리를 계산해 가장 유사한 군집 중심에 할당
3. 각 군집 중심은 자신에게 속한 화소들의 평균값으로 갱신
4. 모든 군집 중심의 이동량의 평균이 설정한 임계치 보다 작아질 때까지 해당 과정 반복(작으면 수렴했다고 판단)

 

2. 영역 분할을 최적화 문제로 풀기(그래프 기반 방법)

 - 영상(이미지)을 그래프 구조로 표현해 분할을 최적화 문제로 접근 할 수 있음

 - 대표 알고리즘 : Ncut(Normalized Cut) 알고리즘

s : similary, 제대로 분할이 되었다면 u와 v의 유사도가 작아지므로 cut 역시 작다.

 - SLIC은 지역적 명암 변화만 고려하기에 서로 다른 영역의 색상이 비슷할 경우 영역 분할이 되지 않음. 이에, 전역적 정보를 같이 고려하여 지역적으로는 색상 변화가 없더라도 전역적으로 유리한 측면이 있다면 그곳을 물체 경계로 간주하는 방식

 - SLIC은 주변 화소와만 비교하는 지역 정보만 사용하나 ncut은 모든 화소간의 연결을 고려하는 전역 정보 사용.

[동작 방식]
1. 영상을 그래프로 표현
 - 각 화소(또는 슈퍼화소)를 노드로 간주하고, 노드 간 연결된 에지의 가중치로 화소 간의 유사도를 사용
 - 유사도 : 두 화소의 '거리의 역수' or 'Max(거리)-거리'로 정의
 - 거리 : 두 화소간 (r, g, b, x, y) 거리(RGB 색상값과 위치(x, y)를 함께 고려)
2. 분할을 최적화 문제로 품
 - 정규화 절단(Normalized Cut, Ncut) 알고리즘

 - ncut을 목적함수로 사용하면 분할을 최적화 문제로 풀 수 있음
 - 그래프의 전체 연결 구조를 고려해, 내부 결합도는 높고 외부 결합도는 낮은 방식으로 그래프를 나누는 것이 목표

 

3. 대화식 분할
 - 사용자 입력을 기반으로 한 대화식 영역 분할
 - 대표 알고리즘 : grabCut

[동작 방식]
1. 사용자는 이미지에서, 물체 : 파란색 / 배경 : 빨간색 으로 지정
2. 각 영역별로 해당 역역의 색상 정보를 통해 히스토그램을 생성
3. 물체/배경으로 지정되지 않은 나머지 화소와 두 히스토그램과의 유사도를 계산하여 물체일 확률과 배경일 확률 추정
4. 추정된 확률로 물체/배경 영역을 갱신

5. 이를 기반으로 히스토그램을 다시 생성하고 물체 영역과 배경영역을 갱신
6. 영역 변화가 거의 없을 때까지 이 과정을 반복하며, 영역이 거의 변하지 않으면 수렴한 것으로 간주