5. 변환 및 양자화 (Transform & Quantization)

김범수·2022년 6월 2일
0

HEVC

목록 보기
5/5

변환 및 양자화 (Transform & Quantization)

좌측 그림은 Encoder에서, 우측 그림은 Decoder에서의 변환과 양자화에 대한 순서도입니다.

먼저, Encoder에서 입력 블록과 예측 블록 간의 차이인 잔차신호에 대해 변환과 양자화를 수행 후 Entropy coding을 수행하여 bitstream 형태로 전송되게 됩니다.

이후 Decoder에서는 전송받은  bitstream을 Entropy coding, 역양자화, 역변환 순서로 Decoding하게 됩니다.

  • TU (Transform Unit)

TU는 말 그대로 변환을 수행하는 블록 단위로 Inter-coded CU에서는 TU의 크기가 PU보다 클 수 있으며, Intra-coded CU에서는 TU의 크기가 PU보다 클 수 없습니다. TU의 크기는 SPS에서 정의됩니다.

TU의 분할 유무 결정은 Bottom-Up 방식으로 분할 전 후의 RD-Cost를 비교하여 분할 유무를 선택하며, 분할 플래그 Spliit_transfrom_flag를 전송합니다. 또하느 양자화 후 모든 계수가 0인경우 cbf = 1로 역양자화 과정을 Skip합니다.

Transform (변환)

  • KLT 변환

KLT 변환이란 최적의 변환 방법으로 DCT 변환 기저가 KLT 변환 기저와 가장 유사한 결과를 보입니다. 하지만 4x4 Intra 예측 블록에서는 DST 변환 기저가 KLT 변환 기저와 가장 유사하기 때문에 4x4 Intra 블록에서는 DST, 나머지 블록들은 DCT 변환을 수행하며 이와 같은 정수변환을 사용함으로써 적은 메모리를 사용하며 빠른 변환이 가능하다는 장점을 가집니다.

  • DCT 변환

DCT 변환은 cu_transquant_bypass_flag에 의해 실행이 결정됩니다.

위 그림은 DCT 변환의 Matrix입니다.

또한 DCT 변환은 아래 그림처럼 Butterfly 구조를 이용하여 고속화되어 사용됩니다.

  • DST 변환

DST 변환은 4x4 Intra Luma 블록에서만 사용됩니다.

위 그림은 DST 변환의 Matrix입니다.

  • 변환 SKIP

PPS(Picture Parmeter Set)의 transform_skip_enable_flag가 1이라면 변환 과정이 Skip됩니다.

변환 Skip은 4x4 크기의 TU에서만 수행되며 변환 대신 Shift로 대체됩니다.

Quantization (양자화)

양자화란 비디오 표준 압축에서 유일하게 정보의 손실이 발생하는 과정으로 따라 양자화 파라미터를 조절하여 영상에 영향을 많이 주는 신호에는 작은 양자화 파라미터를, 적게 주는 신호에는 큰 양자화 파라미터를 사용하는등 유동적으로 조절하여 신호 압축을 진행합니다.

아래 그림처럼 사람의 눈은 고주파에 둔감하므로 고주파에 더 강한 양자화를 사용합니다.

사실 변환 과정에서의 shift 연산이나 양자화 과정에서의 양자화율, 양자화 스케일 등 어려운 개념이 남아있지만 학습한지 오래되어서 여기까지 설명하도록 하겠습니다.

profile
iOS Developer

0개의 댓글