즉, a에 높은 값, c는 아주 낮은 값, b는 그 사이의 값 을 부여하는 함수를 만들면 된다.
모라벡 함수
특징 가능성 값 C
그림 4-3에서 점 a에 대한 (최솟값)C 값은 2, 점 b와 c에 대한 C (최솟값) 값은 0
변화가 없는 c 보다 한방향 변화가 있는 b 가 낫고, 한방향 변화가 있는 b보다 여러방향 변화가 있는 a가 낫다.
한계
한 화소만큼 이동하여 '네 방향'만 봄
'잡음'에 대한 대처 방안 없음
1.5) 이동과 회전에 불변한 특징점 검출 알고리즘 : 해리스 코너: '1차 미분' 이용
해리스의 접근
이미지의 픽셀 강도 변화에 대한 주변 픽셀의 변화도를 측정하여 관심 특징점을 감지하는 알고리즘
이 알고리즘은 이미지에서 화전, 크기 조정, 이동에도 상대적으로 일관된 특징점을 검출할 수 있다.
"가중치" 제곱차의 합 WSSD("weightedsumofsquareddifference")을 이용한 잡음 대처 (3x3 이 모두 1인 마스크가 아닌 가우시안 마스크 사용!!!!!!!!)
모든 방향을 고려한 등방성 을 만족하기 위하여 "1차 미분" 도입
테일러 확장을 대입하면
2차 모멘트 행렬 A
어떤 점의 행렬 즉, 2차 모멘트 행렬 A 를 구할 수 있다.
2차 모멘트 행렬의 고유값 분석
c와 같이 두 개의 고유값 모두 0이거나 0에 가까우면 → 변화가 거의 없는곳
b와 같이 고유값 하나는 크고 다른 하나는 작으면 → 한 방향으로만 변화가 있는 에지
a와 같이 고유값 두 개가 모두 크면 → 여러 방향으로 변화가 있는 지점. 특징점으로 적합!
2차 모멘트 행렬의 고유값 분석
아래 식은 고유값이 모두 클 때만 크므로, 특징점일 가능성을 측정 하는데 사용
고유값 2개를 통해 C 값 추출 하여 특징점의 가능성이 높은 점을 찾을 수 있다.
위치 찾기 문제 대두
큰 C 값을 가진 큰 점들이 밀집되어 나타나므로 대표점 선택 필요(like 분기점 선택)
'2차 미분'을 이용한 해리스 코너도 가능
코너라는 용어가 적절한가?
코너 → 특징점 또는 관심점
예를 들어, 사슴의 경계 부분 외에도 명암 변화가 심한 '사슴의 눈' 등도 특징점으로 선택
1.6) 위치 찾기 알고리즘
해리스 적용 예
큰 값이 밀집되어 나타남 → 대표점 선택 필요
특징 가능성 맵 C 값으로 계산된 결과를 왼쪽 표로써 얻어내고, 값들이 밀집되어있는데, 대표점을 선택하는 문제가 위치 찾기 문제
m(j,i) 를 숫자로 표시하지 않고 영상으로 표현하면 0값은 검정색으로 표현됨,
간단한 삼각형 예처럼 그림으로 표현 가능, 여기서 빨간색은 가장 변화가 큰 특징점
비최대 억제
특징점 검출 알고리즘(모라벡, 해리스코너)은 이미지에서 여러 위치에서 유사한 특징점을 검출할 수 있는데, 이 경우 비최대 억제는 겹치는 특징점 중 가장 강한 특징점을 선택하고 나머지는 제거하여 중복을 방지한다.
이웃 화소보다 크지 않으면 억제됨 → 즉, 지역 최대만 특징점으로 검출됨
m(j,i)이 상,하,좌,우 임계값보다 클 경우 특징점으로 판정하여 F 에 점을 추가하는 알고리즘
if else 룰
c가 5번 등장함 즉 c라는게 m(j,i) 값을 여기다 대체를 하면, 메모리를 3번(i를 읽고, j를 읽고, 해당m을 읽고) 엑세스를 해야함.
총 15번 해야하는데, m(j,i) 값을 c를 카피하면 실제로는 총 메모리 엑세스가 9번으로 줄어듬
이동과 회전에 불변인가?
이동이나 회전 변환이 발생하여도 같은 지점에서 관심점이 검출될까? → YES
우리가 찾은 특징점이 회전과 이동에 불변한지 -> 코너에 해당하는 특징점이 검출되어 불변
스케일에 불변인가?
스케일이 변해도 같은 지점에서 관심점이 검출될까? NO
연산자 크기가 고정되어 있기 때문에
스케일 변화에 대처하려면 연산자 크기를 조절하는 기능이 필수적임
큰 원으로 작은 삼각형에서의 특징점을 검출하는 경우 모든 점이 특징점으로 선택이 되는 문제
연산자의 크기를 조절해야함 (작은 이미지는 작은 연산자, 큰 이미지는 큰 연산자 사용)
2
2. 이동/회전/스케일에 불변한 특징점
2.1) 스케일에 불변한 특징점(위치+스케일) 검출
거리에 따른 스케일 변화
예) 멸면 작고 윤곽만 어렴풋이 보이다가, 가까워지면 커지면서 세세한 부분이 보임
사람은 강인하게 대처하는데, 컴퓨터 비전도 대처 가능한가?
다중 스케일 접근 방법
스케일을 포함한 3차원 극점 (지역 최대 또는 최소점) 검출
다중 스케일 영상을 구현하는 두 가지 방식
가우시안 스무딩 : 스케일에 해당하는 σ 가 연속 공간에 정의
가우시안 스무딩을 써서 다양한 영상을 얻을 수 있다
피라미드 : 21 씩 줄어들므로 이산적인 단점
실제로 영상 자체를 다운 스케일링 해서 멀티 스케일 영상 얻기
가우시안 스무딩에 의한 스케일 공간
스케일 축(분산variance 을 의미하는 t를 scale parameter 라 하고, t=σ2)을 추가한 3차원 공간
t 축에서 지역 극점 탐색
영상 f 에 대하여 t축을 따라 정규 라플라시안 측정해 보면, 극점 발생함
(y,x) 공간에서 극점의 위치를 안다고 가정할떄, 실험에 따르면 t축에서 정규 라플라시안이 가장 안정적으로 극점 생성
극점의 σ 값은 "물체의 스케일" 에 해당
2.2) SIFT 검출 : 영상과 스케일을 "통합"하여 검출
SIFT 의 스케일 공간
피라미드 + 가우시안 구조 (sift 는 1/2 씩 줄인 파리마드 영상과 가우시안을 합한 구조)
계산 시간을 줄이기 위해서 DOG 라고 오른쪽 영상과 같이 가우시안 두개를 빼기
정규 라플라시안 맵 구축
[Mikolajczik2002a] 의 실험 결과에 따르면, 정규 라플라시안이 가장 안정적으로 극점 형성
정규 라플라시안(2차 미분)과 유사한 DOG 게산으로 대치
DOG는 단지 차영상을 게산하므로 매우 빠름
특징점 (키포인트) 검출
한 옥타브에는 다섯 장의 DOG 영상
중간에 끼인 세 장의 DOG 맵 각각에서 극점 검출
주위 26(=9+8+9)개 이웃에 대해 최저 또는 최대인 점
검출된 극점을 키포인트keypoint 라 부름
DOG 이미지 5개중 현재 선택된 이미지의 위 아래를 비교하기 때문에 중간에 3개만 연산에 참여한다.
DOG 맵 -> 샌드위치 처럼 나 자신이 포함된 부분은 나를 제외한 8개, 위로는 9개 아래로도 9개 해서 3x3x3 의 마스크 를 씌워 이웃에 대해 최저 혹은 최대인 극점을 키포인트라 부른다.
위치와 스케일 계산
키포인트는 <y,x,o,i> 정보를 가짐 : 옥타브 o의 i 번째 DOG 영상의 (y,x) 에서 검출되었다고 해석 가능
미세 조정 (부분 화소 정밀도)를 거쳐 <y',x',o',i'> 로 변환됨
(옥타브 0에서의) 위치와 스케일 계산 식 적용
일부만 보일 때에서 각 장난감을 찾아낼 수 있다.
2.3) SURF 검출
SURF
정확도 희생 없이 SIFT 보다 빠른 알고리즘 추구 (sift 발전시킨 surf 검출)
헤시안의 행렬식 이용
행렬식을 빠르게 계산하기 위해 dyy, dxx, dyx 를 9x9 마스크 (Dyy,Dxx,Dyx) 로 근사 계산 → 마스크 계산은 적분 영상 이용(ex. 14번의 덧셈 → 3번의 덧셈) →'왼쪽 위 구석부터 현재 화소까지 합' 으로 표시되는 적분 영상은 9강에서 자세히 설명
SURF 의 스케일 공간
원본 영상을 그대로 둔 채 다중 스케일 마스크를 적용 → 가우시안 스무딩 회피
가우시안의 시그마를 크게 증가시키는 것하고 원 영상의 마스크를 9x9 에서 15x15 로 확장하는 것과 거의 비슷한 효과가 있다.
이런식으로 마스크를 늘리면 가우시안 스무딩을 이용하지 않아도 됨
옥타브 구성 (가우시안 스무딩 대신에 마스크 크기를 증가시키는 방법 채택)
첫 번째 옥타브 9x9, 15x15, 21x21, 27x27 마스크(컴볼루션) 적용 (6씩 증가)
이미지의 크기를 줄이는 것x 연산자를 확대
마스크로 생성된 이미지중 예를 들어 DOG 를 적용하여 15를 기준으로 큰것 작은것, 또는 21을 기준(DOG)으로 한다면 1515 와 2727 과 비교여 26개 이웃에 대해 극점을 구하기
두 번째 옥타브 15x15, 27x27, 39x39, 51x51
첫 번째 옥타브의 두 번째 마스크 15x15에서 시작하고 6의 두 배인 12씩 증가
세 번째 옥타브 27x27, 51x51, 75x75, 99x99
두 번째 옥타브의 두 번째 마스크 27x27에서 시작하고 12의 두 배인 24씩 증가
TIP : SIFT 는 단일 스케일 연산자를 다중 스케일 영상에 적용하는 반면 SURF는 단일 스케일 영상에 다중 스케일 연산자를 적용한다고 볼 수 있다.
지역 극점 검출
첫 번째 옥타브에서 중간에 끼인 15x15 와 21x21 에서 지역 극점 검출 (그림 4-17)