지난 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)의 스크린샷입니다.

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












스크린샷 순서 보기






저작자 표시
신고
Posted by 김코덱
TAG , , ,