1. HEVC (High Efficiency Video Codec, H.265) 개요

김범수·2022년 6월 2일
0

HEVC

목록 보기
1/5


2022년 1월 23일 기준, 지난 4개월의 학부 연구생 생활을 통해 공부하게 된 HEVC에 대해 정리하려고 합니다. 4개월이라는 시간으로 방대하고 복잡한 비디오 코덱에 대해 전문성을 갖추기에는 무리가 있다고 생각하며 오로지 제 스스로의 복습과 기록을 위한 글이기 때문에 이 글을 통해 HEVC에 대해 지식을 익히기를 추천드리지는 않습니다.

  • 비디오 코덱 (Video Codec)

enCOder and DECoder

코덱이란 음성 또는 영상의 아날로그 신호를 디지털 신호로 변환하는 인코더, 그 반대로 변환시켜 주는 디코더를 통틀어 부르는 용어입니다.

고해상도의 미디어가 등장함으로 더 효율적인 비디오 압축 기술을 필요로 하였고, 알고리즘 발달과 CPU 성능이 개선되면서 비디오 코덱 또한 여러 가지 고사양의 코덱이 개발되었습니다.

HEVC는 H.264 이후로 2013년 승인된 차세대 동영상 부호화 기술로 H.264 대비 50% 향상된 압축 효율을 보입니다.

  • HEVC 인코딩 블록도

그림1. HEVC 블록 다이어그램

HEVC의 주요 과정을 정말 개괄적으로 설명해보자면 우선 인코딩 하기 위해 영상을 블록 단위로 쪼개어 진행하게 됩니다.

공간적 중복성 / 시간적 중복성을 제거하기 위해 Intra / Inter 예측을 이용하여 원본 신호과 예측 예측의 잔차 신호을 구하게 되고 변환 및 양자화를 수행하게 됩니다.

잔차 신호를 엔트로피 코딩 후 디코더로 전송하지만 디코더에서 원본 이미지의 화소값을 알 수 없기 때문에 그대로 복원하면 인코더와 미스매치가 발생하게 됩니다.때문에 인코더에서 복원 신호를 통해 다시 잔차 신호를 생성하고 엔트로피 코딩 후 디코더에서 디코딩하여 복원 영상을 얻게 됩니다.

  • 블록 분할

그림2. H.264와 HEVC/H.265의 블록 분할 비교

H.264에서는 최대 크기 16x16의 매크로 블록을 사용하는 반면, HEVC/H.265에서는 최대 크기가 64x64의 CTB (Coding Tree Block)를 사용하며 쿼드 트리 구조로 분할하며 예측하여 부호화를 진행합니다.

최대 크기 블록에서 작은 크기로 분할해가며 예측을 수행하기 때문에 블록 크기가 클수록 인코딩 효율이 향상됩니다.

블록 내 변화가 거의 없는 구간에서는 큰 블록 크기로 효율적인 인코딩을 진행하며 변화가 큰 구간에서는 작은 블록 단위로 예측을 진행해 높은 성능의 인코딩 진행이 가능합니다.

이렇게 쿼드 트리로 분할되는 단위를 CU (Coding Unit), 예측에 수행되는 단위를 PU (Prediction Unit), 변환 및 양자화에 수행되는 단위를 TU (Transform Unit) 라는 블록 단위 부호화 기술이 추가되었습니다.

  • 예측 모드

영상을 효율적으로 압축하기 위해 공간적, 시간적 중복성을 제거하기 위한 Intra, Inter 예측 과정을 진행하게 됩니다.

그림3. Intra 예측 모드

Intra, Inter 예측에 대해서는 이후 게시물에서 자세히 설명할 예정이므로 H.264와의 간략한 차이점만 살펴보자면 Intra 예측은 H.264에서는 9개의 예측 방향만 사용했던 반면, HEVC에서는 각도, DC, Planar의 35개의 모드를 통해 예측을 수행합니다.

Inter 예측에서는 Merge, AMVP(Adaptive Motion Vector Prediction)을 통해 시간적 중복성을 제거하는 예측을 수행하게 됩니다.

  • 변환 및 양자화

32x32부터 4x4까지 사이즈로 변환을 지원하며, 4x4의 특정 모드의 경우 DCT 대신 DST 변환을 사용합니다.

추후 설명하겠지만 총 압축 과정에서 손실은 양자화 과정에서 나타나게 됩니다.

  • 인 루프 필터

Boundary에서 Step Edge를 감소시키는 Deblocking Filter와 추가적으로 복원 영상과 원본 영상 간 오차를 감소시켜주는 SAO (Sample Adaptive Offset) 기술로 필터링이 진행됩니다.

  • Entropy Coding

Bitstream을 전송할 때 통계적 중복성을 제거하기 위해 H.264에서는 CAVLC를 통해 진행하였으나 HEVC에서는 CABAC기술을 이용합니다.

말 그대로 개요이다 싶이 HEVC의 간략한 내용을 적었을 뿐, 짧은 기간인 4개월간 공부를 통해 느낀 비디오 코덱에는 정말 많은 기술과 기술마다 복잡한 알고리즘과 이론이 존재함을 느꼈습니다.

정보 습득을 위해서는 해당 전공서적 혹은 논문을 권해드리며, 제가 잘못 알고 있는 내용이 많이 존재할거라 생각되어 댓글로 남겨주신다면 감사히 알아가겠습니다!

profile
iOS Developer

0개의 댓글