タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

algorithmとcompressに関するTAKESAKOのブックマーク (2)

  • Perl で Range Coder - naoyaのはてなダイアリー

    練習がてら、圧縮符号化の手法のひとつである Range Coder を Perl で実装してみました。 http://github.com/naoya/perl-algorithm-rangecoder/tree/master Range Coder は算術符号を実数ではなく整数で実現した手法です。高速な算術圧縮を実現する「Range Coder」 (1/2):CodeZine(コードジン) に詳しい解説があります。今回の実装も、この記事にあるソースコードを参考に実装しました。参考、というか結局ほとんど移植に近くなってしまいました。 インタフェースは以下のようになっています。入力文字列における各記号の出現頻度、累積出現頻度をあらかじめ算出して RangeCoder オブジェクトにセットしてから、encode することで圧縮結果が得られます。(出現頻度表をバイナリに添加する実装は行っていませ

    Perl で Range Coder - naoyaのはてなダイアリー
  • 高速な算術圧縮を実現する「Range Coder」:CodeZine

    はじめに 記事では、全体のサイズが最小となる算術圧縮を高速に実現するRange Coder(以下RC)を紹介します。 算術圧縮は、各文字の出現確率が分かっている場合にそのデータを最小長で表現可能な符号法です。各文字に固定の符号を割り当てるHuffman法とは違い、符号化を状態更新とみなし、すべての文字を符号し終わった後の状態を保存することで符号化を実現します。これにより1文字単位の符号長を1bitより細かく調整することが可能となります。 算術符号は圧縮率が高い反面、ビット単位の演算処理が大量に発生するため、符号化、復号化ともにHuffman符号に比べ遅いという問題点があります。今回紹介するRCは、算術符号の処理をバイト単位で行うことで高速な処理を可能にします。 また、算術圧縮については概要から説明します。対象読者 C++の利用者を対象としています。データ圧縮の基礎を知っていることが望まし

  • 1