(57)【特許請求の範囲】
【請求項１】
画像データが連続的に入力された入力データ列と一致するデータ列を、過去に入力された画像データのデータ列から探索する探索手段と、
前記探索手段により前記入力データ列と一致するデータ列が探索された場合に、探索された該データ列の長さと、該データ列の前記過去に入力されたデータ列上の位置とを出力し、前記入力データ列と一致するデータ列が探索されなかった場合に、前記入力データ列をエスケープデータとして出力する中間符号生成手段と、
前記中間符号生成手段から前記エスケープデータが連続して出力される数をカウントするカウント手段と、
前記データ列の長さと前記データ列上の位置と前記エスケープデータとを符号化する符号化手段と
を有し、
前記符号化手段は、
前記中間符号生成手段から複数の前記エスケープデータが連続して出力された場合に、該複数のエスケープデータを纏めて、前記カウント手段で該複数のエスケープデータの数がカウントされたカウント値を示す情報を付加して符号化する
ことを特徴とする画像処理装置。
【請求項２】
前記符号化手段は、
前記複数のエスケープデータを、予め定められた値が２以上の前記カウント値を単位として纏め、該単位としたカウント値を示す情報を付加して符号化する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記中間符号生成手段から出力された、前記データ列の長さと、前記データ列上の位置と、前記エスケープデータとをそれぞれ記憶するＦＩＦＯ形式の第１の記憶手段と、
前記カウント値を示す情報を記憶するＦＩＦＯ形式の第２の記憶手段と、
前記第２の記憶手段の書き込みおよび読み出しを、前記中間符号生成手段の出力に同期して行うように制御する記憶手段制御手段と
をさらに有し、
前記符号化手段は、
前記第１の記憶手段から読み出した前記データ列の長さ、前記データ列上の位置および前記エスケープデータと、前記第２の記憶手段から読み出した前記カウント値を示す情報とを用いて前記符号化を行う
ことを特徴とする請求項１または請求項２に記載の画像処理装置。
【請求項４】
前記符号化手段は、
前記カウント値が予め定められた上限値に達したら、前記複数のエスケープデータと該カウント値を示す情報とを纏めて符号化し、
前記カウント手段は、
前記カウント値が前記上限値に達したら該カウント値をリセットする
ことを特徴とする請求項１乃至請求項３の何れか１項に記載の画像処理装置。
【請求項５】
探索手段が、画像データが連続的に入力された入力データ列と一致するデータ列を、過去に入力された画像データのデータ列から探索する探索ステップと、
中間符号生成手段が、前記探索ステップにより前記入力データ列と一致するデータ列が探索された場合に、探索された該データ列の長さと、該データ列の前記過去に入力されたデータ列上の位置とを出力し、前記入力データ列と一致するデータ列が探索されなかった場合に、前記入力データ列をエスケープデータとして出力する中間符号生成ステップと、
カウント手段が、前記中間符号生成ステップにより前記エスケープデータが連続して出力される数をカウントするカウントステップと、
符号化手段が、前記データ列の長さと前記データ列上の位置と前記エスケープデータとを符号化する符号化ステップと
を有し、
前記符号化ステップは、
前記中間符号生成ステップにより複数の前記エスケープデータが連続して出力された場合に、該複数のエスケープデータを纏めて、前記カウント手段で該複数のエスケープデータの数がカウントされたカウント値を示す情報を付加して符号化する
ことを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データの圧縮符号化を行う画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
プリンタ装置などの画像形成装置は画像データを一時的にメモリに記憶する。この場合、画像データをそのままメモリに格納しようとすると、大容量のメモリが必要になり価格が上昇してしまう。これに対処するため、画像データを圧縮してメモリに格納するようにしている。
【０００３】
このようなプリンタ装置における印字処理は、例えば次のように行われる。プリンタ装置は、コンピュータなどで作成されネットワークなどを介して受け取ったＰＤＬ(Page Description Language)を解析して描画部が実行可能な中間言語を生成し、この中間言語を描画部が解析して、バンドメモリに対して階調処理後の画像を描画する。描画された画像データは、２値画像の圧縮符号化アルゴリズムにより圧縮符号化し、生成された符号データをメモリに格納する。その後、印字動作時に、ＣＭＹＫ各版毎に遅延させてメモリから符号データを読み込んで復号し、ＣＭＹＫ各版に対応するデータのプリンタエンジンに転送し、印字する。
【０００４】
データを効率よく圧縮する方法として、ユニバーサル符号により圧縮する方法が実用化されている。このユニバーサル符号は、情報保存型のデータ圧縮方法であり、データ圧縮時に情報源の統計的な性質を予め仮定しないため、種々のタイプ（文字コード、オブジェクトコードなど）のデータに適用することができる。
【０００５】
ユニバーサル符号の代表的な方法として、ジブ−レンペル(Ziv-Lempel)符号がある。Ziv-Lempel符号では、ユニバーサル型と、増分分解型(Incremental parsing) の２つのアルゴリズムが提案されている。これらのうち、ユニバーサル型アルゴリズムを用いた実用的な方法として、ＬＺＳＳ(Lempel-Ziv-Storer-Syzmanski)符号がある。一方、増分分解型アルゴリズムを用いた実用的な方法として、ＬＺＷ(Lempel-Ziv-Welch)符号がある。
【０００６】
ＬＺＳＳ符号のベースとなるＬＺ７７符号の符号化アルゴリズムは、符号化データを、過去のデータ系列の任意の位置から一致する最大長の系列に区切り、過去の系列の複製として符号化する。
【０００７】
より具体的には、符号化済みの入力データを格納する移動窓と、これから符号化するデータを格納する先読みバッファとを備え、先読みバッファのデータ系列と移動窓のデータ系列の全ての部分系列とを照合して、移動窓中で一致する最大長の部分系列を求める。そして、移動窓中でこの最大長の部分系列を指定するために、「その最大長の部分系列の開始位置」と「一致する長さ」と「不一致をもたらした次のシンボル」との組を符号化する。次に、先読みバッファ内の符号化したデータ系列を移動窓に移して、先読みバッファ内に符号化したデータ系列分の新たなデータ系列を入力する。以下、同様の処理を繰り返していくことで、データを部分系列に分解して符号化を実行していく。
【０００８】
一般的に、ＬＺＳＳ符号化は、符号化済の入力データを保存している移動窓数分、入力データ列との最長一致を検出する必要があるため、演算量が多くなる一方で、高圧縮率が得られるといわれている。
【０００９】
また、ＬＺＷ符号の符号化アルゴリズムは、書き換え可能な辞書を設け、入力文字列を相異なる文字列に分け、この文字列を出現した順に番号を付けて辞書に登録すると共に、現在入力している文字列を辞書に登録してある最長一致文字列の辞書番号だけで表す。このＬＺＷ符号によれば、圧縮率がＬＺＳＳ符号より劣る一方で、シンプルで計算が容易であり、高速処理が可能である。そのため、記憶装置におけるファイル圧縮、データ伝送などで多く使われる。
【００１０】
特許文献１には、複数バイトのデータについて、ＬＺ方式で圧縮符号化が可能であるか否かを判断し、可能であれば当該複数バイトのデータをＬＺ方式で圧縮符号化し、ＬＺ方式による圧縮符号化が可能でなければ当該複数バイトのデータに対して小さいサイズのヘッダを付加するようにした符号化方法が記載されている。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ところで、上述したプリンタ装置においては、印字の際に、圧縮符号化されてメモリに格納された画像データをメモリから読み出し復号しながらプリンタエンジンに転送する。そのため、圧縮符号化された画像データの復号処理は、プリンタエンジンの印字速度に追随する必要がある。したがって、プリンタ装置に適用される圧縮符号化方式は、最悪圧縮率が明確に求められ、且つ、最悪圧縮率で画像データを圧縮符号化した際に発生する符号の符号量ができるだけ小さい必要がある。
【００１２】
ここで、最悪圧縮率において発生する符号量が元の画像データのデータ量を大きく超えるような場合も考えられる。このような場合、最悪圧縮率で符号化した符号量で復号する際のメモリアクセス時間が、復号された画像データをプリンタエンジンに転送する際の速度に対して十分か否か、メモリの容量が最悪圧縮率で符号化した符号量のデータを格納可能か、などを検討する必要がある。例えば、ＪＰＥＧ(Joint Photographic Experts Group)方式といった、ＤＣＴ(Discrete Cosine Transform)を用いた複雑な圧縮符号化方式では、最悪圧縮率を求めることが困難であり、システムの設計が難しくなるという問題点があった。
【００１３】
一方、上述したＬＺ７７符号は、解像度の高い写真画像データや、バイリニア法などにより補間された写真画像データに対する圧縮符号化にも適用可能であることが知られている。また、ＬＺ７７符号では、１バイト単位に符号化できない場合は、１バイトの生データに対してヘッダを付加して符号化を行うため、１バイト単位の符号化が全く行われない場合の最悪圧縮率を容易に求めることができる。ところが、この場合、１バイト単位に符号化できない全ての生データに対してヘッダが付加されるため、符号化後のデータサイズが元の生データのデータサイズに対して膨張してしまうという問題点があった。
【００１４】
また、上述した特許文献１では、ＬＺ方式で圧縮符号化できない場合に、複数バイトデータの先頭にヘッダを付加して符号化を行うために、１バイト単位の生データ毎にヘッダを付加する場合に比べて圧縮率を向上させることができる。しかしながら、この場合であっても、圧縮符号化時の最大一致長は、最初に判断した複数バイトデータ以下に制約されてしまい、圧縮率の低下を招いてしまうという問題点があった。
【００１５】
さらに、特許文献１の方法で圧縮率を向上させるためには、最大一致長をより長くすることが考えられる。この場合、符号化対象のデータを一時的に格納するバッファのサイズを大きくすることが必要となり、メモリ容量が大きくなってしまうという問題点があった。
【００１６】
例えば、同様なＬＺ方式の一つであるＬＨＺ方式では最大一致長が８ｋ（キロ）バイト、ＺＩＰ方式では最大一致長が３２ｋバイトとされ、圧縮率を向上させるためには、それぞれ８ｋバイト、３２ｋバイトのバッファを持つ必要がある。
【００１７】
さらにまた、特許文献１において、１バイト単位での符号化が可能か否かの判断と、ＬＺ方式による符号化処理との２パス方式で圧縮符号化を行う場合、処理の高速化のためには、これら判断処理と符号化処理とのそれぞれに対して、上述した８ｋバイトまたは３２ｋバイトのバッファを持つ必要があり、さらにメモリ容量が大きくなってしまう。また、パイプライン処理を行う場合には、トグルバッファを設ける必要があると共に、メモリ容量を大きく持つ必要がある。
【００１８】
本発明は、上記を鑑みてなされたものであって、画像データを効率的に圧縮符号化することを目的とする。
【課題を解決するための手段】
【００１９】
上述した課題を解決し、目的を達成するために、本発明は、画像データが連続的に入力された入力データ列と一致するデータ列を、過去に入力された画像データのデータ列から探索する探索手段と、探索手段により入力データ列と一致するデータ列が探索された場合に、探索されたデータ列の長さと、データ列の過去に入力されたデータ列上の位置とを出力し、入力データ列と一致するデータ列が探索されなかった場合に、入力データ列をエスケープデータとして出力する中間符号生成手段と、中間符号生成手段からエスケープデータが連続して出力される数をカウントするカウント手段と、データ列の長さとデータ列上の位置とエスケープデータとを符号化する符号化手段とを有し、符号化手段は、中間符号生成手段から複数のエスケープデータが連続して出力された場合に、複数のエスケープデータを纏めて、カウント手段で複数のエスケープデータの数がカウントされたカウント値を示す情報を付加して符号化することを特徴とする。
【００２０】
また、本発明は、探索手段が、画像データが連続的に入力された入力データ列と一致するデータ列を、過去に入力された画像データのデータ列から探索する探索ステップと、中間符号生成手段が、探索ステップにより入力データ列と一致するデータ列が探索された場合に、探索されたデータ列の長さと、データ列の過去に入力されたデータ列上の位置とを出力し、入力データ列と一致するデータ列が探索されなかった場合に、入力データ列をエスケープデータとして出力する中間符号生成ステップと、カウント手段が、中間符号生成ステップによりエスケープデータが連続して出力される数をカウントするカウントステップと、符号化手段が、データ列の長さとデータ列上の位置とエスケープデータとを符号化する符号化ステップとを有し、符号化ステップは、中間符号生成ステップにより複数のエスケープデータが連続して出力された場合に、複数のエスケープデータを纏めて、カウント手段で複数のエスケープデータの数がカウントされたカウント値を示す情報を付加して符号化することを特徴とする。
【発明の効果】
【００２１】
本発明によれば、画像データを効率的に圧縮符号化できるという効果を奏する。
【図面の簡単な説明】
【００２２】
【図１】図１は、本発明に係る画像処理装置を適用可能なプリンタ装置の一例の構成を示すブロック図である。
【図２】図２は、プリンタ装置の全体的な動作の例を概略的に示すフローチャートである。
【図３】図３は、プリンタ装置の全体的な動作におけるプリンタ装置内部のデータの流れを示す略線図である。
【図４】図４は、第１の実施形態による符号化部の一例の構成を示すブロック図である。
【図５】図５は、第１の実施形態による符号フォーマットの例を示す略線図である。
【図６】図６は、ＥＳＣデータＴＹＰＥ生成部の一例の構成を示すブロック図である。
【図７】図７は、ＥＳＣデータＴＹＰＥ生成処理を示す一例のフローチャートである。
【図８】図８は、ＥＳＣデータＴＹＰＥ書き込み処理をより詳細に示すフローチャートである。
【図９】図９は、第１の実施形態による符号フォーマット生成処理の例を示すフローチャートである。
【図１０】図１０は、第１の実施形態に係る復号部の一例の構成を概略的に示すブロック図である。
【図１１】図１１は、第１の実施形態による復号処理の一例を示すフローチャートである。
【図１２】図１２は、スライド追加処理の一例を示すフローチャートである。
【図１３】図１３は、第２の実施形態による符号フォーマットの例を示す略線図である。
【図１４】図１４は、第２の実施形態による符号化部の一例の構成を示すブロック図である。
【図１５】図１５は、ＥＳＣデータ長さ生成部の一例の構成を示すブロック図である。
【図１６】図１６は、ＥＳＣデータ長さ生成処理を示す一例のフローチャートである。
【図１７】図１７は、第２の実施形態による符号フォーマット生成処理の例を示すフローチャートである。
【図１８】図１８は、第２の実施形態に係る復号部の一例の構成を概略的に示すブロック図である。
【図１９】図１９は、第２の実施形態による復号処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００２３】
以下に添付図面を参照して、本発明に係る画像処理装置の実施形態を詳細に説明する。本発明では、ＬＺ方式で画像データを圧縮符号化する際に、入力データ列と最長一致するデータ列が辞書に見つからない際に入力データ列をそのまま用いて符号データとしたエスケープデータ（以下、ＥＳＣデータ）が連続する場合に、連続するＥＳＣデータに対して纏めてヘッダを付加する。複数のＥＳＣデータに対して１つのヘッダを付加するため、ＥＳＣデータが連続する際の圧縮率の向上が期待できる。
【００２４】
＜各実施形態に共通の構成＞
図１は、本発明に係る画像処理装置を適用可能なプリンタ装置２００の一例の構成を示す。図１の例では、プリンタ装置２００は、制御部２３０、メインメモリ２１０、プリンタエンジン２１１およびオペレーションパネル２４０を備える。制御部２３０は、ＣＰＵ(Central Processing Unit)２１２、ＣＰＵ  Ｉ／Ｆ２０１、メインメモリアービタ２０２、メインメモリコントローラ２０３、符号化部２０４、復号部２０５、階調処理部２０６、エンジンコントローラ２０７およびパネルコントローラ２４１を含む。
【００２５】
ＣＰＵ２１２は、メインメモリ２１０に格納されるプログラムに従い、このプリンタ装置２００の全体の動作を制御する。ＣＰＵ２１２は、ＣＰＵ  Ｉ／Ｆ２０１を介してメインメモリアービタ２０２に接続される。メインメモリアービタ２０２は、ＣＰＵ２１２、符号化部２０４、復号部２０５および通信コントローラ２０８の、メインメモリ２１０に対するアクセスを調停する。
【００２６】
メインメモリ２１０は、メインメモリコントローラ２０３を介してメインメモリアービタ２０２に接続される。メインメモリコントローラ２０３は、メインメモリ２１０に対するアクセスの制御を行う。
【００２７】
メインメモリ２１０は、プログラム領域２１０Ａ、ＰＤＬデータ格納領域２１０Ｂ、ＣＭＹＫバンド画像データ格納領域２１０Ｃ、ＣＭＹＫページ符号格納領域２１０Ｄおよびその他の領域２１０Ｅを有する。プログラム領域２１０Ａは、ＣＰＵ２１２が動作するためのプログラムが格納される。ＰＤＬデータ格納領域２１０Ｂは、例えばコンピュータ２２０から通信コントローラ２０８を介して供給されたＰＤＬデータが格納される。ＣＭＹＫバン画像ドデータ格納領域２１０Ｃは、ＣＭＹＫバンド画像データが格納される。ＣＭＹＫページ符号格納領域２１０Ｄは、バンド画像データが圧縮符号化された符号データが格納される。ＣＭＹＫページ符号格納領域２１０Ｄは、例えば１ページ分のＣＭＹＫバンド画像データが圧縮符号化された符号データが格納される。領域２１０Ｅは、上述した以外のデータが格納される。
【００２８】
符号化部２０４は、メインメモリ２１０に格納されるバンド画像データを符号化する。バンド画像データが符号化された符号データは、メインメモリアービタ２０２およびメモリコントローラ２０３を介してメインメモリ２１０に供給され、ＣＭＹＫページ符号格納領域２１０Ｄに書き込まれる。復号部２０５は、後述するプリンタエンジン２１１に同期して、メインメモリ２１０のＣＭＹＫページ符号格納領域２１０Ｄから符号データを読み出して復号する。復号された画像データは、階調処理部２０６に供給され、階調処理が施されてエンジンコントローラ２０７に転送される。
【００２９】
エンジンコントローラ２０７は、プリンタエンジン２１１を制御する。図１では、プリンタエンジン２１１としてＣＭＹＫ各色の版のうち１の版のものだけが記載され、その他の版については煩雑さを避けるために省略されている。
【００３０】
通信コントローラ２０８は、ネットワークを介しての通信を制御する。例えば、コンピュータ２２０から出力されたＰＤＬ(Page Description Language)データは、ネットワークを介して通信コントローラ２０８により受信される。通信コントローラ２０８は、受信したＰＤＬデータを、メインメモリアービタ２０２およびメインメモリコントローラ２０３を介してメインメモリ２１０に転送する。
【００３１】
なお、ネットワークは、ＬＡＮ(Local Area Network)などの所定の範囲内で通信を行うものでもよいし、インターネットなどより広範囲に通信可能なものでもよい。また、ネットワークは、有線通信に限らず無線通信を用いたものでもよいし、ＵＳＢ(Universal Serial Bus)やＩＥＥＥ(Institute Electrical and Electronics Engineers)１３９４といったシリアル通信を行うものでもよい。
【００３２】
オペレーションパネル２４０は、ユーザ操作を受け付けるための複数の操作子と、ユーザに対して情報を提供するための表示素子とを有する。パネルコントローラ２４１は、ＣＰＵ２１２の指示に従い、オペレーションパネル２４０の表示を制御すると共に、オペレーションパネル２４０に対してなされたユーザ操作に応じた信号を、ＣＰＵ２１２に送信する。
【００３３】
図２および図３を用いて、プリンタ装置２００の全体的な動作の例について説明する。図２は、プリンタ装置２００の全体的な動作の例を概略的に示すフローチャートである。また、図３は、図２のフローチャートに従った動作におけるプリンタ装置２００内部のデータの流れを示す（経路Ａ〜Ｅ）。
【００３４】
例えばコンピュータ２２０で生成されたＰＤＬデータがネットワークを介して通信コントローラ２０８に受信され、メインメモリ２１０のＰＤＬデータ格納領域２１０Ｂに記憶される（ステップＳ１）。ＣＰＵ２１２は、メインメモリ２１０のＰＤＬデータ格納領域２１０Ｂから経路Ａに従いＰＤＬデータを読み出し、ＰＤＬを解析して（ステップＳ２）、解析結果に基づきＣＭＹＫのバンド画像を描画する（ステップＳ３）。描画されたＣＭＹＫのバンド画像によるＣＭＹＫバンド画像データは、メインメモリ２１０のＣＭＹＫバンド画像データ格納領域２１０Ｃに記憶される（ステップＳ４）。
【００３５】
符号化部２０４は、経路Ｂに従いＣＭＹＫバンド画像データ格納領域２１０ＣからＣＭＹＫバンド画像データを読み出して、本発明の各実施形態による符号化方法を用いて符号化する（ステップＳ５）。ＣＭＹＫバンド画像データが符号化された符号データは、経路Ｃに従いメインメモリ２１０のＣＭＹＫページ符号格納領域２１０Ｄに記憶される（ステップＳ６）。
【００３６】
復号部２０５は、経路Ｄに従いＣＭＹＫページ符号格納領域２１０Ｄから符号データを読み出して画像データに復号し（ステップＳ７）、復号した画像データを階調処理部２０６に供給する。階調処理部２０６は、復号部２０５から供給された画像データに対して階調処理を施して、経路Ｅに従いプリンタエンジンコントローラ２０７に供給する。エンジンコントローラ２０７は、供給された画像データに従い基づきプリンタエンジン２１１を制御してプリントアウトを行う（ステップＳ９）。
【００３７】
＜第１の実施形態による符号化処理＞
図４は、本発明の第１の実施形態による符号化部２０４の一例の構成を示す。符号化部２０４は、データ読み込み部３００、中間符号生成処理部３０１、ＥＳＣデータＴＹＰＥ生成部３０２、符号フォーマット生成処理部３０３および符号書き込み部３０４を有する。
【００３８】
符号化部２０４において、データ読み込み部３００により、メインメモリ２１０のＣＭＹＫバンド画像データ格納領域２１０Ｃから、ＣＭＹＫバンド画像データがメインメモリコントローラ２０３およびメモリアービタ２０２を介して読み出される。以下では、ＣＭＹＫ各色のうちＣ色のバンド画像データについて説明し、バンド画像データを単に画像データと呼ぶものとする。データ読み込み部３００に読み込まれた画像データは、中間符号生成処理部３０１に供給される。
【００３９】
中間符号生成処理部３０１は、入力されたデータを順次記憶するＦＩＦＯ(First In First Out)方式のスライド記憶部を有する。中間符号生成処理部３０１は、供給された画像データとスライド記憶部に記憶された過去の入力データとを順次比較して、当該供給された画像データによるデータ列と一致する、当該過去の入力データによるデータ列を探索する。そして、供給された画像データによるデータ列と一致する、過去の入力データによるデータ列が探索された場合には、当該過去の入力データのスライド記憶部内の位置を示す一致位置Addressと、一致した長さを示す値である一致長さLengとで符号化する。両者が一致しない場合には、データ値そのものをＥＳＣデータとして用いて符号化する。そして、これらＥＳＣデータと、一致位置Addressおよび一致長さLengと、供給されたデータによるデータ列と、過去の入力データによるデータ列とが一致したか否かを示す中間符号ＴＹＰＥとを出力する。なお、この例では、中間符号生成処理部３０１は、２５６個のスライドを有するものとする。
【００４０】
中間符号生成処理部３０１から出力された各値は、ＥＳＣデータＴＹＰＥ生成部３０２に供給される。ＥＳＣデータＴＹＰＥ生成部３０２は、供給されたデータによるデータ列と、過去の入力データによるデータ列とが一致しない旨を示す中間符号ＴＹＰＥ（以下、不一致を示す中間符号ＴＹＰＥと呼ぶ）が連続する数をカウントし、ＥＳＣデータの連続数を分別するためのＥＳＣデータＴＹＰＥを生成する。本第１の実施形態では、ＥＳＣデータＴＹＰＥとして、１個のＥＳＣデータを示すＥＳＣデータ（１）、ＥＳＣデータの４個の連続を示すＥＳＣデータ（４）、ＥＳＣデータの８個の連続を示すＥＳＣデータ（８）の、ＥＳＣデータの連続数を離散的とした３種類を定義する。この３種類のＥＳＣデータＴＹＰＥを組み合わせることで、ＥＳＣデータの任意の連続数を表現できる。
【００４１】
ＥＳＣデータＴＹＰＥ生成部３０２は、生成したＥＳＣデータＴＹＰＥを出力すると共に、中間符号生成処理部３０１から供給された、ＥＳＣデータと、一致位置Addressおよび一致長さLengと、中間符号ＴＹＰＥとを出力する。ＥＳＣデータＴＹＰＥ生成部３０２から出力された各値は、符号フォーマット生成処理部３０３に供給される。符号フォーマット生成処理部３０３は、供給されたＥＳＣデータと、一致位置Addressおよび一致長さLengと、中間符号ＴＹＰＥと、ＥＳＣデータＴＹＰＥとを、図５に例示されるようなフォーマットで符号化する。
【００４２】
図５（ａ）〜図５（ｄ）に例示される各符号は、先頭の２ビットのヘッダにより識別される。この例では、ヘッダの値が「００」であれば、当該ヘッダに続くデータがスライド符号であることを示し、一致位置Addressおよび一致長さLengがヘッダに接続される。この例では、中間符号生成処理部３０１におけるスライド数が２５６個であるため、一致位置Addressおよび一致長さLengは、それぞれ例えば８ビットのデータ長となっている。
【００４３】
ヘッダの値が「０１」、「１０」および「１１」の何れかであれば、当該ヘッダがＥＳＣデータＴＹＰＥを示している。図５（ｂ）、図５（ｃ）および図５（ｄ）は、ＥＳＣデータＴＹＰＥのＥＳＣデータ（１）、ＥＳＣデータ（４）およびＥＳＣデータ（８）に従いＥＳＣデータを符号化したＥＳＣデータ（１）符号、ＥＳＣデータ（４）符号およびＥＳＣデータ（８）符号の例を示す。本第１の実施形態では、このように、複数のＥＳＣデータを２以上の所定数毎に纏めて１個のヘッダを付加することで、ＥＳＣデータの符号化を行っている。
【００４４】
より詳細には、ヘッダの値が「０１」であれば、ＥＳＣデータ（１）符号を示し、データ長が８ビットのＥＳＣデータ＃０がヘッダに接続される。ヘッダの値が「１０」であれば、ＥＳＣデータ（４）符号を示し、データ長がそれぞれ８ビットの４個のＥＳＣデータ＃０〜＃３がヘッダに接続される。また、ヘッダの値が「１１」であれば、ＥＳＣデータ（８）符号を示し、データ長がそれぞれ８ビットの８個のＥＳＣデータ＃０〜＃７がヘッダに接続される。
【００４５】
このように、連続する２以上の所定数のＥＳＣデータに対して纏めて１個のヘッダを付加することで、ヘッダの数および符号長を減らすことができる。一例として、７個の連続するＥＳＣデータは、３個のＥＳＣデータ（１）符号と、１個のＥＳＣデータ（４）符号とによる４個の符号で表現することができる。この場合、４個の符号の合計符号量は、データ部分(７個×８ビット)＋ヘッダ部分(３個×２ビット)の合計６２ビットとなる。符号の元データに対する膨張率(符号量/データ量)は、１.１０倍となる。
【００４６】
一方、７個の連続するＥＳＣデータを、７個のＥＳＣデータ（１）符号で表現することも可能である。この場合、７個の符号の合計符号量は、データ部分(７個×８ビット)＋ヘッダ部分(７個×２ビット)の合計７０ビットとなる。この場合の符号の膨張率は、１.２５倍となり、３個のＥＳＣデータ（１）符号と１個のＥＳＣデータ（４）符号とを組み合わせた場合に比べ、ヘッダの数が増える分膨張率が高くなり、不利である。このように、複数個のＥＳＣデータを纏めて符号化することにより、符号量の膨張率を小さくすることができる。
【００４７】
なお、図５に例示される符号フォーマットは一例であって、この例に限られるものではない。例えば、上述ではＥＳＣデータＴＹＰＥを、ＥＳＣデータの連続数が１個、４個および８個の３通りに定義しているが、これはこの組み合わせに限られず、ＥＳＣデータの連続数を異なる値としてもよい。また、ＥＳＣデータＴＹＰＥを、２通りまたは４通り以上に定義してもよい。但し、ＥＳＣデータＴＹＰＥを４通り以上に定義する場合は、ヘッダのビット数を３ビット若しくはそれ以上にする必要がある。
【００４８】
符号フォーマット生成処理部３０３で生成されたスライド符号、ならびに、ＥＳＣデータ（１）符号、ＥＳＣデータ（４）符号およびＥＳＣデータ（８）符号は、符号書き込み部３０３に供給される。符号書き込み部３０４は、供給された各符号を、メインメモリアービタ２０２およびメインメモリコントローラ２０３を介して、メインメモリ２１０のＣＭＹＫページ符号格納領域２１０Ｄに書き込む。
【００４９】
図６は、ＥＳＣデータＴＹＰＥ生成部３０２の一例の構成を示す。ＥＳＣデータＴＹＰＥ生成部３０２は、それぞれＦＩＦＯ構成のバッファメモリである一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１、ＥＳＣデータＦＩＦＯ３１２、中間符号ＴＹＰＥ＿ＦＩＦＯ３１３およびＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６を有する。また、ＥＳＣデータＴＹＰＥ生成部３０２は、不一致を示す中間符号ＴＹＰＥをカウントするＥＳＣデータカウンタ３１４と、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ書き込み制御部３１５とを有する。ＥＳＣデータカウンタ３１４は、換言すれば、ＥＳＣデータの連続数をカウントするものである。
【００５０】
一致位置ＦＩＦＯ３１０および一致長さＦＩＦＯ３１１は、それぞれ一致位置Addressおよび一致長さLengが書き込まれ、８ビット単位でデータの書き込みおよび出力がなされる。ＥＳＣデータＦＩＦＯ３１２は、ＥＳＣデータが書き込まれ、８ビット単位でデータの書き込みおよび出力がなされる。中間符号ＴＹＰＥ＿ＦＩＦＯ３１３は、中間符号ＴＹＰＥが書き込まれ、中間符号ＴＹＰＥ単位（例えば８ビット）でデータの書き込みおよび出力がなされる。
【００５１】
また、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６は、ＥＳＣデータＴＹＰＥが書き込まれ、ＥＳＣデータＴＹＰＥ単位（例えば８ビット）でデータの書き込みおよび出力がなされる。ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６は、一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１、ＥＳＣデータＦＩＦＯ３１２および中間符号ＴＹＰＥ＿ＦＩＦＯ３１３と同期して書き込みおよび読み出しが行われるように、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ書き込み制御部３１５に制御される。換言すれば、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ書き込み制御部３１５は、中間符号生成処理部３０１の出力に同期して書き込みおよび読み出しが行われるように、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６を制御する。
【００５２】
ＥＳＣデータカウンタ３１４は、中間符号ＴＹＰＥの値に基づきＥＳＣデータの連続数をカウントし、ＥＳＣデータの連続が途絶えた時点で、ＥＳＣデータの連続数をカウントしたＥＳＣデータカウント値をＥＳＣデータＴＹＰＥ＿ＦＩＦＯ書き込み制御部３１５に対して転送する。
【００５３】
ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ書き込み制御部３１５は、ＥＳＣデータカウンタ３１５から転送されたＥＳＣデータカウント値を解析してＥＳＣデータＴＹＰＥを生成する。そして、生成したＥＳＣデータＴＹＰＥを示す値を、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６の当該ＥＳＣデータＴＹＰＥに応じた位置に書き込む。このとき、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ書き込み制御部３１５は、後述するように、ＥＳＣデータＴＹＰＥを示す値を、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６の当該ＥＳＣデータＴＹＰＥに応じた位置に書き込む。
【００５４】
図７は、ＥＳＣデータＴＹＰＥ生成部３０２におけるＥＳＣデータＴＹＰＥ生成処理を示す一例のフローチャートである。最初のステップＳ１００で、ＥＳＣデータカウンタ３１４におけるＥＳＣデータカウント値ＣESCを０に初期化する。
【００５５】
ステップＳ１０１で、ＥＳＣデータＴＹＰＥ生成部３０２は、中間符号生成処理部３０１から、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータを受け取り、次のステップＳ１０２で、受け取った中間符号ＴＹＰＥがＥＳＣデータ符号を示しているか否かを判定する。若し、示していると判定されたら、処理はステップＳ１０３に移行され、ＥＳＣデータカウント値ＣESCが８であるか否かが判定される。
【００５６】
若し、ステップＳ１０３で、ＥＳＣデータカウント値ＣESCが８ではないと判定されたら、処理はステップＳ１０６に移行され、ＥＳＣデータカウント値ＣESCが１だけ増加される。
【００５７】
一方、ステップＳ１０３で、ＥＳＣデータカウント値ＣESCが８であると判定されたら、処理はステップＳ１０４に移行される。ステップＳ１０４では、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ書き込み制御部３１５により、ＥＳＣデータＴＹＰＥのＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６に対する書き込み処理が行われる。
【００５８】
図８は、ステップＳ１０４および後述するステップＳ１０７におけるＥＳＣデータＴＹＰＥ書き込み処理をより詳細に示すフローチャートである。この図８のフローチャートによる各処理は、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ書き込み制御部３１５により行われる。先ず、ステップＳ１３０でＥＳＣデータカウント値ＣESCが８であるか否かを判定する。若し、８ではないと判定したら、処理をステップＳ１３３に移行させる。
【００５９】
一方、ＥＳＣデータカウント値ＣESCが８であると判定したら、処理をステップＳ１３１に移行させる。ステップＳ１３１で、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ書き込み処理部３１５は、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６の、入力側から数えて８番目（８単位目）に対して、ＥＳＣデータ（８）を示す値を書き込む。次のステップＳ１３２で、ＥＳＣデータカウント値ＣESCから８を減じて、新たなＥＳＣデータカウント値ＣESCとする。そして、処理をステップＳ１３３に移行させる。
【００６０】
ステップＳ１３３で、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ書き込み処理部３１５は、ＥＳＣデータカウント値ＣESCが４を超える値であるか否かを判定する。若し、４以下であると判定したら、図８による一連の処理を終了し、図７のフローチャートの処理に移行させる。
【００６１】
一方、ＥＳＣデータカウント値ＣESCが４を超える値であると判定したら、処理をステップＳ１３４に移行させる。ステップＳ１３４で、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ書き込み処理部３１５は、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６の、入力側から数えて４番目（４単位目）に対して、ＥＳＣデータ（４）を示す値を書き込む。次のステップＳ１３５で、ＥＳＣデータカウント値ＣESCから４を減じて、新たなＥＳＣデータカウント値ＣESCとする。そして、図８による一連の処理を終了し、図７のフローチャートの処理に移行させる。
【００６２】
説明を図７のフローチャートに戻し、ステップＳ１０４でＥＳＣデータＴＹＰＥの書き込み処理が行われると、処理がステップＳ１０５に移行される。ステップＳ１０５では、ＥＳＣデータカウント値ＣESCがリセットされて０とされ、次のステップＳ１０６でＥＳＣデータカウント値ＣESCが１だけ増加され、処理がステップＳ１０９に移行される。
【００６３】
一方、上述のステップＳ１０２で、中間符号ＴＹＰＥがＥＳＣデータ符号を示していないと判定されたら、処理がステップＳ１０７に移行されて、図８を用いて説明したようにしてＥＳＣデータＴＹＰＥの書き込み処理が行われる。そして、次のステップＳ１０８でＥＳＣデータカウント値ＣESCがリセットされて０とされ、処理がステップＳ１０９に移行される。
【００６４】
ステップＳ１０９で、ＥＳＣデータＴＹＰＥ生成部３０２は、一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１、ＥＳＣデータＦＩＦＯ３１２、中間符号ＴＹＰＥ＿ＦＩＦＯ３１３およびＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６を、それぞれ１（１単位分）だけシフトさせる。
【００６５】
次のステップＳ１１０で、ＥＳＣデータＴＹＰＥ生成部３０２は、中間符号生成処理部３０１から供給された各データを、各ＦＩＦＯにそれぞれ格納する。すなわち、ＥＳＣデータＴＹＰＥ生成部３０２は、一致位置Addressを一致位置ＦＩＦＯ３１０の先頭（０番目）に書き込み、一致長さLengを一致長さＦＩＦＯ３１１の０番目に書き込む。また、ＥＳＣデータＴＹＰＥ生成部３０２は、ＥＳＣデータをＥＳＣデータＦＩＦＯ３１２の０番目に、中間符号ＴＹＰＥを中間符号ＴＹＰＥ＿ＦＩＦＯ３１３の０番目にそれぞれ書き込む。また、ＥＳＣデータＴＹＰＥ生成部３０２において、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ書き込み制御部３１５は、ＥＳＣデータ（１）を示すＥＳＣデータＴＹＰＥをＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６の０番目に書き込む。
【００６６】
次のステップＳ１１１で、ＥＳＣデータＴＹＰＥ生成部３０２は、各ＦＩＦＯの最後尾（最終番目）に格納されるデータをそれぞれ読み込み、符号フォーマット生成処理部３０３に転送する。すなわち、ＥＳＣデータＴＹＰＥ生成部３０２は、一致位置ＦＩＦＯ３１０の最終番目から一致位置Addressを、一致長さＦＩＦＯ３１１の最終番目から一致長さLengをそれぞれ読み込み、符号フォーマット生成処理部３０３に転送する。また、ＥＳＣデータＴＹＰＥ生成部３０２は、ＥＳＣデータＦＩＦＯ３１２の最終番目からＥＳＣデータを、中間符号ＴＹＰＥ＿ＦＩＦＯ３１３の最終番目から中間符号ＴＹＰＥをそれぞれ読み込み、符号フォーマット生成処理部３０３に転送する。さらに、ＥＳＣデータＴＹＰＥ生成部３０２は、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６の最終番目からＥＳＣデータＴＹＰＥを読み込み、符号フォーマット生成処理部３０３に転送する。
【００６７】
次のステップＳ１１２で、処理対象の画像データを全て処理したか否かを判定する。若し、未だ処理していない画像データが存在すると判定したら、処理はステップＳ１０１に戻される。一方、処理対象の画像データを全て処理したと判定したら、処理はステップＳ１１３に移行され、一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１ＥＳＣデータＦＩＦＯ３１２、中間符号ＴＹＰＥ＿ＦＩＦＯ３１３およびＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６の各ＦＩＦＯ内の符号を全て出力したか否かを判定する。若し、全て出力したと判定したら、図７のフローチャートによる一連の処理が終了される。
【００６８】
一方、未だ出力されていない符号が存在すると判定したら、処理はステップＳ１１４に移行される。ステップＳ１１４で、ＥＳＣデータＴＹＰＥ生成部３０２は、一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１、ＥＳＣデータＦＩＦＯ３１２および中間符号ＴＹＰＥ＿ＦＩＦＯ３１３の先頭（０番目）に、ＮＯＰ(No Operation)を示す値を書き込む。また、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ書き込み制御部３１５は、ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６の０番目に、ＮＯＰを示す値を書き込む。
【００６９】
各ＦＩＦＯの０番目にＮＯＰを示す値が書き込まれると、次のステップＳ１１５で、ＥＳＣデータＴＹＰＥ生成部３０２は、一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１、ＥＳＣデータＦＩＦＯ３１２、中間符号ＴＹＰＥ＿ＦＩＦＯ３１３およびＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６を、それぞれ１（１単位分）だけシフトさせる。
【００７０】
そして、次のステップＳ１１６で、ＥＳＣデータＴＹＰＥ生成部３０２は、一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１ＥＳＣデータＦＩＦＯ３１２、中間符号ＴＹＰＥ＿ＦＩＦＯ３１３およびＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６それぞれの最終番目から、一致位置Address、一致長さLeng、ＥＳＣデータ、中間符号ＴＹＰＥおよびＥＳＣデータＴＹＰＥを読み込み、符号フォーマット生成処理部３０３に転送する。
【００７１】
次のステップＳ１１７で、一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１ＥＳＣデータＦＩＦＯ３１２、中間符号ＴＹＰＥ＿ＦＩＦＯ３１３およびＥＳＣデータＴＹＰＥ＿ＦＩＦＯ３１６の各ＦＩＦＯ内の符号を全て出力したか否かを判定する。若し、全て出力したと判定したら、図７のフローチャートによる一連の処理が終了される。一方、各ＦＩＦＯ内の符号が未だ全て出力されていないと判定されたら、処理がステップＳ１１４に戻される。
【００７２】
図９は、符号フォーマット生成処理部３０３における符号フォーマット生成処理の例を示すフローチャートである。先ず、ステップＳ１４０で、符号フォーマット生成処理部３０３は、ＥＳＣデータＴＹＰＥ生成部３０２からＥＳＣデータＴＹＰＥ、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータを受け取り、次のステップＳ１４１で、受け取った中間符号ＴＹＰＥがＥＳＣデータ符号を示しているか否かを判定する。
【００７３】
若し、ステップＳ１４１で、中間符号ＴＹＰＥがＥＳＣデータ符号を示していないと判定したら、処理をステップＳ１４２に移行させ、ヘッダの値を「００」とし、一致位置Addressおよび一致長さLengから、図５（ａ）に例示したスライド符号の符号フォーマットに従い符号データを生成する。符号フォーマット生成処理部３０３は、生成された符号データを符号書き込み部３０４に転送し、処理をステップＳ１５７に移行させる。
【００７４】
一方、ステップＳ１４１で、中間符号ＴＹＰＥがＥＳＣデータ符号を示していると判定したら、処理をステップＳ１４３に移行させる。ステップＳ１４３では、符号フォーマット生成処理部３０３は、ステップＳ１４０でＥＳＣデータＴＹＰＥ生成部３０２から受け取ったＥＳＣデータを最初のＥＳＣデータすなわちＥＳＣデータ＃０として、処理をステップＳ１４４に移行させる。
【００７５】
ステップＳ１４４で、符号フォーマット生成処理部３０３は、ＥＳＣデータＴＹＰＥがＥＳＣデータ（１）符号を示しているか否かを判定する。若し、示していると判定したら、処理をステップＳ１４５に移行させ、図５（ｂ）に例示したＥＳＣデータ（１）符号の符号フォーマットに従い符号データを生成する。より具体的には、ヘッダの値を「０１」とし、このヘッダに対してステップＳ１４０で受け取ったＥＳＣデータを接続し、ＥＳＣデータ（１）符号を生成する。そして、処理をステップＳ１５７に移行させる。
【００７６】
一方、ステップＳ１４４で、ＥＳＣデータＴＹＰＥがＥＳＣデータ（１）符号を示していないと判定したら、処理をステップＳ１４６に移行させる。ステップＳ１４６では、符号フォーマット生成処理部３０３は、上述の図７のフローチャートにおけるステップＳ１１１またはステップＳ１１６でＥＳＣデータＴＹＰＥ生成部３０２から出力されたＥＳＣデータＴＹＰＥ、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータを受け取る。そして、符号フォーマット生成処理部３０３は、受け取ったＥＳＣデータを２番目のＥＳＣデータすなわちＥＳＣデータ＃１として、処理をステップＳ１４７に移行させる。
【００７７】
ステップＳ１４７でも同様にして、符号フォーマット生成処理部３０３は、上述の図７のフローチャートにおけるステップＳ１１１またはステップＳ１１６でＥＳＣデータＴＹＰＥ生成部３０２から次に出力されたＥＳＣデータＴＹＰＥ、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータを受け取る。そして、符号フォーマット生成処理部３０３は、受け取ったＥＳＣデータをＥＳＣデータ＃２として、処理をステップＳ１４８に移行させる。
【００７８】
ステップＳ１４８でも同様にして、符号フォーマット生成処理部３０３は、上述の図７のフローチャートにおけるステップＳ１１１またはステップＳ１１６でＥＳＣデータＴＹＰＥ生成部３０２から次に出力されたＥＳＣデータＴＹＰＥ、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータを受け取る。そして、符号フォーマット生成処理部３０３は、受け取ったＥＳＣデータをＥＳＣデータ＃３として、処理をステップＳ１４９に移行させる。
【００７９】
ステップＳ１４９で、符号フォーマット生成処理部３０３は、ステップＳ１４７で受け取ったＥＳＣデータＴＹＰＥがＥＳＣデータ（４）符号を示しているか否かを判定する。若し、示していると判定したら、処理をステップＳ１５０に移行させ、図５（ｃ）に例示したＥＳＣデータ（４）符号の符号フォーマットに従い符号データを生成する。より具体的には、ヘッダの値を「１０」とし、このヘッダに対してステップＳ１４０、ならびに、ステップＳ１４６〜ステップＳ１４８で受け取った４個のＥＳＣデータを順次接続し、ＥＳＣデータ（４）符号を生成する。そして、処理をステップＳ１５７に移行させる。
【００８０】
一方、ステップＳ１４９で、ＥＳＣデータＴＹＰＥがＥＳＣデータ（４）符号を示していないと判定したら、処理をステップＳ１５１に移行させる。ステップＳ１５１では、上述したステップＳ１４６〜ステップＳ１４８などと同様にして、符号フォーマット生成処理部３０３は、上述の図７のフローチャートにおけるステップＳ１１１またはステップＳ１１６でＥＳＣデータＴＹＰＥ生成部３０２から次に出力されたＥＳＣデータＴＹＰＥ、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータを受け取る。そして、符号フォーマット生成処理部３０３は、受け取ったＥＳＣデータをＥＳＣデータ＃４として、処理をステップＳ１５２に移行させる。
【００８１】
ステップＳ１５２でも同様にして、符号フォーマット生成処理部３０３は、上述の図７のフローチャートにおけるステップＳ１１１またはステップＳ１１６でＥＳＣデータＴＹＰＥ生成部３０２から次に出力されたＥＳＣデータＴＹＰＥ、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータを受け取る。そして、符号フォーマット生成処理部３０３は、受け取ったＥＳＣデータをＥＳＣデータ＃５として、処理をステップＳ１５３に移行させる。
【００８２】
ステップＳ１５３でも同様にして、符号フォーマット生成処理部３０３は、上述の図７のフローチャートにおけるステップＳ１１１またはステップＳ１１６でＥＳＣデータＴＹＰＥ生成部３０２から次に出力されたＥＳＣデータＴＹＰＥ、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータを受け取る。そして、符号フォーマット生成処理部３０３は、受け取ったＥＳＣデータをＥＳＣデータ＃６として、処理をステップＳ１５４に移行させる。
【００８３】
ステップＳ１５４でも同様にして、符号フォーマット生成処理部３０３は、上述の図７のフローチャートにおけるステップＳ１１１またはステップＳ１１６でＥＳＣデータＴＹＰＥ生成部３０２から次に出力されたＥＳＣデータＴＹＰＥ、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータを受け取る。そして、符号フォーマット生成処理部３０３は、受け取ったＥＳＣデータをＥＳＣデータ＃７として、処理をステップＳ１５５に移行させる。
【００８４】
ステップＳ１５５では、図５（ｄ）に例示したＥＳＣデータ（８）符号の符号フォーマットに従い符号データを生成する。より具体的には、ヘッダの値を「１１」とし、このヘッダに対してステップＳ１４０、ステップＳ１４６〜ステップＳ１４８、ならびに、ステップＳ１５１〜ステップＳ１５４で受け取った８個のＥＳＣデータを順次接続し、ＥＳＣデータ（８）符号を生成する。そして、処理をステップＳ１５７に移行させる。
【００８５】
ステップＳ１５７では、処理対象となる全ての中間符号について処理が終了したか否かが判定される。若し、終了したと判定されたら、図９のフローチャートにおける一連の処理が終了される。一方、処理対象となる中間符号のうち未だ処理が行われていない中間符号が存在すると判定されたら、処理はステップＳ１４０に戻される。
【００８６】
＜第１の実施形態による復号処理＞
図１０は、本第１の実施形態に係る復号部２０５の一例の構成を概略的に示す。復号部２０５において、符号読み込み部４００により、上述した符号化部２０４で符号化された符号データがメインメモリ２１０のページ符号格納領域２１０Ｄから読み込まれる。符号読み込み部４００に読み込まれた符号データは、符号フォーマット解析部４０１に供給される。
【００８７】
符号フォーマット解析部４０１は、図５（ａ）〜図５（ｄ）を用いて説明した符号フォーマットに従い、供給された符号化データを解釈してＥＳＣデータＴＹＰＥ、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータを取り出す。取り出されたこれらのデータは、スライド展開部４０２に供給される。
【００８８】
スライド展開部４０２は、直列的に接続されＦＩＦＯ構成とされた複数のレジスタを含む、スライド記憶部を持つ。各レジスタは、スライドと呼ばれ、それぞれ１単位（例えば８ビット）のデータを格納可能とされる。以下では、複数のスライドのうち先頭からＸ番目のスライドを、適宜、スライド［Ｘ］のように記述する。スライド展開部４０２は、供給されたＥＳＣデータＴＹＰＥ、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータに基づき、スライド記憶部における各スライドに対してデータを展開し、符号化データを画像データに復号する。スライド展開部４０２で復号された画像データは、データ書き込み部４０３に供給され、メインメモリ２１０のバンド画像データ格納領域２１０Ｃに書き込まれる。
【００８９】
図１１は、復号部２０５における復号処理の一例を示すフローチャートである。先ず、ステップＳ２００で、符号フォーマット解析処理部４０１は、符号読み込み部４００から渡された符号データの先頭の２ビットを切り出し、ヘッダを読み込む。次のステップＳ２０１で、符号フォーマット解析処理部４０１は、読み込んだヘッダがスライド符号を示しているか否かを判定する。若し、ヘッダの値が「００」であって、当該ヘッダがスライド符号を示していると判定したら、処理をステップＳ２０２に移行させる。
【００９０】
ステップＳ２０２で、符号フォーマット解析処理部４０１は、符号データのヘッダに続く１６ビットを切り出して符号データから一致位置Addressおよび一致長さLengを読み込み、スライド展開部４０２に渡す。次のステップＳ２０３で、スライド展開部４０２は、一致位置Addressで指定されるスライドからデータを読み出し、読み出したデータを次のステップＳ２０４で出力する。出力されたデータは、ステップＳ２０５でスライドに追加されると共に、データ書き込み部４０３に渡される。
【００９１】
図１２は、ステップＳ２０５のスライド追加処理の一例を示すフローチャートである。先ず、ステップＳ２５０で、スライド展開部４０２は、変数IWをスライド数から１を減じた値に設定する。次のステップＳ２５１で、スライド[IW]に、スライド[IW−１]の値を格納し、ステップＳ２５２で、変数IWが０を超えるか否かを判定する。若し、変数IWが「０」を超えると判定したら、処理をステップＳ２５３に移行させ、変数IWから「１」を減じて、処理をステップＳ２５１に戻す。一方、ステップＳ２５２で、変数IWが０以下であると判定されたら、処理をステップＳ２５４に移行させ、ステップＳ２０４で出力したデータをスライド[0]に対して格納する。
【００９２】
説明を図１１のフローチャートに戻し、ステップＳ２０５でスライド追加が行われると、処理をステップＳ２０６に移行させ、一致長さLengが０を超えるか否かを判定する。若し、超えない、すなわち一致長さLengが０であると判定されたら、処理はステップＳ２３４に移行される。一方、一致長さLengが０を超えると判定されたら、ステップＳ２０７で一致長さLengから１を減じた値を新たな一致長さLengとし、処理をステップＳ２０３に戻す。
【００９３】
上述したステップＳ２０１で、ステップＳ２００で読み込んだヘッダがスライド符号を示していないと判定したら、処理をステップＳ２０８に移行させる。この場合、当該ヘッダの値が「０１」、「１０」および「１１」のうち何れかであって、ＥＳＣデータ符号を示していることになる。
【００９４】
ステップＳ２０８で、符号フォーマット解析処理部４０１は、符号データのヘッダに続く８ビットを読み込み、次のステップＳ２０９で、読み込んだデータを出力する。そして、次のステップＳ２１０で、図１２を用いて説明したようにして、ステップＳ２０９で出力されたデータをスライドに追加する。データのスライドへの追加が行われたら、処理はステップＳ２１１に移行される。
【００９５】
ステップＳ２１１で、符号フォーマット解析処理部４０１は、ステップＳ２００で読み込んだヘッダがＥＳＣデータ（１）符号を示しているか否かを判定する。若し、当該ヘッダの値が「０１」であって、当該ヘッダがＥＳＣデータ（１）符号を示していると判定したら、処理はステップＳ２３４に移行される。
【００９６】
一方、ステップＳ２１１で、当該ヘッダの値が「０１」および「１１」の何れかであって、当該ヘッダがＥＳＣデータ（１）符号を示していないと判定したら、処理はステップＳ２１２に移行される。ステップＳ２１２で、ステップＳ２０８で読み込んだ符号データに続く８ビットの符号データを読み込み、読み込んだ符号データを次のステップＳ２１３で出力する。そして、次のステップＳ２１４で、図１２を用いて説明したようにして、ステップＳ２１３で出力されたデータをスライドに追加する。
【００９７】
さらに、次のステップＳ２１５で、ステップＳ２１２で読み込んだ符号データに続く８ビットの符号データを読み込み、読み込んだ符号データを次のステップＳ２１６で出力する。そして、次のステップＳ２１７で、図１２を用いて説明したようにして、ステップＳ２１６で出力されたデータをスライドに追加する。
【００９８】
さらにまた、次のステップＳ２１８で、ステップＳ２１５で読み込んだ符号データに続く８ビットの符号データを読み込み、読み込んだ符号データを次のステップＳ２１９で出力する。そして、次のステップＳ２２０で、図１２を用いて説明したようにして、ステップＳ２１９で出力されたデータをスライドに追加する。
【００９９】
ステップＳ２２０でのスライドへのデータの追加が行われると、処理をステップＳ２２１に移行させる。ステップＳ２２１で、符号フォーマット解析処理部４０１は、ステップＳ２００で読み込んだヘッダがＥＳＣデータ（４）符号を示しているか否かを判定する。若し、当該ヘッダの値が「１０」であって、当該ヘッダがＥＳＣデータ（４）符号を示していると判定したら、処理はステップＳ２３４に移行される。
【０１００】
一方、ステップＳ２２１で、当該ヘッダがＥＳＣデータ（４）符号を示していないと判定したら、処理はステップＳ２２２に移行される。この場合、当該ヘッダの値は「１１」となる。ステップＳ２２２で、ステップＳ２１８で読み込んだ符号データに続く８ビットの符号データを読み込み、読み込んだ符号データを次のステップＳ２２３で出力する。そして、次のステップＳ２２４で、図１２を用いて説明したようにして、ステップＳ２２３で出力されたデータをスライドに追加する。
【０１０１】
さらに、次のステップＳ２２５で、ステップＳ２２２で読み込んだ符号データに続く８ビットの符号データを読み込み、読み込んだ符号データを次のステップＳ２２６で出力する。そして、次のステップＳ２２７で、図１２を用いて説明したようにして、ステップＳ２２６で出力されたデータをスライドに追加する。
【０１０２】
さらにまた、次のステップＳ２２８で、ステップＳ２２５で読み込んだ符号データに続く８ビットの符号データを読み込み、読み込んだ符号データを次のステップＳ２２９で出力する。そして、次のステップＳ２３０で、図１２を用いて説明したようにして、ステップＳ２２９で出力されたデータをスライドに追加する。
【０１０３】
さらに、次のステップＳ２３１で、ステップＳ２２２８で読み込んだ符号データに続く８ビットの符号データを読み込み、読み込んだ符号データを次のステップＳ２２３２で出力する。そして、次のステップＳ２２３３で、図１２を用いて説明したようにして、ステップＳ２３２で出力されたデータをスライドに追加する。
【０１０４】
次のステップＳ２３４で、復号部２０５は、復号対象の符号データに対する処理が全て終了したか否かを判定する。若し、未だ処理を行っていない符号データが存在すると判定されたら、処理はステップＳ２００に戻され、符号データの次の２ビットが読み出され、ヘッダの読み込みが行われる。一方、ステップＳ２３４で、復号対象の符号データに対する処理が全て終了したと判定したら、図１１のフローチャートによる一連の処理が終了される。
【０１０５】
＜第２の実施形態＞
次に、本発明の第２の実施形態について説明する。上述した第１の実施形態では、ＥＳＣデータの連続数が離散的な複数の組を定義し、ヘッダの値でこの複数の組を識別していた。これに対して、本第２の実施形態では、連続するＥＳＣデータに対して、ＥＳＣデータの連続数を示すヘッダを付加する。
【０１０６】
図１３は、本第２の実施形態による符号フォーマットの例を示す。本第２の実施形態では、符号データがスライド符号およびＥＳＣデータ符号の何れであるかを示す１ビットの情報がヘッダとして付加される。図１３（ａ）は、スライド符号の例を示す。ヘッダの値が「０」でスライド符号を示し、それぞれ例えば８ビットのデータ長を有する一致位置Addressおよび一致長さLengがヘッダに接続される。
【０１０７】
図１３（ｂ）は、ＥＳＣデータ符号の例を示す。ヘッダの値が「１」でスライド符号を示し、ヘッダに続けてＥＳＣデータの連続数を示す３ビットの符号が接続される。図１３（ｂ）の例では、この３ビットの符号の値が「０００」〜「１１１」で、それぞれＥＳＣデータの連続数が１個〜８個であることを示す。この３ビットの符号に対して、当該符号が示す個数のＥＳＣデータが接続され、ＥＳＣデータ符号が構成される。
【０１０８】
なお、９個以上のＥＳＣデータの連続数は、これら連続数が１個〜８個を示すＥＳＣデータ符号を適宜組み合わせて表現することができる。また、ＥＳＣデータの連続数を示す符号は、符号長が３ビットに限られず、２ビットまたは４ビット以上としてもよい。
【０１０９】
＜第２の実施形態による符号化処理＞
図１４は、本第２の実施形態による符号化部２０４’の一例の構成を示す。この符号化部２０４’は、上述した第１の実施形態における符号化部２０４に対応するものである。なお、図１４において、図４と共通する部分には同一の符号を付し、詳細な説明を省略する。
【０１１０】
符号化部２０４’は、データ読み込み部３００、中間符号生成処理部３０１、ＥＳＣデータ長さ生成部３０５、符号フォーマット生成処理部３０３’および符号書き込み部３０４を有する。符号化部２０４’において、データ読み込み部３００によりメインメモリ２１０のＣＭＹＫバンド画像データ格納領域２１０Ｃから読み出されたＣＭＹＫバンド画像データが、中間符号生成処理部３０１に供給される。中間符号生成処理部３０１は、供給された画像データとスライド記憶部に記憶された過去の入力データとを順次比較して、比較結果に基づき、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータを出力する。中間符号ＴＹＰＥは、上述したように、供給された画像データによるデータ列と、スライド記憶部に記憶された過去の入力データによるデータ列とが一致するか否かを示す。
【０１１１】
中間符号生成処理部３０１から出力された各値は、ＥＳＣデータ長さ生成部３０５に供給される。ＥＳＣデータ長さ生成部３０５は、不一致を示す中間符号ＴＹＰＥが連続する数をカウントし、カウント値をＥＳＣデータ長さとして出力する。この例では、ＥＳＣデータ長さの上限を８として、中間符号ＴＹＰＥの連続数が８を超えるとカウント値を０にリセットしてカウントを再開させる。
【０１１２】
ＥＳＣデータ長さ生成部３０５は、生成したＥＳＣデータ長さを出力すると共に、中間符号生成処理部３０１から供給された、ＥＳＣデータ、一致位置Address、一致長さLengおよび中間符号ＴＹＰＥを出力し、符号フォーマット生成処理部３０３’に供給する。符号フォーマット生成処理部３０３、は、供給されたＥＳＣデータ、一致位置Address、一致長さLeng、中間符号ＴＹＰＥおよびＥＳＣデータ長さを、図１３で説明したフォーマットで符号化する。
【０１１３】
符号フォーマット生成処理部３０３’で生成されたスライド符号およびＥＳＣデータ符号は、符号書き込み部３０４に供給され、メインメモリ２１０のＣＭＹＫページ符号格納領域２１０Ｄに書き込まれる。
【０１１４】
図１５は、ＥＳＣデータ長さ生成部３０５の一例の構成を示す。なお、図１５において、上述した図６と共通する部分には同一の符号を付し、詳細な説明を省略する。ＥＳＣデータ長さ生成部３０５は、それぞれＦＩＦＯ形式のバッファメモリである一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１、ＥＳＣデータＦＩＦＯ３１２、中間符号ＴＹＰＥ＿ＦＩＦＯ３１３およびＥＳＣデータ長さ＿ＦＩＦＯ３２１を有する。また、ＥＳＣデータ長さ生成部３０５は、ＥＳＣデータカウンタ３１４と、ＥＳＣデータ長さ＿ＦＩＦＯ書き込み制御部３２０とを有する。ＥＳＣデータカウンタ３１４は、不一致を示す中間符号ＴＹＰＥをカウントし、カウント値をＥＳＣデータ長さを示す値（以下、ＥＳＣデータ長さ）として出力する。
【０１１５】
ＥＳＣデータ長さ＿ＦＩＦＯ３２１は、ＥＳＣデータ長さが格納され、ＥＳＣデータ長さを単位（例えば８ビット）としてデータの書き込みおよび出力がなされる。ＥＳＣデータ長さ＿ＦＩＦＯ３２１は、一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１、ＥＳＣデータＦＩＦＯ３１２および中間符号ＴＹＰＥ＿ＦＩＦＯ３１３と同期して書き込みおよび読み出しが行われるように、ＥＳＣデータ長さ＿ＦＩＦＯ書き込み制御部３２０に制御される。換言すれば、ＥＳＣデータ長さ＿ＦＩＦＯ書き込み制御部３２０は、中間符号生成処理部３０１の出力に同期して書き込みおよび読み出しが行われるように、ＥＳＣデータ長さ＿ＦＩＦＯ３２１を制御する。
【０１１６】
ＥＳＣデータカウンタ３１４は、中間符号ＴＹＰＥの値に基づきＥＳＣデータの連続数をカウントし、ＥＳＣデータの連続が途絶えた時点で、ＥＳＣデータの連続数をカウントしたＥＳＣデータ長さをＥＳＣデータ長さ＿ＦＩＦＯ書き込み制御部３２０に対して転送する。ＥＳＣデータ長さ＿ＦＩＦＯ書き込み制御部３２０は、ＥＳＣデータカウンタ３１５から転送されたＥＳＣデータ長さを、後述するようにして、ＥＳＣデータ長さ＿ＦＩＦＯ３２１の当該ＥＳＣデータ長さに応じた位置に書き込む。
【０１１７】
図１６は、ＥＳＣデータ長さ生成部３０５におけるＥＳＣデータ長さ生成処理を示す一例のフローチャートである。なお、ここでは、ＥＳＣデータ長さの上限値が８であるものとする。最初のステップＳ３００で、ＥＳＣデータカウンタ３１４におけるＥＳＣデータカウント値ＣESCを０に初期化する。
【０１１８】
ステップＳ３０１で、ＥＳＣデータ長さ生成部３０５は、中間符号生成処理部３０１から、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータを受け取り、次のステップＳ３０２で、受け取った中間符号ＴＹＰＥがＥＳＣデータ符号を示しているか否かを判定する。若し、示していると判定されたら、処理はステップＳ３０３に移行され、ＥＳＣデータカウント値ＣESCが、ＥＳＣデータ長さの上限値の８であるか否かが判定される。
【０１１９】
若し、ステップＳ３０３で、ＥＳＣデータカウント値ＣESCが８ではないと判定されたら、処理はステップＳ３０６に移行され、ＥＳＣデータカウント値ＣESCが１だけ増加される。
【０１２０】
一方、ステップＳ３０３で、ＥＳＣデータカウント値ＣESCが８であると判定されたら、処理はステップＳ３０４に移行される。ステップＳ３０４では、ＥＳＣデータＦＩＦＯ書き込み制御部３２０により、ＥＳＣデータカウント値ＣESCが、ＥＳＣデータ長さ＿ＦＩＦＯ３２１の当該ＥＳＣデータカウント値ＣESCが示す位置（ＥＳＣデータカウント番目）に対して書き込まれる。
【０１２１】
そして、次にステップＳ３０５で、ＥＳＣデータカウント値ＣESCがリセットされて０とされ、ステップＳ３０６でＥＳＣデータカウント値ＣESCが１だけ増加され、処理がステップＳ３０９に移行される。
【０１２２】
一方、上述のステップＳ３０２で、中間符号ＴＹＰＥがＥＳＣデータ符号を示していないと判定されたら、処理がステップＳ３０７に移行される。ステップＳ３０７では、ＥＳＣデータカウント値ＣESCが、ＥＳＣデータ長さ＿ＦＩＦＯ３２１の当該ＥＳＣデータカウント値ＣESCが示す位置（ＥＳＣデータカウント番目）に対して書き込まれる。そして、次のステップＳ３０８でＥＳＣデータカウンタＣESCがリセットされて０とされ、処理がステップＳ３０９に移行される。
【０１２３】
ステップＳ３０９で、ＥＳＣデータ長さ生成部３０５は、一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１、ＥＳＣデータＦＩＦＯ３１２、中間符号ＴＹＰＥ＿ＦＩＦＯ３１３およびＥＳＣデータ長さ＿ＦＩＦＯ３２１を、それぞれ１（１単位分）だけシフトさせる。
【０１２４】
次のステップＳ３１０で、ＥＳＣデータ長さ生成部３０５は、中間符号生成処理部３０１から供給された各データを、各ＦＩＦＯにそれぞれ書き込む。すなわち、ＥＳＣデータ長さ生成部３０５は、一致位置Addressを一致位置ＦＩＦＯ３１０の０番目に書き込み、一致長さLengを一致長さＦＩＦＯ３１１の０番目に書き込む。また、ＥＳＣデータ長さ生成部３０５は、ＥＳＣデータをＥＳＣデータＦＩＦＯ３１２の０番目に、中間符号ＴＹＰＥを中間符号ＴＹＰＥ＿ＦＩＦＯ３１３の０番目にそれぞれ書き込む。また、ＥＳＣデータ長さ生成部３０５において、ＥＳＣデータ長さ書き込み制御部３２０は、ＮＯＰを示す値をＥＳＣデータ長さ＿ＦＩＦＯ３２１の０番目に書き込む。
【０１２５】
次のステップＳ３１１で、ＥＳＣデータ長さ生成部３０５は、各ＦＩＦＯの最後尾（最終番目）に格納されるデータをそれぞれ読み込み、符号フォーマット生成処理部３０３’に転送する。すなわち、ＥＳＣデータ長さ生成部３０５は、一致位置ＦＩＦＯ３１０の最終番目から一致位置Addressを、一致長さＦＩＦＯ３１１の最終番目から一致長さLengをそれぞれ読み込み、符号フォーマット生成処理部３０３’に転送する。また、ＥＳＣデータ長さ生成部３０５は、ＥＳＣデータＦＩＦＯ３１２の最終番目からＥＳＣデータを、中間符号ＴＹＰＥ＿ＦＩＦＯ３１３の最終番目から中間符号ＴＹＰＥをそれぞれ読み込み、符号フォーマット生成処理部３０３’に転送する。さらに、ＥＳＣデータ長さ生成部３０５は、ＥＳＣデータ長さ＿ＦＩＦＯ３２１の最終番目からＥＳＣデータ長さを読み込み、符号フォーマット生成処理部３０３’に転送する。
【０１２６】
次のステップＳ３１２で、処理対象の画像データを全て処理したか否かを判定する。若し、未だ処理していない画像データが存在すると判定したら、処理はステップＳ３０１に戻される。一方、処理対象の画像データを全て処理したと判定したら、処理はステップＳ３１３に移行され、一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１ＥＳＣデータＦＩＦＯ３１２、中間符号ＴＹＰＥ＿ＦＩＦＯ３１３およびＥＳＣデータ長さ＿ＦＩＦＯ３２１の各ＦＩＦＯ内の符号を全て出力したか否かを判定する。若し、全て出力したと判定したら、図１６のフローチャートによる一連の処理が終了される。
【０１２７】
一方、未だ出力されていない符号が存在すると判定したら、処理はステップＳ３１４に移行される。ステップＳ３１４で、ＥＳＣデータ長さ生成部３０５は、一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１、ＥＳＣデータＦＩＦＯ３１２および中間符号ＴＹＰＥ＿ＦＩＦＯ３１３それぞれの先頭すなわち０番目に、ＮＯＰを示す値を書き込む。また、ＥＳＣデータ長さ生成部３０５において、ＥＳＣデータ長さ＿ＦＩＦＯ書き込み制御部３２０は、ＥＳＣデータ長さ＿ＦＩＦＯ３２１の０番目にＮＯＰを示す値を書き込む。
【０１２８】
各ＦＩＦＯの０番目にＮＯＰを示す値が書き込まれると、次のステップＳ３１５で、ＥＳＣデータ長さ生成部３０５は、一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１、ＥＳＣデータＦＩＦＯ３１２、中間符号ＴＹＰＥ＿ＦＩＦＯ３１３およびＥＳＣデータ長さ＿ＦＩＦＯ３２１を、それぞれ１（１単位分）だけシフトさせる。
【０１２９】
そして、次のステップＳ３１６で、ＥＳＣデータ長さ生成部３０５は、一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１ＥＳＣデータＦＩＦＯ３１２、中間符号ＴＹＰＥ＿ＦＩＦＯ３１３およびＥＳＣデータ長さ＿ＦＩＦＯ３２１それぞれの最終番目から、一致位置Address、一致長さLeng、ＥＳＣデータ、中間符号ＴＹＰＥおよびＥＳＣデータ長さを読み込み、符号フォーマット生成処理部３０３’に転送する。
【０１３０】
次のステップＳ３１７で、一致位置ＦＩＦＯ３１０、一致長さＦＩＦＯ３１１ＥＳＣデータＦＩＦＯ３１２、中間符号ＴＹＰＥ＿ＦＩＦＯ３１３およびＥＳＣデータ長さ＿ＦＩＦＯ３２１それぞれに書き込まれた符号を全て出力したか否かを判定する。若し、全て出力したと判定したら、図１６のフローチャートによる一連の処理が終了される。一方、各ＦＩＦＯ内の符号が未だ全て出力されていないと判定されたら、処理がステップＳ３１４に戻される。
【０１３１】
図１７は、符号フォーマット生成処理部３０３’における符号フォーマット生成処理の例を示すフローチャートである。先ず、ステップＳ３３０で、符号フォーマット生成処理部３０３’は、ＥＳＣデータ長さ生成部３０５からＥＳＣデータ長さ、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータを受け取り、次のステップＳ３３１で、受け取った中間符号ＴＹＰＥがＥＳＣデータ符号を示しているか否かを判定する。
【０１３２】
若し、ステップＳ３３１で、中間符号ＴＹＰＥがＥＳＣデータ符号を示していないと判定したら、処理をステップＳ３３２に移行させ、ヘッダの値を「０」とし、一致位置Addressおよび一致長さLengから、図１３（ａ）に例示したスライド符号の符号フォーマットに従い符号データを生成する。符号フォーマット生成処理部３０３’は、生成された符号データを符号書き込み部３０４に転送し、処理をステップＳ３４２に移行させる。
【０１３３】
一方、ステップＳ３３１で、中間符号ＴＹＰＥがＥＳＣデータ符号を示していると判定したら、処理をステップＳ３３３に移行させる。ステップＳ３３３では、符号フォーマット生成処理部３０３’は、ステップＳ３３０でＥＳＣデータ長さ生成部３０５から受け取ったＥＳＣデータを最初のＥＳＣデータすなわちＥＳＣデータ＃０として、処理をステップＳ３３４に移行させる。
【０１３４】
ステップＳ３３４で、符号フォーマット生成処理部３０３’は、ＥＳＣデータ長さ（図中では、適宜、ＬESCと記述する）が０であるか否かを判定する。若し、０であると判定されたら、処理をステップＳ３３５に移行させ、図１３（ｂ）に例示したように、ＥＳＣデータ符号の符号フォーマットに従い符号データを生成する。より具体的には、ヘッダの値を「１」とし、このヘッダに対してステップＳ３３０で受け取ったＥＳＣデータを接続し、ＥＳＣデータ符号を生成する。そして、処理をステップＳ３４２に移行させる。
【０１３５】
一方、ステップＳ３３４で、ＥＳＣデータ長さが０ではないと判定したら、処理をステップＳ３３６に移行させ、変数Ｉを０に初期化する。そして、次のステップＳ３３７で、符号フォーマット生成処理部３０３’は、ＥＳＣデータ長さ生成部３０５からＥＳＣデータを受け取り、受け取った当該ＥＳＣデータをＩ番目のＥＳＣデータ（ＥＳＣデータ＃Ｉ）とする。
【０１３６】
処理はステップＳ３３８に移行され、符号フォーマット生成処理部３０３’は、変数Ｉを１だけ増加させ、次のステップＳ３３９で、ＥＳＣデータ長さから１を減じた値を新たなＥＳＣデータ長さとする。そして、次のステップＳ３４０で、符号フォーマット生成処理部３０３’は、ＥＳＣデータ長さが０よりも大きいか否かを判定する。若し、ＥＳＣデータ長さが０よりも大きいと判定したら、処理をステップＳ３３７に戻す。
【０１３７】
一方、ステップＳ３４０で、ＥＳＣデータ長が０以下であると判定したら、処理をステップＳ３４１に移行させ、図１３（ｂ）に例示したように、ＥＳＣデータ符号の符号フォーマットに従い符号データを生成する。より具体的には、ヘッダの値を「１」とし、このヘッダに対して、ステップＳ３３７で受け取ったＥＳＣデータを順次接続し、ＥＳＣデータ符号を生成する。例えば、変数Ｉの値が５であれば、連続する５個のＥＳＣデータをヘッダに対して順次接続して、ＥＳＣデータ符号を生成する。そして、処理をステップＳ３４２に移行させる。
【０１３８】
ステップＳ３４２では、処理対象となる全ての中間符号について処理が終了したか否かが判定される。若し、終了したと判定されたら、図１７のフローチャートにおける一連の処理が終了される。一方、処理対象となる中間符号のうち未だ処理が行われていない中間符号が存在すると判定されたら、処理はステップＳ３３０に戻される。
【０１３９】
なお、ＥＳＣデータ長さの上限値が設定されている場合、上述のステップＳ３４０において、ＥＳＣデータ長さが０を超え、且つ、当該上限値以下であるか否かを判定すればよい。この場合、ＥＳＣデータ長さが０を超え、且つ、当該上限値以下と判定したら、処理をステップＳ３３７に戻す。一方、ＥＳＣデータ長さが０以下または当該上限値を超えていると判定したら、処理をステップＳ３４１に移行させる。
【０１４０】
＜第２の実施形態による復号処理＞
図１８は、本第２の実施形態に係る復号部２０５’の一例の構成を概略的に示す。この復号部２０５’は、上述した第１の実施形態における復号部２０５に対応するものである。なお、図１８において、図１０と共通する部分には同一の符号を付し、詳細な説明を省略する。
【０１４１】
復号部２０５において、符号読み込み部４００により、上述した符号化部２０４で符号化された符号データがメインメモリ２１０のページ符号格納領域２１０Ｄから読み込まれ、符号フォーマット解析部４０１に供給される。符号フォーマット解析部４０１は、図１３（ａ）および図１３（ｂ）を用いて説明した符号フォーマットに従い、供給された符号化データを解釈してＥＳＣデータ長さ、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータを取り出す。取り出されたこれらのデータは、スライド展開部４０２に供給される。
【０１４２】
スライド展開部４０４は、供給されたＥＳＣデータ長さ、中間符号ＴＹＰＥ、一致位置Address、一致長さLengおよびＥＳＣデータに基づき、スライド記憶部における各スライドに対してデータを展開し、符号データを画像データに復号する。スライド展開部４０４で復号された画像データは、データ書き込み部４０３に供給され、メインメモリ２１０のバンド画像データ格納領域２１０Ｃに書き込まれる。
【０１４３】
図１９は、復号部２０５における復号処理の一例を示すフローチャートである。先ず、ステップＳ４００で、符号フォーマット解析処理部４０１は、符号読み込み部４００から渡された符号データの先頭の１ビットを切り出し、ヘッダを読み込む。次のステップＳ４０１で、符号フォーマット解析処理部４０１は、読み込んだヘッダがスライド符号を示しているか否かを判定する。若し、ヘッダの値が「０」であって、当該ヘッダがスライド符号を示していると判定したら、処理をステップＳ４０２に移行させる。
【０１４４】
ステップＳ４０２で、符号フォーマット解析処理部４０１は、符号データのヘッダに続く１６ビットを切り出して符号データから一致位置Addressおよび一致長さLengを読み込み、スライド展開部４０４に渡す。次のステップＳ４０３で、スライド展開部４０４は、一致位置Addressで指定されるスライドからデータを読み出し、読み出したデータを次のステップＳ４０４で出力する。出力されたデータは、ステップＳ４０５で、図１２を用いて説明したようにしてスライドに追加されると共に、データ書き込み部４０３に渡される。
【０１４５】
次のステップＳ４０６で、一致長さLengから１が減じられた値が新たな一致長さLengとされ、ステップＳ４０７で、この一致長さLengが０を超えるか否かを判定する。若し、超えない、すなわち一致長さLengが０であると判定されたら、処理はステップＳ４１６に移行される。一方、一致長さLengが０を超えると判定されたら、処理をステップＳ４０３に戻す。
【０１４６】
上述したステップＳ４０１で、ステップＳ４００で読み込んだヘッダがスライド符号を示していないと判定したら、処理をステップＳ４１０に移行させる。ステップＳ４１０で、符号フォーマット解析処理部４０１は、符号データのヘッダに続く３ビットを読み込み、ＥＳＣデータ長さを求める。
【０１４７】
次のステップＳ４１１で、符号フォーマット解析処理部４０１は、符号データから次の８ビットのデータを読み込み、読み込んだデータをステップＳ４１２で出力する。出力されたデータは、ステップＳ４１３で、図１２を用いて説明したようにしてスライドに追加されると共に、データ書き込み部４０３に渡される。
【０１４８】
次のステップＳ４１４で、ＥＳＣデータ長さから１を減じて新たなＥＳＣデータ長さとし、ステップＳ４１５でこのＥＳＣデータ長さが０を超えているか否かを判定する。若し、超えていると判定したら、処理をステップＳ４１１に戻し、符号データから次のデータを読み込む。
【０１４９】
一方、ステップＳ４１５で、ＥＳＣデータ長さが０を超えていない、すなわちＥＳＣデータが０であると判定されたら、処理はステップＳ４１６に移行される。ステップＳ４１６で、復号部２０５’は、復号対象の符号データに対する処理が全て終了したか否かを判定する。若し、未だ処理を行っていない符号データが存在すると判定したら、処理をステップＳ４００に戻し、次の符号について処理が行われる。一方、ステップＳ４１６で、復号対象の符号データに対する処理が全て終了したと判定したら、図１９のフローチャートによる一連の処理が終了される。
【０１５０】
以上説明したように、本発明の各実施形態によれば、ＬＺ方式で圧縮符号化を行った場合に発生するＥＳＣデータにおいて、複数のＥＳＣデータに対して纏めて１のヘッダを付加するようにしている。そのため、１のＥＳＣデータに対して１のヘッダを付加する場合に比べ、最悪圧縮率を大きく、すなわち、符号量を小さくすることができる。またそれにより、画像データを圧縮符号化した符号データの復号処理を高速化できると共に、圧縮効率の悪い画像データを印字する場合であっても、印字を保証することができる。
【０１５１】
また、各実施形態によれば、ＬＺ方式による符号化で生成される一致位置Address、一致長さLengおよびＥＳＣデータを、中間符号としてそれぞれＦＩＦＯ方式のバッファへ書き込む。それと共に、連続するＥＳＣデータをカウントしたカウント値すなわちＥＳＣデータの連続数を、中間符号を格納するＦＩＦＯバッファと同期するＦＩＦＯ方式のバッファにおける、連続するＥＳＣデータの先頭に対応するアドレスに書き込む。そして、一致位置Address、一致長さLeng、ＥＳＣデータおよびＥＳＣデータ連続数をバッファから読み出して符号化している。
【０１５２】
これにより、符号化部を、小さいサイズのＦＩＦＯバッファを用いて構成することが可能となる。すなわち、各ＦＩＦＯバッファの最小サイズは、ＥＳＣデータの連続数の上限に対応するサイズとなる。また、符号化部におけるバッファをＦＩＦＯ方式で構成することで、ＬＺ方式の中間符号を生成する処理と、中間符号から符号データを生成する処理との並列な動作が可能となり、処理スピードの高速化が図れる。
【０１５３】
なお、上述の各実施形態では、中間符号生成処理部３０１において、供給された画像データとスライド記憶部に記憶された過去の入力データとが一致する場合に、ランレングス方式により一致位置Addressと一致長さLengとを求めて符号化を行っているが、これはこの例に限定されない。例えば、特許第４０００２６６号公報に開示されるような、小さい動的な辞書をＭＴＦ(Move To Front)制御することにより、辞書と一致したインデクス値を符号化する符号化方式であるＭＴＦ符号化方式を用いることもできる。
【０１５４】
また、上述では、各実施形態がプリンタ装置に適用されるものとして説明したが、これはこの例に限られず、スキャナ機能、プリンタ機能、コピー機能およびＦＡＸ機能を１台の筐体に統合した複合機に、本発明の各実施形態に適用してもよい。
【符号の説明】
【０１５５】
２０４，２０４’  符号化部
２０５，２０５’  復号部
２１０  メインメモリ
３００  データ読み込み部
３０１  中間符号生成処理部
３０２  ＥＳＣデータＴＹＰＥ生成部
３０３，３０３’  符号フォーマット生成処理部
３０４  符号書き込み部
３０５  ＥＳＣデータ長さ生成部
３１０  一致位置ＦＩＦＯ
３１１  一致長さＦＩＦＯ
３１２  ＥＳＣデータＦＩＦＯ
３１３  中間符号ＴＹＰＥ＿ＦＩＦＯ
３１４  ＥＳＣデータカウンタ
３１５  ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ書き込み制御部
３１６  ＥＳＣデータＴＹＰＥ＿ＦＩＦＯ
３２０  ＥＳＣデータ長さ＿ＦＩＦＯ書き込み制御部
３２１  ＥＳＣデータ長さ＿ＦＩＦＯ
４００  符号読み込み部
４０１  符号フォーマット解析処理部
４０２  スライド展開部
４０３  データ書き込み部
【先行技術文献】
【特許文献】
【０１５６】
【特許文献１】特許第３２４０４９５号公報
【図１】
0005499894.tif 000002
【図２】
0005499894.tif 000003
【図３】
0005499894.tif 000004
【図４】
0005499894.tif 000005
【図５】
0005499894.tif 000006
【図６】
0005499894.tif 000007
【図７】
0005499894.tif 000008
【図８】
0005499894.tif 000009
【図９】
0005499894.tif 000010
【図１０】
0005499894.tif 000011
【図１１】
0005499894.tif 000012
【図１２】
0005499894.tif 000013
【図１３】
0005499894.tif 000014
【図１４】
0005499894.tif 000015
【図１５】
0005499894.tif 000016
【図１６】
0005499894.tif 000017
【図１７】
0005499894.tif 000018
【図１８】
0005499894.tif 000019
【図１９】
0005499894.tif 000020