ページへ戻る

− Links

 印刷 

tek5​/rangecoder のバックアップ差分(No.4) :: OSASK計画

osaskwiki:tek5編集/rangecoder のバックアップ差分(No.4)

« Prev[4]  Next »[5]
3: 2004-09-20 (月) 19:17:23 ソース[6] 4: 2004-09-20 (月) 21:54:01 ソース[7]
Line 46: Line 46:
*** LZMAからtek5での改良点 *** LZMAからtek5での改良点
--書き途中+-これはLZMAやstk5では行われていない手法で、tek5では行われている(行う予定の)手法です。 
 +-LZMAやstk5のレンジコーダでは、1ビットをエンコードするたびに(1ビットをデコードするたびに)それまで出力したビット列を観察し、次にまたビットを出すときに、"0"と"1"の長さの比をどうするか決めています。そしてこの計算を軽くするために、多少の精度を犠牲にしている部分があります。 
 +-tek5ではこれをやめて少しくらい計算が重くなってもいいので精度よく計算できるモードがあります。しかしもちろんこれはオフにすることもできます。どうしてかというと、不正確さがたまたま圧縮に有利になることがありますし、圧縮率よりも速度がほしい時だってありうるからです。 
 +-またLZMAやstk5では、"0"と"1"の出現比が1:1000よりも極端になった場合を扱えず、常に1:1000くらいとして近似しています。これは実用上十分な場合もありますが、先の0x00と0xffのときのように、あるビットに関しては完全にどちらかしか出ない、という場合もありえます。これはまさに比が0:1の場合で、これを1:1000で近似するのはそれなりに損です。ということで、tek5ではこの比を1:10000くらいまで対応できるようになっています。 
 +-LZMAやstk5では、過去のビット列から出現比を予想する場合、どのくらい速く新しい傾向に追従できるようにするか、を決めるパラメータが固定されています。これは結構有害で、このせいで"0"と"1"が交互に来る場合などでは無圧縮よりも長くなってしまうという問題がありました。ということで、このパラメータを可変にして、全く追従しなかったり、LZMAくらいで追従したり、むしろそれよりも速く追従したりを選択できるようになっています。 
 +-これらの設定はすべてファイルの途中で何度でも変更可能です。アーカイブなど、ファイルの途中で統計的傾向がどんどん変わるものでは都合がいいでしょう。 
 +-これらのすべてについて、圧縮率の改善効果があるということが確認されています。
* こめんと欄 * こめんと欄
#comment #comment
« Prev[4]  Next »[5]