본문 바로가기
Study/Algorithm

[Optical Flow] 옵티컬 플로우3 - Optical Flow 개념 이해

by _YUJIN_ 2023. 7. 3.

이전에는 영상분석에서의 용어와 Motion field에 대해 정리해보았다. 

2023.06.30 - [study/Algorithm] - [Optical Flow] 옵티컬 플로우

2023.07.02 - [분류 전체보기] - [Optical Flow] 옵티컬 플로우2 - Motion field 개념 이해

 

이번에는 이전에 이어서 Optical Flow에 대한 개념을 정리하려고 한다. 

참조 : https://gaussian37.github.io/vision-concept-optical_flow/#

참조 : https://searching-fundamental.tistory.com/17?category=1040000 

2. Optical Flow 란? 

  • Optical Flow는 정확하게는 물체의 움직임을 포착하는 방법은 아니다. ( 물체와는 독립적인 추정 방식. ) 
  • 아래의 그림과 같이 픽셀 별로 $ I(x,y,t) -> I(x,y,t+1) $ 를 어떻게 추정하는지를 구하는 것 (motion vector구하는 문제)으로 Optical Flow를 정의할 수 있다.

https://gaussian37.github.io/vision-concept-optical_flow/#

  • Optical Flow는 물체의 움직임을 계산하지는 않고, 명암 변화 (Brightness pattern)만을 고려해 이미지에서 변화를 포착한다. ( 명암 변화는 픽셀 값의 변화로 연결된다. )
  • Optical Flow의 output이 Motion field의 역할을 할 수 있는 motiton vector가 된다. (motiton vector가 모여서 Motion field가 되는 건가..?)
  • 즉, Optical Flow는 Optical field ( =Motion field )를 구하기 위해 이전 프레임과 현재 프레임의 차이를 이용해서 현재 위치의 픽셀값과 주변 픽셀들과의 관계를 분석해서 각 픽셀의 이동 (motion)을 근사 (Approximation)할 수 있다. 이를 통해 움직임을 구별해 낼 수 있다. ( 구체 회전이나 광원 이동과 같은 상황에서는 어려움이 있다. )  * 근사 (Approximation)하다 : 근삿값을 구한다. 

https://gaussian37.github.io/vision-concept-optical_flow/#

  • 초록색의 $ t $ 순간의 삼각형이 파란색의 $ t+1 $ 순간의 삼각형으로 이동하면서 영상에서도 그에 대응하는 픽셀이 이동하게 된다. 
  • $ t $ Frame의 어떤 픽셀이 $ t+1 $ 의 어떤 픽셀과 대응이 되는 지 알아야 motion vector을 구할 수 있다. 
  • Optical Flow 알고리즘이 추정해야 할 motion vector인 $ v^{->}(v,u) $ 는 위의 그림과 같다. 
    • $ v $ : y 방향의 이동량에 해당 
    • $ u $ : x 방향의 이동량에 해당
  • Optical Flow 추정 알고리즘은 카메라가 고정되어 있지 않는 상황에서도 적용할 수 있어야 한다.
    - 카메라가 고정되어 있는 상황 : optical flow에 등장하는 움직임 == 물체의 움직임 
    - 물체가 고정되어 있는 상황 :  optical flow에 등장하는 움직임 == 카메라의 움직임

 

3. Optical Flow 가정 

가정 1. color / brightness constancy (밝기 항상성) : 어떤 픽셀과 그 픽셀의 주변 픽셀의 색/밝기는 같다.

가정 2. small motion : Frame 간 움직임이 작아서 픽셀 점은 멀리 움직이지 않는다. 

3-1. Brightness is constant

https://gaussian37.github.io/vision-concept-optical_flow/#

  • 위의 그림을 보면, $ f(y,x,t) $와 $ f(y,x,t+1) $ 의 4가지 픽셀은 $ t → t+1 $ 로 변경이 되어도 색이나 밝기는 유지된다는 것과 움직임 또한 크지 않고 근처에 있음을 알 수 있다. (Image Coherence와 연관된 가정)
  • Computer Vision에서 색/밝기는 픽셀 값으로 나타낸다. 그래서 이 가정은 인접하는 픽셀들은 같은 값을 가진다는 것이다. 
  • 밝기 항상성은 optical flow의 가장 중요한 가정이다. 
  • 전제 조건
    1. 조명의 변화가 없어야한다. 
    2. 물체와 광원이 이루는 각이 변해도 명암 차이는 발생하지 않아야한다. (무시한다)
  • 외부환경도 변하고, 물체의 법선 벡터와 광원이 이루는 각에 따라 명암값이 변하는 현실에서는 전제조건을 만들 수 없다. 
  • 다행인 것은 실제 실험결과, Threshold를 통해 이 가정을 수용할 수 있는 정도의 오차가 대부분이다.

  • 이동량이 $ (dy, dx) $일 경우, 첫 번째 가정인 Brightness Constancy을 적용한다면 식은 아래와 같이 도출할 수 있다. 
    $ f(y,x,t) = f(y+dy, x+dx, t+dt) $
    $ f(y+dy, x+dx, t+dt) - f(y,x,t) = 0 $

3-2. Motion is small

  • Time Coherence와 연관되는 가정이다. 
  • Frame 간 움직임이 작아서 픽셀 점은 멀리 움직이지 않는다.
  • 즉, $ (dy,dx) $ 가 굉장히 작은 값을 가진다는 것이다. 
  • $ dt $ (연속된 Frame의 시간 차이)가 물체 이동 거리의 픽셀 개수가 작아서 해당 가정을 만족한다면 아래와 같은 식을 나타낼 수 있다. 
    $  f(y+dy,x+dx,t+dt)=f(y,x,t)+\frac{\partial f}{\partial y}dy+\frac{\partial f}{\partial x}dx + \frac{\partial f}{\partial t}dt $
  • 위의 Taylor Series (테일러급수)식은 1차항까지만 남기고, 2차항부터는 모두 0으로 생각(무시)한다. 
    왜냐하면, 연속된 두 Frame의 시간차이 $ (dt) $ 가 충분히 작을때, $ (dy,dx) $ 도 충분히 작은 상황이라면 차수가 높아질수록 영향을 크게 미치지 않기 때문에 무시해도 큰오차가 없다.

3-3. Optical Flow Constraint Equation , Gradient Constraint Equation 

  • 가정 1, 밝기 항상성 (Brightness is constant)에 따르면, $ dt $라는 시간 동안 $ (dy, dx) $ 만큼 움직여 형성된 새로운 점의 $ f(y+dy, x+dx, t+dt) $는 원래 점의 $ f(y,x,t) $와 같다고할 수 있다. 
    $ f(y,x,t) = f(y+dy, x+dx, t+dt) $
  • 그래서 Taylor Series에 해당하는 term을 밝기 항상성 가정에 따라 0으로 둘 수도 있다.
    $ \frac{\partial f}{\partial y}dy+\frac{\partial f}{\partial x}dx + \frac{\partial f}{\partial t}dt = 0 $
  • 위의 식을 $ dt $ 로 나눈다면 $ \frac{\partial f}{\partial y} \frac{dy}{dt}+\frac{\partial f}{\partial x} \frac{dx}{dt} + \frac{\partial f}{\partial t} = 0 $ 가 된다. 
  • "gradient vector (기울기)" = $ (\frac{\partial f}{\partial y}, \frac{\partial f}{\partial x}) $ 
  • "motion vector" = $ (\frac{dy}{dt}, \frac{dx}{dt}) $ = $ (v, u) $
    • 시간 $ dt $ 동안의 $ y $ 와 $ x $ 방향으로의 이동량
  • 최종적으로 다음과 같이 정리할 수 있다.  
    $ \frac{\partial f}{\partial y}v + \frac{\partial f}{\partial x}u + \frac{\partial f}{\partial t} = 0 $
  • 위의 식은 미분 방적식으로 "Optical Flow Constraint Equation" , "Gradient Constraint Equation"이라고 부른다. 
  • 미분을 이용하는 대부분의 Optical Flow 추정 알고리즘은 이 방정식을 풀어서 Motion Vector를 구한다.  

 

간단한 실습만 하고 옵티컬 플로우에 대해서는 마무리하려고 한다. 

업무로 시작한 옵티컬플로우 공부였지만, CV분야에 딥러닝이 나오기전에 어떤 알고리즘으로 객체를 추정했는지도 알 수 있어서 많이 배운것 같다. 

반응형