화면내 예측 개념 및 HEVC 적용 사례

·2023년 12월 28일
0

비디오 부호화

목록 보기
2/13

비디오 압축기술 개요

손실 압축(Lossy Coding)의 목적

  • 원본 비디오 데이터의 크기를 최대한 축소
  • 복원 비디오의 (인지) 화질은 최대한 유지

bpp(Bits Per Pixel)

  • 픽셀당 평균 비트 수 => 각 픽셀에 할당된 데이터 량

  • 낮을수록 더 강한 압축

  • CR과 Trade-off 관계

    	bpp = 압축된 파일 크기(bits) / 총 픽셀 수

CR(Compressoin Ratio)

  • 압축 전후의 크기 비율 => 압축 효율성

  • bpp와 Trade-off 관계

    	CR = 압축 전 파일 크기 / 압축 후 파일 크기
    	   or 원본 bpp / 압축 후 bpp

비디오 부/복호화의 예측 기술

  • 원본 신호('Ori')를 압축하는 것이 아닌 원본 신호에서 매우 유사한 예측 신호(Predictor, 'Pred') 를 빼준 차분 신호(Res = Ori - Pred)를 부호화 해주는 것이 더 효율적
  • 부호화에서 활용되는 3가지 대표적인 예측 기술
    • 화면내 예측(Intra prediction) 부호화
      • 공간적 중복성을 줄이기 위한 예측
        • 하나의 이미지에서 코딩하려는 부분의 한 픽셀은 주변의 픽셀과 유사
        • 이런 유사성을 제거하는 것이 화면내 예측의 목적
    • 화면간 예측(Inter prediction) 부호화
      • 시간적 중복성을 줄이기 위한 예측
        • frame rate가 커지면 커질수록 인접한 이미지들 사이에서는 큰 시간적 중복성이 존재
        • 이런 중복성을 제거하는 것이 화면간 예측의 목적
    • 엔트로피 부호화(Entropy coding)
      • 양자화 된 잔차 신호의 통계적 중복성을 줄이기 위한 예측
        • 부호화 과정에서의 중복을 줄이는 것이 목적

HEVC의 블록 구조

  • Coding Tree Block(CTB) : 쿼드트리(Quadtree) 분할구조를 갖는 HEVC의 기본 압축 단위
    • 화소 간의 값이 별로 차이가 없는 경우(복잡한 객체가 없는 경우) CTB를 크게 쪼개고, 차이가 큰 경우(복잡한 객체가 있는 경우)는 CTB를 작게 쪼개서 부호화 효율 향상
    • 복잡한 영역은 CTB를 더 작게 쪼개서 영상의 지역적 특성을 반영함
  • Prediction Block(PB)
    • 화면간/화면내 예측을 위한 단위 블록
    • 화면간(INTER) 예측 단위 블록은 여러 개가 있다
      • 대칭 / 비대칭 등 여러 가지의 블록 종류
    • 화면내(INTRA) 예측 단위 블록은 2 가지가 있다
      • 모두 정방향 블록
      • 크게 쪼갤 것인지, 작게 쪼갤 것인지만 결정

HEVC 화면내 예측의 특징

  • 공간적 참조만을 허용하는 예측 기술
  • 기 부/복호화된 블록주변 참조샘플들을 이용하여 현재 블록을 예측
  • 주변의 참조 신호에 대해 연속성을 가진 평탄한 영역, 일정한 방향성을 가진 영역에서 효과적
  • 시간적으로 참조할 수 없는 첫 번째 픽쳐와 임의 점근(RA)을 위해 영상의 중간 중간에 삽입
  • 참조 샘플로 이용할 수 있는 정보의 양이 시간적 정보의 양보다 적기 때문에, 일반적으로 화면 간 예측에 비해 부호화 성능이 낮다
    • 시간적 주변 정보만으로 예측하기 어려운 상황에서는 화면 간 예측보다 더 좋은 성능을 갖출 수 있음
  • 모드
    • 방향성 모드와 비 방향성 모드가 있다

기존 H.264/AVC의 한계점

  • 단위블록(MB) 사이즈의 크기가 다양하지 않음
    • 초고해상도(UHD) 콘텐츠 얍축에 제약
      • 평활한 영역에서 블록 크기를 키우고, 복잡한 영역에서 블록 크기를 줄여, 계산 복잡도를 줄여야 하는데 그렇지 못하기 때문
  • 방향성 모드의 개수가 불충분(8개)
    • 특히, 큰 블록 사이즈에서 부호화 효율 저하
  • 평활한 영역(Homogeneous region)에서 압축 효율이 낮음(DC 모드만 존재)
    • 평활한 영역(Homogeneous region) : 영상에서 밝기, 색상 등이 거의 변화하지 않는 균일한 영역

HEVC 화면내 예측의 개선점

  • 단위 블록(CTB)의 최대 크기(64X64)가 증가하여 다양한 사이즈의 예측 가능
  • 방향성 모드의 개수 증가
    • 총 33개의 방향성 모드(angular prediction mode)
    • 8 -> 33 개
  • 비방향성 모드: DC-mode(기존 모드) 외 Planar-mode 추가
    • 비방향성 모드 : 평활한 영역을 부호화하기 위한 모드
  • 화면내 예측 블록 생성 시, 1/3-pel accuracy의 bilinear 보간 방식 이용
    • 참조 샘플(주변 블록)을 더 잘 만들어내기 위해서
      • 참조 샘플(주변 블록) 정보를 기반으로 예측을 진행
      • 참조 샘플(주변 블록)을 잘 만들어야 잔차가 줄어 효율이 증가함
  • Boundary smoothing(수직/ 수평/ DC 모드) 사용
    • 블록 경계에서 예측 성능 향상

HEVC 화면내 예측 모드

  • 총 35개의 화면내 모드 존재(Planar, DC + 33 개)
  • 방향성 모드(angular prediction mode) : 33개
    • Horizontal modes : Mode2 ~ Mode18
    • Vertical modes : Mode19 ~ Mode34
    • 방향에 따라 값들을 Copy하여 외삽
  • 비 방향성 모드
    • Planar (Mode 0) & DC (Model 1)
    • 평활한 영역(Homogeneous region) 또는 점진적으로 변화하는 영역(Gradations) 예측에 유리
    • 평활한 영역 -> DC mode
      • 참조 샘플의 평균값으로 블록을 예측
    • 점진적으로 변화하는 영역 -> Planar Mode
      • 수평 및수직 방향의 선형 보간을 통해서 블록을 예측
    • Lines -> Angular modes

HEVC 화면내 예측 블록

  • 계층적 부호화 구조

    • CTU(Coding Tree Unit) -> CU(Coding Unit) -> PU(Prediction Unit) -> TU(Tranform Unit)
    • CTU : 영상의 기본 처리 단위
      • CTU는 좌측 상단에서 우측 하단 순서대로 부호화 진행 (64x64, 32x32, 16x16)
      • CTU 내 CU로 분할되며, z-순서(좌상단->우하단)로 부호화 진행 (64x64, 32x32, 16x16, 8x8)
    • CU : 실제로 부호화가 진행되는 영역
    • PU : CU 내부에서 예측 모드를 적용하는 단위

  • Coding Block 내, Transform-block이 여러 개 존재하는 경우, 동일한 화면내 예측 모드가 적용됨

    • spit_transform_flag가 0이면 transform block으로 나눠지지 않고, 1이면 나눠짐
    • flag가 0이면 현재 PU와 TU의 크기가 같음
    • TU로 예측을 수행할 경우, 참조 샘플과의 거리가 짧아져 예측 성능이 좋아짐
      • 예측이 잘 되면 잔차 신호가 줄어들기 때문에 압축 효율이 좋아지게 됨
    • TU의 제약 조건
      • 하나의 PU 블록 내의 TU 블록은 모두 같은 화면내 예측 모드이어야 함
  • 화면 내 예측에서는 PU 단위로 예측 모드를 선택하고, 수행할 때는 TU 단위로 예측과 재구성 수행

    • TU의 크기는 PU의 크기보다 클 수 없음
    • PU의 크기는 2Nx2N, NxN(CU가 최소 크기인 경우)

화면내 예측을 위한 참조 샘플 구성

  • Ns x Ns 크기의 화면내 예측자를 생성하기 위해, 먼저 부/복호화 된 좌측 및 상단의 인접 샘플들(P_ref, 각 2*Ns 개) 및 현재 블록의 좌상단 샘플을 참조 샘플로 이용
    • 참조 샘플 : 4 * Ns + 1
    • 참조 샘플의 길이가 2배인 이유 : 화면내 예측 모드 중 비방향성 모드 적용 때문
      • Coding Block의 우하단 픽셀을 예측하기 위해 대각선 방향 모드를 적용하기 위해서는 참조 샘플의 길이가 Coding Block의 길이의 두 배가 되어야 한다

  • 참조 샘플 구성을 위해, 먼저 참조 샘플을 사용할 수 있는지 점검을 우선 수행
    • 샘플이 현재 화면의 경계 밖에 위치하는 경우
    • 샘플이 현재 블록과 동일한 슬라이스(slice)에 속하지 않는 경우
    • 샘플이 화면 간(inter) 방식으로 부호화된 블록에 속해 있고, PPS에서 제한된 화면내 예측(constrained intra prediction)이 설정된 경우
      • 참조하려는 샘플이 화면 간(inter) 부호화 블록에서 가져온 데이터일 때, PPS에서 제한된 화면 내 예측이 활성화되어 있는 경우

  • 예시

    • 9번을 부호화하는 경우
      • 3, 6, 7번은 부호화가 이미 끝난 상태이므로 참조 샘플로 활용할 수 있음
    • 13번을 부호화하는 경우
      • 수평 방향의 참조 샘플은 범위를 벗어나기 때문에 충분한 참조 샘플의 확보가 어려움
      • 수직 방향의 참조 샘플은 아직 부호화가 진행되지 않은 부분(30번)이 있기 때문에 충분한 참조 샘플의 확보가 어려움
      • 참조 샘플을 만들어내서 확보해야 함
  • 가용 불가능한(Not available) 참조 샘플은 가장 인접한 가용 참조 샘플 값을 복사하여 사용

    • 만약 가용한 참조 샘플이 하나도 없을 경우, 픽셀의 중간 값을 이용하여 채움
    • Scanning 순서 : A -> B
    • 초록색 : 가용 가능 / 하얀색 : 가용 불가능
  • Case 1.

    • 가용 가능한 픽셀 바로 다음에 가용 불가능한 픽셀이 있으므로 가장 가까운 가용 가능한 픽셀인 A를 복사하여 채움

  • Case 2.
    • 가용 불가능 픽셀이 먼저 Scanning 되고 가용 가능 픽셀이 나오면 가장 가까운 가용 픽셀인 A를 복사하여 채움
    • 이 후 다른 가용 픽셀이 나오고 가용 불가능 픽셀이 나오면 가장 가까운 가용 픽셀인 B를 복사하여 채움

참조 샘플 필터링(Smoothing)

  • 위에서 참조 샘플을 구성하고, 그대로 사용하지 않고 필터링을 거친다
  • 참조 샘플은 원본 샘플이 아니라 부/복호화 된 샘플이기 때문에 에러가 있을 수밖에 없음
  • 참조 샘플 필터링을 통해 샘플 데이터를 정제하거나 부드럽게 만들어, 예측 정확도를 높임
  • 예측 정확도가 증가함에 따라 잔차 신호가 작아지게 되어 압축 효율이 증가하게 된다

MDIS(Mode and Block Size Deendent Filtering)

  • 화면내 모드 & 블록 큭기의 조합 조건에 따라 참조 샘플에 lowpass 필터링 수행 여부를 결정
  • 복원된 참조 샘플에 존재하는 Artifact 제거하는 것이 목적
  • 그렇다고 모든 모드에 대해 적용하지는 않음
    • DC / Horizontal / Vertical 예측의 경우 필터링을 적용하지 않음
    • 4x4 블록 크기에 대해서는 필터링을 적용하지 않음
    • 4x4 보다 큰 블록에 대해서 모드(방향)에 따라 필터링 수행 여부 결정

  • 3-tap 필터링

    • 첫 번째, 마지막 참조 샘플을 제외한 나머지 샘플에 대해 h(n) = 1/4 * [1, 2, 1] 필터링을 적용

    • 적용 조건

      • minDistVerHor = Min(Abs(intraPredMode - 26), Abs(intraPredMode - 10))
      • minDistVerHor > intraHorVerDistThresh
      • intraHorVerDistThresh는 아래 표에 의해 결정 됨

      • 조건에 따르면 수평 방향과 수직 방향의 모드들을 제외한 나머지 모드들에 대해서 필터 적용
    • 예시) 16x16 block size이고 34번의 모드에 대해서 계산

      • intraPredMode = 34 / intraHorVerDistThresh = 1(표에 의해 결정됨)
      • minDistVerHor = Min(Abs(intraPredMode - 26), Abs(intraPredMode - 10))
      • minDistVerHor = Min(Abs(34 - 26), Abs(34 - 10))
      • minDistVerHor = Min(8, 14)
      • minDistVerHor = 8
      • minDistVerHor > intraHorVerDistThresh (8 > 1)을 만족하므로 Filter 적용
  • 32x32 크기의 Luma 참조 샘플에 대해 Strong Smoothing

    • SPS(Sequence Parameter Set)에 지정된 flag 값에 수행 여부 결정

    • Flag가 ON인 경우, 32x32 크기의 Luma 블록에 대해 'Local Activity' 조건을 계산

      • 세 픽셀의 변화율이 임계값보다 작으면 평활한 영역으로 간주하고, 더 강하게 smoogthing 하는 것이 더 좋음
    • 위 조건이 만족되는 경우, 현재 블록 영역이 low texture 특성을 가진 것으로 간주하고 Bilinear interpolation (strong) 필터를 적용

  • 평활한 영역에서 더 강하게 smoothing을 적용하면 좋을 이유
    • 에너지 분포를 균일하게 만듦
      • 스무딩은 작은 노이즈나 불규칙한 변화를 제거하여 샘플 간의 차이를 줄임
      • 이는 예측 오차를 줄이고 부호화할 데이터의 크기를 감소시켜 효율적인 압축이 가능하게 함
    • 예측 값을 더 부드럽게 만들어 블록 경계에서의 불일치를 줄임

비방향성 화면내 모드

Planar Intra Prediction

  • 현재 예측하려는 샘플과 같은 열의 참조 샘플, 같은 행의 참조 샘플과 좌측 참조 샘플의 가장 마지막 샘플, 상단 참조 샘플의 가장 마지막 샘플에 가중치를 부여하고 평균을 계산하여 예측

  • 좌측의 빨간 샘플을 사용하는 것이 좋지만 아직 부호화되지 않은 샘플이기 때문에 대신하여 a와 d를 사용
  • 각 샘플 위치의 예측 값은 아래 수식을 통해 계산됨

DC Intra Prediction

  • 인접 참조 샘플들의 평균 값을 이용하여 예측 블록 구성

  • DC 모드는 참조 샘플들의 평균값으로 블록을 채움
  • 참조 샘플들의 평균값으로만 블록을 채울 경우, 참조 샘플과 블록간의 경계에서 불연속적이게 됨
  • Boundary Filtering 수행
    • 참조 샘플과 현재 블록이 맞닿는 부분은 아래의 수식을 통해 불연속성이 완화됨

방향성 모드 : Angular Intra Prediction

  • 우상향~좌하단 방향으로 총 33개 방향의 화면내 모드 지원
  • 화면내 모드 방향과 Vertical 모드와의 각도 간의 상관 관계

  • 수직 방향과 멀어질수록 간격이 멀어짐
  • 대부분의 영상 컨텐츠에서 수직, 수평 방향의 구조가 주를 이루는 것을 반영한 설계
    • ex) 대부분의 건물들은 수직, 수평 방향임

One-Dimensoinal Prediction Reference

  • 참조 샘플을 단일 선형 배열로 간주하여 참조 샘플의 위치를 결정하는데 필요한 계산량을 줄임

Interpolated Prediction

  • 모드의 방향 및 현재 블록 내 샘플의 위치에 따라, 대응되는 참조 샘플의 위치가 정수가 아닌 경우 발생
    • 보다 정교한 예측 블록 생성을 위해 Sub-pel Interpolation을 수행
    • 1/32-pel accuracy

Horizontal and Vertical Intra Prediction

  • 참조 샘플 필터링은 수행되지 않음
  • One-Dimensional Prediction Reference 생성 과정이 필요하지 않음
    • 단순한 방향성 예측이므로 참조 샘플 필터링이나 복잡한 보간이 필요하지 않기 때문
  • Boundaary Filtering
    • 경계 영역 샘플에 대해 블록 경계의 불연속성을 줄이기 위해 필터링 수행
    • 좌상단 참조 샘플과 경ㅇ계 참조 샘플 간의 차분 값을 예측 픽셀 값에 더해줌
    • 아래 그림은 Vertical Prediction에 대한 예시

Signaling & Predictive Coding of Intra Prediction Modes

  • 화면내 예측은 많은 모드 수를 포함하기 때문에, Signaling Overhead를 최소화하는 방법이 필요
  • Rate-Distortion Optimization (RDO)
    • Cost = R + λ * D
    • Cost가 가장 적도록 부호화를 진행
    • λ : λ값을 통해서 최적의 균형점을 찾음
    • Distortion
      • 좋은 예측자를 만드는 것
      • 이전까지의 내용들은 Distortion을 줄이기 위해 노력들임
    • Rate
      • 전송해야 할 정보량을 최소화 하는 것
      • 이후의 내용은 R을 줄이기 위한 노력들임

Luma Intra Prediction Mode

  • 현재 블록의 화면내 모드를 부호화하기 위한 2가지 방식이 존재
    • MPM (Most Probable Modes)
      • 먼저 부호화된 인접 블록의 3개 화면내 모드를 List로 구성
      • 현재 블록의 모드가 MPM list에 있을 경우 해당 index만 전송
      • 비디오의 통계적 특성을 활용하여 인코딩 효율을 높이는 데 도움이 됨
    • Fixed-lenght binarization
      • MPM list에 현재 블록의 모드가 포함되어 있지 않을 경우에 해당
      • 그냥 고정된 길이로 부호화하여 전송

  • 3 블록을 부호화하는 경우
    • 블록마다 모드 정보를 전송하려면 6bit를 소모해야 함(총 35개의 모드)
    • 0, 1, 2의 모드와 3의 모드는 같을 확률이 큼
      • 0, 1, 2 모드와 같다는 정보만 보내면 전송량이 줄음

MPM 리스트 구성

  • 현재 블록(Bc)좌상단 샘플의 왼쪽 픽셀을 포함하는 블록 -> Ba
  • 현재 블록(Bc)좌상단 샘플의 상단 픽셀을 포함하는 블록 -> Bb
  • 우선 Ba와 Bb의 화면내 예측 모드가 가용한지 확인해야 함
    • Ba 및 Bb가 Bc와 같은 Slice 안에 위치하는지 확인
    • Ba 및 Bb가 Picturue boundary 안에 위치하는지 확인
  • '가용하는지 가용하지 않는지의 결과'와 '인접 블록의 화면내 모드'에 따라 MPM 리스트의 구성이 결정됨

인접 블록이 Not Available 하거나 Intra 모드로 부호화되지 않은 경우

  • 해당 인접 블록의 화면내 모드를 DC 모드로 정함

두 인접 블록이 모두 Intra 모드로 Available한 경우

  • 해당 인접 블록의 화면내 모드를 Mx(x∈{a,b})로 할당

Ma와 Mb가 동일하면서 DC 또는 Planar 모드인 경우

  • canModeList[0] = 1 (Planar Prediction)
  • canModeList[1] = 0 (DC Prediction)
  • canModeList[2] = 26 (Vertical Prediction)

Ma와 Mb가 동일하면서 DC 또는 Planar 모드가 아닌 경우(방향성 모드)

  • canModeList[0] = Ma
    • 인접 블록이므로 같은 모드일 확률이 큼
  • canModeList[1] = 2 + [Ma + 29]mod32
    • Ma 모드 번호의 +1
  • canModeList[2] = 2 + [Ma - 1]mod32
    • Ma 모드 번호의 -1

Ma와 Mb가 동일하지 않은 경우

  • canModeList[0] = Ma
  • canModeList[1] = Mb
    • 그냥 각각 채워 넣음
  • canModeList[2] 결정 방법
    • Planar 모드가 리스트에 없는 경우
      • canModeList[2] = Planar
    • Planar 모드가 리스트에 없고, DC 모드가 리스트에 없는 경우
      • canModeList[2] = DC
    • 위의 두 경우가 아닌 경우
      • canModeList[2] = Mode 26 (Vertical Mode)

현재 블록의 화면내 모드 부호화

  • 현재 블록의 화면내 모드가 MPM 리스트에 있는 경우
    • MPM 리스트의 해당 Index를 부호화
  • 현재 블록의 화면내 모드가 MPM 리스트에 없는 경우
    • 현재 블록의 화면내 모드를 5bit로 부호화
    • MPM 리스트에 없어도 이득인 이유
      • 총 35개 모드에서 MPM 리스트의 3개 모드를 제외하면 32개의 모드
      • 32는 5bit로 표현할 수 있기 때문에 1bit의 이득이 있음

Process

  • 예측자 생성
    • 예측자 : 현재 블록의 픽셀 값을 예측하는 값
    • Intra Prediction, Inter Prediction을 통해 생성
  • 차분 신호 생성
    • 현재 블록에서 예측자를 뺀 값
  • 변환(Transform)
    • 차분 신호는 공간 영역의 데이터
    • 이를 주파수 영역 데이터로 변환
    • 낮은 주파수 성분(영상의 전반적인 패턴)은 중요한 정보를 나타냄
    • 높은 주파수 성분(세부적인 변화)은 압축 과정에서 더 많이 제거됨
  • 양자화(Quantization)
    • 변환된 데이터(2D Coefficients)의 값을 정수로 변환하는 단계
    • 데이터의 정밀도를 낮춰 압축을 더 효율적으로 만듦
  • Scanning
    • 압축을 위해 2D 행렬 형태의 Quantized Coefficient Matrix를 1D 배열로 변환
  • 엔트로피 부호화(Entropy Coding)
    • 1D 배열로 변환된 데이터를 부호화하여 저장하거나 전송
    • 두 가지 엔트로피 부호화 방식을 사용
      • CABAC (Context-Adaptive Binary Arithmetic Coding)
        • 높은 압축 효율을 가지며, 데이터의 통계적 특성을 활용
      • CAVLC (Context-Adaptive Variable Length Coding)
        • 비교적 간단하지만 압축 효율은 CABAC보다 낮음

Entropy Coding Process

MDCS(Mode Dependent Coofficients Scanning)

  • 변환 계수(Transform Coefficients)를 효율적으로 부호화하기 위해 사용하는 스캐닝 방식
  • 블록의 예측 모드와 관련된 방향성을 활용하여 부호화 효율을 높이고 압축 성능을 향상시키는 기법
  • 블록에 관하여 수행하기 때문에 Intra-coded Transform Coefficient에만 적용됨
  • Scanning 종류
    • 0 : Zigzag
    • 1 : Horizontal
    • 2 : Vertical

  • 대부분은 Zigzag Scanning을 사용하지만, Intra Prediction Mode가 Horizontal Mode일 때 Vertical Scanning을 사용하고 Vertical Mode일 때는 Horizontal Scanning을 사용

  • 위 이미지처럼 화면내 모드가 Horizontal Mode이라면 좌측 참조 샘플을 그대로 복제하여 블록을 채우게 됨
    • 좌측 참조 샘플과 맞닿는 샘플들은 에러가 별로 없지만 오른쪽으로 갈수록 에러가 커짐
    • 이 경우, Scanning 방식을 Vertical로 하여 엔트로피 부호화 효율을 높임
      • 에러가 작은 픽셀부터 Scan을 진행하는 것이 엔트로피 부호화 효율을 높일 수 있음
    • 화면내 모드가 Vertical Mode일 때 Horizontal Scanning을 사용하는 이유도 마찬가지임

CABAC(Context-Adaptive Binary Arithmetic Coding)

  • H.264/AVC와 HEVC에서 사용되는 고효율 엔트로피 부호화방식
  • 산술 부호화(Arithmetic Coding) 기반의 부호화 방식으로, 데이터의 문맥 정보를 이용하여 부호화 효율을 극대화
  • Context-Adaptive
    • 주변 데이터의 통계적 특성을 학습하여, 특정 비트열이 나타날 확률을 계산
    • 동일한 데이터라도 상황(Context)에 따라 다른 확률 모델을 사용

주요 단계

  • 비트 스트림 이진화 (Binarization)
    • 원본 데이터를 이진 값(0과 1)으로 변환.
    • 예를 들어, 특정 값을 Truncated Unary나 Exponential-Golomb Code와 같은 방법으로 이진화
  • 문맥 모델링 (Context Modeling)
    • 주변 데이터(참조 블록, 이전 계수 등)를 기반으로 현재 데이터의 확률 분포를 예측
    • 예측한 확률을 사용하여 더 효율적인 부호화를 수행
    • 예: 저주파 계수와 고주파 계수는 다른 문맥을 사용
  • 산술 부호화 (Arithmetic Encoding)
    • 각 이진 값에 대해 확률 모델을 기반으로 부호화
    • 높은 확률의 값은 짧은 코드로, 낮은 확률의 값은 긴 코드로 부호화
  • 비트 스트림 생성
    • 부호화된 이진 값을 압축된 비트 스트림으로 출력

Bypass coding

  • 엔트로피 코딩 방법 중 하나
  • CABAC(Context-Adaptive Binary Arithmetic Coding)라는 엔트로피 코딩 방식의 일부
  • 바이패스 코딩은 CABAC의 복잡성을 줄이기 위한 방법
  • remaining mode의 각 비트를 Bypass coding으로 부호화
  • MPM index 부호화도 Bypass coding을 사용

  • 부호화 성능이 크게 떨어지지 않으므로 그대로 사용

Intra Coding Example

Statistics of the Selected Intra Modes

  • Planar Mode가 가장 많이 선택됨
  • 방향성 모드에서는 Vertical, Horizontal 모드가 많이 선택됨

Improvements in VVC for Intra Prediction

  • VVC(Versatile Video Coding)
    • HEVC 대비 인지 화질 기준 2배의 압축률을 목표
    • 현재 표준화 완료
    • HEVC 대비 개선된 화면내 예측 기술
  • 단위 부호화 블록(CTU) 크기
    • HEVC : 64 x 64
    • VVC : 256 x 256
    • UHD 영상 압축에 효과적
  • 방향성 화면내 예측 모드의 수
    • HEVC : 33개
    • VVC : 65개
    • 보다 정교한 예측
  • 참조 샘플 구성
    • HEVC : 한 줄의 참조 샘플
    • VVC : 한 줄 이상의 참조 샘플
    • 원본과 보다 유사한 예측자 생성
  • 모드 Signaling
    • HEVC : 3-MPM
    • VVC : 6-MPM
    • 효율적인 모드 전송

출처 및 참조

  • MPEG뉴미디어포럼/한국방송∙미디어공학회 2023 Summer School
  • 고현석, Intelligent Visual Media Lab, 한양대학교 ERICA
profile
공부 기록

0개의 댓글