동영상은 시간적으로 차이가 거의 없다. 현재 프레임과 이전 프레임을 비교할 경우 많은 영역의 화소값이 동일하고 전 화면의 정보를 이용하면 직접 화소를 보내지 않고 벡터에 관련된 정보만으로 같은 영상을 재현가능.
⇒ Temporal Redundancy를 제거하는 작업.
물체의 움직임(local motion)이나 카메라의 움직임(global motion)이 차이의 주 원인이다.
현재 우리의 스마트폰 액션캠같은 경우는 글로벌 움직임 보상이 기본적으로 적용되어있음
카메라 움직임에 따라서 영상에서의 움직임이 프레임 전체에 퍼진다.
카메라를 평행이동하거나 돌리거나 가까이가거나 등의 행동 ⇒ global motion 발생
글로벌움직임과 로컬 움직임을 combined motion으로 처리한다.
local motion만 처리해야하는 경우 전송해야할 데이터가 적으며 전송선로가 끊기지 않도록 가비지 데이터를 넣어서 보내줘야한다.
현재 영상과 이전 영상을 뺀 차영상 f1-f0을 보내면 이전 영상인 f0을 디코더가 가지고 있으므로 f1-f0을 더해 f1영상을 재현한다. f1-f0데이터를 많이 줄여서 보내는것이 중요하다.
차영상(f1-f0)의 문제점은 급격한 움직임이 나올 경우 edge(급격한 절벽)이 발생한다는 것이다. edge에 해당하는 고주파항 데이터를 전송하려면 많은양의 데이터가 필요하다.
ME&MC(Motion estimation & Motion Compensation)을 적용해서 완만화한 데이터를 보내면 크기를 줄일 수 있다.
DPCM과 VLC 인코딩을 사용하면 프레임간의 difference를 3:1의 효율로 압축할 수 있다.
Pixel level의 움직임을 정확히 계산해서 모든 픽셀에 대한 optical flow를 디코더에 보내는 방식은 정확하지만 비효율적이기 때문에 object를 블록단위로 결정해서 계산량과 정보량을 줄인다. 이것은 block level approach라고 한다. ex)말이 통째로 같이 움직이니까 말을 object로 처리
야구공이 이동한거지 새로 생긴게 아니니 움직였다는 정보만 motion vector로 보내면 보낼 데이터가 줄어든다.
f0 = 레퍼런스 이미지, f1 = current image