본문 바로가기
정보과학/영상통신시스템

H.264/MPEG-4 Part 10 (2)

by J1소프트 2023. 10. 18.
728x90

1. 참조 화면 관리

 

화면간 부호화를 하기 위해 부호기와 복호기 모두 이전에 부호화한 화면들을 저장하고 있어야 한다. 참조 화면을 저장하는 메모리를 참조 화면 버퍼(decoded picture buffer, DPB)라고 한. 화면간 부호화는 P 슬라이스 내의 인터 매크로블록에 대해 적용된다.

 

Baseline 프로파일의 경우 I P 슬라이스만 사용되므로 참조 화면 리스트 list0에 참조 화면들을 유지한다.

 

list0에는 디스플레이 되는 순서로 현재 화면의 이전과 이후 화면들을 포함할 수 있고, 참조 화면들은 단기(short-term) 및 장기(long-term) 참조 화면으로 분류된다.

단기 참조 화면

     ¤ 예측을 위해 사용될 수 있는 최근에 부호화된 화면

      ¤ 프레임 번호에 의해 구분된다.

      ¤ 최근 프레임 순으로 지정된 개수의 프레임이 DPB에 보관된다. (슬라이딩 윈도우, sliding window)

장기 참조 화면

      ¤ 예측을 하기 위해 사용되는 보다 이전의 화면들로, LongTermPicNum이라는 변수의 값이 지정된다.

      ¤ 장기 참조 화면들은 제거되거나 교체될 때까지 DPB에 남아 있게 된다.

 

화면이 재구성(부호기 측)되거나 복호화(복호기 측)되면 DPB에 넣어지며, 다음 중 한 가지 형태로 처리된다.

참조를 위해 사용되지 않음(unused for reference)으로 표시됨 이후의 예측에 사용되지 않는다.

단기 참조 화면으로 표시됨

장기 화면으로 표시됨

단순히 디스플레이에 출력됨

 

Instantaneous Decoder Refresh(IDR) 화면

IDR 부호화된 화면(I 또는 SI 슬라이스로 구성)을 전송하면 복호기는 참조 화면 버퍼 내의 모든 화면에 참조를 위해 사용되지 않음표시를 한다.

비디오 영상의 첫 번째 화면은 항상 IDR 화면이다.


2. 슬라이스 및 슬라이스 그룹

 

슬라이스는 매크로블록의 시퀀스이다.

 

Baseline 프로파일의 경우 I-슬라이스와 P-슬라이스를 포함할 수 있다.

I-슬라이스는 인트라 부호화된 매크로블록을 포함할 수 있다.

P-슬라이스는 인트라 부호화된 매크로블록과 인터 부호화된 매크로블록 또는 생략된 매크로 블록을 포함할 수 있다.

생략된 매크로블록은 영상 부호 정보를 포함하지 않으며, 주변 매크로블록들로부터 움직임 벡터를 결정하여 list0의 첫 번째 참조 화면으로부터 움직임 보상을 한다.

중복 부호화 화면 (Redundant coded picture)

전송 에러 등으로 인한 손상에 대비하여 화면의 일부분 또는 전체를 중복하여 부호화할 수 있는데, 이 경우 중복(redundant)’이라고 표시한다.

일반적인 경우는 기본(primary)’ 화면으로부터 프레임을 복원하고 중복 화면을 무시한다. 면 에러가 발생한 경우 중복된 화면으로 손상 영역을 교체한다.

 

임의 슬라이스 순서 (Arbitrary Slice Order, ASO)

Baseline 프로파일은 ASO를 지원한다.

부호화된 프레임의 슬라이스를 임의의 순서로 복호화 할 수 있다는 것을 의미한다.

 

슬라이스 그룹 (Slice Groups)

슬라이스 그룹은 부호화된 화면 내에 있는 매크로블록의 부분집합으로, 하나 또는 그 이상의 슬라이스를 포함한다.

다중 슬라이스 그룹은 부호화된 매크로블록의 순서를 여러 가지 유연한 방법으로 복호화되는 프레임에 배치하는 것을 가능하게 한다.

각각의 매크로블록이 어느 슬라이스 그룹에 속하는지는 macroblock to slice group map의해 결정된다.

Macroblock to slice group map의 종류

Type 이름 설 명
0 Interleaved 지정된 수의 매크로블록이 각 슬라이스 그룹에 차례대로 할당된다.
1 Dispersed 각각의 슬라이스 그룹들에 할당된 매크로블록들이 화면 전체에 분산된다.
각 슬라이스 그룹별로 전송되므로, 한 슬라이스 그룹에서 에러에 의한 손실이 발생하면 다른 슬라이스 그룹의 매크로블록들을 이용하여 보간함으로써 이를 숨길 수 있다. (에러 은폐, error concealment)
2 전경 및 배경 전경(foreground)을 나타내는 매크로블록들의 직사각형 슬라이스 그룹들이 포함되며, 마지막 슬라이스 그룹은 어느 전경 슬라이스 그룹에도 포함되지 않은 나머지 매크로블록들의 집합이다.
3 Box-out 프레임 중앙에서 시작하는 ‘box’ 형태의 슬라이스 그룹 0이 생성되, 나머지는 매크로블록들의 집합은 슬라이스 그룹 1이 된다.
4 Raster scan 좌측 상단으로부터 순차적인 래스터 스캔 순서로 매크로블록들이 슬라이스 그룹 0에 포함되고, 나머지 모든 매크로블록들의 집합은 슬라이스 그룹 1이 된다.
5 Wipe 좌측 상단으로부터 수직 스캔 순서로 매크로블록들이 슬라이스 그0에 포함되고, 나머지 모든 매크로블록들의 집합은 슬라이스 그1이 된다.
6 Explicit 각각의 매크로블록에 대해 지정된 slice_group_id라는 파라미터에 의해 슬라이스 그룹이 지정된다.
따라서 매크로블록 맵이 완전히 사용자에 의해 지정된다.


3. 매크로블록 예측

 

H.264/AVC에서 모든 매크로블록은 이전에 부호화된 화면 데이터로부터 예측 부호화를 한다.

인터 매크로블록 : 이전에 부호화된 화면의 복호화 영상을 참조 화면으로 하여 움직임 보상 예측을 한다.

인트라 매크로블록 : 현재 슬라이스에 존재하는 앞서 부호화된 이미지 샘플이 복호화된 값으로부터 예측한다.

 

3.1 인터 예측

블록 기반 움직임 보상을 사용하여 이전에 부호화된 하나 또는 그 이상의 비디오 프레임 또는 필드로부터 예측을 한다.

Baseline 프로파일에는 P-슬라이스만이 포함되며, MainExtended 프로파일에는 P-슬라이스B-슬라이스가 포함된다.

 

3.1.1 트리 구조 움직임 보상

H.264/AVC는 트리 구조 움직임 보상을 하는데, 이는 다양한 크기의 블록을 사용하여 보다 효과적인 움직임 보상을 할 수 있게 한다.

 

16×16 휘도 매크로블록은 다음과 같은 네 가지 방법으로 분할될 수 있다.

한 개의 16×16 매크로블록 파티션

두 개의 8×16 매크로블록 파티션

두 개의 16×8 매크로블록 파티션

네 개의 8×8 매크로블록 파티션 - 이 경우 각각의 8×8 서브 매크로블록은 다음과 같은 네 가지 방법으로 분할될 수 있다.

      ㉠ 한 개의 8×8 서브 매크로블록 파티션

      ㉡ 두 개의 4×8 서브 매크로블록 파티션

      ㉢ 두 개의 8×4 서브 매크로블록 파티션

      ㉣ 네 개의 4×4 서브 매크로블록 파티션

 

색차신호의 경우도 휘도신호에 비해 블록 크기는 반이지만, 동일한 방법으로 분할된다.

 

각 파티션 또는 서브 매크로블록에 대해서는 독립적인 움직임 벡터가 필요하다.

전체적인 비트율을 낮출 수 있는 적절한 선택이 필요하다.

일반적으로 큰 파티션 은 단조로운 영역에 적합하고, 작은 파티션은 복잡한 영역에 적합하.

 

트리 구조 움직임 보상을 위한 매크로블록 파티션 분할의 예

3.1.2 움직임 벡터

H.264/AVC에서 움직임 추정은 1/4 픽셀 단위로 한다. 만일 움직임 벡터가 정수 픽셀 샘플 위치로 향한다면 해당 위치의 참조 화면 픽셀을 사용하면 된다. 그러나 그렇지 않을 경우에는 주위의 픽셀들을 이용하여 보간(interpolation)한 값을 구해야 한다.

보간 샘플의 계산

먼저 1/2 픽셀 위치 샘플이 먼저 계산된다. 이때 인접 정수 샘플에 대해 가중치가 (1/32,-5/32, 5/8, 5/8, -5/32, 1/32)6-tab FIR 필터를 사용한다.

1/4 픽셀 위치 샘플은 1/2 픽셀 위치 샘플들을 계산한 후, 인접 두 샘플의 선형 보간으로 구한다.

3.1.3 움직임 벡터의 예측

인접한 매크로블록 또는 서브 매크로블록들의 움직임 벡터는 서로 높은 연관관계가 있다. 이러한 특성을 이용하여 움직임 벡터를 예측하면 오차 벡터의 에너지가 작아져서 부호화 비트열의 길이를 줄일 수 있다.

매크로블록의 파티션 형태에 따라 예측 움직임 벡터 MVp를 구한다.

3.2 인트라 예측

H.264/AVC에서는 화면내 부호화에 대해서도 예측 부호화를 한다.

 

이전 표준에서도 화면내 부호화에 예측 기법을 사용했지만, DC 성분에 대해서만 하거나 (MPEG-1, 2) DC 성분과 저주파 AC성분까지만 예측을 하는 방식(MPEG-4 Visual)을 사용하였다. 그러나 H.264/AVC에서는 모든 픽셀에 대해 예측을 하는 방식을 사용한다.

 

인트라 예측 방식 개요

현재의 블록을 부호화하기 위해 먼저 이전에 부호화되고 복원된 블록으로부터 예측 블록 P를 구한다. 현재 블록으로부터 P를 뺀 오차 블록이 부호화 대상이 된다.

블록의 크기는 휘도 샘플의 경우 4×4 블록(Intra_4×4 모드) 또는 16×16 매크로블록(Intra_16×16 모드)이다.

Intra_4×4 모드의 경우 9개의 선택 가능한 예측 모드가 있고, Intra_16×16 모드의 경우 4지 모드가 있다.

인트라 부호화에는 I_PCM이라는 모드도 제공하는데, 이 방식은 예측과 변환 부호화 과정을 거치지 않고 직접 전송하도록 함으로써 정확한 샘플 정보를 전달할 수 있게 한다.

 

3.2.1 Intra_4×4 휘도 예측 모드

[그림11] : 16×16 매크로블록은 0~15의 순서로 부호화된다. 예측의 대상이 되는 4×4 블록의 픽셀 a~p는 이전에 부호화되어 복원된 픽셀 A~M을 참조 픽셀로 하여 예측된다.

예측 모드는 9가지 종류가 있다. [그림12]

모드 0, 1 : A~D 또는 I~L이 수직 또는 수평으로 확장된다.

모드 2 : A~DI~J8개의 참조 픽셀 값의 평균으로 채운다.

모드 3~8 : 화살표 방향으로 참조 픽셀들의 가중치 평균을 채운다.

선택된 Intra_4×4 예측 모드는 인접한 블록들이 서로 관계가 있다는 점을 이용하여 예측 부호화를 한다.

 

3.2.2 Intra_16×16 휘도 예측 모드

 

평탄한 영상 영역에서는 큰 블록을 사용해도 좋은 예측을 할 수 있다.

전체 16×16 매크로블록을 4가지 모드 중 하나의 방법으로 예측한다.


4. 변환 및 양자화

 

4.1 직교변환

H.264/AVC에서는 4×4 ‘DCT 기반부호화Hadamard 변환이 사용된다.

4×4 DCT 기반 부호화

¤ 정확히 DCT 변환은 아니지만, DCT를 근사화하여 정의한 변환이므로 DCT 기반 부호화라고 칭하였다.

¤ 정수 연산으로 변환을 할 수 있어 실수 연산에 따른 DCT-DCT 불일치 문제가 해소되며, 하드웨어 구현이 쉽다.

¤ 변환 행렬은 다음과 같다.

이산 Hadamard 변환 (Discrete Hadamard Transform, DHT)

¤ 덧셈과 뺄셈만으로 직교변환을 수행한다.

¤ 변환 행렬은 다음과 같다.

변환은 대상 블록이 16×16 화면내 예측인가, 그렇지 않은가에 따라 다른 방법이 사용된다.

 

4.1.1 16×16 화면내 예측 블록의 변환

Intra_16×16 예측에 의한 휘도 오차블록은 다음과 같은 변환 과정을 거친다.

매크로블록을 16개의 4×4 블록으로 분할한다.

각각의 4×4 블록을 정수 DCT 기반 변환을 한다.

변환 계수의 DC 성분들만을 모아서 4×4 DC 성분 블록을 구성한다.

4×4 DC 성분 블록을 DHT 한다.

 

DHT 계수와 DCT AC 계수들을 부호화한다.

 

4.1.2 4×4 화면내 예측 블록과 화면간 부호화 블록의 변환

Intra_4×4 예측 및 화면간 예측의 경우 휘도 오차블록은 다음과 같은 변환 과정을 거친다.

매크로블록을 16개의 4×4 블록으로 분할한다.

각각의 4×4 블록을 정수 DCT 기반 변환을 한다.

 

4.1.3 색차신호의 변환

매크로블록에 대한 8×8 Cb, Cr 색차 블록은 다음과 같은 변환 과정을 거친다.

매크로블록을 4개의 4×4 블록으로 분할한다.

각각의 4×4 블록을 정수 DCT 기반 변환을 한다.

변환 계수의 DC 성분들만을 모아서 2×2 DC 성분 블록을 구성한다.

2×2 DC 성분 블록을 DHT 한다.

 

4.2 양자화

H.264/AVC에서는 화질을 향상시키기 위해 화면내 부호화와 화면간 부호화 블록 모두에 대해 데드존이 없는 양자화를 사용한다.

양자화 단계 Qstep을 직접 부호화하지 않고, 양자화 파라미터 QP를 부호화하고, 이로부터 양자화 단계를 도출한다.

QP52개의 Qstep 값 중에서 하나를 선택한다.

QP6 증가하면 Qstep2배가 커지도록 함으로써 QPSNR이 비례하도록 한다.

양자화 파라미터 QP를 변화시킴으로써 목표하는 비트율을 얻을 수 있다.


정리하기

 

1. 요약정리

 

참조 화면 관리

참조 화면 버퍼(DPB)list0의 참조 화면을 저장한다.

단기 참조 화면은 최근 프레임 순으로 DPB에 보관되며, 슬라이딩 윈도우 형식으로 관리된.

장기 참조 화면들은 제거되거나 교체될 때까지 DPB에 남아 있게 된다.

Instantaneous Decoder Refresh(IDR) 화면이 전송되면 복호기는 DPB 내의 모든 화면에 참조를 위해 사용되지 않음표시를 한다. 비디오 영상의 첫 화면은 항상 IDR이다.

슬라이스 및 슬라이스 그룹

슬라이스는 매크로블록의 시퀀스이다.

Baseline 프로파일에는 I-슬라이스와 P-슬라이스를 포함할 수 있다.

하나의 화면은 몇 개의 슬라이스 그룹으로 구성할 수 있다.

Interleaved, Dispersed, 전경 및 배경, Box-out, Raster scan, Wipe, Explicit7 가지 방법으로 슬라이스 그룹을 구성할 수 있다.

매크로블록 예측

모든 매크로블록은 예측부호화 된다.

인터 예측

¤ 16×16 휘도 매크로블록은 한 개의 16×16 매크로블록 파티션, 두 개의 8×16 매크로블록 파티션, 두 개의 16×8 매크로블록 파티션, 또는 네 개의 8×8 매크로블록 파티션으로 분할될 수 있다. 8×8 서브 매크로블록으로 분할된 경우 유사한 방법으로 다시 분할할 수 있.

¤ 파티션 분할은 움직임 벡터의 수와 움직임 보상된 오차 블록의 에너지를 고려한 적절한 선택을 할 필요가 있다.

¤ 움직임 보상은 1/4 픽셀 단위로 한다.

¤ 움직임 보상을 위한 보간 샘플의 계산은 1/2 픽셀 위치를 위해 6-FIR 필터, 1/4 픽셀 위치를 위해 선형 보간을 사용한다.

¤ 움직임 벡터는 주변 블록의 움직임 벡터를 참조 벡터로 하여 예측한 후 오차 벡터를 전송한다.

인트라 예측

¤ Intra_4×4 모드와 Intra_16×16 모드의 두 가지 예측 방식이 있다.

¤ Intra_4×4 모드의 경우 9개의 선택 가능한 예측 모드가 있고, Intra_16×16 모드의 경우 4가지 모드가 있다.

¤ I_PCM 모드에서는 예측과 변환 부호화 과정을 거치지 않는다.

변환과 양자화

H.264/AVC에서는 4×4 ‘DCT 기반부호화와 Hadamard 변환이 사용된다.

‘DCT 기반부호화는 DCT를 근사화하여 정의한 변환으로, 정수 연산으로 구현할 수 있어 실수 연산에 따른 DCT-DCT 불일치 문제가 해소되며, 하드웨어 구현이 쉽다.

화면내 부호화 및 화면간 부호화 블록 모두에 대해 데드존이 없는 양자화를 사용한다.

양자화 파라미터에 따라 SNR이 비례하여 변화하도록 설계되었다.

양자화 파라미터 QP를 변화시킴으로써 목표하는 비트율을 얻는다.

 

2. 참고자료

Thomas Wiegand, Gary J. Sullivan, "Overview of the H.264/AVC Video Coding Standard,"

IEEE Tran. Circuits Syst. Video Technol., Vol.13, No.7, pp.560-576, July 2003.

정제창 역, H.264/AVC 비디오 압축 표준, 홍릉과학출판사, 2005.

'정보과학 > 영상통신시스템' 카테고리의 다른 글

영상 통신을 위한 인터넷 기술 (2)  (1) 2023.10.18
영상 통신을 위한 인터넷 기술 (1)  (1) 2023.10.18
H.264/MPEG-4 Part 10 (1)  (1) 2023.10.06
MPEG-4 Visual (2)  (1) 2023.10.05
MPEG-4 Visual (1)  (0) 2023.10.04