(57)【要約】【課題】本発明では、より高速で、より圧縮効率が高く、かつ、より安価に辞書型符号化方式による画像データの圧縮を行うことを目的とする。【解決手段】文字列単位で圧縮する適応型の辞書型符号化方法（Ｌｅｍｐｅｌ−Ｚｉｖ法）を採用したデータ圧縮装置において、Ｑバッファに隣接しているＰバッファ（履歴バッファ）を、Ｑバッファ内の現在の圧縮対象文字データの直前から処理済の文字列データ側へ任意に移動させて、辞書型符号化方式による符号化を行うことにより、上記課題の解決を図る。【選択図】      図１
2008193567.tif 000002
【特許請求の範囲】
【請求項１】
入力データを辞書型符号化方式により符号化して圧縮するデータ圧縮装置において、
未符号化データが格納される未符号化データ格納領域と、該未符号化データ格納領域中の前記未符号化データが符号化されて符号化済みデータの履歴が先入れ先出し式で格納される符号化データ履歴格納領域であって、かつ前記符号化済データのうち前記未符号化データ格納領域の先頭位置にある前記未符号化データから連続するデータ列と最長一致する該符号化済データの部分列を検索するための検索範囲である検索領域が含まれる該符号化データ履歴格納領域と、を有する符号化用入力データバッファと、
前記検索領域と前記未符号化データ格納領域とが隣接する状態から、該未符号化データ格納領域に対して該検索領域を所定量ずらし、該検索領域内で前記検索を行って検索された該符号化済データの部分列の一致開始位置及び一致長で指定して符号化し、該符号化済み入力データを前記符号化データ履歴格納領域に移して新たな符号化済みデータとし、次の未符号化データを符号化する圧縮手段と、
を備えることを特徴とするデータ圧縮装置。
【請求項２】
前記データ圧縮装置は、さらに、
前記未符号化データに対して施されているデータ処理の規則性に基づいて、前記検索領域と前記未符号化データ格納領域とが隣接する状態から、該未符号化データ格納領域に対して該検索領域を前記所定量ずらすためのずらし量を設定するずらし量設定手段
を備えることを特徴とする請求項１に記載のデータ圧縮装置。
【請求項３】
前記ずらし量設定手段は、前記未符号化データに対して施されているデータ処理がディザリングである場合、ディザパターンの周期に基づいて、前記ずらし量を設定する
ことを特徴とする請求項２に記載のデータ圧縮装置。
【請求項４】
前記ずらし量設定手段は、前記ずらし量を示す情報を前記符号化データに付与する
ことを特徴とする請求項２に記載のデータ圧縮装置。
【請求項５】
前記圧縮手段は、前記符号化済データの部分列の一致開始位置及び一致長で指定して符号化して１バイトデータとし、バイト単位の圧縮処理を行う
ことを特徴とする請求項１に記載のデータ圧縮装置。
【請求項６】
請求項１に記載のデータ圧縮装置により符号化された符号化データを辞書型符号化方式により復号処理するデータ復号装置において、
順次入力される前記符号化データが復号されて該復号済みデータの履歴が先入れ先出し方式で格納される復号データ履歴格納領域を有する復号用入力データバッファと、
入力された前記符号化データから、前記復号データ履歴格納領域内の前記復号済みデータの所定位置からの相対的な位置を示すずらし量を取得するずらし量取得手段と、
前記符号化データから前記一致開始位置と前記一致長を取得し、前記ずらし量分ずらした前記復号データ履歴格納領域内の該一致開始位置の示す位置から前記一致長に対応する前記復号済みデータの部分列を復号データとして出力する復号手段と、
を備えることを特徴とするデータ復号装置。
【請求項７】
入力データを辞書型符号化方式により符号化して圧縮するデータ圧縮方法において、
未符号化データが格納される未符号化データ格納領域と、該未符号化データ格納領域中の前記未符号化データが符号化されて符号化済みデータの履歴が先入れ先出し式で格納される符号化データ履歴格納領域であって、かつ前記符号化済データのうち前記未符号化データ格納領域の先頭位置にある前記未符号化データから連続するデータ列と最長一致する該符号化済データの部分列を検索するための検索範囲である検索領域が含まれる該符号化データ履歴格納領域と、を有する符号化用入力データバッファ内の、前記検索領域と前記未符号化データ格納領域とが隣接する状態から、該未符号化データ格納領域に対して該検索領域を所定量ずらし、
該検索領域内で前記検索を行って検索された該符号化済データの部分列の一致開始位置及び一致長で指定して符号化し、
該符号化済み入力データを前記符号化データ履歴格納領域に移して新たな符号化済みデータとし、次の未符号化データを符号化する、
を備えることを特徴とするデータ圧縮方法。
【請求項８】
請求項７に記載のデータ圧縮方法により符号化された符号化データを辞書型符号化方式により復号処理するデータ復号方法において、
入力された前記符号化データから、順次入力される前記符号化データが復号されて該復号済みデータの履歴が先入れ先出し方式で格納される復号データ履歴格納領域を有する復号用入力データバッファ内の前記復号データ履歴格納領域内の前記復号済みデータの所定位置からの相対的な位置を示すずらし量を取得し、
前記符号化データから前記一致開始位置と前記一致長を取得し、
前記ずらし量分ずらした前記復号データ履歴格納領域内の該一致開始位置の示す位置から前記一致長に対応する前記復号済みデータの部分列を復号データとして出力する、
ことを特徴とするデータ復号方法。
【請求項９】
入力データを辞書型符号化方式により符号化するデータ圧縮処理をコンピュータに実行させるデータ圧縮プログラムにおいて、
未符号化データが格納される未符号化データ格納領域と、該未符号化データ格納領域中の前記未符号化データが符号化されて符号化済みデータの履歴が先入れ先出し式で格納される符号化データ履歴格納領域であって、かつ前記符号化済データのうち前記未符号化データ格納領域の先頭位置にある前記未符号化データから連続するデータ列と最長一致する該符号化済データの部分列を検索するための検索範囲である検索領域が含まれる該符号化データ履歴格納領域と、を有する符号化用入力データバッファ内の、前記検索領域と前記未符号化データ格納領域とが隣接する状態から、該未符号化データ格納領域に対して該検索領域を所定量ずらす処理と、
該検索領域内で前記検索を行って検索された該符号化済データの部分列の一致開始位置及び一致長で指定して符号化する処理と、
該符号化済み入力データを前記符号化データ履歴格納領域に移して新たな符号化済みデータとし、次の未符号化データを符号化する処理と、
をコンピュータに実行させるデータ圧縮プログラム。
【請求項１０】
請求項９に記載のデータ圧縮プログラムにより符号化された符号化データを辞書型符号化方式により復号する処理をコンピュータに実行させるデータ復号プログラムにおいて、
入力された前記符号化データから、順次入力される前記符号化データが復号されて該復号済みデータの履歴が先入れ先出し方式で格納される復号データ履歴格納領域を有する復号用入力データバッファ内の前記復号データ履歴格納領域内の前記復号済みデータの所定位置からの相対的な位置を示すずらし量を取得する処理と、
前記符号化データから前記一致開始位置と前記一致長を取得する処理と、
前記ずらし量分ずらした前記復号データ履歴格納領域内の該一致開始位置の示す位置から前記一致長に対応する前記復号済みデータの部分列を復号データとして出力する復号処理と、
をコンピュータに実行させるデータ復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字データや画像データ等の各種データの圧縮技術及びその復元技術に関する。
【背景技術】
【０００２】
近年のコンピュータの急速な進歩に伴い、文字コード、ベクトル情報、画像など様々な種類のデータがコンピュータで扱われるようになった。同時に、扱われるデータ量も急速に増加し、大容量のデータが取り扱われるようになった。
【０００３】
そこで、データの伝送時間を短縮するためや記憶装置を効率的に利用するために、データ中の冗長な部分を省いてデータ量を圧縮することが行われている。データを圧縮する際に用いられる符号化方法としては、様々なものが知られている。このうち、文字コード、ベクトル情報、画像などの対象データに限定せずに様々なデータに適用可能な符号化は、ユニバーサル符号化と呼ばれている。
【０００４】
ユニバーサル符号化としては、文字列の類似性を利用する辞書型符号化と、文字の出現頻度を利用する確率統計型符号化が知られている（非特許文献１）。
なお、以下の説明においては情報理論に基づきデータの１ｂｙｔｅ単位を「文字」又は「バイトデータ」と表記し、データが任意ｂｙｔｅつながったものを「文字列」又は「データ列」と表記することにする。
【０００５】
まず、辞書型符号化の代表的な方法としてＬｅｍｐｅｌ−Ｚｉｖ符号化がある。Ｌｅｍｐｅｌ−Ｚｉｖ符号化では、（１）スライド辞書型（ユニバーサル型、ＬＺ１、ＬＺ７７ともいう）と、（２）動的辞書型（増分分解型、ＬＺ２、ＬＺ７８ともいう）の２つのアルゴリズムが提案されている。
【０００６】
ＬＺ７７（ＬＺ１）については、非特許文献２がある。さらに、スライド辞書型アルゴリズムの改良として、ＬＺＳＳ符号（非特許文献３）や１／４インチ・カートリッジ磁気テープの標準圧縮方式であるＱＩＣ−１２２符号等がある。
【０００７】
ＬＺ７８（ＬＺ２）については、非特許文献４等で説明されている。また、動的辞書型アルゴリズムの改良としては、ＬＺＷ（Ｌｅｍｐｅｌ−Ｚｉｖ−Ｗｅｌｃｈ）符号（非特許文献５）等がある。
【０００８】
従来のスライド辞書型Ｌｅｍｐｅｌ−Ｚｉｖ符号化のアルゴリズム（特許文献１，特許文献２）を説明する。
まず、スライド辞書型アルゴリズム（ＬＺ１）について説明する。スライド辞書型アルゴリズム（ＬＺ１）は、演算量は多いが、高圧縮率が得られる方法である。即ち、符号化データを過去のデータ系列の任意の位置から一致する最長の系列に区切り（部分列）、過去の文字列の複製として符号化する方法である。
【０００９】
図７は、従来におけるユニバーサル型Ｌｅｍｐｅｌ−Ｚｉｖ符号の符号器の原理図を示す。Ｐバッファには符号化済みの入カデータが格納されており、Ｑバッファにはこれから符号化するデータが入力されている。
【００１０】
Ｑバッファの文字列をＰバッファの系列と照合し、Ｐバッファ中で一致する最長の文字部分列を求め、Ｐバッファ中でこの最長文字列を指定するために、［Ｐバッファ中の最長一致系列（部分文字列）の開始位置］、［一致する長さ］、及び［不一致の文字（シンボル）］からなる情報の組を符号化する。
【００１１】
次に、Ｑバッファ内の符号化した文字列をＰバッファに移して新たなデータをＱバッファに入力する。以下、同様の操作を繰り返し、データを部分列に分解して符号化する。
このようにＬｅｍｐｅｌ−Ｚｉｖ符号では、現在の文字コードの系列を符号化済みの過去の系列からの複製として符号化するものである。Ｌｅｍｐｅｌ−Ｚｉｖ符号を用いた場合、文字コードの文書情報は１／２程度に圧縮できる。
【００１２】
次に、図８〜図１１を用いて、ＬＺＳＳ符号について説明する。
図８は、従来におけるＬＺＳＳ符号化で用いるバッファ構成図である。ＬＺＳＳ符号化では、ＱバッファとＰバッファを用いる。
【００１３】
Ｑバッファには、図９（ｂ）に示すように、例えば４ビットのインデックス情報をもって、これから符号化する文字列を格納する例えば４ビットのインデックス情報に対応して１６個の文字数を格納することができる。
【００１４】
Ｐバッファには、図９（ａ）に示すように、例えば１２ビットのインデックス情報をもって４０９６個の符号化済の文字列を格納することができる。
図９は、従来におけるＬＺＳＳ符号による符号化の処理フローを示す。まず、Ｐバッファを空にしてＱバッファに入カデータを詰める（ステップ１０１。以下、ステップを「Ｓ」と称する）。その後に、Ｑバッファの文字列とＰバッファの文字列とを照合し最長一致する文字部分列（Ｓｔｒ）を求める（Ｓ１０２）。
【００１５】
文字列Ｓｔｒが２文字以上の場合（Ｓ１０３で「Ｙｅｓ」へ進む）、求められた文字部分列を指定するために［文字列Ｓｔｒの出現位置］［一致長］の組で符号化する（Ｓ１０５）。
【００１６】
続いてＱバッファ内の符号化した文字列をＰバッファに移して、Ｑバッファ内に符号化した文字列分の新たな文字列を入力していくことで符号化を実行する（Ｓ１０６）。
尚、最長一致文字部分列Ｓｔｒが１バイト（１文字）のときは（Ｓ１０３で「Ｎｏ」へ進む）、生データで符号化した方が有利であるので、［生データ１バイト］をそのまま出力し（Ｓ１０４）、Ｓ１０６の処理を行う。
【００１７】
図１０は、従来におけるＬＺＳＳ符号化の符号化データの出力型式を示す。ＬＺＳＳ符号化の符号化データは、８個のデータ（符号化データ（２バイト）もしくは生データ（１バイト））を１組のデータとしてまとめると共に、そのまとめられた各８個のデータが符号化データなのか生データなのかを示すＳ１０４，Ｓ１０５で得られたフラグビットでなる８ビット識別データを先頭に付加し、１組のデータとして出力する。
【００１８】
図１１は、従来におけるＬＺＳＳ符号による復号化の処理フローを示す。まず、Ｐバッファの内容を空にする（Ｓ１１１）。データエンドでない場合（Ｓ１１２で「Ｎｏ」へ進む）、図１０の識別データからフラグ１ビットを取り出す（Ｓ１１３）。
【００１９】
Ｓ１１３で取り出したフラグ１ビットが「０（圧縮データ）」の場合（Ｓ１１４で「Ｙｅｓ」へ進む）、符号化データから２バイトを取り出す（Ｓ１１５）。その取り出した符号化データ（２バイト）を「一致開始位置」と「一致長」とに分解し、Ｐバッファ上の一致開始位置で示される文字列から一致長分のサイズを復号データとして出力する（Ｓ１１６）。
【００２０】
一方、Ｓ１１３で取り出したフラグ１ビットが「１（生データ）」の場合（Ｓ１１４で「Ｎｏ」へ進む）、符号化データから１バイト取り出し、その取り出した１バイトのデータをそのまま復号データとして出力する（Ｓ１１７）。
【００２１】
Ｓ１１６またはＳ１１７の処理後、復号データをＰバッファに移すと共に、移したサイズ分の最も古いデータをＰバッファから捨てる（Ｓ１１８）。符号化データがエンドになるまでＳ１１３〜Ｓ１１８を繰り返す。
【００２２】
このようにして、ＬＺＳＳ符号による符号化を行ってデータを圧縮し、その圧縮データをＬＺＳＳ符号による復号を行って復号することができる。
ところで、従来、多階調画像を印刷する多階調画像印刷装置においては、サーマルヘッドが１ピクセル当たり表現できる階調数が２階調であるため、マトリックス（ディザパターン）によるディザ法（ディザリング）を用いて多階調画像を擬似的に２階調の面積階調に変換するようにしていた。このディザ法では多階調画像を、例えば４×４（擬似１６階調）や８×８（擬似６４階調）画素の組織的なブロックに分割して各ブロック毎に２値化するもので、階調変化がなめらかな２値画像を得ることができる。
【００２３】
図１２は、従来の多階調画像印刷装置において、ディザリングによりＲＧＢデータをハーフトーン処理してデータ圧縮する説明図である。まず、Ｒ（赤）、Ｇ（緑）、Ｂ（青）がそれぞれ８ビットデータからなるＲＧＢデータ１００があるとする。
【００２４】
ＲＧＢデータ１００のＲ（赤）、Ｇ（緑）、Ｂ（青）の色データは、色変換処理１０１により、シアン（Ｃ）、マゼンダ（Ｍ）、イエロー（Ｙ）、ブラック（Ｋ）のデータ（各８ビット）に変換され、Ｃプレーンデータ（１０２Ｃ）、Ｍプレーンデータ（１０２Ｍ）、Ｙプレーンデータ（１０２Ｙ）、Ｋプレーンデータ（１０２Ｋ）が生成される。
【００２５】
次に、シアン（Ｃ）、マゼンダ（Ｍ）、イエロー（Ｙ）、ブラック（Ｋ）のそれぞれについて、ディザリング（ディザパターン（疑似網点化パターン）による処理）１０４が行われる。ＣＭＹＫデータ（各８ビット）はそれぞれ、２値化されることにより、１ビットデータに変換される。
【００２６】
ここでディザリング１０４について述べる。ディザリングの前提として、Ｃプレーンデータ（１０２Ｃ）、Ｍプレーンデータ（１０２Ｍ）、Ｙプレーンデータ（１０２Ｙ）、Ｋプレーンデータ（１０２Ｋ）にはそれぞれ対応するディザパターン（Ｃのディザパターン（１０３Ｃ）、Ｍのディザパターン（１０３Ｍ）、Ｙのディザパターン（１０３Ｙ）、Ｋのディザパターン（１０３Ｋ））が用意されている。
【００２７】
ここで、シアン（Ｃ）のディザリングを例として説明する。同図において、Ｃプレーンデータ（１０２Ｃ）の各ドットＣ１，Ｃ２，・・・の階調値は、８ビットで構成されている。
【００２８】
Ｃのディザパターン（１０３Ｃ）は、同図では、縦５１２［バイト］×横５１２［バイト］のディザマトリックス（周期：５１２［バイト］）から構成されているものとする。ディザマトリックスの各要素ＤＣ１，ＤＣ２，・・・ＤＣ５１２には、閾値が格納されている。
【００２９】
Ｃのディザパターン（１０３Ｃ）を用いて、Ｃプレーンデータ（１０２Ｃ）のディザリングを行うと、２値化されることにより、８ビットデータが１ビットデータに変換される。例えば、Ｃプレーンデータ（１０２Ｃ）のＣ１の階調値とＣのディザパターン（１０３Ｃ）の閾値ＤＣ１とを比較し、Ｃ１≧ＤＣ１なら０（１ビット）を出力し、Ｃ１＜ＤＣ１なら１（１ビット）を出力する。
【００３０】
Ｃプレーンデータ（１０２Ｃ）のＣ２，Ｃ３，・・・，Ｃ５１２は、それぞれ、Ｃのディザパターン（１０３Ｃ）の閾値ＤＣ２、ＤＣ３，・・・，ＤＣ５１２と比較して、１または０を出力する。Ｃプレーンデータ（１０２Ｃ）のＣ５１３は、再びＤＣ１と比較して、１または０を出力する。以降、同様にして当該処理を繰り返す。
【００３１】
そうすると、２値化されたＣの画像データ（１ビットデータ）１０５Ｃが得られる。このとき、例えば、同じ色で矩形領域を塗り潰すような場合、出力ドット値は、ディザパターンの周期ごとに同じ値となる（Ｃ１，・・・，Ｃ８と、Ｃ５１３，・・・，Ｃ５２０とは同じ値である。）。
【００３２】
マゼンダ（Ｍ）、イエロー（Ｙ）、ブラック（Ｋ）のプレーンデータについても、Ｃ（シアン）と同様にしてディザリングを行い、それぞれＭの画像データ（１ビットデータ）１０５Ｍ、Ｙの画像データ（１ビットデータ）１０５Ｙ、Ｋの画像データ（１ビットデータ）１０５Ｋが得られる。
【特許文献１】特許第３２４１７８８号
【特許文献２】特許第２９４０９４８号
【非特許文献１】宗像清治、「Ｚｉｖ−Ｌｅｍｐｅｌのデータ圧縮法」、情報処理、Ｖｏｌ．２６，Ｎｏ．１，１９８５年
【非特許文献２】Ｊ．Ｚｉｖ，Ａ．Ｌｅｍｐｅｌ，「Ａ  ＵｎｉｖｅｒｓａｌＡ１９０ｒｉｔｈｍｆｏｒＳｅｑｕｅｎｔｉａＩＤａｔａＣｏｍｐｒｅｓｓｉｏｎ（順次データ圧縮に関する万能アルゴリズム）」、情報理論に関するＩＥＥＥ会報、ｖｏｌ．ＩＴ−２３，Ｎｏ３、ＰＰ．３３７〜３４３（１９７７年５月）、
【非特許文献３】（ＴＣ．Ｂｅｌｌ，“Ｂｅｔｔｅｒ  ＯＰＭ／Ｌ  Ｔｅｘｔ  Ｃｏｍｐｒｅｓｓｉｏｎ”，ＩＥＥＥ  Ｔｒａｎｓ．Ｏｎ  Ｃｏｍｍｕｎ．，ｖｏｌ．ＣＯＭ−３４，Ｎｏ．１２，Ｄｅｃ．１９８６）
【非特許文献４】Ｊ．Ｚｉｖ，Ａ．Ｌｅｍｐｅｌ，「Ｃｏｍｐｒｅｓｓｉｏｎ  ｏｆ  Ｉｎｄｉｖｉｄｕａｌ  Ｓｅｑｕｅｎｃｅｓ  ｖｉａ  Ｖａｒｉａｂｌｅ  Ｒａｔｅ  Ｃｏｄｉｎｇ（可変速符号化による個別連鎖の圧縮）」、情報理論に関するＩＥＥＥ会報、ｖｏｌ．ＩＴ−２４、Ｎｏ．５、ｐｐ．５３０〜５３６（１９７８年９月）
【非特許文献５】Ｔ．Ａ．Ｗｅｌｃｈ，“Ａ  Ｔｅｃｈｎｉｑｕｅ  ｆｏｒ  Ｈｉｇｈ−ＰｅｒｆｏｒｍａｎｃｅＤａｔａＣｏｍｐｒｅｓｓｉｏｎ”，Ｃｏｍｐｕｔｅｒ，Ｊｕｎｅ１９８４
【発明の開示】
【発明が解決しようとする課題】
【００３３】
以下に示すように、ＬＺ１系ＬＺ符号化には問題（１）及び（２）、ＬＺＳＳ符号化には問題（３）がある。
（１）ユニバーサル型のアルゴリズムは、符号化済みの文字列の中から符号化対象の文字列に最大長に一致する文字部分列を検索して、その文字部分列を複製として符号化を実行する方式であって、増分分解型よりも高いデータ圧縮率が実現できる方式である。
【００３４】
このようなアルゴリズムを実装していくにあたっては、データの圧縮率をより高めていく構成を採用していく必要があるとともに、符号化された符号化データが利用され易い形式となる構成にする必要がある。
【００３５】
（２）データの圧縮率を高めていくためには、Ｐバッファの格納文字数を多くしていく必要があるとともに、Ｑバッファの格納文字数を多くしていく必要がある。しかるに、ＰバッファとＱバッファの格納文字数を増加させると、符号化データが８ビットの倍数でなくなるため、データを転送する際にビット詰め等の面倒な処理が強いられ極めて不便なものとなる。
【００３６】
そうかといって、Ｐバッファのビット幅を１８ビット、Ｑバッファのビット幅を６ビット等といったように符号化データが３バイトになるようにすれば、符号化データのデータ量が著しく多くなってしまうという問題点がある。
【００３７】
また、ハードウェアでＬＺ符号化を実現する場合には次の問題がある。より大きなウィンドウサイズに伴う１つの問題は、全体の圧縮及び伸張エンジンが単一の集積回路上に配置されるべきである場合には特に、回路が膨大になり、必要なハードウェアのコストが非常に高くなることである。
【００３８】
また、ソフトウェアでＬＺ符号化を実現する場合には次の問題がある。ウィンドウサイズを大きくすると、比較演算量が非常に膨大になって性能劣化を引き起こし、その性能劣化が多くの場合に許容され得ない。
【００３９】
したがって、あらゆる場合において、通常は、圧縮アルゴリズムの互換性のあるソフトウェア及びハードウェアのバージョンを有することが望ましい。このとき、アルゴリズムによって達成され得る圧縮比率と共に、ハードウェア及びソフトウェアの両方のコスト及び速度が考慮されなくてはならない。
【００４０】
（３）上記のＬＺＳＳ符号化では、Ｐバッファとして４０９６個の文字列とＱバッファとして１６個の文字列分のバッファを持たなくてはならない。このことは、上記の問題（２）に当てはまる。
【００４１】
また、図１３のように、符号化データを１バイトデータとする方法もある。この場合、Ｐバッファとして３２個の文字列、Ｑバッファとして８個の文字列分のバッファで済むが、Ｐバッファが３２個の文字列と少ないため、同じ値のデータが出現する可能性が低くなり、圧縮効率が悪くなる。
【００４２】
特に、画像データの場合、画像データはディザパターンによりディザリングされて生成されているために、ディザパターンの周期ごとに同じ値のデータが出現する可能性が高い。図１３で示したように、ディザパターンの周期として５１２［バイト］のようなものもあり、１バイトの符号化データでは、図１４に示すように、圧縮効率が悪い。
【００４３】
図１４は、図１３の符号化データフォーマットを用いて、図１２の画像データ（１０５Ｃ）を符号化する場合の例を示す。図１３で説明したように、ある色で塗りつぶされた矩形領域の場合、同じ色でも、ディザパターンの周期ごとに同じ値のデータとなる（Ｃ１−８とＣ５１３−５２０とは同じ値であり、Ｃ９−１６とＣ５２１−５２８とは同じ値であり、それ以降も同様である。）。したがって、同じ入力データ列同士を圧縮するようにすれば、圧縮効率は向上する。
【００４４】
ここで、Ｃの画像データ（１０５Ｃ）をＬＺ７７（ＬＺ１）で圧縮する場合、Ｃ１−８とＣ５１３−５２０とのギャップはディザパターンの周期に対応する。そうすると、周期［バイト］≧Ｐバッファの許容量［バイト］の場合には、Ｃ５１３−５２０と一致するデータ列Ｃ１−８がＰバッファに存在しないこととなる。そのため、Ｃ５１３−５２０と一致するデータ列Ｃ１−８をＰバッファに含めようとすれば、Ｐバッファの格納文字数をディザパターンの周期よりも多くする必要があるが、そうすると前記問題（２）に直面する。
【００４５】
上記の課題を鑑み、本発明では、より高速で、より圧縮効率が高く、かつ、より安価に辞書型符号化方式による画像データの圧縮を行うことを目的とする。
【課題を解決するための手段】
【００４６】
本発明にかかる、入力データを辞書型符号化方式により符号化して圧縮するデータ圧縮装置は、未符号化データが格納される未符号化データ格納領域と、該未符号化データ格納領域中の前記未符号化データが符号化されて符号化済みデータの履歴が先入れ先出し式で格納される符号化データ履歴格納領域であって、かつ前記符号化済データのうち前記未符号化データ格納領域の先頭位置にある前記未符号化データから連続するデータ列と最長一致する該符号化済データの部分列を検索するための検索範囲である検索領域が含まれる該符号化データ履歴格納領域と、を有する符号化用入力データバッファと、前記検索領域と前記未符号化データ格納領域とが隣接する状態から、該未符号化データ格納領域に対して該検索領域を所定量ずらし、該検索領域内で前記検索を行って検索された該符号化済データの部分列の一致開始位置及び一致長で指定して符号化し、該符号化済み入力データを前記符号化データ履歴格納領域に移して新たな符号化済みデータとし、次の未符号化データを符号化する圧縮手段と、を備えることを特徴とする。
【００４７】
このように構成することにより、より高速で、より圧縮効率の高い、かつ、より安価でデータ圧縮を行うことができる。
前記データ圧縮装置は、さらに、前記未符号化データに対して施されているデータ処理の規則性に基づいて、前記検索領域と前記未符号化データ格納領域とが隣接する状態から、該未符号化データ格納領域に対して該検索領域を前記所定量ずらすためのずらし量を設定するずらし量設定手段を備えることを特徴とする。
【００４８】
このように構成することにより、一定の規則性をもって配列されているデータ列に対して、Ｐバッファ（履歴バッファ）を現在の圧縮対象文字データの直前から、処理済の文字列データのその規則性に基づいた位置にずらすことにより、圧縮データの圧縮率を向上させることができる。
【００４９】
前記データ圧縮装置において、前記ずらし量設定手段は、前記未符号化データに対して施されているデータ処理がディザリングである場合、ディザパターンの周期に基づいて、前記ずらし量を設定することを特徴とする。
【００５０】
このように構成することにより、Ｐバッファの先頭位置とＱバッファの先頭位置とのギャップをディザパターンの周期と一致させることができるので、同じ色で矩形領域を塗り潰すような場合に一定周期で同じデータ列が出現するという特徴を利用して、効率よい圧縮処理を行うことができる。
【００５１】
前記データ圧縮装置において、前記ずらし量設定手段は、前記ずらし量を示す情報を前記符号化データに付与することを特徴とする。
このように構成することにより、圧縮データを復号する場合、Ｐバッファをどのくらいずらせばよいかを復号する側で認識することができる。
【００５２】
前記データ圧縮装置において、前記圧縮手段は、前記符号化済データの部分列の一致開始位置及び一致長で指定して符号化して１バイトデータとし、バイト単位の圧縮処理を行うことを特徴とする。
【００５３】
このように構成することで、全てバイトデータ扱いとしたことにより、ビット操作を極力少なくすることができ、処理の高速化を図ることができる。
本発明にかかる、前記データ圧縮装置により符号化された符号化データを辞書型符号化方式により復号処理するデータ復号装置は、順次入力される前記符号化データが復号されて該復号済みデータの履歴が先入れ先出し方式で格納される復号データ履歴格納領域を有する復号用入力データバッファと、入力された前記符号化データから、前記復号データ履歴格納領域内の前記復号済みデータの所定位置からの相対的な位置を示すずらし量を取得するずらし量取得手段と、前記符号化データから前記一致開始位置と前記一致長を取得し、前記ずらし量分ずらした前記復号データ履歴格納領域内の該一致開始位置の示す位置から前記一致長に対応する前記復号済みデータの部分列を復号データとして出力する復号手段と、を備えることを特徴とする。
【００５４】
このように構成することにより、可逆的に（無損失）復号化が行われ、圧縮処理に対応する復号処理を行うことができる。
本発明にかかる入力データを辞書型符号化方式により符号化して圧縮するデータ圧縮方法は、未符号化データが格納される未符号化データ格納領域と、該未符号化データ格納領域中の前記未符号化データが符号化されて符号化済みデータの履歴が先入れ先出し式で格納される符号化データ履歴格納領域であって、かつ前記符号化済データのうち前記未符号化データ格納領域の先頭位置にある前記未符号化データから連続するデータ列と最長一致する該符号化済データの部分列を検索するための検索範囲である検索領域が含まれる該符号化データ履歴格納領域と、を有する符号化用入力データバッファ内の、前記検索領域と前記未符号化データ格納領域とが隣接する状態から、該未符号化データ格納領域に対して該検索領域を所定量ずらし、該検索領域内で前記検索を行って検索された該符号化済データの部分列の一致開始位置及び一致長で指定して符号化し、該符号化済み入力データを前記符号化データ履歴格納領域に移して新たな符号化済みデータとし、次の未符号化データを符号化する、を備えることを特徴とする。
【００５５】
このように構成することにより、より高速で、より圧縮効率の高い、かつ、より安価でデータ圧縮を行うことができる。
本発明にかかる、前記データ圧縮方法により符号化された符号化データを辞書型符号化方式により復号処理するデータ復号方法は、入力された前記符号化データから、順次入力される前記符号化データが復号されて該復号済みデータの履歴が先入れ先出し方式で格納される復号データ履歴格納領域を有する復号用入力データバッファ内の前記復号履歴格納領域内の前記復号済みデータの所定位置からの相対的な位置を示すずらし量を取得し、前記符号化データから前記一致開始位置と前記一致長を取得し、前記ずらし量分ずらした前記復号データ履歴格納領域内の該一致開始位置の示す位置から前記一致長に対応する前記復号済みデータの部分列を復号データとして出力する、ことを特徴とする。
【００５６】
このように構成することにより、可逆的に（無損失）復号化が行われ、圧縮処理に対応する復号処理を行うことができる。
本発明にかかる、入力データを辞書型符号化方式により符号化するデータ圧縮処理をコンピュータに実行させるデータ圧縮プログラムは、未符号化データが格納される未符号化データ格納領域と、該未符号化データ格納領域中の前記未符号化データが符号化されて符号化済みデータの履歴が先入れ先出し式で格納される符号化データ履歴格納領域であって、かつ前記符号化済データのうち前記未符号化データ格納領域の先頭位置にある前記未符号化データから連続するデータ列と最長一致する該符号化済データの部分列を検索するための検索範囲である検索領域が含まれる該符号化データ履歴格納領域と、を有する符号化用入力データバッファ内の、前記検索領域と前記未符号化データ格納領域とが隣接する状態から、該未符号化データ格納領域に対して該検索領域を所定量ずらす処理と、該検索領域内で前記検索を行って検索された該符号化済データの部分列の一致開始位置及び一致長で指定して符号化する処理と、該符号化済み入力データを前記符号化データ履歴格納領域に移して新たな符号化済みデータとし、次の未符号化データを符号化する処理と、をコンピュータに実行させる。
【００５７】
このように構成することにより、より高速で、より圧縮効率の高い、かつ、より安価でデータ圧縮を行うことができる。
本発明にかかる、前記データ圧縮プログラムにより符号化された符号化データを辞書型符号化方式により復号する処理をコンピュータに実行させるデータ復号プログラムは、入力された前記符号化データから、順次入力される前記符号化データが復号されて該復号済みデータの履歴が先入れ先出し方式で格納される復号データ履歴格納領域を有する復号用入力データバッファ内の前記復号データ履歴格納領域内の前記復号済みデータの所定位置からの相対的な位置を示すずらし量を取得する処理と、前記符号化データから前記一致開始位置と前記一致長を取得する処理と、前記ずらし量分ずらした前記復号データ履歴格納領域内の該一致開始位置の示す位置から前記一致長に対応する前記復号済みデータの部分列を復号データとして出力する復号処理と、をコンピュータに実行させる。
【００５８】
このように構成することにより、可逆的に（無損失）復号化が行われ、圧縮処理に対応する復号処理を行うことができる。
【発明の効果】
【００５９】
本発明を用いることにより、より高速で、より圧縮効率が高く、かつ、より安価に辞書型符号化方式による画像データの圧縮を行うことができる。
【発明を実施するための最良の形態】
【００６０】
本発明では、文字列単位で圧縮する適応型の辞書型符号化方法（Ｌｅｍｐｅｌ−Ｚｉｖ法）において、Ｐバッファ（履歴バッファ）を現在の圧縮対象文字データの直前から、処理済の文字列データ側へ任意に移動させて、符号化を行う。
【００６１】
本発明の第１の実施形態にかかる、入力データを辞書型符号化方式により符号化して圧縮するデータ圧縮装置は、符号化用入力データバッファ（入力データバッファ２）と、圧縮手段（圧縮手段３）とを有する。
【００６２】
符号化用入力データバッファには、未符号化データ格納領域（Ｑバッファ２２）と、符号化データ履歴格納領域（符号化データ履歴格納領域２４）とを領域がある。未符号化データ格納領域には、未符号化データが格納される。
【００６３】
符号化データ履歴格納領域には、該未符号化データ格納領域中の前記未符号化データが符号化されて符号化済みデータの履歴が先入れ先出し式で格納され、かつ、検索領域（Ｐバッファ２１）を含んでいる。
【００６４】
検索領域（Ｐバッファ２１）は、前記符号化済データのうち前記未符号化データ格納領域の先頭位置にある前記未符号化データから連続するデータ列と最長一致する該符号化済データの部分列を検索するための検索範囲である。
【００６５】
圧縮手段は、前記検索領域（Ｐバッファ２１）と前記未符号化データ格納領域（Ｑバッファ２２）とが隣接する状態から、該未符号化データ格納領域（Ｑバッファ２２）に対して該検索領域（Ｐバッファ２１）を所定量Ｚずらし、該検索領域（Ｐバッファ２１）内で前記検索を行って検索された該符号化済データの部分列の一致開始位置及び一致長で指定して符号化し、該符号化済み入力データを前記符号化データ履歴格納領域に移して新たな符号化済みデータとし、次の未符号化データを符号化する。
【００６６】
また、前記圧縮手段は、前記符号化済データの部分列の一致開始位置及び一致長で指定して符号化して１バイトデータとし、バイト単位の圧縮処理を行うことができる。
前記データ圧縮装置は、さらに、ずらし量設定手段（ずらし量設定手段５）を備える。ずらし量設定手段は、前記未符号化データに対して施されているデータ処理の規則性に基づいて、前記検索領域（Ｐバッファ２１）と前記未符号化データ格納領域（Ｑバッファ２２）とが隣接する状態から、該未符号化データ格納領域（Ｑバッファ２２）に対して該検索領域（Ｐバッファ２１）を前記所定量ずらすためのずらし量Ｚを設定する。また、前記ずらし量設定手段は、前記ずらし量を示す情報を前記符号化データに付与する。
【００６７】
なお、前記ずらし量設定手段は、前記未符号化データに対して施されているデータ処理がディザリングである場合、ディザパターンの周期に基づいて、前記ずらし量を設定することができる。
【００６８】
本発明の第２の実施形態にかかるデータ復号装置は、第１の実施形態にかかるデータ圧縮装置により符号化された符号化データを辞書型符号化方式により復号処理するものである。
【００６９】
当該データ復号装置は、復号用入力データバッファ（入力データバッファ３２）と、ずらし量取得手段（ずらし量取得手段３５）と、復号手段（復号手段３３）とを備える。
復号用入力データバッファ（入力データバッファ２１）には、順次入力される前記符号化データが復号されて該復号済みデータの履歴が先入れ先出し方式で格納される復号データ履歴格納領域を有する。
【００７０】
ずらし量取得手段は、入力された前記符号化データから、前記復号データ履歴格納領域内の前記復号済みデータの所定位置からの相対的な位置を示すずらし量を取得する。
復号手段は、前記符号化データから前記一致開始位置と前記一致長を取得し、前記ずらし量分ずらした前記復号データ履歴格納領域内の該一致開始位置の示す位置から前記一致長に対応する前記復号済みデータの部分列を復号データとして出力する。
【００７１】
（第１の実施形態）
本実施形態では、出カデータも含めて全てバイトデータ扱いとした、スライド辞書型Ｌｅｍｐｅｌ−Ｚｉｖ符号化方法（ＬＺＳＳ）において、スライド辞書のＰバッファ（履歴バッファ）を任意の位置にずらす場合について説明する。
【００７２】
図１は、本実施形態におけるデータ圧縮装置の構成概念図である。同図において、データ圧縮装置１は、入力データバッファ２、圧縮手段３、出力データバッファ４、ずらし量設定手段５から構成される。
【００７３】
入力データバッファ２には、例えば文字データ、ベクトルデータ、画像データ等のデータの入力データ列（または入力文字列）が入力される。入力データバッファ２は、例えば、ＲＡＭ（ランダムアクセスメモリ）で構成される。
【００７４】
ずらし量設定手段は、入力データ列の配列の特徴（例えば、配列の周期等）に基づいて、Ｐバッファ（履歴バッファ）を、現在の圧縮対象文字データの直前（Ｑバッファの直前）から処理済の文字列データ側へ所定文字数（ビット単位またはバイト単位）ずらす。
【００７５】
圧縮手段３は、適応型の辞書型符号化方法（Ｌｅｍｐｅｌ−Ｚｉｖ法）用いて、入力データバッファ２に入力された入力データ列に対して符号化処理を行う。適応型の辞書型符号化方法は、入力データ列を、符号化済データの部分列のうち最長一致するものを検索して符号化する方法である。
【００７６】
この適応型の辞書型符号化方法では、圧縮（符号化）されたデータであるか否かを識別する識別フラグを除く符号化データを１バイトデータとして出力し、さらに識別フラグ（１ビット）を８個まとめて１バイトデータとして出力することにより、全てバイト単位での出力としている。
【００７７】
出力データバッファ４には、圧縮手段３により符号化処理がなされた符号化データが所定のフォーマットで出力される。出力データバッファ４は、例えば、ＲＡＭ（ランダムアクセスメモリ）で構成される。出力データバッファ４に出力されたデータは、データ圧縮装置１の外部に出力される。
【００７８】
なお、圧縮手段３及びずらし量設定手段５は、ハードウェアで構成されていてもよいし、または記憶装置等に格納された当該機能を実行するプログラムを制御装置（ＣＰＵ）が読み込むことによりその機能を実現するようにしてもよい。
【００７９】
図２は、本実施形態におけるデータ圧縮方法の原理を示す。入力データバッファ２は、少なくとも、Ｐバッファ２１とＱバッファ２２の格納領域を有し、さらに、Ｐバッファ２１をＱバッファ２２の直前からずらし量Ｚ分ずらすことにより生じる可変の格納領域（ずらし格納領域）２３を有する場合がある。Ｐバッファ２１は、履歴バッファであり、本実施形態では３２バイトで構成されている。
【００８０】
Ｑバッファ２２は、供給された入力文字列（未符号化データ）をＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ、先入れ先出し）方式で格納する未符号化データ格納領域である。なお、本実施形態ではＱバッファ２２は、９バイトで構成されている。
【００８１】
Ｑバッファ２２中の未符号化データが符号化されると、ずらし格納領域２３とＰバッファ２１とからなる領域（符号化データ履歴格納領域２４）には、その符号化済みデータの履歴がＦＩＦＯ方式で順次格納される。
【００８２】
しかし、Ｐバッファ２１とずらし格納領域２３のうち、文字列単位で圧縮する適応型の辞書型符号化方法（Ｌｅｍｐｅｌ−Ｚｉｖ法）のＰバッファ（履歴バッファまたは辞書バッファ）と機能するのは、Ｐバッファ２１である。すなわち、Ｐバッファ２１が、符号化済データのうちＱバッファ２２の先頭位置にある未符号化データから連続するデータ列（同図でいえば、Ｑバッファ２２中の“ａｂｃｄ”に相当）と最長一致する該符号化済データの部分列（同図でいえば、Ｐバッファ２１中の“ａｂｃｄ”に相当）を検索するための領域（検索領域）である。
【００８３】
この場合、ずらし格納領域２３には、未符号化データが符号化された符号化済みデータの履歴が順次Ｑバッファ２２から入力されてくるので、その移ったデータ分の古いデータをＰバッファ２１に出力するようにする。このずらし格納領域の容量は、ずらし量Ｚをかえることにより可変であるから、符号化データ履歴格納領域２４中におけるＰバッファ２１の位置を調整することができる。
【００８４】
したがって、Ｐバッファずらし量Ｚを任意に設定することにより、Ｐバッファ２１を、Ｑバッファ２２の先頭からそのずらし量Ｚ分だけ入力データ列の進行方向（同図で言えば左側方向）にずらすことができる。
【００８５】
よって、入力データ列が一定の周期で繰り返されるような場合には、Ｐバッファ２１の先頭位置とQバッファの先頭位置との差がその周期となるように（周期＝Pバッファ２１の容量＋Ｐバッファのずらし量Ｚ）、ずらし量Ｚを設定することができる。
【００８６】
なお、同図に示す太枠Ａは、スライディング・ウィンドウであり、同図に示す矢印ｃ方向にスライド可能に構成されている。入力データ列は、前述のように文字データ、ベクトルデータ、画像データ等のデータであり、具体的にはスライディング・ウィンドウＡを矢印ｃ方向にスライドすることによって、Ｑバッファ２２への入力データ列の取り込みを行う。
【００８７】
ここで入力データバッファ２の動作について説明する。Ｐバッファ２１には符号化済みの入力データ列が格納されており、Ｑバッファ２２には符号化前の入力データ列が入力される。この状態で、Ｑバッファ２２に入力された入力文字列は、順次Ｐバッファ２１に格納された文字列と照合され、Ｐバッファ２１の中において一致する最長の文字列が検索される。そして、Ｐバッファ２１の中に対応する最長文字列が存在すると、符号化処理が行われる。
【００８８】
同図では、Ｑバッファ２２内には符号化処理前の入力文字列「ａｂｃｄｈ」が入力されている。Ｑバッファ２２の先頭位置からずらし量Ｚだけ離れた位置に設定されたＰバッファ２１には、既に符号化処理がなされた文字列「ａｂｃｆ・・・ａｂｃｄｅ」が入力されている。
【００８９】
この場合、Ｐバッファ内には、Ｑバッファ２２内の文字部分列と一致する文字列は、「ａ」、「ａｂ」、「ａｂｃ」、「ａｂｃｄ」とあるが、そのうち最長の文字列「ａｂｃｄ」が検索される。このとき、一致開始位置は「ｎ」、一致文字列のサイズは４バイト（４文字）である。
【００９０】
図３は、本実施形態における出力データバッファ４へ出力された圧縮データ（符号化データ）のフォーマットを示す。図３（ａ）に示すように、出力データバッファ４の先頭２バイトには、Ｐバッファ２２のずらし量Ｚが記憶されている。
【００９１】
出力データバッファ４の先頭から３バイト目に格納されているのはフラグデータであり、フラグデータの後に８個の圧縮データ（及び非圧縮データ）が記録されている。フラグデータは図３（ｂ）に示すように、１バイト（８ビット）のデータであり、フラグ１ビット“０”が非圧縮データを示し、フラグ１ビット“１”が圧縮データを示す。
【００９２】
また、図３（ｂ）に示す＃１〜＃８の各フラグは、フラグデータに続く圧縮データ（及び非圧縮データ）それぞれに付された＃１〜＃８に対応する。例えば、最初のフラグデータ（＃１）がフラグ“１”である場合、８個の圧縮データ及び非圧縮データのうち最初の（＃１）のデータは、１バイト（８ビット）の圧縮データである。
【００９３】
図３（ｅ）に示すデータ構成は、その圧縮データの例を示し、上位５ビットが一致開始位置のデータが記録され、下位３ビットが一致文字列の長さデータが記録される。したがって、Ｐバッファ２１は５ビットで表せる容量を有するバッファである。また、下位３ビットより２バイト（０００）〜９バイト（１１１）の範囲で圧縮できるから、最大で９バイトの文字列のデータの一致検索を行うことができる。
【００９４】
一方、最初のフラグデータ（＃１）がフラグ“０”である場合、８個の圧縮データ（及び非圧縮データ）のうち最初の（＃１）のデータは、１バイト（８ビット）の非圧縮データである。図３（ｄ）に示すデータ構成は、この非圧縮データの例を示し、原データのまま記憶される。
【００９５】
＃２以降の圧縮データ（及び非圧縮データ）についても＃１と同様であり、フラグデータに記録されたフラグの状態に対応した圧縮データか、または非圧縮データが記録されている。
【００９６】
尚、上記８個の圧縮データ（及び非圧縮データ）に続くフラグデータは、図３（ｃ）に示すように、＃９〜＃１６の圧縮データ（及び非圧縮データ）の情報が記録されている。本実施形態では、スライド辞書のＰバッファ（履歴バッファ）２１とＱバッファ２２を小さくし、その文字列参照の符号化データ（その識別フラグを除く）を１バイトデータとして全てバイト単位の出力としている。
【００９７】
図４は、本実施形態における圧縮（符号化）処理のフローを示す。まず、ずらし量設定手段５により、出カデータバッファ４の先頭２バイトに、Ｐバッファ２１のずらし量Ｚをセットが設定される（Ｓ１）。Ｐバッファ２１のずらし量Ｚは、任意で設定することができる。本実施形態では、ディザパターンの周期［バイト］に基づいて、Ｐバッファ２１のずらし量Ｚを設定することとする。ディザパターンの周期［バイト］は、出力ドットデータ８ビット（１バイト）の多値化に基づいて、以下の式を用いて換算する必要がある。
【００９８】
ディザパターンの周期［バイト］＝Ｌ／Ｋ
ここで、Ｌはディザパターンのサイズ［バイト］を示す。例えば、ディザパターンのサイズが１０２４×１０２４の場合には、Ｌ＝１０２４［バイト］となる。
【００９９】
Ｋの逆数（１／Ｋ）は、多値ディザ法による換算比を示す。例えば、２値化の場合には、８ビット（１バイト）データは、１ビットデータに変換されるので、１／Ｋ＝１／８である。４値化の場合には、８ビット（１バイト）データは、２ビットデータに変換されるので、１／Ｋ＝２／８＝１／４である。１６値化の場合には、８ビット（１バイト）データは、４ビットデータに変換されるので、１／Ｋ＝４／８＝１／２である。
【０１００】
そうすると、Ｐバッファ２１のずらし量Ｚは、
Ｐバッファのずらし量Ｚ＝（ディザパターンの周期）−Ｐバッファの容量
で表すことができる。これにより、Ｐバッファの先頭位置とＱバッファの先頭位置とのギャップをディザパターンの周期と一致させることができる。よって、同じ色で矩形領域を塗り潰すような場合に一定周期で同じデータ列が出現するという特徴を利用して、効率よい圧縮処理を行うことができる。
【０１０１】
次に、圧縮手段３は、入力データバッファ２において、Ｐバッファ２１及びＰバッファずらし量Ｚ分のバッファの内容を空にする（Ｓ２）。
次に、圧縮手段３は、Ｑバッファ２２に入カデータ列を詰める（Ｓ３）。圧縮手段３は、Ｐバッファ２１内の文字列から、Ｑバッファ２２の文字列に一致するＰバッファの最長の文字列Ｓｔｒを検索する（Ｓ４）。
【０１０２】
一致最長文字列Ｓｔｒが２文字以上の場合（Ｓ５で「Ｙｅｓ」へ進む）、圧縮手段３は文字列参照モードへ移行する（Ｓ７）。すなわち、検索された一致最長文字列Ｓｔｒを指定するために、［フラグビット：１］、［文字列Ｓｔｒの開始位置（５ビット）］、［一致長（３ビット）］の組を符号化し、出力データバッファ４に出力する。このとき、フラグビットの出力は、８個のフラグビットをまとめて１バイトのデータとして出力する（図３（ｂ））。
【０１０３】
一方、一致最長文字列Ｓｔｒが１文字の場合（Ｓ５で「Ｎｏ」へ進む）、圧縮手段３は生データ・モードの処理を行なう（Ｓ６）。すなわち、［フラグビット：０］及び［生データ１バイト］の組を符号化し、出カデータバッファ４に出力する。このとき、フラグビットの出力は、８個のフラグビットをまとめて、１バイトのデータとして出力する（図３（ｂ））。
【０１０４】
Ｓ６またはＳ７の処理後、圧縮手段３は、符号化済みのＱバッファ２２の文字列をＰバッファ２１の方向に移すとともに、同数の新たな文字をＱバッファ２２に入力する。同時に、Ｐバッファ２１方向に移した文字数分の最も古い文字をＰバッファ２１から捨てる（ＦＩＦＯ方式：Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）（Ｓ８）。
【０１０５】
それから、圧縮手段３は、入カデータ列が存在する間Ｓ４〜Ｓ８の処理を繰り返し（Ｓ９で「Ｎｏ」へ進む）、入力データ列がなくなれば（Ｓ９で「Ｙｅｓ」へ進む）、データ圧縮処理を終了する。
【０１０６】
本実施形態によれば、文字列の類似性に着目した、文字列単位で圧縮する適応型の辞書型符号化方法（Ｌｅｍｐｅｌ−Ｚｉｖ法）を行う場合、圧縮対象データの入力データ列の配列の規則性に基づいて、Ｐバッファ（履歴バッファ）を現在の圧縮対象文字データの直前から、処理済の文字列データの任意の位置にシフトさせることにより、より高速で、より圧縮効率の高い、かつより安価で、データ圧縮率を向上させることができる。
【０１０７】
すなわち、一定の規則性をもって配列されているデータ列に対して、Ｐバッファ（履歴バッファ）を現在の圧縮対象文字データの直前から、処理済の文字列データのその規則性に基づいた位置にずらすことにより、圧縮データの圧縮率を向上させることができる。特に、画像データのように、周期的に同じ値のデータが繰り返す可能性が多いデータには、非常に有効である。
【０１０８】
また、前記ずらし量を示す情報を前記符号化データに付与するので、圧縮データを復号する場合、Ｐバッファをどのくらいずらせばよいかを復号する側で認識することができる。
【０１０９】
また、全てバイトデータ扱いとしたことにより、ビット操作を極力少なくすることができ、処理の高速化を図ることができる。
（第２の実施形態）
本実施形態では、第１の実施形態の圧縮処理によって圧縮されたデータの復元処理について説明する。以下、具体的に説明する。
【０１１０】
図５は、本実施形態におけるデータ復号装置の構成概念図である。同図において、データ復号装置３１は、入力データバッファ３２、復号手段３３、出力データバッファ３４、ずらし量取得手段３５から構成される。
【０１１１】
ずらし量取得手段３５は、第１の実施形態においてＰバッファのずらし量Ｚが付与された圧縮データ（符号化データ）から、そのずらし量Ｚを取り出すものである。
入力データバッファ３２には、ずらし量取得手段３５により取り出されたずらし量以外の、符号化データがＦＩＦＯ方式で入力されるものであり、かつ復号済みデータの履歴が格納されるＰバッファを有する。入力データバッファ３２は、例えば、ＲＡＭ（ランダムアクセスメモリ）で構成される。なお、Ｐバッファをずらした後に生じる領域にも、ＦＩＦＯ方式で復号済みデータの履歴が格納される。すなわち、Ｐバッファは、ずらし量Ｚ分だけ拡張されることになる。
【０１１２】
復元手段３３は、ずらし量取得手段３５により取得されたＰバッファのずらし量Ｚ分だけ、入力データバッファ３２のＰバッファを拡張し、入力データバッファ３２に入力された適応型の辞書型符号化（Ｌｅｍｐｅｌ−Ｚｉｖ法）符号化データに対して、復号処理を行う。
【０１１３】
すなわち、復号手段３３は、符号化データから一致開始位置と一致長を取得して、Ｚ分ずらした後のＰバッファの先頭位置を基準とした一致開始位置の示す位置から前記一致長に対応する前記復号済みデータの部分列を復号データとして出力する。
【０１１４】
なお、復元手段３３、ずらし量取得手段３５は、ハードウェアで構成されていてもよいし、または記憶装置等に格納された当該機能を実行するプログラムを制御装置（ＣＰＵ）が読み込むことによりその機能を実現するようにしてもよい。
【０１１５】
復元手段３３によって復号されたデータは、出力データバッファ３４を介して、データ復号装置３１の外部へ出力される。出力データバッファ３４は、例えば、ＲＡＭ（ランダムアクセスメモリ）で構成される。
【０１１６】
図６は、本実施形態における復号処理のフローを示す。まず、第１の実施形態で圧縮された圧縮データ（符号化データ）がデータ復号装置３１へ入力される。すると、ずらし量取得手段３５は、その符号化データ（図３（ａ））の先頭２バイトを取り出して解析し、その解析した結果をＰバッファのずらし量Ｚとして設定する（Ｓ１１）。
【０１１７】
次に、復号手段３３は、入力データバッファ２において、Ｐバッファ２１及びＰバッファずらし量Ｚ分のバッファの内容を空にする（Ｓ１２）。
次に、復号手段３３は、符号化データがデータエンドかどうかを判定する（Ｓ１３）。符号化データがデータエンドである場合（Ｓ１３で「Ｙｅｓ」へ進む）、復号手段３３は、復号化処理を終了する。
【０１１８】
符号化データがデータエンドでない場合（Ｓ１３で「Ｎｏ」へ進む）、復号手段３３は、フラグデータ（図３（ｂ））からフラグ１ビットを取り出す（Ｓ１４）。フラグビットを取り出す場合、８個分のフラグビット（＃１〜＃８）の集まりである１バイトデータのフラグが取り出され、その中から１ビットずつフラグビットとして処理される。なお、８個分のデータについて処理が終了すれば、次の１バイトのフラグデータ（＃９〜＃１６）が取り出される（図３（ｃ））。
【０１１９】
復号手段３３は、Ｓ１４で取り出したフラグビットが圧縮データ（フラグビット＝１）／非圧縮データ（フラグビット＝０）かを判定する。圧縮データ（フラグビット＝１）と判定された場合（Ｓ１５で「Ｙｅｓ」へ進む）、復号手段３３は、符号化データから当該フラグビット（＃ｎフラグ）に対応する＃ｎデータ（１バイト）を取り出す（Ｓ１６）。
【０１２０】
それから、復号手段３３は、取り出した符号データ（１バイト）を「一致開始位置」（上位５ビット）と「一致長」（下位３ビット）とに分解する（図３（ｅ））。そして、復号手段３３は、「Ｐバッファのずらし量Ｚ」分ずらされたＰバッファの先頭位置を基準とした場合での、「一致開始位置」から「一致長」分のサイズに対応する文字列を復号データとして出力データバッファ３４を介して出力する（Ｓ１７）。
【０１２１】
Ｓ１５において、非圧縮データ（フラグビット＝０）と判定された場合（Ｓ１５で「Ｎｏ」へ進む）、復号手段３３は、符号化データから当該フラグビット（＃ｎフラグ）に対応する＃ｎデータ（１バイト）を取り出し、その取り出したデータをそのまま復号データとして出力データバッファ３４を介して出力する（Ｓ１８）。
【０１２２】
Ｓ１７またはＳ１８の処理後、復号手段３３は、Ｓ１７またはＳ１８の処理で得られた復号データをＰバッファ方向に移すと共に、移したサイズ分の最も古いデータをＰバッファから捨てる（ＦＩＦＯ方式）（Ｓ１９）。以降、Ｓ１３でデータエンドと判定されるまで、Ｓ１３〜Ｓ１９の処理を繰り返す。
【０１２３】
本実施形態によれば、可逆的に（無損失）復号化が行われ、圧縮処理に対応する復号処理を行うことができる。
本発明によれば、より高速で、より圧縮効率が高く、かつ、より安価に辞書型符号化方式による画像データの圧縮を行うことができる。また、スライド辞書（Ｐバッファ、Ｑバッファを含むスライディング・ウィンドウ）を小さくすることができ、かつ圧縮効率も向上させることができる。なおかつ、全てバイトデータ扱いしたことにより、ビット操作を極力少なくできるので、ソフトウェア的な観点から圧縮・復号処理の高速化を図ることができる。
【０１２４】
また、ハードウェア的な観点から、履歴アレイやシフトレジスタの「スライド辞書のＰバッファ」と、比較器等を非常に少なくすることができ、回路規模を非常に小きくでき、安価で済む。かつ、圧縮・復号処理の高速化を図ることができ、さらに高圧縮率を実現できる。特に、画像データのように、周期的に同じ値のデータが繰り返す可能性が多いデータには、非常に有効である。
【０１２５】
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または形態を取ることができる。例えば、本発明は、プリンタ、ＦＡＸ、ＭＦＰ（マルチファンクションプリンタ）またはディスプレイ等の画像形成装置、またはそれらのドライバに適用してもよいし、データ圧縮（符号化）／解凍（復号）ソフトウェアまたはデータ圧縮（符号化）・解凍（復号）ハードウェアとして適用してもよい。
【図面の簡単な説明】
【０１２６】
【図１】第１の実施形態におけるデータ圧縮装置の構成概念図である。
【図２】第１の実施形態におけるデータ圧縮方法の原理を示す。
【図３】第１の実施形態における出力データバッファ４へ出力された圧縮データ（符号化データ）のフォーマットを示す。
【図４】第１の実施形態における圧縮（符号化）処理のフローを示す。
【図５】第２の実施形態におけるデータ復号装置の構成概念図である。
【図６】第２の実施形態における復号処理のフローを示す。
【図７】従来におけるユニバーサル型Ｌｅｍｐｅｌ−Ｚｉｖ符号の符号器の原理図を示す。
【図８】従来におけるＬＺＳＳ符号化で用いるバッファ構成図である。
【図９】従来におけるＬＺＳＳ符号による符号化の処理フローを示す。
【図１０】従来におけるＬＺＳＳ符号化の符号化データの出力型式を示す。
【図１１】従来におけるＬＺＳＳ符号による復号化の処理フローを示す。
【図１２】従来の多階調画像印刷装置において、ディザリングによりＲＧＢデータをハーフトーン処理してデータ圧縮する説明図である。
【図１３】従来における１バイトデータ単位で表した符号化データを示す。
【図１４】図１３の符号化データフォーマットを用いて、図１２の画像データ（１０５Ｃ）を符号化する場合の例を示す。
【符号の説明】
【０１２７】
１      データ圧縮装置
２      入力データバッファ
３      圧縮手段
４      出力データバッファ
５      ずらし量設定手段
２１    Ｐバッファ
２２    Ｑバッファ
２３    ずらし格納領域
２４    符号化データ履歴格納領域
３１    データ復号装置
３２    入力データバッファ
３３    復号手段
３４    出力データバッファ
３５    ずらし量取得手段
【図１】
2008193567.tif 000003
【図３】
2008193567.tif 000004
【図４】
2008193567.tif 000005
【図５】
2008193567.tif 000006
【図６】
2008193567.tif 000007
【図８】
2008193567.tif 000008
【図９】
2008193567.tif 000009
【図１０】
2008193567.tif 000010
【図１１】
2008193567.tif 000011
【図１３】
2008193567.tif 000012
【図１４】
2008193567.tif 000013
【図２】
2008193567.tif 000014
【図７】
2008193567.tif 000015
【図１２】
2008193567.tif 000016