MPEG – Digital Video Coding Standard

MPEG

MPEG(Moving Picture Experts Group)

  • 비디오 코딩 표준
  • 1, 2, 4, 7 21까지 총 5가지 종류가 있음. 7은 비디오 오디오 검색, 21은 저작권에 대한것. 압축은 1,2 4 3가지
  • MPEG 비디오 코딩 기술은 근본적으로 통계적인 정보를 이용한다.
  • Video Sequnces는 보통 통계적인 시간적인, 공간적인 간격의 중복이 들어가있다.
  • 비디오는 결과적으로 연속적인 이미지의 집합이다.
  • JPEG은 인접한 픽셀들의 유사한 데이터를 이용한 것이고 MPEG은 시간축으로 인접한 프레임들간의 유사성을 이용해서 압축한 것이다.
  • 특정 이미지 픽셀의 값을 같은 프레임의 인접한 픽셀로부터 유추해 낼 수 있고 앞과 뒤에 있는 인접한 프레임으로부터 유추해 낼 수 있다.

MPEG-1

  • ISO와 IEC가 같이 만듬
  • 모션 비디오 인코딩을 위한 표준
  • 3개의 파트로 구성되어 있다.
    • MPEG Video
      • 압축률을 1/200까지
    • MPEG Audio
      • 오디오가 MP3파일
    • MPEG System
      • 오디오가 비디오가 섞여있으므로 이를 어떻게 한 줄로 섞을 것인지, 동기화 할 것인지

Intraframe Coding

  • 한 장의 이미지를 코딩하는것. JPEG

6 Layers of MPEG-1 Video Sequence

  • JPEG도 계층 구조로 되어있듯이 MPEG도 계층 구조로 되어있다.
  • 하나의 비디오 시퀀스
  • 여러개의 GOP로 구성되어 있다. Group of Picture. 보통 이미지 10장정도로 구성
  • GOP는 Picture들로 구성되어 있다. Picture은 말 그대로 이미지 한장
  • Picture는 slice로 구성되어 있다.
  • 한장의 slice는 macroblock으로 구성되어 있다.
  • macroblock은 block(8x8)으로 구성되어 있다.
  • 즉 MEPG 비디오는
    • Video Sequence Layer
    • Group of Pictures (GOP) Layer
    • Picture (Frame) Layer
    • Slice Layer
    • Macroblock Layer
    • Block Layer(8x8)

Goup of Picture Layer

  • 비디오는 GOP들로 구성되어 있다.
  • 하나의 GOP는 10장 정도의 이미지의 집합이다.
  • i, p, b 세가지 타입의 이미지로 구성되어 있다. (intra (I) pictures, non-intra (P and/or B) pictures)
  • itra-coded picture
    • JPEG 이미지라고 보면 된다.
    • 스스로 모든 것을 완비하고 있다. 다른 이미지의 정보를 전혀 활용하지 않고 스스로 인코딩하고 디코딩 할 수 있는 이미지
  • nonitra(inter)-coded picture
    • 미리 인코드 되어 있는 다른 이미지들의 정보를 이용해서 만들어진 이미지들
    • Motion-compensated information을 사용함으로써 데이터의 양을 줄인다. MPEG에서 제일 중요
    • P-picture (predictive-coded picture)
    • B-picture(bidirectionally predictive-coded picture)

  • i-frame은 JPEG으로 코딩된 것이다. 다른 이미지의 정보를 전혀 활용하지 않고 자신만의 정보를 가지고 코딩을 한다.

  • p-frame은 자기보다 앞에 나온 i-frame이나 p-frame를 가지고 코딩을 한다.

    JPEG에서 8x8, 또는 16x16으로 나누어 코딩한다.

    p-frame은 자신보다 앞에 나온 i-frame의 8x8, 또는 16x16에서 그놈과 제일 비슷한 것을 찾는다. 그리고 여기서부터 데이터를 가지고 왔다는 정보를 집어넣는다. (motion vector)

    그리고 당연히 그 정보와 다음정보가 완전히 같진 않을 것이니 그 정보의 차이점(difference)를 추가로 저장한다.

    즉 모든 이미지를 16x16으로 나누어서 코딩하는데 자기가 가지고 있는 오리지널 데이터를 집어넣는 것이 아니라 그 부분과 가장 비슷한 부분을 찾아서 어디서 가져왔다는 정보(motion vector)와 그 차이점(difference)를 집어넣는다. 이것이 p-picture

  • b-picture는 양쪽, 앞 뒤에서 받는다.

    자기보다 앞에 나온, 뒤에 나온 i,p-picture로부터 비슷한 부분을 찾는다. 그렇게 찾아서 만든 것이 b-picture

    어디서 가지고 왔는지 위치 정보(motion vecotr)와 실제 내가 가진 데이터와의 차이점(difference) 두 가지를 앞에서와 뒤에서 찾아서 총 4개를 저장해서 만들어지는 이미지가 b-picture

  • 결론적으로 P는 자신보다 앞에 나온 i나 p picture로부터 정보를 가지고 오고, b는 자신보다 앞이나 뒤에 나온 i나 p picture로부터 정보를 가지고 온다.

  • GOP의 스타트, i-picture은 JPEG, 나머지 p와 b들은 위치정보와 차이값을 가지고 코딩을 한다.

I-picture

  • i-picture는 랜덤 액세스할 수 있는 포인트이다. 즉 비디오를 보다가 특정 위치로 이동시키면 i-picture가 시작되는 곳으로만 갈 수 있다. 빨리 감기나 되감기 역시 i-picture만 쭉 보여준다.
  • GOP는 I-picture에서 시작한다.

P-picture

  • forward prediction : 자신과 가장 가까이 있는 앞에 나온 i나 p를 가지고 코딩을 한다.

B-picture

  • forward and backward predictions : 앞 뒤에 있는 i나 p를 가지고 코딩을 한다.

Temporal Display and Coding Order

  • 실제 코딩하는 순서와 디스플레이하는 순서는 다르다.

Independence of GOP

  • 하나의 비디오는 여러개의 GOP들로 구성되는데 각 GOP들은 서로 독립적이진 않다.
  • 첫 번째 GOP는 I를 이용해서 P를 코딩하고, I와 P를 이용해 그 사이의 B를 코딩하고, P를 이용해 그 다음 P를 코딩하고 P와 P를 이용해 그 사이의 B를 코딩한다. 그런데 두 번째 GOP는 디스플레이 순서가 I가 아니라 B부터 시작한다.이럴 경우는 자기 뒤에 나오는 I와 앞에 나오는 GOP의 P를 가지고 속에 있는 B를 코딩한다. 이로 인해 인접한 GOP가 서로 독립적이진 않다.

Macroblock Layer

  • 루미넌스는 오리지널 그대로 샘플링을 하고 크로미넌스는 해상도를 줄인다.
  • 그래서 8x8의 4블록을 Cb와 Cr의 한 블록이 커버를 한다. 이것이 MCU.
  • 그래서 이 4개 1개 1개의 블록들을 매크로 블록이라고 한다. 보통 16x16픽셀

Slice Structures in MPEG-1

  • 문제는 통신중에 앞쪽이 깨지면 GOP가 서로 독립적이지 않기 때문에 뒤에도 계속 영향을 받게 된다.
  • 따라서 슬라이스라는 것을 만들었다.
  • 같은 색깔로 되어 있는 것이 같은 슬라이스에 속하는 매크로 블락
  • 한쪽이 노이즈가 생기거나 꺠지더라도 그 다음부분은 꺠지지 않도록 독립적으로 분리를 시킨다.
  • 그 분리된 한 조각을 슬라이스라고 한다.

Macroblock Structure

  • 매크로 블락의 비율은 다음과 같은 종류가 있는데 보통은 절반으로 줄인 4:2:0을 사용한다.

Motion Compensation

  • B-picture가 있고 매크로 블락 16x16이라고 했을 때 b-picture은 앞이나 뒤의 i와 p의 비슷한 부분으로부터 정보를 가져온다.
  • 이때 여기서 가져왔다는 정보를 motion vector라고 한다.
  • 이 motion vector는 시작점과 델타 x, 델타 y 길이를 가지고 모션 벡터를 표시한다.

자신과 비슷한 부분을 찾는데 처음부터 끝까지 찾는데 너무 오래 걸린다. 따라서 그 찾는 범위를 ±150 × ±75 pixels로 줄여놓았다.