인코딩 | 디코딩 | 최적화

> golomb | 최적 | 압축 <

// Golomb 부호화 - 유연한 제수로 정수를 최적으로 압축

0자
0자

>> 특징

[최적]

유연한 제수

최대 압축 효율을 위해 원하는 M 값을 선택합니다.

[효율적]

절단 이진

나머지를 부호화하기 위해 필요한 비트 수를 최소화합니다.

[범용]

범용 용도

모든 음이 아닌 정수 분포와 함께 사용할 수 있습니다.

>> 기술 정보

Golomb 부호화 동작 방식

Golomb 부호화에서는 각 정수 n을 제수 M으로 나누어 몫 q와 나머지 r을 얻습니다. 몫은 유니어리로, 나머지는 절단 이진 부호로 표현하여 M개의 가능한 값에 대해 필요한 비트 수를 최소화합니다. 이를 통해 p = 1/M 인 기하 분포에 대해 최적의 부호를 제공합니다.

Golomb 부호화 예시 (M=5)

M=5, b=⌈log₂(5)⌉=3, c=2³-5=3

0 → q=0, r=0 → 0|00 → 000 (r<3: 2비트)
1 → q=0, r=1 → 0|01 → 001 (r<3: 2비트)
2 → q=0, r=2 → 0|10 → 010 (r<3: 2비트)
3 → q=0, r=3 → 0|110 → 0110 (r≥3: 3비트)
4 → q=0, r=4 → 0|111 → 0111 (r≥3: 3비트)
5 → q=1, r=0 → 10|00 → 1000
6 → q=1, r=1 → 10|01 → 1001
7 → q=1, r=2 → 10|10 → 1010

절단 이진: r<3에는 2비트, r≥3에는 3비트를 사용

Golomb 부호화를 사용할 이유

  • 기하 분포에 대해 최적
  • 유연한 M 매개변수
  • 최소 비트 사용량
  • 간단한 구현
  • 입증된 최적성

>> 자주 묻는 질문

Golomb 부호화란 무엇인가요?

Golomb 부호화는 기하 분포를 위한 최적의 프리픽스 없는 가변 길이 코드입니다. 조정 가능한 M 매개변수로 정수를 나누고, 몫은 유니어리로, 나머지는 절단 이진으로 부호화하여 P(n) = (1-p)^n × p 를 따르는 데이터를 최적으로 압축합니다.

M 매개변수는 어떻게 선택하나요?

최적의 M 값은 데이터의 기하 매개변수 p에 따라 달라집니다. 평균이 μ인 데이터의 경우 대략 M ≈ μ + 1 로 둘 수 있습니다. 매개변수 p를 가진 지수적으로 감소하는 확률의 경우 최적의 M = ⌈-1/log₂(1-p)⌉ 입니다. 분석 기능을 사용하여 데이터에 가장 적합한 M을 찾으세요.

절단 이진 부호화란 무엇인가요?

절단 이진 부호화는 M개의 가능한 값 중 하나를 부호화할 때 사용되는 비트 수를 최소화합니다. M이 2의 거듭제곱이면 표준 이진 부호를 사용합니다. 그렇지 않은 경우 일부 값은 ⌊log₂M⌋ 비트, 다른 값은 ⌈log₂M⌉ 비트를 사용하여 최소 평균 길이로 유일한 복호화를 보장합니다.

Golomb 부호화는 어디에 사용되나요?

Golomb 부호화는 JPEG-LS 이미지 압축, H.264 비디오 부호화(Exp-Golomb로) 및 무손실 오디오 포맷에서 사용됩니다. 런 길이 부호화, 예측 이후 잔차 부호화 및 기하/지수 분포를 가지는 모든 데이터에 적합합니다.