1. `움직임 추정` 및 `움직임 보상`에 의한 영상 압축 (시간적 모델)
※ 크게, 매칭 단위에 따라, 다음 2가지로 구분되나,
- 화소 순환 알고리즘 (Pixel Recursive Algorithm, PRA)
- 블록 매칭 알고리즘 (Block Matching Algorithm, BMA)
* 주로, 구현의 간단함 때문에 블록 매칭 기반의 알고리즘이 널리 사용됨
ㅇ 움직임 추정 (ME, Motion Estimation)
- 영상 프레임을 작은 블록들로 분할해놓고,
- 시간 상으로, 현재 블록이 이동한 블록을 예측해보는 것
- 따라서, 띄엄띠엄 산재된 앞,뒤 영상 만으로 예측(추정)할 수 있다면, 충분한 압축이 가능
* 블록 크기 단위 ☞ 아래 5.항 참조
ㅇ 움직임 보상 (MC, Motion Compensation)
- 사실상, 움직임 예측 만으로는 부정확하여, 이에 대한 보상이 필요함
- 즉, 예측과 실제 간 차이(오차)에 대해,
- 부가적인 정보를 사용하여, 움직임 추정의 부정확성을 보상하는 것
※ 통상, (움직임 추정, 움직임 보상) 후에,
- DPCM과 호프만 부호에 의한, 실질적인 무손실 압축을 수행하게 됨
2. 블록 매칭 기반의 `움직임 추정` 및 `움직임 보상`
ㅇ 블록 기반의 `움직임 추정 (Motion Estimation)`
- 현재 프레임 상의 부호화하려는 현재 블록이,
. 이전 또는 미래 프레임 (참조 프레임) 상의 어떤 블록으로부터 이동되었는지를,
. 추정하는 과정을 말함
. 즉, 현재 블록과 가장 유사한 블록을 찾아내는 것
- 결국, 비디오 객체 또는 화면처리 단위 블럭 (Macro Block 등)이,
. 시간 상으로 어느 위치로 움직였는지를 추정하는 것
- 화면 간 시간적 중복성을 제거하기 위함
. 동영상 압축 등 비디오 영상처리 분야에서, 광범위하게 응용됨
ㅇ 블록 기반의 `움직임 보상 (Motion Compensation)`
- 부호화하려는 현재 블록과 예측 블록과의 차이에 대한 보상을 위해, 부가적인 정보로 활용코자,
. 오차 블록을 만드는 과정을 말함
- 전송시,
. 오차 블록은, 인코딩되어 전송되며,
. 이때, 움직임 벡터도 함께 전송됨 ☞ 움직임 벡터(MV) 참조
- 수신측 디코더는,
. 전송 받은 움직임 벡터를 사용하여, 예측 영역을 재생성하게되며,
. 이 예측 영역에다가 복원된(보상된) 오차 블럭을 합성하여, 원래의 영상 블럭을 재구성함
* 오차 블록 : 현재 블록에서 예측 블록을 뺀 것
ㅇ 결국, 블록 기반의 움직임 추정이라함은,
- 현재 프레임 내 이동된 목표 블록과 가장 일치하는 영역을,
- 참조 프레임 영역 내에서 탐색하여 찾아내는 과정을 말함.
* 참조 프레임 (reference frame)
. 이전에 코딩되어 전송된, 1 이상의 과거 또는 미래의 프레임
* 예측 프레임 (predict frame)
. 참조 프레임으로부터 생성됨
3. 블록 일치 여부에 대한 최적화 판단 기준
ㅇ 현재 매크로블록 내 화소값들과 예측(참조) 매크로블록 내 화소값들 사이에서,
- 일반적으로, MSE(평균제곱오차)가 최소가 되는 기준에 따라 블록을 찾아냄
4. 움직임 블록 크기 단위 : 화면을 일정한 크기의 단위로 나눔
※ 대부분의 비디오 압축 표준에서, 16 x 16 이 움직임 예측,보상의 기본 단위로 쓰임
ㅇ MPEG-1/MPEG-2,H.261,H.263 등 : 16 x 16
- 보통 16x16을 매크로블록 이라고 함
. (DCT변환 단위인 8 x 8 화소블록이 4개 모인것)
ㅇ MPEG-4 : 16 x 16, 8 x 8
ㅇ H.264/AVC : 16 x 16, 16 x 8, 8 x 16, 8 x 8, 8 x 4, 4 x 8, 4 x 4 (가변 선택 가능)