Heat Equation and Gaussian Blurring
SIFT-알고리즘에서는 DoG이미지의 극값에서 특징점에 해당하는 keypoint을 찾는다. DoG는 이름이 의미하듯이 다른 스케일로 가우시안 블러링된 두개의 이미지의 차이값을 의미한다. 따라서 DoG를 구하기 위해서는 각 octave에서 주어진 레벨+3개 만큼의 가우시안 블러링된 이미지를 만들어야 한다. 가우시안 컨볼류션이 x-y방향으로 분리가 가능하여서 이 점을 이용하면 계산을 빠르게 할 수 있고, 또한 이미 블러링된 이미지를 가지고 다음 스케일에서 입력으로 사용하여서 필터반경을 줄이는 트릭을 이용하여서 연산량을 많이 줄일 수 있다. 그러나 이것은 근본적으로 한계가 있어서 보다 빠르게 계산할 수 있는 방법을 찾아야한다.
연속공간에서 가우시안 컨볼류션을 살펴보면 이것은 초기조건이 주어진 열전도방정식의 해임을 알 수 있다. 여기서 초기조건은 입력이미지에 해당하고 열전도방정식이 시간파라미터는 스케일에 해당한다(보다 엄밀하게는 t= sigma^2/2). 일차원 이미지 I(x)와 가우시안 컨볼류션은 다음처럼 주어지고 (이차원의 경우 단순히 일차원의 곱으로 주어지므로 확장은 단순하다),
U(x; t) = 1/sqrt(t) Integral { exp(-(x-x')^2/4t) I(x') } dx', IC:: U(x; t=0) = I(x);
U(x;t)는 일차원의 열전도 방정식(선형 편미분방정식)
dU/dt = d^2U/dx^2;
을 만족시킴을 직접 대입해 보면 알수 있다 (가우시안 컨볼류션의 의미를 살펴보면 이것을 금방 유추해 낼 수 있다). 이 미분방정식을 수치해석적으로 풀면 원하는 스케일(시간)에서의 해를 구할 수 있다. 그러나 최종스케일이 큰 경우에는(즉, 큰 t값에 대해서) 많은 반복작업을 해야한다 (차분방정식이 수렴하기 위해서는 time-step과 공간을 나누는 구간의 크기비가 일차원의 경우에는 0.5, 이차원의 경우에는 0.25이하이여야 수렴을 하게 되므로, 이미지의 경우에는 기본공간 구간이 1픽셀단위이므로 시간은 0.25이하 단위로 증가하도록 프로그래밍이 되어야 한다, sigma^2=2 *.25=0.5-->sigma=0.7xxx 이므로 한옥타브를 증가하기 위해서는 최소한 sigma0/0.7 번정도의 반복과정이 필요하다). 따라서 큰 스케일에서의 결과를 얻기 위해서 이러한 각각의 스텝을 지나서 더하는 방법이 아니고 스케일을 곱하는 방법으로 하여서 빨리 도달하기 하는 방법을 동원해야 한다. 이것을 위해서 열전도 방정식의 좌우변에 t을 곱하여서 방정식이 명시적으로 시간과 공간을 섞어서 시간축에서의 변화를 공간상에서의 변화로 연결시키는 방법을 이용한다. 다시 t 대신에 sigma를 쓰면 양변에 t가 곱해진 열전도방정식은
dU / dlog(sigma) = sigma^2 d^2U/dx^2; //natural logarithm.
로 쓰여진다. 좌우변을 discrete버전으로 쓰기 위해서 미분계수 정의에 따라 전개하면
LHS ~ (U(x; b*sigma) - U(x; sigma))/ log(b), b->1;
RHS ~ (U(x+sigma*h; sigma) - 2*U(x; sigma) + U(x-sigma*h; sigma))/h, h->0 ;
인데, 이미지이 경우에는 h = 1 로 한다. 수렴 조건을 쓰면 이경우에는 time step이 log(b)로 주어지므로 수렴조건을 고려하면
b < exp(0.5) 일차원
b < exp(0.25) 이차원
.....
으로 주어지고 스케일 공간에서는 b의 곱으로 증가한다. 따라서 충분히 큰 스케일의 경우에는 덧셈에 의한 증가보다도 1보다 큰 수의 곱에의한 증가가 훨씬 빠르게 도달하므로, 이 방법을 쓰면 더 적은 반복횟수로도 원하는 스케일에 도달한다. 프로그래밍을 위한 recursion relation :
s_k = sigma0*b^k; //sigma0=initial scale of input image;
U(x; s_k+1) = U(x; s_k) + log(b) * { U(x; x-s_k) - 2*U(x;s_k) + U(x+s_k) } ;
IC:: U(x; s_0) = I(x);
을 이용하면 각각의 스케일에서 결과를 얻을 수 있다. 물론 x+s_k, x-s_k가 픽셀점(정수값)이 아닐 수 있으므로 적절한 interpolation 을 이용하여서 계산해야한다.
미룸클리닉 딸기 style 아이베제 토이앤기프트 그분이 생각날땐 극심한 이기주의자 기다림 아침안개 데님파티 행복가득우리집
