(57)【特許請求の範囲】
【請求項１】
既圧縮デジタルファイルを圧縮する方法において、
（ａ）最初のステップとして、１以上のデータタイプの圧縮されたデータを含む入力データストリームを受け取るステップと、
（ｂ）データタイプ選択器によって実行されて各データタイプを識別するステップと、
（ｃ）複数の圧縮手法から、ステップ（ｂ）において識別された各データタイプに最適化された少なくとも１つの圧縮手法を選択し、この圧縮手法が入力データストリームに元々用いられた圧縮アルゴリズムとは異なる他のアルゴリズムを用いた圧縮手法であって、このステップ（ｃ）が、各データタイプをそのデータタイプ内のデータフォークおよびリソースフォークに存するテキスト、バイナリ、ＪＰＥＧおよび／または画像のうちの少なくとも一つを特定するコアデータユニットに分解するステップを含み、
（ｄ）入力データを完全にまたは部分的に伸張するステップと、
（ｅ）ステップ（ｄ）に続いて、伸張されたデータを、ステップ（ｃ）で選択された前記圧縮手法を用いて再圧縮するステップと、
（ｆ）再圧縮されたデータを出力に送るステップと、
を含むことを特徴とする方法。
【請求項２】
請求項１記載の方法において、ステップ（ｄ）で伸張された各データタイプを圧縮するのに用いた前記選択された圧縮手法をエンコードするステップ、を更に含む方法。
【請求項３】
請求項２記載の方法において、
（ｇ）請求項１に記載のステップ（ｆ）で送り出された圧縮データを伸張するステップを更に含む方法。
【請求項４】
請求項３記載の方法において、ステップ（ｇ）は
（i）ステップ（ｆ）からの出力からなるデータ入力ストリームを受け取ること、
（ii）データ入力ストリームから、ステップ（ｄ）においてデータを圧縮するのに用いた圧縮手法のタイプを読みとること、
（iii）適切な伸張器を用いてデータを伸張すること、
を含む方法。
【請求項５】
請求項１記載の方法において、データタイプ選択についての情報を出力に送るステップを更に有する方法。
【請求項６】
請求項１記載の方法において、ステップ（ｃ）は選択に基づく圧縮器呼出器によって実行され、選択に基づく圧縮器呼出器は入力データユニットから分解されたコアデータユニットを、そのタイプのデータに最適な圧縮器に送る方法。
【請求項７】
請求項１記載の方法において、ステップ（ｅ）は１以上の最適な圧縮器によって実行され、該圧縮器は少なくとも画像圧縮器および／またはテキスト圧縮器および／またはマシンコード圧縮器および／またはテーブル圧縮器および／または汎用圧縮器および／またはこれらのいくつかの組み合わせからなる方法。
【請求項８】
請求項１記載の方法において、ステップ（ａ）は入力ＪＰＥＧファイルを受け取ることを含み、ステップ（ｄ）はＪＰＥＧファイルを量子化されたブロックが復元されるまで伸張することを含み、ステップ（ｅ）は量子化されたブロックをＪＰＥＧブロックプロセッサを用いて圧縮することを含む方法。
【請求項９】
請求項８記載の方法において、
前記ステップ（ａ）から前記ステップ（ｄ）を経た出力を受信する画像データ圧縮器を用いて、
画像の終端に達したか否かを判定し、
画像の終端に達したときはそれ以上の圧縮を施さないで、画像の終端に達しないときは元々用いられた圧縮アルゴリズムと異なる他のアルゴリズムを用いて画像データを圧縮し、
圧縮されたブロックを出力に送ることと、
を更に含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してデータの圧縮および伸張、ファイルのアーカイブ化およびストリーミング圧縮に関する。本発明は特に、既圧縮のデジタルファイルをロスレス圧縮および伸張するシステムおよび方法に関するものであり、このシステムは圧縮JPEGファイルや、PDFファイル等の複数のファイルタイプを含むある種の複合ファイルに特に適している。
【背景技術】
【０００２】
ファイルをバックアップあるいは送信するために、データ圧縮あるいはエンコード方式を用いてファイルサイズを縮小することは当該分野においてよく知られている。圧縮されるデータおよびファイルには多くのものがある、即ちＳＩＴ、ＺＩＰ、ＧＺＩＰなどの標準的なアーカイブ形式や、更には公知のＧＩＦやＪＰＥＧ形式（その他にも多数あるが）の画像や、ＭＰＥＧ形式のビデオ、ＭＰ３その他の形式の音声等々である。更に、多くの種類のファイルには圧縮された画像が埋め込まれる。その例としてはＰＤＦファイル、ワード文書などがある。
【０００３】
最適ではない手法を用いて圧縮されたファイルやデータストリームが、保存用途および通信用途の両方において既存データの大部分を占めている。（ここでは「ファイル」および「データストリーム」はデータ要素の識別された一団(set)を指す用語として交換可能に用いられ、これは分離した形態を含むいくつかの形態において存在する場合もあり、他のファイルと結合されあるいは他のファイルと共に保存される場合もあり、またファイルまたはオブジェクトとして、あるいは他のファイルを含むファイルとしてあるいはデータチャンネル上で送信される情報を含む特定サイズあるいは不定サイズのデータストリームとして他のファイルに埋め込まれている場合もある。）圧縮ファイルは大きいファイルであることが多く、大量保存密度が増大し、またコンピュータプロセッサの速度および遠隔通信システムの性能が大きく向上したとはいえ、圧縮技術は未だなお容量および通信帯域の問題に十分な解決を与えてはいない。圧縮技術の開発者は、膨大な量のデータを用いるウェブベースのマルチメディアアプリケーションの急速な発展に対応することを、いまや強く求められている。従って、既圧縮ファイルを更に圧縮することには有用性がある。そしてそのような更なる圧縮はロスレス圧縮であることが望ましい。
【０００４】
既圧縮データを有意に圧縮することは一般的に「不可能」と考えられている。より正確には、既圧縮データを圧縮することは実用的ではないと考えられている、と言うべきである。とは言え、実のところ既圧縮ファイルを圧縮する試みの殆どはまったくの失敗に終わり、実際にはファイルサイズが増加してしまっている。ＪＰＥＧファイルの圧縮も試みられてはいるが、現状の圧縮アルゴリズムをＪＰＥＧファイルに適用した場合、およそ１〜２％改善がなされるに過ぎない。
【０００５】
ＪＰＥＧは、第１に、広く受け入れられている標準であること、第２に、典型的なＪＰＥＧファイルの全体的サイズ、第３に、ＪＰＥＧデータストリームが本質的にランダムなバイトシリーズであるため既存の一般的圧縮アルゴリズムではＪＰＥＧファイルを圧縮出来ないこと、により更なる圧縮を施す候補として検討するのに有用な事例となる。更に加えて、デジタルカメラおよびデジタル電話の登場および世界的な導入によりＪＰＥＧファイルはますます流行している。現在のところ、ＪＰＥＧはあらゆる面で、継続的にかつ実質的に制約無く発展して行く徴候を示している。
【０００６】
ＪＰＥＧは、本来的に階調が連続的な静止画像用に開発されたロスを伴う圧縮手法である。デジタル静止画像の大部分は現在ＪＰＥＧ圧縮技術を用いて圧縮された後、ＪＰＥＧ形式にて保存されている。ＪＰＥＧ技術はクロミナンスに対して人間の視覚的感度に限界があることを利用した技術であり、画質を犠牲にすることなくクロミナンス情報のかなりの部分を捨てている。ＪＰＥＧスタンダードには数多くの圧縮オプションがあるが、その一つでは、いくつかの他の圧縮手法を施す前にクロミナンス情報の４分の３（３／４）を排除している。これは非常に単純なタイプの非関連性低減（irrelevancy reduction）である。これだけで圧縮すべきファイルのサイズが半分になり、かつ人間の視覚系では例えこれに気づいたとしても、殆ど目立たない。つまり情報ロスによる劣化は多くの観察者にとっては許容されうるものであり、知覚されることもない。ＪＰＥＧスタンダードにおける別のロスを伴う圧縮方法は、順に、色空間変換、ダウンサンプリング、離散コサイン変換、量子化、エントロピー符号化を要する。多くのＪＰＥＧオプションは圧縮率の異なる多くの冗長度削減圧縮手法を用いており、一連の圧縮率により、より小さな、しかしより劣化したファイルとなる。しかしＪＰＥＧ圧縮を施した後でもなお、ファイルの大きさがデータ通信システムやコンピュータプロセッサに負担となる場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従って本発明は、諸ファイルタイプ中、就中ＪＰＥＧファイルをロスレスで圧縮・伸張するデータ圧縮システムおよび方法を提供するものである。ここで強調しておかなければならないことは、ＪＰＥＧ自体はロスを伴う圧縮技術であるが、本発明のＪＰＥＧファイルの圧縮方法はロスレスであるということである。本発明を適用した場合、ＪＰＥＧによって生じたロス以外にはロスは生じない。
【０００８】
更に本発明は、ファイルをそのコアデータタイプに分解し、コアデータタイプを識別しかつ体系化し、特定のタイプに最適な圧縮器を選択し、その後それらタイプを別々のデータストリームに圧縮することにより、幅広い既圧縮ファイルを圧縮する手段を提供する。
【課題を解決するための手段】
【０００９】
本発明は既圧縮ファイルを圧縮するシステムおよび方法である。このシステムおよび方法は、ＪＰＥＧファイルに適用するとき、以下の方法ステップを採用している。
（ａ）エンコーディング：ファイルは量子化されたブロックが復元されるところまで部分的に伸張される。
（ｂ）量子化されたブロックの圧縮、
（ｃ）以下を含む２つのステップによるデコーディング、即ち
（１）量子化されたブロックの伸張、および
（２）元の圧縮器において用いられた方法を用いての、量子化されたブロックの圧縮。
【００１０】
ＪＰＥＧファイルの圧縮の場合、量子化されたブロックの圧縮の仕方は新規であり、ＪＰＥＧがブロックを圧縮する仕方とは無関係であり、完全なロスレス圧縮であって、はるかに良好な結果をもたらすことに注意されたい。
【００１１】
従って本発明の目的は、既圧縮デジタルファイルをロスレス圧縮する新規の改良されたシステムおよび方法を提供することである。
【００１２】
本発明の別の目的は、ＪＰＥＧファイルを圧縮する新規の改良された方法を提供することである。
【００１３】
本発明のまた別の目的は、ファイルを完全にまたは部分的に伸張し、ファイルをそのコアデータタイプに分離し、次いで個々の識別されたデータタイプに対して、元々用いられたタイプのものより優れた圧縮方法があればそれを適用することにより、既圧縮ファイルを圧縮する新規の改良された方法を提供することである。
【００１４】
本発明の更に別の目的は、複数の圧縮手法を用い、ファイルの圧縮されたユニット各々に、そのデータタイプに最適化された圧縮手法を適用して、既圧縮ファイルの圧縮を改善する方法を提供することである。
【００１５】
本発明の更なる目的は、ソリッドモード圧縮を用いて既圧縮ファイルの圧縮を改善する方法を提供することである。
【００１６】
本発明の別の目的は、異種混成の（heterogeneous）データを、同質の（homogeneous）ブロックへと分解し、各同質のブロックを、元々用いられた圧縮器よりも優れた圧縮器により別々のデータストリームとして圧縮することにより、既圧縮ファイルの圧縮を改善する方法を提供することである。
【００１７】
本発明のまた別の目的は、ロスを伴う手法およびロスレスの手法の組み合わせにより圧縮されたオーディオ、ビデオおよび画像ファイルを、そのロスレス部分を伸張し、より優れたロスレス手法により再圧縮することにより圧縮する方法を提供することである。
【００１８】
本発明の更に別の目的は、ＪＰＥＧファイルを、ＤＣＴ処理後の量子化されたブロックが復元されるまで部分的なＪＰＥＧ伸張を行い、次いでこれらブロックをより優れたロスレス圧縮手法を用いて圧縮することにより、ロスレス圧縮する方法を提供することである。
【００１９】
本発明の別の目的は、Ｉ−フレームの完全なあるいは部分的な伸張を行い、それらをより高度な方法を用いて再圧縮することにより、ビデオファイルをロスレス圧縮する方法を提供することである。
【００２０】
本発明の更なる目的は、ＪＰＥＧのＤＣ値を、隣接ブロック内の値に基づく複数の予測器（predictors）を用いて圧縮する方法を提供することである。
【００２１】
本発明の別の目的は、コンテキストに基づく圧縮を用いて、ＪＰＥＧのＤＣ値予測残差（JPEG DC value prediction residue）を圧縮する方法を提供することである。
【００２２】
本発明の更なる目的は、コンテキストに基づく圧縮を用いて、ＪＰＥＧのＡＣ値を圧縮する方法を提供することである。
【００２３】
本発明の別の目的は、ＪＰＥＧのＡＣ値の圧縮を、それらのゼロ／非ゼロ状態を別々に符号化することにより改良する方法を提供することである。
【００２４】
本発明の別も目的は、ＪＰＥＧのＡＣ値の圧縮を、符号を別に圧縮することにより改良することである。
【００２５】
本発明のまた別の目的は、ＪＰＥＧのＡＣ値の符号をコンテキストに基づく圧縮を用いて圧縮する方法を提供することである。
【００２６】
また別の目的は、ＪＰＥＧのＡＣ値の符号の圧縮を、コンテキストの一部としての予測器を用いて改良する方法を提供することである。
【００２７】
構成および方法の動作に関して、本発明を特徴づける他の新規な特徴、および本発明のその他の目的および利点は、本発明の好適な実施形態を例示として図示する添付図面と共に以下の説明を考察することにより、よりよく理解されるであろう。しかしながら、図面は例示と説明のためだけのものであり、本発明の限定を定義することを意図したものではないことを、はっきりと理解されたい。本発明を特徴づける様々な新規の特徴は、本開示の一部を構成する添付の請求の範囲に特に示されている。本発明はこれら特徴のどれか１つに存するものではなく、記載された機能を果たすそれら構成すべての特定の組み合わせに存するものである。
【００２８】
即ち、ここまでは、以下の詳細な説明がよりよく理解されるように、そして当該技術分野への貢献がよりよく評価されるように、本発明のより重要な特徴を広く概括したものである。もちろん、本発明の更なる特徴も、以下に説明され、それは添付の請求の範囲の更なる内容を構成する。当業者であれば、本開示の基礎となる思想を、本発明のいくつかの目的を達成するための他の構造、方法、システムの設計の基礎として容易に利用することができることを理解するだろう。従って、請求の範囲は、本発明の精神および範囲を逸脱しない限りにおいて、そのような均等な構成を含むものとして解釈することが重要である。
【００２９】
また、要約書の目的は、広く米国特許商標庁および公衆、特に特許あるいは法律用語あるいは法律的表現になじみのない科学者や技術者や実務家が、本願の技術的開示の本性・本質を略式に閲覧することにより、速やかに知ることができるようにすることである。要約書は本願発明を定義することを意図したものではなく（本願発明は請求の範囲によって判断されるものである）、いかなる意味においても本発明の範囲を限定することを意図したものでもない。
【００３０】
以下の詳細な説明を考慮することにより、本発明のよりよい理解が得られ、以上に述べた目的以外の目的が明らかとなる。説明は添付図面を参照しておこなう。
【図面の簡単な説明】
【００３１】
【図１】本発明の既圧縮ファイルを圧縮する概括的機能要素を示す概略的流れ図である。
【図２】画像データ圧縮器の処理ステップを示す概略的流れ図である。
【図３】ＪＰＥＧブロック圧縮器の処理ステップを示す概略的流れ図である。
【図４】ＤＣエンコーダの構成を示す概略的流れ図である。
【図５】ＡＣエンコーダの構成を示す概略的流れ図である。
【図６】オーディオ／画像再圧縮の処理ステップを示す概略的流れ図である。
【図７】ビデオ再圧縮処理ステップを示す図である。
【図８】本発明で用いる、タイプに合わせた圧縮を示す概略的流れ図である。
【図９】ブロックモードによりｐｄｆファイルを圧縮するための処理ステップを示す詳細図である。
【図９Ａ】ブロックモードによりｐｄｆファイルを圧縮するための処理ステップを示す詳細図である。
【図９Ｂ】ブロックモードによりｐｄｆファイルを圧縮するための処理ステップを示す詳細図である。
【図９Ｃ】ブロックモードによりｐｄｆファイルを圧縮するための処理ステップを示す詳細図である。
【図９Ｄ】ブロックモードによりｐｄｆファイルを圧縮するための処理ステップを示す詳細図である。
【発明を実施するための形態】
【００３２】
定義：ここでは「ファイル」という語は機械により読み取り可能な形態で保存されたデータ要素の命名された一団を意味し、これは分離した形態を含むいくつかの形態において存在する場合もあり、他のファイルと結合されあるいは他のファイルと共に保存される場合もあり、またファイルまたはオブジェクトとして、あるいは他のファイルを含むファイルとしてあるいはデータチャンネル上で送信される情報を含む特定サイズのデータストリームとして他のファイルに埋め込まれている場合もある。
【００３３】
また、ここで「ＪＰＥＧ」とはＪＰＥＧ、ＪＦＩＦ、ＥｘｉｆＪＰＥＧ、ＥＸＩＦその他のＪＰＥＧベースのファイル形式を含むＪＰＥＧ形式のうちのいずれかを意味する。
【００３４】
図１乃至９は、概括的に１００で示す既圧縮ファイルをロスレス圧縮する新規の改良されたシステムおよび方法を図示している。ＪＰＥＧファイルを例にとって、特に図１を参照すると、本方法は、まず入力データ１１０を受け取り、ヘッダデータを将来の利用のために保存する１２０。ヘッダデータは一般的圧縮器１４０にて圧縮される（１３０）。ＪＰＥＧブロックは量子化されたブロックが復元（再構成）されるまで部分的に伸張される（１５０）。次に、量子化されたブロックは画像データ圧縮器１６０で圧縮され、データ出力ストリーム１７０に送られる。
【００３５】
図２を参照すると、画像データプロセッサ１６０はすべての処理ステップを以下のようにループで進行する。ＪＰＥＧブロックの伸張からの画像入力データ１８０を受け取り、画像データの終端に到達したか否かを判定する（１９０）。画像の終端に達していれば（１９０ａ）、それ以上の圧縮を行わずに当該ブロックを保存する（２００）。終端に到達していない場合（１９０ｂ）は、ＪＰＥＧブロック圧縮器２１０が当初用いられた圧縮器より積極的で優良な（aggressive and superior）圧縮アルゴリズムを用いて当該ブロックを圧縮し、その後圧縮されたブロックは出力ストリームに送られる（２２０）。
【００３６】
図３を参照すると、画像データ圧縮器のＪＰＥＧブロック圧縮器２１０はまずブロックをコピー可能かどうかを判定する（２３０）。可能である場合、ブロックはブロックコピー器（block copier）２４０によってコピーされ、出力２５０に送られる。コピー可能ではない場合、ブロックはブロックプロセッサ２１０ａにて処理される。ブロックプロセッサ２１０ａは完全に予測可能なモデルを用いたＤＣエンコーダ２７０によりＤＣ係数２６０を圧縮し、ＡＣエンコーダ２９０によりＡＣ値２８０を圧縮する。
【００３７】
図４を参照すると、隣接ブロックから導かれた予測器（予測子）（predictors）に基づく計算により、ＤＣ値を予測し（３００）、予測された値３１０をＤＣ係数（入力）２６０から減算してＤＣ残差（DC residue）（予測誤差）３３０を導出する（３２０）。ＤＣ残差３３０はコンテキスト（前後関係）基づくモデルを用いたＤＣ残差エンコーダ３４０によって圧縮され、その後出力ストリーム３５０に送られる。
【００３８】
ここで図５を参照すると、ＡＣ値を以下のように圧縮する。まず、特殊「ゼロ／非ゼロ」圧縮器（special “zero/non-zero” compressor）３６０により、ＡＣ値を識別し、ゼロまたは非ゼロ値のいずれかに符号化する。値がゼロであるときは（３７０）、ＡＣ値はすでにエンコードされているので、出力３８０に送られる。ゼロでないＡＣ値３９０については、絶対値エンコーダ４００により絶対値がエンコードされる。絶対値エンコーダ４００は３つの別個の圧縮器からなり、その１つは最上行（top row）の値用であり、１つは左列（left column）の値用であり、１つはそれ以外の値用である。続いてＡＣ値の符号を符号エンコーダ４１０によりエンコードし、その結果は出力３８０に送られる。
【００３９】
圧縮されたファイルのデコードは２つの方法ステップを含み、ファイルを元の圧縮状態へと復元する、即ち（１）量子化されたブロックの伸張（展開）、および（２）ＪＰＥＧで採用されている方法を用いての量子化されたブロックの圧縮、というステップである。
【００４０】
従って、第１の好適な実施形態においては、本発明の既圧縮ファイルをロスレス圧縮する方法は、第１にファイルを完全にあるいは部分的に伸張し、次いで改良された圧縮方法を適用する。デコーダははじめに高度な方法で圧縮されたファイルを伸張する。続いて元の圧縮手法を適用し、それにより元の圧縮されたファイルが復元される。
【００４１】
図６および７はそれぞれ本発明の方法がどのように音声／画像ファイルの再圧縮５００およびビデオファイルの再圧縮６００に適用されるかを示している。本発明の方法は２つの必須のステップからなるものとして概念化できることがわかる。音声／画像ファイルを第１の例として、ここで図６を参照すると、圧縮されたファイル（入力）５１０は第２段階ロスレス伸張器によって伸張される（５２０）。次いで伸張されたデータは第２段階ロスレス圧縮器５３０によって圧縮され、出力５４０に送られる。
【００４２】
続いて図７を参照すると、ビデオファイルはすべての入力フレーム６１０をループによって処理することで再圧縮されることがわかる。各フレームに対し、フレームがＩ−フレームであるか否を判定する（６２０）。そのフレームがＩ−フレームであれば（６３０ａ）、ＪＰＥＧ圧縮器６４０を適用し、そのフレームを圧縮して出力６５０に送る。そのフレームがＩ−フレームでなければ（６３０ｂ）、フレームをコピーし６６０出力６５０に送る。プロセスは最終フレームテスト６７０を経て、最終フレームが処理されて６９０ループリミット６９５に達するまで継続する（６８０）。
【００４３】
複数のタイプのデータ要素を含んだ複合ファイルでは、本発明の方法は複数の圧縮手法を用い、それぞれの圧縮単位に対して、そのタイプのデータに最適化された圧縮手法を適用する。特定のタイプのデータに最適化された圧縮手法は、汎用的な手法や異なるタイプのデータに最適化された手法よりも良好な圧縮率（その特定のタイプのデータに対して）をもたらす。本発明ではエンコーダがデータを分析し、そのデータタイプに最適化された手法があれば、それを選択する。使用された圧縮手法は出力ストリーム内にエンコードされる。デコーダは入力ストリームから、そのデータの圧縮に用いられた圧縮手法タイプを読み出す。そして適切な伸張器を適用する。
【００４４】
従って、ここで図８を参照すると、本発明の方法はタイプに合わせた圧縮システム７００であることがわかる。この圧縮システム７００は入力データユニット７１０を受け取る工程を有する。次いでデータタイプセレクタ７２０が入力されたデータユニットのタイプを識別し（例えばＰＤＦファイル、ワードファイル、ＪＰＥＧファイルなど）、該ユニットをその中にあるコア要素に分解する。このデータタイプ選別についての情報７３０ａは出力７４０に送られる。選別に基づく圧縮器指示器７５０は、入力データユニットから分解されたコアデータユニット７３０ｂをそのタイプのデータに最適な圧縮器へと送る。図８には例示的なデータタイプに対して最適な様々な圧縮器を示している。即ちテキスト圧縮器７６０、Ｘ８６（マシンコード）圧縮器７７０、表（スプレッドシート）圧縮器７８０、第１および第２の「プレースホルダ」圧縮器７９０、８００、即ち例えば１以上の画像圧縮器などの任意の数の適切なタイプの圧縮器、および汎用圧縮器８１０である。これらの特化された圧縮器の各々の出力はこのセクションの出力７４０に送られる（これは包括的な圧縮アルゴリズムであってもよいし、アーカイブに直接保存してもよい）。
【００４５】
ここで図９を参照すると、本発明の既圧縮ファイルを圧縮する改良された方法の好適な実施形態において、システムは好適にはソリッド（ブロック）モード圧縮を用いる。圧縮されたファイルは複数の個別に圧縮されたファイルを含むアーカイブ（書庫）ファイルであることが多いので、ソリッドモードは同じタイプのファイルを１つのブロックにまとめ、そのブロックを単一のユニットとして圧縮する手段を提供する。この方法は個々のファイル内における冗長性を利用するだけでなく、ファイル間の冗長性も利用しているので、圧縮を改善する。結果としてソリッドモードは圧縮率のかなりの改善をもたらすことができる。このように、複数のコアデータタイプを含んだ複数のファイルが対象となる。例えば２つのＰＤＦファイル９００ａ、９００ｂでは、まずファイルフォークスプリッタ９１０ａ、９１０ｂを用いてリソースフォーク９２０ａ、９２０ｂやデータフォーク９３０ａ、９３０ｂ等のファイルフォークを、別々のリソース圧縮ストリームおよびデータ圧縮ストリーム９４０ａ、９４０ｂ、９５０ａ、９５０ｂに分離する。データフォーク内のコアデータタイプ９６０ａ、９６０ｂ、即ち例えばテキスト１およびテキスト２，バイナリ、ＪＰＥＧ、画像１など、およびリソースフォーク内のコアデータタイプ９７０ａ、９７０ｂ、即ち例えばバイナリおよび画像２はファイルに特化されたフォークパーサー（parsers）（例えばPＤＦフォークパーサー）９８０ａ、９８０ｂおよびリソースフォークファイルパーサー９９０ａ、９９０ｂにより、特定のデータタイプの圧縮ストリームへと更に分離される。アーカイブファイルにおいてサムネイルが所望される場合には、この段階でサムネイル生成器／抽出器１０００ａ、１０００ｂを用いてもよい。
【００４６】
パージング（parsing）処理後、バイナリデータ以外のおよそすべてのデータは圧縮および／または最適化される（１０１０）。コアデータタイプの最適化および／または圧縮後、各ファイルからのデータは、ソリッドモード１０２０において他のファイルからの同様のデータタイプと共に単一のブロック１０３０へとグループ化される。この時点で各ブロックのファイルの詳細がエンコードされる。そして新たなブロックは必要に応じて、ユーザに指定されたパラメータに従って、最大のファイルサイズ低減および／または圧縮率となるよう選択された最適な圧縮器によって圧縮される（１０４０）。その後データはグループ化フォークの出力ストリーム１０５０に送られ、そこから所望によりデータチャンネルを介して送出されるかあるいはアーカイブされる。
【００４７】
この方法を既圧縮ファイルの圧縮に適用すると、かなりの圧縮の改善が得られる。デコード工程はソリッドブロックの伸張と各ブロックのファイルの詳細の読み取りとを含む。ファイルの詳細を利用することにより元のファイルが復元される。
【００４８】
本発明においてブロックモード方式を用いる場合には、好適には異種混成（heterogeneous）データは同質の諸ブロックに分ける工程を備える。圧縮されたファイルは異種混成、即ちいくつかの異なるタイプのデータを含んだものである場合が多い。例えば、実行可能なファイルは一般的にマシンコードブロック、テキスト、表、および画像等の他のタイプのデータを含んでいる。圧縮が最も良好に行われるのは同質（homogeneous）のデータについてである。データタイプが混合されたものを共に圧縮した場合、異なるタイプのデータを別々に圧縮を施した場合よりも低品質である。従って、本発明においては特別の手法を用いて、圧縮前に異種混成のデータを同質な諸ブロックに分離する。ブロック分離の詳細は出力ストリーム内にエンコードされる。この方法を既圧縮ファイルの圧縮に適用すると、圧縮の改善がもたらされる。異種混成の圧縮された圧縮ファイルの伸張は、別々のブロックを伸張し、入力ストリームからブロック分離の詳細を読みとることにより行う。ブロック分離の詳細を用いることにより、元のファイルが復元される。
【００４９】
ロスありの手法とロスレスの手法を組み合わせて圧縮された既圧縮ファイルを本発明の方法によって圧縮する場合、ロスレス部分を伸張し、それをより優れたロスレス手法を用いて再圧縮する。多くの圧縮ファイルフォーマットはロスあり／ロスレスの組み合わせを用いている。それらの圧縮プロセスの第１段階ではロスありの手法を用い、その手法を一般的には圧縮されるデータのタイプに合わせたものとする。次いで、第１段階の出力をロスレス手法を用いて圧縮する。これらのフォーマットで用いられているロスレス手法は概して古いものであって、スピード本位で最適化されており、低品質な圧縮である。ロスあり／ロスレス圧縮ファイルに適用する場合、本発明の方法は以下のように動作する。元の圧縮ファイルを部分的に伸張する。ロスレスの第２段階の圧縮プロセスのみを逆変換する。これによりロスありの第１段階の出力が復元される。ロスありの第１段階の出力をより高度な圧縮手法を用いて圧縮する。伸張プロセスではまず、該より高度な手法の伸張を行う。これによりロスありの第１段階の出力が復元される。次いでロスあり段階の出力を元の圧縮手法を用いて圧縮する。
【００５０】
例えば本発明の方法を、ＭＰＥＧやその変種、ＭＯＶ、ＡＶＩ、ＱＵＩＣＫＴＩＭＥ、ＷＭＶ等のロスありおよびロスレス手法の組み合わせによって圧縮されたビデオファイルの圧縮に用いる場合、ロスレス部分を伸張し、より優れたロスレス手法によりそれを再圧縮する。これらのフォーマットで用いられているロスレス圧縮は概して古いものであって、スピード本位で最適化されている。本発明の方法ではそのようなフォーマットを以下のプロセスにより圧縮する。エンコーダはまず、元のファイルのロスレスの第２段階の伸張を行う。これによりロスありの第１段階の出力が復元される。次いでロスあり段階の出力をより高度な圧縮手法を用いて圧縮する。デコーダはまず、該より高度な手法の伸張を行う。これによりロスありの第１段階の出力が復元される。次いで、ロスあり段階の出力を元の圧縮手法を用いて圧縮する。
【００５１】
本発明はＭＰ３、ＯＧＧ、ＭＩＤＩなどのロスありおよびロスレス手法の組み合わせにより圧縮されたオーディオファイルの圧縮に用いることもできる。要約して言えば、ロスありおよびロスレス手法の組み合わせにより圧縮されたビデオファイルの場合と同様に、オーディオファイルのロスレス部分を伸張し、より優れたロスレス手法を用いて再圧縮する。これらのフォーマットで用いられているロスレス圧縮は概して古いものであって、スピード本位で最適化されている。本発明の方法ではそのようなフォーマットを以下のプロセスにより圧縮する。エンコーダはまず、元のファイルのロスレスの第２段階の伸張を行う。これによりロスありの第１段階の出力が復元される。次いでロスあり段階の出力をより高度な圧縮手法を用いて圧縮する。デコーダはまず、該より高度な手法の伸張を行う。これによりロスありの第１段階の出力が復元される。次いで、ロスあり段階の出力を元の圧縮手法を用いて圧縮する。
【００５２】
本発明をロスありおよびロスレス圧縮手法の組み合わせを用いて圧縮されたオーディオおよびビデオファイルの圧縮に用いることができるのと同様に、本発明をＪＰＥＧ、ＪＰＥＧ２０００、ＤＩＣＯＭ、ＧＩＧ、ＴＩＦＦのようなロスありおよびロスレス圧縮手法を組み合わせて圧縮された画像ファイルの圧縮に用いることができる。上記のように、概括的には、該方法はロスレス部分を伸張し、より高度なロスレス手法を用いてそれを再圧縮するものである。本発明は上記フォーマットおよび其の変種を以下のプロセスを用いて圧縮する。エンコーダはまず、元のファイルのロスレスの第２段階の伸張を行う。これによりロスありの第１段階の出力が復元される。次いでロスあり段階の出力をより高度な圧縮手法を用いて圧縮する。デコーダはまず、該より高度な手法の伸張を行う。これによりロスありの第１段階の出力が復元される。次いで、ロスあり段階の出力を元の圧縮手法を用いて圧縮する。
【００５３】
また別の態様にかかる本発明の方法は、はじめにＪＰＥＧファイルをＤＣＴ処理後の量子化されたブロックが復元されるまで部分的に伸張し、それからこれらのブロックをより良好なロスレス圧縮手法を用いて圧縮することによりＪＰＥＧファイルをロスレス圧縮することを特徴としてもよい。
【００５４】
更に別の態様において本発明は、他の方法中、就中Ｉ−フレームの完全なあるいは部分的な伸張を行い、それらＩ−フレームをより高度な方法を用いて再圧縮する方法を用いてビデオファイルをロスレス圧縮する方法を提供する。
【００５５】
本発明をＪＰＥＧファイルの圧縮に適用した場合、隣接ブロックの値に基づく複数の予測器（予測子）を用いてＪＰＥＧ−ＤＣを圧縮することができる。また、ＪＰＥＧ−ＤＣ値予測を、コンテキスト（前後関連性）に基づく圧縮（context based compression）を用いて圧縮することもできる。ＪＰＥＧ−ＡＣ値を、コンテキストに基づく圧縮を用いて圧縮してもよく、その際ＪＰＥＧ−ＡＣ値のコンテキストの一部としての隣接値、ＪＰＥＧ−ＡＣ値のコンテキストの部分としての隣接ブロックからの値を用いてもよいし、あるいはＪＰＥＧ−ＡＣ値のコンテキストの一部としての予測器を用いてもよい。更に、ＪＰＥＧ−Ｃｒ−ＡＣ値の圧縮は、ＪＰＥＧ−Ｃｂ−ＡＣ値を用いることにより改善される。コンテキストに基づく圧縮は、好適には最上行のＪＰＥＧ−ＡＣ値、左側の列のＪＰＥＧ−ＡＣ値、それ以外のＪＰＥＧ−ＡＣ値について異なるコンテキストを用いる。ＪＰＥＧ−ＡＣ値の圧縮は、それらのゼロ／非ゼロ状態を別々に符号化し、かつＡＣ値の符号を別個に圧縮することにより更に改善される。更に、ＪＰＥＧ−ＡＣ符号値の圧縮は、コンテキストに基づく圧縮を用いることにより大きく改善される。また、ＪＰＥＧ−ＡＣ符号値の圧縮は、コンテキストの一部として予測器を用いることで更に改善される。
【００５６】
エンコーダの詳細：後者２つの態様において、ＪＰＥＧファイルまたはビデオファイルのロスレス圧縮方法として、エンコーダはまずＪＰＥＧファイルのヘッダ部を読み取り、パージングし、圧縮する。パージング段階の間、エンコーダはすべての関連するパラメータが規約に適っており（legal）、サポートされていることを検証する。パージングの間、エンコーダはまた、後の処理で必要となる情報、特に量子化テーブル、ハフマンテーブル、サンプリングファクターを別々に保存する。
【００５７】
すべてのヘッダ情報は汎用圧縮器を用いて圧縮される。この圧縮器は重み１のゼロ次および重み８の１次を用いた、混合型統計的圧縮器（mixed model statistical compressor）である。
【００５８】
すべての関連するヘッダデータを収集した後、エンコーダはブロックを圧縮するのに必要となるメモリ量を計算する。この量はブロックを圧縮する圧縮器に必要な静的部分、およびブロックの最後の２行を保存するのに必要なメモリである。次いでエンコーダはブロックの読み取りを開始する。
【００５９】
ＪＰＥＧはブロックをユニットとして保存する。ユニットのサイズはサンプリングファクタに依存する。人間の眼の色に対する敏感度は光量に対する敏感度より低いので、ＪＰＥＧではクロミナンス情報の一部を捨てる（間引きする）ことが可能である（そして多くの場合、実際に捨てている）。エンコーダは水平および垂直サンプリングファクタ共に、１または２の場合をサポートしている。ＪＰＥＧは、より大きなブロックからとられた平均値を有する８×８のブロックを生成することによりクロミナンス情報を間引きし、この８×８のブロックのみを保持する。水平および垂直ファクタが共に１の場合、ブロックの１ユニットは３つのブロック、１つの輝度、２つのクロミナンスを有する。一方のサンプリングファクタが１で他方が２である場合、ブロックの１ユニットは４つのブロック、２つの輝度、２つのクロミナンスを有する。水平および垂直ファクタが共に２の場合、ブロックの１ユニットは６つのブロック、４つの輝度、２つのクロミナンスを有する。画像がグレースケールの場合、輝度情報のみが保存され、ブロックの１ユニットは１つのブロックを有する。
【００６０】
ファイルがプログレッシブＪＰＥＧファイルである場合、データは保存された順に読みとられ、そのハフマン符号化から伸張される。ハフマン伸張されたデータは内部バッファに保存され、続いてより高度な方法を用いてエンコードされる。次いで、エンコーダは諸ブロックをそのＪＰＥＧの順にエンコードする。即ち輝度ブロック、そしてＣｂブロック、そしてＣｒブロックの順である。
【００６１】
エンコーダによる処理の大部分はブロックのエンコードの間に行われる。ブロックのエンコーディングはこの技術の鍵であり、主要部である。ＪＰＥＧはハフマンコードとランレングスエンコーディングを用いて、ブロックをエンコードする。本発明で用いるブロックエンコーディングでは、まずＪＰＥＧ表現（JPEG representation）からＤＣ値をデコードする。次いで、同じブロックタイプの前のＤＣ値をＤＣ値に加算する。これはＪＰＥＧは、ＤＣ値をＤＣ値と以前の同一タイプブロックのＤＣ値との差として保存しているからである。
【００６２】
次に、ＡＣ値をそのＪＰＥＧ表現からデコードし、ついでブロックは脱ジグザグ化される（de-zigzaged）。この時点でＤＣＴ処理後の量子化されたブロックが完全に復元され、システムはそのエンコードを開始する。初めにブロックを調べ、そのブロックがその上のブロックまたはその左側のブロックと同一であるか否かが判定される。ブロックが同一であれば、そのブロックは単純にコピー可能であることおよびどこからコピー可能であるか、を示すコードがエンコードされる。ブロックがコピー可能であればそのブロックをエンコードする必要はない。ブロックがコピー可能でない場合、プロセスは継続する。
【００６３】
あるブロックをエンコードするとき、ＤＣ値をはじめにエンコードし、続いてＡＣ値をエンコードする。ＤＣ値のエンコードは予測的モデルを用いて行われる。その場合、まずＤＣ値を以下のようにして予測する。４つの異なる予測器が生成される。その２つは現在のブロックの上のブロックと左のブロックのＤＣ値から生成される。これら２つは下のブロックおよび右のブロックのＤＣ値を予測する。下のブロックおよび右のブロックはまだ未知であるので、間接的予測器が用いられる。下のブロックのＤＣ値は、入手可能であればその左側および下のブロックを用いて予測され、そうでなければ左側のブロックを用いて予測される。右側のブロックのＤＣ値は、入手可能であればその右側および上のブロックを用いて予測され、そうでなければ上のブロックを用いて予測される。各予測器には、それぞれがＤＣ値を予測すべく、尤度（likelihood）に基づく異なる重み付けが与えられる。ＤＣ値の最終的な予測器はこれら予測器の重み付けされた平均である。
【００６４】
予測器が一旦生成されると、予測器と実際のＤＣ値との差が計算され、差がエンコードされる。差はコンテキストに基づく特化された圧縮器を用いてエンコードされ、この圧縮器はＤＣ予測器の生成に用いられる４つの予測器の差と、現在のブロックの上および左側のブロックのまばらさ（sparsity）とをコンテキストとして用いる。予測器が互いに近ければ、予測がより正確である可能性が高くなる（差が小さい）。この圧縮器はこのことを利用し、差をコンテキストとして用いている。
【００６５】
ＤＣ値がエンコードされた後に、ＡＣ値のエンコーディングが開始される。ＡＣ値は上から下および左から右にループでエンコードされる。ＡＣ値のエンコーディングは就中２つの予測器、即ち上予測器（Up predictor）および左予測器（Left predictor）を用いる。上予測器は現在ブロックの上のブロックに基づいて計算され、現在ブロック内の既遭遇値（already encountered values）により更新される。左予測器は現在ブロックの左側のブロックに基づいて計算され、現在ブロック内の既遭遇値によって更新される。
【００６６】
ＪＰＥＧブロックはその多くがゼロとなるように量子化される。多くの画像において、殆どの値はゼロである。本発明は特殊な「ゼロ／非ゼロ」圧縮器を用いてある値がゼロであるか否かをエンコードする。このゼロ／非ゼロ圧縮器はコンテキストに基づくものである。この圧縮器は異なるコンテキストの混合モデルを用いる。コンテキストは以下の値を用いる。即ち、ブロックタイプ、ブロック内での位置、現在ブロックからの値、量子化テーブル、上予測器および左予測器、そしてＣｒブロックについてはＣｂブロックからの対応する値、である。
【００６７】
ＡＣ値が非ゼロである場合、その値がエンコードされる。ＡＣ値の圧縮には３つの異なる圧縮器を用いる。１つは最上行内の値用、１つは左列内の値用、１つはそれ以外の値用である。これはこれらの値の組の性質が異なること、およびこれら値を予測する能力が異なることを反映している。これら３つの圧縮器のそれぞれはコンテキストに基づいており、混合コンテキストを用いている。コンテキストはブロックタイプ、ブロック内での位置、同一ブロック内の値、上予測器および左予測器、そしてＣｒブロックの場合にはＣｂブロックからの対応する値、を用いる。それぞれの圧縮器はいくつかのコンテキストを用いる。各コンテキストには重み付けが与えられる。同一コンテキストの既遭遇値についての統計がとられる。起こりうる値のゼロ確率の可能性を避けるために、すべての可能な値に対してデフォルトの分布テーブルをスタートし、コンテキスト統計にそれぞれのコンテキストに与えられた重みを乗じたものを付加する。実際の値はこの分布テーブルに基づいて圧縮される。
【００６８】
絶対ＡＣ値は、値１〜５がより大きな値のそれぞれ独自のコードを有するように修正対数スケールを用いて表現され、これらより大きな値は指数についてのコードを有し、その仮数はそのまま保存される。これらコード（１・・・５、指数）のみが圧縮される。すべての非ゼロのＡＣ値について、符号は別個に圧縮される。これは、符号の圧縮可能性は絶対値の圧縮可能性とは異なることから重要である。特に上予測器および左予測器は優れた符号の予測器である。圧縮器はコンテキストに基づくものであり、混合モデルを用いている。コンテキストとしては、ブロックタイプ、ブロック内での位置、同一ブロック内の値、隣接ブロック内の値、そして特に上予測器および下予測器を用いる。
【００６９】
符号が圧縮されると、ＡＣ値は完全に圧縮される。
【００７０】
ループが完了すると、ＤＣＴ処理後の量子化されたブロックは完全に圧縮される。
【００７１】
デコーダの詳細：デコーダはその大部分がエンコーダと対称的である。デコーダはまず伸張を行い、ＪＰＥＧファイルのヘッド部分のパージングを行う。デコーダは内部バッファに処理に必要な情報、特に量子化テーブルとハフマンテーブルを記憶している。伸張されたヘッダは出力バッファに書き込まれる。すべてのヘッダデータは汎用伸張器を用いて伸張される。
【００７２】
次いで、デコーダはメモリを割り当て、ブロックの伸張を開始する。ブロックはブロック単位で伸張される。ブロックはエンコーダの詳細部に記述されたものと同一であり、ＪＰＥＧによるブロック保存の仕方に適合する。あるブロックを伸張する際に、デコーダは最初にそのブロックがその左側のブロックまたはその上のブロックからコピー可能であるかどうかをチェックする。コピー可能であればそのブロックをコピーし、そのブロックの伸張は終了する。ブロックがコピー可能でなければ、そのブロックの伸張を続ける。
【００７３】
デコーダは初めにＤＣ値を伸張する。ＤＣ値の伸張は予測器の計算から始まる。予測器はエンコーダにより計算されたものと同一である。エンコーダもデコーダも共に同じパラメータを有する同じ関数を用いて予測器を計算する。
【００７４】
次に、デコーダはエンコーダが用いた予測誤差圧縮器の伸張器を用いて、予測誤差を抽出する。ＤＣ値は予測器プラス予測誤差である。
【００７５】
ＡＣ値を伸張するために、デコーダはエンコーダと同じループを用いる。初めに、デコーダはゼロ／非ゼロ伸張器を用いてゼロフラグをデコードする。値が非ゼロならば、デコーダはＡＣ係数の絶対値のデコードを続ける。デコーダはエンコーダと同様に、ＡＣ値を最上行、左列およびそれ以外に分ける。それぞれの場合に適切な伸張器を用い、エンコーダと同一のコンテキストを用いたコンテキストに基づく混合モデルを生成する。混合モデルのコンテキストを生成するに際し、エンコーダもデコーダも共に同じパラメータを有する同じ関数を用いる。
【００７６】
ＡＣ値の絶対値がデコードされると、その値の符号がデコードされる。符号伸張器はエンコーダと同じコンテキストを有する同じモデルを用いる。符号がデコードされると、絶対値に割り当てられ、ＡＣ値が完全にデコードされる。ループが完了すると、ＤＣＴ処理後の量子化されたブロックが復元される。
【００７７】
次に、ブロックはスタンダードのＪＰＥＧジグザグ順を用いてジグザグ化される。
【００７８】
ブロックのデコーディングの最終ステップは、ＪＰＥＧ圧縮を用いたブロックの圧縮である。デコーダはハフマンコードを用いて、ＪＰＥＧで行われるのと同様の仕方でブロックを圧縮する。用いられるハフマンテーブルはヘッダ内に保存されているものである。
【００７９】
ハフマンテーブルを用いてブロックが圧縮されると、ＪＰＥＧブロックは完全に復元される。
【００８０】
以上の開示は当業者による本発明の実施を十分に可能ならしめ、かつ発明者が現在考える最良の形態を提供するものである。本発明の好適な実施形態の十分かつ完全な開示を提供しているが、図示し説明した構成、寸法関係および動作そのものに本発明を限定することを意図したものではない。当業者は本発明の真の精神および範囲から離れることなく、適宜の様々な変形、代替構成、変更および均等物を容易に想到するであろう。そのような変更は、代替の方法ステップ、プロセス、決定オプション、機能、動作特徴などを含む。
【００８１】
従って、以上の説明および図示は添付の請求の範囲に定義される本発明の範囲を限定するものと解釈すべきではない。
【図１】
0005215442.tif 000002
【図２】
0005215442.tif 000003
【図３】
0005215442.tif 000004
【図４】
0005215442.tif 000005
【図５】
0005215442.tif 000006
【図６】
0005215442.tif 000007
【図７】
0005215442.tif 000008
【図８】
0005215442.tif 000009
【図９】
0005215442.tif 000010
【図９Ａ】
0005215442.tif 000011
【図９Ｂ】
0005215442.tif 000012
【図９Ｃ】
0005215442.tif 000013
【図９Ｄ】
0005215442.tif 000014