본문 바로가기
이모저모/AVFoundation

9주차. 동영상 압축기술(1)

by ARpple 2024. 7. 7.

I-frame, P-frame

  1. 상관계수를 설명하고 계산할 수 있다.
  2. SA으로 두 블록 사이의 거리를 계산할 수 있다.
  3. 동영상의 프레임을 움직임 예측 방법으로 부호화하고 복호화 할 수 있다.

예측 부호화

높은 상관관계를 이용한 데이터 압축

✅ 잔차값(Residual) = 부호화 할 데이터(Current) - 예측 데이터(Prediction)

Intra Coding, Inter Coding with DPCM

⇒ DPCM: Difference Prediction Coding Modulation

  • 오디오 압축에 사용
  • 예측값으로 부호화 할 값 바로 앞의 값을 사용함
  • 첫 번째 데이터는 예측 부호화를 하지 않음 (예측값을 9으로 설정)

✅ Intra Coding: 예측값을 사용하지 않고 부호화

✅ Inter Coding: 예측값을 사용해서 부호화

➕ 동영상은 연속한 정지영상들의 모임

➕ 동영상 기술에서 정지영상을 프레임이라 부른다.

🔥 이웃한 프레임들 사이는 대부분 높은 상관관계를 갖는다.

상관관계

⇒ 오디오, 영상처리에서 많이 사용하는 용어

이산 랜덤 변수

연속적인 값이 아닌 랜덤 변수

상관계수 예시

  • 상관계수는 선형 관계만을 나타냄
  • 0에 가까울 수룩 관계가 없고, 절대값 1에 가까울수록 관계가 높음

영상 프레임 별 부호화 및 복호화

✅ 첫 영상 프레임을 F1, 두번째 영상 프레임을 F2라고 가정한다.

같은 프레임이 연속될 경우

F2의 부호화: 1비트

  • 비트 값(1): 이전 영상과 같음
  • 비트값 (0): 이전 영상과 다름

⇒ 비트값이 1이면 F1 프레임을 복사

같은 프레임에서 조명(배경)만 바뀔 경우

비트값이 0인 경우

  • Residual(잔차값) = F2 - F1

⇒ F2 = Residual + F1

움직임에 변화가 있을 경우

Case: 배경 - 변화없음, 차 - (dx,dy) 만큼 이동

⇒ 움직임 벡터 부호화

  • dx = (x2 - x1)
  • dy = (y2 - y1)
🔥 영상 압축을 위해 차를 자동으로 추출하는 기술은 거의 불가능 ⇒ 움직임 예측 기술을 사용

움직임 예측 (Motion Estimation)

⇒ 영상을 블록으로 분할하여 F1 블록에 가장 비슷한 블록을 찾아서 움직임 벡터와 Residual(잔차값)으로 예측 부호화 함

블록 간 거리 (Distance between Two Bolocks)

❗SAD ⇒ Sum of Absolute Difference

⇒ 동영상 인코더에서 많이 사용하는 블록 간의 거리

⇒ 각 프레임 블록 픽셀의 차이를 절댓값 후 모두 합산하는 연산

블록 간 거리와 SAD를 이용해서 다음 프레임 블록의 위치 값을 구하기

⇒ 예측블록 중 첫번째가 SAD: 4로 가장 작은 값

✅ 블록 위치는 좌,상단으로 지정한다.

⇒ 부호화기는 움직임 벡터, 잔차 블록 두 가지 값을 알고 있다.

B-frame

  1. B-frame 부호화의 계산과정을 예를 들어 설명할 수 있다.
  2. 움직임 예측의 SAD 계산에 필요한 연산수를 계산할 수 있다.

Inter-frame Coding 기법

P-frame Coding

  • 하나의 참조 프레임을 사용

B-frame Coding

  • 두개의 참조 프레임을 사용

 

움직임 예측 블록의 크기

  • 블록마다 움직임 벡터를 부호화 해야하므로 블록의 크기가 작으면 움직임 벡터의 데이터 양이 증가
  • 움직임 예측을 위한 블록의 크기가 크면 작은 물체의 움직임 예측을 할 수가 없음

8K UHD 동영상 확장 Padding한 P-frame 움직임 예측 SAD 계산에 필요한 더하기 연산

Fast Motion Search

막대한 움직임 예측에 필요한 연산을 압축 성능을 최대한 유지하면서 연산량을 감소시키는 기술

  • 부호화 할 블록의 위치를 중심으로 9개의 위치 (S픽셀 만큼 떨어져 있는 주변의 8픽셀과
    중심 위치의 픽셀)에서 SAD가 가장 작은 위치를 찾음
  • SAD가 가장 작은 위치를 중심 위치로 하고 S를 ½로 줄여서 S가 1이 될 때 까지 반복함
    (중심 위치는 SSD가 이미 계산되어 있음)
  • S가 1일 때 출력 위치가 예측 블록의 위치

동영상 그룹 구조 - IBBPBBP

  1. 정밀한 움직임 예측을 설명할 수 있다.
  2. Intra Prediction을 계산할 수 있다.
  3. 동영상 압축 과정 블록 다이어그램을 그리고 설명할 수 있다.
  4. Group of Picture를 선택해서 동영상을 부호화할 수 있다.

Half-pel(1/2) Motion Estimation

움직임 예측을 참조 프레임에서의 움직임 정밀도를 1/2픽셀로 높이는 기술

Quarter-pel Motion Estimation

Intra-prediction

하나의 영상안에서 이웃하는 픽셀 값들 사이의 높은 상관성에 기반해서 예측 부호화

이미지 프레임 영상 변환 과정

Video Frame 인코더 비교

  • 계산 복잡도: I-frame < P-frame < B-frame
  • 프레임 버퍼 메모리 크기: I-frame < P-frame < B-frame
  • 압축 성능: I-frame < P-frame < B-frame

프레임 별 압축 순서 배치 - IBBP

  • 순서마다 즉시 송출이 되지 않음 ⇒ Delay 발생, Live 방송에 부적합
  • 저장된 동영상 스트리밍에 사용 (Youtube, Netflix)

댓글