JPH08512438A - データ圧縮方法 - Google Patents

データ圧縮方法

Info

Publication number
JPH08512438A
JPH08512438A JP6520072A JP52007294A JPH08512438A JP H08512438 A JPH08512438 A JP H08512438A JP 6520072 A JP6520072 A JP 6520072A JP 52007294 A JP52007294 A JP 52007294A JP H08512438 A JPH08512438 A JP H08512438A
Authority
JP
Japan
Prior art keywords
data
bits
bit
compression
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP6520072A
Other languages
English (en)
Inventor
ジェイムス、ディビッド、シー
Original Assignee
ザ ジエイムス グループ,インク
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ザ ジエイムス グループ,インク filed Critical ザ ジエイムス グループ,インク
Publication of JPH08512438A publication Critical patent/JPH08512438A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 高度にランダム化されたデータを圧縮する方法を含むデータ圧縮方法が開示されている。あまりランダム化されていないデータを圧縮するためにニブル符号化、分配符号化、直接ビット符号化法が開示されている。さらに、高度にランダム化されたデータの圧縮に非常に有効なランダムデータ圧縮ルーチンも開示されている。開示された圧縮方法の全ては、ビットレベルで動作する。従って、圧縮対象データの性質や生成原因には無関係である。従って、この発明の方法は、その生成源によらず、あらゆる形式のデータに広く適用可能である。

Description

【発明の詳細な説明】 データ圧縮方法 技術分野 この発明は一般的にデータ圧縮方法に関し、特に、ディジタル型式で表現され たデータを圧縮するためにディジタル処理装置を動作させる方法に関する。 発明の背景 データ圧縮技術は、通信及びコンピュータ分野で広く用いられている。通信分 野においては、受信時にデータを元の形に再構成できる圧縮データを送信するこ とが望ましい。圧縮データの送信は、非圧縮の同一データの送信よりも送信時間 が短い。コンピュータ分野では、圧縮データは非圧縮データよりも記憶領域面で 有利である。したがって、固定記憶容量を持った記憶装置においては、圧縮する 方がより多くのファイルを蓄積することができる。よって、データ圧縮による2 つの主な利点としては、記憶容量の増大と転送時間の短縮とがある。 データ圧縮技術は損失があるタイプ(損失型)と損失がないタイプ(非損失型 )の2つの大きなカテゴリーに分類される。非損失型データ圧縮技術は、圧縮や 伸張(圧縮解凍)処理において、情報の損失が許されない時に使用される。損失 型データ圧縮技術は非損失型データ圧縮技術よりも正確さに欠けるが、一般的に 処理速度が速い。つまり、損失型データ圧縮技術は圧縮や伸張のサイクルでの処 理速度のために正確さをやや犠牲にしている。損失型データ圧縮技術は、情報の 損失を許容できるアプリケーション(例えば、ディジタル化したビデオデータ及 びオーディオデータの送信、記憶等)の処理時に典型的に使用される。損失型デ ータ圧縮は非損失型データ圧縮よりも圧縮率が大きく、圧縮処理速度も速い。損 失型データ圧縮技術は近時、パーソナルコンピュータとその関連市場用のオーデ ィオ及びビデオのアプリケーションの普及という観点から相当な重要性を得てき ている。それ以外の大多数のアプリケーションはデータ圧縮において、非損失型 デ ータ圧縮技術を使用している。 定義によれば、非損失型データ圧縮技術はデータが圧縮や伸張のサイクルを通 過した後、データの正確な復元を保証する方法を使用している。非損失型圧縮は コンピュータで使われているディジタルデータの記憶と最も関連している。その アプリケーションはデータベースレコード、表計算ソフト、ワープロの記憶を含 む。 根本的に、全てのデータ圧縮技術は情報理論として知られる数学分野に関連し 、かつこれを用いている。この数学分野は情報の表現、蓄積、通信に関する問題 に関係している。 データ圧縮は冗長性との関係より、情報理論のその分野に関連している。デー タメッセージ中の情報が冗長ならば(その欠落がデータ内にコード化されている 情報を減少させないならば)、メッセージ内にコード化されている情報を欠くこ となく、データメッセージを短縮することができる。したがって、非損失型デー タ圧縮は、メッセージが有する情報を破壊することなく完全なまま、データメッ セージのサイズを縮小する。 エントロピーは、どのくらいの情報がメッセージ内でコード化されているかを 数量的に表すための用語である。高いエントロピーを持つメッセージは、同一の 長さで、低いエントロピーを持つメッセージより、情報量が多い。メッセージ( 通信データ)中の記号(文字)のエントロピーはそのメッセージ内において任意 の文字が発生する確率の負の対数として定義される。複数ビットからなる文字の 情報内容を決定するために、以下に示す2を基底とした対数を用いてエントロピ ーを表す。 Echar(X) = -log2( 文字(X)の確率 ) ・Echar(X) =メッセージ中の任意の文字のエントロピー ・文字(X)の確率=そのメッセージにおいて文字(X)が発生する確率 メッセージ全体のエントロピーはそのメッセージ中に存在するキャラクタ(又 は記号)のエントロピーの単純な合計である。 エントロピーの概念は、データ圧縮技術を最適化するための指示を与える。な ぜなら、その概念は、情報のどの程度のビット数がメッセージ中に実際に存在す るかを論理的に決定するためである。もし、任意のメッセージ中で’Q’の文字 が1/16の確率で発生するならば、その文字が有する情報の内容は、4ビットであ るということであり、’QQ’は8ビットである。’QQ’を表現するために標準8 ビットのASCIIコードを使用すれば、16ビット必要になる。エントロピーの8 ビットとデータ列をコード化(エンコード)するために使用される16ビットの 違いにより、データ圧縮が可能になる。 情報理論で使用される場合、エントロピーは情報内容の相対的な尺度であり、 絶対的な尺度にはなり得ない。なぜなら、キャラクタの情報の内容は任意のメッ セージ中でのそのキャラクタの発生率によるためである。2つの違うメッセージ において、両方が少なくても1回の文字’E’の発生回数を持つならば、’E’ の発生率は2つのメッセージの間で違う値になるだろう。したがって、文字’E ’の情報の内容は固定された値ではなく、文字’E’の発生率に比例してメッセ ージ毎に変化するものである。ほとんどのデータ圧縮技術は、任意のメッセージ 中で高い発生率を持つ記号(又は文字)を予測する。高い発生率を持つ記号は低 い発生率を持つ記号と比較して、必然的に低い情報の内容を持ち、コード化する ために必要なのビットも少ない。他の技術としては、任意の文字の発生率を確定 する方法が知られている。文字データにとって、最も容易な方法は各々の文字の 発生率を確定し(実験的に)、バイナリコードの長さが文字の発生率に反比例す るよう、各々の文字にバイナリコードを割り当てることである。(すなわち、最 も短いバイナリコードは最も頻繁に現れる文字に割り当てられる。) 辞書を基にした技術は、データの一部分又は複数の部分を走査して、どの文字 又は文字列が最も頻繁に現れるかを判定する方法を用いている。文字又は文字列 は辞書の中に配置されていて、文字又は文字列の発生率に反比例したコード長の 所定のコードが割り当てられている。文字又は文字列はデータファイルから読み 込まれ、その文字の辞書登録(見出し語)とマッチングされ、対応したコードを 用いてコード化される。 近時では、データ圧縮のソフトウェアはDOSの世界において急増している。こ れらのソフトウェアはいくつかの欠点を有する。第1に、プログラムは典型的な ディスク集中型で、その結果、プログラムの動作はディスクに読み書きするスピ ードに規制されている。例えば、ランダムアクセス速度が18ミリ秒のハードディ スクを装備した25MHZ 386 GATEWAY 2000TMで作動するPKZIPTMとして広く知られ るコンピュータ圧縮プログラムは1メガビットのASCIIファイルをその1/2のサイ ズに圧縮するために8.5秒かかる。データベースファイル及び表計算ソフトファ イルの圧縮もほぼ同一の時間がかかるが、それらは元の2/3のサイズにしか圧縮 されない。バイナリファイルが最も圧縮され、元のサイズの10〜40%となる。し かし、同一の長さのASCIIファイルよりも圧縮時間が6倍かかる。 以上のデータ圧縮方法の欠点を考慮すると、より効果的及び効率的なデータ圧 縮技術が必要となる。 この発明は、これまで達成されなかったデータ圧縮のレベルに達したと考えら れる。既知のデータ圧縮製品はテキストファイル及びグラフィックファイルに対 して50%以上の圧縮率は不可能であり、実行ファイルに対しては更に低い(約45 %圧縮)。この発明を用いれば、90%のデータ圧縮レベル(特定なアプリケーシ ョンを使用すればより高い圧縮率で)が、現在のデータ圧縮製品が同一のデータ を50%の圧縮率で圧縮するのと同一か又はそれ以下の時間で達成される。この発 明は、ランダム(又はカオス)に出現する形式の情報から、順序付けられた情報 列を分離したり、配置したりすることによって高い圧縮率を達成する。従来のデ ータ圧縮方法は、ランダムに(冗長なしに)配置されているように見えるデータ 中の秩序(冗長)を見出できない場合が多かった。結果的に、従来の圧縮方法は 、検出できない秩序を圧縮することにおいて非効率的である。 以上の説明から理解できるように、秩序付けられたデータがランダムデータか ら抽出されれば、そのように秩序付けられたデータは容易に圧縮できる。 この発明の第2の面は高い圧縮率を達成する性能を更に高めるものであり、再 帰的に(繰り返して反復的に)その性質をデータに適用できることである。特に 、この発明の方法は、ファイルを圧縮する度に、複数のパスを作成していくこと が可能である。このようにして、一連の反復処理は所望の圧縮レベルが達成され るまで、実行される。 発明の概要 第1の観点において、この発明はバイナリデータ列から冗長を抽出する方法を 提供する。この方法は、前記一連のデータから所定数のビットを分析(解析)し 、分析したビットの複数の可能な状態に基づいて前記分析したビットの状態を決 定することを含む。分析したビットの状態に基づいて、分析したビットの状態に 状態コードが関連付けられる。状態コードは第1と第2の部分に分解される。こ こで、第1の部分は第1と第3の位置の少なくとも1つに割り付けられ、前記第 2の部分は少なくとも第2の位置に割り付けられる。 第2の観点において、この発明はバイナリデータ列を圧縮する方法を提供する 。この方法は、前記一連のバイナリデータから所定数のビットを分析(解析)す るステップを含む。各分析したビットの組について、ビットの状態が決定され、 状態コードが、第1、第2、第3の位置の少なくとも1つに設定される。状態の コード化(コーディング)は、複数の可変長コードの生成と、前記複数のコード の少なくとも一部を少なくとも第1と第2の部分に分割することを含む。前記コ ー ド又は前記コード部分の少なくとも1つを、前記第1、第2及び第3の位置の少 なくとも1つに、少なくとも一部において前記分析したn−ビットの所望の属性 の関数として、割り付ける。 第3の観点において、この発明は、一連のバイナリデータから冗長データを繰 り返して抽出して圧縮する方法を提供する。この方法は、前記一連のデータから nビットを分析(解析)し、所望のnビットパターンと非所望のnビットパター ンの発生を分類することを含む。第1のコード列は、所望のビットパターンの各 発生により、第1と第2のレジスタの内容に連結され、第2のコードシーケンス は、非所望のビットパターンの各発生により、第2と第3のレジスタの内容に連 結する。第1のレジスタの内容は圧縮され、圧縮された内容の少なくとも一部は 、再び、同一の方法を用いて処理される。 さらに、第4の観点において、この発明は、一連のバイナリデータから冗長デ ータを抽出して圧縮する方法を提供する。この方法は、前記一連のデータから所 定数のビットを分析(解析)し、複数の可能な状態に基づいて前記解析したビッ トの状態を決定する。状態にコードが関連付けられ、このコードは複数の部分に 分割される。コードの第1の部分は第1と第3のレジスタの少なくとも一方の内 容に連結され、コードの第2の部分は、第2のレジスタの内容に連結される。第 1〜第3のレジスタの内容。前記第1、第2、第3のレジスタの少なくとも1つ が選択され、その内容はnビット単位で分析される。レジスタの1つの分析され たnビットのそれぞれにコードが割り当てられる。コード値は、前記レジスタの 内容から分析されたビットのビットパターンに基づいている。コードは第1〜第 3のレジスタの少なくとも2つの部分に分割されている。 さらに他の観点において、この発明は、ディジタルコンピュータを用いてデー タを圧縮する方法を開示する。この方法は、データ源からデータを読み出し、前 記データを使用可能なフォーマットに変換し、前記データを暗号化して、前記デ ータ源から読み出したデータの総量を減量し、暗号化されたデータを保存し、保 存されたデータを読み出し、前記変換、暗号化、及び保存ステップを保存データ が所望レベルに減少するまで繰り返す。 さらに、この発明は、ニブル暗号化技術を用いてバイナリデータ列から冗長を 抽出する方法を開示する。この技術は、バイナリデータ列からニブルを分析し、 分析されたニブルの値に応答し、複数の制御ワードの1つを7つの出力列の少な くとも1つに連結する。 さらに、第7の観点において、この発明は、分配圧縮法を用いてバイナリデー タ列からのデータを圧縮する方法を提供する。この方法は、前記バイナリデータ 列を分析して、最も頻繁に発生するニブル値を決定し、前記データ列を所定サイ ズのブロックに分割し、どのブロックが最も頻繁に発生するニブルを含み、どの ブロックがそうではないかを示す第1のコード化されたストリングを生成し、最 も頻繁に発生するニブルを含んでいないブロックに関して、ベース256パッキ ングを用いてその内容を圧縮し、最も頻繁に発生するニブルを含んでいないブロ ックに関して、最も頻繁に発生するニブルが起こる位置を各ブロックについて示 す第2のコード化されたストリングを生成し、第1と第2のコード化された列を 縮小する。 第8の観点において、この発明は、直接ビット操作法を用いてバイナリデータ 列からのデータを圧縮する方法を開示する。この方法は、バイナリデータ列を複 数の入力ワードに分解し、複数のレンジを定義し、各ワードが属するレンジを決 定し、各ワードをバランス値に変換し、制御ワードと分析ワードを各バランス値 に割付け、バランス値と制御ワードと分析ワードはそれらに関連する入力ワード の値を個別的に決定する。 第9の観点において、この発明はランダムに分配したデータの列を圧縮する方 法を提供する。この観点は、前記データ列をランダムに分配したデータの複数の ブロックに分解するステップと、前記ランダムに分配したデータのブロックの1 つを選択するステップと、選択されたブロックを第1と第2の部分に分解するス テップと、前記ブロックの第1の部分内の所定のワードの発生数をカウントする ステップと、前記第2の部分のデータを圧縮するステップを含む。 第10の観点において、この発明は、入力データの列から、パック化及びアン パック化が容易なコード化された可変長の列を生成する方法を開示する。この方 法は、前記入力データ列をnビットずつ分析するステップと、各分析されるnビ ットについてステータスをコード化(コーディング)するステップを備える。前 記コードの少なくとも幾つかは第1と第2の部分に分解され、前記コードの第1 の部分の少なくとも幾つかが第2の保存レジスタにセットされ、前記コードの第 2の部分の少なくとも幾つかが第1と第3の保存レジスタの少なくとも1つにセ ットされる。コードワード値とコード化されたワードの部分の配置は、第2の記 憶レジスタにおける第1のワード値の発生数が前記第1のレジスタの内容の長さ を指示するように、選択されている。 第11の観点において、この発明は、データを容易にパックすることができる データ列に配置する方法を開示する。この方法は、データを少なくとも第1と第 2のデータ列に変換するステップと、前記第1のデータ列を少なくとも第1のコ ードワードを含むようにコード化するステップを含む。第2のデータ列の長さは 、前記第1の列中の第1のコードワードの発生の数により示される。 この発明の他の効果とメリットは以下の実施例の説明、請求の範囲の記載、及 び図面を参考にすることにより理解できる。以下に図面を簡単に説明する。 図面の簡単な説明 図1は、ディジタルデータ源のダイアグラム図である。 図2は、この発明の圧縮方法を示す一般的なフローダイアグラムである。 図3Aは、この発明のニブル圧縮プログラムを示す一般的なフローダイアグラ ムである。 図3Bは、この発明の分配圧縮プログラムを示す一般的なフローダイアグラム である。 図3Cは、この発明の直接ビット圧縮プログラムを示す一般的なフローダイア グラムである。 図4は、この発明のニブルコード化法を示す表である。 図5Aと5Bは、所定の入力列に対して図4の表を適用した例を示す。 図6は、この発明のニブルコード化法により処理されたデータをデコードする ための復元木を示すフローダイアグラムである。 図7Aは図4のニブルコード化法を用いた入力列のコード化を示す表である。 図7B〜7Eは、図6の復元木を用いて図7Aの入力列をデコードすることを 示す表である。 図8は、ニブルコード化法によりコード化された列をパッケージするための列 パッケージシーケンスを示す。 図9は、図8に示される列パッケージシーケンスをデコードするためのフロー ダイアグラムである。 図10は、この発明の変換/暗号化ルーチンのフローダイアグラムである。 図11は、表2の0が優位なアルゴリズムを用いてコード化されたデータをデ コードするための復元木を示す。 図12は、表3の1が優位なアルゴリズムを用いてコード化されたデータをデ コードするための復元木を示す。 図13Aは、表2の変換法を用いて入力列を変換する応用を示す表である。 図13B−13Gは、図11の復元木を用いて図13Aの入力列のデコードを 示す表である。 図14は、この発明の変換/暗号化アルゴリズムを示すジェネラルフローチャ ートである。 図15は、表4の暗号アルゴリズムによりコード化された情報をデコードする 復元木を示す。 図16Aは、表4の暗号アルゴリズムを用いた入力列の暗号化を示す表である 。 図16B−16Fは、図15の復元木を用いた入力列の暗号化を示す表である 。 図17A−17Bは、所定の入力列への0優位ルーチンの適用を示す表を示す 。 図18は、単一の入力列に0優位ルーチンを適用することにより3つの出力列 を生成する様子を示す図である。 図19は、列TC1$に図14の変換/暗号化アルゴリズムを適用する様子を 示す図である。 図20は、図19のグラフィカル方法を表す表形式の図である。 図21は、列TC2$に変換/暗号化アルゴリズムを適用する様子を示す図で ある。 図22は、列TE212$に変換/暗号化アルゴリズムを適用する様子を示す 図である。 図23は、列TE312$に変換/暗号化アルゴリズムを適用する様子を示す 図である。 図24は、列TC3$に変換/暗号化アルゴリズムを適用する様子を示す図で ある。 図25は、所定の入力列に表4の暗号化アルゴリズムを適用する様子を示す表 形式の図である。 図26は、列TC1$に変換/暗号化アルゴリズムを適用する様子を示す表形 式の図である。 図27Aは、任意の入力列に適用する変換/暗号化アルゴリズムの適用を示す 図である。 図27Bと27Cは、図27Aの入力列に変換/暗号化アルゴリズムの適用を 示す表形式の図である。 図28は、図27Aに示される変換/暗号化アルゴリズムにより生成された列 をパックするために使用する列パッケージシーケンスである。 図29は、高度にランダム化されたデータを圧縮する方法を示すダイアグラム である。 図30Aと30Bは、図29の方法で使用するルックアップテーブルの例を示 す。 図31は、図29のルーチンで圧縮されたデータを伸張(解凍)するルーチン のフローダイアグラムである。 図32は、この発明の分配コード化法のフローダイアグラムである。 図33Aと33Bは、図32の方法を所定の入力列に適用した例を示す表であ る。 図34は、図32の方法で生成された列をパッケージングするために使用され る列パッケージシーケンスを示す。 図35は、この発明の直接ビットコード化法を示す表である。 図36は、5つの所定のビット値に適用したときの図35の直接ビットコード 化法を示す。 図37は、直接ビット操作法によりコード化されたデータをデコードするため の復元木を示す。 図38A−38Cは、直接ビット操作方法により繰り返して処理されるデータ 列を構築する方法を示す。 図39は、2バイト長のワード値に適用したときの直接ビットコード化法を示 す第2実施例である。 好適実施例の詳細な説明 次に示す定義はこの発明を説明する目的のために提示されている。 定義 ”バイアス” バイナリデータの集合の中の0の数と比較される、同一のデータの集合の中の 1の数の度合い。その度合いは比率として表現されている。例えば、任意のバイ ナリデータの集合が、1つの1に対して1つの0を含むならば、それは均等にバ イアスされているという(すなわち50%のバイアス)。列が1より0を多く含ん でいれば、それは0にバイアスされている。 ”ビジット” 2進法の桁。例えば1バイトは8ビジットの長さを持つ2進数である。ビジッ トは10進法のデジットに相当する。 ”ビット” Binary digIT の短縮形。0か又は1によって表現される2進法の桁。ビジッ トの短縮形。 ”バイト” 8桁の2進数。 ”エントロピー” システムにおける秩序の尺度。情報理論の分野では、任意のメッセージに含ま れた情報量の尺度。”絶対的なエントロピー”の概念は表現し難いままである。 メッセージ中に特定の記号(又は記号の群)の発生率が高ければ高いほど、その 記号のエントロピーは少なくなる。 ”文字のエントロピー” 文字のエントロピーはその文字の発生率の負の対数として定義されている。2 進数の文字の情報内容を決定するために、2を基底とした対数を用いてそのエン トロピーを表現する。 ビットの数 = - log2(発生率) メッセージ全体のエントロピーはそのメッセージ内の個々の文字のエントロピ ーの単純な合計である。例えば、この明細書に発生する文字"e"の確率が1/16な らば、その文字が有する情報の内容は4ビットである。従って、"eeeee"という 文字列が発生すれば、その文字列は合計20ビットの情報内容を持つ(各文字の 確率を全ての文字に対して合計する)。 ”エントロピーの限度” 任意のデータの集まりが情報の損失なしには縮小することができない、理論上 最小限のサイズ。 ”均等に分配されたデータ” 均等に分配されたデータはランダムに分配されたデータと同意語である。ラン ダムに分配されたデータにおいては、文字セット中の各文字は、その文字セット 中の他の文字と同じ位メッセージ中に頻繁に現れる。 ”nCr” n個の要素から1度にr個取る場合の組合せの数を指定する数学上の表現。数 学上では、nCrは次と同等である。 nCr = n! / r!(n-r)! ・n,r = 一度にr個取られる事象の数 ・! = 階乗演算子 例:8ビットの内の3ビットが1で5ビットが0の場合、いくつの違った8 ビットのパターンを発生させられるか。 答え: 8C3 = 8!/3!(8-3)! = 56 ”ニブル” 4桁の2進数。 ”パックルーチン” アイテム又は数値を蓄積するために必要なスペースを小さくするために、2つ 又はそれ以上のアイテム(又は数値)を1つの単語に結合するソフトウェアルー チン。よく知られているルーチンとしては、PACKED DECIMALルーチンがある。パ ックルーチンの一例を以下に示す。 例:パックルーチン使用の際は、”基本値”が定義されなければならない。基 本値は、パックされる最も大きい発生値よりも大きい値と常に等しい。例えば、 次の3つのニブルをパックしたいとする。 N1 = 1011 N2 = 0001 N3 = 0111 12は発生している最も大きいニブル値よりも大きいため、12の基本値が設定 されなければならない。 基本値 = 1110 + 110 = 1210 => (1100)2 パックされたN1,N2,N3 = N1 * (基本値)2 + N2 * (基本値) + N3 = (1011)(1100)2 + (0001)(1100) + (0111) = (11000110000) + (1100) + (0111) = (11001000011) パックされた時の長さ(N1+N2+N3) = 11ビット パックされない時の長さ(N1+N2+N3) = 12ビット 節約された長さ = 12 - 11ビット =1ビット N1,N2,N3は以下に示す方法を用いてアンパックされる。 アンパックN1 = INT (パックされたN1,N2,N3)/(基本値)2 = INT (11001000011) / (1100)2 = INT [1011.00100001] = 1011 アンパックN2 = INT (パックされたN1,N2,N3)-(N1)(基本値)2/(基本値) = INT [(11001000011)-11000110000] /(1100) = INT [0001.100101] = 0001 アンパックN3 = [(パックされたN1,N2,N3)-(N1)(基本値)2]-[(N2)(基本値)] = [(11001000011)-(11000110000)]-[(0001)(1100)] = 0111 ここで図1について言及すれば、この発明の方法は、全ての形式のディジタル 型にコード化(エンコード)された情報を圧縮するのに適する。開示された方法 はバイナリデータのパターンに焦点を当てることにより動作するので、それらは データのソースの特性に無関係である。従って、この発明の方法は、ディジタル 記録媒体に蓄積されるデータファイル50からのデータ、音声情報52を合成す るものとして作成されている、又は作成されるであろう信号、ディジタル型で蓄 積されている他の形式の情報54、マルチメディア56又はグラフィックファイ ル58にのそれぞれの良好に動作する。更に、この発明の方法は、あらゆるタイ プのディジタル記憶装置60からの情報、又はモデム経由で送信されるディジタ ル 情報62をもうまく処理する。この発明の方法は、MacintoshR64、PC互換機6 6又は、他のディジタル処理装置等のあらゆる形式のディジタル型処理装置上で 動作するのに適している。この発明の方法は専用の論理回路65を用いて実行さ れることも可能である。この発明は、データの本来の本質に無関係なため、種々 の形式の使用に対して効果的である。つまり、バイナリ形式で表現される全ての データにおいて、この発明の圧縮方法は情報の損失なしに、データのサイズを小 さくするのに効果的である。 次に、図2について言及すると、一般的なレベルにおいて、この明細書に開示 された全ての圧縮方法は図2のフローチャートに示される。初めに、圧縮される データのソースが配置され、そのデータの第1ブロックがデータのソースから読 み込まれる(ステップ68)。データの第1ブロックは、開示された3つの圧縮 ルーチンのうちのどれか1つを用いて圧縮される(ステップ70)。圧縮された データは蓄積され(ステップ72)、データのブロックがまだ存在するならば( ステップ74)、それらのデータのブロックは検索され(ステップ76)、ステ ップ70と72を通って処理される。圧縮されるデータのソースにデータのブロ ックが存在しないならば、圧縮されたデータファイルが要求されたサイズ以下で あるかどうかを判定される(ステップ78)。もし更にデータ圧縮が必要ならば 、3つの圧縮ルーチンのどれか1つを使用して更に圧縮が可能かどうかのチェッ クが成される(ステップ80)。更なる圧縮が3つの圧縮ルーチンの1つを用い て可能であると判定した場合、出力ファイルをソースファイルと再定義し(ステ ップ82)、再び処理ステップ68から74を通るように送られる。この再帰的 な処理(繰返処理)は、出力ファイルが要求されたサイズ以下になるまで(ステ ップ78)、又は、データの再帰が成果のないものと判断されるまで(ステップ 80)繰り返される。再帰を繰り返した後、3つの圧縮ルーチンのひとつがデー タファイルのサイズの更なる圧縮に対して不可能となった場合、圧縮された出力 ファイルはソースファイルとして割り当てられ(ステップ83)、このソースフ ァイルのデータを4番目のデータ圧縮ルーチンが処理する(ステップ84)。4 番目のデータ圧縮ルーチンがデータを処理した後(ステップ84)、処理結果 のデータは要求されたサイズ以下かどうかをチェックされる(ステップ86)。 要求を満たしていれば、処理は終了する(ステップ88)。更なるデータ圧縮が 必要ならば、再びステップ82を通るよう送られ、ソースファイル=出力ファイ ルとしてセットされる。そして、再び処理ステップ70から76を通るよう送ら れる。78から86のステップの通り再帰される必要性があるなら、それらのス テップを通るように送られる。 この発明の概略について説明してきたが、次にこの発明の詳細を説明する。開 示された全てのデータ圧縮の重点と大きな特徴は、それらの方法論が動作する再 帰的な本質に関係している。この方法論の再帰的な本質は、この方法が圧縮され るデータ上でいくつものパスを操作することを可能とすることである。実質上、 この発明の圧縮方法論は前のパスで失われたデータを圧縮することが可能とされ る。この再帰的な特徴は、冗長な情報の配置及び圧縮において、この方法論を非 常に効果的なものとする。 この方法の大きな特徴は、ブロック70の3つの圧縮ルーチンとブロック84 の圧縮ルーチンとを区別することである。ブロック70で設定された3つの圧縮 ルーチンは適度にランダム化された入力データを圧縮するのに効果的である。し かしながら、ブロック70の方法は、各再帰によって、圧縮されたデータのラン ダムさをより高レベルにする傾向がある。従って、ブロック70の圧縮方法は、 何度かの再帰後には、ソースファイルのサイズを更に縮小することに対して非効 率的になる。従って、高いエントロピーデータの圧縮に有効なブロック84の圧 縮方法が必要となる。 ブロック80で成された判定は、前の再帰の成功の度合いに幾分か基づいてい る。例えば、最後の5回の再帰の履歴は、ソースファイルを通る各パスで起こっ たデータ圧縮度を反映して記録される。その記録に十分な進展が見られれば、ル ーチン84を実行する必要はない。しかしながら、十分な圧縮がもはや達成され なければ、ブロック84の方法が実行される。 ブロック84の方法の重要な点の1つは、エントロピーが高いデータを圧縮す る能力である。ブロック84の方法を用いてソースファイルを通るパスを作成し た後、結果出力ファイルはエントロピーが高くない、という事態が発生する。こ のような場合には、3つの圧縮方法70の1つを通るように戻せば、更なる圧縮 結果が得られる。このような場合でなければ、ブロック84の方法はその出力フ ァイルを再帰することが可能である。 次に、図3A、3B、3Cについて言及する。図2のブロック70で言及され ている3つの圧縮方法としては、ニブル圧縮90、分配圧縮92、直接ビット圧 縮94がある。ニブル圧縮90と分配圧縮92は、類似した方法で作動し、両方 ともコード化(エンコード)法を使用して、選んだデータ列の中で均等でないバ イアスを作成する。データ列を作成後、バイアスされた列は、ニブル圧縮90と 分配圧縮92の圧縮エンジンの心臓部を構成する変換/暗号化ルーチン98に渡 される。バイアスデータを設定するために、ニブル圧縮90はニブルをコード化 する方法96を用いてSTRING1$からSTRING7$までの7つのデータ列を作成する。 これと対照的に、分配圧縮92は分配コード法100を用いてTOTCONT$とTOTMPV $の2つのバイアスされた情報の列を作成する。直接ビット圧縮94は、ニブル 暗号化90又は分配圧縮92に共通しない方法論を使用する。 この発明の圧縮方法論は次を以下に説明する。図2のブロック70の中の3つ の圧縮ルーチンはニブル圧縮90、分配圧縮92、直接ビット圧縮94の順番で 説明される。ブロック84のランダム化されたデータの圧縮ルーチンを、3つの 方法論90、92、94の各々との関連で説明する。 1. ニブル圧縮 図2、3A,4について言及すると、ニブルコード化法96は図4の表を用い ることによって最も良好に説明される。この発明のニブルコード化の方法論によ っ て実行された第1のステップは、データの第1ブロックを読み込み(ステップ6 8)、ブロックをニブル毎に分析する。各ニブル値に従って、1つ又は、それ以 上の予め定義されている制御ワード(ビット又はビット列)を、少なくともSTRI NG1$、STRING2$、STRING3$、・・・STRING7$のうちの1つの内容に関係付ける。 例えば図4について言及すれば、入力ファイルの初めのニブルが3という値を持 っていれば、(すなわち、バイナリ=0011)、STRING1$とSTRING2$の列はそ れらの列の既存の内容に関係付けられた文字0を持ち、STRING3$は既存の内容に 付加された文字11を有し、STRING4$、STRING5$、STRING6$、STRING7$は従前状 態から不変である。STRING1$からSTRING7$の列は入力データ列から分析される各 ニブルに対して作成される。より明確にするために、ニブルコード化(エンコー ド)法96によって達成しようとすることを図5Aと5Bを示す。 図5Aと5Bは、16ヶのニブルからなる入力列(図5Aと5Bの上部に横に 沿って示されている)が図4の表中で示されているニブルコード化方法論によっ て処理された時のSTRING1$からSTRING7$の列を表している。図5Aと5Bは、6 4ビットと50%のバイアス(0と1が均等に分布している)を持つように設定 された仮定の入力列に対して、列STRING1$、STRING2$、STRING3$、STRING7$は1 と0の比率が50対50であるということを示している。しかし、列STRING4$、 STRING5$、STRING6$は元の入力列の50%というバイアスとは違う比率でオフセ ットされている。入力列の50%のバイアスが非冗長と同意ならば、入力列(図 5A、5B中で示されている)は64ビット以下には縮小されない。ニブルコー ド化方法論はビットの数を減少させないが、非均等にバイアスされた3つの列を 作成する。これらの3つの列が変換/暗号化ルーチン98に送られる時、ルーチ ン98はデータを圧縮することによって、3つのそれぞれの列の長さを短縮する 。ニブルコード化方法論において、バイアスされていない入力データ列からバイ アスされたデータの列を作成する能力はこの発明の鍵となる特徴である。図5の ”総ビット数”という欄から、ニブルコード化法96は総ビット数を減少させて いないということがわかる。例えば、図5Aと5Bは、ニブル暗号96は0から 15の値を持つ16のニブルをコード化するために66ビット必要としているこ と を示している。2進数の形式でこれらの16のニブルの値をコード化するために は64ビット必要である。結果として、ニブルコード化法を用いれば図5Aと5 Bの入力列のコード化は更に2ビット必要とする。しかし、列STRING4$、STRING 5$、STRING6$がバイアスされるため(同等に分配された入力データに対して)、 理論上2.19、6.27、1.41ビットの節約がそれぞれに対して得られる。この表作成 をサポートする計算を表1に示す。 列STRING4$、STRING5$、STRING6$は変換/暗号化方法論98を通るように送ら れ、ニブル圧縮90によって達成された効果的な圧縮は6.67%に近づく。勿論、 これには、観測されるオーバーヘッドレジスタや他の”資源を守る”情報は考慮 されていない。しかし、データ圧縮アプリケーション内で大量のデータを処理す る時は、そのオーバーヘッドは無視してよい傾向にある。 ニブルコード化法96の2つの重要な特徴はSTRING1$からSTRING7$の列が容易 にパック又はアンパックされることと、元の入力列が7つのコード化された出力 列より容易に復元(デコード)されることである。これら2つの特徴を以下に述 べる。 ニブルコード化法によりコード化された列の復元 図5A、5B、6について言及すると、ニブルコード化(エンコード)法96 を通って処理された入力列の復元は、次の図6の復元木(デコードツリー)に示 される手順によって達せられる。どのようにして図6の復元木が使用されるかの 一例を図7Aから図7Eまでに示す。図7Aにおいては、図4のニブルコード化 法に4つのニブルの入力列が与えられてる。これは、図7Aに示すSTRING1$から STRING7$の列を構築する結果となる。その後、図6の復元木に示された処理はST RING1$とSTRING2$の列の初めの1ビットとSTRING3$の列の初めの2ビットに適用 される(図7B参照)。その結果として生じるビットの並びは、元の入力列の初 めのバイトは”0001”と等しいことを示している。これは図7Aに示される ニブル1の値と一致する。これらのSTRING1$、STRING2$、STRING3$の列からなる 4ビットは除かれ、残った右側のビットは全て左側に適切に移され、この処理が 繰り返される。図7C、7D、7Eはどのようにして元の入力列のニブル2、3 、4が図6の復元木を用いて実際に復元されるかを示している。 ニブルコード化のパッケージシーケンス 7つの列をニブルコード化法96によりコード化する特有の方法により、デー タが適切なシーケンスにてパッケージされたかどうかが容易に確認される。この シーケンスを図8に示す。 図8について言及すると、ニブルコード化法96により作成された7つの列が 図8に示す方法で連結されたとすると、それらは容易に分離される。連結された 列を分離するためのアルゴリズムを図9に示す。図8、9について言及すれば、 図8の連結した列を分離するためには、元の入力列におけるビット数か又はSTRI NG1$の元の長さが既知の値でなければならない。これは、連結した部分を分離す るために、それらの列の外に蓄積しておかなければならない情報である。図9に 示すように、STRING1$のビット数を知れば、連結した列からSTRING1$を分離する ことができる。列STRING1$の0の数がSTRING2$の長さを生成する。列STRING2$の 長さがSTRING3$の最初の部分の長さを生成する。列STRING1$の1の数がSTRING4$ の長さを生成する。この処理が図9に示されるように繰り返され、図8に示す1 つの列を作るために連結された元の7つの列を作成する。 列STRING4$、STRING5$、STRING6$はニブルコード化法96により復元されると 、これらは変換/暗号化ルーチン98に圧縮のため通される。 変換/暗号化ルーチン 図10について言及すれば、変換/暗号化ルーチン98は2段階で実行される 。第1に、変換/暗号化ルーチン98に送られた列は、その列中で文字1が文字 0より優位かどうかについて判定される。1が優位ならば、その列は1が優位な ルーチン104に送られ、処理される。1が優位でなければ(すなわち、0が優 位かまたは同等)、入力列は0が優位なルーチン106に送られる。1が優位な ルーチン104と0が優位なルーチン106は類似した方法で作動し、両方とも 3つの出力列を作成する。3つの列内の少なくとも1つの列は、データ列の圧縮 を行うアルゴリズム108によって処理される。0が優位なルーチン106を表 2を参照して説明する。 入力列が、0が優位なルーチン106を通って処理される時、入力列は1度に 2ビットずつ分析される。分析された2ビットの値は判定され、表2に示すよう に、文字0又は文字1が3つの出力列-- TC1$、TC2$、TC3$ --のうちの2つに付 加される。よって、0が優位なルーチン106は入力列を処理して3つの出力列 を作成する。 1が優位なルーチン104は、表3に示される表に基づいて3つの出力列に値 を割り当てることを除いては、0が優位なルーチン106と類似した方法で動作 する。 表2、3に示される、0が優位な方法と1が優位な方法の特徴は、3つの出力 列から入力列を容易に再構成(復元)できることである。表2を用いてコード化 された情報を復元するための復元木は図11に示される。図11に従って、TC2$ の初めのビットが0か1であるかが判別される。それが0ならば、入力列におい て元の2ビットが”00”か”11”であるかを判別するためにTC1$の初めのビ ットが判別される。TC2$の初めのビットが1ならば、入力列において元の2ビッ トが”10”か”01”であるかを判別するためにTC3$の初めのビットが判別さ れる。TC1$、TC2$、TC3$の内容を知ることによって、容易に入力データ列を再構 成することができる。 表2に示される0が優位な方法のもう1つの特徴は、TC2$の総ビット数が、入 力列の全ビット数の2分の1を示すことである。従って、TC2$のビット数を知る ことにより、その2倍である入力列の長さを知る。列TC2$における0の数は、TC 1$におけるビットの数を決定し、TC2$における1の数はTC3$におけるビットの数 を決定する。この特徴は圧縮された情報をパッケージすることに関して、後述す るように非常に貴重なものである。表2に対する復元木は図12に示され、図1 1の復元木と同様に作用する。表2を用いて説明された全ての利点は、表3の方 法にも同等に適用される。従って、説明は繰り返さない。一例を図13Aから1 3Gに示す。その中では表2に示す方法論を用いて、入力列が3つの列に変換さ れている。図13Bから13Gは、図11の復元木を用いて、3つの列がどのよ うにして元の入力列に再構成されるかを示している。 図13Aから13Gについて言及すれば、入力列は表2の変換方法論を用いて 処理され、TC1$、TC2$、TC3$の3つの列を作成する(図13A参照)。図11の 復元木はTC2$の初めのビットに適用される。初めのビットが0なので、図11の 復元木は、TC1$の値を判別するために、TC1$の初めのビットを見るように指示し ている。TC1$とTC2$に対する”00”という値は、”00”の値の入力列を作成 する(図13B参照)。これらのTC1$とTC2$の2つのビットは除かれ、それらの 列の残りが左に1ビットずつ移され、残りのビットがなくなるまでこの処理が繰 り返される(図13C〜13G参照)。0が優位なルーチン106と1が優位な ルーチン104のどちらもデータを圧縮しないことに留意することが重要である 。TC1$、TC2$、TC3$の長さを合わせたものは入力データの元の長さと常に等しい 。しかし、ルーチン104と106は0にバイアスされたTC1$に対して効果的で あるし又特定のビットパターンの入力列に依存するいくつかの場合において、0 にバイアスされたTC3$に対して効果的でもある。一般に、TC2$の中のデータは均 等バイアスの傾向が強い。 図10、14について言及すれば、変換/暗号化アルゴリズムは決められた順 序による0が優位なルーチンと暗号化ルーチンの実行から構成される。0が優位 なルーチンについては検討済みなので、更なる説明は不要である。しかし、変換 /暗号化アルゴリズム108について十分に理解される前に暗号化ルーチンを説 明しなければならない。以下に暗号化アルゴリズムについて説明する。 暗号化アルゴリズム 暗号化アルゴリズム処理は表4との提携により最も深く理解される。 表4の使用法は表2と表3が使用された方法と非常に類似している。暗号化ア ルゴリズムは一度に2ビットの入力列を分析することにより作動する。分析され た2ビットの値は、1ビットが3つの出力列の1つに連結されるかどうかを判定 する。また、分析された2ビットの値は、連結されるビットの値も決定する。入 力列に暗号化アルゴリズムを適用した結果が出力列TE1$、TE2$、TE3$の生成であ る。3つの出力列が既知であれば、入力列は容易に再構成される。この再構成は 図15の復元木を適用する。図15の復元木の適用は以前に説明した図11、1 2の復元木が適用される方法と同一であり、それに応じた図15の復元木の適用 の詳細な説明は不必要である。 表4の暗号化アルゴリズムの適用の一例を16Aから16Fに示す。図16で は10ビットの入力列が、出力列TE1$、TE2$、TE3$を作成する表4の暗号化アル ゴリズムによって処理される。これらの3つの列は図15の探索木に従って処理 され、10ビットの入力列を正確に再生する(図16Bから図16F参照)。表 4の暗号化アルゴリズムの重要な面は、0にバイアスされたデータを圧縮する能 力である。例えば、図16Aにおいて入力列は大きく0にバイアスされる(80 %の0)。これは暗号化アルゴリズムに対して理想的なバイアス配列であり、こ のアルゴリズムは10ビットの列を7ビットに短縮する(30%の短縮)。この 例より、入力列が暗号化アルゴリズムによって処理される場合、入力列が0にバ イアスされていれば、結果データの3列が圧縮されることは容易に理解される。 暗号化アルゴリズム(ニブルコード化のような)と提携して作動するルーチンを 0に大きくバイアスされたデータの列に適用することができれば、暗号化アルゴ リズムはデータ圧縮に対して非常に効果的である。表4の暗号化アルゴリズムよ り、そのアルゴリズムが1にバイアスされた入力列を処理すれば、そのアルゴリ ズムは入力データを増大させ、データの全長を増大させてしまうことは明らかで ある。例えば、図16の10ビットの入力列の1の補数が暗号化アルゴリズムに よって処理される場合、列TE1$、TE2$、TE3$の長さの合計は15ビットとなる( 150%に増大)。データの増大は圧縮ルーチンと関連する好ましくない特徴で あるため、十分なソフトウェアトラップはそのような状況の発生を防ぐために設 置されなければならない。そのようなトラップは図2のフローチャートのブロッ ク80と提携して以前に説明された。 暗号化及び変換アルゴリズムについて個別に説明したので、この発明の再帰的 な本質の一面を示す、暗号化方法論と変換方法論とを結合した複数のアプリケー ションによるいくつかの方法を以下に示す。任意のデータセットに繰り返し適用 される暗号化/変換アルゴリズム108の能力は、この発明の圧縮方法論が力強 いデータ圧縮”エンジン”を形成することを可能にする。任意のデータセットを 再帰する変換/暗号化アルゴリズム間の相互作用は次に示す例によって最も容易 に理解される。 変換/暗号化アルゴリズム使用時に用いられる再帰的方法論 図3A、5A、5B、10、17A、17Bについて言及すると、ニブルコー ド化法96は、STRING1$、STRING2$、・・・STRING7$を作成する仮定の入力デー タに適用される。この仮定の場合において、STRING4$が大きく0にバイアスされ ているため、その列が変換/暗号化ルーチン98によって処理される理想的な候 補を形成することを想定してみよう。この仮定の列は選ばれ、変換/暗号化ルー チン98を通されて、0が優位なルーチン106を通される。図17A、17B は仮定の入力列STRING4$における変換アルゴリズムの動作を表現している(以下 、変換は表2の0が優位なルーチンと同義語である)。図17の右側の欄から明 らかにされるように、仮定の入力列は64ビットで0に78%強バイアスされて いる。入力列上で作動する0が優位なルーチンは、3つの出力列TC1$、TC2$、TC 3$を作成する。以前に説明したとおり、0が優位なルーチンは圧縮アルゴリズム ではないので、データの全ビット数を減少させない。しかし、そのルーチンは少 なくとも1つは0にバイアスされた列を作成するよう動作する。例においては、 0にバイアスされた列はTC1$であり、95%のバイアスを帯びている。図18に ついて言及すれば、仮定の入力列STRING4$を含む64ビットを処理し、3つの出 力列TC1$、TC2$、TC3$を作成する。 図19、20について言及すれば、TC1$はいくつかの出力列の中で最も高く0 にバイアスされているので、変換/暗号化アルゴリズム108を通るように処理 されるのに3つの列の中で最適なものとなる。アルゴリズム108を通るTC1$の 処理は、図19に示され又図20に解析的に示されている。アルゴリズム108 を通って列を処理するために使用される1つのその方法は、初めに入力列を表4 の暗号アルゴリズムを通して処理し、データ圧縮の成果があるかどうかの判定を する。例えば、暗号化アルゴリズム108を通るTC1$の初めのパスの間で、3つ の列TE111$(長さ10ビット)、TE211$(長さ1ビット)、TE311$(長さ1ビッ ト)が作成される。これはTC1$の全長を8ビットだけ減少させる。長さの減少が 起こらなければ、又はデータの増大が起こったら、データ列TCI$を暗号化(コー ド化)することは有益ではなく、表2の変換アルゴリズムを適用する。1つの可 能な変換/暗号化アルゴリズム108はまず初めに暗号化アルゴリズムを用いて 入力列を処理し、データ圧縮の成果があるかないかを判定する。圧縮の成果がな ければ、列は変換される(0が優位な方法論を使用して)。この特別な方法を” 処理及び判定”方法として呼ぶこととする。”処理及び判定”方法を出力列に適 用し続けることにより、各出力列TE111$、TE211$、TE311$を入力列にして、暗号 化アルゴリズムを通して処理する。図19に開示されるように、TE111$の暗号化 はデータを4ビット縮小させる。列TE211$に暗号図を適用すると、暗号化ルーチ ンは単一ビット列上で動作することがわかり、この”レッグ”の更なる処理を控 える。いくつかの例において、暗号化アルゴリズムの動作は列の増大を引き起こ している。これらの場合は暗号化(コード化)せず、そのレッグの更なる処理を 控える。TE311$は1ビットなので、それに対する更なる処理は控える。 再び、”処理及び判定”方法をTE111$の暗号化により作成された3つの列に適 用すると、TE121$の暗号化はデータを2ビット縮小させる。この特定の暗号化ル ーチンのアプリケーションにおいて、列TE121$はビット数が奇数なので、1ビッ ト(図19参照)の残余ビット(残り)がある。これは、奇数ビット数の列が暗 号化ルーチンか又は変換ルーチンで処理される場合、常に起こる。”処理及び判 定”方法の再帰的な列TC1$への適用において説明した工程を図20に示す。再帰 的な”処理及び判定”方法の列TC1$への適用における最終結果はTC1$を8ビッ トの長さに縮小、又は60%の縮小である。 図18、21について言及すると、TC1$の圧縮時に用いられた方法と同じもの をTC2$に適用する。特に、まず暗号化アルゴリズムは圧縮成果があるかないかを 判定するため適用される。TC2$の例では、32ビットの列TC2$への暗号化ルーチ ンの適用は、圧縮の成果がない(暗号化ルーチンで作成された3つの列の全長さ は入力列の長さと等しい)。従って、TC2$を暗号化せず、変換アルゴリズムを適 用する。前述のように、変換アルゴリズムは圧縮アルゴリズムではなく、出力列 の少なくとも1つが0のバイアスを帯びるようにするツールとして役立つ。列TC 2$の変換は3つの出力列TE112$、TE212$、TE312$を作成する。データ圧縮が可能 かどうかを判別する”処理及び判定”方法を使用して、順番にこれら3つの列は 判定される。初めに、列TE112$は、連結した長さがTE112$の長さと同一な3つの 列に暗号化される。この点では、2つの”変換”が並んで実行される(元の列ST RING4$の変換と列TC2$の変換)。結果としての3つの列は圧縮の成果があるかど うかを判定するために暗号化される。”処理及び判定”方法の手順に従って、初 めに列TE122$の暗号化を試行するが、これは1ビットの増加を生じさせる。列TE 122$の追跡は成果がないと想定し、変換アルゴリズムをその列に適用すると、4 ビットの列を更に圧縮することは不可能なことに気付く。よって、列TE122$を更 に圧縮することは不可能である。 暗号化された列TE122$が暗号化されると(図21参照)、1ビット増加するこ とに気付くことが重要である。盲目的に暗号化アルゴリズムを適用することは、 データの増加を引き起こす可能性がある。列TE212$の分析と列TE312$の分析は図 22、23に各々示される。全ての縮小が合計されると、”処理及び判定”方法 は列TC2$長さの7ビット又は約21%の縮小という結果となる。図24に示すよ うに、”処理及び判定”解析を列TC3$に適用すると、列TC3$の長さにおいて3ビ ットの縮小が得られる(又は25%)。以上のことより、変換/暗号化アルゴリ ズム108が”処理及び判定”方法の形式を取った時、初期の列STRING4$の有力 で総合的な圧縮が得られる。この例において、列STRING4$を22ビット又は34 %近くだけ縮小させることができる。 変換/暗号化アルゴリズム108の実行時に”処理及び判定”方法を用いるこ とは十分なデータ圧縮を作り出すけれども、その方法の実行は、単純ですっきり したプログラミング技術には成り得ない。これは非常に本質的なことである。な ぜなら、”処理及び判定”方法は、各方式の処理での圧縮結果を最適化するよう に設計されているからである。その方法はデータを高速に圧縮するけれども、暗 号化又は変換されたデータを復元する時、全ての分岐において成された判定(す なわち、変換又はコード化するために)は再呼び出しされる。その情報を記録す る技術は容易であるが、それはソフトウェアに望ましくない複雑さを与える。加 えて、各ノードでのその最適化は不必要であると考えられている。なぜなら、圧 縮可能なデータが、変換/暗号化ルーチン98の初めの実行によって圧縮されな いならば、そのデータは次のパスで圧縮ルーチン70(図2参照)によって繰り 返して処理される時、データの次に続くパスの中の1つで処理される。よって、 再帰はこの発明において2つのレベルで発生する。第1のレベルでは、再帰は変 換/暗号化アルゴリズムによって実行される複数の変換/暗号化アプリケーショ ンにおいて発生する。第2のレベルでは、再帰はデータを必要なサイズ以下に縮 小する圧縮ルーチン78の複数のアプリケーションによって、発生する。この見 解によれば、変換/暗号化アルゴリズム108を用いた”処理及び判定”方法は 非最適化方式より優れた圧縮結果を達成するとは考えられていない(”処理及び 判定”方法は高速に結果を出すけれども)。より時間をかければ、簡易化された 変換/暗号化アルゴリズムが使用される。簡易なアルゴリズムを以下に開示する 。 この簡易化した技術を説明することにおいて、図19から図24に図示された 例の説明を再検討することは有益である。これらの図より、最も大きい圧縮成果 が最左方の分岐から集められているということが一般的に観察される。この傾向 はほとんど全てのレベルで観察される。例えば、列TC1$、TC2$、TC3$の中で最も 大きい総合的な圧縮は列TC1$による、60%の縮小だった。TC1$は列STRING4$か ら作成された最も左方の列である。次に、一般的に圧縮/暗号化アルゴリズムに よる圧縮時において、最も右側の列が中心の列よりも成果があることが観察され る。これらの傾向は驚くべきものではない。前述のように、変換ルーチンは可能 な限り0を多く含むTC1$(最も左方の分岐)を”ロード”するように設計されて いる。また、TC2$は50%のバイアス度に近づく傾向にある。最も左方の分岐は 、より多くの0を含む傾向にあるため、暗号化アルゴリズムはこれらの列に対し て最も効果的となる。 この考え方から、1つのより簡易な変換/暗号化アルゴリズムは分析実行時、 最も左方の枝を見る。例えば、変換してコード化する判定を常に実行できるが、 変換後、最も左方の枝だけコード化することもできる。次に、第1の変換をして 、第1の変換の最も左方の枝について第2の変換をした後、暗号化(コード化) をする。しかし、第2の変換の最も左方の枝だけを暗号化することもできる。よ り洗練された方法は、ブロック毎のデータの分析と、その分析に基づいて最適化 された変換/暗号アルゴリズムを判定しデータ分配パターンを選ぶことである。 各最適化されたアルゴリズムはあるワード値を与えられ、そのワード値は入って くるデータの最初のワードとして蓄積される。この目的の為に2ビットのワード を作成することにより、4つの最適化されたアルゴリズムが有益である。3ビッ ト用いることにより、8つの最適化されたアルゴリズムがコード化される。 列STRING5$、STRING6$がSTRING4$に対して示した方法と同様にコード化/変換 アルゴリズムを通ることは明白である。列STRING5$、STRING6$は1より0を多く 含んでいるので、圧縮/暗号化アルゴリズム108が、これらの列の長さの圧縮 に対して成果があることが期待される。ニブル圧縮ルーチン90の1つのパスの 完了により、4つの圧縮されない列(STRING1$、STRING2、$STRING3$、STRING7$ )と3つの圧縮される列(STRING4$、STRING5$、STRING6$)が作成される。圧縮 された列は1連の可変長ビット列の数により表され、その各列は1つ又はそれ以 上の暗号化アルゴリズム及び変換アルゴリズムの適用することによって作成され る。ニブル圧縮ルーチン90の1つのパスで作成される種々の列と列の部分が、 どのようにして後の元の入力列の再構成に使用されるようにパックされるかの一 例を次に示す。 図3A、8、9、25について言及すれば、この例の目的に対して、ニブルコ ード化法96がSTRING4$を(この列のみ)圧縮のために変換/暗号化ルーチン9 8に通したと想定しよう。そして、変換/暗号化ルーチンに通される1つの暗号 化データを単純に処理する非常に簡易な暗号化/変換アルゴリズムを想定しよう 。図25において、暗号化アルゴリズムが32ビットの入力列を処理し、TE1$、 TE2$、TE3$から成る33ビットの出力列を作成している。傍注として、入力列に おいて十分な0のバイアスがなければ、暗号化ルーチンがデータを1ビットだけ 増大させる。マイナスの結果が発生するが、この出力列の圧縮の例は不変であり 、弱まりもしない。 図25において、出力列TE1$の総ビット数(16ビット)が入力列の総ビット 数の1/2となっている。これは入力列が偶数ビット数である限り常に起こる現 象である。入力列が奇数ビット数の場合は残余が生じる。この場合を図26の例 に示す。 TE1$における1の数が列TE2$の総ビット数を決定する。更にTE2$の0の総数が TE3$の総ビット数を決定する。3つの列をTE1$/TE2$/TE3$の順序で連結すると、 元の入力列の長さを知ることにより、それらは容易に互いから分離できる。例え ば、元の入力列が32ビット長であることが既知の場合において、まず初めの3 2ビットを、連結された列から取り出す。これがTE1$の列になる。列TE1$の1の 数を計数(カウント)する。その数から、変数TE2$を形成するために、連結され た列から次に取り出すべきビットの数が決定される。次に、列TE2$における0の 数が計数され、それによりTE3$に割り当てられるビットの数が決定する。この例 により、暗号化ルーチンによって作成された3つの出力列は他の列との関連で特 有に定義されており、それらの列は所定の順番で連結されていて、その結果、元 の入力列の長さを知ることにより、個々に識別され、連結から分離される。従っ て、この発明の暗号化ルーチンは0のバイアスデータの圧縮のための力強いツー ルなだけでなく、連結が容易に解除される出力列を作成する。 暗号化ルーチンが図25の連結された出力列を作成すると、この列を図8の列 のパッケージシーケンスに示されるSTRING4$の代わりとする。従って、図9の復 元木の実行時、STRING4$の0又は1の数が必要になった適当な時点で、コード化 された列STRING4$はその構成要素の列(TE1$、TE2$、TE3$)に分離され、図15 の復元木に従って復元される。これは元の入力列の再構成であり、図9の復元木 はニブルコード化法で用いられた列の連続鎖の復元を実行できる。 図26について言及すれば、第2の例では、第1の例で用いられたものより複 雑なコード化/変換アルゴリズムが用いられる。第2の例では変換ステップを用 い、そして暗号化ステップを用いる。この第2の例を図26を参照して説明する 。 まず初めに、32ビットの入力列を変換ルーチンを使用して処理し、それによ りTC1$、TC2$、TC3$を作成する。TC2$の総ビット数は入力列の総ビット数の1/ 2である。これは入力列が奇数のビット数でなければ、常に起こる状況で、入力 列が奇数のビット数の場合、残余が生じる。列TC2$での1の数を計数することに より、TC3$の総ビット数を得る。更に、列TC2$での0ビットの数はTC1$の総ビッ ト数を直接表す。この例において、TC1$を取得し、暗号化の入力列として使用す る。TC1$は奇数のビット数なので、値が0の残余ビットが生じる。この残余ビッ トは記録され、暗号化アルゴリズムは、通常通りTC1$を暗号化(コード化)し、 残余ビットが存在しないものとして扱うよう実行される。最終的な出力列を図2 6に示す順序で作成すれば、元の32ビットの入力列は図25に示されるものと 類似した技術を用いて容易に再構成される。 定義によって、元の入力列(32ビット)の長さは既知のもので、そのビット 数の1/2を出力列から取り出し、TC2$を生成する。TC2$の1の数は、出力列か ら取り出すTC3$の長さを決定する。TC2$の0の数を計数し、その数を半分に割る ことによって(小数部は除く)、TE1$の総ビット数が決定される。TC1$は奇数の ビット数なので、TE1$に割り当てられた4ビットの後に残余ビットが存在する。 その残余ビットを除去し、列TE1$の最後に連結する。TE1$の1の総数によりTE2$ の総ビット数が決定され、TE1$の0の総数によりTE3$の総ビット数が決定される 。TE1$、TE2$、TE3$はTC1$を再構成するために図15の復元木を用いて結合され 、その後TC2$、TC3$、TC1$は元の入力列を再構成するために、図7の復元木に従 って結合される。 図27A、27B、27C、28について言及すれば、変換/コード化アルゴ リズムの第3の例を説明する。この例では、変換/変換/コード化/コード化技 術が用いられる。種々の変換/コード化ステップが図27Aに示される”ツリー ”ダイアグラムに従って元の入力列に適用される。第1と第2の例を用いて説明 された解析は、この第3の例に適用される解析と同一のものである。変換/変換 /コード化/コード化アルゴリズムのアプリケーションにおいて作成される全て の列及び列の構成要素は、1つの出力列を形成する図28の方法において連結さ れる。元の46ビットの入力列を再構成する時、出力列は以下に示す方法を用い てその構成要素列に分離される。まず初めに、定義により入力列の長さは既知な ので、その入力列の長さの(1/2)×(1/2)(すなわち1/4)と等しい列G 5の長さも既知である。入力列は46ビットなので、列G5は11.5ビットで ある。少数部分を除去するこにより、GS5の長さは11ビットとなる。出力列 から初めの11ビットを取り出し、その中の0を計数することにより、列GGS 4の長さを決定する。処理は以下のように進む。 ・ 列GGS4の1を計数することにより列GGS5の長さを決定する。 ・ 列GGS5の0の数を計数することにより列GGS6の長さを決定する。 ・ 図15の復元木に列GGS4、GGS5、GGS6を適用することにより 、列GGS4を再構成する。 ・ 図11の復元木に列GGS5、GGS6、GGS4を適用することにより 、 列SON2を再構成する。 ・ 列SON2はビット数が奇数なので、終端の残余ビットを取り出す。 ・ SON2の0の数を計数することにより列SON1の長さを決定する。 ・ SON1の長さを1/2に分割することにより列GS2の長さを決定する 。 ・ GS2の1の数を計数することにより列GS3の長さを決定する。 ・ GS2の0の数を計数し、その数を1/2に分割することにより列GGS 1の長さを決定する。 ・ 図15の復元木に従って列GGS1、GGS2、GGS3を結合すること により、列GS1を再構成する。 ・ 図11の復元木に従って列GS1、GS2、GS3を結合することにより 、列SON1を再構成する。 ・ 図11の復元木に従って列SON1、SON2、SON3を結合すること により、元の入力列を再構成する。 次に図3Aについて言及すると、この発明のニブル圧縮方法論90を要約すれ ば、ニブル圧縮方法論90はニブルコード化法96と変換/暗号化ルーチン98 から構成されるという説明がされている。ニブルコード化法は7列のデータを作 成するのに効果的である。その列のいくつかは0にバイアスされている。変換/ 暗号化ルーチン98はニブルコード化法96によって作成され、0にバイアスさ れた列の圧縮に効果的である。種々のコード化技術がニブルコード化法96と変 換/暗号化ルーチン98の両方において使用され、それらによって作成された列 は、隣接する列の長さの情報を持つ。このコード化技術は元の入力データの容易 な記憶、検索、再構成を考慮している。 図2、3Aについて言及すれば、ソースファイルにおける全ての入力データが ニブル圧縮90によって処理された後、出力ファイルは要求されたサイズ以下か どうかを判定するためにチェックが行われる(ステップ78)。ソースファイル を通る1つのパスにおいて十分圧縮が実行されていれば、プログラムは終了する (ステップ88)。しかし、多くのアプリケーションにおいて、データを繰り返 して処理した場合にのみ(ステップ80、82)、十分な圧縮が達せられるとい う場合がある。しかし、複数の再帰を圧縮対象データに適用する場合において、 3つの圧縮ルーチンの内の1つがデータのサイズの更なる縮小においてもはや効 果的でないという点に達する。この時点では、更なる再帰は成果がなく、ある場 合においては、データを増大させてしまうかもしれない(暗号化アルゴリズムが 十分に0で重み付けされていないデータに適用された場合について、以前に説明 したように)。圧縮ルーチン70を更に反復しても成果がない場合、ランダム化 されたデータの圧縮に対して非常に効果のあるルーチン84を用いる。このラン ダム化されたデータの圧縮ルーチン84を次に説明する。 図2、3A,3B,3C,29について言及すると、3つの圧縮ルーチンのど れか1つを用いて複数回反復して処理を行うと、出力ファイル中の1と0の分配 が、高い率でランダム化し始める(すなわち、0と1の分配が、出力ファイルか ら取り出されるどんなサイズのサンプルに対しても50%に近づく)。この時点 において、圧縮ルーチン70はまだ圧縮能力はあるが、効率という点で不利であ る。 図29の圧縮ルーチンは、高率でランダム化されたデータの圧縮に関連した特 有の問題を処理するのに適している。図29について言及すれば、この特有の方 法論の圧縮ルーチンは、高い率でランダム化されたデータを含むソースファイル からデータの初めのブロックの読み込みを行う(ステップ112)。この例のた め、データの1ブロックサイズが100ビットであると仮定しよう。次に、その ブロックの所定の部分における0の数が計数される(ステップ114)。例えば 、100ビットの内の初めの80ビットにおいて発生する0の数を計数する。計 数された0の数と、完全なランダム化(すなわち、50%の0と50%の1)が 成されているという仮定の基に、どの程度の0がブロックの残りの部分に残るか がわかる。これを知ることにより、ルックアップテーブルはコード化され、その 中では存在する可能性がある全てのビットパターンが各々のアドレスに連結され ている。ブロックの残りの部分は除去され、ルックアップテーブルのアドレスが 代わりに配置される(ステップ116)。データの初めの部分とコード化された 部分は蓄積され(ステップ118)、次のブロックがソースファイルから読み込 まれ(ステップ122)、118を通るように処理される(ステップ114)。 ランダム化されたデータの列の圧縮は不可能であることは広く明言されている 。この誤信は、多数のランダム化されたデータセットに対して、可能なビットパ ターンの組み合わせを計算することは困難である事実を根拠にした部分にある。 例えば、100ヶの1と100ヶの0が200ビット長の1ブロック内で分配さ れれば、 200C100 = 9.055 × 1058 の組み合わせが可能である。その数が取り扱いにくいことは明確であり、これが ランダム化されたデータ列は圧縮不可能であると言われる始まりである。この説 明における、この発明の圧縮法の重要な点は、そのような大量のデータを扱わず 、より小さな部分を処理するところにある。ランダム化されたデータの圧縮ルー チン84の一例を図30A、30Bを用いて説明する。 この例において、ブロックサイズは200ビット長とし、ブロック毎にデータ の最後の5%(10ビット)だけ圧縮する。第1段階は初めの190ビットにお いて発生する0の数を計数することである。これを知ることにより、0と1が完 全に均等に分配されていると仮定した場合に、いくつの0が最後の10ビットに 発生するはずであるかを知る。最後の10ビットの内0が9ヶなら、ルックアッ プテーブル1を参照する(30A参照)。ルックアップテーブル1は一意のルッ クアップテーブルアドレスを、可能な各ビットパターンに関連付ける。適切なル ックアップテーブルアドレスが選択され、初めの190ビットに連結される。次 の列全体が蓄積され、次の200ビットの列が読み込まれ、同様に処理される。 初めの190ビットの除去後、残りの10ビットが0が8ヶのビットパターンで あれば、ルックアップテーブル2(30B参照)が、前の190ビットに連結す るアドレスの判定に用いられる。 種々のビットパターンに対するアドレスをコード化するこのルックアップテー ブル技術を用いることによって、10.0ビットから2.0ビットの範囲で変動 するビットセービングが可能である(表5参照)。 セービング(節約量)を増加させるには、非圧縮のブロックの部分114を減 少させ、ステップ116で処理される残りの部分をより大きくする。例えば、1 ブロック200ビットのうちの最後の20ビットを用いれば(最後の10ビット の代わりに)、最悪の場合において必要とされる最大ビット数は 20C10 = 184,755 => 17.6(コード化するために必要なビット) であり、最悪な場合のセービングは 20−17.6 = 2.5ビット である。 図2について言及すれば、ランダム化されたデータ圧縮ルーチン84が全ソー スファイルを1回通った後、圧縮されたデータが要求されたサイズか又はそれ以 下かどうかを判別するためのチェック86が再び成される。条件が満たされてい れば、プログラムは終了する(ステップ88)。条件が満たされていなければ、 データは3つの圧縮ルーチンの1つ70を通るように送り戻されるか、又は圧縮 ルーチン84を通るように送り戻される。データをルーチン70とルーチン84 のどちらに送り返すべきかを判定するために用いることが可能な1つの方法は、 単純にファイルのバイアスを調べることである。ファイルのバイアス率が予め設 定していたレベル以下だった場合、ルーチン84を用いると圧縮効果はより大き くなりやすい。バイアス率が予め設定していたレベル以上だった場合、圧縮ルー チン70がルーチン84より優れた結果を出しやすい。 ランダム化されたデータ圧縮ルーチン84を完全にランダム化されたファイル を用いた場合でだけ説明したが、このルーチンは、各サンプルされたブロックに 1ビットを単純に加えることによって、完全にランダム化されていないファイル にも適用できる。例えば、このビットに1を設定するならば、このブロックは完 全にランダム化されておらず、それゆえルーチン84による処理は不可能である ということを意味する。このビットに0を設定するならば、そのブロックに含ま れるデータをルーチン84により処理することは可能であるということを意味す る。 図31について言及すれば、ランダム化されたデータ圧縮ルーチン84により 圧縮されたデータの伸張(圧縮解凍)において、データの初めのセグメントが読 み出される。次に、非圧縮部分の0の数が計数される(ステップ124、126 )。この数を知ることにより、圧縮された部分を伸張すれば、どれだけの0が表 れる かを計算できる。どれだけの0が伸張される部分の中に存在するかを知ることに より、アドレスはどれくらいの長さか、そして圧縮された部分はどれくらいの長 さかをルックアップテーブル技術を用いて知る(ステップ128)。次に適当な ルックアップテーブルを参照し(ステップ130)、コード化されたデータ部分 を適当なビットパターンに置換する(ステップ132)。このシーケンスはソー スファイルの全内容が処理されるまで(ステップ134)、繰り返される(ステ ップ138)。 図2について言及すれば、ランダム化されたデータ圧縮ルーチン84が高率で 又は完全にランダム化されたデータを圧縮するためにどのように動作するかを説 明した。ファイル及びデータ圧縮を発生させるパス上を通る複数のパスを作成す るために、どのようにルーチン84を用いるかについても説明した。加えて、ラ ンダム化されたデータ圧縮ルーチン84と圧縮ルーチン70間の相互作用が示さ れていて、それはデータを特徴付ける0のバイアスの度合いにかまわず、データ 圧縮に効果的である。 図2、3A、3Bについて言及すれば、すでに説明したとおり、ニブル圧縮9 0は3つの圧縮ルーチンの内の1つでブロック70にて用いられる。次に、デー タ圧縮に使用するためにブロック70で用いられる第2の圧縮ルーチンについて 示す。この第2のルーチンは分配圧縮ルーチンであり、それは図3Bに示される 。 2. 分配圧縮 図3Bについて言及すれば、分配圧縮92はニブル圧縮90(図3A参照)を 用いて示したのと同様な一般的な形式をとる。特に、ニブル圧縮90と同様に、 分配圧縮は2工程の方法を用いる。すなわち、初めの未加工のデータはデータの 複数の列作成のため分配コード化法により処理される。これらの列のいくつかは 圧縮データ作成のため変換/暗号化ルーチン98によって処理される。変換/暗 号化ルーチン98は図3Aを用いて説明した変換/暗号化ルーチン98と同一な ので、これ以上の説明は、以前した説明の繰り返しになる。ルーチン98の説明 を除いた分配コード化法100の詳細な説明を以下に示す。 図32について言及すれば、分配コード化法140は、初めに、ニブル毎に、 入力データを判別することにより、最も頻繁に発生するニブル値を決定する(ス テップ142)。次に、データは予め決められたニブルのセグメントに分離され る(ステップ144)。セグメントの長さはある程度任意であるが、10ニブル から数百ニブルの長さで配置されたセグメントは最も実行可能な傾向にある。初 めのセグメントは検索され、その内容がニブル毎に、そのセグメントのいくつか のニブルが最も頻繁に発生するニブルの値と合致するかどうかについて判別され る(ステップ146)。 図32、33Aについて言及すれば、データの流れは各々が16ニブルを含む 100セグメントから構成されると仮定しよう。また、最も頻繁に発生するニブ ル値が14(すなわち、2進数1110)であることを仮定しよう。各セグメン トは最も頻繁に発生するニブルの発生に関して判別され、最も頻繁に発生するニ ブル値を含むセグメントに対して制御ビットCONT$を1に設定する(図33Aの セグメント2、3、100参照)。セグメントが最も頻繁に発生するニブル値を 含まなければ、CONT$値に0を設定する(図33Aのセグメント1、99参照) 。次に、最も頻繁に発生するニブル値を含む各セグメントに対して、その列の中 のニブル値の配置を変数POS$に記録し、最も頻繁に発生するニブル値は各セグメ ントから取り除かれる。残った”穴”は、各セグメント内において右側のほとん どのニブルを”左方に移す”ことによって埋められる(ステップ160)。表6 から、POS$値はアドレスされ、対応するMPV$値は記録される(図33B)。次に 、列は全MPV$の列のTOTMPV$を形成し、全CONT$の列TOTCONT$を形成する。最も頻 繁に発生するニブル値が発生しないセグメントにおいて、全16ニブル値は0か ら14までの値の範囲でマップされる(ステップ152)。このマッピングは1 5の基本値を用いる従来のパックルーチンの適用を可能とする(パックルーチン の例に関しては定義部を参照)。 分配コード化法により実行された節約を以下に示す。 A. 最も頻繁に発生するニブル値が発生しない列においては、そのセグメン トに含まれる各16ニブルに対して約1.488ビット節約できる。例えば、3 2ニブル長のセグメントについて処理すれば、2.976ビット節約できる。 B. 最も頻繁に発生するニブル値が発生するセグメントにおいては、2つの 違う節約に役立つ。第1には、最も頻繁に発生するニブルの位置より先に発生す る全てのニブルに対して、これらを先に述べた方法でパックすることができる。 この方法でパックすることにより、最も頻繁に発生するニブルより前に発生する 全てのニブルに対して0.093ビット節約される。第2の節約の原因は、表6 にマップされた位置値に示した方法にある。最も頻繁に発生するニブル値は1回 以上発生するので、それらが発生する時、そのセグメントの上位半分の位置で発 生するよりも下位半分の位置で発生する傾向がある。この平均を取ると、0にバ イアスされたマップされた位置値(MPV$)を得られ、位置9から16で見つけら れる0よりも多くの0を位置1から8で得られる。実際この0のバイアスが発生 すれば、それは、圧縮のための変換/暗号化ルーチン98を通るように送られる 完全な候補となる列TOTMPV$に反映される。 C. を列TOTCONT$が変換/暗号化ルーチン98を通るように送ることにより 、第3の節約の原因が示される。任意の均等に分配されたデータにおいて、最も 頻繁に発生するニブル値は列の約64.2%において発生し、列の約35.8% において発生しない。このことは、変換/暗号化ルーチン98を通る候補となる TOTCONT$のバイアスに反映される。 図34について言及すれば、分配圧縮92を用いてセグメント1から100を 処理した後、結果としての列は図34に示される順序に基づいて連結される。出 力列を元のファイルを再構成するために復元する時、復元処理は容易である。ま ず、列MOD(TOTCONT$)及び列MOD(TOTMPV$)は、変換/暗号化ルーチン98により 処理された復元情報を用いてすでに説明された方法で復元される。次に、TOTCON T$にアクセスすることにより、各パックされたブロックの状態を知る。ブロック が最も頻繁に発生するニブル値を含んでいなかったら、単純にその内容をアンパ ックする(アンパック操作の例は定義部のパックルーチン参照)。セグメントが 最も頻繁に発生するニブル値を含んでいたら、最も頻繁に発生するニブル値より 先に発生するバイトをアンパックする。そこで、アンパックされた部分がブロッ クの残りの部分と連結される。分配圧縮92はニブル圧縮が適用されたのと同一 な方法でデータのブロックに連続的に用いられる。このように、ニブル圧縮90 及び分配圧縮92は再帰的であり、それらが適用される時はいつでも、データ圧 縮に対して効果的である。従って、少しだけの縮小が可能な時でさえ、その少し だけの縮小は再帰により拡大される。そこでは、”単一のパス”の圧縮技術を使 用した時に可能な分よりも更に大きい縮小が成される。例えば、0.093ビッ トの縮小でさえも100万回の再帰を実行すれば、93.0キロビットの圧縮と いう結果になる。 図2、3Bについて言及すれば、この部分では、分配圧縮92の処理とそれが どのようにしてデータを圧縮するためにパックルーチン及び変換/暗号化ルーチ ン98を用いて動作するかを説明した。3つの圧縮ルーチンの3番目を次に説明 する。 3. 直接ビット圧縮 図2、3A、3B、3C、35について言及すれば.直接ビット圧縮94はブ ロック70においてニブル圧縮90及び分配圧縮92のように動作する。従って 、ソースファイル上で再帰的(反復的に)に使用できる。ニブル圧縮90及び分 配圧縮92との相違点は、変換/暗号化ルーチン98を使用しないことである。 直接ビット圧縮は圧縮するために単一のアルゴリズムを用いる。このアルゴリ ズムは図35を用いて最も容易に説明される、直接ビットコード化アルゴリズム 95である。ソースファイルは読み込まれ、そのファイルから8ビットのワード が分析される。各特有のワードの値によって、予め決められた値がワード値から 引かれ、バランス値を生成する。例えば、ケース1の範囲にあるワード値は0の 制御ワードが割り当てられる。ケース2の範囲にあるワード値は1の制御ワード が割り当てられる。0のワード値(ケース9)は、10000001の制御ワー ドが割り当てられる。図35に示すように、ケース2から8は、コード化ビット 数と制御ワードのビット数を加えると7になり、ケース1及び9は8となる。ケ ース2から9は分析ビットが割り当てられる。ケース1は分析ビットは必要とし ない。図35の右側の欄は、各ケースについて、コード化ビットの数と制御ワー ドのビットの数と分析ビットの数とを各ケースに対して加えるとケース9を除い ては8になり、ケース9では合計が9になる。 図35、36について言及すると、直接ビットコード化法95を適用する一例 において、入力列がBYTE1からBYTE5の5バイトから構成されると仮定しよう。BY TE1からBYTE5は、図36に示される各値と同等の2進数である。32のワード値 を持つBYTE1はケース3の状態として配列され、そこでは、その32という値か ら32という値が引かれ、0のバランス値と、”11”の制御値と、1の分析ビ ッ トが生じる。同様にして、BYTE2、BYTE3、BYTE4に対するバランス値、制御値、 分析ビットが図35より得られる。次に、バランス出力列(BOUTS$)は、バラン ス値をEB1からEB5の順番に連結することにより、作成される。次に、出力列CW/R OUTS$は、EB1からEB5をその順番で連結し、その後にEB1からEB5の分析ビットを 逆の順番で連結することより、作成される。 元の列STRING$を再構成するための(BOUTS$)と(CW/ROUTS$)のデコードは、 図37の復元木に従って行われる。CW/ROUTS$とBOUTS$の最後に残った列に対し ては、デコードのためには分析ビットは不要である。従って、最後の分析ビット (図36の例ではEB4$に示される)はCW/ROUTS$において元のワード値の再構成 の可能性を失うことなく、除去可能である。よって、ファイルにおけるデータの エントロピーにかかわらず、直接ビットコード化法95を用いてファイルを反復 処理する時毎に、1ビットのセービングが保証されている。 直接ビットコード化に対する1つの方法が図38Aから38Cに示される。初 めに、入力列(STRING$)は、2つの出力列BOUTS$及びCW/ROUTS$を作成するため に直接ビットコード化法により処理される(これは図36に示す例の結果であり 、図38Aに示される再帰レベル”0”の出力を形成する)。連続的な繰り返し 処理において、列BOUTS$は、直接ビットコード化法により処理され、それにより EB$(CW)とEB$(R)による列が連続的に作成される。この処理は残っている列BOUTS $が予め決められたサイズ(32ビットのような)に縮小されるまで、続けられ る。次に、図38Bの4つの列が図のように構成され、図38Cに示すように相 互に連結される。更なる再帰が必要ならば、2番目の再帰カウンタは回数のトラ ックを保持し、38Cでの列は38Aの方法論に戻される。従って、技術に熟練 した者は、適当なカウンタを保持することにより、この発明の直接ビットコード 化法は、入力列のビットパターンに関係なく、入力列を1ビット縮小する効果が あることがわかる。種々のカウンタ及びレジスタを保有していくことは特定の” 損失”が必要だけれども、十分な大きさのファイルに対して、このオーバヘッド は直接ビットコード化法により得られる節約と比較すると無意味である。 直接ビットコード化法において常に入力列から1ビット削り落とすという規則 の例外は、入力バイトが0のワード値を持つ場合だけである。この例においては 、ケース9の状態があり、そこでは、コード化ビットと制御ワードと分析ビット とが加えられ、9ビット長の列となる。この場合において、結合されたCW/ROUTS $及びBOTS$の長さが事実1ビット増加する。この望ましくない結果を取り除くた めに、均等に分配された1024バイトのデータにおいて、3ビットの増加の結 果である4つの”0”ビットが平均して現れる(直接ビットコード化法の適用に より得られた4ビットから、最後のバイト上の分析ビットを除去することにより 節約された1ビットを引く)。しかし、作業領域をを1バイトから2バイトに変 え、図38に示す方法でコード化することにより、”0”ビットの値が発生する 可能性は1/16,777,216となる。更に4バイトの作業領域が選択され ると、”0”ビットの値が発生する可能性は1/4,294,967,296と なる。従って、十分に大きい作業領域を選択することにより、ワード値”0”が 発生する可能性は非常に小さい。ワード値”0”が発生する場合においてさえ、 その再帰での縮小は再帰の連続により更に拡大する。 この発明による圧縮法の好適実施例について説明してきたが、この発明の精神 から離れることなく、この発明を説明するために選択された好適実施例に種々の 変形又は追加を行ってもよい。例えば、圧縮法を説明するために、ここで選択さ れた多数の種々のものが特定の長さを持って選択されている(1ビット、1ニブ ル、1ワード等のような)。多くの例においてこれらのワードのサイズは柔軟性 があり、種々のアルゴリズムの処理に影響することなく、容易に変更できる。従 って、保護を受けようとする主題は、添付のクレームにおいて定義されている内 容を拡張し、それについての全ての等価物を含む。

Claims (1)

  1. 【特許請求の範囲】 1.以下のステップを有し、電気的にコード化された一連のバイナリデータのス トリームから冗長抽出方法、 A) 前記一連のデータからnビットを分析し、 B) nビットの複数の全ての可能な状態に基づいて前記解析したnビットの 状態を決定し、 C) Bステップの結果に基づいて、前記分析したnビットの状態を複数のコ ードの1つに関連付け、 D) ステップCのコードを第1と第2の部分に分解し、 E) 前記第1の部分を第1と第3の位置の少なくとも1つに割り付け、 F) 前記第2の部分を少なくとも第2の位置に割り付ける。 2. 分析している2ビットを含むnビットをパス(通過)することを特徴とす る請求項1に記載の冗長抽出方法。 3. ステップFの割り付けは、さらに、前記第1の部分を前記第1と第3の位 置の少なくとも1つの内容に連結することを含むことを特徴とする請求項1に記 載の冗長抽出方法。 4. ステップFの割り付けは、さらに、前記第2の部分を少なくとも前記第2 の位置の内容に連結することを含むことを特徴とする請求項1に記載の冗長抽出 方法。 5. D) 前記第1、第2及び第3の位置の少なくとも1つの内容を前記一連 のデータに割り付け、前記A乃至Fを繰り返すステップをさらに含むことを特徴 とする請求項1に記載の冗長抽出方法。 6.以下のステップを有し、一連のバイナリデータを構成する方法、 A) 前記一連のデータからnビットを分析し、 B) nビットの複数の可能な状態に基づいて前記解析したnビットの状態を 決定し、 C) Bステップの結果に基づいて、第1、第2、第3の位置の少なくとも1 つおける前記nビットの状態をコード化し、ここで、前記状態のコード化は複数 の可変長コードの生成と、前記複数のコードの少なくとも一部を少なくとも第1 、第2及び第3の部分に分割し、前記コード又は前記コード部分の少なくとも1 つを前記第1、第2及び第3の位置の少なくとも1つに、少なくとも一部におい て前記分析したn−ビットの所望の属性の関数として、割り付ける。 7. 前記nは2であることを特徴とする請求項6に記載の一連のバイナリデー タを構成する方法。 8. 前記所望の特徴は前記nビットの値の集団を含むことを特徴とする請求項 1に記載の一連のバイナリデータを構成する方法。 9. 前記複数のコードからの第1コードを前記分析したnビットの所望の属性 に関連付けるステップをさらに含む、前記第1のコードはn−1ビット長以下で あることを特徴とする請求項6に記載の一連のバイナリデータを構成する方法。 10. D) 前記第1、第2及び第3の位置の少なくとも1つの内容を前記一 連のバイナリデータに割り付け、前記A乃至Fを繰り返すステップをさらに含む ことを特徴とする請求項6に記載の一連のバイナリデータを構成する方法。 11.以下のステップを有し、電気的にコード化された一連のバイナリデータの ストリームから冗長データを抽出して圧縮する方法、 A) 前記一連のデータからnビットを分析し、 B) nビットの複数の可能な状態に基づいて前記解析したnビットの状態を 決定し、 C) コードをBステップで決定された状態に関連付け、 D) ステップCのコードの第1の部分を第1と第3のレジスタのうちの少な くとも1つの内容に連結し、 E) 前記コードの第2の部分を第2のレジスタの内容に連結し、 F) 前記第1、第2、第3のレジスタの少なくとも1つの内容から一度にn ビットを分析し、 G) ステップFで分析したnビットのそれぞれにコードを割付け、前記コー ドの値は前記ステップFで分析したビットパターンに一部分で依存し、 H) 前記コードを複数の部分に分割し、前記部分を前記第1、第2、第3の レジスタの少なくとも2つに割り付ける。 12.以下のステップを有し、電気的にコード化された一連のバイナリデータの ストリームから冗長データを繰り返して抽出して圧縮する方法、 A) 前記一連のデータからnビットを解析し、 B) 望ましいnビットパターンの発生と、望ましくないnビットパターンの 発生を分類し、 C) 望ましいビットパターンの各発生について、第1のコード列を第1と第 2のレジスタの内容に関連付け、 D) 望ましくないビットパターンの各発生について、第2のコード列を第2 のレジスタの内容に関連付け、 E) 第1レジスタの内容を圧縮し、 F) ステップEの圧縮された内容の少なくとも一部を一連のバイナリデータ に割り付け、 G) A乃至Fのステップを繰り返す。 13.以下のステップを有し、電子的装置の使用によりデータを圧縮する方法、 A) データ源からデータを読み出し、 B) 前記データを使用可能なフォーマットに変換し、 C) 前記データを暗号化して、前記データ源から読み出したデータの総量減 量し、 D) 暗号化されたデータを保存し、 E) 保存されたデータを読み出し、前記変換、暗号化、及び保存ステップを 保存データが所望レベルに減少するまで繰り返す。 14. 前記情報の変換は、ビットプリドミナンス法を使用して達成することを 特徴とする請求項13に記載の方法。 15. 前記暗号化は直接ビット操作を含むことを特徴とする請求項13に記載 の方法。 16. 前記暗号化はニブル暗号化を含むことを特徴とする請求項13に記載の 方法。 17. 前記暗号化は分配法を含むことを特徴とする請求項13に記載の方法。 18. 前記分配はパックルーチンを含むことを特徴とする請求項17に記載の 方法。 19. 前記情報は予め圧縮されたデータであることを特徴とする請求項13に 記載の方法。 20.以下のステップを有し、ニブル暗号技術を用いてバイナリデータ列から冗 長を抽出する方法、 A) バイナリデータ列からニブルを分析し、 B) ステップAにおいて分析されたニブルの値に応答し、複数の制御ワード の1つを7つの出力列の少なくとも1つに連結する。 21.以下のステップを有し、分配圧縮法を用いて電気的にコード化されたバイ ナリデータ列からのデータを圧縮する方法、 A) 前記バイナリデータ列を分析して、最も頻繁に発生するニブル値を決定 し、 B) 前記データ列を所定サイズのブロックに分割し、 C) どのブロックが最も頻繁に発生するニブルを含み、どのブロックがそう ではないかを示す第1のコード化されたストリングを生成し、 D) 最も頻繁に発生するニブルを含んでいないブロックに関して、ベース2 56パッキングを用いてその内容を圧縮し、 E) 最も頻繁に発生するニブルを含んでいるブロックに関して、最も頻繁に 発生するニブルが起こる位置を各ブロックについて示す第2のコード化されたス トリングを生成し、 F) 第1と第2のコード化されたストリングを縮小する。 22.以下のステップを有し、直接ビット操作法を用いて電気的にコード化され たバイナリデータ列からのデータを圧縮する方法、 A) 前記バイナリデータ列を複数の入力ワードに分解し、 B) 複数のレンジを定義し、 C) 各ワードが属するレンジを決定し、 D) ステップCで成された各決定について、各ワードをバランス値に変換し 、制御ワードと分析ワードを各バランス値に付加し、バランス値と制御ワードと 分析ワードはそれらに関連する入力ワードの値を個別的に決定する。 23.以下のステップを有し、電気的にコード化され、ランダムに分配したデー タ列を縮小する方法、 A) 前記データ列をランダムに分配したデータの複数のブロックに分解し、 B) 前記ランダムに分配したデータのブロックの1つを選択し、 C) ステップBで選択されたブロックを第1と第2の部分に分解し、 D) ステップBで選択されたブロックの第1の部分内の所定のワードの発生 をカウントし、 E) 前記第2の部分のデータを圧縮する。 24. 前記圧縮はパッキングを使用することを含むことを特徴とする請求項2 3に記載の方法。 25. 前記所定のワードは、値が0の単一のビットセットと値が1の単一のビ ットセットから構成されるセットから選択される、ことを特徴とする請求項23 に記載の方法。 26. 前記第1の部分と前記圧縮された第2の部分を結合し、結合されたデー タに等しいデータ列を設定し、A乃至Eのステップを繰り返す、ことを特徴とす る請求項23に記載の方法。 27.以下のステップを有し、電気的にコード化された入力データの列から、パ ック化及びアンパック化が容易な電気的にコード化されたデータのコード化され た可変長の列を生成する方法、 A) 前記入力データ列をnビットずつ分析し、 B) nビットの複数の全ての可能な状態に基づいて、各分析されるnビット についてステータスワードをコード化し、 C) 前記コードの少なくともいくつかを第1と第2の部分に分解し、 D) 前記コードの第1の部分を第2の保存レジスタにセットし、 E) 前記コードの第2の部分を第1と第3の保存レジスタの少なくとも1つ にセットし、 F) 第2のレジスタにおける第1のワード値の発生数が前記第1のレジスタ の内容の長さを指示するように、ステータスワードのコーデングに使用する値を 選択し、前記第1と第2の部分の配置を選択する。 28. 第2のレジスタにおける第2のワード値の発生数が前記第3のレジスタ の内容の長さを指示するように、ステータスワードのコーデングに使用する値を 選択し、前記第1と第2の部分の配置を選択する、ことを特徴とする請求項27 に記載の方法。 29. 第1のレジスタにおける第2のワード値の発生数が前記第3のレジスタ の内容の長さを指示するように、ステータスワードのコーデングに使用する値を 選択し、前記第1と第2の部分の配置を選択する、ことを特徴とする請求項27 に記載の方法。 30. n=2であることを特徴とする請求項27に記載の方法。 31. 前記コードワードは2ビット長であることを特徴とする請求項27に記 載の方法。 32. 前記第1のワード値は値が0の単一ビットセットと値が1の単一ビット セットからなるセットの中から選択されることを特徴とする請求項27に記載の 方法。 33. 以下の工程を有し、電気的にコード化された一連のデータを容易にパッ クすることができる電気的にコード化されたデータ列に分配する方法、 A) データを少なくとも第1と第2のデータ列に変換し、 B) 前記第1のデータ列を少なくとも第1のコードワードを含むようにコー ド化し、 C) 前記第1の列中の第1のコードワードの発生の数により前記第2のデー タ列の長さを示す。 34. 前記データを少なくとも第1、第2、及び第3のデータ列に変換し、前 記第1の列を少なくとも第1と第2のコードワードを含むようにコード化し、前 記第1の列中の第2のコードワードの発生数により第3のデータ列の長さを示す 、ことを特徴とする請求項33に記載の方法。 35. 前記データを少なくとも第1、第2、及び第3のデータ列に変換し、前 記第2のデータセットを第2のコードワードを含むようにコード化し、前記第2 の列中の第2のコードワードの発生数により第3のデータ列の長さを示す、こと を特徴とする請求項33に記載の方法。 36. 前記第1と第2の列を連結して格納する、ことを特徴とする請求項33 に記載の方法。 37. 前記第1と第2と第3の列を連結して格納する、ことを特徴とする請求 項34に記載の方法。 38. 前記第1と第2と第3の列を連結して格納する、ことを特徴とする請求 項35に記載の方法。
JP6520072A 1993-03-12 1994-02-28 データ圧縮方法 Pending JPH08512438A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/030,741 1993-03-12
US08/030,741 US5533051A (en) 1993-03-12 1993-03-12 Method for data compression
PCT/US1994/002088 WO1994021055A1 (en) 1993-03-12 1994-02-28 Method for data compression

Publications (1)

Publication Number Publication Date
JPH08512438A true JPH08512438A (ja) 1996-12-24

Family

ID=21855771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6520072A Pending JPH08512438A (ja) 1993-03-12 1994-02-28 データ圧縮方法

Country Status (6)

Country Link
US (2) US5533051A (ja)
EP (1) EP0694232A4 (ja)
JP (1) JPH08512438A (ja)
AU (1) AU687041B2 (ja)
CA (1) CA2154575A1 (ja)
WO (1) WO1994021055A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2876548A1 (en) 2013-11-22 2015-05-27 Fujitsu Limited Apparatus and method for generating physical random numbers
JP2019528027A (ja) * 2016-07-29 2019-10-03 フー チャン、カム Chanフレームワーク、chanコーディング及びchanコード

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694126A (en) * 1995-03-20 1997-12-02 Oki Data Corporation Adaptive predictive data compression method and apparatus
US5673209A (en) * 1995-03-29 1997-09-30 International Business Machines Corporation Apparatus and associated method for compressing and decompressing digital data
US5675645A (en) * 1995-04-18 1997-10-07 Ricoh Company, Ltd. Method and apparatus for securing executable programs against copying
US5991340A (en) * 1996-06-25 1999-11-23 Seiko Epson Corporation Method and system for encoding and decoding data using run prediction
US5930399A (en) * 1997-04-03 1999-07-27 Microsoft Corporation Data encoding for a communication channel supporting a subset of the characters to be transmitted
US5818368A (en) * 1997-04-18 1998-10-06 Premier Research, Llc Method and apparatus for lossless digital data compression
JP3580982B2 (ja) * 1997-04-30 2004-10-27 パイオニア株式会社 情報記録方法及び装置
US6128668A (en) * 1997-11-07 2000-10-03 International Business Machines Corporation Selective transformation of multimedia objects
US6512852B1 (en) 1998-03-06 2003-01-28 Divio, Inc. Method and apparatus for concatenating bits of odd-length words
US6614934B1 (en) * 1998-03-06 2003-09-02 Divio, Inc. Method and apparatus for concatenating bits of odd-length words
US6196466B1 (en) * 1998-06-09 2001-03-06 Symbol Technologies, Inc. Data compression method using multiple base number systems
JP4242970B2 (ja) * 1998-07-09 2009-03-25 富士通株式会社 データ圧縮方法及びデータ圧縮装置
US6624761B2 (en) 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6195024B1 (en) 1998-12-11 2001-02-27 Realtime Data, Llc Content independent data compression method and system
US6442680B1 (en) * 1999-01-29 2002-08-27 International Business Machines Corporation Method and system for compressing reduced instruction set computer (RISC) executable code
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US6604158B1 (en) 1999-03-11 2003-08-05 Realtime Data, Llc System and methods for accelerated data storage and retrieval
US6424969B1 (en) * 1999-07-20 2002-07-23 Inmentia, Inc. System and method for organizing data
JP2003529814A (ja) * 1999-07-20 2003-10-07 インメンティア インク データ整理のための方法及びシステム
EP1218841A2 (en) 1999-09-20 2002-07-03 Ethentica, Inc. Electronic commerce with cryptographic authentication
US7391865B2 (en) * 1999-09-20 2008-06-24 Security First Corporation Secure data parser method and system
US20010047473A1 (en) 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US20030191876A1 (en) 2000-02-03 2003-10-09 Fallon James J. Data storewidth accelerator
US7064489B2 (en) * 2000-09-28 2006-06-20 Roke Manor Research Limited Huffman data compression method
US7417568B2 (en) 2000-10-03 2008-08-26 Realtime Data Llc System and method for data feed acceleration and encryption
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US6978047B2 (en) * 2000-11-29 2005-12-20 Etreppid Technologies Llc Method and apparatus for storing digital video content provided from a plurality of cameras
US20020101932A1 (en) * 2000-11-29 2002-08-01 Montgomery Dennis L. Method and apparatus for encoding information using multiple passes and decoding in a single pass
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US6944619B2 (en) 2001-04-12 2005-09-13 Primentia, Inc. System and method for organizing data
US7164369B2 (en) * 2001-06-19 2007-01-16 Sharp Laboratories Of America, Inc. System for improving storage efficiency of digital files
US6961011B2 (en) * 2001-08-27 2005-11-01 Freescale Semiconductor, Inc. Data compression system
US20060098880A1 (en) * 2002-02-22 2006-05-11 Montgomery Dennis L Method and apparatus for storing digital video content provided from a plurality of cameras
US6674908B1 (en) 2002-05-04 2004-01-06 Edward Lasar Aronov Method of compression of binary data with a random number generator
AU2003270672A1 (en) * 2002-09-13 2004-04-30 Edward Aronov Method of data compression
US7479905B2 (en) * 2003-07-28 2009-01-20 International Business Machines Corporation Apparatus, system and method for data compression using irredundant patterns
EP1825412A1 (en) 2004-10-25 2007-08-29 Rick L. Orsini Secure data parser method and system
US20060233262A1 (en) * 2005-04-13 2006-10-19 Nokia Corporation Signaling of bit stream ordering in scalable video coding
US20070073989A1 (en) * 2005-08-31 2007-03-29 Interdigital Technology Corporation Method and apparatus for efficient data storage and management
CN101278570B (zh) 2005-09-29 2013-02-13 讯宝科技公司 Rfid标签通信的截断、压缩和加密
BRPI0618725A2 (pt) 2005-11-18 2011-09-06 Rick L Orsini método analisador de dados seguro e sistema
JP4256397B2 (ja) * 2006-02-17 2009-04-22 誠 後藤 ファイル格納装置
NZ549548A (en) * 2006-08-31 2009-04-30 Arc Innovations Ltd Managing supply of a utility to a customer premises
CN101569132B (zh) 2006-11-07 2013-04-17 安全第一公司 用于分发数据和保护数据安全的系统和方法
CN101689230A (zh) 2006-12-05 2010-03-31 安全第一公司 改进的磁带备份方法
US20080181397A1 (en) * 2007-01-25 2008-07-31 John Wilson Dorminy Secure data transmission and storage using limited-domain functions
US7511640B2 (en) * 2007-01-31 2009-03-31 Telefonaktiebolaget Lm Ericsson (Publ) Digital compression of binary data blocks
US20080259891A1 (en) * 2007-04-17 2008-10-23 Telefonaktiebolaget Lm Ericsson (Publ) Multiple packet source acknowledgement
US8200959B2 (en) 2007-06-28 2012-06-12 Cisco Technology, Inc. Verifying cryptographic identity during media session initialization
US8417942B2 (en) * 2007-08-31 2013-04-09 Cisco Technology, Inc. System and method for identifying encrypted conference media traffic
BRPI0816772A2 (pt) 2007-09-14 2015-03-24 Security First Corp Sistemas e métodos para controlar chaves criptográficas
US8837598B2 (en) * 2007-12-28 2014-09-16 Cisco Technology, Inc. System and method for securely transmitting video over a network
US20090169001A1 (en) * 2007-12-28 2009-07-02 Cisco Technology, Inc. System and Method for Encryption and Secure Transmission of Compressed Media
CN101939946B (zh) 2008-01-07 2013-04-24 安全第一公司 使用多因素或密钥式分散对数据进行保护的系统和方法
CA2716335A1 (en) 2008-02-22 2009-08-27 Stephen C. Bono Systems and methods for secure workgroup management and communication
US7852240B2 (en) * 2009-05-01 2010-12-14 Mark Ellery Ogram Variable length encryption
BRPI1013062A2 (pt) 2009-05-19 2016-04-05 Security First Corp sistemas e métodos para proteger dados na nuvem
ES2620962T3 (es) 2009-11-25 2017-06-30 Security First Corporation Sistemas y procedimientos para asegurar datos en movimiento
US8825675B2 (en) * 2010-03-05 2014-09-02 Starcounter Ab Systems and methods for representing text
AU2011235075B2 (en) 2010-03-31 2015-10-01 Security First Corp. Systems and methods for securing data in motion
CN103238305A (zh) 2010-05-28 2013-08-07 安全第一公司 用于安全数据储存的加速器系统
EP2651072A3 (en) 2010-09-20 2013-10-23 Security First Corp. Systems and methods for secure data sharing
US8779950B2 (en) 2012-03-05 2014-07-15 Dcba, Llc Command encoded data compression
US9020262B2 (en) * 2012-07-31 2015-04-28 Hewlett-Packard Development Company, L.P. Symbol compression using conditional entropy estimation
EP2956887A1 (en) 2013-02-13 2015-12-23 Security First Corp. Systems and methods for a cryptographic file system layer
GB201410028D0 (en) * 2014-06-05 2014-07-16 Soletanche Freyssinet Sas Spectral data compression
US9467199B1 (en) * 2014-06-25 2016-10-11 Altera Corporation Compression using mu-law approximation
US10031679B2 (en) 2014-11-21 2018-07-24 Security First Corp. Gateway for cloud-based secure storage
CN105512305B (zh) * 2015-12-14 2019-04-26 北京奇虎科技有限公司 一种基于序列化的文档压缩、文档解压方法和装置
CN105335531B (zh) * 2015-12-14 2019-06-04 北京奇虎科技有限公司 一种文档的压缩、解压方法和装置
AU2016231504B2 (en) * 2016-09-20 2021-10-21 Ainsworth Game Technology Limited Method and System of Verifying a File for use in a Gaming Machine
US10498865B2 (en) * 2017-12-12 2019-12-03 Intel Corporation Security-oriented compression
WO2021101555A1 (en) * 2019-11-21 2021-05-27 Halliburton Energy Services, Inc. Downhole adaptive data compression and formatting

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3694813A (en) * 1970-10-30 1972-09-26 Ibm Method of achieving data compaction utilizing variable-length dependent coding techniques
US4369463A (en) * 1981-06-04 1983-01-18 International Business Machines Corporation Gray scale image data compression with code words a function of image history
US4560976A (en) * 1981-10-15 1985-12-24 Codex Corporation Data compression
US4597057A (en) * 1981-12-31 1986-06-24 System Development Corporation System for compressed storage of 8-bit ASCII bytes using coded strings of 4 bit nibbles
US4748577A (en) * 1982-02-02 1988-05-31 Motorola, Inc. Logarithmic data compression
US4545032A (en) * 1982-03-08 1985-10-01 Iodata, Inc. Method and apparatus for character code compression and expansion
US4491934A (en) * 1982-05-12 1985-01-01 Heinz Karl E Data compression process
US4546342A (en) * 1983-12-14 1985-10-08 Digital Recording Research Limited Partnership Data compression method and apparatus
SE8307228D0 (sv) * 1983-12-30 1983-12-30 Grundstenen 16808 Ab Datakomprimering
US4633490A (en) * 1984-03-15 1986-12-30 International Business Machines Corporation Symmetrical optimized adaptive data compression/transfer/decompression system
US4796003A (en) * 1984-06-28 1989-01-03 American Telephone And Telegraph Company Data compaction
US4672539A (en) * 1985-04-17 1987-06-09 International Business Machines Corp. File compressor
GB8512727D0 (en) * 1985-05-20 1985-06-26 Vickers Plc Optical metrology
US4652856A (en) * 1986-02-04 1987-03-24 International Business Machines Corporation Multiplication-free multi-alphabet arithmetic code
US4749983A (en) * 1986-04-29 1988-06-07 International Business Machines Corporation Compression of multilevel signals
US4905297A (en) * 1986-09-15 1990-02-27 International Business Machines Corporation Arithmetic coding encoder and decoder system
US4935882A (en) * 1986-09-15 1990-06-19 International Business Machines Corporation Probability adaptation for arithmetic coders
US4881075A (en) * 1987-10-15 1989-11-14 Digital Equipment Corporation Method and apparatus for adaptive data compression
US4868570A (en) * 1988-01-15 1989-09-19 Arthur D. Little, Inc. Method and system for storing and retrieving compressed data
US4906991A (en) * 1988-04-29 1990-03-06 Xerox Corporation Textual substitution data compression with finite length search windows
US5043728A (en) * 1988-11-02 1991-08-27 Canon Kabushiki Kaisha Predictive coding device and predictive decoding device
US5025258A (en) * 1989-06-01 1991-06-18 At&T Bell Laboratories Adaptive probability estimator for entropy encoding/decoding
US4955066A (en) * 1989-10-13 1990-09-04 Microsoft Corporation Compressing and decompressing text files
US4973961A (en) * 1990-02-12 1990-11-27 At&T Bell Laboratories Method and apparatus for carry-over control in arithmetic entropy coding
US5051745A (en) * 1990-08-21 1991-09-24 Pkware, Inc. String searcher, and compressor using same
US5325091A (en) * 1992-08-13 1994-06-28 Xerox Corporation Text-compression technique using frequency-ordered array of word-number mappers
US5379355A (en) * 1992-08-24 1995-01-03 Ricoh Corporation Data encoding using one or more adaptive decision trees

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2876548A1 (en) 2013-11-22 2015-05-27 Fujitsu Limited Apparatus and method for generating physical random numbers
US9772819B2 (en) 2013-11-22 2017-09-26 Fujitsu Limited Apparatus and method for generating physical random numbers
JP2019528027A (ja) * 2016-07-29 2019-10-03 フー チャン、カム Chanフレームワーク、chanコーディング及びchanコード

Also Published As

Publication number Publication date
AU6354294A (en) 1994-09-26
US5703907A (en) 1997-12-30
AU687041B2 (en) 1998-02-19
EP0694232A4 (en) 2000-09-20
EP0694232A1 (en) 1996-01-31
CA2154575A1 (en) 1994-09-15
WO1994021055A1 (en) 1994-09-15
US5533051A (en) 1996-07-02

Similar Documents

Publication Publication Date Title
JPH08512438A (ja) データ圧縮方法
Nelson et al. The data compression book 2nd edition
JP3278297B2 (ja) データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
AU637826B2 (en) Improved data compression apparatus
JP3778087B2 (ja) データ符号化装置及びデータ復号装置
Dandalis et al. Configuration compression for FPGA-based embedded systems
US6385617B1 (en) Method and apparatus for creating and manipulating a compressed binary decision diagram in a data processing system
JP3397431B2 (ja) データ圧縮方法および装置ならびにデータ復元方法および装置
US6304676B1 (en) Apparatus and method for successively refined competitive compression with redundant decompression
JP5656593B2 (ja) 符号化データを復号する装置及び方法
JP3241788B2 (ja) データ圧縮方式
JP4758494B2 (ja) ビット長を符号に変換する回路及び方法
Konecki et al. Efficiency of lossless data compression
JP3127016B2 (ja) データ圧縮及び復元方法
JP2005521324A (ja) 損失のないデータの圧縮および圧縮解除方法および装置
Niemi et al. Burrows‐Wheeler post‐transformation with effective clustering and interpolative coding
JP3241787B2 (ja) データ圧縮方式
Cannane et al. A compression scheme for large databases
JPH01314430A (ja) 可変ビット長コード語のビット長通信方法
JP3425143B2 (ja) データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
Rani et al. An Enhanced Text Compression System Based on ASCII Values and Huffman Coding
Pannirselvam et al. A Comparative Analysis on Different Techniques in Text Compression
Nithya et al. The Study of Text Compression Algorithms and their Efficiencies Under Different Types of Files
Nahar et al. Data Compression Methods and Analysis
FI115937B (fi) Häviötön datan tiivistäminen ja purkaminen