> rice | uyarlamalı | sıkıştırma <

// Rice Kodlama – Ayarlanabilir parametre ile uyarlamalı tamsayı sıkıştırma

0 karakter
0 karakter

>> özellikler

[UYARLAMALI]

Ayarlanabilir parametre

Farklı veri dağılımlarını en iyi şekilde sıkıştırmak için k değerini ayarlayın.

[VERİMLİ]

Geometrik veriler

Geometrik veya üstel dağılıma sahip veriler için idealdir.

[BASİT]

Hızlı kodlama

Yüksek performans için basit bölme ve kalan işlemleri.

>> teknik bilgiler

Rice kodlama nasıl çalışır?:

Rice kodlama, her tamsayı n’i 2^k’ye bölerek bölüm q ve kalan r elde eder. Bölüm, unar biçimde (q adet bir, ardından bir sıfır) kodlanır; kalan ise k bitlik ikili sayı olarak yazılır. Böylece k parametresi sayesinde veri dağılımına uyarlanan değişken uzunluklu bir kod elde edilir.

Rice kodlama örneği (k=2):

k=2, M=2^2=4

0 → q=0, r=0 → 0|00 → 000
1 → q=0, r=1 → 0|01 → 001
2 → q=0, r=2 → 0|10 → 010
3 → q=0, r=3 → 0|11 → 011
4 → q=1, r=0 → 10|00 → 1000
5 → q=1, r=1 → 10|01 → 1001
6 → q=1, r=2 → 10|10 → 1010
7 → q=1, r=3 → 10|11 → 1011
8 → q=2, r=0 → 110|00 → 11000

Daha büyük k: daha az unar bit, daha çok ikili bit
Daha küçük k: daha çok unar bit, daha az ikili bit

Neden Rice kodlama kullanmalısınız?:

  • ▸Veri dağılımına uyum sağlar
  • ▸Uygulaması kolaydır
  • ▸Hızlı kodlama ve kod çözme
  • ▸Sensör verileri için idealdir
  • ▸Küçük tamsayılar için verimlidir

>> sık sorulan sorular

Rice kodlama nedir?

Rice kodlama, özellikle geometrik dağılımlar için verimli olan değişken uzunluklu bir entropi kodlama yöntemidir. Bölücü M’nin 2’nin kuvvetleriyle sınırlandırıldığı (M = 2^k) Golomb kodlamasının özel bir durumudur ve bit kaydırma işlemleri sayesinde daha hızlı uygulanabilir.

k parametresi nasıl seçilir?

En uygun k değeri veri dağılımına bağlıdır. Ortalama μ için yaklaşık k ≈ log₂(μ × ln(2)) bağıntısı kullanılabilir. Küçük k değerleri (0–2) çok küçük sayılar için, daha büyük değerler (4–8) ise daha büyük değerler içeren veriler için uygundur. Veriniz için en iyi k değerini bulmak için analiz fonksiyonunu kullanın.

Rice ve Golomb kodlama farkı nedir?

Rice kodlama, M = 2^k kısıtlaması olan Golomb kodlamasının bir alt kümesidir. Bu kısıtlama Rice’ı daha hızlı yapar (bölme yerine bit kaydırma), ancak bazen biraz daha az optimal olabilir. Golomb daha iyi sıkıştırma için herhangi bir M değeri seçebilirken, Rice bir miktar verimliliği hız karşılığında feda eder.

Rice kodlama nerede kullanılır?

Rice kodlama, kayıpsız ses sıkıştırmasında (FLAC, ALAC), görüntü sıkıştırmasında (JPEG-LS) ve geometrik dağılıma sahip sensör verilerinde yaygın olarak kullanılır. Özellikle, olasılığı üstel olarak azalan küçük negatif olmayan tamsayılar için etkilidir.

// Çözümlü örnek

nqrk=2
0000000
1001001
2010010
3011011
41001000
51011001
61101010
71111011
820011000

// Kod örnekleri

Rice code with parameter k  (Golomb code with M = 2^k)
  q = n >> k            quotient, written as q ones followed by a zero
  r = n & (2^k - 1)     remainder, written as k plain bits
  code = unary(q) + r

k = 2, n = 9  ->  q = 2, r = 01  ->  110 01
Decode: count the leading 1s (q), skip the 0, read k bits (r), n = (q << k) | r
Choose k about log2(mean value): small values -> small k

>> Daha fazla soru

S: Rice kodu ile Golomb kodu arasındaki fark nedir?

C: Rice kodu, M parametresinin ikinin kuvveti (M = 2^k) olduğu Golomb kodu özel durumudur. Bölme yerine bit kaydırma ve maske kullanılır; bu çok hızlıdır.

S: k parametresi nasıl seçilir?

C: k yaklaşık olarak değerlerin ortalamasının log2’si olmalıdır. Çok küçük k uzun birli diziler, çok büyük k kalanda boşa bit üretir. FLAC gibi kodekler k’yi blok başına seçer.

S: Rice kodu ne için uygundur?

C: Küçük değerlerin çok daha sık geldiği, geometrik dağılımlı negatif olmayan tam sayılar için. Tipik örnek: kayıpsız ses (FLAC) ve görüntü (JPEG-LS) tahmin artıkları.