원본 이미지와 target 이미지가 있을 때, 크기와 회전에 관계없이 동일한 두 객체를 매칭할 수 있는 알고리즘이다.
[좌상단:원본, 우상단: 타겟. 아래: 타겟과 원본을 매칭한 모습]
Down sampling : 크기에 영향을 받지 않는, 크기에 불변하는 ‘특징(feature)’을 추출하기 위해 원본 이미지를 1/2배씩 down sampling 하며 이미지를 나열한다.
Gaussian Blur : 이미지에 가우시안 필터를 이용해 noise를 추가 → 이미지의 size는 그대로 유지하면서 관측의 scale을 키운다.(윤곽(저주파)만 남기고 세부 정보(고주파)를 흐릿하게 하여 이미지를 큰 구조로 관측 가능)
Scale space를 만드는 전체 과정
Input : Original image $I(x,y)$
for i =0 to N do
$\text{Octave}_i$ : $\text{Octave}_i$$x,y \leftarrow x/2^i, y/2^i$
for j = 0 to K do
Apply GaussianBlur with $\sigma_j$ (GaussianBlur를 적용하는 것은 합성곱 형태로 표현한다.)
$L(x,y,\sigma)=(G_{\sigma_j}*I)(x,y)$
add to $\text{Octave}_i$
end for
end for
LoG : Laplacian of Gaussian = 이미지에 먼저 GaussianBlur( $(G_\sigma*I)(x,y)$ )를 적용한 후,🔸Laplacian Filter 표준편차에 대해 1차 미분을 적용하는 연산.
물리학에서의 ‘열 확산 방정식’ : $\Delta u(x,y,t) = \frac{\partial u(x,y,t)}{\partial t}$ . 시간 t에 따른 x,y 공간에서 열이 확산하는 정도를 나타낸다. (이 때 $\Delta$는 Laplacian 연산자인데 시간에 대해서는 1차 미분임. 시간 t에 따른 각 x,y 위치에서 열의 변화 속도를 파악하는 것.) GaussianBlur를 통해 노이즈가 확산하는 것이 물리학에서의 열 확산과 동일하다. ⇒ $\Delta L(x,y,\sigma)=\frac{\partial L(x,y,\sigma)}{\partial \sigma}$ : 열 확산 방정식의 시간에 대한 미분을 그대로 표준편차에 대한 미분으로 적용하면 **“표준편차(Gaussian Blur의 강도)에 따라 각 x,y 위치에서 픽셀 값의 변화량”**을 나타낸다.
SIFT에서 LoG를 적용하지 않는 이유 : 계산이 복잡해 연산 시간이 긺.
⇒ 대강 DoG가 도함수와 근사하다고 치고 연산이 쉽고 빠른 DoG를 사용
$$ \frac{\partial L(x,y,\sigma)}{\partial \sigma}=\frac{\partial f(x)}{\partial x}=\lim_{\Delta x\rightarrow 0}\frac{f(x+\Delta x)-f(x)}{\Delta x} \\\approx \frac{L(x,y,k\sigma)-L(x,y,\sigma)}{k\sigma -\sigma} $$
DoG : 2개의 서로 다른 Gaussian Blur를 적용한 이미지를 빼는 연산.
$$ DoG(x,y)=L(x,y,k\sigma)-L(x,y,\sigma) $$
미분값(=가우시안 블러의 강도에 따른 픽셀의 변화량)이 급격히 변하는 지점을 찾아내 edge, corner를 강조하는 것.
[octave → DoG → Normalize]
DoG의 적용
같은 Octave 내에서 서로 다른 표준편차 값으로 GaussianBlur된 인접한 두 이미지끼리 DoG 연산을 수행한다.
DoG 연산을 통해 표준편차(Gaussian Blur의 강도)에 따라 각 x,y 위치에서 픽셀 값의 변화량 의 근사값을 구했으니, 극대/극소인 지점이 어떤 특징을 가질 것으로 기대할 수 있다. → DoG가 극댓값, 극솟값인 pixel을 찾는 과정.
방법1) Pixel 단위 Keypoint 후보 선택
하나의 pixel을 선택
해당 pixel을 중심으로 3x3 window 내의 이웃 픽셀값들을 비교.
if 해당 pixel ≠ 최댓값/최솟값 → continue
다음, 이전 단계 scale의 3x3 window 내의 이웃 픽셀값들과도 비교
if 해당 pixel ≠ 최댓값/최솟값 → continue
방법2) 테일러 전개 기본 형태를 사용한 Keypoint 후보 선택 (?!)
$$ \mathbf{x}=(x,y,k\sigma-\sigma), \mathbf{0}=(0,0,0) \\D(\mathbf{x})\approx D(\mathbf{0})+\Big(\frac{\partial D}{\partial \mathbf{x}}\Big)^T\mathbf{x}+\frac{1}{2}\mathbf{x}^T\frac{\partial^2 D}{\partial \mathbf{x}^2}\mathbf{x} $$
$D=DoG(x,y)$
$\frac{\partial D(\mathbf{x})}{\partial \mathbf{x}}=0$ 인 지점에서 극값(극대/극소, extrema) $\hat{\mathbf{x}}=(x,y,k\sigma-\sigma)$이 존재
$$ \hat{\mathbf{x}}=-\Big(\frac{\partial^2D}{\partial \mathbf{x}^2}\Big)^{-1}\frac{\partial D}{\partial \mathbf{x}} $$
⇒ 위 식을 만족하는 $\hat{\mathbf{x}}$를 찾으면 해당 DoG에서 극값에 해당하는 (x,y) 픽셀을 찾은 것.