(57)【要約】【課題】ピクセル画像による画像データの圧縮符号化を、必要とされるメモリ容量を削減しつつ、より高速に実行可能とする。【解決手段】メインメモリから小領域毎にピクセル画像を読み込み、各プレーンに分割する。小領域における各プレーンのそれぞれについて、注目画素の画素値を平面予測などで予測して予測誤差値を求めると共に、予測誤差値が一致する数に基づきランレングス値を求める。予測誤差値と、ランレングス値と、ランレングス値の小領域内での開始位置を示す開始画素位置とを含み、所定のデータ長を有する中間符号を生成し、各プレーン毎にＦＩＦＯに格納する。各ＦＩＦＯから、開始画素位置の最も小さい中間符号を選択して読み出し、順次可変長符号化して一列の符号としてメインメモリに書き込む。中間符号を読み出したＦＩＦＯを更新し、全ＦＩＦＯが空になるまで中間符号の読み出し処理を繰り返す。【選択図】図６
2011044869.tif 000002
【特許請求の範囲】
【請求項１】
ｎ（ｎは２以上の整数）画素からなる単位画素が点順次で配列されるピクセル画像が格納される格納手段と、
前記格納手段から、前記ピクセル画像を所定サイズの領域毎に読み出して、読み出した該ピクセル画像をｎ枚のプレーン画像に分割する分割手段と、
前記ｎ枚のプレーン画像のそれぞれに対応して設けられ、前記領域単位で、注目画素に対する周辺画素の画素を用いて該注目画素の画素値を予測した予測値を求め、該注目画素の画素値に対する該予測値の誤差である予測誤差値を生成し、該予測誤差値が一致する数に基づくランレングスを生成して、該予測誤差値と、該ランレングスと、該ランレングスの該領域内での開始位置を示す開始画素位置とを含む中間符号を生成するｎ個の中間符号生成手段と、
前記ｎ個の中間符号生成手段のそれぞれに対応して設けられ、前記中間符号生成手段が１の前記領域について生成した前記中間符号を順次格納するｎ個の中間符号格納手段と、
前記ｎ個の中間符号格納手段のそれぞれに格納される前記中間符号に含まれる前記開始画素位置に基づき選択した前記中間符号格納手段から、前記中間符号を該ｎ個の中間符号格納手段について所定の順序で読み出す読み出し手段と、
前記読み出し手段で読み出された前記中間符号を順次符号化して一列の符号を生成する符号生成手段と
を有する
ことを特徴とする画像処理装置。
【請求項２】
前記中間符号生成手段は、
前記ランレングスを前記領域毎に初期化する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記読み出し手段は、
前記ｎ個の中間符号格納手段のうち、読み出し順で先頭に格納される前記中間符号に含まれる前記開始画素位置が最小の前記中間符号格納手段を選択して該先頭に格納される中間符号を読み出し、その後、該先頭に格納される中間符号を該中間符号格納手段から消去する
ことを特徴とする請求項１または請求項２に記載の画像処理装置。
【請求項４】
前記符号生成手段は、
前記中間符号に含まれる前記ランレングスと前記予測誤差値とをハフマン符号化により前記符号化する
ことを特徴とする請求項１乃至請求項３の何れか１項に記載の画像処理装置。
【請求項５】
前記分割手段は、
圧縮符号化を行うプレーン数に応じて指定された数で、前記ピクセル画像を前記複数のプレーン画像に分割する
ことを特徴とする請求項１乃至請求項４の何れか１項に記載の画像処理装置。
【請求項６】
前記所定サイズは、前記単位画素のデータ長よりも大きく、且つ、前記格納手段の最小アクセス単位以上のサイズである
ことを特徴とする請求項１乃至請求項５の何れか１項に記載の画像処理装置。
【請求項７】
ｎ（ｎは２以上の整数）画素からなる単位画素が点順次で配列されるピクセル画像が格納される格納手段から、前記ピクセル画像を所定サイズの領域毎に読み出して、読み出した該ピクセル画像をｎ枚のプレーン画像に分割する分割ステップと、
前記ｎ枚のプレーン画像のそれぞれに対応して設けられ、前記領域単位で、注目画素に対する周辺画素の画素を用いて該注目画素の画素値を予測した予測値を求め、該注目画素の画素値に対する該予測値の誤差である予測誤差値を生成し、該予測誤差値が一致する数に基づくランレングスを生成して、該予測誤差値と、該ランレングスと、該ランレングスの該領域内での開始位置を示す開始画素位置とを含む中間符号を生成するｎ個の中間符号生成ステップと、
前記ｎ個の中間符号生成ステップのそれぞれに対応して設けられ、前記中間符号生成ステップが１の前記領域について生成した前記中間符号をｎ個の中間符号格納手段に順次格納するｎ個の中間符号格納ステップと、
前記ｎ個の中間符号格納手段のそれぞれに格納される前記中間符号に含まれる前記開始画素位置に基づき選択した前記中間符号格納手段から、前記中間符号を該ｎ個の中間符号格納手段について所定の順序で読み出す読み出しステップと、
前記読み出しステップで読み出された前記中間符号を順次符号化して一列の符号を生成する符号生成ステップと
を有する
ことを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを圧縮符号化する画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
プリンタ装置などの画像形成装置では、入力された画像データを一時的にメモリに記憶し、このメモリに記憶された画像データを所定のタイミングで読み出して、印刷動作を行う。この場合、画像データをそのままメモリに格納しようとすると、大容量のメモリが必要になり装置のコストが嵩んでしまう。そのため、一般的には、入力された画像データを圧縮符号化してメモリに格納するようにしている。
【０００３】
多値の画像データを可逆的に圧縮符号化する方法として、ＪＰＥＧ(Joint Photographic Experts Group)の可逆符号化モードが知られている。このＪＰＥＧの可逆符号化モードは、予測符号化と、ハフマン符号化や算術符号化といったエントロピー符号化とを組み合わせて多値の画像データを圧縮符号化する。予測符号化とは、一般的には、画像において隣接する画素同士の相関が高いという性質を利用して、注目画素の周辺画素の画素値から注目画素の画素値を予測するものである。
【０００４】
画像データの形式としては、Ｒ(Red)、Ｇ(Green)およびＢ(Blue)や、Ｃ(Cyan)、Ｍ(Magenta)、Ｙ(Yellow)およびＫ(Black)などの各色毎のプレーンからなるプレーン画像と、各色の画素が点順次で配列されるピクセル画像との２種類の形式が知られている。これらのうち、プレーン画像は、各プレーンにおいて隣接画素同士の相関が高いことが期待されるため、予測符号化による圧縮符号化が効果的である。一方、ピクセル画像は、隣接する画素が互いに異なる色を表すため、隣接画素同士の相関が低いと考えられる。そのため、ピクセル画像に対してプレーン画像と同様に予測符号化を適用しても、高い圧縮率が期待できない。
【０００５】
ピクセル画像を効率的に圧縮符号化する方法として、特許文献１に、ＲＧＢの各色の画素からなるピクセル画像を各色毎のプレーンに分解し、プレーン毎に順番に符号化する方法が記載されている。
【０００６】
また、特許文献２には、ピクセル画像をＣＭＹＫ各色の画素に分解し、各色の画素を並列的に予測符号化して、共通符号データとＣＭＹＫ各色の固有符号とを生成する方法が記載されている。
【０００７】
一方、プリンタ装置などでは、印字のための画像処理を、プリントエンジンの印字速度に応じて行う必要がある。印字速度の高速化に対応するためには、画像の圧縮率を高めると共に、画像の圧縮符号化に要する処理速度の高速化が必要となる。すなわち、プリントエンジンの印字速度よりも画像の圧縮符号化の処理速度の方が遅くなると、良好な印字品質が得られなくなる。そのため、より高速な画像の圧縮符号化方法が求められている。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述したＪＰＥＧの可逆符号化モードは、７つの予測式で予測誤差の統計を作成し、最も良い結果が得られた予測式を１つ選択し、選択された予測式を用いて画像データの符号化を行う。しかしながら、このＪＰＥＧの可逆符号化モードでは、１つの画像に対して予測式が１種類に固定的とされるため、高い圧縮率を期待できない。また、７つの予測式のそれぞれで予測誤差の統計を作成するために、多値画像を２回処理する２パス方式となり、処理時間が多くかかるという問題点があった。
【０００９】
また、上述した特許文献１によれば、各プレーン毎に順番に符号化を行うようにしているため、処理速度を高速化することが困難であるという問題点があった。
【００１０】
さらに、特許文献１によれば、符号化をＲＧＢ各色の画素によるピクセル画像に対して行う一方で、符号化された画像データを復号すると、ＲＧＢ各色毎のプレーン画像が生成される。そのため、ＲＧＢ各色毎のプレーン画像からＲＧＢ各色によるピクセル画像への変換処理を別途、行う必要がある。したがって、ＲＧＢ各色によるピクセル画像と、ＲＧＢ各色毎のプレーン画像を格納するメモリとをそれぞれメモリに格納する必要がある。すなわち、画像データのデータ量に対して２倍の容量のメモリを用意する必要があり、メモリ容量に関して圧縮符号化の効果が得られないという問題点があった。
【００１１】
さらにまた、特許文献１では、このプレーン画像からピクセル画像への変換処理を行うため、これによっても処理速度の高速化が困難であるという問題があった。
【００１２】
これに対し、上述した特許文献２は、ＣＭＹＫ各色の画素によるピクセル画像をＣＭＹＫ各色毎のプレーン画像に分解し、ＣＭＹＫ各色毎のプレーン画像を並列的に符号化しているため、高速な処理が可能である。しかしながら、符号化により、共通情報符号と共に、ＣＭＹＫ各色のプレーン毎の固有符号が生成されるため、符号化された画像データの記憶領域として４の領域が必要になる。
【００１３】
ここで、特許文献２によれば、ＣＭＹＫ各色のプレーン毎の固有符号が並列的に発生する。そのため、これら画像データを記憶する４の領域は、それぞれ最低圧縮率（例えば１／３や１／４）における発生符号量に対応した容量を持たせる必要がある。この場合、各色のプレーンにおける通常の圧縮率が例えば１／１０程度であれば、画像データを記憶する４の領域それぞれの記憶容量に大きなマージンを持たせなければならないことを意味する。したがって、画像データを記憶するためのメモリにおいて、より多くの領域を確保しなければならなかったという問題点があった。
【００１４】
また、特許文献２のように、各色のプレーン毎の符号を並列的に生成する場合、各プレーン毎にＤＭＡＣ(Direct Memory Access Controller)を設ける必要があり、ハードウェア規模が大きくなってしまうという問題点があった。
【００１５】
ところで、上述した特許文献１および特許文献２に記載される符号化装置は、ＲＧＢ各色による画像やＣＭＹＫ各色による画像といったカラー画像を符号化するための専用の符号化装置である。一方、カラープリンタは、カラー画像の印字のみならず、モノクロ画像の印字も高速に行うことができる必要がある。そのために、カラー画像の符号化を行うと共に、モノクロ画像の符号化を行わなくてはならない。
【００１６】
モノクロ画像はプレーン画像として符号化される。一方、上述の特許文献１および特許文献２の方法では、カラー画像をピクセル画像として処理している。そのため、特許文献１および特許文献２では、モノクロ画像を符号化する符号化装置を別途、設ける必要があり、ハードウェア規模が大きくなってしまうという問題点があった。また、それと共に、当該ハードウェアを制御するソフトウェアの設計工程も増加してしまう。
【００１７】
本発明は、上記に鑑みてなされたものであって、ピクセル画像による画像データの圧縮符号化を、必要とされるメモリ容量を削減しつつ、より高速に実行可能な画像処理装置および画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
上述した課題を解決し、目的を達成するために、本発明は、ｎ（ｎは２以上の整数）画素からなる単位画素が点順次で配列されるピクセル画像が格納される格納手段と、格納手段から、ピクセル画像を所定サイズの領域毎に読み出して、読み出したピクセル画像をｎ枚のプレーン画像に分割する分割手段と、ｎ枚のプレーン画像のそれぞれに対応して設けられ、領域単位で、注目画素に対する周辺画素の画素を用いて注目画素の画素値を予測した予測値を求め、注目画素の画素値に対する予測値の誤差である予測誤差値を生成し、予測誤差値が一致する数に基づくランレングスを生成して、予測誤差値と、ランレングスと、ランレングスの領域内での開始位置を示す開始画素位置とを含む中間符号を生成するｎ個の中間符号生成手段と、ｎ個の中間符号生成手段のそれぞれに対応して設けられ、中間符号生成手段が１の領域について生成した中間符号を順次格納するｎ個の中間符号格納手段と、ｎ個の中間符号格納手段のそれぞれに格納される中間符号に含まれる開始画素位置に基づき選択した中間符号格納手段から、中間符号をｎ個の中間符号格納手段について所定の順序で読み出す読み出し手段と、読み出し手段で読み出された中間符号を順次符号化して一列の符号を生成する符号生成手段とを有することを特徴とする。
【００１９】
また、本発明は、ｎ（ｎは２以上の整数）画素からなる単位画素が点順次で配列されるピクセル画像が格納される格納手段から、ピクセル画像を所定サイズの領域毎に読み出して、読み出したピクセル画像をｎ枚のプレーン画像に分割する分割ステップと、ｎ枚のプレーン画像のそれぞれに対応して設けられ、領域単位で、注目画素に対する周辺画素の画素を用いて注目画素の画素値を予測した予測値を求め、注目画素の画素値に対する予測値の誤差である予測誤差値を生成し、予測誤差値が一致する数に基づくランレングスを生成して、予測誤差値と、ランレングスと、ランレングスの領域内での開始位置を示す開始画素位置とを含む中間符号を生成するｎ個の中間符号生成ステップと、ｎ個の中間符号生成ステップのそれぞれに対応して設けられ、中間符号生成ステップが１の領域について生成した中間符号をｎ個の中間符号格納手段に順次格納するｎ個の中間符号格納ステップと、ｎ個の中間符号格納手段のそれぞれに格納される中間符号に含まれる開始画素位置に基づき選択した中間符号格納手段から、中間符号をｎ個の中間符号格納手段について所定の順序で読み出す読み出しステップと、読み出しステップで読み出された中間符号を順次符号化して一列の符号を生成する符号生成ステップとを有することを特徴とする。
【発明の効果】
【００２０】
本発明によれば、ピクセル画像による画像データの圧縮符号化を、必要とされるメモリ容量を削減しつつ、より高速に実行可能であるという効果を奏する。
【図面の簡単な説明】
【００２１】
【図１】図１は、この発明の実施形態による画像処理装置を適用可能な画像形成装置の機構部の構成例を示す略線図である。
【図２】図２は、この発明の実施形態による画像処理装置を適用可能な画像形成装置における電装・制御装置の一例の構成を示すブロック図である。
【図３−１】図３−１は、カラー印刷時のメインメモリの一例のフォーマットを示す略線図である。
【図３−２】図３−２は、ＡＲＧＢバンドデータ格納領域の一例のフォーマットを示す略線図である。
【図４−１】図４−１は、モノクロ印刷時におけるメインメモリの一例のフォーマットを示す略線図である。
【図４−２】図４−２は、ＡＫバンドデータ格納領域の一例のフォーマットを示す略線図である。
【図５−１】図５−１は、ＲＧＢ各色によるカラー印刷時における一例の画像処理を示すフローチャートである。
【図５−２】図５−２は、モノクロ印刷時における一例の画像処理を示すフローチャートである。
【図６】図６は、本実施形態による符号化部の一例の構成を示すブロック図である。
【図７】図７は、本実施形態によるＡＲＧＢ／ＡＫバンドデータの読み出し単位とバンド画像との一例の対応関係を示す略線図である。
【図８】図８は、プレーン中間符号生成処理部の一例の構成を示すブロック図である。
【図９】図９は、ＦＩＦＯに格納される中間符号の一例のフォーマットを示す略線図である。
【図１０−１】図１０−１は、本発明の実施形態による符号の一例のフォーマットを示す略線図である。
【図１０−２】図１０−２は、本発明の実施形態による符号の一例のフォーマットを示す略線図である。
【図１０−３】図１０−３は、本発明の実施形態による符号の一例のフォーマットを示す略線図である。
【図１１】図１１は、本実施形態による符号化処理を示す一例のフローチャートである。
【図１２】図１２は、中間符号の生成処理の一例を示すフローチャートである。
【図１３】図１３は、予測で用いる画素および平面予測方式を説明するための略線図である。
【図１４−１】図１４−１は、プレーン中間符号生成処理部により生成される中間符号のより具体的な例を示す略線図である。
【図１４−２】図１４−２は、プレーン中間符号生成処理部により生成される中間符号のより具体的な例を示す略線図である。
【図１４−３】図１４−３は、プレーン中間符号生成処理部により生成される中間符号のより具体的な例を示す略線図である。
【図１４−４】図１４−４は、プレーン中間符号生成処理部により生成される中間符号のより具体的な例を示す略線図である。
【図１５−１】図１５−１は、ＦＩＦＯに書き込まれるランレングス値、予測誤差値および開始画素位置からなる中間符号の例を示す略線図である。
【図１５−２】図１５−２は、ＦＩＦＯに書き込まれるランレングス値、予測誤差値および開始画素位置からなる中間符号の例を示す略線図である。
【図１５−３】図１５−３は、ＦＩＦＯに書き込まれるランレングス値、予測誤差値および開始画素位置からなる中間符号の例を示す略線図である。
【図１５−４】図１５−４は、ＦＩＦＯに書き込まれるランレングス値、予測誤差値および開始画素位置からなる中間符号の例を示す略線図である。
【図１６】図１６は、ＡＲＧＢページ符号格納領域に格納される符号の例を示す略線図である。
【図１７−１】図１７−１は、プレーン中間符号生成処理部により生成される中間符号のより具体的な例を示す略線図である。
【図１７−２】図１７−２は、プレーン中間符号生成処理部により生成される中間符号のより具体的な例を示す略線図である。
【図１８−１】図１８−１は、ＦＩＦＯに書き込まれるランレングス値、予測誤差値および開始画素位置からなる中間符号の例を示す略線図である。
【図１８−２】図１８−２は、ＦＩＦＯに書き込まれるランレングス値、予測誤差値および開始画素位置からなる中間符号の例を示す略線図である。
【図１９】図１９は、ＡＫページ符号格納領域に格納される符号の例を示す略線図である。
【図２０】図２０は、本実施形態による復号部の一例の構成を示すブロック図である。
【図２１】図２１は、プレーン復号処理部の一例の構成を示すブロック図である。
【図２２−１】図２２−１は、本実施形態による復号処理を示す一例のフローチャートである。
【図２２−２】図２２−２は、本実施形態による復号処理を示す一例のフローチャートである。
【図２３】図２３は、符号分配処理部による符号更新処理の一例を示すフローチャートである。
【図２４】図２４は、各プレーンの復号処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００２２】
以下に添付図面を参照して、この発明に係る画像処理装置の一実施形態を詳細に説明する。図１は、この発明の実施形態による画像処理装置を適用可能な画像形成装置（カラープリンタとする）の機構部の構成例を示す。なお、本実施形態では、本発明に係る画像処理装置および画像処理方法をカラープリンタである画像形成装置に適用した例について説明するが、文字画像を含む画像に画像処理を施すものであれば、これに限定するものではない。例えば、本発明は、複写機、ファクシミリ、複合機などの画像処理装置にも適用することができる。
【００２３】
＜実施形態に適用可能なプリンタの例＞
図１に例示されるカラープリンタ１００は、４色（Ｙ、Ｍ、Ｃ、Ｋ）の画像をそれぞれ独立の作像系１Ｙ、１Ｍ、１Ｃ、１Ｋで形成し、この４色の画像を合成する４ドラムタンデムエンジンタイプの画像形成装置である。各作像系１Ｙ、１Ｍ、１Ｃ、１Ｋは、像担持体としての感光体、例えば小径のＯＰＣ（有機感光体）ドラム２Ｙ、２Ｍ、２Ｃ、２Ｋを有し、このＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋを取り囲むように作像の上流側から帯電手段としての帯電ローラ３Ｙ、３Ｍ、３Ｃ、３Ｋと、ＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋ上の静電潜像をそれぞれ現像剤で現像してＹ、Ｍ、Ｃ、Ｋ各色のトナー像とする現像装置４Ｙ、４Ｍ、４Ｃ、４Ｋと、クリーニング装置５Ｙ、５Ｍ、５Ｃ、５Ｋと、除電装置６Ｙ、６Ｍ、６Ｃ、６Ｋなどが配置されている。
【００２４】
各現像装置４Ｙ、４Ｍ、４Ｃ、４Ｋの脇には、Ｙトナー、Ｍトナー、Ｃトナー、Ｋトナーをそれぞれ現像装置４Ｙ、４Ｍ、４Ｃ、４Ｋへ補給するトナーボトルユニット７Ｙ、７Ｍ、７Ｃ、７Ｋが配置されている。また、各作像系１Ｙ、１Ｍ、１Ｃ、１Ｋは各々独立な光書き込み装置８Ｙ、８Ｍ、８Ｃ、８Ｋが配置され、この光書き込み装置８Ｙ、８Ｍ、８Ｃ、８Ｋはレーザ光源としてのレーザダイオード（ＬＤ）光源９Ｙ、９Ｍ、９Ｃ、９Ｋや、コリメートレンズ１０Ｙ、１０Ｍ、１０Ｃ、１０Ｋ、ｆθレンズ１１Ｙ、１１Ｍ、１１Ｃ、１１Ｋ、といった光学部品、偏向走査手段としてのポリゴンミラー１２Ｙ、１２Ｍ、１２Ｃ、１２Ｋ、折り返しミラー１３Ｙ、１３Ｍ、１３Ｃ、１３Ｋ、１４Ｙ、１４Ｍ、１４Ｃ、１４Ｋなどを有する。
【００２５】
各作像系１Ｙ、１Ｍ、１Ｃ、１Ｋは垂直に配列され、その右側には転写ベルトユニット１５がＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋに接する形で配置される。転写ベルトユニット１５は、転写ベルト１６がローラ１７〜２０に張架されて図示しない駆動源により回転駆動される。装置下側には転写材としての転写紙が収納された給紙トレイ２１が配置され、装置上部に定着装置２２、排紙ローラ２３及び排紙トレイ２４が配設される。
【００２６】
作像時には、各作像系１Ｙ、１Ｍ、１Ｃ、１Ｋにおいて、それぞれ、ＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋが図示しない駆動源により回転駆動され、帯電ローラ３Ｙ、３Ｍ、３Ｃ、３ＫによりＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋが一様に帯電されて光書き込み装置８Ｙ、８Ｍ、８Ｃ、８Ｋが各色の画像データに基づきＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋに光書込みを行うことによって、ＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋ上に静電潜像が形成される。
【００２７】
このＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋ上の静電潜像はそれぞれ現像装置４Ｙ、４Ｍ、４Ｃ、４Ｋにより現像されてＹ、Ｍ、Ｃ、Ｋ各色のトナー像となり、一方、給紙トレイ２１から給紙ローラ２５により転写紙が水平方向に給紙されて搬送系により作像系１Ｙ、１Ｍ、１Ｃ、１Ｋ方向へ垂直に搬送される。この転写紙は、転写ベルト１６に静電的に吸着保持されて転写ベルト１６により搬送され、図示しない転写バイアス印加手段により転写バイアスが印加されてＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋ上のＹ、Ｍ、Ｃ、Ｋ各色のトナー像が順次に重ねて転写されることでフルカラー画像が形成される。このフルカラー画像が形成された転写紙は、定着装置２２によりフルカラー画像が定着されて排紙ローラ２３により排紙トレイ２４へ排出される。
【００２８】
上述した、カラープリンタ１００における各部の制御は、電装・制御装置２６により行われる。
【００２９】
図２は  図１の電装・制御装置２６の一例の構成を示すブロック図である。図２の例では、電装・制御装置２６は、ＣＰＵ(Central Processing Unit)２００、プリンタ用ＡＳＩＣ(Application Specific Integrated Circuit)２３０およびメインメモリ２１０を備える。プリンタ用ＡＳＩＣ２３０は、ＣＰＵ  Ｉ／Ｆ２０１、メインメモリアービタ（ＡＲＢ）２０２、メインメモリコントローラ２０３、符号化部２０４、復号部２０５、階調処理部２０６、エンジンコントローラ２０７および色変換部２１２を含む。
【００３０】
メインメモリアービタ２０２は、ＣＰＵ  Ｉ／Ｆ２０１を介して接続されるＣＰＵ２００、符号化部２０４、復号部２０５および通信コントローラ２０８の、メインメモリ２１０に対するアクセスを調停する。
【００３１】
メインメモリ２１０は、メモリコントローラ２０３を介してメインメモリアービタ２０２に接続される。メモリコントローラ２０３は、メインメモリ２１０に対するアクセスの制御を行う。メインメモリ２１０は、上述した、ＣＰＵ２００が動作するためのプログラムや、ＣＰＵ２００から出力される描画コマンドが格納される。メインメモリ２１０は、さらに、バンドデータや、ページの圧縮データなどの各種データを格納する。
【００３２】
ＣＰＵ２００は、メインメモリ２１０に格納されるプログラムに従い、このカラープリンタ１００の全体の動作を制御する。また、ＣＰＵ２００は、メインメモリ２１０からメインメモリアービタ２０２を介してＰＤＬデータを読み出して解析し、描画を行う。本実施形態では、ＣＰＵ２００は、カラー画像の描画を、ＲＧＢ各色の画素が点順次で配列されるピクセル画像として行い、バンドデータを生成する。
【００３３】
符号化部２０４は、メインメモリ２１０に格納されるバンドデータを符号化する。符号化されたバンドデータは、メインメモリアービタ２０２およびメモリコントローラ２０３を介してメインメモリ２１０に供給され、ページ符号格納領域に書き込まれる。復号部２０５は、後述するプリンタエンジン２１１に同期して、符号化部２０４で符号化されメインメモリ２１０に書き込まれた符号化ページデータをメインメモリ２１０から読み出して復号する。この復号されたページデータは、色変換部２１２でＲＧＢ各色のページデータからＣＭＹＫ各色のページデータに色変換され、階調処理部２０６に供給される。階調処理部２０６は、復号部２０５から供給されたＣＭＹＫ各色のページデータに対して階調処理を施してエンジンコントローラ２０７に転送する。
【００３４】
エンジンコントローラ２０７は、プリンタエンジン２１１を制御する。図２では、プリンタエンジン２１１としてＣ版のものだけが記載され、Ｍ版、Ｙ版、Ｋ版については煩雑さを避けるために省略されている。
【００３５】
通信コントローラ２０８は、ネットワーク２２１を介しての通信を制御する。例えば、コンピュータ２２０から出力されたＰＤＬ(Page Description Language)データは、ネットワーク２２１を介して通信コントローラ２０８により受信される。通信コントローラ２０８は、受信したＰＤＬデータを、メインメモリアービタ２０２およびメインメモリコントローラ２０３を介してメインメモリ２１０に転送する。
【００３６】
なお、ネットワーク２２１は、ＬＡＮ(Local Area Network)などの所定の範囲内で通信を行うものでもよいし、インターネットなどより広範囲に通信可能なものでもよい。また、ネットワーク２２１は、有線通信に限らず無線通信を用いたものでもよいし、ＵＳＢ(Universal Serial Bus)やＩＥＥＥ(Institute of Electrical and Electronics Engineers)１３９４といったシリアル通信を行うものでもよい。
【００３７】
＜メインメモリのフォーマット例＞
図３−１および図４−１は、メインメモリ２１０の一例のフォーマットを示す。メインメモリ２１０は、カラー印刷時とモノクロ印刷時とで多少フォーマットが異なる。
【００３８】
図３−１は、Ｒ（赤色）、Ｇ（緑色）およびＢ（青色）の各色によるカラー画像のカラー印刷時におけるメインメモリ２１０の一例のフォーマットを示す。プログラム格納領域３００は、ＣＰＵ２００が動作するためのプログラムが格納される。ＰＤＬデータ格納領域３０１は、例えばコンピュータ２２０から供給されたＰＤＬデータが格納される。ＡＲＧＢバンドデータ格納領域３０２Ａは、Ｒ画素データ、Ｇ画素データ、Ｂ画素データおよび属性データ(Ａ)によるバンドデータであるＡＲＧＢバンドデータが格納される。ＡＲＧＢページ符号格納領域３０３Ａは、ＡＲＧＢバンドデータが圧縮符号化されたＡＲＧＢページ符号データが格納される。ＡＲＧＢページ符号格納領域３０３Ａは、複数ページ分のＡＲＧＢページ符号データを格納可能とされている。領域３０４は、上述した以外のデータが格納される。
【００３９】
図３−２は、ＡＲＧＢバンドデータ格納領域３０２Ａの一例のフォーマットを示す。カラー画像における１画素（単位画素と呼ぶ）は、ＲＧＢ各色の画素データと、当該画素の属性を示す属性データ(Ａ)とからなる。１単位画素は、データ長が３２ビットとされ、ＲＧＢ各色の画素データと、属性データ(Ａ）は、それぞれ８ビットのデータ長が割り当てられる。これら各データは、ＡＲＧＢバンドデータ格納領域３０２Ａにおいて、例えば属性データ（Ａ）を先頭に、Ｒ画素データ、Ｇ画素データ、Ｂ画素データの順に配置される。
【００４０】
図４−１は、モノクロ印刷時におけるメインメモリ２１０の一例のフォーマットを示す。モノクロ印刷時における単位画像は、黒色（Ｋ：Black）の画素データと、属性データ（Ａ）とからなる。プログラム格納領域３００、ＰＤＬデータ格納領域３０１およびその他のデータを格納する領域３０４は、図３−１に例示するカラー印刷時のフォーマットと共通である。ＡＫバンドデータ格納領域３０２Ｂは、黒色（Ｋ）の画素データと属性データ（Ａ）とが格納される。ＡＫページ符号格納領域３０３Ｂは、ＡＫバンドデータが圧縮符号化されたＡＫページ符号データが格納される。ＡＫページ符号格納領域３０３Ｂは、複数ページ分のＡＫページ符号データを格納可能とされている。
【００４１】
図４−２は、ＡＫバンドデータ格納領域３０２Ｂの一例のフォーマットを示す。モノクロ画像における１画素は、黒色（Ｋ）の画素データと、当該画素の属性を示す属性データ（Ａ）とからなる。モノクロ画像の場合、１画素は、データ長が１６ビットとされ、黒色（Ｋ）の画素データと属性データ（Ａ）は、それぞれ８ビットのデータ長が割り当てられる。これら各データは、ＡＫバンドデータ格納領域３０２Ｂにおいて、例えば属性データ（Ａ）、Ｋ画素データの順に配置される。
【００４２】
＜画像処理の概略＞
図５−１および図５−２を用いて、上述した構成を有するカラープリンタ１００における画像処理について、概略的に説明する。カラープリンタ１００における画像処理は、カラー印刷時とモノクロ印刷時とで多少異なる。
【００４３】
図５−１は、ＲＧＢ各色によるカラー印刷時における一例の画像処理を示すフローチャートである。この図５−１のフローチャートを用い、上述した図２を参照しながら、カラープリンタ１００のカラー印刷時の動作について概略的に説明する。カラー印刷時には、図３−１および図３−２を用いて説明したように、メインメモリ２１０のフォーマットが属性データ（Ａ）およびＲＧＢ各色の画素データを格納可能に管理される。
【００４４】
なお、以下では、煩雑さを避けるために、属性データ（Ａ）も画素データと見做し、特に断りのない限り、「属性データ（Ａ）およびＲＧＢ各色の画素データ」を「ＡＲＧＢ各色の画素データ」などのように記述する。同様に、モノクロ印刷時の「属性データ（Ａ）および黒色（Ｋ）の画素データ」を「ＡＫ各色の画素データ」などのように記述する。
【００４５】
例えばコンピュータ２２０で生成されたＰＤＬデータがネットワーク２２１を介して通信コントローラ２０８に受信され、メインメモリ２１０のＰＤＬデータ格納領域３０１に記憶される（ステップＳ１）。ＣＰＵ２００は、メインメモリ２１０のＰＤＬデータ格納領域３０１からＰＤＬデータを読み出し、ＰＤＬを解析して（ステップＳ２）、解析結果に基づきＡＲＧＢ各色の画素データによるバンド画像を描画する（ステップＳ３Ａ）。
【００４６】
なお、以下では、ＡＲＧＢ各色の画素データによるバンド画像を、ＡＲＧＢのバンド画像と呼び、ＡＲＧＢのバンド画像によるバンドデータをＡＲＧＢバンドデータと呼ぶ。
【００４７】
ステップＳ３Ａで描画されたＡＲＧＢバンドデータは、メインメモリ２１０のＡＲＧＢバンドデータ格納領域３０２Ａに格納される（ステップＳ４Ａ）。このＡＲＧＢバンドデータは、上述したように、ＡＲＧＢ各色の画素データのそれぞれが８ビットのビット深度を持つ、多値のピクセル画像データである。
【００４８】
符号化部２０４は、ＡＲＧＢバンドデータ格納領域３０２ＡからＡＲＧＢバンドデータを読み出して、予測符号化する（ステップＳ５Ａ）。このとき、符号化部２０４の内部においては、ピクセル画像によるバンドデータが、ＡＲＧＢ各色のプレーン画像によるバンドデータに変換されて、各プレーン画像に対して並列的に符号化処理が行われる。カラー印刷時には、例えばＣＰＵ２００からカラー印刷に応じたプレーン数「４」が指定され、ピクセル画像によるＡＲＧＢバンドデータが属性データ（Ａ）およびＲＧＢ各色それぞれによる４のプレーン画像に分割されて符号化処理が行われる。各プレーン画像のＡＲＧＢバンドデータが符号化された符号データは、１の符号データに合成されてメインメモリ２１０のＡＲＧＢページ符号格納領域３０３Ａに格納される（ステップＳ６Ａ）。
【００４９】
復号部２０５は、ＡＲＧＢページ符号格納領域３０３ＡからＡＲＧＢバンドデータが符号化されたＡＲＧＢページ符号データを読み出して復号する（ステップＳ７Ａ）。このとき、復号部２０５の内部においては、符号データが各プレーン画像に分配されて、各プレーン画像に対して並列的に復号処理が行われる。カラー印刷時には、例えばＣＰＵ２００からカラー印刷に応じたプレーン数「４」が指定され、符号データがＡＲＧＢ各色それぞれによる４のプレーン画像に分配され、それぞれ復号される。プレーン毎に復号されたＡＲＧＢ各色の画素データは、復号部２０５内部で点順次に結合され、ピクセル画像によるＡＲＧＢページデータとして出力され、色変換部２１２に供給される。
【００５０】
色変換部２１２は、復号部２０５から供給されたピクセル画像によるＡＲＧＢページデータに色変換処理を施してＲＧＢ各色をＣＭＹＫ各色に変換し、ＣＭＹＫ各色のプレーンからなるプレーン画像によるＣＭＹＫページデータとして、階調処理部２０６に対して出力する（ステップＳ８）。階調処理部２０６は、供給されたＣＭＹＫページデータに対して階調処理を施す（ステップＳ９）。階調処理されたＣＭＹＫページデータは、プリンタエンジンコントローラ２０７を介してプリンタエンジン２１１に供給される（ステップＳ１０）。プリンタエンジン２１１は、供給されたＣＭＹＫページデータに基づきプリントアウトを行う。
【００５１】
図５−２は、モノクロ印刷時における一例の画像処理を示すフローチャートである。この図５−２のフローチャートを用い、上述した図２を参照しながら、カラープリンタ１００のモノクロ印刷時の動作について概略的に説明する。なお、図５−１のフローチャートと共通する処理には同一の符号を付し、詳細な説明を省略する。モノクロ印刷時には、図４−１および図４−２を用いて説明したように、メインメモリ２１０のフォーマットがＡＫ各色の画素データを格納可能に管理される。
【００５２】
ＣＰＵ２００は、ステップＳ１でメインメモリ２１０のＰＤＬデータ格納領域３０１に格納されたＰＤＬデータを読み出し、ＰＤＬを解析して（ステップＳ２）、解析結果に基づきＡＫ各色の画素データによるバンド画像を描画する（ステップＳ３Ｂ）。
【００５３】
なお、以下では、属性データ（Ａ）および黒色（Ｋ）の画素データによるバンド画像を、ＡＫのバンド画像と呼び、ＡＫのバンド画像によるバンドデータをＡＫバンドデータと呼ぶ。
【００５４】
ステップＳ３Ｂで描画されたＡＫバンドデータは、メインメモリ２１０のＡＫバンドデータ格納領域３０２Ｂに格納される（ステップＳ４Ｂ）。このＡＫバンドデータは、上述したように、ＡＫ各色の画素データのそれぞれが８ビットのビット深度を持つ、多値のピクセル画像データである。
【００５５】
符号化部２０４は、ＡＫバンドデータ格納領域３０２ＢからＡＫバンドデータを読み出して、予測符号化する（ステップＳ５Ｂ）。このとき、符号化部２０４の内部においては、ＡＫバンドデータが、Ａプレーン画像およびＫプレーン画像によるバンドデータに変換されて、各プレーン画像に対して並列的に符号化処理が行われる。モノクロ印刷時には、例えばＣＰＵ２００からモノクロ印刷に応じたプレーン数「２」が指定され、ＡＫバンドデータが属性データ（Ａ）および黒色による２のプレーン画像に分割されて符号化処理が行われる。各プレーン画像のＡＫバンドデータが符号化された符号データは、1の符号データに合成されてメインメモリ２１０のＡＫページ符号格納領域３０３Ｂに格納される（ステップＳ６Ｂ）。
【００５６】
復号部２０５は、ＡＫページ符号格納領域３０３ＢからＡＫバンドデータが符号化されたＡＫページ符号データを読み出して復号する（ステップＳ７Ｂ）。このとき、復号部２０５の内部においては、符号データがプレーンに分配されてプレーン毎に並列的に復号処理が行われる。モノクロ印刷時には、例えばＣＰＵ２００からモノクロ印刷に応じたプレーン数「２」が指定され、符号データが属性データ（Ａ）および黒色による２のプレーンに分配され、それぞれ復号される。そして、黒色（Ｋ）によるＫページデータは、階調処理部２０６に供給される。
【００５７】
階調処理部２０６は、供給されたＫページデータに対して階調処理を施す（ステップＳ８）。階調処理されたＫページデータは、プリンタエンジンコントローラ２０７を介してプリンタエンジン２１１に供給される（ステップＳ９）。プリンタエンジン２１１は、供給されたＫページデータに基づきプリントアウトを行う。
【００５８】
＜符号化処理の概略＞
図６は、本実施形態による符号化部２０４の一例の構成を示す。符号化部２０４において、メインメモリ２１０のＡＲＧＢバンドデータ格納領域３０２ＡまたはＡＫバンドデータ格納領域３０２Ｂから、画像読み込み部４００によりＡＲＧＢバンドデータまたはＡＫバンドデータが読み出される。読み出されたＡＲＧＢバンドデータまたはＡＫバンドデータは、プレーン分割処理部４１１に供給される。
【００５９】
以下では、煩雑さを避けるために、特に記載のない限り、ＡＲＧＢバンドデータおよびＡＫバンドデータを纏めて、ＡＲＧＢ／ＡＫバンドデータと呼ぶ。同様に、ＡＲＧＢバンドデータ格納領域３０２ＡまたはＡＫバンドデータ格納領域３０２Ｂを纏めて、ＡＲＧＢ／ＡＫバンドデータ格納領域３０２と呼ぶ。また同様に、ＡＲＧＢページ符号格納領域３０３ＡおよびＡＫページ符号格納領域３０３Ｂを纏めて、ＡＲＧＢ／ＡＫページ符号格納領域３０３と呼ぶ。
【００６０】
画像読み込み部４００は、ピクセル画像によるＡＲＧＢ／ＡＫバンドデータを、ＡＲＧＢ／ＡＫバンドデータ格納領域３０２から、所定のデータ長を有する小領域毎に読み出す。符号化部２０４では、以降の処理を、この画像読み込み部４００によるＡＲＧＢ／ＡＫバンドデータの小領域毎に行う。
【００６１】
小領域は、ＡＲＧＢ／ＡＫ各色の画素の画素データのデータ長よりも大きいデータ長であって、且つ、少なくともメインメモリ２１０の最小のアクセス単位に対応するデータ長を有する。例えば、画素データが８ビットのデータ長を有し、メインメモリ２１０の最小のアクセス単位のデータ長が３２ビットであれば、小領域として適用可能な最小のデータ長は、３２ビットとされる。小領域の最大サイズは、１ライン分の画素のデータ長とされる。
【００６２】
図７は、本実施形態によるＡＲＧＢ／ＡＫバンドデータの読み出し単位とバンド画像との一例の対応関係を示す。図７の例では、バンド画像が横方向に６７８４画素、縦方向に１０２４ラインから構成され、画像の１画素を構成するＡＲＧＢ各色の画素データのデータ長がそれぞれ８ビットとされている。また、図7の例では、バンド画像において水平方向に連なる１２８画素から小領域が構成される。
【００６３】
なお、実際には、小領域のデータ長は、後述する第１〜第４ＦＩＦＯ４１３Ａ〜４１３Ｄそれぞれの記憶容量以下のデータ長に設定する必要がある。
【００６４】
説明は図６に戻り、プレーン分割処理部４１１は、画像読み込み部４００からピクセル画像として供給された小領域分の画素データを、指定された数のプレーン画像に分割する。分割するプレーン画像の数は、例えばＣＰＵ２００により符号化プレーン数として予め指定される。例えば、ＲＧＢ各色によるカラー印刷時には、図３−２を用いて説明したように、１画素がＡＲＧＢ各色による４の画素データから構成され、これら１画素を構成する画素データそれぞれによりプレーン画像が形成されるため、符号化プレーン数として「４」が指定される。一方、モノクロ印刷時には、図４−２を用いて説明したように、１画素がＡＫ各色による２の画素データから構成され、これら１画素を構成する画素データそれぞれによりプレーン画像が形成されるため、符号化プレーン数として「２」が指定される。
【００６５】
プレーン画像に分割された小領域の画素データは、指定された符号化プレーン数に応じて、第１〜第４プレーン中間符号生成処理部４１２Ａ〜４１２Ｄに振り分けられて供給される。例えば、符号化プレーン数に「１」が指定されていれば、第１プレーン中間符号生成処理部４１２Ａのみに画素データが供給される。符号化プレーン数に「２」が指定されていれば、第１プレーン中間符号生成処理部４１２Ａおよび第２プレーン中間符号生成処理部４１２Ｂに順次、画素データが供給される。符号化プレーン数に「３」が指定されていれば、第１〜第３プレーン中間符号生成処理部４１２Ａ〜４１２Ｃに順次、画素データが供給される。また、符号化プレーン数に「４」が指定されていれば、第１〜第４プレーン中間符号生成処理部４１２Ａ〜４１２Ｄに順次、画素データが供給される。
【００６６】
上述したモノクロ印刷時の例では、符号化プレーン数に「２」が指定され、例えば画像読み込み部４００から供給されたデータを８ビットずつ切り出して、第１プレーン中間符号生成処理部４１２Ａおよび第２プレーン中間符号生成処理部４１２Ｂに順次、供給する。同様に、上述したカラー印刷時の例では、符号化プレーン数に「４」が指定され、例えば画像読み込み部４００から供給されたデータを８ビットずつ切り出して、第１〜第４プレーン中間符号生成処理部４１２Ａ〜４１２Ｄに順次、供給する。
【００６７】
第１〜第４プレーン中間符号生成処理部４１２Ａ〜４１２Ｄは、供給された画素データに基づき予測符号化を行い、中間符号を生成する。図８は、第１〜第４プレーン中間符号生成処理部４１２Ａ〜４１２Ｄの一例の構成を示す。なお、第１〜第４プレーン中間符号生成処理部４１２Ａ〜４１２Ｄは、同一の構成で実現可能である。そのため、図８では、第１〜第４プレーン中間符号生成処理部４１２Ａ〜４１２Ｄを、プレーン中間符号生成処理部４１２で代表させて記す。
【００６８】
プレーン中間符号生成処理部４１２は、ラインメモリ制御処理部４０１、ラインメモリ４０２、予測処理部４０３、予測誤差処理部４０４およびランレングス生成処理部４０５を有する。ラインメモリ４０２に対するアクセスを制御する。プレーン分割処理部４１１から供給された、小領域分のＡＲＧＢ／ＡＫバンドデータがプレーン毎に分割された分割ＡＲＧＢ／ＡＫバンドデータは、ラインメモリ制御処理部４０１によりラインメモリ４０２に格納される。
【００６９】
ラインメモリ４０２は、少なくとも２の小領域分のＡＲＧＢ／ＡＫバンドデータを格納可能とされており、今回供給されたデータを格納すると共に、直前に格納した１ライン分のデータを保持するように、ラインメモリ制御処理部４０１に制御される。
【００７０】
例えば、ラインメモリ４０２は、それぞれ１ライン分の画素を格納可能な第１および第２の領域を有し、１ライン分の画素データの符号化が終了すると、この符号化が終了した領域の画素データを保持し、他方の領域に次の１ラインの画素を書き込むように制御される。１ラインの画素を１ライン分、格納可能な２のメモリでラインメモリ４０２を構成してもよい。
【００７１】
ラインメモリ制御処理部４０１の制御により、ラインメモリ４０２から、符号化対象の画素（以下、注目画素と呼ぶ）の画素データと、注目画素の周辺３画素の画素データが読み出され、予測処理部４０３に渡される。ここでラインメモリ４０２から読み出される周辺３画素は、注目画素に近接する、既に符号化が終了した画素である。予測処理部４０３は、ラインメモリ４０２から渡された注目画素の周辺３画素を用いて、所定の予測処理方式により注目画素の画素値を予測する。注目画素の画素値と、求められた平面予測値とが予測誤差処理部４０４に渡される。
【００７２】
注目画素の画素値と、予測処理部４０３で求められた平面予測値との差分である予測誤差値が、予測誤差処理部４０４で算出される。ランレングス生成処理部４０５は、予測誤差処理部４０４で算出された予測誤差値が「０」である場合に、ランレングス値を「１」だけ増加させる。一方、予測誤差値が「０」ではない場合は、予測誤差値または注目画素の画素値と、ランレングス値と、開始画素位置とからなる中間符号を出力する。
【００７３】
中間符号において、開始画素位置は、同じ中間符号に含まれるランレングス値の計数が開始された、小領域における画素位置を示す。また、ランレングス値は、当該中間符号が出力されるか、または、処理対象の小領域が切り替わる際にリセットされる。予測誤差値は、同じ中間符号に含まれる開始画素位置から当該中間符号におけるランレングス値に示される値だけ進んだ画素位置で、当該予測誤差値に変化したことを示す。
【００７４】
プレーン中間符号生成処理部４１２から出力された中間符号は、ＦＩＦＯ(First In First Out)方式のバッファメモリに記憶される。このバッファメモリは、図６に第１〜第４ＦＩＦＯ４１３Ａ〜４１３Ｄとしてそれぞれ例示されるように、第１〜第４プレーン中間符号生成処理部４１２Ａ〜４１２Ｄそれぞれに対して設けられる。第１〜第４ＦＩＦＯ４１３Ａ〜４１３Ｄのそれぞれは、少なくとも、図７を用いて説明した小領域における１のプレーン画像の画素から生成される最大サイズの中間符号を格納可能な容量とされる。
【００７５】
図９は、第１〜第４ＦＩＦＯ４１３Ａ〜４１３Ｄに格納される中間符号の一例のフォーマットを示す。ここで、第１〜第４ＦＩＦＯ４１３Ａ〜４１３Ｄが３２ビット単位でデータの読み書きが可能であるものとする。この図９の例では、データが開始画素位置、ランレングス値、予測誤差値の順に並べられる。また、８ビットが開始画素位置およびランレングス値に対してそれぞれ割り当てられ、残りの１６ビットに対して予測誤差値または注目画素の画素値が割り当てられる。
【００７６】
第１〜第４ＦＩＦＯ４１３Ａ〜４１３Ｄから出力された中間符号は、それぞれ中間符号読み出し部４１４に供給される。中間符号読み出し部４１４は、第１〜第４ＦＩＦＯ４１３Ａ〜４１３Ｄに記憶された中間符号のうち、開始画素位置が小さい中間符号から順に読み出す。読み出された中間符号は、符号フォーマット生成処理部４０６に供給される。
【００７７】
符号フォーマット生成処理部４０６は、中間符号読み出し部４１４から供給された中間符号に含まれるランレングス値および予測誤差値を後述する符号フォーマットに従い符号化し、符号を生成する。生成された符号は、符号書き込み部４０７に渡され、メインメモリ２１０のＡＲＧＢ／ＡＫページ符号格納領域３０３に格納される。
【００７８】
＜符号フォーマット例＞
図１０−１〜図１０−３は、符号フォーマット生成処理部４０６で生成される符号の一例のフォーマットを示す。本実施形態においては、合成中間符号に含まれるデータのうち、予測誤差値（または注目画素の画素値）とランレングス値とをそれぞれ符号化する。そして、図１０−３に例示されるように、符号化されたランレングス値（ランレングス符号と呼ぶ）の後ろに符号化された予測誤差値（予測誤差符号と呼ぶ）を接続し、ランレングス符号および予測誤差符号の組を単位として符号列を生成する。
【００７９】
図１０−１は、予測誤差符号の一例の符号フォーマットを示す。本実施形態では、予測誤差値は、値が大きいほど頻度が低くなるものとしてハフマン符号化される。このとき、予測誤差値を、段階的に設定された範囲に対してグループ分けし、グループ毎に異なる符号長が割り当てられるように符号化を行う。グループの識別は、生成されたハフマン符号の先頭から、グループ数に応じたビット数分の符号を用いて行う。本実施形態では、予測誤差値を８のグループに分類し、３ビットをグループの識別用に用いている。
【００８０】
以下では、グループの識別に用いるビットをグループ識別ビットと呼び、このグループ識別ビットに付加されるビットを付加ビットと呼ぶ。グループ識別ビットと付加ビットとで、予測誤差値毎にユニークなハフマン符号が構成される。
【００８１】
本実施形態では、予測誤差値Ｐｅに対して例えば次のように範囲を設定し、予測誤差値Ｐｅをグループ＃０〜グループ＃７の８グループに分類する。
グループ＃０：Ｐｅ＝１，Ｐｅ＝−１
グループ＃１：Ｐｅ＝−３，Ｐｅ＝−２，Ｐｅ＝２，Ｐｅ＝３
グループ＃２：−７≦Ｐｅ≦−４，４≦Ｐｅ≦７
グループ＃３：−１５≦Ｐｅ≦−８，８≦Ｐｅ≦１５
グループ＃４：−３１≦Ｐｅ≦−１６，１６≦Ｐｅ≦３１
グループ＃５：−６３≦Ｐｅ≦−３２，３２≦Ｐｅ≦６３
グループ＃６：−１２７≦Ｐｅ≦−６４，６４≦Ｐｅ≦１２７
グループ＃７：Ｐｅ≦−１２８，１２８≦Ｐｅ
【００８２】
また、各グループのグループ識別ビットと、付加ビットのビット長とを、例えば次のように設定する。
グループ＃０：グループ識別ビット＝「０００」，付加ビット長＝１ビット
グループ＃１：グループ識別ビット＝「００１」，付加ビット長＝２ビット
グループ＃２：グループ識別ビット＝「０１０」，付加ビット長＝３ビット
グループ＃３：グループ識別ビット＝「０１１」，付加ビット長＝４ビット
グループ＃４：グループ識別ビット＝「１００」，付加ビット長＝５ビット
グループ＃５：グループ識別ビット＝「１０１」，付加ビット長＝６ビット
グループ＃６：グループ識別ビット＝「１１０」，付加ビット長＝７ビット
グループ＃７：グループ識別ビット＝「１１１」，付加ビット長＝８ビット
【００８３】
ここで、グループ＃７の、注目画素の予測誤差値が−１２７より小さいか、若しくは、１２７より大きい場合は、ハフマン符号を用いずに、当該注目画素の画素値をそのまま付加ビットとして用いる。これは、予測誤差値が−２５５より小さいか、若しくは、２５５よりも大きくなった場合に、符号長が８ビットよりも大きくなり圧縮率が低下してしまうことを防止するためである。
【００８４】
図１０−２は、ランレングス符号の一例の符号フォーマットを示す。本実施形態では、ランレングス値は、値が小さいほど短い符号長が割り当てられるようにハフマン符号化され、ランレングス値が「１」で１ビットの符号長が割り当てられ、符号「０」に符号化される。
【００８５】
以下、図１０−２に例示されるように、ランレングス値が「２」の場合には、２ビットの符号長が割り当てられ、符号「１０」に符号化される。また、ランレングス値が「３」〜「５」の場合は、４ビットの符号長が割り当てられ、それぞれ符号「１１００」、「１１０１」および「１１１０」に符号化される。
【００８６】
ランレングス値が「６」以上の場合、４ビットの符号長を持つ符号「１１１１」の後ろに所定符号長の数値部を接続した形式に符号化される。数値部は、図１０−２の下段に示されるように、例えば先頭に１ビットのヘッダを含む４ビットの符号長を有する、１または複数のフレームからなる。ランレングス値を示す符号が３ビット毎に区切られ、各フレームのヘッダを除く３ビットに対し、上述の符号「１１１１」側がＭＳＢとなるように詰め込まれる。図１０−２の例では、フレームは、最大数が３個に制限され、ランレングス値が「５１７」まで表現可能とされている。ランレングス値が「６」の場合は、フレームを省略することができる。
【００８７】
なお、ヘッダは、あるフレームに次のフレームが続くか否かを示す。例えば、ヘッダの値が「０」で次のフレームがあることを示し、ヘッダの値が「１」でそのフレームで終了することを示す。
【００８８】
＜符号化処理の詳細＞
図１１は、符号化部２０４で行われる、本実施形態による符号化処理を示す一例のフローチャートである。なお、図１１のフローチャートによる処理に先んじて、例えばＣＰＵ２００からプレーン分割処理部４１１に対して、分割するプレーン数に応じて「１」〜「４」の何れかの符号化プレーン数が指定される。
【００８９】
ステップＳ２００で、符号化部２０４において、画像読み込み部４００は、ＡＲＧＢ／ＡＫバンドデータ格納領域３０２の処理対象となる小領域から、ピクセル画像による画素を読み込み、プレーン分割処理部４１１に供給する。プレーン分割処理部４１１は、供給された小領域の画素を、符号化プレーン数により指定された数のプレーンに分割する（ステップＳ２０１）。
【００９０】
例えば、１画素のデータ長が８ビットであるとして、プレーン分割処理部４１１は、供給された小領域分のデータから８ビットずつデータを抽出し、指定された符号化プレーン数のプレーンに対して順次、振り分ける。このようにすることで、ピクセル画像をプレーン画像に変換することができる。
【００９１】
次のステップＳ２０２で、プレーン分割処理部４１１は、分割されたプレーンのうち第１プレーンの画素を第１プレーン中間符号生成処理部４１２Ａに転送する。第１プレーン中間符号生成処理部４１２Ａは、ステップＳ２０３で、転送された第１プレーンの画素に基づき、第１プレーンの中間符号を生成する。上述したように、中間符号は、ランレングス値、予測誤差値および開始画素位置を含む。この中間符号の生成処理については、後述する。生成された第１プレーンの中間符号は、図９を用いて説明したフォーマットに従い第１ＦＩＦＯ４１３Ａに書き込まれる。
【００９２】
プレーン分割処理部４１１は、次のステップＳ２０４で、指定された符号化プレーン数が「１」であるか否かが判定される。若し、「１」であると判定されたら、処理は後述するステップＳ２１３に移行される。一方、指定された符号化プレーン数が「１」ではないと判定されたら、処理はステップＳ２０５に移行される。
【００９３】
ステップＳ２０５では、プレーン分割処理部４１１は、分割されたプレーンのうち第２プレーンの画素を第２プレーン中間符号生成処理部４１２Ｂに転送する。第２プレーン中間符号生成処理部４１２Ｂは、ステップＳ２０６で、転送された第２プレーンの画素に基づき、後述するようにして第２プレーンの中間符号を生成する。生成された第２プレーンの中間符号は、図９を用いて説明したフォーマットに従い第２ＦＩＦＯ４１３Ｂに書き込まれる。
【００９４】
プレーン分割処理部４１１は、次のステップＳ２０７で、指定された符号化プレーン数が「２」であるか否かが判定される。若し、「２」であると判定されたら、処理は後述するステップＳ２１３に移行される。一方、指定された符号化プレーン数が「２」ではないと判定されたら、処理はステップＳ２０８に移行される。
【００９５】
ステップＳ２０８では、プレーン分割処理部４１１は、分割されたプレーンのうち第３プレーンの画素を第３プレーン中間符号生成処理部４１２Ｃに転送する。第３プレーン中間符号生成処理部４１２Ｃは、ステップＳ２０９で、転送された第３プレーンの画素に基づき、後述するようにして第３プレーンの中間符号を生成する。生成された第３プレーンの中間符号は、図９を用いて説明したフォーマットに従い第３ＦＩＦＯ４１３Ｃに書き込まれる。
【００９６】
プレーン分割処理部４１１は、次のステップＳ２１０で、指定された符号化プレーン数が「３」であるか否かが判定される。若し、「３」であると判定されたら、処理は後述するステップＳ２１３に移行される。一方、指定された符号化プレーン数が「３」ではないと判定されたら、処理はステップＳ２１１に移行される。
【００９７】
ステップＳ２１１では、プレーン分割処理部４１１は、分割されたプレーンのうち第４プレーンの画素を第４プレーン中間符号生成処理部４１２Ｄに転送する。第４プレーン中間符号生成処理部４１２Ｄは、ステップＳ２１２で、転送された第４プレーンの画素に基づき、後述するようにして第４プレーンの中間符号を生成する。生成された第４プレーンの中間符号は、図９を用いて説明したフォーマットに従い第４ＦＩＦＯ４１３Ｄに書き込まれる。
【００９８】
処理はステップＳ２１３に移行され、バンド画像の１の小領域について全て処理が終了したか否かが判定される。若し、終了したと判定されたら、処理はステップＳ２１４に移行される。一方、１の小領域について未だ処理が終了していないと判定されたら、処理はステップＳ２００に戻される。
【００９９】
ステップＳ２１４で、中間符号読み出し部４１４は、第１ＦＩＦＯ４１３Ａから、読み出し順で先頭の１の中間符号すなわち１組のランレングス値、予測誤差値および開始画素位置を読み込む。ステップＳ２１５で、中間符号読み出し部４１４は、第２ＦＩＦＯ４１３Ｂから、読み出し順で先頭の１の中間符号すなわち１組のランレングス値、予測誤差値および開始画素位置を読み込む。ステップＳ２１６で、中間符号読み出し部４１４は、第３ＦＩＦＯ４１３Ｃから、読み出し順で先頭の１の中間符号すなわち１組のランレングス値、予測誤差値および開始画素位置を読み込む。ステップＳ２１７で、中間符号読み出し部４１４は、第４ＦＩＦＯ４１３Ｄから、読み出し順で先頭の１の中間符号すなわち１組のランレングス値、予測誤差値および開始画素位置を読み込む。
【０１００】
処理はステップＳ２１８に移行され、中間符号読み出し部４１４は、上述のステップＳ２１４〜ステップＳ２１７で各ＦＩＦＯからそれぞれ読み込んだ中間符号のうち、開始画素位置の値が最も小さい中間符号のランレングス値および予測誤差値を選択し、符号フォーマット生成処理部４０６に転送する。開始画素位置の値が最も小さい中間符号が複数存在する場合は、これら複数の中間符号を所定の順序で選択して符号フォーマット生成処理部４０６に転送する。
【０１０１】
符号フォーマット生成処理部４０６は、転送された中間符号に含まれるランレングス値および予測誤差値を、それぞれ図１０−１〜図１０−３を用いて説明した符号フォーマットに従い符号化する。このランレングス値および予測誤差値が符号化された符号は、符号書き込み部４０７に転送される。符号書き込み部４０７は、転送された符号を、メインメモリ２１０のＡＲＧＢ／ＡＫページ符号格納領域３０３に順次、書き込んでいく。ＡＲＧＢ／ＡＫページ符号格納領域３０３には、ランレングス値および予測誤差値が符号化された符号が、開始画素位置毎に、所定の順序で並べられて書き込まれることになる。
【０１０２】
ステップＳ２１８で中間符号の選択および符号化が行われると、処理はステップＳ２１９に移行される。ステップＳ２１９では、第１ＦＩＦＯ４１３Ａ、第２ＦＩＦＯ４１３Ｂ、第３ＦＩＦＯ４１３Ｃおよび第４ＦＩＦＯ４１３Ｄの各ＦＩＦＯうち、開始画素位置が最も小さい中間符号が記憶されるＦＩＦＯ、換言すれば、ステップＳ２１８で中間符号が選択されたＦＩＦＯが更新される。すなわち、ステップＳ２１９では、中間符号が選択されたＦＩＦＯにおいて、当該選択された中間符号が消去され、ＦＩＦＯの記憶内容が更新される。ステップＳ２１８で中間符号が選択されていないＦＩＦＯは、更新されない。
【０１０３】
処理はステップＳ２２０に移行され、第１ＦＩＦＯ４１３Ａ、第２ＦＩＦＯ４１３Ｂ、第３ＦＩＦＯ４１３Ｃおよび第４ＦＩＦＯ４１３Ｄが空であるか否かが判定される。若し、空ではない、すなわち、未だ第１ＦＩＦＯ４１３Ａ、第２ＦＩＦＯ４１３Ｂ、第３ＦＩＦＯ４１３Ｃおよび第４ＦＩＦＯ４１３Ｄの何れかに中間符号が格納されていると判定されたら、処理はステップＳ２１４に戻される。
【０１０４】
一方、ステップＳ２２０で、第１ＦＩＦＯ４１３Ａ、第２ＦＩＦＯ４１３Ｂ、第３ＦＩＦＯ４１３Ｃおよび第４ＦＩＦＯ４１３Ｄが全て空であると判定されたら、処理はステップＳ２２１に移行され、１ラインの最終画素に対して上述の処理が行われたか否かが判定される。若し、１ラインの最終画素に対して処理が行われていないと判定されたら、処理はステップＳ２００に戻され、次の小領域に対する処理が行われる。
【０１０５】
一方、ステップＳ２２１で１ラインの最終画素に対する処理が行われたと判定されたら、処理はステップＳ２２２に移行される。ステップＳ２２２では、第１〜第４プレーン中間符号生成処理部４１２Ａ〜４１２Ｄそれぞれにおいて、ラインメモリ制御処理部４０１により、ラインメモリ４０２に記憶される現ラインが前ラインに変換される。そして、次のステップＳ２２３で処理対象の画像に対する処理が全て終了したか否かが判定される。若し、処理が全て終了したと判定されたら、一連の符号化処理が終了される。一方、処理対象の画像に対する処理が終了していないと判定されたら、処理はステップＳ２００に戻され、次の小領域に対する処理が行われる。
【０１０６】
＜中間符号の生成処理＞
図１２は、図１１のステップＳ２０３、ステップＳ２０６、ステップＳ２０９およびステップＳ２１２における中間符号の生成処理の一例を示すフローチャートである。図６に示した第１プレーン中間符号生成処理部４１２Ａ、第２プレーン中間符号生成処理部４１２Ｂ、第３プレーン中間符号生成処理部４１２Ｃおよび第４プレーン中間符号生成処理部４１２Ｄでは同一の処理が行われるため、ここでは、第１プレーン中間符号生成処理部４１２Ａを例にとって説明する。
【０１０７】
先ず、ステップＳ１００で画素カウンタのカウント値と開始画素位置とがそれぞれ「０」に初期化されると共に、ランレングス値が「１」に初期化される。次に、ステップＳ１０１で、第１プレーン中間符号生成処理部４１２Ａは、プレーン分割処理部４１１から、第１プレーンにおける処理対象の１画素（注目画素ＧDATA）を読み出す。ステップＳ１０１で読み出された注目画素ＧDATAは、ラインメモリ制御処理部４０１の制御により、ラインメモリ４０２の現ラインの画素データが格納される領域に書き込まれる（ステップＳ１０２）。
【０１０８】
次のステップＳ１０３で、ラインメモリ制御処理部４０１の制御により、ラインメモリ４０２から、注目画素ＧDATAと、注目画素ＧDATAの周辺３画素とが読み出され、予測処理部４０３に渡される。注目画素ＧDATAの周辺３画素は、図１３に例示されるように、注目画素ＧDATAのスキャン順で直前の画素ａと、当該注目画素ＧDATAが属するラインに対してスキャン順で直前のライン、すなわち当該注目画素ＧDATAが属するラインの直上のラインにおいて当該注目画素ＧDATAの直上に位置する画素ｂおよび画素ｂのスキャン順で直前の画素ｃである。
【０１０９】
なお、以下では、符号化対象である注目画素が属するラインを現ライン、符号化ラインに対してスキャン順で直前のラインを前ラインと呼ぶ。
【０１１０】
予測処理部４０３は、注目画素ＧDATAの周辺３画素ａ、ｂおよびｃを用いて、所定の予測方式を用いて注目画素ＧDATAの画素値を予測する。本実施形態では、予測方式として平面予測方式を用いる。すなわち、予測処理部４０３は、下記の式（１）に示される平面予測演算により平面予測値を求め、注目画素ＧDATAの画素値を予測する。
平面予測値＝ａ＋ｂ−ｃ    …（１）
【０１１１】
注目画素ＧDATAの画素値が予測されると、次のステップＳ１０４で、予測誤差処理部４０４により、注目画素ＧDATAの画素値からステップＳ１０３で予測された予測値を減じて、注目画素ＧDATAに対する予測値の誤差（予測誤差値）を求める。
【０１１２】
ステップＳ１０４で注目画素ＧDATAに対する予測誤差値が求められると、処理はステップＳ１０５に移行される。ステップＳ１０５では、ランレングス生成処理部４０５で、ステップＳ１０４で求められた予測誤差値が「０」以外の値であるか、若しくは、処理対象の小領域の画素を全て処理したか否かが判定される。
【０１１３】
若し、求めた予測誤差値が「０」であって、且つ、処理対象の小領域の画素を全て処理していないと判定されたら、処理はステップＳ１０６に移行され、ランレングス値を「１」だけ増加させる。そして、処理はステップＳ１０７に移行されて画素カウンタのカウント値が「１」だけ増加される。カウント値が増加されると、処理がステップＳ１０１に戻されて、次の画素が注目画素ＧDATAとされる。
【０１１４】
一方、ステップＳ１０５で、予測誤差値が「０」以外の値であるか、若しくは、処理対象の小領域の画素を全て処理したと判定されたら、処理はステップＳ１０８に移行され、ランレングス生成処理部４０５で生成されたランレングス値と、予測誤差処理部４０４で求められた予測誤差値と、開始画素位置とが１の中間符号として第１プレーン中間符号生成処理部４１２Ａから出力される。この中間符号は、第１ＦＩＦＯ４１３Ａに書き込まれる。
【０１１５】
ステップＳ１０８で第１ＦＩＦＯ４１３Ａに中間符号が書き込まれると、処理はステップＳ１０９に移行され、画素カウンタのカウント値が開始画素位置とされ、次のステップＳ１１０でランレングス値が「１」にリセットされる。
【０１１６】
処理はステップＳ１１１に移行され、小領域分の処理が全て終了したか否かが判定される。若し、終了したと判定されたら、図１２のフローチャートを抜け、例えば図１１のフローチャートにおけるステップＳ２０４に処理が移行される。
【０１１７】
一方、ステップＳ１１１で、小領域分の処理が終了していないと判定されたら、処理はステップＳ１０７に移行されて画素カウンタのカウント値が「１」だけ増加され、処理がステップＳ１０１に戻される。そして、小領域における次の１画素が注目画素ＧDATAとされ、処理が行われる。
【０１１８】
＜中間符号の具体例＞
ａ．中間符号の生成例
図１４−１〜図１４−４は、ＡＲＧＢ各色によるカラー印刷時において、第１〜第４プレーン中間符号生成処理部４１２Ａ〜４１２Ｄそれぞれにより生成される中間符号のより具体的な例を示す。図１４−１が属性データ（Ａ）によるＡ（属性）プレーンの例、図１４−２がＲ画素によるＲプレーンの例、図１４−３がＧ画素によるＧプレーンの例、図１４−４がＢ画素によるＢプレーンの例をそれぞれ示す。また、Ａプレーン、Ｒプレーン、ＧプレーンおよびＢプレーンがそれぞれ第１プレーン画像、第２プレーン画像、第３プレーン画像および第４プレーン画像であるものとする。
【０１１９】
なお、図１４−１〜図１４−４において、小領域が１６画素からなるものとして説明する。前ラインおよび現ラインの各升が画素を表し、升中の数値は画素値を示す。また、前ラインの上部に記される数字は画素を識別するための番号であり、番号＃０〜番号＃１５の画素が処理対象の小領域の画素である。また、番号＃−１の画素は、当該処理対象の小領域の直前の小領域における終端の画素である。
【０１２０】
ＡＲＧＢ各色によるカラー印刷時には、符号化プレーン数として「４」がプレーン分割処理部４１１に予め設定される。そして、図１１のフローチャートを用いて説明したように、第１画像プレーン〜第４画像プレーンから１画素ずつが順次、第１プレーン中間符号生成処理部４１２Ａ〜第４プレーン中間符号生成処理部４１２Ｄに対して転送され、各プレーンの中間符号が生成される。
【０１２１】
図１４−１に画素構成が例示されるＡプレーンの例について、図１１および図１２のフローチャートを参照しながら説明する。第１プレーン中間符号生成処理部４１２Ａにおいて、先ず、処理対象の小領域の先頭画素でランレングス値が「１」にリセットされると共に、画素カウンタおよび開始画素位置がそれぞれ「０」にリセットされる（図１２のステップＳ１００）。
【０１２２】
第１プレーン中間符号生成処理部４１２Ａは、プレーン分割処理部４１１から転送された、小領域の先頭画素である番号＃０の画素（以下、「番号＃ｎの画素」を、適宜「画素＃ｎ」と記す）を注目画素ＧDATAとして（ステップＳ１０１）、当該注目画素ＧDATAの周辺３画素ａ、ｂおよびｃを用いて注目画素ＧDATAの画素値を予測する（ステップＳ１０３）。小領域の先頭画素の予測は、当該小領域の直前の小領域における終端の画素（前ラインおよび現ラインの画素＃−１）を、画素ａおよび画素ｃとして用いて行う。
【０１２３】
図１４−１の例では、注目画素ＧDATAである現ラインの画素＃０に対する周辺３画素ａ、ｂおよびｃの画素値がそれぞれ「０」であるので、上述した式（１）に従い予測値が「０」となる。これは、注目画素ＧDATAの画素値と一致するので、予測誤差値が「０」となり（ステップＳ１０４）、ランレングス値に「１」が加算され「２」とされる（ステップＳ１０５およびステップＳ１０６）。また、画素カウンタの値が「１」加算されて「１」とされる（ステップＳ１０７）。
【０１２４】
第１プレーン画像であるＡプレーンの１画素の処理が終了すると、次に第２プレーン画像（Ｒプレーン）について、同様にして１画素の処理が行われ、以降、第３プレーン画像（Ｇプレーン）、第４プレーン画像（Ｂプレーン）と順次、１画素ずつ処理が行われる（図１１のステップＳ２０４〜ステップＳ２１３）。以下、煩雑さを避けるために、第１プレーン画像（Ａプレーン）の処理について詳細に説明し、第２〜第４プレーン画像の処理についての詳細な説明を省略する。
【０１２５】
第４プレーン画像の処理が終了すると、処理が第１プレーン画像（Ａプレーン）に戻り、次の画素（画素＃１）が注目画素ＧDATAとされて、ステップＳ１０１からの処理が行われる。図１４−１に例示されるように、Ａプレーンは、現ラインにおいて画素＃０〜画素＃５まで画素値「０」が連続すると共に、前ラインにおいて画素＃０〜画素＃６まで画素値「０」が連続する。そのため、現ラインの画素＃５までは全て予測が的中し、予測誤差値が「０」とされる。
【０１２６】
ステップＳ１０５の判定により、処理がステップＳ１０６に移行されてランレングス値に順次「１」が加算されると共に、ステップＳ１０７で画素カウンタのカウンタ値に順次「１」が加算される。
【０１２７】
すなわち、注目画素ＧDATAが画素＃５の時点では、ランレングス値が「７」、画素カウンタのカウント値が「６」となる。開始画素位置は、初期値である「０」のままである。
【０１２８】
次のＡプレーンの処理において、注目画素ＧDATAが現ラインの画素＃６とされる。図１４−１の例では、画素＃６の画素値が「６４」とされている。当該注目画素ＧDATAの周辺３画素の画素値は、それぞれ「０」であるので、上述の式（１）に従い予測値が「０」となり、注目画素ＧDATAの画素値「６４」と一致しない。この場合、予測誤差値が「６４」とされ（ステップＳ１０４）、ステップＳ１０５の判定により処理がステップＳ１０８に移行され、ランレングス値「７」、予測誤差値「６４」および開始画素位置「０」が中間符号として第１ＦＩＦＯ４１３Ａに書き込まれる。
【０１２９】
中間符号が第１ＦＩＦＯ４１３Ａに書き込まれると、処理はステップＳ１０９に移行され、画素カウンタのカウント値「６」が開始画素位置とされる。そして、ランレングス値が「１」にリセットされると共に、画素カウンタのカウント値に「１」が加算され当該カウント値が「７」とされる（ステップＳ１１０、ステップＳ１０７）。
【０１３０】
次に、注目画素ＧDATAが現ラインの画素＃７とされる。図１４−１の例では、画素＃７の画素値が「６４」とされている。当該注目画素ＧDATAの周辺３画素の画素値は、それぞれ「６４」、「６４」および「０」であるので、上述の式（１）に従い予測値が「１２８」となり、注目画素ＧDATAの画素値と一致しない。
【０１３１】
この場合、予測誤差値が「−６４」とされ、ステップＳ１０５の判定により処理がステップＳ１０８に移行されて、ランレングス値「１」、予測誤差値「−６４」および画素開始位置「６」が中間符号として、第１ＦＩＦＯ４１３Ａに対し、直前に書き込まれた中間符号の次に書き込まれる。
【０１３２】
中間符号が第１ＦＩＦＯ４１３Ａに書き込まれると、処理はステップＳ１０９に移行され、画素カウンタのカウント値「７」が開始画素位置とされる。そして、ランレングス値が「１」にリセットされると共に、画素カウンタのカウント値に「１」が加算され当該カウント値が「８」とされる（ステップＳ１１０、ステップＳ１０７）。
【０１３３】
次に、注目画素ＧDATAが現ラインの画素＃８とされる。図１４−１の例では、画素＃８の画素値が「６４」とされ、当該注目画素ＧDATAの周辺３画素の画素値が全て「６４」であるので、上述の式（１）に従い予測値が「６４」となり予測が的中する。したがって、予測誤差値が「０」とされ、ステップＳ１０５の判定によりランレングス値「１」に値「１」が加算されて値「２」とされ、画素カウンタのカウント値が「１」だけ増加されて値「９」とされる。
【０１３４】
次の注目画素ＧDATAである画素＃９においても、画素＃８の場合と同様に、注目画素ＧDATAおよび注目画素ＧDATAの周辺３画素の画素値が全て「６４」であるので、上述の式（１）に従い予測値が「６４」となり予測が的中する。したがって、予測誤差値が「０」とされ、ステップＳ１０５の判定によりランレングス値「２」に値「１」が加算されて値「３」とされ、画素カウンタのカウント値が「１」だけ増加されて値「１０」とされる。
【０１３５】
次の注目画素ＧDATAである画素＃１０は、図１４−１の例では画素値が「０」とされ、当該注目画素ＧDATAの周辺３画素の画素値がそれぞれ「６４」であるので、上述の式（１）に従い予測値が「６４」となり、注目画素ＧDATAの画素値と一致しない。
【０１３６】
この場合、予測誤差値が「−６４」とされ、ステップＳ１０５の判定により処理がステップＳ１０８に移行されて、ランレングス値「３」、予測誤差値「−６４」および画素開始位置「７」が中間符号として、第１ＦＩＦＯ４１３Ａに対し、直前に書き込まれた中間符号に対して連続的に書き込まれる。
【０１３７】
中間符号が第１ＦＩＦＯ４１３Ａに書き込まれると、処理はステップＳ１０９に移行され、画素カウンタのカウント値「１０」が開始画素位置とされる。そして、ランレングス値が「１」にリセットされると共に、画素カウンタのカウント値に「１」が加算され当該カウント値が「１１」とされる（ステップＳ１１０、ステップＳ１０７）。
【０１３８】
次の注目画素ＧDATAである画素＃１１は、図１４−１の例では画素値が「０」とされ、当該注目画素ＧDATAの周辺３画素うち画素ａおよびｂの画素値がそれぞれ「０」、画素ｃの画素値が「６４」であるので、上述の式（１）に従い予測値が「−６４」となり、注目画素ＧDATAの画素値と一致しない。
【０１３９】
この場合、予測誤差値が「６４」とされ、ステップＳ１０５の判定により処理がステップＳ１０８に移行されて、ランレングス値「１」、予測誤差値「６４」および画素開始位置「１０」が中間符号として、第１ＦＩＦＯ４１３Ａに対し、直前に書き込まれた中間符号に対して連続的に書き込まれる。
【０１４０】
中間符号が第１ＦＩＦＯ４１３Ａに書き込まれると、処理はステップＳ１０９に移行され、画素カウンタのカウント値「１１」が開始画素位置とされる。そして、ランレングス値が「１」にリセットされると共に、画素カウンタのカウント値に「１」が加算され当該カウント値が「１２」とされる（ステップＳ１１０、ステップＳ１０７）。
【０１４１】
次に、注目画素ＧDATAが現ラインの画素＃１２とされる。図１４−１の例では、現ラインにおける画素＃１２の画素値が「０」とされ、当該注目画素ＧDATAの周辺３画素の画素値が全て「０」であるので、上述の式（１）に従い予測値が「０」となり予測が的中する。したがって、予測誤差値が「０」とされ、ステップＳ１０５の判定によりランレングス値「１」に値「１」が加算されて値「２」とされ、画素カウンタのカウント値が「１」だけ増加されて値「１３」とされる。
【０１４２】
続く画素＃１３および画素＃１４が注目画素ＧDATAの場合、図１４−１に例示されるように、Ａプレーンは、現ラインの画素＃１３および画素＃１４の画素値、ならびに、当該画素＃１３および＃１４それぞれの周辺３画素ａ、ｂおよびｃの画素値が全て「０」となっている。そのため、現ラインの画素＃１３および＃１４に対する予測はそれぞれ的中し、予測誤差値が「０」とされる。
【０１４３】
ステップＳ１０５の判定により、処理がステップＳ１０６に移行されてランレングス値に順次「１」が加算されると共に、ステップＳ１０７で画素カウンタのカウンタ値に順次「１」が加算される。
【０１４４】
すなわち、注目画素ＧDATAが画素＃１４の時点では、ランレングス値が「４」、画素カウンタのカウント値が「１５」、開始画素位置が「１１」となる。
【０１４５】
次の注目画素ＧDATAである画素＃１５は、図１４−１の例では画素値が「２５５」とされ、当該注目画素ＧDATAの周辺３画素ａ、ｂおよび画素ｃの画素値がそれぞれ「０」であるので、上述の式（１）に従い予測値が「０」となり、注目画素ＧDATAの画素値と一致しない。
【０１４６】
この場合、予測誤差値が「２５５」とされ、ステップＳ１０５の判定により処理がステップＳ１０８に移行されて、ランレングス値「３」、予測誤差値「２５５」および画素開始位置「１１」が中間符号として、第１ＦＩＦＯ４１３Ａに対し、直前に書き込まれた中間符号に対して連続的に書き込まれる。
【０１４７】
中間符号が第１ＦＩＦＯ４１３Ａに書き込まれると、処理はステップＳ１０９に移行され、画素カウンタのカウント値「１１」が開始画素位置とされる。そして、ランレングス値が「１」にリセットされると共に、画素カウンタのカウント値に「１」が加算され当該カウント値が「１６」とされる（ステップＳ１１０、ステップＳ１０７）。
【０１４８】
ｂ．ＦＩＦＯに書き込まれる中間符号の例
図１５−１は、上述した図１４−１の画素構成に基づき第１ＦＩＦＯ４１３Ａに書き込まれる、ランレングス値、予測誤差値および開始画素位置からなる中間符号の例を示す。なお、図１５−１において、ランレングス値の上に記される番号は、中間符号がＦＩＦＯに書き込まれる順番を示し、最初にＦＩＦＯに書き込まれる中間符号を番号＃０として示す。
【０１４９】
画素＃６が注目画素ＧDATAのときに、第１ＦＩＦＯ４１３Ａに対して番号＃０の中間符号が書き込まれる。同様にして、第１ＦＩＦＯ４１３Ａに対し、画素＃７が注目画素ＧDATAのときに番号＃１の中間符号が書き込まれ、画素＃１０が注目画素ＧDATAのときに番号＃２の中間符号が書き込まれる。さらに、第１ＦＩＦＯ４１３Ａに対し、画素＃１１が注目画素ＧDATAのときに番号＃３の中間符号が書き込まれ、画素＃１５が注目画素ＧDATAのときに番号＃４の中間符号が書き込まれる。
【０１５０】
図１４−２のＲプレーンの例、図１４−３のＧプレーンの例および図１４−４のＢプレーンの例についても同様である。例えば図１４−２のＲプレーンの例の場合、注目画素ＧDATAが現ラインの画素＃２、画素＃３、画素＃６、画素＃７、画素＃１０、画素＃１１、画素＃１３、画素＃１４および画素＃１５のときに、それぞれ予測誤差値が「０」以外の値となる。したがって、これらの画素が注目画素ＧDATAのときに、図１２のフローチャートにおけるステップＳ１０５の判定により、中間符号が第２ＦＩＦＯ４１３Ｂに順次、書き込まれる。
【０１５１】
図１５−２は、図１４−２の画素構成に基づき第２ＦＩＦＯ４１３Ｂに書き込まれる中間符号の例を示す。番号＃０〜番号＃８で示す各中間符号は、上述の、注目画素ＧDATAが現ラインの画素＃２、画素＃３、画素＃６、画素＃７、画素＃１０、画素＃１１、画素＃１３、画素＃１４および画素＃１５のときにそれぞれ生成され、順次、第２ＦＩＦＯ４１３Ｂに書き込まれる。
【０１５２】
図１４−３のＧプレーンの例の場合、注目画素ＧDATAが現ラインの画素＃６、画素＃７、画素＃１０、画素＃１１、画素＃１３、画素＃１４および画素＃１５のときに、それぞれ予測誤差値が「０」以外の値となる。したがって、これらの画素が注目画素ＧDATAのときに、図１２のフローチャートにおけるステップＳ１０５の判定により、中間符号が第３ＦＩＦＯ４１３Ｃに順次、書き込まれる。
【０１５３】
図１５−３は、図１４−３の画素構成に基づき第３ＦＩＦＯ４１３Ｃに書き込まれる中間符号の例を示す。番号＃０〜＃６で示す各中間符号は、上述の、注目画素ＧDATAが現ラインの画素＃６、画素＃７、画素＃１０、画素＃１１、画素＃１３、画素＃１４および画素＃１５のときにそれぞれ生成され、順次、第３ＦＩＦＯ４１３Ｃに書き込まれる。
【０１５４】
図１４−４のＢプレーンの例の場合、注目画素ＧDATAが現ラインの画素＃２、画素＃３、画素＃１０、画素＃１１、画素＃１３、画素＃１４および画素＃１５のときに、それぞれ予測誤差値が「０」以外の値となる。したがって、これらの画素が注目画素ＧDATAのときに、図１２のフローチャートにおけるステップＳ１０５の判定により、中間符号が第４ＦＩＦＯ４１３Ｄに順次、書き込まれる。
【０１５５】
図１５−４は、図１４−４の画素構成に基づき第４ＦＩＦＯ４１３Ｄに書き込まれる中間符号の例を示す。番号＃０〜＃６で示す各中間符号は、上述の、注目画素ＧDATAが現ラインの画素＃２、画素＃３、画素＃１０、画素＃１１、画素＃１３、画素＃１４および画素＃１５のときにそれぞれ生成され、順次、第４ＦＩＦＯ４１３Ｄに書き込まれる。
【０１５６】
なお、小領域における各注目画素に対する全ての予測誤差値の絶対値が「１２８」以上の場合に、各注目画素の中間符号を符号化した符号の合計符号量が最大となる。したがって、第１〜第４ＦＩＦＯ４１３Ａ〜４１３Ｄのそれぞれは、少なくともこの最大の合計符号量分の符号を格納可能な容量を有している必要がある。
【０１５７】
ｃ．中間符号の合成処理の例
１小領域分の画素について中間符号の生成が完了したら、上述した図１１のフローチャートにおけるステップＳ２１４〜ステップＳ２２０の処理に従い、第１ＦＩＦＯ４１３Ａ〜第４ＦＩＦＯ４１３Ｄに書き込まれた中間符号が合成される。この中間符号の合成処理について、上述した図１１および図１２のフローチャート、ならびに、図１６を参照しながら説明する。図１６は、ＡＲＧＢページ符号格納領域３０３Ａに格納される符号の例を示す。
【０１５８】
既に説明したように、中間符号読み出し部４１４は、図１１のフローチャートにおけるステップＳ２１４〜ステップＳ２１７で、第１ＦＩＦＯ４１３Ａ〜第４ＦＩＦＯ４１３Ｄのそれぞれから、順に１ずつ中間符号を読み込む。次に、中間符号読み出し部４１４は、読み込んだ４の中間符号に含まれる開始画素位置の値を比較し、開始画素位置が最も小さい中間符号を選択する。
【０１５９】
ここで、中間符号の生成処理において、小領域について最初に生成される中間符号に含まれる開始画素位置は、必ず「０」になる。これは、上述した図１２のフローチャートにおいて、開始画素位置の初期値が「０」であって、ステップＳ１０８で中間符号を生成した後に、ステップＳ１０９で画素カウンタのカウント値が開始画素位置とされることで明らかである。したがって、１回目の処理においては、第１ＦＩＦＯ４１３Ａ〜第４ＦＩＦＯ４１３Ｄのそれぞれから読み込まれた番号＃０の中間符号が全て選択される。
【０１６０】
中間符号読み出し部４１４は、選択した中間符号に含まれるランレングス値と予測誤差値とを、所定の順序で符号フォーマット生成処理部４０６に転送する。例えば中間符号読み出し部４１４は、当該ランレングス値と予測誤差値とを、Ａプレーン、Ｒプレーン、ＧプレーンおよびＢプレーンの順で符号フォーマット生成処理部４０６に転送する。
【０１６１】
既に説明したように、符号フォーマット生成処理部４０６は、転送された各プレーンのランレングス値と予測誤差値とを、図１０−１〜図１０−３を用いて説明した符号フォーマットに従い符号化し、符号書き込み部４０７に順次転送する。符号書き込み部４０７は、例えば、符号フォーマット生成処理部４０６から順次転送された各プレーンの符号を、ＡＲＧＢページ符号格納領域３０３Ａに書き込む。
【０１６２】
ＡＲＧＢページ符号格納領域３０３Ａには、例えば図１６に番号＃０〜番号＃３で示されるように、開始画素位置の値が「０」の中間符号が、Ａプレーン、Ｒプレーン、ＧプレーンおよびＢプレーンの順で並べて連続的に書き込まれる。なお、中間符号は、ＡＲＧＢページ符号格納領域３０３Ａに対して符号化された状態で書き込まれるが、図１６では、理解を容易とするように、符号化前の中間符号の状態で示してある。これは、後述する図１９においても同様である。
【０１６３】
ランレングス値と予測誤差値とが符号フォーマット生成処理部４０６に転送されると、第１ＦＩＦＯ４１３Ａ〜第４ＦＩＦＯ４１３Ｄのうち中間符号が選択されたＦＩＦＯが更新される。すなわち、ＦＩＦＯから読み出された中間符号がＦＩＦＯから消去されると共に、当該中間符号に後続する中間符号が、順次、ＦＩＦＯの先頭方向にシフトされる。１回目の選択においては、第１ＦＩＦＯ４１３Ａ〜第４ＦＩＦＯ４１３Ｄのそれぞれから読み込まれた中間符号が全て選択されているため、第１ＦＩＦＯ４１３Ａ〜第４ＦＩＦＯ４１３Ｄがそれぞれ更新される。
【０１６４】
第１ＦＩＦＯ４１３Ａ〜第４ＦＩＦＯ４１３Ｄの各ＦＩＦＯについて、１の画素開始位置に対する処理が終了した時点で全てのＦＩＦＯが空になっていなければ（ステップＳ２２０）、処理がステップＳ２１４に戻され、２回目の処理が行われる。
【０１６５】
２回目の処理では、第１ＦＩＦＯ４１３Ａ〜第４ＦＩＦＯ４１３Ｄの各ＦＩＦＯから、図１５−１〜図１５−４に例示される番号＃１の中間符号が中間符号読み出し部４１４に読み込まれることになる。各ＦＩＦＯから読み込まれた中間符号の開始画素位置は、ＡプレーンおよびＧプレーンでそれぞれ「６」、ＲプレーンおよびＢプレーンでそれぞれ「２」とされ、ＲプレーンおよびＢプレーンの開始画素位置が最小となる。したがって、中間符号読み出し部４１４により、ＲプレーンおよびＢプレーンそれぞれの中間符号が書き込まれる第２ＦＩＦＯ４１３Ｂおよび第４ＦＩＦＯ４１３Ｄから読み込まれた中間符号が選択される。
【０１６６】
中間符号読み出し部４１４により選択された中間符号のそれぞれは、上述した所定の順序で符号フォーマット生成処理部４０６に転送されて符号化され、符号書き込み部４０７に転送される。符号書き込み部４０７は、転送された、ＲプレーンおよびＢプレーンそれぞれの中間符号が符号化された符号を、ＡＲＧＢページ符号格納領域３０３Ａに書き込む。このとき、これらの符号は、１回目の処理でＡＲＧＢページ符号格納領域３０３Ａに書き込まれた各符号に対して連続的に書き込まれる。例えば、符号は、１回目の処理で書き込まれた各符号に対してアドレスが連続的となるように、ＡＲＧＢページ符号格納領域３０３Ａに書き込まれる。
【０１６７】
図１６の例では、１回目の処理により最後に書き込まれた番号＃３の符号に続けて、Ｒプレーンの中間符号が符号化された符号（番号＃４）が書き込まれ、さらに、Ｂプレーンの中間符号が符号化された符号（番号＃５）が書き込まれる。
【０１６８】
その後、図１１のステップＳ２１９において、２回目の処理で選択された中間符号が格納される第２および第４ＦＩＦＯ４１３Ｂおよび４１３Ｄが更新される。当該処理で選択されていない第１および第３ＦＩＦＯ４１３Ａおよび４１３Ｃに対しては、更新処理は行われない。
【０１６９】
３回目の処理では、中間符号読み出し部４１４により、第１ＦＩＦＯ４１３Ａから図１５−１に例示するＡプレーンの番号＃１の中間符号が読み出され、第２ＦＩＦＯ４１３Ｂから図１５−２に例示するＲプレーンの番号＃２の中間符号が読み出される。また、第３ＦＩＦＯ４１３Ｃから図１５−３に例示するＧプレーンの番号＃１の中間符号が読み出され、第４ＦＩＦＯ４１３Ｄから図１５−４に例示するＢプレーンの番号＃２の中間符号が読み出される。
【０１７０】
中間符号読み出し部４１４は、各ＦＩＦＯから読み出された中間符号の開始画素位置を比較し、最小の開始画素位置を含む中間符号が格納されるＦＩＦＯが選択される。図１５−１〜図１５−４の例では、Ｒプレーンの番号＃２の中間符号と、Ｂプレーンの番号＃２の中間符号がそれぞれ開始画素位置が最小となる。そのため、第２ＦＩＦＯ４１３Ｂおよび第４ＦＩＦＯ４１３Ｄから読み込まれた中間符号がそれぞれ選択される。
【０１７１】
中間符号読み出し部４１４により第２および第４ＦＩＦＯ４１３Ｂおよび４１３Ｄから読み出された、ＲプレーンおよびＢプレーンの中間符号のそれぞれは、上述した所定の順序で符号フォーマット生成処理部４０６に転送されて符号化される。そして、符号書き込み部４０７によりＡＲＧＢページ符号格納領域３０３Ａに書き込まれる。このとき、これらの符号は、２回目の処理でＡＲＧＢページ符号格納領域３０３Ａに書き込まれた各符号に対して連続的に書き込まれる。
【０１７２】
図１６の例では、２回目の処理により最後に書き込まれた番号＃５の符号に続けて、Ｒプレーンの中間符号が符号化された符号（番号＃６）が書き込まれ、さらに、Ｂプレーンの中間符号が符号化された符号（番号＃７）が書き込まれる。
【０１７３】
その後、図１１のステップＳ２１９において、３回目の処理で選択された中間符号が格納される第２および第４ＦＩＦＯ４１３Ｂおよび４１３Ｄが更新される。当該処理で選択されていない第１および第３ＦＩＦＯ４１３Ａおよび４１３Ｃに対しては、更新処理は行われない。
【０１７４】
以降、上述した処理を、第１〜第４ＦＩＦＯ４１３Ａ〜４１３Ｄが全て空になるまで繰り返す。その結果、ＡＲＧＢページ符号格納領域３０３Ａには、図１６に例示されるように、符号化されたＡＲＧＢ各プレーンの中間符号が、開始画素位置の値が小さい順に、同一の開始画素位置毎に所定の順序（例えばＡプレーン、Ｒプレーン、Ｇプレーン、Ｂプレーンの順）で格納される。換言すれば、符号化されたＡＲＧＢ各プレーンの中間符号は、１の符号列に合成されてＡＲＧＢ／ＡＫページ符号格納領域３０３に格納される。
【０１７５】
ｄ．モノクロ印刷時の中間符号の例
ＡＫ各色によるモノクロ印刷時には、ＡプレーンおよびＫプレーンによる符号化プレーン数「２」がプレーン分割処理部４１１に予め設定される。そして、図１１のフローチャートを用いて説明したように、第１画像プレーンであるＡプレーンと、第２画像プレーンであるＫプレーンとから１画素ずつが順次、第１プレーン中間符号生成処理部４１２Ａおよび第２プレーン中間符号生成処理部４１２Ｂに対して転送され、各プレーンの中間符号が生成される。
【０１７６】
第１プレーン中間符号生成処理部４１２Ａおよび第２プレーン中間符号生成処理部４１２Ｂでは、図１２のフローチャートを用いて説明した処理と同一の処理で、ＡプレーンおよびＫプレーンの中間符号をそれぞれ生成する。そのため、煩雑さを避けるために、モノクロ印刷における中間符号の生成処理の説明は、省略する。
【０１７７】
図１７−１および図１７−２は、第１プレーン中間符号生成処理部４１２Ａおよび第２プレーン中間符号生成処理部４１２Ｂそれぞれにより生成される中間符号のより具体的な例を示す。図１７−１がＡプレーンの例、図１７−２がＫプレーンの例をそれぞれ示す。なお、ここでは、図１７−１のＡプレーンの画素構成を、図１４−１に例示したＡプレーンの画素構成と同一としてある。同様に、図１７−２のＫプレーンの画素構成を、図１４−２に例示したＲプレーンの画素構成と同一としてある。
【０１７８】
すなわち、図１７−１に例示するＡプレーンの例では、注目画素ＧDATAが現ラインの画素＃６、画素＃７、画素＃１０、画素＃１１および画素＃１５のときに、それぞれ予測誤差値が「０」以外の値となる。したがって、これらの画素が注目画素ＧDATAのときに、図１２のフローチャートにおけるステップＳ１０５の判定により、中間符号が第１ＦＩＦＯ４１３Ａに順次、書き込まれる。
【０１７９】
図１７−２に例示するＫプレーンの例でも同様に、注目画素ＧDATAが現ラインの画素＃２、画素＃３、画素＃６、画素＃７、画素＃１０、画素＃１１、画素＃１３、画素＃１４および画素＃１５のときに、それぞれ予測誤差値が「０」以外の値となる。したがって、これらの画素が注目画素ＧDATAのときに、図１２のフローチャートにおけるステップＳ１０５の判定により、中間符号が第２ＦＩＦＯ４１３Ｂに順次、書き込まれる。
【０１８０】
図１８−１および図１８−２は、それぞれ上述した図１７−１および図１７−２の画素構成に基づき第１ＦＩＦＯ４１３Ａおよび第２ＦＩＦＯ４１３Ｂに書き込まれる中間符号の例を示す。なお、図１８−１および図１８−２において、ランレングス値の上に記される番号は、中間符号がＦＩＦＯに書き込まれる順番を示し、最初にＦＩＦＯに書き込まれる中間符号を番号＃０として示す。
【０１８１】
図１８−１は、図１７−１の画素構成に基づき第１ＦＩＦＯ４１３Ａに書き込まれる中間符号の例を示す。番号＃０〜番号＃４で示す各中間符号は、上述の、注目画素ＧDATAが現ラインの画素＃６、画素＃７、画素＃１０、画素＃１１および画素＃１５のときにそれぞれ生成され、順次、第１ＦＩＦＯ４１３Ａに書き込まれる。
【０１８２】
図１８−２は、図１７−２の画素構成に基づき第２ＦＩＦＯ４１３Ｂに書き込まれる中間符号の例を示す。番号＃０〜番号＃８で示す各中間符号は、上述の、注目画素ＧDATAが現ラインの画素＃２、画素＃３、画素＃６、画素＃７、画素＃１０、画素＃１１、画素＃１３、画素＃１４および画素＃１５のときにそれぞれ生成され、順次、第２ＦＩＦＯ４１３Ｂに書き込まれる。
【０１８３】
１小領域分の画素について中間符号の生成が完了したら、上述した図１１のフローチャートにおけるステップＳ２１４〜ステップＳ２２０の処理に従い、第１ＦＩＦＯ４１３Ａおよび第２ＦＩＦＯ４１３Ｂにそれぞれ書き込まれた中間符号が合成される。
【０１８４】
なお、指定された符号化プレーン数に基づき、図１１のステップＳ２１４〜ステップＳ２１７の処理のうち所定の処理を省略することができる。例えば、モノクロ印刷時には、指定された符号化プレーン数に基づき、図１１の処理のうちステップＳ２１６およびステップＳ２１７の処理を省略して、第３および第４ＦＩＦＯ４１３Ｃおよび４１３Ｄからの中間符号の読み出しを行わないようにすることができる。以下では、このステップＳ２１６およびステップＳ２１７の処理が、指定された符号化プレーン数に基づき省略されたものとして説明する。
【０１８５】
この中間符号の合成処理について、上述した図１１および図１２のフローチャート、ならびに、図１９を参照しながら説明する。図１９は、ＡＫページ符号格納領域３０３Ｂに格納される符号の例を示す。なお、図１９は、上述の図１６と同様に、理解を容易とするように、中間符号が符号化された符号が、符号化前の中間符号の形式で示されている。
【０１８６】
中間符号読み出し部４１４は、モノクロ印刷時においても、上述したカラー印刷時と同様にして、図１１のフローチャートにおけるステップＳ２１４およびステップＳ２１５で、第１ＦＩＦＯ４１３Ａおよび第２ＦＩＦＯ４１３Ｂのそれぞれから、順に１ずつ中間符号を読み込む。
【０１８７】
次に、図１１のフローチャートのステップＳ２１８で、中間符号読み出し部４１４は、読み込んだ２の中間符号に含まれる開始画素位置の値を比較し、開始画素位置が最も小さい中間符号を選択する。小領域について最初に生成される中間符号に含まれる開始画素位置は、必ず「０」になるので、１回目の処理においては、第１ＦＩＦＯ４１３Ａおよび第２ＦＩＦＯ４１３Ｂのそれぞれから読み込まれた番号＃０の中間符号が全て選択される。
【０１８８】
中間符号読み出し部４１４は、選択した中間符号に含まれるランレングス値と予測誤差値とを、所定の順序、例えばＡプレーン、Ｋプレーンの順で符号フォーマット生成処理部４０６に転送する。符号フォーマット生成処理部４０６は、転送された各プレーンのランレングス値と予測誤差値とを、符号フォーマットに従い順次符号化し、符号書き込み部４０７に転送する。符号書き込み部４０７は、例えば順次転送された各プレーンの符号をＡＫページ符号格納領域３０３Ｂに書き込む。
【０１８９】
ＡＫページ符号格納領域３０３Ｂには、例えば図１９に番号＃０および番号＃１で示されるように、開始画素位置の値が「０」の中間符号が符号化された符号が、ＡプレーンおよびＫプレーンの順で並べて連続的に書き込まれる。
【０１９０】
その後、図１１のステップＳ２１９において、１回目の処理で選択された中間符号が格納される第１および第２ＦＩＦＯ４１３Ａおよび４１３Ｂが更新される。
【０１９１】
２回目の処理では、第１ＦＩＦＯ４１３Ａおよび第２ＦＩＦＯ４１３Ｂの各ＦＩＦＯから、図１７−１および図１７−２に例示される番号＃１の中間符号が中間符号読み出し部４１４に読み込まれる。各ＦＩＦＯから読み込まれた中間符号の開始画素位置は、Ａプレーンで「６」、Ｋプレーンで「２」とされ、Ｋプレーンの開始画素位置が最小となる。したがって、中間符号読み出し部４１４により、Ｋプレーンの中間符号が書き込まれる第２ＦＩＦＯ４１３Ｂから読み込まれた中間符号が選択される。
【０１９２】
中間符号読み出し部４１４により選択されたＫプレーンの中間符号は、符号フォーマット生成処理部４０６に転送されて符号化され、符号書き込み部４０７に転送される。符号書き込み部４０７は、転送されたＫプレーンの中間符号が符号化された符号を、ＡＫページ符号格納領域３０３Ｂに書き込む。このとき、この符号は、１回目の処理でＡＫページ符号格納領域３０３Ｂに書き込まれた符号に対して連続的に書き込まれる。図１９の例では、１回目の処理により最後に書き込まれた番号＃１の符号に対して連続的に、Ｋプレーンの中間符号が符号化された符号（番号＃２）が書き込まれる。
【０１９３】
その後、図１１のステップＳ２１９において、２回目の処理で選択された中間符号が格納される第２ＦＩＦＯ４１３Ｂが更新される。当該処理で選択されていない第１ＦＩＦＯ４１３Ａに対しては、更新処理は行われない。
【０１９４】
以降、上述した処理を、第１ＦＩＦＯ４１３Ａおよび第２ＦＩＦＯ４１３Ｂが全て空になるまで繰り返す。その結果、ＡＫページ符号格納領域３０３Ｂには、図１９に例示されるように、符号化されたＡＫ各プレーンの中間符号が、開始画素位置の値が小さい順に、同一の開始画素位置毎に所定の順序（例えばＡプレーン、Ｋプレーンの順）で格納される。換言すれば、符号化されたＡＫ各プレーンの中間符号は、１の符号列に合成されてＡＫページ符号格納領域３０３Ｂに格納される。
【０１９５】
上述したように、本実施形態によれば、処理対象の画像を小領域に分割し、この小領域毎にピクセル画像を各色の画素による複数のプレーン画像に変換している。そして、小領域における複数のプレーン画像のそれぞれに対して並列的に予測符号化処理を施し、各プレーン画像についてランレングス値および予測誤差値からなる中間符号を生成し、この中間符号をプレーン画像毎にＦＩＦＯに格納している。さらに、プレーン画像毎のＦＩＦＯから所定の順序で中間符号を読み出して順次、符号化して１列の符号に合成し、メインメモリに格納している。
【０１９６】
そのため、ピクセル画像をプレーン画像に変換して符号化を行うに際して、小領域に対応する容量のＦＩＦＯを符号化プレーン数だけ設ければ良く、必要メモリ容量を削減することができる。また、各プレーン画像について生成された符号が１列の符号に合成されてメインメモリに書き込まれるため、符号を格納するためのメモリ容量を削減することができると共に、符号を転送するためのＤＭＡ(Direct Memory Access)装置を少なくすることができる。さらに、ピクセル画像が変換された各プレーン画像に対する符号化処理を各プレーンについて並列的に行うことができるため、処理速度の向上を図ることができる。
【０１９７】
さらにまた、本実施形態によれば、使用するプレーン数に応じて符号化プレーン数を指定することで、ピクセル画像の１画素を構成する画素数が異なる場合でも、同一の処理で符号化を行うことができる。
【０１９８】
＜復号処理の概略＞
図２０は、本実施形態による復号部２０５の一例の構成を示す。符号読み込み部６００は、メインメモリ２１０のＡＲＧＢ／ＡＫページ符号格納領域３０３から符号を読み出し、符号分配処理部６３０に転送する。符号分配処理部６３０は、転送された符号を保持すると共に、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄからの符号要求に応じて、所定のデータ長（例えば３２ビット）からなる処理単位で符号を分配し、転送する。
【０１９９】
なお、処理単位は、例えば第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄを構成するハードウェアまたはソフトウェアが一度に処理を行うことが可能なデータ長（例えば３２ビット）からなるものとする。
【０２００】
ここで、符号分配処理部６３０に対して、復号するプレーン数が、例えばＣＰＵ２００によって予め指定される。例えば、ＡＲＧＢ各色によるカラー印刷時には復号プレーン数に「４」が指定され、ＡＫ各色によるモノクロ印刷時には、復号プレーン数に「２」が指定される。
【０２０１】
なお、指定された復号プレーン数に応じて、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄの何れに符号を分配するかが予め決められているものとする。例えば、復号プレーン数が「１」であれば、第１プレーン復号処理部６３１Ａにのみ、符号が分配される。復号プレーン数が「２」であれば、第１および第２プレーン復号処理部６３１Ａおよび６３１Ｂに符号が分配される。復号プレーン数が「３」であれば、第１〜第３プレーン復号処理部６３１Ａ〜６３１Ｃに符号が分配される。また、復号プレーン数が「４」であれば、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄ全てに符号が分配される。
【０２０２】
第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄは、符号分配処理部６３０に対して、符号の要求を行う。そして、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄは、この符号要求に応じて符号分配処理部６３０から転送された符号から、単位符号であるランレングス符号および予測誤差符号の組を１つ復号し、画素を生成する。第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄによる画素の生成処理は、画素単位で同期的に行われる。
【０２０３】
ここで、符号読み込み部６００から符号分配処理部６３０に転送される符号は、符号化部２０４においてハフマン符号を用いて可変長符号化されている。そこで、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄは、復号を行う１の単位符号のデータ長を消費符号長として符号分配処理部６３０に供給する。
【０２０４】
より具体的には、例えば復号プレーン数に「４」が指定されているものとして、先ず第１プレーン復号処理部６３１Ａが符号分配処理部６３０に対して符号を要求する。第１プレーン復号処理部６３１Ａは、この要求に応じて符号分配処理部６３０から転送された所定長の符号を図１０−１〜図１０−３を用いて説明した符号フォーマットに従い解析し、当該符号の先頭の１の単位符号の符号長を求める。第１プレーン復号処理部６３１Ａは、この符号長を、消費符号長として符号分配処理部６３０に供給する。
【０２０５】
符号分配処理部６３０は、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄからの符号要求に対して、符号読み込み部６００から転送されて保持されている符号を、単位符号の先頭から所定のデータ長だけ読み出して、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄに対して順次、転送する。より具体的には、符号分配処理部６３０は、符号読み込み部６００から転送されて保持されている符号からの読み出し位置を、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄから順次供給される消費符号長に応じてシフトさせて、当該符号から所定のデータ長を読み出す。
【０２０６】
第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄは、符号分配処理部６３０から転送された符号の復号処理を画素単位で同期的に行い、それぞれのプレーンの画素を出力する。
【０２０７】
第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄで生成された各プレーンの画素は、それぞれピクセル結合処理部６３２に転送される。ピクセル結合処理部６３２は、転送された各プレーンの画素を点順次に配列してピクセル画像を生成する。生成されたピクセル画像は、画像出力部６０５に転送され、復号部２０５の外部に出力される。
【０２０８】
図２１は、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄの一例の構成を示す。なお、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄは、同一の構成で実現可能である。そのため、図２１では、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄを、プレーン復号処理部６３１で代表させて記す。
【０２０９】
符号フォーマット解析部６０１は、１の単位符号の復号を開始するための符号要求を、符号分配処理部６３０に対して出力する。符号フォーマット解析部６０１は、符号要求に応じて符号分配処理部６３０から転送された１処理単位分の符号を、図１０−１〜図１０−３を用いて説明した符号フォーマットに基づき解析し、当該符号の先頭から、１の単位符号を構成する１組のランレングス符号と予測誤差符号とを取り出す。符号フォーマット解析部６０１は、取り出した１組のランレングス符号および予測誤差符号による合計の符号長を、消費符号長として符号分配処理部６３０に供給する。
【０２１０】
また、符号フォーマット解析部６０１は、図１０−１〜図１０−３を用いて説明した符号フォーマットに従い、符号分配処理部６３０から転送された符号から取り出されたランレングス符号および予測誤差符号から、ランレングス値および予測誤差値をそれぞれ復号する。
【０２１１】
復号されたランレングス値は、ランレングス処理部６０２内のランレングス処理制御処理部６１１に供給される。復号された予測誤差値は、予測誤差処理部６０３内の画素値生成処理部６２１に供給される。
【０２１２】
予測誤差処理部６０３において、予測処理部６２０は、ラインメモリ制御処理部６０４によりラインメモリ６０６から読み出された、復号対象の画素（注目画素）の周辺３画素の復号済みの画素ａ、ｂおよびｃ（図１３参照）の画素データに基づき、復号を行う注目画素の画素値を、符号化の際に用いた予測方式（本実施形態の例では平面予測方式）により予測する。そして、予測誤差処理部６０３において、画素値生成処理部６２１は、符号フォーマット解析部６０１から供給された予測誤差値と、予測処理部６２０で予測された予測値とを加算して、注目画素の画素値を生成する。
【０２１３】
ランレングス処理部６０２において、予測処理部６１０は、ラインメモリ制御処理部６０４から供給される、注目画素の周辺３画素の復号済みの画素ａ、ｂおよびｃの画素データに基づき、上述の予測処理部６２０と同様にして注目画素の画素値を予測する。予測された画素値の画素データは、ランレングス処理制御処理部６１１の制御により、符号フォーマット解析部６０１から供給されたランレングス値で示される数だけ出力される。
【０２１４】
なお、ラインメモリ６０６は、復号を行っている現ラインと、直前に復号が終了した前ラインとの２ライン分の画素データを格納可能とされている。ラインメモリ制御処理部６０４は、ラインメモリ６０６に対する画素データの読み書きを制御する。例えば、ラインメモリ制御処理部６０４は、注目画素の周辺３画素ａ、ｂおよびｃをラインメモリ６０６から読み出して、上述の予測誤差処理部６０３およびランレングス処理部６０２にそれぞれ供給する。
【０２１５】
ランレングス処理部６０２および予測誤差処理部６０３で生成された画素は、ラインメモリ制御処理部６０４により、復号済みの画素としてラインメモリ６０６の現ライン格納領域に格納される。また、ラインメモリ制御処理部６０４は、ラインメモリ６０６から現ライン格納領域に格納された復号済みの画素を読み出して、ピクセル結合処理部６３２に転送する。
【０２１６】
＜復号処理の詳細＞
図２２−１および図２２−２は、復号部２０５で行われる、本実施形態による復号処理を示す一例のフローチャートである。なお、図２２−１および図２２−２のフローチャートにおいて、符号Ａ、ＢおよびＣは、対応する符号に処理が移行することを示す。
【０２１７】
図２２−１のフローチャートによる処理に先んじて、例えばＣＰＵ２００から符号分配処理部６３０に対して、カラー印刷、モノクロ印刷といった印字方式に従い、「１」〜「４」の何れかの復号プレーン数が指定される。
【０２１８】
ステップＳ３００で、符号分配処理部６３０は、符号読み込み部６００から１処理単位分の符号を読み込み、変数CODEに代入する。そして、次のステップＳ３０１で、変数CODEを変数WCODEに代入する。さらに、次のステップＳ３０２で、次の１処理単位分の符号を読み込み、この符号を、変数NEXTCODEに代入する。
【０２１９】
次のステップＳ３０３で、符号分配処理部６３０は、第１プレーン復号処理部６３１Ａからの符号の要求があるか否かを判定する。若し符号の要求がないと判定されたら、処理は後述するステップＳ３０７に移行される。
【０２２０】
一方、ステップＳ３０３で、符号の要求があると判定されたら、処理はステップＳ３０４に移行され、符号分配処理部６３０は、第１プレーン復号処理部６３１Ａに対して変数WCODEの符号を転送する。符号分配処理部６３０は、次のステップＳ３０５で、第１プレーン復号処理部６３１Ａから当該符号の復号の結果として消費符号長を受け取る。符号分配処理部６３０は、この消費符号長に基づき、変数WCODEの符号を更新する。
【０２２１】
図２３は、符号分配処理部６３０による符号更新処理の一例を示すフローチャートである。上述したように、本実施形態では、ランレングス値および予測誤差値は、ハフマン符号を用いて可変長符号化されている。ここで、符号分配処理部６３０は、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄのそれぞれに対して、単位符号の先頭から符号を転送する必要がある。
【０２２２】
そのため、符号分配処理部６３０は、この符号更新処理により、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄから供給された消費符号長に基づき符号の読み出し位置を順次シフトさせ、シフトされた読み出し位置から１処理単位分の符号を切り出す。これにより、１処理単位分の符号の更新を行う。そして、切り出した１処理単位分の符号を、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄに対して転送する。
【０２２３】
先ず、ステップＳ４００で、累積シフト値に消費符号長を加算して、新たな累積シフト値とする。次のステップＳ４０１で、累積シフト値が１処理単位のビット長よりも大きいか否かが判定される。若し、累積シフト値が１処理単位のビット長以下であると判定されたら、処理は後述するステップＳ４０５に移行される。
【０２２４】
一方、ステップＳ４０１で、累積シフト値が１処理単位のビット長よりも大きいと判定されたら、処理はステップＳ４０２に移行され、変数NEXTCODEが変数CODEに代入される。そして、符号分配処理部６３０は、次の１処理単位の符号を符号読み込み部６００から読み込み、読み込んだ符号を変数NEXTCODEに代入する（ステップＳ４０３）。次のステップＳ４０４で、累積シフト値から１処理単位のビット長が減算され、新たな累積シフト値とされる。
【０２２５】
処理はステップＳ４０５に移行され、変数CODEが累積シフト値の示すビット長分、左へシフトされる。この処理により右側に空白が生じる。そこで、次のステップＳ４０６で、変数NEXTCODEが、１処理単位のビット長から累積シフト値が示すビット長を減算したビット長だけ、右へシフトされ、変数WWCODEとされる。次のステップＳ４０７で、変数WCODEと変数WWCODEの論理和を取ることで空白を埋め、新たな変数WCODEとされ、１処理単位の符号の更新処理が終了される。
【０２２６】
説明は図２２のフローチャートに戻り、ステップＳ３０６で１処理単位の符号の更新処理が終了されると、処理はステップＳ３０７に移行される。ステップＳ３０７では、指定された復号プレーン数が「１」であるか否かが判定される。若し、「１」であると判定されたら、処理は後述する図２２−２のステップＳ３２２に移行される。一方、指定された復号プレーン数が「１」ではないと判定されたら、処理はステップＳ３０８に移行される。
【０２２７】
ステップＳ３０８では、符号分配処理部６３０は、第２プレーン復号処理部６３１Ｂから符号の要求があるか否かを判定する。若し、符号の要求がないと判定されたら、処理は後述するステップＳ３１２に移行される。
【０２２８】
一方、ステップＳ３０８で、符号の要求があると判定されたら、処理はステップＳ３０９に移行され、符号分配処理部６３０は、第２プレーン復号処理部６３１Ｂに対して変数WCODEの符号を転送する。次のステップＳ３１０で、符号分配処理部６３０は、第２プレーン復号処理部６３１Ｂから当該符号の復号の結果として消費符号長を受け取る。符号分配処理部６３０は、この消費符号長に基づき、上述した図２３のフローチャートによる処理に従い、変数WCODEの符号を更新する（ステップＳ３１１）。
【０２２９】
ステップＳ３１１で１処理単位の符号の更新処理が終了されると、処理はステップＳ３１２に移行される。ステップＳ３１２では、指定された復号プレーン数が「２」であるか否かが判定される。若し、「２」であると判定されたら、処理は後述する図２２−２のステップＳ３２２に移行される。一方、指定された復号プレーン数が「２」ではないと判定されたら、処理はステップＳ３１３に移行される。
【０２３０】
ステップＳ３１３では、符号分配処理部６３０は、第２プレーン復号処理部６３１Ｃから符号の要求があるか否かを判定する。若し、符号の要求がないと判定されたら、処理は後述するステップＳ３１７に移行される。
【０２３１】
一方、ステップＳ３１３で、符号の要求があると判定されたら、処理はステップＳ３１４に移行され、符号分配処理部６３０は、第３プレーン復号処理部６３１Ｃに対して変数WCODEの符号を転送する。次のステップＳ３１５で、符号分配処理部６３０は、第３プレーン復号処理部６３１Ｃから当該符号の復号の結果として消費符号長を受け取る。符号分配処理部６３０は、この消費符号長に基づき、上述した図２３のフローチャートによる処理に従い、変数WCODEの符号を更新する（ステップＳ３１６）。
【０２３２】
ステップＳ３１６で１処理単位の符号の更新処理が終了されると、処理はステップＳ３１７に移行される。ステップＳ３１７では、指定された復号プレーン数が「３」であるか否かが判定される。若し、「３」であると判定されたら、処理は後述する図２２−２のステップＳ３２２に移行される。一方、指定された復号プレーン数が「３」ではないと判定されたら、処理は図２２−２のステップＳ３１８に移行される。
【０２３３】
ステップＳ３１８では、符号分配処理部６３０は、第４プレーン復号処理部６３１Ｄから符号の要求があるか否かを判定する。若し、符号の要求がないと判定されたら、処理はステップＳ３２２に移行される。
【０２３４】
一方、ステップＳ３１８で、符号の要求があると判定されたら、処理はステップＳ３１９に移行され、符号分配処理部６３０は、第４プレーン復号処理部６３１Ｄに対して変数WCODEの符号を転送する。次のステップＳ３２０で、符号分配処理部６３０は、第４プレーン復号処理部６３１Ｄから当該符号の復号の結果として消費符号長を受け取る。符号分配処理部６３０は、この消費符号長に基づき、上述した図２３のフローチャートによる処理に従い、変数WCODEの符号を更新する（ステップＳ３２１）。
【０２３５】
ステップＳ３２２では、第１プレーン復号処理部６３１Ａ〜第４プレーン復号処理部６３１Ｄにおいて、１の単位符号の復号が行われる。この第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄにおける復号処理は、画素単位で同期的に行われる。この各プレーン復号処理部におけるプレーンの復号処理については、後述する。
【０２３６】
各プレーンの復号処理が終了すると、処理はステップＳ３２３に移行される。ステップＳ３２３では、復号プレーン数が「１」であるか否かが判定される。若し、復号プレーン数が「１」であると判定されると、処理がステップＳ３２４に移行される。ステップＳ３２４では、ピクセル結合処理部６３２が第１プレーン復号処理部６３１Ａから復号された第１プレーンの１画素を受け取り、ピクセル画像の画素として出力する。そして、処理が後述するステップＳ３３０に移行される。
【０２３７】
ステップＳ３２３で、復号プレーン数が「１」ではないと判定されると、処理はステップＳ３２５に移行される。ステップＳ３２５では、復号プレーン数が「２」であるか否かが判定される。
【０２３８】
若し、復号プレーン数が「２」であると判定されると、処理はステップＳ３２６に移行される。ステップＳ３２６では、ピクセル結合処理部６３２が第１プレーン復号処理部６３１Ａおよび第２プレーン復号処理部６３１Ｂから、復号された第１プレーンの１画素と第２プレーンの１画素とをそれぞれ受け取る。そして、受け取った画素を点順次で配列してピクセル画像の画素として出力する。画素の出力が行われると、処理は後述するステップＳ３３０に移行される。
【０２３９】
ステップＳ３２５で、復号プレーン数が「２」ではないと判定されると、処理はステップＳ３２７に移行される。ステップＳ３２７では、復号プレーン数が「３」であるか否かが判定される。
【０２４０】
若し、復号プレーン数が「３」であると判定されると、処理はステップＳ３２８に移行される。ステップＳ３２８では、ピクセル結合処理部６３２が第１〜第３プレーン復号処理部６３１Ａ〜６３１Ｃから、復号された第１〜第３プレーンの１画素をそれぞれ受け取る。そして、受け取った画素を点順次で配列してピクセル画像の画素として出力する。画素の出力が行われると、処理が後述するステップＳ３３０に移行される。
【０２４１】
ステップＳ３２７で、復号プレーン数が「３」ではないと判定されると、処理はステップＳ３２９に移行される。ステップＳ３２９では、ピクセル結合処理部６３２が第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄから、復号された第１〜第４プレーンの１画素をそれぞれ受け取る。そして、受け取った画素を点順次で配列してピクセル画像の画素として出力する。画素の出力が行われると、処理がステップＳ３３０に移行される。
【０２４２】
ステップＳ３３０では、上述したステップＳ３２４、ステップＳ３２６、ステップＳ３２８またはステップＳ３２９で出力されたピクセル画像の画素がラインの最終画素であるか否かが判定される。若し、ラインの最終画素ではないと判定されたら、処理は図２２−１のステップＳ３０３に戻され、次の画素の処理が行われる。
【０２４３】
一方、ステップＳ３３０で、出力された画素がラインの最終画素であると判定されたら、処理はステップＳ３３１に移行され、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄにおいて、ラインメモリ制御処理部６０４により、ラインメモリ６０６に記憶される現ラインが前ラインに変換される。そして、次のステップＳ３３２で、処理対象の画像における処理が全て終了したか否かが判定される。若し、処理が全て終了したと判定されたら、一連の符号化処理が終了される。一方、所定対象の画像に対する処理が終了していないと判定されたら、処理は図２２−１のステップＳ３０３に戻され、次の符号に対する処理が行われる。
【０２４４】
図２４は、上述のステップＳ３２２における各プレーンの復号処理の一例を示すフローチャートである。図２０に示した第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄでは、同一の処理が行われるため、ここでは第１プレーン復号処理部６３１Ａを例にとって説明する。
【０２４５】
ステップＳ５００で、第１プレーン復号処理部６３１Ａにおいて、符号フォーマット解析部６０１は、符号分配処理部６３０に対して符号を要求する。符号フォーマット解析部６０１は、この要求に応じて符号分配処理部６３０から転送された１処理単位分の符号を解析して先頭の符号単位を抽出する。フォーマット解析部６０１は、抽出した符号単位からランレングス符号と予測誤差符号とを取り出し、各符号長を求める。そして、ランレングス符号の符号長と予測誤差符号の符号長とを合計した符号長を、消費符号長として符号分配処理部６３０に対して出力する（ステップＳ５０１）。
【０２４６】
なお、これらステップＳ５００およびステップＳ５０１の処理は、図２２のフローチャートにおける例えばステップＳ３０４およびステップＳ３０５の処理に対応するものであり、理解を容易とするために図２４に組み入れてある。
【０２４７】
ランレングス処理部６０２は、フォーマット解析部６０１から渡されたランレングス符号を復号してランレングス値を取得する。そして、ステップＳ５０２で、ランレングス処理部６０２は、取得されたランレングス値が「１」であるか否かを判定する。若し、ランレングス値が「１」であると判定されたら、処理は後述するステップＳ５０７に移行される。
【０２４８】
一方、ステップＳ５０２でランレングス値が「１」ではないと判定されたら、処理はステップＳ５０３に移行される。ステップＳ５０３では、ラインメモリ制御処理部６０４がラインメモリ６０６から復号対象の画素（注目画素）の周辺３画素ａ、ｂおよびｃ（図９参照）を読み込み、ランレングス処理部６０２の予測処理部６１０に渡す。予測処理部６１０は、これら画素ａ、ｂおよびｃを用いて、平面予測により注目画素の画素値を予測する。
【０２４９】
次のステップＳ５０４で、ラインメモリ制御処理部６０４は、予測処理部６１０により予測された予測値を、画素値としてラインメモリ６０６の現ラインを格納する領域に書き込む。次のステップＳ５０５で、ラインメモリ制御処理部６０４は、当該予測値を復号された画素値として、第１プレーン復号処理部６３１Ａから出力する。
【０２５０】
画素値が出力されると、処理はステップＳ５０６に移行され、ステップＳ５０３〜ステップＳ５０５の処理を、ランレングス値−１の回数だけ処理を行ったか否かが判定される。若し、ランレングス値−１の回数の処理が行われていないと判定されたら、処理はステップＳ５０３に戻され、直前に予測された画素を画素ａとして、上述と同様にして予測処理が行われる。
【０２５１】
一方、ステップＳ５０６で、ランレングス値−１の回数だけ処理が行われたと判定されたら、処理はステップＳ５０７に移行される。ステップＳ５０７では、予測誤差処理部６０３は、フォーマット解析部６０１から渡された予測誤差符号からグループ識別ビットを取り出す。予測誤差処理部６０３は、取り出したグループ識別ビットが、画素値がそのまま付加ビットとして用いられていることを表すグループ＃７を示しているか否かを判定する。
【０２５２】
若し、グループ識別ビットがグループ＃７を示していないと判定されたら、処理はステップＳ５０８に移行される。ステップＳ５０８では、予測誤差処理部６０３は、図１０−１を用いて説明した符号フォーマットに従い予測誤差符号を復号して予測誤差値を求める。求められた予測誤差値は、画素値生成処理部６２１に渡される。
【０２５３】
それと共に、ステップＳ５０９で、ラインメモリ制御処理部６０４がラインメモリ６０６から注目画素の周辺３画素ａ、ｂおよびｃを読み込み、予測誤差処理部６０３の予測処理部６２０に渡す。予測処理部６２０は、これら画素ａ、ｂおよびｃを用いて、平面予測により注目画素の画素値を予測する。注目画素の画素値を予測した予測値は、画素値生成処理部６２１に渡される。
【０２５４】
次のステップＳ５１０で、画素値生成処理部６２１は、ステップＳ５０８で渡された予測誤差値と、ステップＳ５０９で渡された予測値とを加算して画素値を求める。画素値が求められると、処理は後述するステップＳ５１２に移行される。
【０２５５】
上述のステップＳ５０７で、グループ識別ビットがグループ＃７を示していると判定されたら、処理はステップＳ５１１に移行される。ステップＳ５１１では、予測誤差符号のグループ識別ビットに続く８ビットの付加ビットが画素値生成処理部６２１に渡される。画素値生成処理部６２１は、渡された８ビットの付加ビットをそのまま用いて画素値を生成する。そして、処理がステップＳ５１２に移行される。
【０２５６】
ステップＳ５１２では、ラインメモリ制御処理部６０４は、画素値生成処理部６２１で生成された画素値をラインメモリ６０６の現ラインを格納する領域に書き込む。次のステップＳ５１３で、ラインメモリ制御処理部６０４は、当該画素値を第１プレーン復号処理部６３１Ａから出力する。
【０２５７】
上述したように、この図２４のフローチャートによる処理は、例えば第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄにおいて、画素単位で同期的に行われる。一例として、１画素を生成するタイミングを１クロックとした場合、上述したステップＳ５０３〜ステップＳ５０６のランレングス値が示す回数分の繰り返しは、１回の繰り返しが１クロックのタイミングで行われる。また、ステップＳ５０７以降の処理は、１クロックのタイミングで行われる。
【０２５８】
このように、第１〜第４プレーン復号処理部６３１Ａ〜６３１Ｄにおける処理を、互いに画素単位で同期的に行うことで、例えば図１６や図１９に例示したような、符号化した各プレーンの中間符号を合成して１列とした符号を、正しく復号することができる。図１９のモノクロ印刷の場合を例にとって、より具体的に説明する。
【０２５９】
第１プレーン復号処理部６３１Ａおよび第２プレーン復号処理部６３１Ｂは、それぞれ符号分配処理部６３０に対して符号を要求し、１処理単位分の符号を取得する。第１プレーン復号処理部６３１Ａは、１処理単位分の符号から番号＃０の中間符号が符号化された単位符号を取得する。また、第２プレーン復号処理部６３１Ｂは、１処理単位の符号から番号＃１の単位符号を取得する。そして、第１プレーン復号処理部６３１Ａおよび第２プレーン復号処理部６３１Ｂのそれぞれにおいて、取得された単位符号が解析されてランレングス値と予測誤差値とを復号する。
【０２６０】
第１プレーン復号処理部６３１Ａは、番号＃０の単位符号に基づき、図１８−１に例示される現ラインの画素＃０〜画素＃６を、７クロックかけて出力する。第１プレーン復号処理部６３１Ａでは、この画素＃０〜画素＃６の出力で番号＃０の単位符号の復号が完了すると、符号分配処理部６３０に対して符号を要求し、次の１処理単位の符号を取得する。
【０２６１】
一方、第２プレーン復号処理部６３１Ｂは、番号＃１の単位符号に基づき、先ず、図１８−２に例示される現ラインの画素＃０〜画素＃２を、３クロックかけて出力する。第２プレーン復号処理部６３１Ｂでは、この画素＃０〜画素＃２の出力で番号＃１の単位符号の復号が完了したので、符号分配処理部６３０に対して符号を要求し、次の１処理単位の符号を取得する。
【０２６２】
第２プレーン復号処理部６３１Ｂは、取得した１処理単位の符号から図１９における番号＃２の単位符号を取得し、ランレングス値と予測誤差値とを復号する。そして、この番号＃２の単位符号に基づき、図１８−２に例示される現ラインの画素＃３を、１クロックで出力する。第２プレーン復号処理部６３１Ｂでは、この画素＃３の出力で番号＃２の単位符号の復号が完了したので、符号分配処理部６３０に対して符号を要求し、次の１処理単位の符号を取得する。
【０２６３】
第２プレーン復号処理部６３１Ｂは、取得した１処理単位の符号から図１９における番号＃３の単位符号を取得し、ランレングス値と予測誤差値とを復号する。そして、この番号＃３の単位符号に基づき、図１８−２に例示される現ラインの画素＃４〜画素＃６を、３クロックかけて出力する。第２プレーン復号処理部６３１Ｂでは、この画素＃４〜画素＃６の出力で番号＃３の単位符号の復号が完了したので、符号分配処理部６３０に対して符号を要求し、次の１処理単位の符号を取得する。この時点で、第２プレーン復号処理部６３１Ｂは、第１プレーン復号処理部６３１Ａと同じ７クロック分の処理を行っている。
【０２６４】
符号分配処理部６３０は、先に第１プレーン復号処理部６３１Ａに対して番号＃４の単位符号を含む１処理単位の符号を分配し、次に第２プレーン復号処理部６３１Ｂに対して番号＃５の単位符号を含む１処理単位の符号を分配する。番号＃４の単位符号は、Ａプレーンの中間符号が符号化されたものであり、第１プレーン復号処理部６３１Ａにより復号される。また、番号＃５の単位符号は、Ｋプレーンの中間符号が符号化されたものであり、第２プレーン復号処理部６３１Ｂにより復号される。
【０２６５】
このように、本実施形態によれば、複数のプレーンによる中間符号が符号化された単位符号を、開始画素位置の値が小さい順に、同一の開始画素位置毎に所定の順序で並べて一列に合成している。また、復号時には、各プレーンの復号処理を画素毎に同期的に行っている。そのため、複数のプレーン画像が符号化された符号が一列に合成された符号を、各プレーンを識別する識別符号を用いなくても、正しく復号することができる。
【０２６６】
なお、上述では、ＡプレーンおよびＫプレーンの２プレーンによる中間符号が合成された符号列を復号する場合を例にとって説明したが、図１６に例示される、ＡＲＧＢ各プレーンの４プレーンによる中間符号が合成された符号列を復号する場合についても、同様にして適用できることはいうまでもない。
【０２６７】
＜他の実施形態＞
なお、上述では、本発明の実施形態による符号化部２０４および復号部２０５を構成する各部がハードウェア的に構成されるように説明したが、これはこの例に限定されない。すなわち、本発明に実施形態に適用可能なカラープリンタ１００における符号化部２０４および復号部２０５は、カラープリンタ１００に組み込まれたＣＰＵ（図示しない）上で動作するプログラムとして、それぞれ実現可能である。
【０２６８】
この場合、ＣＰＵ上で符号化部２０４および復号部２０５として実行されるプログラムは、例えば図６を用いて説明した符号化部２０４であれば、符号化部２０４の各機能部（画像読み込み部４００、プレーン分割処理部４１１、第１〜第４プレーン中間符号生成処理部４１２Ａ〜４１２Ｄ、中間符号読み出し部４１４、符号フォーマット生成処理部４０６および符号書き込み部４０７）を含むモジュール構成となっている。
【０２６９】
このプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ(Compact Disk)、フレキシブルディスク（ＦＤ）、ＤＶＤ(Digital Versatile Disk)などのコンピュータで読み取り可能な記録媒体に記録されて提供される。これに限らず、プログラムは、ＣＰＵに接続されるＲＯＭ（図示しない）に予め記憶させておいてもよい。さらに、プログラムは、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、このプログラムを、インターネットなどのネットワーク経由で提供または配布するように構成してもよい。
【０２７０】
実際のハードウェアとしては、符号化部２０４の場合、ＣＰＵが、例えば上述した記録媒体から符号化部２０４として機能するプログラムを読み出して実行することにより、上述した各部が主記憶装置（図示しない）上にロードされる。そして、画像読み込み部４００、プレーン分割処理部４１１、第１〜第４プレーン中間符号生成処理部４１２Ａ〜４１２Ｄ、中間符号読み出し部４１４、符号フォーマット生成処理部４０６および符号書き込み部４０７が主記憶装置上に生成されるようになっている。
【符号の説明】
【０２７１】
２０４  符号化部
２０５  復号部
２１０  メインメモリ
２１２  色変換部
３０２Ａ  ＡＲＧＢバンドデータ格納領域
３０２Ｂ  ＡＫバンドデータ格納領域
３０３Ａ  ＡＲＧＢページ符号格納領域
３０３Ｂ  ＡＫページ符号格納領域
４０１  ラインメモリ制御処理部
４０２  ラインメモリ
４０３  予測処理部
４０４  予測誤差処理部
４０５  ランレングス生成処理部
４０６  符号フォーマット生成処理部
４０７  符号書き込み部
４１１  プレーン分割処理部
４１２  プレーン符号化処理部
４１３Ａ  第１ＦＩＦＯ
４１３Ｂ  第２ＦＩＦＯ
４１３Ｃ  第３ＦＩＦＯ
４１３Ｄ  第４ＦＩＦＯ
４１４  中間符号読み出し部
６０１  符号フォーマット解析部
６０２  ランレングス処理部
６０３  予測誤差処理部
６０４  ラインメモリ制御処理部
６０６  ラインメモリ
６３０  符号分配処理部
６３１  プレーン復号処理部
６３２  ピクセル結合処理部
【先行技術文献】
【特許文献】
【０２７２】
【特許文献１】特許第３３４４８７５号公報
【特許文献２】特開２００７−２１４９９７号公報
【図１】
2011044869.tif 000003
【図２】
2011044869.tif 000004
【図３−１】
2011044869.tif 000005
【図３−２】
2011044869.tif 000006
【図４−１】
2011044869.tif 000007
【図４−２】
2011044869.tif 000008
【図５−１】
2011044869.tif 000009
【図５−２】
2011044869.tif 000010
【図６】
2011044869.tif 000011
【図７】
2011044869.tif 000012
【図８】
2011044869.tif 000013
【図９】
2011044869.tif 000014
【図１０−１】
2011044869.tif 000015
【図１０−２】
2011044869.tif 000016
【図１０−３】
2011044869.tif 000017
【図１１】
2011044869.tif 000018
【図１２】
2011044869.tif 000019
【図１３】
2011044869.tif 000020
【図１４−１】
2011044869.tif 000021
【図１４−２】
2011044869.tif 000022
【図１４−３】
2011044869.tif 000023
【図１４−４】
2011044869.tif 000024
【図１５−１】
2011044869.tif 000025
【図１５−２】
2011044869.tif 000026
【図１５−３】
2011044869.tif 000027
【図１５−４】
2011044869.tif 000028
【図１６】
2011044869.tif 000029
【図１７−１】
2011044869.tif 000030
【図１７−２】
2011044869.tif 000031
【図１８−１】
2011044869.tif 000032
【図１８−２】
2011044869.tif 000033
【図１９】
2011044869.tif 000034
【図２０】
2011044869.tif 000035
【図２１】
2011044869.tif 000036
【図２２−１】
2011044869.tif 000037
【図２２−２】
2011044869.tif 000038
【図２３】
2011044869.tif 000039
【図２４】
2011044869.tif 000040