관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

지역 특징 2 - 스케일 불변한 지역 특징과 SIFT 본문

인공지능/컴퓨터 비전

지역 특징 2 - 스케일 불변한 지역 특징과 SIFT

huenuri 2024. 11. 11. 05:47

지역 특징에 대해서 계속해서 공부해 볼 것이다.


 

 

 

1. 스케일이 불변한 지역 특징

사람은 거리에 상관 없이 같은 물체는 같다고 인식한다. 단지 세세한 내용을 인식할 수 있는 정도에 차이가 있을 뿐이다. 친구가 멀리 있을 때는 친구라 인식하는데 그치지만 가까워지면 표정을 인식하고 건넬 말을 정한다. 컴퓨터 비전이 물체의 스케일에 대처하는 인간의 이런 능력을 갖출 수 있을까? 스케일 공간 이론은 스케일 분변의 가능성을 열어 준다..

 

스케일 공간 이론에서는스케일을 모르는 상황에 대응하기 위해 알고리즘 5-1의 세 단계 전략을 사용한다. 

 

 

 

 

 


 

 

 

 

2. SIFT

알고리즘 5-1을 구현하는 다양한 변형이 제시되었는데 SIFT가 가장 성공적이고 지금까지 널리 쓰인다. SIFT는 브리티시컬럼비아 대학교의 데이빗 로우 교수가 1999년 논문으로 발표하여 세상에 알려졌다.

 

검출

SIFT는 알고리즘 5-1의 세 단계를 가쳐 특징점을 검출한다. 각 단계는 최적의 검출 정확도를 달성하고 계산 시간을 최대한 줄이는 연산을 사용한다.

 

1단계 : 다중 스케일 영상 구축

SIFT는 그림 5-7의 가우시안 스무딩과 피라미드 방법을 결합해 다중 스케일 영상을 구성한다. 그림 5-9 a는 둘을 결합하는 방법을 설명한다. 아래쪽 영상 여섯 장은 원래 영상에 가우시안 스무딩을 적용해 만드는데 이런 영상들을 옥타브라 부른다. 아래쪽 여섯 장은 옥타브 0, 위쪽 여섯 장은 옥타브 1이다. 옥타브 1은 원래 영상을 반으로 줄이고 가우시안을 적용해 만든다. 영상을 반으로 줄이는 일을 반복하여 옥타브 2, 3, 4, ...를 추가한다. 옥타브 0과 옥타브 1을 만드는 과정을 자세히 설명한다.

 


 

 

 

2단계 : 다중 스케일 영상에 미분 적용

SIFT는 식 (5.11)의 정규 라플라시안을 사용한다. 라플라시ㅏㄴ은 큰 필터로 컬볼루션을 수행하므로 시간이 많이 걸린다. SIFT는 정규 라플라시안과 매우 유사하다고 증명된 DOG를 사용하여 계산 시간을 확기적으로 줄인다. DOG는 그림 5-9 b에서 볼 수 있듯이 이웃한 영상을 화소별로 빼면 되기 때문에 아주 바르게 계산할 수 있다. 한 옥타브에 여섯 장의 영상이 있기 때문에 다섯 장의 DOG 영상이 생긴다.


 

 

 

3단계 : 극점 검출


 

 

 

 

SIFT 기술자 

앞 절에서 SIFT 특징점의 위치와 스케일 정보를 알아냈다. 위치와 스케일 정보만으로는 물체를 매칭하는데 턱없이 부족하기 때문에 특징점 주위를 살펴 풍부한 정보를 가진 기술자를 추출하는 단계를 거친다. 기술자는 특징 텍ㅌ에 해당한다. 특징점 검출과 마찬가지로 기술자 추출도 앞에서 제시한 6개를 만족해야 한다.

 

 

알고리즘

 

 

 


 

 

 

SIFT 검출과 기술자 추출

OpenCV는 SIFT 특징점을 검출하고 영상에 표시해주는 함수를 제공하는데, 사용하기 아주 쉽다. 다음 프로그램은 이 함수들을 사용하는 사례다.

 

SIFT 검출과 기술자 추출해보기

 

 

7행과 10행은 영상을 읽고 명암 영상으로 변환하여 gray에 저장한다. 모든 매개변수가 기본값을 가지고 있어 여기서는 생략했다. 매개변수 nfeatures는 검출할 특징점 개수를 지정하는데, 기본값인 0으로 설정하면 검출한 특징점을 모두 변환하고 개수를 지정하면 신뢰도가 높은 순서로 지정한 만큼만 반환한다.

 

nOctaveLayers는 옥타브 개수를 지정한다. constrastThreshold는 테일러 확장으로 미세 조정할 때 쓰는 매개변수로, 값이 클수록 적은 수의 특징점이 검출된다.  edgeThreshold는 에지에서 검출된 특징점을 걸러내는 데 쓰는 매개변수로 값이 클수록 덜 걸러내 더 많은 특징점이 발생한다. sigma는 옥타브 0의 입력 영상에 적용할 가우시안의 표준편차이다.

 

 

이 코드를 실행한 후 특징을 추출하면 이미지가 조금 달라져 보인다.


 

 

 

 

sift 객체의 detectAndCompute 함수를 호출하여 특징점과 기술자를 찾아 각각 kp와 des 객체에 저장한다. 특징점 검출과 기술자 검출을 나누어 처리하려면 이처럼 작성한다. 이후 출력 결과물이 달라졌음을 볼 수 있다.

 

 


 

 

학습을 마치고

너무 자세한 내용은 지금은 이해할 수 없으니 생략하며 넘어간다. 이런 식으로 특징을 검출한다는 것을 배울 수 있었다. 이어서 매칭에 대해서 공부해보려고 한다. 이번에는 조금 짧은 단원과 함께 두 개의 단원을 정리해 보았다.

컴퓨터 비전은 공부하기에는 그다지 흥미로운 과목은 아닌 것 같다. 그래도 필요하니까 공부는 끝까지 해볼 것이다.