ページへ戻る
印刷
tek5/rangecoder
をテンプレートにして作成 ::
OSASK計画
osaskwiki
:tek5/rangecoder をテンプレートにして作成
開始行:
TITLE:x
* tek5で使われているレンジコーダの効果を紹介するページ
-(by [[K]], 2004.09.19)
-l2d3とかtek0とかUC0とかは(まあ)分かるけど、レンジコー...
*** 非常に大雑把な説明
-どんなデータもビットの集まりです。だから1ビットを出力す...
-たとえば"0"のビットと"1"のビットの割合が半々だったとしま...
-今度は、"0"のビットがやたらと多くて、"1"のビットがあまり...
-本当はここから算術圧縮やその改良型であるところのレンジコ...
*** 手法は違うけど、分かりやすそうな考えかた
-算術圧縮やレンジコーダの説明抜きで、1ビットをより少ない...
-まずここで、魔法のテーブルを考えます。
|デコード|1|01|001|0001|00001|000001|0000001|0000000|
|エンコード|000|001|010|011|100|101|110|111|
-このテーブルはこう使います。たとえば 0100011000000000000...
--01_0001_1_0000000_0000000_000
-と分解して、
--001_011_000_111_111_111
-と出力します(後ろには適当に0を補った)。これなら24ビッ...
-この例ですと、"1"を出力するのに3bit要しますが、"0"は最小...
-ちなみに''レンジコーダのほうがもっと柔軟で拡張性のある考...
*** こんな1ビット単位のレンジコーダで縮むのか
-ここまでの話で推測できるように、ビットが"0"か"1"に偏(か...
|デコード|0|1|
|エンコード|0|1|
-にするのが一番いいのですが、しかしこれだと当然ながら圧縮...
-実際のファイルをただのビット列だと見たら、偏りはほとんど...
-まず、データをビットの列ではなく、バイトの列(8bitの列)...
-この100bitですが、もしこれがASCIIテキストなら、そのほと...
-今度は第2ビットを取り出して、それで偏りを・・・と思うか...
-それぞれのバイト列について、第1ビットが"0"だった場合と、...
-第3ビットは、第1と第2の結果の両方が使えますので、4通りに...
-理解を助けるために例を出します。たとえば、もし、0x00と0x...
-もう一つ例を出します。0x01と0x23です。この場合、第1ビッ...
-これでとりあえずレンジコーダではハフマンと同程度にはでき...
*** もっと偏りを出すための方法
-LZMAやtek5ではさらに圧縮率を上げるために、つまりもっと偏...
-たとえば、C言語ソースなどのテキストファイルを考えたとき...
-具体的にはどうするのかというと、ビット列を作る場合に、直...
-直前バイトの上位3bitを使うというのはデフォルトでしかなく...
-他にも-lpというオプションがあり、これはバイト列の何番目...
*** LZMAからtek5での改良点
-これはLZMAやstk5では行われていない手法で、tek5では行われ...
-LZMAやstk5のレンジコーダでは、1ビットをエンコードするた...
-tek5ではこれをやめて少しくらい計算が重くなってもいいので...
-またLZMAやstk5では、"0"と"1"の出現比が1:1000よりも極端に...
--この1:1000や1:10000という数字は間違っている気がしてきた...
-LZMAやstk5では、過去のビット列から出現比を予想する場合、...
-これらの設定はすべてファイルの途中で何度でも変更可能です...
-これらのすべてについて、圧縮率の改善効果があるということ...
*** おまけ
//-stk5やLZMAでは、1bitを10.828~0.1665bitに変換できる。...
//-tek5では、1bitを通常モードで15.99976~0.0002441bitに変...
//間違えた
-stk5やLZMAでは、1bitを6.0458~0.022004bitに変換できる。
-tek5では、1bitを通常モードで16~0.000022014bitに変換でき...
* こめんと欄
#comment
終了行:
TITLE:x
* tek5で使われているレンジコーダの効果を紹介するページ
-(by [[K]], 2004.09.19)
-l2d3とかtek0とかUC0とかは(まあ)分かるけど、レンジコー...
*** 非常に大雑把な説明
-どんなデータもビットの集まりです。だから1ビットを出力す...
-たとえば"0"のビットと"1"のビットの割合が半々だったとしま...
-今度は、"0"のビットがやたらと多くて、"1"のビットがあまり...
-本当はここから算術圧縮やその改良型であるところのレンジコ...
*** 手法は違うけど、分かりやすそうな考えかた
-算術圧縮やレンジコーダの説明抜きで、1ビットをより少ない...
-まずここで、魔法のテーブルを考えます。
|デコード|1|01|001|0001|00001|000001|0000001|0000000|
|エンコード|000|001|010|011|100|101|110|111|
-このテーブルはこう使います。たとえば 0100011000000000000...
--01_0001_1_0000000_0000000_000
-と分解して、
--001_011_000_111_111_111
-と出力します(後ろには適当に0を補った)。これなら24ビッ...
-この例ですと、"1"を出力するのに3bit要しますが、"0"は最小...
-ちなみに''レンジコーダのほうがもっと柔軟で拡張性のある考...
*** こんな1ビット単位のレンジコーダで縮むのか
-ここまでの話で推測できるように、ビットが"0"か"1"に偏(か...
|デコード|0|1|
|エンコード|0|1|
-にするのが一番いいのですが、しかしこれだと当然ながら圧縮...
-実際のファイルをただのビット列だと見たら、偏りはほとんど...
-まず、データをビットの列ではなく、バイトの列(8bitの列)...
-この100bitですが、もしこれがASCIIテキストなら、そのほと...
-今度は第2ビットを取り出して、それで偏りを・・・と思うか...
-それぞれのバイト列について、第1ビットが"0"だった場合と、...
-第3ビットは、第1と第2の結果の両方が使えますので、4通りに...
-理解を助けるために例を出します。たとえば、もし、0x00と0x...
-もう一つ例を出します。0x01と0x23です。この場合、第1ビッ...
-これでとりあえずレンジコーダではハフマンと同程度にはでき...
*** もっと偏りを出すための方法
-LZMAやtek5ではさらに圧縮率を上げるために、つまりもっと偏...
-たとえば、C言語ソースなどのテキストファイルを考えたとき...
-具体的にはどうするのかというと、ビット列を作る場合に、直...
-直前バイトの上位3bitを使うというのはデフォルトでしかなく...
-他にも-lpというオプションがあり、これはバイト列の何番目...
*** LZMAからtek5での改良点
-これはLZMAやstk5では行われていない手法で、tek5では行われ...
-LZMAやstk5のレンジコーダでは、1ビットをエンコードするた...
-tek5ではこれをやめて少しくらい計算が重くなってもいいので...
-またLZMAやstk5では、"0"と"1"の出現比が1:1000よりも極端に...
--この1:1000や1:10000という数字は間違っている気がしてきた...
-LZMAやstk5では、過去のビット列から出現比を予想する場合、...
-これらの設定はすべてファイルの途中で何度でも変更可能です...
-これらのすべてについて、圧縮率の改善効果があるということ...
*** おまけ
//-stk5やLZMAでは、1bitを10.828~0.1665bitに変換できる。...
//-tek5では、1bitを通常モードで15.99976~0.0002441bitに変...
//間違えた
-stk5やLZMAでは、1bitを6.0458~0.022004bitに変換できる。
-tek5では、1bitを通常モードで16~0.000022014bitに変換でき...
* こめんと欄
#comment
ページ名: