(57)【要約】  本発明の実施形態は、データ・ストリームの可逆符号化と圧縮を行うためのシステムおよび方法を含む。データ・ストリームは画像、テキストまたはこの２つの組合せある。データ・ストリームはコンピュータ・アプリケーションまたは周辺デバイスから受信されてよい。データ・ストリームの連続する値を比較し、連続するデータの値の間の差分に基づいてデータを符号化することによって、符号化からデータ・ストリームが圧縮される。
2007507182.tif 000002
【特許請求の範囲】
【請求項１】
データ・セットの値を前の値と比較するステップと、
差分が範囲外にある場合、前記データ・セットを第１のコードで符号化するステップと、
前記データ・セットの前記値が前記前の値と一致しないが前記範囲内にある場合、前記データ・セットを第２のコードで符号化するステップと、
第１のデータ・セットの値が前記前の値と一致する場合、前記データ・セットを第３のコードで符号化するステップとを含む方法。
【請求項２】
前記第１のコードは前記データ・セットの実効値を含む請求項１の方法。
【請求項３】
前記第２のコードは前記差分と同一の連続する値の個数とを含む請求項１の方法。
【請求項４】
前記第３のコードは一致と同一の連続する値の個数とを示す請求項１の方法。
【請求項５】
前記第１のコード、第２のコード、第３のコードのうちの１つを用いる前記第１のデータ・セットの前記符号化は可逆である請求項１の方法。
【請求項６】
前記値が第１の範囲内にあり、後に続く値が前記第１のデータ・セットの前記値に一致しない場合、第４のコードを用いて前記データ・セットを符号化するステップをさらに含む請求項１の方法。
【請求項７】
前記範囲が、８ビット・ピクセルを含む前記データ・セットを符号化するために最適化される請求項１の方法。
【請求項８】
代替の符号化方式に切り替えるステップをさらに含む請求項１の方法。
【請求項９】
第１の値と第２の値とを含むデータ・ストリームを符号化するためのプロセッサであって、差分を判定するためにデータの前記第１の値を前記第２の値と比較し、前記差分がゼロの場合は第１のコードで、前記差分が範囲内にある場合は第２のコードで、前記差分が前記範囲の外にある場合は第３のコードで前記第２の値を符号化する前記プロセッサを含む装置。
【請求項１０】
前記プロセッサから受け取ったコードの前記データ・ストリームを１組のワードに分割するために、前記プロセッサに接続された第１のデバイスをさらに含む請求項９の装置。
【請求項１１】
前記プロセッサは特定用途向け集積回路である請求項９の装置。
【請求項１２】
前記データ・ストリームを記憶するためのメモリ・デバイスをさらに含む請求項９の装置。
【請求項１３】
データ・ストリームを復号化するためのプロセッサであって、第１の演算コードがリテラル値を識別し、第２の演算コードが１組の一致する値を識別し、第３の演算コードが１組の一致する値と異なる値とを識別する、前記データ・ストリームを符号化する１組の演算コードを含む２進数の出力を前記データ・ストリームから生成する前記プロセッサを含む装置。
【請求項１４】
前記データ・ストリームからのワードを前記プロセッサへの出力に分解するために、前記プロセッサに接続された第１のデバイスをさらに含む請求項１２の装置。
【請求項１５】
前記プロセッサが汎用プロセッサである請求項１２の装置。
【請求項１６】
前記データ・ストリームを記憶するためのメモリ・デバイスをさらに含む請求項１３の装置。
【請求項１７】
データ・セットの値を前の値と比較するための手段と、
差分が範囲外にある場合、前記データ・セットを第１のコードで符号化するための手段と、
前記データ・セットの前記値が前記前の値と一致しないが前記範囲内にある場合、前記データ・セットを第２のコードで符号化するための手段と
前記データ・セットの値が前記前の値と一致する場合、前記データ・セットを第３のコードで符号化するための手段とを含む装置。
【請求項１８】
前記値が第１の範囲内にあり、後に続く値が前記データ・セットの前記値に一致しない場合、第４のコードを用いて前記データ・セットを符号化するための手段をさらに含む請求項１７の装置。
【請求項１９】
前記範囲が、８ビット・ピクセルを含む前記データ・セットを符号化するために最適化される請求項１７の装置。
【請求項２０】
同一ピクセルの長いランを有するデータ・ストリームのために最適化された符号化の方式へ切り替えるための手段をさらに含む請求項１７の装置。
【請求項２１】
実行された場合に、
データ・セットの値を前の値と比較するステップと、
差分が範囲外にある場合、前記データ・セットを第１のコードで符号化するステップと、
前記データ・セットの前記値が前記前の値と一致しないが前記範囲内にある場合、前記データ・セットを第２のコードで符号化するステップと、
第１のデータ・セットの値が前記前の値と一致する場合、前記データ・セットを第３のコードで符号化するステップと
を含む１組の動作を機械に行わせる１組の命令を記憶した機械可読媒体。
【請求項２２】
実行された場合に、
前記値が第１の範囲内にあり、後に続く値が前記第１のデータ・セットの前記値に一致しない場合、第４のコードで前記データ・セットを符号化するステップ
をさらに含む１組の動作を機械に行わせる命令をさらに記憶した請求項２１の機械可読媒体。
【請求項２３】
実行された場合に、
代替の符号化方式に切り替えるステップをさらに含む１組の動作を機械に行わせる命令をさらに記憶した請求項２１の機械可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は可逆的なデータ圧縮と符号化に関する。詳細には、本発明の実施形態は、データ・ストリームの連続する値の間の差分に基づいて、データのストリームを符号化することに基づいた圧縮に関する。
【背景技術】
【０００２】
印刷デバイスは、幅広い種類の出力表示デバイスを含む。レーザ・プリンタ、バブル・ジェット・プリンタ、プロッタ、イメージ・セッタ、その他の印刷デバイスなどのこれらの出力表示デバイスは、画像または視覚的表現を紙または同様の物質の表面に作り出す。印刷デバイスの多くは、ビットマップまたはピクセルマップに含まれる情報に対応する点を印刷することによって、表面に画像を形成する。例えば、ラスタ式の印刷デバイスは、対応するピクセルマップに基づいて行と列の中に配置された点を印刷することによって表面に画像を形成する。
【０００３】
コンピュータ・システムで実行されるアプリケーションは、一緒に印刷されることが要求される複数のページまたは画像を生成する。このまとめられた画像とページのグループは、しばしばジョブと呼ばれる。各ジョブが印刷されるよりも短い時間間隔で、複数のジョブが要求されることがよくある。これらのジョブは、先に予定されていたジョブが完了した後に印刷されるように待ち行列に入れられることが多い。ジョブは、プリンタに送られるまでの間記憶される中間的な記憶デバイスに送信されてもよい。
【０００４】
ジョブの中のページは、出力デバイスによって表示されるオブジェクトを記述するための高級言語であるページ記述言語（ＰＤＬ）で記述されることが多い。これらの言語は通常、ページを正確に表すための解釈された言語である。ジョブ、またはページ、プレーン、バンドなどのジョブの構成要素を表すデータまたはファイルのストリームは、容量が大きいことがある。その容量のためにデータの伝送や処理が遅くなる。
【発明を実施するための最良の形態】
【０００５】
本発明の実施形態を、添付の図面の図中で限定条件としてではなく例として示す。図中、同じ参照コードは同様の要素を示す。本開示の中での「ある（ａｎ）」実施形態または「１つの（ｏｎｅ）」実施形態といった異なる言及は、必ずしも同一の実施形態を指すものではなく、そのような言及は少なくとも１つということを意味する。
【０００６】
図１Ａおよび図１Ｂは、符号化と復号化のデータ経路を例示する図である。図１Ａに、符号化されたデータが記憶デバイス１１７のファイルまたは同様のデータ構造から取り出され、メモリ１１９の中に配置される復号化のデータ経路を示す。記憶装置１１７は固定ディスク、着脱可能媒体または同様の記憶デバイスである。メモリ１１９はシンクロ・ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）または同様のデバイスである。復号化プロセッサ１２１は、メモリ１１９から符号化されたデータを検索する。１つの実施形態で、復号化プロセッサ１２１は復号化アプリケーションのソフトウェア実装を実行する汎用プロセッサ（ＧＰＰ）である。別の実施形態で、復号化プロセッサ１２１は特定用途向け集積回路（ＡＳＩＣ）である。復号化プロセッサ１２１はピッカ（ｐｉｃｋｅｒ）１０１と復号器１０３を含む。ピッカ１０１は、メモリ１１９からの符号化されたデータのワードを分解し、個々のデータを復号器１０３に送る。ピッカ１０１は、復号化プロセッサ１２１によって実行される回路またはソフトウェアである。復号器１０３は、復号化プロセッサ１２１によって実行される回路またはソフトウェアである。復号器１０３は、出力インタフェース１０５に送られるラスタ・データまたは同様のフォーマット化されたデータ・ストリームにコードを変換する。出力インタフェース１０５は、アプリケーション、記憶装置または同様の行き先などの出力先にデータを調整して送る。１つの実施形態で、出力インタフェース１０５は、入ってくるラスタ・データ・ストリームを印刷エンジンを駆動する１組の信号に転換する印刷制御装置のインタフェースである。
【０００７】
図１Ｂに、例えばスキャナ・エンジンまたは同様のデバイスなどの入力源からデータがストリームとして受信される符号化のデータ経路を示す。データ・ストリームは、入力インタフェース１２９によって、ユニバーサル・シリアル・バス（ＵＳＢ）または同様の媒体などの媒体を介して受信される。入力インタフェース１２９は、データを１組のバイトまたはワードとして符号化プロセッサ１２７に送る。１つの実施形態で、符号化プロセッサ１２７は符号化アプリケーションのソフトウェア実装を実行するＧＰＰである。別の実施形態で、符号化プロセッサ１２７はＡＳＩＣである。符号化プロセッサ１２７は符号化器１１３とパッカ（ｐａｃｋｅｒ）１１５を含む。符号化器１１３は、以下で説明する分割式ランレングス符号化（ＳＲＬＥ）を用いて入力インタフェース１２９から受け取ったバイトを符号化する回路またはソフトウェアである。符号化されたデータはその後パッカ１１５に送られる。パッカ１１５は、不定の大きさのコードを受信し、１つのワードの中にコードを詰込むこと、および複数のワードにコードを分かつことによってワードを形成する回路またはソフトウェアである。パッキングされたコードのワードは、その後メモリ１２５に記憶され、続いて記憶装置１１７に送られる。メモリ１２５はＳＤＲＡＭまたは同様のデバイスである。記憶装置１１７は、固定ディスク、着脱可能媒体または同様の記憶デバイスである。
【０００８】
多くの復号化と符号化プロセッサ（１２１、１２７）がそれぞれ、並列のデータ経路で用いられる。１つの実施形態で、個々のデータ経路はバンド、ページまたはプレーンを処理するために使用される。例えば、個々の並列のデータ経路は赤、緑、青（ＲＧＢ）プレーンのために使用される。
【０００９】
図２Ａに、符号化プロセッサによってデータ・ストリームを符号化するために使用するＳＲＬＥ符号化過程のストリーム図を示す。１つの実施形態で、入ってくるデータのバイトまたはユニットのそれぞれはリテラル・コード、近似（Ｎｅａｒ  Ｍａｔｃｈ）コードまたは一致コードとしてカテゴリ化され、グループ化され、符号化される。近似コードはさらに近似反復コードと近似単一コードに分割できる。
【００１０】
リテラル・コードは、単一の初期値と、データ・ストリームでの値の連続の中で前の値から定義された範囲を超えて外れる単一の値とを符号化するために使用される。例えば、範囲が負の１６から正の１５までとして、または１５もしくは１６のおよその絶対値差分として定義されている場合、５０の値（１０進数）が２０の値の後ろに続くときにはリテラルとして符号化される。しかしながら、値５０が値４５の後ろに続くときには、差分５は負の１６から正の１５の範囲に入るのでリテラルとして符号化されることはない。
【００１１】
近似コードは、データ・ストリームの連続の中で前の値から定義された範囲内で外れる値を符号化するために使用される。近似コードは、データ・ストリームで生じる連続した同一の値の個数を示すために、ランレングス領域を含む。１つの実施形態で、一般の近似コードよりも小型の個々の近似単一コードは、圧縮に関する最適化に使用される。近似単一コードはランレングス領域を有さないので、任意の大きさのランレングス領域を有してもよい一般の近似コードよりも小型である。別の実施形態で、近似単一コードは用いず、近似反復コードが１のランレングスを符号化してもよい。１つの実施形態では、ランレングス領域の大きさは１０ビットである。
【００１２】
一致コードは、データ・ストリームの連続の中で前の値と同一の値を符号化するために使用される。例えば、リテラルの後ろに続く値が全く同じである場合、一致コードが使用される。一致コードは、データ・ストリームで生じる連続した同一の値の個数を示すためにランレングス領域を含む。１つの実施形態で、ランレングス領域は１０ビットである。ランレングス領域の大きさはより長いランまたはより短いランを処理するために変更されてもよい。
【００１３】
１つの実施形態で、符号化過程は１組の状態変数（ブロック２０１）を初期化することによって始まる。状態変数は、現在処理されているランのタイプを追跡するラン・タイプ変数、現在のランの長さ（すなわち同一の連続する値の個数）を追跡するランレングス変数、処理済の前の値を追跡する「旧値」を含んでいる。本明細書の文脈でのランとは、単一のコードへの符号化が可能な１組の値のことである。ランのタイプは、可能な符号化のタイプ（例えば近似、一致またはリテラル）に一致する。デフォルトの旧値はゼロか、または他の任意の既知の値である。デフォルトのランレングスはゼロである。
【００１４】
プロセスは、データ・ストリームの次の値または「新値」（例えばバイト）を続けて検索することによって続ける（ブロック２０３）。データ・ストリームはピクセル当たりビット（ｂｐｐ）８の値を含む。別の実施形態で、符号化の基本単位はワードか、または任意の長さの１組のビットである。次いで、ファイルの末端にまで達したかどうかについて判定が下される（ブロック２０５）。ファイルの末端にまで達した場合、いかなる符号化されていないランも、指定されたラン・タイプと算出されたランレングスに基づいて符号化される（ブロック２０７）。ファイルの末端が検出された場合、付加的なファイルの末端コードが生成される（ブロック２０８）。
【００１５】
ファイルの末端が検出されない場合、新値は記憶された旧値と一致するかどうかを判定するために検査される（ブロック２０９）。新値が旧値に一致する場合、ランレングスは１つ増やされる（ブロック２１１）。ランレングス変数は、データ・ストリームの中の各値が処理されるときにランの長さを追跡するためのタリーとしての機能を果たす。ランレングス・タリーが増やされた後、現在のランが近似と指定されたかどうかを判定するためにラン・タイプが検査される（ブロック２１３）。例えば、値の連続０ｘ２０、０ｘ２６、０ｘ２６（１６進数）が生じた場合、第２の値０ｘ２６は近似のランの始まりとなる。第３の値０ｘ２６が処理されるとき、ランレングスは１つ増やされる。ランは、値の変化が検出されるか、またはランレングスが固定された符号化の限界を超えるまで符号化されることはない。
【００１６】
１つの実施形態で、近似が指定された場合、符号化の限界に達したかどうかを判定するためにランレングスの検査が行われる（ブロック２１５）。ランレングスが符号化の限界を超えていない場合、処理のための次の値が検索される（ブロック２０３）。１つの実施形態で、ランレングスは４を超えたかどうかを判定するために検査される。ランレングスが４を超えた場合、ランは近似反復コードとして符号化される（ブロック２１７）。次いで、同一でもある任意の連続値のために、ラン・タイプは一致として指定される（ブロック２１９）。連続の中の値が、リテラルとして、またはランレングスが限定されている環境下では近似反復として符号化された前の値と正確に一致する場合、一致のランが指定される。ランレングスは次いでゼロにリセットされる（ブロック２２０）。続いて処理のための次の値が検索される（ブロック２０３）。４つのランレングスの検査と近似反復コードの符号化は、ランレングスの符号化のために２ビットのみを有する近似反復コードに基づく。別の実施形態で、近似反復コードは異なる大きさのランレングスの符号化を可能にするより大きい、またはより小さいビットの長さを有してもよい。ランレングスの検査は、ランレングス領域のビット数に従って調整される。さらなる実施形態で、近似反復コードは任意の大きさのランレングスを取り扱うように構築されてもよい。
【００１７】
新値が旧値に等しく（ブロック２０９）、ラン・タイプが近似でない（ブロック２１３）例では、一致のラン・タイプが指定される（ブロック２２１）。１つの実施形態で、一致が指定された場合、符号化の限界に達したかどうかを判定するためにランレングスの検査が行われる（ブロック２２３）。ランレングスが符号化の限界を超えていない場合、処理のための次の値が検索される（ブロック２０３）。１つの実施形態で、ランレングスは１０２７を超えたかどうかを判定するために検査される。ランレングスが１０２７を超えた場合、ランは一致コードとして符号化される（ブロック２２５）。次いでランレングスはゼロにリセットされる（ブロック２２７）。次いで、処理のための次の値が検索される（ブロック２０３）。１０２７のランレングスの検査と一致コードの符号化は、ランレングスの符号化のために１０ビットのみを有する一致コードに基づく。別の実施形態で、一致コードは異なる大きさのランレングスの符号化を可能にするより大きい、またはより小さいビットの長さを有してもよい。ランレングスの検査は、ランレングス領域のビット数に従って調整される。さらなる実施形態で、一致コードは任意の大きさのランレングスを取り扱うように構築される。
【００１８】
新値が旧値に等しくない（ブロック２０９）例で、ランレングスがゼロより大きいかどうかを判定するために検査が行われる（ブロック２２９）。ゼロよりも大きいランレングスは、値の変化が生じているので符号化されていないランは終わったということを示す。ランが近似ランであるかどうかを判定するためにラン・タイプの検査が行われる（ブロック２３１）。ランが近似ランではない場合、一致コードとして符号化される（ブロック２３９）。ランが近似である場合、ランレングスが１に等しいかどうかを判定するために検査が行われる（ブロック２３３）。ランレングスが１に等しい場合、ランは近似単一コードとして符号化される（ブロック２３５）。ランレングスが１に等しくない場合、ランは近似反復コードとして符号化される（ブロック２３７）。別の実施形態で、近似単一コードは使用されなくてもよく、一致ではない全てのランは近似コードとして符号化される。ランの符号化は新しい値を含まないために、ランの符号化（一致、近似反復または近似単一）に関係なく処理は継続する。新値が、旧値から外れることによってランの末端を示す。
【００１９】
新値が旧値に等しくない（ブロック２０９）例では、その差分が事前に定義された範囲に入るかどうかを判定するため新値が旧値と比較される（ブロック２４１）。１つの実施形態で、８ｂｐｐの値で、負の１６から正の１５の範囲が使用されてもよい。この範囲は、前のバイト中での低位ビットから新たなバイト中での低位ビットが変化したかどうかを判定する。ストリームの中の第１の値が分析される場合、デフォルトの既知の旧値が使用されてもよい。例えば、デフォルト値はゼロである。差分が範囲外にある場合、値はリテラルとして符号化され（ブロック２４３）、ラン・タイプはリテラルとして指定される（ブロック２４５）。例えば、データ・ストリームの初期値は０ｘ２０である。デフォルトの旧値がゼロの場合、０ｘ２０の値はリテラルとして符号化される。現在のランの中の最後に検索された値は符号化され、検索される次の値は次のランの始まりとなるので、ランレングスはゼロにリセットされる（ブロック２４７）。
【００２０】
しかしながら、差分が事前に定義された範囲の中にある場合、ラン・タイプは近似として指定される（ブロック２５１）。ランを近似として指定することは、分析されている現在の連続の値が近似として符号化されることと、ランの長さは符号化が完了する前に判定されなければならないこととを識別するカテゴリ化を行うことである。近似のランレングスは、現在のランが最後に検索された値を含むために１に設定されている（ブロック２５３）。（リテラルとして符号化されるか、または近似として指定されるかの）いずれの場合も、次の値が検索される（ブロック２０３）前に、新値は旧値として保存され（ブロック２４９）、データ・ストリームの処理は継続する。
【００２１】
１つの実施形態で、図２Ａのストリーム図の符号化機構はデータ・ストリームを符号化するために使用される第１の符号化方式である。第１の符号化プロセスは、高解像度のオリジナルの画像データのために最適化される。第１の符号化プロセスは、デフォルトのプロセスである。この第１の符号化方式を用いて符号化されたデータは、図２Ｂのストリーム図に示す単純な復号化プロセスを用いて復号化されてもよい。復号化プロセスは復号化される次のコードを得る（ブロック２７１）ことから始まり、コードから派生する２進値を生成する（ブロック２７３）。リテラルは正確な２進値を含む。近似コードは、生成される２進値と生成されたその前の２進値との差分を示す。一致コードは、生成される２進値がその前の２進値に一致することを示す。復号化プロセスは、評価されるコードのランレングスを検査することによってランが完了したかどうかを判定する（ブロック２７５）。ランが完了されない場合、復号化プロセスはランレングスを減らし（ブロック２８１）、次の値を生成する（ブロック２７３）。ランが完了された場合、このプロセスはファイル・コードの末端を検査する（ブロック２７７）。ファイルの末端に達していない場合、評価される次のコードが検索される（ブロック２７１）。ファイルの末端が見つかった場合、復号化プロセスは終了する（ブロック２７９）。
【００２２】
１つの実施形態で、図２Ａと合わせて述べた第１の符号化プロセスと共に、第２の符号化プロセスが利用されてもよい。第２の符号化プロセスは、値の長いランを多く含んでいることがわかっているデータ・ストリームのために使用されてもよい。例えば、第２の符号化プロセスは同一ピクセルの長いランを多く含む画像のために使用される。１つの実施形態で、第２の符号化プロセスはフィルタをかけられたデータに使用される。第２のプロセスはデータのピクセル、バイトまたはユニットの全ての値を、直ぐ後ろに続く同一値の数のランレングスと共に符号化する。第１の符号化方法（すなわちＳＲＬＥ符号化）と第２の符号化方法は、他方の方式への切換を示すコードを含む。このことによって、符号化器はデータのタイプまたはドキュメントの既知の特性に従って、双方の符号化プロセスを用いてドキュメントを符号化することができる。第１のプロセスと第２のプロセスとの間の切換は、必要に応じてスキャンライン内で、スキャンラインからスキャンラインで、またはバンドからバンドで、符号化器によって適切に行うことができる。このことによって、画像の品質を保持しながら圧縮率を向上させることができる。切換コードによって、復号器はファイルまたはデータ・ストリームを素早く復号するために、符号化プロセスの中の切換を簡単に検出することができる。別の実施形態で、第２の符号化方法としてその他の符号化プロセスが利用されてもよい。その他の第２の符号化方法は、ＴＩＦＦ、ＪＰＥＧ、同様のアルゴリズムを含む。
【００２３】
第１と第２の符号化システムは、プレーン（例えば藍色プレーン、黄色プレーン、深紅色プレーン、黒色プレーン）、バンド、その他の同様の構造に分割されたドキュメントに使用されてもよい。第１と第２の符号化システムはまた、オブジェクト指向のドキュメントまたはファイルと共に使用されてもよい。このドキュメントまたファイルでは、主にファイルまたそれらのファイルの解釈によって関連付けられるか、または要約されるデータ上で符号化が使用される。符号化のプロセスは双方とも可逆である。
【００２４】
第１の符号化システムは、５１３．５：１（すなわち圧縮ファイルとオリジナルのファイルとの間で５１３．５：１の圧縮の比率）と０．８：１との間の圧縮率を達成する。インチ当たりのドット（ｄｐｉ）が６００の写真のファイルの圧縮率は、平均で２対１から６対１との間になる。テキストを含むファイルの圧縮率は、平均で３０対１よりも大きい。線画を含むファイルの圧縮率は、平均で１０対１よりも大きい。第２の符号化システムは３９１．２：１と０．７３：１との間の圧縮率を達成することができる。６００ｄｐｉの写真ファイルの圧縮率は、平均で３対１から１０対１との間になる。テキストを含むファイルの圧縮率は、平均で３０対１よりも大きい。線画を含むファイルの圧縮率は、平均で３０対１よりも大きい。
【００２５】
図３Ａに、符号化とデータ・ストリームを例示する。データ・ストリーム３０１は１組の連続のバイトから構成されている。バイトは１６進数で書き込まれている。最初のバイト３０３は０ｘ２０で最後のバイト３０５は０ｘ６２である。バイトは順番に処理される。最初のバイト３０３はリテラル３０７として符号化される。１つの実施形態で、前の値がなく、最初のバイト３０３はリテラルとしてカテゴリ化されなければならない。別の実施形態で、符号化プロセッサは既知のデフォルトの開始値を利用し、第１の実効値はデフォルト値に関連してカテゴリ化される。
【００２６】
データ・ストリームの次の２つのバイト３０９はいずれも０ｘ２６である。第１の値は、前の値０ｘ２０との値の差分（すなわち６）が負の１６から正の１５の定義された範囲内にあるので、近似としてカテゴリ化される。次の値もまた０ｘ２６である。この値はその前の値とまめられ、カテゴリ化は２バイトのラン３１１で近似として完成される。次のバイト３１３は、後ろに続くバイトが一致する値を有していないので、近似単一３１５としてカテゴリ化される。バイト３１７は０ｘ５７の値を有する。このバイトは定義された範囲に入らない前のバイトとの値の差分を有する。バイト３１７はリテラルとして符号化される。その後ろに続く値０ｘ５７を有する１組のバイト３１９は、８つのランで一致として符号化される。特殊なファイルの末端コード３２１はファイルの末端で生成される。
【００２７】
図３Ｂにデータ・ストリーム３０１の符号化を例示する。この符号化は演算コードと表Ｉの形式を利用する。リテラル、近似、一致、特殊なエスケープ・コードの基本カテゴリへのデータのカテゴリ化のために、その他のコードが使用されてもよいことは当業者には理解されよう。値は全て２進数の中にある。演算コードはデータのカテゴリ化のタイプを識別する。演算コードに関連したランレングス領域は、カテゴリのために連続する値の個数を識別する。値領域は符号化された数列の実効値か、または前の符号化からの値の差分である。リテラルの領域の長さは、ピクセル当たり８ビットのデータの符号化に基づく。この領域の大きさは、符号化されるデータのピクセル当たりビットの大きさを反映して調整されてもよい。近似の演算コードの領域の大きさは、このデータのカテゴリを識別する範囲に基づく。領域の長さは、より広い、またはより狭い範囲が利用される場合、調整されてもよい。
【００２８】
【表１】
2007507182.tif 000003
【００２９】
図３Ｃに、データ・ストリームを符号化する第２の方式を例示した図を示す。符号化の第２の方式は、同一値の長いランを有するデータのために最適化されている。データ・ストリーム３５１は値とランレングスとのペア３５３の１組に分解されている。各ペアの値は数列の値であり、ランレングスは値の連続して現れる個数である。データ・ストリーム３５１の第１の値３６１は０ｘ００である。一致している連続の値が８つある。例示的な符号化のストリーム３５５は、値とランレングスとのペア３５３の２進法表現である。符号化は、最初の８ビットが符号化された値を示し、次の３ビットがランの長さを示すか、または長いランが後ろに続く１０ビットで符号化されることを示す例示的な符号化機構に基づく（すなわちレングスの中で、２進値０ｂ０００から０ｂ１１０は１から７のランレングスを符号化し、一方２進値０ｂ１１１は次の１０ビットが８から１０２７のランを符号化することを示す）。ランレングスを表すために他の同様の符号化機構が使用されてもよいことは、当業者には理解されよう。例えば、３または１０ビット以上がランレングスを示すために使用されてもよく、または単一のランの領域の長さが使用されてもよい。第２の方式はまた、ファイルの末端（例えば２進値ｘｘｘｘｘｘｘｘ１１１  １１１１１１１１１００）、または切換を符号化する方式（例えば２進値ｘｘｘｘｘｘｘｘ１１１  １１１１１１１１１１）を示すために確保された値を有していてもよい。
【００３０】
上記の明細書で、本発明をその具体的な実施形態を参照して説明してきた。しかしながら、添付の特許請求の範囲で言及されているように、本発明のより広い精神および範囲から逸脱することなく様々な修正や変更が可能であることは明白である。したがって、本明細書および図面は、限定というよりもむしろ実例としての意味で考慮される。
【図面の簡単な説明】
【００３１】
【図１Ａ】復号化のデータ経路を例示する図である。
【図１Ｂ】符号化のデータ経路を例示する図である。
【図２Ａ】符号化プロセスのストリーム図である。
【図２Ｂ】復号化プロセスのストリーム図である。
【図３Ａ】カテゴリ化を例示する図である。
【図３Ｂ】符号化を例示する図である。
【図３Ｃ】符号化の第２の方式を例示する図である。
【図１Ａ】
2007507182.tif 000004
【図１Ｂ】
2007507182.tif 000005
【図２Ａ】
2007507182.tif 000006
【図２Ｂ】
2007507182.tif 000007
【図３Ａ】
2007507182.tif 000008
【図３Ｂ】
2007507182.tif 000009
【図３Ｃ】
2007507182.tif 000010
【国際調査報告】
2007507182.tif 000011