(57)【要約】【課題】ＬＺ７７符合に基づくデータ圧縮方法であって、圧縮率を改善でき、また、データ圧縮及び復元の処理に時間のかからないデータ圧縮方法等を提供する。【解決手段】符号化済みの記号列の中に存在する、符号化対象の記号列に最大長一致する最長一致系列を検索し、当該最長一致系列の存在位置である一致位置と当該最長一致系列の長さである一致長さとに基づいて符号化を行いデータを圧縮するデータ圧縮方法において、前記符号化によって生成される符号が、前記一致位置及び又は前記一致長さの値が前回の符号化時の値と同一であるか否かの情報を含む第一符号と、前記前回の符号化時の値と同一でない前記一致位置及び又は前記一致長さの値を表す第二符号と、から構成される。【選択図】  図７
2005286371.tif 000002
【特許請求の範囲】
【請求項１】
符号化済みの記号列の中に存在する、符号化対象の記号列に最大長一致する最長一致系列を検索し、当該最長一致系列の存在位置である一致位置と当該最長一致系列の長さである一致長さとに基づいて符号化を行いデータを圧縮するデータ圧縮方法であって、
前記符号化によって生成される符号が、
前記一致位置及び又は前記一致長さの値が前回の符号化時の値と同一であるか否かの情報を含む第一符号と、
前記前回の符号化時の値と同一でない前記一致位置及び又は前記一致長さの値を表す第二符号と、から構成される
ことを特徴とするデータ圧縮方法。
【請求項２】
請求項１において、
前記第二符号が、可変長の符号であり、
前記第一符号が、前記第二符号の長さに関する情報を含む
ことを特徴とするデータ圧縮方法。
【請求項３】
請求項２において、
前記第二符号が、前記一致位置及び又は前記一致長さを表す値を２進法で表現した場合の最上位の１を除いたものである
ことを特徴とするデータ圧縮方法。
【請求項４】
符号化済みの記号列の中に存在する、符号化対象の記号列に最大長一致する最長一致系列を検索し、当該最長一致系列の存在位置である一致位置と当該最長一致系列の長さである一致長さとに基づいて符号化を行いデータを圧縮するデータ圧縮方法であって、
前記最長一致系列の長さが、所定の値よりも小さい場合には、当該所定の値よりも小さい旨と元の記号を表す、所定長さの第一識別情報により前記符号化を行い、
前記最長一致系列の長さが、前記所定の値以上の場合には、
当該所定の値以上である旨と、前記一致位置及び又は前記一致長さの値が前回の符号化時の値と同一であるか否かの情報と、前記前回の符号化時の値と同一でない前記一致位置及び又は一致長さを表す一致位置情報及び又は一致長さ情報の長さとを表す、前記第一識別情報と同じ長さの第二識別情報と、
前記前回の符号化時の値と同一でない前記一致位置及び又は一致長さを表す一致位置情報及び又は一致長さ情報と、により前記符号化を行なう
ことを特徴とするデータ圧縮方法。
【請求項５】
請求項４において、
前記一致位置情報及び又は一致長さ情報が、前記一致位置及び又は前記一致長さを表す値を２進法で表現した場合の最上位の１を除いたものである
ことを特徴とするデータ圧縮方法。
【請求項６】
請求項４あるいは５のいずれかにおいて、
前記一致位置及び又は一致長さの値が前回の符号化時の値と同一である場合には、前記第二識別情報に含まれる前記一致位置情報及び又は一致長さ情報の長さを０とする
ことを特徴とするデータ圧縮方法。
【請求項７】
請求項４乃至請求項６のいずれかにおいて、
前記第一識別情報及び又は第二識別情報がハフマン符号化される
ことを特徴とするデータ圧縮方法。
【請求項８】
符号化済みの記号列の中に存在する、符号化対象の記号列に最大長一致する最長一致系列を検索し、当該最長一致系列の存在位置である一致位置と当該最長一致系列の長さである一致長さとに基づいて符号化を行いデータを圧縮する処理をコンピュータに実行させるデータ圧縮プログラムであって、
前記一致位置及び又は前記一致長さの値が前回の符号化時の値と同一であるか否かの判断を行うステップと、
前記判断の結果に基づき、前記前回の符号化時の値と同一であるか否かの情報を含む符号を出力するステップと、
前記出力の後に、前記一致位置及び又は前記一致長さの値が前回の符号化時の値と同一でない場合には、当該一致位置及び又は一致長さの値を表す符号を出力するステップとを前記コンピュータに実行させる
ことを特徴とするデータ圧縮プログラム。
【請求項９】
符号化済みの記号列の中に存在する、符号化対象の記号列に最大長一致する最長一致系列を検索し、当該最長一致系列の存在位置である一致位置と当該最長一致系列の長さである一致長さとに基づいて符号化されたデータを復元するデータ復元方法であって、
前記復元対象のデータが、前記一致位置及び又は前記一致長さの値が前回の符号化時の値と同一であるか否かの情報を含む第一符号と、前記前回の符号化時の値と同一でない前記一致位置及び又は前記一致長さの値を表す第二符号とから構成される場合に、
前記第一符号に基づいて、前記一致位置及び又は前記一致長さの値が前回の復号時の値と同一であるか否かを判断し、
前記前回の復号時の値と同一であると判断された一致位置及び又は一致長さの値を、前回の復号時の値から取得し、
前記前回の復号時の値と同一でないと判断された一致位置及び又は一致長さの値を、前記第二符号から取得し、
前記取得された一致位置と一致長さの値に基づいて、復号済みの記号列を用いて復号を行なう
ことを特徴とするデータ復元方法。
【請求項１０】
符号化済みの記号列の中に存在する、符号化対象の記号列に最大長一致する最長一致系列を検索し、当該最長一致系列の存在位置である一致位置と当該最長一致系列の長さである一致長さとに基づいて符号化されたデータを復元するデータ復元装置であって、
前記復元済みの記号列を格納する記号列格納手段と、
前記復元時に得られる前記一致位置及び前記一致長さの値であって最新の値を格納する前回値格納手段と、
前記復元対象のデータが、前記一致位置及び又は前記一致長さの値が前回の符号化時の値と同一であるか否かの情報を含む第一符号と、前記前回の符号化時の値と同一でない前記一致位置及び又は前記一致長さの値を表す第二符号とから構成される場合に、
前記第一符号に基づいて、前記一致位置及び又は前記一致長さの値が前記前回の符号化時の値と同一であるか否かを判断し、前記前回の符号化時の値と同一であると判断された一致位置及び又は一致長さの値を、前記前回値格納手段に格納された値から取得し、前記前回の符号化時の値と同一でないと判断された一致位置及び又は一致長さの値を、前記第二符号から取得し、前記取得された一致位置と一致長さの値に基づいて、前記記号列格納手段に格納された記号列を用いて復号を行なう、復号手段とを備える
ことを特徴とするデータ復元装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化済みの記号列との一致に基づいて符号化することにより、データを圧縮する方法等に関し、特に、データ圧縮率を向上させることができ、データ圧縮及び復元の処理に時間のかからないデータ圧縮方法等に関する。
【背景技術】
【０００２】
近年、情報処理技術の発達やインターネット等のネットワークの普及により、膨大なデータが処理されると共に通信されるようになってきている。例えば、ホストコンピュータからネットワークを介してプリンタに印刷を実行させるということが一般によく行われ、また、プリンタの処理速度も随時向上してきているが、ホストコンピュータからプリンタに送信する印刷データの容量が大きい場合にはその通信に時間がかかってしまい、プリンタの処理速度を十分に生かすことができないという事態も発生する。従って、データを如何に圧縮して送信し、受信後、如何に復元するかというデータの圧縮及び復元技術が必要となってくる。
【０００３】
かかるデータの圧縮及び復元技術としては、従来から、その目的や対象データにより幾つかのものが提案されている。その一つとして、ＬＺ７７（Ｚｉｖ  ａｎｄ  Ｌｅｍｐｅｌ（１９７７））符号を用いた方法がある。かかる手法では、現在符号化を行なっている記号（データ）の前後の記号列をバッファに保存し、このバッファを辞書として参照して、符号化しようとしている記号列と一致する、最長の記号列を当該辞書内で探索する。そして、探索された記号列の長さと位置の情報により対象の記号列を符号化する。
【０００４】
このＬＺ７７方式にも様々なバリエーションが開発されており、例えば、下記非特許文献１に記載されたＬＺＳＳ符号を用いた方法は現在頻繁に用いられている。かかる方法は、前記一致する最長記号列の長さが所定の値より小さい場合には、元の記号をそのまま符号とし、即ち、上述の一致記号列の長さと位置による符号化は行なわず、一致する最長記号列の長さが所定の値より大きい場合には、上述の一致記号列の長さと位置による符号化を行なう。そして、両者を区別するためのフラグを符号の先頭に付加する。
【０００５】
また、このようなＬＺ７７方式のデータ圧縮方法について、圧縮率の向上などの目的により幾つかの提案がなされている（例えば、下記特許文献１及び２）。
【特許文献１】特開平５−１１９７３号公報
【特許文献２】特開平７−２６１９７７号公報
【非特許文献１】植松友彦著、「文書データ圧縮アルゴリズム入門」、第２版、ＣＱ出版、１９９５年６月、ｐ．１４５−１４８
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述したＬＺＳＳ符号では、前記一致する最長記号列の位置（以下、一致位置と呼ぶ）と長さ（以下、一致長さと呼ぶ）を固定長さの符号（ビット列）で表現しているので、データの圧縮率があまりよくないという課題があった。
【０００７】
また、上記特許文献１には、辞書内の一致する記号列に出現番号なるものを付けて、この出現番号を上記一致位置として出力することにより、データ圧縮率の向上を図ろうとする方法が記載されているが、かかる方法では、圧縮されたデータの復号の際にも、一致する記号列の出現位置を検索によって求める必要があり、復元の処理に時間がかかってしまうという問題があった。
【０００８】
また、上記特許文献２には、上記一致位置と一致長さを、スプレイ木により動的に変化する符号で表現し、圧縮率の向上を図る技術が示されているが、符号を動的に変更するため、圧縮、復元共に処理が複雑であり、それらの処理に時間がかかるという課題があった。
【０００９】
そこで、本発明の目的は、ＬＺ７７符合に基づくデータ圧縮方法であって、圧縮率を改善でき、また、データ圧縮及び復元の処理に時間のかからないデータ圧縮方法等を提供することである。
【課題を解決するための手段】
【００１０】
上記の目的を達成するために、本発明の一つの側面は、符号化済みの記号列の中に存在する、符号化対象の記号列に最大長一致する最長一致系列を検索し、当該最長一致系列の存在位置である一致位置と当該最長一致系列の長さである一致長さとに基づいて符号化を行いデータを圧縮するデータ圧縮方法であって、前記符号化によって生成される符号が、前記一致位置及び又は前記一致長さの値が前回の符号化時の値と同一であるか否かの情報を含む第一符号と、前記前回の符号化時の値と同一でない前記一致位置及び又は前記一致長さの値を表す第二符号と、から構成されることを特徴とする。従って、本発明によれば、前回の符号化時の値と同一である一致位置及び又は一致長さの情報が付加されないので、データ圧縮率をより高めることができる。
【００１１】
更に、上記の発明において、その好ましい態様は、前記第二符号が、可変長の符号であり、前記第一符号が、前記第二符号の長さに関する情報を含むことを特徴とする。これにより、更にデータ圧縮率を高めることが可能となる。
【００１２】
更に、上記の発明において、好ましい態様は、前記第二符号が、前記一致位置及び又は前記一致長さを表す値を２進法で表現した場合の最上位の１を除いたものであることを特徴とする。これにより、更に一層、データ圧縮率をより高めることができる。
【００１３】
上記の目的を達成するために、本発明の別の側面は、符号化済みの記号列の中に存在する、符号化対象の記号列に最大長一致する最長一致系列を検索し、当該最長一致系列の存在位置である一致位置と当該最長一致系列の長さである一致長さとに基づいて符号化を行いデータを圧縮するデータ圧縮方法であって、前記最長一致系列の長さが、所定の値よりも小さい場合には、当該所定の値よりも小さい旨と元の記号を表す、所定長さの第一識別情報により前記符号化を行い、前記最長一致系列の長さが、前記所定の値以上の場合には、当該所定の値以上である旨と、前記一致位置及び又は前記一致長さの値が前回の符号化時の値と同一であるか否かの情報と、前記前回の符号化時の値と同一でない前記一致位置及び又は一致長さを表す一致位置情報及び又は一致長さ情報の長さとを表す、前記第一識別情報と同じ長さの第二識別情報と、前記前回の符号化時の値と同一でない前記一致位置及び又は一致長さを表す一致位置情報及び又は一致長さ情報と、により前記符号化を行なうことである。
【００１４】
更に、上記の発明において、その好ましい態様は、前記一致位置情報及び又は一致長さ情報が、前記一致位置及び又は前記一致長さを表す値を２進法で表現した場合の最上位の１を除いたものであることを特徴とする。
【００１５】
更に、上記の発明において、好ましい態様は、前記一致位置及び又は一致長さの値が前回の符号化時の値と同一である場合には、前記第二識別情報に含まれる前記一致位置情報及び又は一致長さ情報の長さを０とすることを特徴とする。
【００１６】
また、上記の発明において、好ましい態様は、前記第一識別情報及び又は第二識別情報
がハフマン符号化されることを特徴とする。
【００１７】
上記の目的を達成するために、本発明の別の側面は、符号化済みの記号列の中に存在す
る、符号化対象の記号列に最大長一致する最長一致系列を検索し、当該最長一致系列の存在位置である一致位置と当該最長一致系列の長さである一致長さとに基づいて符号化を行いデータを圧縮する処理をコンピュータに実行させるデータ圧縮プログラムであって、前記一致位置及び又は前記一致長さの値が前回の符号化時の値と同一であるか否かの判断を行うステップと、前記判断の結果に基づき、前記前回の符号化時の値と同一であるか否かの情報を含む符号を出力するステップと、前記出力の後に、前記一致位置及び又は前記一致長さの値が前回の符号化時の値と同一でない場合には、当該一致位置及び又は一致長さの値を表す符号を出力するステップとを前記コンピュータに実行させることである。
【００１８】
上記の目的を達成するために、本発明の更に別の側面は、符号化済みの記号列の中に存在する、符号化対象の記号列に最大長一致する最長一致系列を検索し、当該最長一致系列の存在位置である一致位置と当該最長一致系列の長さである一致長さとに基づいて符号化されたデータを復元するデータ復元方法であって、前記復元対象のデータが、前記一致位置及び又は前記一致長さの値が前回の符号化時の値と同一であるか否かの情報を含む第一符号と、前記前回の符号化時の値と同一でない前記一致位置及び又は前記一致長さの値を表す第二符号とから構成される場合に、前記第一符号に基づいて、前記一致位置及び又は前記一致長さの値が前回の復号時の値と同一であるか否かを判断し、前記前回の復号時の値と同一であると判断された一致位置及び又は一致長さの値を、前回の復号時の値から取得し、前記前回の復号時の値と同一でないと判断された一致位置及び又は一致長さの値を、前記第二符号から取得し、前記取得された一致位置と一致長さの値に基づいて、復号済みの記号列を用いて復号を行なうことである。
【００１９】
上記の目的を達成するために、本発明の別の側面は、符号化済みの記号列の中に存在す
る、符号化対象の記号列に最大長一致する最長一致系列を検索し、当該最長一致系列の存在位置である一致位置と当該最長一致系列の長さである一致長さとに基づいて符号化されたデータを復元するデータ復元装置が、前記復元済みの記号列を格納する記号列格納手段と、前記復元時に得られる前記一致位置及び前記一致長さの値であって最新の値を格納する前回値格納手段と、前記復元対象のデータが、前記一致位置及び又は前記一致長さの値が前回の符号化時の値と同一であるか否かの情報を含む第一符号と、前記前回の符号化時の値と同一でない前記一致位置及び又は前記一致長さの値を表す第二符号とから構成される場合に、前記第一符号に基づいて、前記一致位置及び又は前記一致長さの値が前記前回の符号化時の値と同一であるか否かを判断し、前記前回の符号化時の値と同一であると判断された一致位置及び又は一致長さの値を、前記前回値格納手段に格納された値から取得し、前記前回の符号化時の値と同一でないと判断された一致位置及び又は一致長さの値を、前記第二符号から取得し、前記取得された一致位置と一致長さの値に基づいて、前記記号列格納手段に格納された記号列を用いて復号を行なう、復号手段とを備えることである。
【００２０】
本発明の更なる目的及び、特徴は、以下に説明する発明の実施の形態から明らかになる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。なお、図において、同一又は類似のものには同一の参照番号又は参照記号を付して説明する。
図１は、本発明を適用したデータ圧縮装置の実施の形態例に係る構成図である。また、図２は、本発明を適用したデータ復元装置の実施の形態例に係る構成図である。図１及び図２に示すデータ圧縮装置１及びデータ復元装置２が、本発明に係るデータ圧縮方法及び復元方法を用いた装置である。本データ圧縮装置１のデータ圧縮方法は、ＬＺ７７符号の考え方を基本としているが、符号化に用いる前記一致位置と一致長さの値について、前回の処理時の値を記憶しておき、それらの値と同じ場合には、その旨を符号に含めることにより符号から一致位置と一致長さの情報を除き、符号の長さを極力短くしてデータの圧縮率を改善しようとするものである。また、本データ復元装置２のデータ復元方法は、上記圧縮時と同様に、一致位置と一致長さの値について前回の処理時の値を記憶しておき、圧縮時に付加された、それら前回の値と同一であるか否かの情報を利用して、一致位置と一致長さの情報を容易に取得し、それらの情報から元の記号列に復号するものであり、処理に時間のかからない復元処理を実現するものである。
【００２２】
図１に示すように、データ圧縮装置１は、入力バッファ１１、符号化部１２、辞書バッファ１３、及び前回値バッファ１４から構成され、入力されるデータを符号化してデータ容量を圧縮する装置である。ここで、入力される符号化前のデータのことを記号（列）と呼ぶこととし、本実施の形態例においては、各記号、例えば、図１の入力バッファ１１内の“Ａ”、“Ｂ”など、は８ビットのデータであるものとする。また、処理後の符号は、２進法による“０”又は“１”のビット列で表現される。
【００２３】
入力バッファ１１は、符号化対象の記号列を順次受け入れて格納するデータバッファであり、符号化が終了した記号列を順次辞書バッファ１３に引き渡す。また、入力バッファ１１の長さ（図１のＬ２）、即ち、格納可能な記号の数は、本実施の形態例では２５７であるものとする。この長さＬ２は、前記一致長さ（例えば、図１のｌ）の最大値を意味するものである。
【００２４】
辞書バッファ１３は、符号化済みの記号列を上記入力バッファ１１から順次受け入れて格納するデータバッファであり、ＬＺ７７方式において所謂辞書と呼ばれているものである。ここに格納された記号列は、入力バッファ１１内の符号化処理対象の記号列と比較され、この中から入力バッファ１１内の記号列と一致する最大長の記号列（以下、最長一致系列と呼ぶ）が探索される。辞書バッファ１３では、符号化部１２における符号化が終了する度に、符号化が済んだ記号列を受け入れて、先頭にある（図１の左側に位置する）その分の記号列が不要の記号として吐き出される。また、辞書バッファ１３の長さ（図１のＬ１）、即ち、格納可能な記号の数は、本実施の形態例では１６３８３（１６Ｋ）であるものとする。この長さＬ１は、前記一致位置を表す距離（例えば、図１のｄ）の最大値を意味するものである。図１に示す例では、最長一致系列が“ＡＢＣＤ”であり、その長さである一致長さがｌであり、その一致位置がｐであるということになる。
【００２５】
次に、符号化部１２は、当該データ圧縮装置１における記号列の入力、符号化、及び符号の出力に係る全般の制御を行なう部分であるが、主に、辞書バッファ１３を参照しながら、入力バッファ１１内の記号列を符号化する処理を実行する。かかる符号化部１２が行なう符号化処理に特徴があり、その具体的な内容については後述する。なお、符号化部１２は、処理の手順を示したプログラムとそのプログラムに従って処理を実行するＣＰＵ等で構成してもよいし、ハードウェア回路で構成してもよい。
【００２６】
また、前回値バッファ１４は、前回の、前記符号化部１２における一致位置と一致長さを用いた符号化処理時の、一致位置と一致長さの値を保持する部分であり、一致位置と一致長さを用いた符号化処理が行われる度に保持する値が更新される。かかる前回値バッファ１４に保持された値が符号化部１２における符号化処理に用いられることが、本データ圧縮装置１の特徴の一つである。
【００２７】
図２に示すように、データ復元装置２もデータ圧縮装置１と同様の構成をしており、入力バッファ２１、復号部２２（復号手段）、辞書バッファ２３（記号列格納手段）、及び前回値バッファ２４（前回値格納手段）を備えている。本データ復元装置２は、前記データ圧縮装置１で圧縮されたデータ（符号）を元の記号列のデータに復元する装置である。入力バッファ２１は、処理対象の符号を順次受け入れて格納するデータバッファである。
【００２８】
辞書バッファ２３は、復号済みの記号列を復号部２２から順次受け入れて格納するデータバッファである。ここに格納された記号列は、復号部２２による復号処理時に参照され、復号処理に利用される。辞書バッファ２３では、復号部２２における処理が終了する度に、復号された記号列を受け入れて、先頭にある（図２の右側に位置する）その分の記号列が不要の記号として吐き出される。また、辞書バッファ２３の長さ（サイズ）は、データ圧縮装置１の辞書バッファ１３の長さＬ１と同じである。
【００２９】
また、辞書バッファ２３内の状態は、その時に復号部２２において処理対象となっている符号が、データ圧縮装置１において符号化された時の辞書バッファ１３の状態と一緒の状態となっている。図１に示す例で“ＡＢＣＤ”という記号列が、一致位置ｐ（又はｄ）と一致長さｌに基づいて符号化された場合に、当該符号がデータ復元装置２によって復号処理される際には、辞書バッファ２３内の状態は図２に示すような状態になっている。即ち、辞書バッファ２３の左端から距離ｄの位置ｐより“ＡＢＣＤ”の順番に（図２では逆方向に表現されている）記号列が納められる。従って、復号部２２は、符号から取得される一致位置ｐ（又はｄ）と一致長さｌの情報に基づいて“ＡＢＣＤ”と復号することができる。
【００３０】
復号部２２は、当該データ復元装置２における符号の入力、復号、及び記号の出力に係る全般の制御を行なう部分であるが、主に、辞書バッファ２３を参照しながら、入力バッファ２１内の符号を復号する処理を実行する。かかる復号部２２が行なう復号処理の具体的な内容については後述する。なお、復号部２２は、処理の手順を示したプログラムとそのプログラムに従って処理を実行するＣＰＵ等で構成してもよいし、ハードウェア回路で構成してもよい。
【００３１】
また、前回値バッファ２４は、一致位置と一致長さを用いて符号化された符号の、前記復号部２２における前回の処理時において取得された一致位置と一致長さの値を保持する部分であり、かかる処理が行われる度に保持する値が更新される。かかる前回値バッファ２４に保持された値が復号部２２における復号処理に用いられることが、本データ復元装置２の特徴の一つである。
【００３２】
図３は、データ圧縮装置１の符号化部１２が行なう処理の内容を例示したフローチャートである。以下、図３に基づいて、本データ圧縮装置１で行なわれる圧縮処理の具体的な内容について説明する。まず、符号化部１２は、前記前回値バッファ１４に保持されている一致位置及び一致長さの値（図１の例では、ｄとｌの値）を初期化する（ステップＳ１）。具体的には、双方の値を０としてもよいし、それぞれ、符号化時において頻繁に現れる値としてもよい。次に、処理対象の記号列が順番に入力バッファ１１に読み込まれる（ステップＳ２）。その後、符号化部１２は、入力バッファ１１に格納された先頭位置（図１では、左端位置）からの記号列について、辞書バッファ１３内に格納された記号列との一致を探索する（ステップＳ３）。即ち、前述した最長一致系列を検索する。
【００３３】
そして、検索された最長一致系列の長さ（一致長さ）が予め定められた値以上であるか否かがチェックされる（ステップＳ４）。例えば、かかる所定数は“３”とされる。その結果、一致長さが２以下であれば（ステップＳ４のＮｏ）、符号化部１２は、入力バッファ１１の先頭位置にある記号を、最長一致系列の一致位置と一致長さで表現せずに、当該記号をそのまま２進法で表現する手法で符号化する。そして、その符号を出力する（ステップＳ５）。具体的には、本実施の形態例では、記号は８ビットのデータであるので、元の記号のままの８ビットのデータを９ビットで表現し、それを当該記号の符号とする。
【００３４】
図４は、本データ圧縮装置１によって生成される符号等を説明するための図である。図４の（ａ）が、本データ圧縮装置１によって生成される符号を模式的に示したものであり、上段に示される図（[不一致]と記載）が、上記ステップＳ５で出力される符号である。言い換えれば、入力バッファ１１の先頭位置から所定数の記号列について、辞書バッファ１３内に一致するものが無かった場合の符号を示している。前述のように、かかる符号は、元々８ビットのデータを９ビットで表現したものであるので、必ず最上位のビットは“０”となる。後述するが、前記ステップＳ４で一致長さが所定数以上である場合には、この最上位のビットが必ず“１”となるので、当該最上位のビットは、所定数の記号列について“不一致”であったことを示すことになる。また、それ以降に続く８ビットのデータは、元の記号そのものである。
【００３５】
従って、当該符号は、その最上位のビットにより上記“不一致”であること、即ち、その後のビット列で記号そのものを表していることを識別させている。言い換えれば、０〜５１１の値を取れる表現で、０〜２５５の値を表現することにより、元の記号をそのまま表現したものであることを識別させている。なお、この“不一致”であることと元の記号を含んだ、“不一致”の場合の符号全体を、ここでは“不一致”の場合の識別情報（第一識別情報）と称することとする。
【００３６】
図３に戻って、前記ステップＳ４において、一致長さが所定数以上である場合には（ステップＳ４のＹｅｓ）、符号化部１２は、検索された最長一致系列の一致位置及び一致長さを表すために必要なビット数（ビット列の長さ）を求める（ステップＳ６）。本実施の形態例では、前述した辞書バッファ１３のサイズから、一致位置は、１〜１６３８３の値を取るので、一致位置を表すのに必要なビット数は、１〜１４の値となる。また、前述した入力バッファ１１のサイズ及びステップＳ４における条件から、一致長さは、３〜２５７の値を取るので、一致長さを表すのに必要なビット数は、１〜８の値となる。
【００３７】
次に、符号化部１２は、今回探索された最長一致系列の一致位置の値が、前回値バッファ１４に保持されている一致位置の値と同一であるか否かをチェックする（ステップＳ７）。そして、同一であった場合には（ステップＳ７のＹｅｓ）、前記求めた一致位置を表すのに必要なビット数を０とする（ステップＳ８）。一方、同一でなかった場合、即ち、相異していた場合には（ステップＳ７のＮｏ）、前記求めた一致位置を表すのに必要なビット数を変更しない。
【００３８】
更に、次に、符号化部１２は、今回探索された最長一致系列の一致長さの値が、前回値バッファ１４に保持されている一致長さの値と同一であるか否かをチェックする（ステップＳ９）。そして、同一であった場合には（ステップＳ９のＹｅｓ）、前記求めた一致長さを表すのに必要なビット数を０とする（ステップＳ１０）。一方、同一でなかった場合、即ち、相異していた場合には（ステップＳ９のＮｏ）、前記求めた一致長さを表すのに必要なビット数を変更しない。
【００３９】
このように一致位置と一致長さのビット数が決定すると、符号化部１２は、これら一致位置及び一致長さのビット数と、入力バッファ１１の先頭位置から所定数の記号列について辞書バッファ１３内に“一致”するものがあった旨を示す符号を生成して出力する（ステップＳ１１）。かかる符号を、ここでは“一致”の場合の識別情報（第一符号、第二識別情報）と称することとする。具体的には、一例として、下記（１）式のような値を識別情報として生成する。
【００４０】
識別情報（“一致”の場合）＝２５６＋ＢＬ×（最大ＢＰ＋１）＋ＢＰ      （１）
但し、 ＢＬ：一致長さを表すのに必要なビット数
ＢＰ：一致位置を表すのに必要なビット数
最大ＢＰ：一致位置を表すのに必要な最大のビット数
なお、本実施の形態例では、上述の通り、最大ＢＰは１４の値となり、ＢＰ及びＢＬは上記値を取るので、（１）式により、上記識別情報（“一致”の場合）は２５６〜３９０の値となる。従って、当該識別情報（“一致”の場合）も２進法の符号として９ビットで表現される。図４の（ａ）の下段に示される４つの符号（[一致]と記載）が、上記所定数の記号列の“一致”があった場合に生成され出力される符号を示しているが、その左側部分の９ビットが当該識別情報に相当する。
【００４１】
上述のように、当該識別情報は２５６以上の値を取るので、そのことによって上記“一致”があったことを識別させ、また、当該識別情報の値から２５６を引いた値によって一致位置及び一致長さを表すのに必要なビット数を示している。言い換えれば、９ビットで表現される当該符号の最上位のビットは常に“１”の値となり、そのことで上記“一致”があったことを示し、下位の８ビットで一致位置及び一致長さを表すのに必要なビット数を示している。更に、一致位置、一致長さを表すのに必要なビット数が０である場合には、それぞれ、それらの値が前回値バッファ１４に保持されている値と同一であること、即ち、前回、所定数以上の記号が一致した時の一致位置、一致長さの値と同一であることを示している。
【００４２】
このように、本実施の形態例による符号では、上記“一致”の場合にも“不一致”の場合にも、識別情報が共に９ビットで表現され、その値が２５６以上であるか否かにより、言い換えれば、最上位のビットにより、一致位置と一致長さに基づく符号化がなされているか否かが識別できる。また、その識別の後、下位８ビットにより、“不一致”の場合には、元の記号そのものを知ることができ、“一致”の場合には、識別情報の後に続く一致位置と一致長さを表す符号の長さ、あるいは、一致位置、一致長さの値が前回の値と同一であったことを知ることができる。
【００４３】
かかる識別情報の出力が終了すると、符号化部１２は、一致位置を表すのに必要なビット数が０であるか否かをチェックし（ステップＳ１２）、０でない場合には（ステップＳ１２のＮｏ）、前記検索された最長一致系列の一致位置を表す一致位置情報（第二符号）を符号として出力する（ステップＳ１３）。具体的には、一致位置を表す値を２進法表現した際の最上位の“１”のビットを除いた下位のビット列を一致位置情報として出力する。これは、最上位のビットが“１”であることが自明であり、極力データ量を少なくしようとする目的によるものである。例えば、一致位置の値が９である場合には、２進法では“１００１”となるが、“００１”を一致位置情報として出力する。
【００４４】
また、前述した、一致位置と一致長さを固定長のビット列で表現するＬＺＳＳ符号の場合と比較して表現すれば、一致位置を最大長の１４ビットで表現し、そのビット列のＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）側から連続して存在している“０”のビットとその次の“１”のビットを取り除いたものを一致位置情報とする。
一方、一致位置を表すのに必要なビット数が０である場合には（ステップＳ１２のＹｅｓ）、上記一致位置情報は出力しない。
【００４５】
次に、符号化部１２は、一致長さを表すのに必要なビット数が０であるか否かをチェックし（ステップＳ１４）、０でない場合には（ステップＳ１４のＮｏ）、前記検索された最長一致系列の一致長さを表す一致長さ情報（第二符号）を符号として出力する（ステップＳ１５）。この一致長さ情報も前記一致位置情報と同様に、一致長さを表す値を２進法表現した際の最上位の“１”のビットを除いた下位のビット列を一致長さ情報として出力する。一方、一致長さを表すのに必要なビット数が０である場合には（ステップＳ１４のＹｅｓ）、上記一致長さ情報は出力しない。
【００４６】
図４の（ａ）の下段に例示した[一致]の符号において、右側に示される“一致位置情報”及び“一致長さ情報”が前記ステップＳ１３及びＳ１５において出力される各情報に相当する。そして、それらの中の（相異、相異）で示す符号は、一致位置の値も一致長さの値も前回値バッファ１４の値と同一でなかった場合に出力される符号を示している。以下、同様に、（相異、同一）、（同一、相異）、及び（同一、同一）で示す符号は、それぞれ、一致長さの値のみが前回値バッファ１４の値と同一であった場合、一致位置の値のみが前回値バッファ１４の値と同一であった場合、及び一致位置の値も一致長さの値も前回値バッファ１４の値と同一であった場合に出力される符号を示している。このように、前回の値と同じ情報については出力がなされず、更なるデータの圧縮が図られることになる。
【００４７】
このように、一致長さ情報の出力が終了すると、符号化部１２は、前回値バッファ１４に保持される一致位置及び一致長さの値を、それぞれ、今回の処理で探索された前記最長一致系列の一致位置及び一致長さの値に更新する（ステップＳ１６）。
【００４８】
以上説明したように、“不一致”の場合あるいは“一致”の場合における符号の生成及び出力の処理が終了すると、入力バッファ１１及び辞書バッファ１３に格納されている記号列がスライドされる（ステップＳ１７）。具体的には、上記処理により符号が生成され出力された記号（列）が、入力バッファ１１の先頭部分から辞書バッファ１３の後尾部分に移動する。そして、その移動分の新たな記号（列）が入力バッファ１１に入力され、また、その移動分の記号（列）が辞書バッファ１３から吐き出される。なお、前記“不一致”の場合には、１記号のみが符号化されるので、上記移動する記号は一つであり、前記“一致”の場合には、３以上の記号が符号化されるので、上記移動する記号は３以上となる。
【００４９】
その後、今回行おうとしている圧縮処理が終了したか否かが判断され（ステップＳ１８）、終了していない場合には（ステップＳ１８のＮｏ）、前述したステップＳ３からの処理が繰り返される。そして、圧縮処理が終了したと判断された場合には（ステップＳ１８のＹｅｓ）、一連のデータ圧縮処理を終了する。
【００５０】
図５は、データ復元装置２の復号部２２が行なう処理の内容を例示したフローチャートである。以下、図５に基づいて、本データ復元装置２で行なわれる復元処理の具体的な内容について説明する。まず、復号部２２は、前記前回値バッファ２４に保持されている一致位置及び一致長さの値を初期化する（ステップＳ２１）。具体的には、復号対象のデータが符号化された際の前回値バッファ１４の初期化時における値と同じ値とされる。その後、処理対象の符号が順番に入力バッファ２１に読み込まれる（ステップＳ２２）。次に、復号部２２は、符号の先頭の９ビット、即ち、識別情報を入力バッファ２１より読み込んでその情報を解釈する（ステップＳ２３）。
【００５１】
そして、現在処理対象の符号が、符号化時に前述した“不一致”の場合であったのか“一致”の場合であったのかを判断する（ステップＳ２４）。かかる判断は、前述の通り、識別情報の最上位のビットによって行うことができ、最上位のビットが“０”であれば、“不一致”の場合であったと判断し、最上位のビットが“１”であれば、“一致”の場合であったと判断する。言い換えれば、読み込んだ識別情報の値が０〜２５５であれば、その値が元の記号そのものを表していると判断し、識別情報の値が２５６以上であれば、この識別情報でこの後に続く一致位置と一致長さの情報のビット数を知ることができると判断する。
【００５２】
かかる判断で、“不一致”の場合であったと判断された場合には（ステップＳ２４のＮｏ）、上記読み込んだ識別情報が元の記号そのものを表しているので、元の記号を復元して出力する（ステップＳ２５）。より具体的には、９ビットの識別情報を８ビットとして出力する。
【００５３】
一方、“一致”の場合であったと判断された場合には（ステップＳ２４のＹｅｓ）、読み込んだ識別情報から、前記一致位置を表すのに必要なビット数と一致長さを表すのに必要なビット数を求める（ステップＳ２６）。具体的には、識別情報が前述した（１）式によって生成されているので、読み込んだ識別情報の値から２５６を引き、その後の値を前記最大ＢＰよりも１大きい値（１４＋１）で割り、その時の余りを一致位置を表すのに必要なビット数とし、また、その時の商を一致長さを表すのに必要なビット数とする。
【００５４】
次に、復号部２２は、前記求めた一致位置を表すのに必要なビット数が０であるか否かをチェックし（ステップＳ２７）、０でなければ（ステップＳ２７のＮｏ）、前記読み込んだ識別情報に続く、上記求めた一致位置を表すのに必要なビット数から１を引いた数の符号（ビット）を、入力バッファ２１から読み込む（ステップＳ２８）。その後、復号部２２は、当該読み込んだ一致位置情報から一致位置の値を求める（ステップＳ２９）。具体的には、読み込んだ一致位置情報のビット列の最上位に“１”のビットを付加した値を、一致位置の値とする。換言すれば、２の（前記一致位置を表すのに必要なビット数−１）乗に一致位置情報の値を加えたものを一致位置の値とする。
【００５５】
一方、前記求めた一致位置を表すのに必要なビット数が０であれば（ステップＳ２７のＹｅｓ）、一致位置の値を前回値バッファ２４に保持されている一致位置の値とする（ステップＳ３０）。
【００５６】
引き続き、復号部２２は、前記求めた一致長さを表すのに必要なビット数が０であるか否かをチェックし（ステップＳ３１）、０でなければ（ステップＳ３１のＮｏ）、前記読み込んだ識別情報に続く、上記求めた一致長さを表すのに必要なビット数から１を引いた数の符号（ビット）を、入力バッファ２１から読み込む（ステップＳ３２）。その後、復号部２２は、当該読み込んだ一致長さ情報から一致長さの値を求める（ステップＳ３３）。具体的には、読み込んだ一致長さ情報のビット列の最上位に“１”のビットを付加した値に、２を加えた値を、一致長さの値とする。換言すれば、２の（前記一致長さを表すのに必要なビット数−１）乗に一致長さ情報の値と２を加えたものを一致長さの値とする。ここで２を加えるのは、前述のように、一致長さの値が３〜２５７の値を取り、符号化時にそれを８ビットで表現するために、一致長さの値から２を引いた値（１〜２５５）を符号化していることによるものである。
【００５７】
一方、前記求めた一致長さを表すのに必要なビット数が０であれば（ステップＳ３１のＹｅｓ）、一致長さの値を前回値バッファ２４に保持されている一致長さの値とする（ステップＳ３４）。
【００５８】
次に、復号部２２は、上記求めた一致位置と一致長さの値から元の記号列を復元して復元した記号列を出力する（ステップＳ３５）。具体的には、辞書バッファ２３に格納されている記号列の上記求めた値の一致位置から上記求めた値の一致長さ分の記号列を読み出し、その読み出した記号列を元の記号列として出力する。
【００５９】
その後、復号部２２は、前回値バッファ２４に保持される一致位置及び一致長さの値を、それぞれ、今回の処理で求められた一致位置及び一致長さの値に更新する（ステップＳ３６）。
【００６０】
以上説明したように、“不一致”の場合あるいは“一致”の場合における復号処理が終了すると、入力バッファ２１及び辞書バッファ２３に格納されている符号及び記号列がスライドされる（ステップＳ３７）。具体的には、上記処理により復元された符号が入力バッファ２１から削除され、その分の新たな符号が入力バッファ２１に入力される。また、上記処理により復元された記号列が辞書バッファ２３の後尾部分に追加され、先頭部分のその分の記号列が不要な記号として辞書バッファ２３から吐き出される。
【００６１】
その後、今回行おうとしている復元処理が終了したか否かが判断され（ステップＳ３８）、終了していない場合には（ステップＳ３８のＮｏ）、前述したステップＳ２３からの処理が繰り返される。そして、復元処理が終了したと判断された場合には（ステップＳ３８のＹｅｓ）、一連のデータ復元処理を終了する。
【００６２】
図６は、本データ圧縮装置１及びデータ復元装置２が行う処理の具体例を示した図である。図に示す例は、データ圧縮時に前記所定数以上の記号の“一致”があった場合であり、その時の一致位置が３００で、一致長さが２１であった場合である。更に、この例は、一致長さの値が前回の処理時の一致長さの値と同一であった場合である。図６の（ａ）は、前記一致位置（３００）及び一致長さ（２１）を、最大限のビット数の長さで模式的に示した図である。図６の（ｂ）は、当該一致位置（３００）を最大限のビット数で２進法表記したものである。
【００６３】
かかる状態に対して前述した符号化部１２による符号化が行われると図６の（ｃ）に示すような符号が生成されて出力される。図に示す符号の左部分が前述した識別情報（“一致”の場合）であり、前記（１）式に従って図に示すような計算がなされて、識別情報の値は２６５となる。即ち、一致長さの値が前回値バッファ１４に保持される値と同一であるので、一致長さを表すのに必要なビット数が０となり、その値に１５（最大ＢＰ＋１）を掛け、その値に、一致位置の値である３００を２進法表現するのに必要なビット数９と、２５６が加えられて２６５という識別情報が得られる。
【００６４】
また、図６の（ｃ）に示す符号の右側部分の８ビットが一致位置情報であり、３００を２進法表現したビット列の最上位の“１”が除かれたものとなっている。従って、図６の（ｂ）に示した１４ビットの表現から、ＭＳＢ側の全ての“０”と上記最上位の“１”が除かれた８ビットが符号として出力されることになる。また、上述のように、一致長さの値が前回値バッファ１４に保持される値と同一であるので、一致長さ情報は、出力されない。
【００６５】
このような符号が、データ復元装置２で受け取られ復号部２２で復号されると、前記識別情報が解釈されて、一致位置と一致長さを表すのに必要なビット数がそれぞれ９と０であると判断される。そして、前述した処理内容に従って、図６の（ｄ）に示されるように、まず、識別情報の後の（９−１）ビットが読み出されて、その最上位に“１”のビットが付加される。これにより、一致位置の値が３００であると判断される。また、一致長さを表すのに必要なビット数が０であるので、前回値バッファ２４の値が一致長さの値と判断される。この場合、前回値バッファ２４には、一致長さの値として２１が保持されているので、一致長さの値も正しく取得される。これにより、復号部２２は、辞書バッファ２３から所定の記号列を取り出して出力し、当該符号に対する復号処理を終了する。
【００６６】
以上説明したように、本実施の形態例によるデータ圧縮方法及び復元方法では、辞書（バッファ１３）内に所定長以上の最長一致系列が存在しない場合には、その旨と元の記号を含む一定長の識別情報を符号として出力し、一方、辞書内に所定長以上の最長一致系列が存在する場合には、その旨と、一致位置を表すのに必要なビット数及び一致長さを表すのに必要なビット数を含む上記識別情報と同じ長さの識別情報をまず出力し、その後に、必要に応じて、一致位置情報と一致長さ情報を出力する。そして、上記一致位置、一致長さを表すのに必要なビット数が０である場合には、それらの値が前回の値と同一であることを意味し、かかる場合には、同一である一致位置、一致長さの情報は出力されない。また、前記出力される一致位置情報及び一致長さ情報は、一致位置及び一致長さを示す値を２進法表示した際の最上位のビットを除いたビット列で表現される。
【００６７】
従って、一致位置と一致長さに基づく符号化をした際に、それらを表す情報を常に最大の固定長（本実施の形態例では、１４と８）のビット列で表現する必要がなく、上記識別情報が付加されても、符号全体として平均的に符号の長さを短くでき、従来よりもデータ圧縮率を向上させることができる。更に、本実施の形態例による圧縮方法では、一致位置、一致長さの値が前回の処理時と同一の場合には、それらを表す情報の出力が行なわれず、同一であることを示す情報を付加することにより符号が長くなることもないので、このことにより、更に圧縮率を向上させることができる。
【００６８】
図４の（ｂ）は、一致位置と一致長さの最大値が本実施の形態例と同じ場合に、ＬＺＳＳ符号を用いた時の符号例を模式的に示している。上段の辞書内に所定長以上の最長一致系列が存在しない場合（「不一致」）には、その旨を示す“０”と元の記号８ビットが出力される。また、下段の辞書内に所定長以上の最長一致系列が存在する場合（「一致」）には、その旨を示す“１”と固定長の一致位置情報及（１４ビット）及び一致長さ情報（８ビット）が出力される。図４の（ａ）に示した本実施の形態例の場合と比較して[不一致]の場合には、データ長さは同じであるが、[一致]の場合には、本実施の形態例の場合の方が平均してデータ長さが短くなるという評価が得られている。
【００６９】
また、当該符号を復元する場合には、まず、同じ長さの識別情報を解釈して、一致位置と一致長さに基づく符号化がなされているかが判断され、当該符号化がなされている場合にも、識別情報から一致位置情報と一致長さ情報を容易に読み取ることができる。また、当該識別情報により一致位置、一致長さの値が前回処理時の値と同一であるか否かを知ることができ、前回処理時の値が保持されているので、前回処理時と同一の場合にも、容易に一致位置、一致長さの値を得ることができる。従って、復号処理時に入力バッファから一致位置または一致長さの符号を読み出す処理を必要とせず、処理に時間を要することはない。
【００７０】
なお、前記（１）式における乗数、即ち、一致長さ情報のビット数に掛ける乗数、を１５としたが、この乗数を１６にしてもよい。これにより、符号化時の乗算及び復号時の除算はビットシフトで済むことになり、さらに、圧縮及び復元の処理を高速化することができる。また、この場合にも識別情報のビット数は増やす必要がなく、データ量が増えることもない。
【００７１】
また、本実施の形態例における固定長の識別情報をハフマン符号化してもよい。これにより、更にデータ圧縮率を高めることができる。
【００７２】
次に、本発明に係る別の実施の形態例について説明する。本実施の形態例に係るデータ圧縮装置及びデータ復元装置の構成は、図１及び図２に示した前記実施の形態例の場合と同様である。本実施の形態例では、圧縮時に、一致位置情報と一致長さ情報をそれぞれ固定長の符号（ビット列）で表現するが、一致位置、一致長さの値が前回処理時の値と同一であるか否かを表す符号（第一符号）を先頭に付加し、同一である一致位置、一致長さの情報については出力しない、という方法で符号化を行なう。言い換えれば、符号を、一致位置、一致長さの値が前回処理時の値と同一であるか否かを表す符号と、必要な固定長の一致位置情報及び一致長さ情報（第二符号）で構成する。
【００７３】
図７は、本実施の形態例により出力される圧縮処理後の符号を例示した図である。図の（ａ）、（ｂ）、（ｃ）、及び（ｄ）は、それぞれ、一致位置の値も一致長さの値も前回値と同一でなかった場合、一致長さの値のみが前回値と同一であった場合、一致位置の値のみが前回値と同一であった場合、及び一致位置の値も一致長さの値も前回値と同一であった場合に出力される符号を示している。各符号において、先頭の２ビットが、前述した、一致位置、一致長さの値が前回処理時の値と同一であるか否かを表す符号であり、（ａ）〜（ｄ）の４種類の場合を区別している。
【００７４】
このように符号化されたデータの復号時には、本実施の形態例に係るデータ復元装置が、符号の最初の２ビットから、一致位置、一致長さの値が前回処理時の値と同一であるか否かを判断し、同一である値については、保持しておいた前回値を用いて当該値を取得し、同一でない値については、上記２ビットの後に続く固定長の符号から値を取得する。
【００７５】
このように、本実施の形態例では、一致位置、一致長さの値が前回値と同一である場合には、それらの情報が出力されず、また、その旨を示すために付加される符号もそれほど長くないので、最長一致系列の一致位置及び一致長さを用いたデータ圧縮方法において、データの圧縮率を高くすることが可能である。また、かかる方法で圧縮された符号の復元も、上述の通り容易であり、処理に時間がかからない。
【００７６】
次に、前述した２つの実施の形態例に係るデータ圧縮方法及び復元方法の適用例について説明する。図８は、当該データ圧縮方法及び復元方法を用いた印刷システムの概略構成図である。図８に示すように、本印刷システムは、ホストコンピュータ３とプリンタ４から構成される。ホストコンピュータ３のアプリケーション３１から印刷要求が出され、それを受けるプリンタドライバ３２が印刷データを生成して、プリンタ４へ送信する。プリンタ４では、その印刷データをコントローラ４１が受信し、所定の処理を施した後にデータをエンジン４２に送る。エンジン４２は、そのデータに基づいて、印刷媒体への印刷を実行する。
【００７７】
当該印刷システムは、所謂ホストベースのシステムであり、ホストコンピュータ３側でハーフトーン処理（スクリーン処理）までを行ってしまう。従って、プリンタドライバ３２には、図８に示すように、画像データを生成する画像生成部３３、色の変換処理を行う色変換部３４、ハーフトーン処理を行うハーフトーン処理部３５、及びハーフトーン処理後の印刷データを圧縮する圧縮部３６が備えられている。なお、これらの部分は、それぞれの処理内容が示されたドライバプログラムとそれに従って処理を実行するＣＰＵ（制御装置）等によって構成され得る。
【００７８】
一方、プリンタ４のコントローラ４１には、ホストコンピュータ３から圧縮処理された印刷データが送信されるので、それを復元処理する解凍部４３が備えられる。
【００７９】
このように構成される本印刷システムの上記圧縮部３６と解凍部４３に、それぞれ、前述した２つの実施の形態例のいずれかに係るデータ圧縮装置１とデータ復元装置２が用いられている。従って、圧縮部３６では２値化後のドットイメージを表す印刷データが、前述した手法で符号化される。そして、その符号化された印刷データがプリンタ４に送信され、解凍部４３において述した手法で復号される。
【００８０】
本印刷システムでは、このように前述した実施の形態例に係るデータ圧縮方法及び復元方法が用いられるので、印刷データの圧縮率を高めることができ、ホストコンピュータ３からプリンタ４への送信時間を短縮できる。従って、高速化するホストコンピュータ３、プリンタ４での処理にデータ送信を追随させることができ、印刷システムとしてのスループットを向上させることができる。特に、本適用例のようにハーフトーン処理後の印刷データは、同じパターンのデータが繰り返し現れる傾向にあることから、圧縮率を向上させるために本データ圧縮方法が適しているといえる。なお、ハーフトーン処理後のデータについて、最長一致系列が同じであった場合に一致位置の値が小さい方を選択するようにして本圧縮方法を使用した場合に、一致位置情報は平均７〜８ビットで、一致長さ情報は平均２〜３ビットで表せるという評価が得られており、一致位置、一致長さの値が前回値と同一でない場合でも符号全体では平均１９ビット程度であるといえる。従って、ＬＺＳＳ方式による２３ビットの符号と比較してデータを短くすることができる（図４参照）。
【００８１】
また、プリンタ４の制御装置（ＣＰＵ）は、パーソナルコンピュータなどで構成されるホストコンピュータ３と比べて、それほど高速のものを採用しなくてもすむようにしたいという要望があるが、前述した圧縮方法及び復元方法を用いれば、前述の通り、プリンタ４で行われる復元処理が容易となり、当該要望にもかなっている。また、ハーフトーン処理後の印刷データの場合には、前記識別情報のハフマン符号化に適しており、これによって更に圧縮率を向上させることができる。
【００８２】
本発明の保護範囲は、上記の実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【図面の簡単な説明】
【００８３】
【図１】本発明を適用したデータ圧縮装置の実施の形態例に係る構成図である。
【図２】本発明を適用したデータ復元装置の実施の形態例に係る構成図である。
【図３】符号化部１２が行なう処理の内容を例示したフローチャートである。
【図４】本データ圧縮装置１によって生成される符号等を説明するための図である。
【図５】復号部２２が行なう処理の内容を例示したフローチャートである。
【図６】データ圧縮装置１及びデータ復元装置２が行う処理の具体例を示した図である。
【図７】本実施の形態例により出力される圧縮処理後の符号を例示した図である。
【図８】当該データ圧縮方法及び復元方法を用いた印刷システムの概略構成図である。
【符号の説明】
【００８４】
１  データ圧縮装置、  ２  データ復元装置、  ３  ホストコンピュータ、  ４  プリンタ、  １１  入力バッファ、  １２  符号化部、  １３  辞書バッファ、  １４  前回値バッファ、  ２１  入力バッファ、  ２２  復号部（復号手段）、  ２３  辞書バッファ（記号列格納手段）、  ２４  前回値バッファ（前回値格納手段）、  ３１  アプリケーション、  ３２  プリンタドライバ、  ３３  画像生成部、  ３４  色変換部、  ３５  ハーフトーン処理部、  ３６  圧縮部、  ４１  コントローラ、  ４２  エンジン、  ４３  解凍部
【図１】
2005286371.tif 000003
【図２】
2005286371.tif 000004
【図３】
2005286371.tif 000005
【図４】
2005286371.tif 000006
【図５】
2005286371.tif 000007
【図６】
2005286371.tif 000008
【図７】
2005286371.tif 000009
【図８】
2005286371.tif 000010