Intro
지난 포스트에서는 Lucas-Kanade Algorithm에 추가된 Assumption을 이용해 Optical Flow를 어떻게 구하는지 알아봤다. 이번 포스트에서는 Lucas-Kanade Algorithm을 보완하기 위해 가중치를 통해 정확도를 올리는 방법과 Big Motion에 대응하기 위해 제안된 방법을 다뤄보겠다. 또한, 이전 포스트에서는 다루지 않은 Sparse Optical Flow의 고질적인 문제점에 대해서도 언급할 예정이다.
Weighted Window
Lucas-Kanade Algorithm은 Window 기반으로 설계되었다. 같은 Window 내의 픽셀들은 같은 Optical Flow 값을 갖는다. 가정이기 때문에 의문을 던지지 않았겠지만, 조금만 생각해보면 현실과 괴리가 크다. 특히 Edge 부분에서 오차가 크게 발생할 것이다. Weighted Window는 Lucas-Kanade Assumption에 조금이나마 현실 보정을 해준다. Window 중심일수록 큰 값을 갖게 되며, Window 내 픽셀들이 서로 다른 값을 갖는다. 일반적으로 Gaussian Weight를 사용한다.
위 식은 기존 Lucas-Kanade 전개에 Weight를 추가한 결과이다. Gaussian Weight를 사용한 위 식은 i번째 w 값을 구하기 위해 i번째 p, q 사이 거리의 Gaussian Function 값을 이용한다.
Coarse to Fine Strategy(Image Pyramid)
이전 포스트에서 말했듯이 Lucas-Kanade Algorithm은 큰 움직임(Big Motion, Large Displacement)에 취약하다. 왜 그럴까? Taylor Approximation을 위해 Short Displacement를 가정했음을 기억하는가? 그러면 자연스럽게 답이 될 것이다. 그렇다고 큰 움직임에 취약한 상태로 방치하면 Real World에서는 사용이 거의 힘들 것이다. 그래서 약간의 Trick을 적용한다. 전통적인 영상처리에서는 Image Pyramid라고 부르는 기법으로, 최근 Deep Learning을 통한 Computer Vision 분야에서는 Coarse to Fine Strategy라고 부른다.
Image Pyramid(Coarse to Fine Strategy)는 Down Scale 된 이미지(low resolution)에서 Up Scale 이미지(high resolution )로 변화시키며 이미지 전체를 도메인으로 하는 알고리즘의 convergence를 넓혀주는 역할을 한다. 이 기법을 활용하면 실제로는 Large Displacement인 움직임을 Short Displacement처럼 보이게 할 수 있다. Original Image에서는 50 픽셀 이상의 움직임이 발생해도 Down Scale을 통해 5 픽셀 내외로 최소화할 수 있다.
Down Scale한 Image에서 Short Displacement를 측정하고, 이를 Original Image까지 Up Scaling 해가며 최종적인 Flow Map을 획득하는 방법이다. 그러나 이 방법은 Down Scaling 과정에서 많은 정보가 사라지며, low resolution에서 발생한 오차가 Up Scaling 과정에서 수정되지 않고 유지된다는 문제가 있다. 이를 Error Propagation이라고 한다.
Reference