Computer Vision

[Yongggg's] Optical Flow

Yonggg 2021. 6. 15. 17:20

안녕하세요! 이번 시간에는 Optical Flow에 대해서 알아보록 하겠습니다. 동영상을 처리할 때 대부분 사용되는 Optical Flow는 Computer Vision 분야에서 활발히 연구되었습니다. 전체적인 내용을 다룬 후, 다음 내용에서는 딥러닝을 이용하여 Optical Flow를 구하는 과정까지 설명해보도록 하겠습니다.

 

1.목적

영상 Task를 다룰 때, 각 픽셀의 움직인 방향과 정도를 가시적으로 표현하기 위해 알고리즘이나 학습을 통해 Optical Flow Map(가시맵)을 구함이 그 목적이다.

2. 개념

Optical Flow란?

연속한 두  Frame 사이에서 각 Pixel의 Motion을 나타내는 Vector Map (Pixel Displacement)이다. (이전 프레임의 특정 픽셀에서 다음 프레임의 특정 픽셀을 가르키는 화살표로 시각화할 수 있다. 이는 [그림 1]처럼 나타낼 수 있고, 사람이 어떻게 움직였는지를 지정 Optical Flow를 보고 알아낼 수 있다.

[그림 1] Optical Flow Vector

하지만 모든 Pixel에 대한 방향성을 나타내는 화살표를 나타낸다면, 보기에도 지저분할 뿐아니라 효율성도 떨어질 것이다. 따라서 보통은 [그림 2]처럼 Visualization을 한다.

[그림 2] Optical Flow Visualization

[그림 3]에서 좌측 그림은 Color map을 나타낸다. 보통 이미지는 RGB 3개의 채널로 나타내지만, HSV(색상, 채도, 명도)로도 Optical Flow를 나타낼 수 있다. 이 표현에서 Color (색상) 로는 Optical Flow의 방향, Saturation (채도) 로는 Optical Flow의 움직인 크기의 정도를 나타낸다. 

만약, 픽셀이 파란색 값을 나타내고 있으면, 11시 방향으로 움직인 것이고, 픽셀이 진한 값을 나타내고 있으면 많이 움직인 것이고 중앙처럼 흰색 값을 나타내고 있다면 별로 움직이지 않은 것을 나타낸다.

[그림 3] Optical Flow 표현

3. 원리

위의 2.에서 설명한 Optical Flow를 구하기 위해서 다음 몇가지 Constraints가 존재한다.

- Flow Vector로 이어진 두 Pixel 값은 동일하다. (밝기 등의 명도가 변하는 것은 일단 무시)

이 것을 수식으로 나타낼 것이다. 이때, $I(x,y,t)$ : Image를 나타내고 (x, y 좌표와 t번째 Frame을 나타냄) (u,v) : Flow $

 

 

Better exploiting motion for better action recognition (https://hal.inria.fr/hal-00813014/document),

Unsupervised Learning of Optical Flow with Deep Feature Similarity(https://sgvr.kaist.ac.kr/wp-content/uploads/2020/07/4544.pdf),