지난 25일에 ITU에서 H.265/HEVC 표준의 승인이 있었네요.

http://www.itu.int/net/pressoffice/press_releases/2013/01.aspx#.UQekEx11F8F


H.265/HEVC는 H.264/AVC를 잇는 차세대 동영상 압축 표준인데 H.264/AVC와 비교하면 약 두 배 정도의 압축률을 갖는다고 합니다.

아래는 위키에서 가져온 표인데 동일한 PSNR 수치에서의 표준별 비트레이트 감소율입니다.


H.264/AVC와 비교하면 동일한 PSNR 수치에서 약 35%의 비트레이트를 감소시킬 수 있다는 말이죠.


아무래도 H.265/HEVC는 기존의 H.264/AVC와의 비교가 많을 것 같아서 둘 사이의 차이점을 몇가지 정리해 봤습니다.

1) 압축의 기본 단위라고 할 수 있는 기존의 매크로블럭이 CTU(Coding Tree Unit)로 대체됩니다.

   CTU는 루마 CTB(Coding Tree Block)과 크로마 CTB로 구성되는데 루마 CTB의 크기는 16x16, 32x32, 64x64 중 하나를 선택할 수 있습니다.

   하나의 CTU는 다시 하위의 CU(Coding Unit)들로 나눠질 수 있고 이 CU는 다시 PU(Prediction Unit)와 TU(Transform Unit)로 나눠집니다.

   PU는 인트라, 인터 예측의 단위이고 TU는 주파수 변환, 양자화의 단위입니다. 

   PU는 4x4 ~ 64x64의 크기를, TU는 4x4, 8x8, 16x16, 32x32의 크기를 가질 수 있습니다.

2) H.264/AVC 표준에서는 CABAC과 CAVLC의 두 가지 엔트로피 코딩을 사용했지만 H.265/HEVC에서는 CABAC만을 사용합니다.

3) 인트라 예측에는 33개의 예측 모드와 DC, Planar 모드를 합해서 총 35가지의 모드가 가능합니다. H.264/AVC는 총 9개였죠.

4) 인터 예측에는 Qpel 단위에서 7탭, 8탭 필터가 사용됩니다. H.264/AVC는 Hpel 단위에서 6탭 필터, Qpel 단위에서는 median 필터를

   사용했습니다. 예측에 사용되는 블럭의 크기는 최소 4x4 부터 64x64 까지 가능합니다.

5) 움직임 벡터 예측에는 AMVP와 merge 모드를 사용할 수 있습니다. AMVP는 참조 프레임과 인접 블럭의 데이터를 이용하는 예측 방법이고

   merge 모드는 H.264/AVC의 skip, direct 모드와 비슷하다고 합니다.

6) 주파수 변환의 블럭 사이즈는 H.264/AVC의 4x4, 8x8에서 16x16, 32x32가 추가됩니다.

7) 기존의 In-loop Deblocking 필터와 더불어 픽셀 단위의 오프셋을 추가해주는 SAO 필터가 적용됩니다.


위키를 보고 몇가지만 간략하게 정리해 봤는데 확실히 H.264/AVC 보다는 훨씬 복잡한 것 같습니다.


Doom9을 찾아보니 HM 9.2 버전의 인코더와 디코더가 있길래 테스트 인코딩도 한번 해봤습니다.

똑같은 소스를 x264로도 인코딩해서 PSNR을 비교해 봤는데 아래가 그 결과입니다. (비트레이트를 동일하게 맞췄습니다.)

HM의 결과가 좋게 나오긴 했지만 최적화가 잘 이루어진 x264를 원시적인 HM 인코더와 비교하는 것은 불공평?하다고 볼 수도 있겠네요..

tappencoder.exe -i test.yuv -c encoder_randomaccess_main.cfg -wdt 1280 -hgt 720 -fr 60 -q 30 -b test.h265

x264r2245.exe --preset veryslow --tune psnr --pass 2 --bitrate 1550 --output test.h264 test.avs


Y-PSNR    U-PSNR    V-PSNR

36.9530     43.3453      45.0783   -> HM 9.2 tappencoder (HEVC)

35.5090     41.4520      43.4230   -> x264r2245 (AVC)


그리고 아래는 x264의 --tune psnr을 빼고 인코딩한 영상과의 비교 스크린샷입니다.

일부러 어느쪽이 AVC(x264)이고 어느쪽이 HEVC(tappencoder)인지는 표시를 안 해놨습니다.

스크린샷만 보고 예상한 다음 맨 밑의 결과와 비교해 보세요  ㅎㅎ;

같은 화면의 스크린샷 3장 중 첫 번째가 원본 영상(1280x720)의 스크린샷입니다.

클릭하면 모두 원본 크기로 볼 수 있습니다.

















'인코딩 일반' 카테고리의 다른 글

x264의 --level 옵션  (17) 2013.02.25
레벨 조정과 컬러 매트릭스  (17) 2013.02.14
x264의 VBV 옵션  (7) 2013.01.24
프로그레시브로 송출되는 지상파 디지털 방송?  (3) 2013.01.16
동영상 압축과 주파수 변환  (2) 2013.01.12
Posted by 김코덱
,